Fix some crypto things
This commit is contained in:
1 parent
e5cef9f768
commit
d33a26526f
5 files changed
+277
-82
No files matched your search
+2
-1
@@ -14,7 +14,7 @@
|
||||
"repository": "https://github.com/Neo-Desktop/lint-neo-yt",
|
||||
"devDependencies": {
|
||||
"bcryptjs": "^2.4.3",
|
||||
"bootstrap": "^3.3.7",
|
||||
"bootstrap.native": "^2.0.8",
|
||||
"bootswatch": "^3.3.7",
|
||||
"browserify": "^14.1.0",
|
||||
"browserify-css": "^0.10.0",
|
||||
@@ -38,6 +38,7 @@
|
||||
"node-forge": "^0.7.0",
|
||||
"sql-formatter": "^1.2.0",
|
||||
"uglifyify": "^3.0.4",
|
||||
"whirlpool": "0.0.4",
|
||||
"xml-beautifier": "^0.3.0"
|
||||
},
|
||||
"grunt": {
|
||||
|
||||
+163
-51
@@ -18,24 +18,19 @@
|
||||
"lint-neo-yt/node_modules/asn1.js/lib/asn1/encoders/der.js",
|
||||
"lint-neo-yt/node_modules/asn1.js/lib/asn1/encoders/index.js",
|
||||
"lint-neo-yt/node_modules/asn1.js/lib/asn1/encoders/pem.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/ber/errors.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/ber/index.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/ber/reader.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/ber/types.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/ber/writer.js",
|
||||
"lint-neo-yt/node_modules/asn1/lib/index.js",
|
||||
"lint-neo-yt/node_modules/assert/assert.js",
|
||||
"lint-neo-yt/node_modules/babel-runtime/helpers/classCallCheck.js",
|
||||
"lint-neo-yt/node_modules/base64-js/index.js",
|
||||
"lint-neo-yt/node_modules/baseanary/main.js",
|
||||
"lint-neo-yt/node_modules/bcryptjs/dist/bcrypt.js",
|
||||
"lint-neo-yt/node_modules/bn.js/lib/bn.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/dist/js/npm.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/affix.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/alert.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/button.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/carousel.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/collapse.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/dropdown.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/modal.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/popover.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/scrollspy.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/tab.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/tooltip.js",
|
||||
"lint-neo-yt/node_modules/bootstrap/js/transition.js",
|
||||
"lint-neo-yt/node_modules/bootstrap.native/dist/bootstrap-native.js",
|
||||
"lint-neo-yt/node_modules/brorand/index.js",
|
||||
"lint-neo-yt/node_modules/browser-resolve/empty.js",
|
||||
"lint-neo-yt/node_modules/browserify-aes/aes.js",
|
||||
@@ -66,6 +61,7 @@
|
||||
"lint-neo-yt/node_modules/buffer-shims/index.js",
|
||||
"lint-neo-yt/node_modules/buffer-xor/index.js",
|
||||
"lint-neo-yt/node_modules/cipher-base/index.js",
|
||||
"lint-neo-yt/node_modules/constants-browserify/constants.json",
|
||||
"lint-neo-yt/node_modules/core-util-is/lib/util.js",
|
||||
"lint-neo-yt/node_modules/create-ecdh/browser.js",
|
||||
"lint-neo-yt/node_modules/create-hash/browser.js",
|
||||
@@ -122,20 +118,20 @@
|
||||
"lint-neo-yt/node_modules/entities/maps/xml.json",
|
||||
"lint-neo-yt/node_modules/events/events.js",
|
||||
"lint-neo-yt/node_modules/evp_bytestokey/index.js",
|
||||
"lint-neo-yt/node_modules/forge/forge.js",
|
||||
"lint-neo-yt/node_modules/fu/fu.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/aes.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/affine.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/atbash.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/bifid.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/blowfish.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/caesar.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/camellia.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/cast5.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/des.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/dss1.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/keccak.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/md4.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/md5.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/mdc2.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/mixedAlphabet.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/permutation.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/playfair.js",
|
||||
@@ -143,6 +139,7 @@
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/rc2.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/ripemd.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/ripemd160.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/rsa.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/seed.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/sha1.js",
|
||||
"lint-neo-yt/node_modules/gencryption/algorithms/sha2.js",
|
||||
@@ -238,6 +235,7 @@
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/hsp.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/htmlbars.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/http.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/hy.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/inform7.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/ini.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/irpf90.js",
|
||||
@@ -248,6 +246,7 @@
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/kotlin.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/lasso.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/ldif.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/leaf.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/less.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/lisp.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/livecodeserver.js",
|
||||
@@ -267,6 +266,7 @@
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/mojolicious.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/monkey.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/moonscript.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/n1ql.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/nginx.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/nimrod.js",
|
||||
"lint-neo-yt/node_modules/highlight.js/lib/languages/nix.js",
|
||||
@@ -421,7 +421,63 @@
|
||||
"lint-neo-yt/node_modules/miller-rabin/lib/mr.js",
|
||||
"lint-neo-yt/node_modules/minimalistic-assert/index.js",
|
||||
"lint-neo-yt/node_modules/minimalistic-crypto-utils/lib/utils.js",
|
||||
"lint-neo-yt/node_modules/minimist/index.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/aes.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/aesCipherSuites.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/asn1.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/cipher.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/cipherModes.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/debug.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/des.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/forge.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/hmac.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/index.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/jsbn.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/kem.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/log.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/md.all.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/md.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/md5.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/mgf.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/mgf1.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/oids.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pbe.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pbkdf2.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pem.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pkcs1.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pkcs12.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pkcs7.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pkcs7asn1.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pki.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/prime.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/prng.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/pss.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/random.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/rc2.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/rsa.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/sha1.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/sha256.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/sha512.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/ssh.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/task.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/tls.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/util.js",
|
||||
"lint-neo-yt/node_modules/node-forge/lib/x509.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/NodeRSA.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/encryptEngines/encryptEngines.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/encryptEngines/io.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/encryptEngines/js.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/encryptEngines/node12.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/formats/components.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/formats/formats.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/formats/pkcs1.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/formats/pkcs8.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/libs/jsbn.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/libs/rsa.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/schemes/oaep.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/schemes/pkcs1.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/schemes/pss.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/schemes/schemes.js",
|
||||
"lint-neo-yt/node_modules/node-rsa/src/utils.js",
|
||||
"lint-neo-yt/node_modules/parse-asn1/aesid.json",
|
||||
"lint-neo-yt/node_modules/parse-asn1/asn1.js",
|
||||
"lint-neo-yt/node_modules/parse-asn1/fixProc.js",
|
||||
@@ -479,19 +535,19 @@
|
||||
"lint-neo-yt/node_modules/sql-formatter/node_modules/lodash/lodash.js",
|
||||
"lint-neo-yt/node_modules/stream-browserify/index.js",
|
||||
"lint-neo-yt/node_modules/string_decoder/index.js",
|
||||
"lint-neo-yt/node_modules/subarg/index.js",
|
||||
"lint-neo-yt/node_modules/textanary/main.js",
|
||||
"lint-neo-yt/node_modules/util-deprecate/browser.js",
|
||||
"lint-neo-yt/node_modules/util/support/isBufferBrowser.js",
|
||||
"lint-neo-yt/node_modules/util/util.js",
|
||||
"lint-neo-yt/node_modules/vm-browserify/index.js",
|
||||
"lint-neo-yt/node_modules/whirlpool/whirlpool.min.js",
|
||||
"lint-neo-yt/node_modules/xml-beautifier/dist/index.js",
|
||||
"lint-neo-yt/src/debug.js",
|
||||
"lint-neo-yt/src/index.css",
|
||||
"lint-neo-yt/src/index.js"
|
||||
],
|
||||
"names": [],
|
||||
"mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ALine truncated
|
||||
"mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ALine truncated
|
||||
"file": "generated.js",
|
||||
"sourceRoot": "../",
|
||||
"sourcesContent": [
|
||||
@@ -512,24 +568,19 @@
|
||||
"var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n Line truncated
|
||||
"var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n",
|
||||
"var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n",
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\n\nmodule.exports = {\n\n newInvalidAsn1Error: function(msg) {\n var e = new Error();\n e.name = 'InvalidAsn1Error';\n e.message = msg || '';\n return e;\n }\n\n};\n",
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\nvar errors = require('./errors');\nvar types = require('./types');\n\nvar Reader = require('./reader');\nvar Writer = require('./writer');\n\n\n///--- Exports\n\nmodule.exports = {\n\n Reader: Reader,\n\n Writer: Writer\n\n};\n\nfor (var t in types) {\n if (types.hasOwnProperty(t))\n module.exports[t] = types[t];\n}\nfor (var e in errors) {\n if (errors.hasOwnProperty(e))\n module.exports[e] = errors[e];\n}\n",
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\nvar assert = require('assert');\n\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n///--- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\n\n\n///--- API\n\nfunction Reader(data) {\n if (!data || !Buffer.isBuffer(data))\n throw new TypeError('data must be a node Buffer');\n\n this._buf = data;\n this._size = data.length;\n\n // These hold the \"current\" state\n this._len = 0;\n this._offset = 0;\n}\n\nObject.defineProperty(Reader.prototype, 'length', {\n enumerable: true,\n get: function () { return (this._len); }\n});\n\nObject.defineProperty(Reader.prototype, 'offset', {\n enumerable: true,\n get: function () { return (this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'remain', {\n get: function () { return (this._size - this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'buffer', {\n get: function () { return (this._buf.slice(this._offset)); }\n});\n\n\n/**\n * Reads a single byte and advances offset; you can pass in `true` to make this\n * a \"peek\" operation (i.e., get the byte, but don't advance the offset).\n *\n * @param {Boolean} peek true means don't move offset.\n * @return {Number} the next byte, null if not enough data.\n */\nReader.prototype.readByte = function(peek) {\n if (this._size - this._offset < 1)\n return null;\n\n var b = this._buf[this._offset] & 0xff;\n\n if (!peek)\n this._offset += 1;\n\n return b;\n};\n\n\nReader.prototype.peek = function() {\n return this.readByte(true);\n};\n\n\n/**\n * Reads a (potentially) variable length off the BER buffer. This call is\n * not really meant to be called directly, as callers have to manipulate\n * the internal buffer afterwards.\n *\n * As a result of this call, you can call `Reader.length`, until the\n * next thing called that does a readLength.\n *\n * @return {Number} the amount of offset to advance the buffer.\n * @throws {InvalidAsn1Error} on bad ASN.1\n */\nReader.prototype.readLength = function(offset) {\n if (offset === undefined)\n offset = this._offset;\n\n if (offset >= this._size)\n return null;\n\n var lenB = this._buf[offset++] & 0xff;\n if (lenB === null)\n return null;\n\n if ((lenB & 0x80) == 0x80) {\n lenB &= 0x7f;\n\n if (lenB == 0)\n throw newInvalidAsn1Error('Indefinite length not supported');\n\n if (lenB > 4)\n throw newInvalidAsn1Error('encoding too long');\n\n if (this._size - offset < lenB)\n return null;\n\n this._len = 0;\n for (var i = 0; i < lenB; i++)\n this._len = (this._len << 8) + (this._buf[offset++] & 0xff);\n\n } else {\n // Wasn't a variable length\n this._len = lenB;\n }\n\n return offset;\n};\n\n\n/**\n * Parses the next sequence in this BER buffer.\n *\n * To get the length of the sequence, call `Reader.length`.\n *\n * @return {Number} the sequence's tag.\n */\nReader.prototype.readSequence = function(tag) {\n var seq = this.peek();\n if (seq === null)\n return null;\n if (tag !== undefined && tag !== seq)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + seq.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n this._offset = o;\n return seq;\n};\n\n\nReader.prototype.readInt = function() {\n return this._readTag(ASN1.Integer);\n};\n\n\nReader.prototype.readBoolean = function() {\n return (this._readTag(ASN1.Boolean) === 0 ? false : true);\n};\n\n\nReader.prototype.readEnumeration = function() {\n return this._readTag(ASN1.Enumeration);\n};\n\n\nReader.prototype.readString = function(tag, retbuf) {\n if (!tag)\n tag = ASN1.OctetString;\n\n var b = this.peek();\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n\n if (o === null)\n return null;\n\n if (this.length > this._size - o)\n return null;\n\n this._offset = o;\n\n if (this.length === 0)\n return retbuf ? new Buffer(0) : '';\n\n var str = this._buf.slice(this._offset, this._offset + this.length);\n this._offset += this.length;\n\n return retbuf ? str : str.toString('utf8');\n};\n\nReader.prototype.readOID = function(tag) {\n if (!tag)\n tag = ASN1.OID;\n\n var b = this.readString(tag, true);\n if (b === null)\n return null;\n\n var values = [];\n var value = 0;\n\n for (var i = 0; i < b.length; i++) {\n var byte = b[i] & 0xff;\n\n value <<= 7;\n value += byte & 0x7f;\n if ((byte & 0x80) == 0) {\n values.push(value);\n value = 0;\n }\n }\n\n value = values.shift();\n values.unshift(value % 40);\n values.unshift((value / 40) >> 0);\n\n return values.join('.');\n};\n\n\nReader.prototype._readTag = function(tLine truncated
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\n\nmodule.exports = {\n EOC: 0,\n Boolean: 1,\n Integer: 2,\n BitString: 3,\n OctetString: 4,\n Null: 5,\n OID: 6,\n ObjectDescriptor: 7,\n External: 8,\n Real: 9, // float\n Enumeration: 10,\n PDV: 11,\n Utf8String: 12,\n RelativeOID: 13,\n Sequence: 16,\n Set: 17,\n NumericString: 18,\n PrintableString: 19,\n T61String: 20,\n VideotexString: 21,\n IA5String: 22,\n UTCTime: 23,\n GeneralizedTime: 24,\n GraphicString: 25,\n VisibleString: 26,\n GeneralString: 28,\n UniversalString: 29,\n CharacterString: 30,\n BMPString: 31,\n Constructor: 32,\n Context: 128\n};\n",
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\nvar assert = require('assert');\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n///--- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\nvar DEFAULT_OPTS = {\n size: 1024,\n growthFactor: 8\n};\n\n\n///--- Helpers\n\nfunction merge(from, to) {\n assert.ok(from);\n assert.equal(typeof(from), 'object');\n assert.ok(to);\n assert.equal(typeof(to), 'object');\n\n var keys = Object.getOwnPropertyNames(from);\n keys.forEach(function(key) {\n if (to[key])\n return;\n\n var value = Object.getOwnPropertyDescriptor(from, key);\n Object.defineProperty(to, key, value);\n });\n\n return to;\n}\n\n\n\n///--- API\n\nfunction Writer(options) {\n options = merge(DEFAULT_OPTS, options || {});\n\n this._buf = new Buffer(options.size || 1024);\n this._size = this._buf.length;\n this._offset = 0;\n this._options = options;\n\n // A list of offsets in the buffer where we need to insert\n // sequence tag/len pairs.\n this._seq = [];\n}\n\nObject.defineProperty(Writer.prototype, 'buffer', {\n get: function () {\n if (this._seq.length)\n throw new InvalidAsn1Error(this._seq.length + ' unended sequence(s)');\n\n return (this._buf.slice(0, this._offset));\n }\n});\n\nWriter.prototype.writeByte = function(b) {\n if (typeof(b) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(1);\n this._buf[this._offset++] = b;\n};\n\n\nWriter.prototype.writeInt = function(i, tag) {\n if (typeof(i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof(tag) !== 'number')\n tag = ASN1.Integer;\n\n var sz = 4;\n\n while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&\n (sz > 1)) {\n sz--;\n i <<= 8;\n }\n\n if (sz > 4)\n throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff');\n\n this._ensure(2 + sz);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = sz;\n\n while (sz-- > 0) {\n this._buf[this._offset++] = ((i & 0xff000000) >>> 24);\n i <<= 8;\n }\n\n};\n\n\nWriter.prototype.writeNull = function() {\n this.writeByte(ASN1.Null);\n this.writeByte(0x00);\n};\n\n\nWriter.prototype.writeEnumeration = function(i, tag) {\n if (typeof(i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof(tag) !== 'number')\n tag = ASN1.Enumeration;\n\n return this.writeInt(i, tag);\n};\n\n\nWriter.prototype.writeBoolean = function(b, tag) {\n if (typeof(b) !== 'boolean')\n throw new TypeError('argument must be a Boolean');\n if (typeof(tag) !== 'number')\n tag = ASN1.Boolean;\n\n this._ensure(3);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = 0x01;\n this._buf[this._offset++] = b ? 0xff : 0x00;\n};\n\n\nWriter.prototype.writeString = function(s, tag) {\n if (typeof(s) !== 'string')\n throw new TypeError('argument must be a string (was: ' + typeof(s) + ')');\n if (typeof(tag) !== 'number')\n tag = ASN1.OctetString;\n\n var len = Buffer.byteLength(s);\n this.writeByte(tag);\n this.writeLength(len);\n if (len) {\n this._ensure(len);\n this._buf.write(s, this._offset);\n this._offset += len;\n }\n};\n\n\nWriter.prototype.writeBuffer = function(buf, tag) {\n if (typeof(tag) !== 'number')\n throw new TypeError('tag must be a number');\n if (!Buffer.isBuffer(buf))\n throw new TypeError('argument must be a buffer');\n\n this.writeByte(tag);\n this.writeLength(buf.length);\n this._ensure(buf.length);\n buf.copy(this._buf, this._offset, 0, buf.length);\n this._offset += buf.length;\n};\n\n\nWriter.prototype.writeStringArray = function(strings) {\n if ((!strings instanceof Array))\n throw new TypeError('argument must be an Array[String]');\n\n var self = this;\n strings.forEach(function(s) {\n self.writeString(s);\n });\n};\n\n// This is really to solve DER cases, but whatever for now\nWriter.prototype.writeOID = function(s, tag) {\n if (typeof(s) !== 'string')\n throw new TypeError('argument must be a string');\n if (typeof(tag) !== 'number')\n tag = ASN1.OID;\n\n if (!/^([0-9]+\\.){3,}[0-9]+$/.test(s))\n throw new Error('argument is not a valid OID string');\n\n function encodeOctet(bytes, octet) {\n if (octet < 128) {\n bytes.push(octet);\n } else if (octet < 16384) {\n bytes.push((octet >>> 7) | 0x80);\n bytes.push(octet & 0x7F);\n } else if (octet < 2097152) {\n bytes.push((octet >>> 14) | 0x80);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else if (octet < 268435456) {\n bytes.push((octet >>> 21) | 0x80);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else {\n bytes.push(((octet >>> 28) | 0x80) & 0xFF);\n bytes.push(((octet >>> 21) | 0x80) & 0xFF);\n bytes.Line truncated
|
||||
"// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.\n\n// If you have no idea what ASN.1 or BER is, see this:\n// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nvar Ber = require('./ber/index');\n\n\n\n///--- Exported API\n\nmodule.exports = {\n\n Ber: Ber,\n\n BerReader: Ber.Reader,\n\n BerWriter: Ber.Writer\n\n};\n",
|
||||
"'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n Line truncated
|
||||
"\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};",
|
||||
"'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n",
|
||||
"var Alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\nvar toBase64Sync = function(binary) {\n var base64Format = \"\";\n for (var i = 0; i < binary.length; i += 24) {\n var subBinary = binary.substr(i, 24);\n while (subBinary.length < 24) {\n subBinary += \"0\";\n }\n for (var k = 0; k < subBinary.length; k += 6) {\n var doubleSubBinary = subBinary.substr(k, 6);\n if (doubleSubBinary.includes(\"1\")) {\n base64Format += Alphabet.charAt(parseInt(doubleSubBinary, 2));\n } else {\n if ((i + 24) > binary.length) {\n base64Format += \"=\";\n }\n else {\n base64Format += \"A\";\n }\n }\n }\n }\n return base64Format;\n}\nvar toBinarySync = function(base64) {\n var binaryFormat = \"\";\n for (var i = 0; i < base64.length; i++) {\n if (base64[i] == \"=\") {\n } else {\n var indexInAlphabet = Alphabet.indexOf(base64[i]);\n var basicBinary = indexInAlphabet.toString(2);\n while (basicBinary.length < 6) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryFormat += basicBinary;\n }\n }\n while ((binaryFormat.length % 8) != 0) {\n binaryFormat = binaryFormat.substr(0, binaryFormat.length - 1);\n }\n return binaryFormat;\n}\nvar toBase64 = function(binary, callback) {\n try {\n var base64Format = \"\";\n for (var i = 0; i < binary.length; i += 24) {\n var subBinary = binary.substr(i, 24);\n while (subBinary.length < 24) {\n subBinary += \"0\";\n }\n for (var k = 0; k < subBinary.length; k += 6) {\n var doubleSubBinary = subBinary.substr(k, 6);\n if (doubleSubBinary.includes(\"1\")) {\n base64Format += Alphabet.charAt(parseInt(doubleSubBinary, 2));\n } else {\n if ((i + 24) > binary.length) {\n base64Format += \"=\";\n }\n else {\n base64Format += \"A\";\n }\n }\n }\n }\n callback(null, base64Format);\n } catch (err) {\n callback(err, null);\n }\n}\nvar toBinary = function(base64, callback) {\n try {\n var binaryFormat = \"\";\n for (var i = 0; i < base64.length; i++) {\n if (base64[i] == \"=\") {\n } else {\n var indexInAlphabet = Alphabet.indexOf(base64[i]);\n var basicBinary = indexInAlphabet.toString(2);\n while (basicBinary.length < 6) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryFormat += basicBinary;\n }\n }\n while ((binaryFormat.length % 8) != 0) {\n binaryFormat = binaryFormat.substr(0, binaryFormat.length - 1);\n }\n callback(null, binaryFormat);\n } catch (err) {\n callback(err, null);\n }\n}\nvar toBase64WithPromise = function(binary) {\n return new Promise(function(resolve, reject) {\n try {\n var base64Format = \"\";\n for (var i = 0; i < binary.length; i += 24) {\n var subBinary = binary.substr(i, 24);\n while (subBinary.length < 24) {\n subBinary += \"0\";\n }\n for (var k = 0; k < subBinary.length; k += 6) {\n var doubleSubBinary = subBinary.substr(k, 6);\n if (doubleSubBinary.includes(\"1\")) {\n base64Format += Alphabet.charAt(parseInt(doubleSubBinary, 2));\n } else {\n if ((i + 24) > binary.length) {\n base64Format += \"=\";\n }\n else {\n base64Format += \"A\";\n }\n }\n }\n }\n resolve(base64Format);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar toBinaryWithPromise = function(base64) {\n return new Promise(function(resolve, reject) {\n try {\n var binaryFormat = \"\";\n for (var i = 0; i < base64.length; i++) {\n if (base64[i] == \"=\") {\n } else {\n var indexInAlphabet = Alphabet.indexOf(base64[i]);\n var basicBinary = indexInAlphabet.toString(2);\n while (basicBinary.length < 6) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryFormat += basicBinary;\n }\n }\n while ((binaryFormat.length % 8) != 0) {\n binaryFormat = binaryFormat.substr(0, binaryFormat.length - 1);\n }\n resolve(binaryFormat);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOne = function(options) {\n var to = options.to;\n if (options.callback) {\n if (to == \"binary\") {\n toBinary(options.data, options.callback);\n } else if (to == \"base64\") {\n toBase64(options.data, options.callback);\n }\n } else if (options.promise === true) {\n if (to == \"binary\") {\n return toBinaryWithPromise(options.data);\n } else if (to == \"base64\") {\n return toBase64WithPromise(options.data);\n }\n } else {\n if (to == \"binary\") {\n return toBinarySync(options.data);\n } else if (to == \"base64\") {\n return toBase64Sync(options.data);\Line truncated
|
||||
"/*\r\n Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>\r\n Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>\r\n Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Redistribution and use in source and binary forms, with or without\r\n modification, are permitted provided that the following conditions\r\n are met:\r\n 1. Redistributions of source code must retain the above copyright\r\n notice, this list of conditions and the following disclaimer.\r\n 2. Redistributions in binary form must reproduce the above copyright\r\n notice, this list of conditions and the following disclaimer in the\r\n documentation and/or other materials provided with the distribution.\r\n 3. The name of the author may not be used to endorse or promote products\r\n derived from this software without specific prior written permission.\r\n\r\n THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r\n IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r\n IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r\n NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n */\r\n\r\n/**\r\n * @license bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bcrypt.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"bcrypt\"] = factory();\r\n\r\n}(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * bcrypt namespace.\r\n * @type {Object.<string,*>}\r\n */\r\n var bcrypt = {};\r\n\r\n /**\r\n * The random implementation to use as a fallback.\r\n * @type {?function(number):!Array.<number>}\r\n * @inner\r\n */\r\n var randomFallback = null;\r\n\r\n /**\r\n * Generates cryptographically secure random bytes.\r\n * @function\r\n * @param {number} len Bytes length\r\n * @returns {!Array.<number>} Random bytes\r\n * @throws {Error} If no random implementation is available\r\n * @inner\r\n */\r\n function random(len) {\r\n /* node */ if (typeof module !== 'undefined' && module && module['exports'])\r\n try {\r\n return require(\"crypto\")['randomBytes'](len);\r\n } catch (e) {}\r\n /* WCA */ try {\r\n var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));\r\n return Array.prototype.slice.call(a);\r\n } catch (e) {}\r\n /* fallback */ if (!randomFallback)\r\n throw Error(\"Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative\");\r\n return randomFallback(len);\r\n }\r\n\r\n // Test if any secure randomness source is available\r\n var randomAvailable = false;\r\n try {\r\n random(1);\r\n randomAvailable = true;\r\n } catch (e) {}\r\n\r\n // Default fallback, if any\r\n randomFallback = null;\r\n /**\r\n * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto\r\n * API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it\r\n * is seeded properly!\r\n * @param {?function(number):!Array.<number>} random Function taking the number of bytes to generate as its\r\n * sole argument, returning the corresponding array of cryptographically secure random byte values.\r\n * @see http://nodejs.org/api/crypto.html\r\n * @see http://www.w3.org/TR/WebCryptoAPI/\r\n */\r\n bcrypt.setRandomFallback = function(random) {\r\n randomFallback = random;\r\n };\r\n\r\n /**\r\n * Synchronously generates a salt.\r\n * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted\r\n * @param {number=} seed_length Not supported.\r\n * @returns {string} Resulting salt\r\n * @throws {Error} If a random fallback is required but not set\r\n * @expose\r\n */\r\n bcrypt.genSaltSync = function(rounds, seed_length) {\r\n rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;\r\n if (typeLine truncated
|
||||
"(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (numbeLine truncated
|
||||
"// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')",
|
||||
"/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.7'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQLine truncated
|
||||
"/* ========================================================================\n * Bootstrap: alert.js v3.3.7\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.7'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector === '#' ? [] : selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: button.js v3.3.7\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.7'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: carousel.js v3.3.7\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.7'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, directionLine truncated
|
||||
"/* ========================================================================\n * Bootstrap: collapse.js v3.3.7\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.7'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGINLine truncated
|
||||
"/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.7'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjuLine truncated
|
||||
"/* ========================================================================\n * Bootstrap: popover.js v3.3.7\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.7'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.7\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.7'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: tab.js v3.3.7\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.7'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n",
|
||||
"/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] Line truncated
|
||||
"/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n",
|
||||
"// Native Javascript for Bootstrap 3 v2.0.8 | © dnp_theme | MIT-License\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD support:\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like:\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n var bsn = factory();\n root.Affix = bsn.Affix;\n root.Alert = bsn.Alert;\n root.Button = bsn.Button;\n root.Carousel = bsn.Carousel;\n root.Collapse = bsn.Collapse;\n root.Dropdown = bsn.Dropdown;\n root.Modal = bsn.Modal;\n root.Popover = bsn.Popover;\n root.ScrollSpy = bsn.ScrollSpy;\n root.Tab = bsn.Tab;\n root.Tooltip = bsn.Tooltip;\n }\n}(this, function () {\n \n /* Native Javascript for Bootstrap 3 | Internal Utility Functions\n ----------------------------------------------------------------*/\n \n // globals\n var globalObject = typeof global !== 'undefined' ? global : this||window,\n doc = document.documentElement, body = document.body,\n \n // function toggle attributes\n dataToggle = 'data-toggle',\n dataDismiss = 'data-dismiss',\n dataSpy = 'data-spy',\n dataRide = 'data-ride',\n \n // components\n stringAffix = 'Affix',\n stringAlert = 'Alert',\n stringButton = 'Button',\n stringCarousel = 'Carousel',\n stringCollapse = 'Collapse',\n stringDropdown = 'Dropdown',\n stringModal = 'Modal',\n stringPopover = 'Popover',\n stringScrollSpy = 'ScrollSpy',\n stringTab = 'Tab',\n stringTooltip = 'Tooltip',\n \n // options DATA API\n databackdrop = 'data-backdrop',\n dataKeyboard = 'data-keyboard',\n dataTarget = 'data-target',\n dataInterval = 'data-interval',\n dataHeight = 'data-height',\n dataPause = 'data-pause',\n dataOriginalTitle = 'data-original-title',\n dataOriginalText = 'data-original-text',\n dataDismissible = 'data-dismissible',\n dataTrigger = 'data-trigger',\n dataAnimation = 'data-animation',\n dataContainer = 'data-container',\n dataPlacement = 'data-placement',\n dataDelay = 'data-delay',\n dataOffsetTop = 'data-offset-top',\n dataOffsetBottom = 'data-offset-bottom',\n \n // option keys\n backdrop = 'backdrop', keyboard = 'keyboard', delay = 'delay',\n content = 'content', target = 'target', \n interval = 'interval', pause = 'pause', animation = 'animation',\n placement = 'placement', container = 'container', \n \n // box model\n offsetTop = 'offsetTop', offsetBottom = 'offsetBottom',\n offsetLeft = 'offsetLeft',\n scrollTop = 'scrollTop', scrollLeft = 'scrollLeft',\n clientWidth = 'clientWidth', clientHeight = 'clientHeight',\n offsetWidth = 'offsetWidth', offsetHeight = 'offsetHeight',\n innerWidth = 'innerWidth', innerHeight = 'innerHeight',\n scrollHeight = 'scrollHeight', height = 'height',\n \n // aria\n ariaExpanded = 'aria-expanded',\n ariaHidden = 'aria-hidden',\n \n // event names\n clickEvent = 'click',\n hoverEvent = 'hover',\n keydownEvent = 'keydown',\n resizeEvent = 'resize',\n scrollEvent = 'scroll',\n // originalEvents\n showEvent = 'show',\n shownEvent = 'shown',\n hideEvent = 'hide',\n hiddenEvent = 'hidden',\n closeEvent = 'close',\n closedEvent = 'closed',\n slidEvent = 'slid',\n slideEvent = 'slide',\n changeEvent = 'change',\n \n // other\n getAttribute = 'getAttribute',\n setAttribute = 'setAttribute',\n hasAttribute = 'hasAttribute',\n getElementsByTagName = 'getElementsByTagName',\n getBoundingClientRect= 'getBoundingClientRect',\n querySelectorAll = 'querySelectorAll',\n getElementsByCLASSNAME = 'getElementsByClassName',\n \n indexOf = 'indexOf',\n parentNode = 'parentNode',\n length = 'length',\n toLowerCase = 'toLowerCase',\n Transition = 'Transition',\n Webkit = 'Webkit',\n style = 'style',\n \n active = 'active',\n inClass = 'in',\n collapsing = 'collapsing',\n disabled = 'disabled',\n loading = 'loading',\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n \n // IE8 browser detect\n isIE8 = !('opacity' in body[style]),\n \n // tooltip / popover\n fixedTop = 'navbar-fixed-top',\n fixedBottom = 'navbar-fixed-bottom', \n mouseHover = ('onmouseleave' in document) ? [ 'mouseenter', 'mouseleave'] : [ 'mouseover', 'mouseout' ],\n tipPositions = /\\b(top|bottom|left|top)+/,\n \n // transitionEnd since 2.0.4\n supportTransitions = Webkit+Transition in doc[style] || Transition[toLowerCase]() in doc[style],\n transitiLine truncated
|
||||
"var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n",
|
||||
"",
|
||||
"// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar uint_max = Math.pow(2, 32)\nfunction fixup_uint32 (x) {\n var ret, x_pos\n ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n return ret\n}\nfunction scrub_vec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n return false\n}\n\nfunction Global () {\n this.SBOX = []\n this.INV_SBOX = []\n this.SUB_MIX = [[], [], [], []]\n this.INV_SUB_MIX = [[], [], [], []]\n this.init()\n this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n}\n\nGlobal.prototype.init = function () {\n var d, i, sx, t, x, x2, x4, x8, xi, _i\n d = (function () {\n var _i, _results\n _results = []\n for (i = _i = 0; _i < 256; i = ++_i) {\n if (i < 128) {\n _results.push(i << 1)\n } else {\n _results.push((i << 1) ^ 0x11b)\n }\n }\n return _results\n })()\n x = 0\n xi = 0\n for (i = _i = 0; _i < 256; i = ++_i) {\n sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n this.SBOX[x] = sx\n this.INV_SBOX[sx] = x\n x2 = d[x]\n x4 = d[x2]\n x8 = d[x4]\n t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n this.SUB_MIX[3][x] = t\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n this.INV_SUB_MIX[3][sx] = t\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n return true\n}\n\nvar G = new Global()\n\nAES.blockSize = 4 * 4\n\nAES.prototype.blockSize = AES.blockSize\n\nAES.keySize = 256 / 8\n\nAES.prototype.keySize = AES.keySize\n\nfunction bufferToArray (buf) {\n var len = buf.length / 4\n var out = new Array(len)\n var i = -1\n while (++i < len) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n return out\n}\nfunction AES (key) {\n this._key = bufferToArray(key)\n this._doReset()\n}\n\nAES.prototype._doReset = function () {\n var invKsRow, keySize, keyWords, ksRow, ksRows, t\n keyWords = this._key\n keySize = keyWords.length\n this._nRounds = keySize + 6\n ksRows = (this._nRounds + 1) * 4\n this._keySchedule = []\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)\n }\n this._invKeySchedule = []\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow\n t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]\n this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]\n }\n return true\n}\n\nAES.prototype.encryptBlock = function (M) {\n M = bufferToArray(new Buffer(M))\n var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)\n var buf = new Buffer(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = bufferToArray(new Buffer(M))\n var temp = [M[3], M[1]]\n M[1] = temp[0]\n M[3] = temp[1]\n var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)\n var buf = new Buffer(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrub_vec(this._keySchedule)\n scrub_vec(this._invKeySchedule)\n scrub_vec(this._key)\n}\n\nAES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {\n var ksRow, s0, s1, s2, s3, t0, t1, t2, t3\n\n s0 = M[0] ^ keySchedule[0]\n s1 = M[1] ^ keySchedule[1]\n s2 = M[2] ^ keySchedule[2]\n s3 = M[3] ^ keySchedule[3]\n ksRow = 4\n for (var round = 1; round < this._nRounds; round++) {\n t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MILine truncated
|
||||
@@ -560,6 +611,7 @@
|
||||
"'use strict';\n\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\nvar SlowBuffer = buffer.SlowBuffer;\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\nexports.alloc = function alloc(size, fill, encoding) {\n if (typeof Buffer.alloc === 'function') {\n return Buffer.alloc(size, fill, encoding);\n }\n if (typeof encoding === 'number') {\n throw new TypeError('encoding must not be number');\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n var enc = encoding;\n var _fill = fill;\n if (_fill === undefined) {\n enc = undefined;\n _fill = 0;\n }\n var buf = new Buffer(size);\n if (typeof _fill === 'string') {\n var fillBuf = new Buffer(_fill, enc);\n var flen = fillBuf.length;\n var i = -1;\n while (++i < size) {\n buf[i] = fillBuf[i % flen];\n }\n } else {\n buf.fill(_fill);\n }\n return buf;\n}\nexports.allocUnsafe = function allocUnsafe(size) {\n if (typeof Buffer.allocUnsafe === 'function') {\n return Buffer.allocUnsafe(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new Buffer(size);\n}\nexports.from = function from(value, encodingOrOffset, length) {\n if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\n return Buffer.from(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof value === 'string') {\n return new Buffer(value, encodingOrOffset);\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n var offset = encodingOrOffset;\n if (arguments.length === 1) {\n return new Buffer(value);\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n var len = length;\n if (typeof len === 'undefined') {\n len = value.byteLength - offset;\n }\n if (offset >= value.byteLength) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (len > value.byteLength - offset) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n return new Buffer(value.slice(offset, offset + len));\n }\n if (Buffer.isBuffer(value)) {\n var out = new Buffer(value.length);\n value.copy(out, 0, 0, value.length);\n return out;\n }\n if (value) {\n if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\n return new Buffer(value);\n }\n if (value.type === 'Buffer' && Array.isArray(value.data)) {\n return new Buffer(value.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\n}\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n if (typeof Buffer.allocUnsafeSlow === 'function') {\n return Buffer.allocUnsafeSlow(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size >= MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new SlowBuffer(size);\n}\n",
|
||||
"module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n",
|
||||
"var Transform = require('stream').Transform\nvar inherits = require('inherits')\nvar StringDecoder = require('string_decoder').StringDecoder\nmodule.exports = CipherBase\ninherits(CipherBase, Transform)\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n this._decoder = null\n this._encoding = null\n}\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = new Buffer(data, inputEnc)\n }\n var outData = this._update(data)\n if (this.hashMode) {\n return this\n }\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\n\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this._final())\n } catch (e) {\n err = e\n } finally {\n done(err)\n }\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this._final() || new Buffer('')\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n if (this._encoding !== enc) {\n throw new Error('can\\'t switch encodings')\n }\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n return out\n}\n",
|
||||
"module.exports={\n \"O_RDONLY\": 0,\n \"O_WRONLY\": 1,\n \"O_RDWR\": 2,\n \"S_IFMT\": 61440,\n \"S_IFREG\": 32768,\n \"S_IFDIR\": 16384,\n \"S_IFCHR\": 8192,\n \"S_IFBLK\": 24576,\n \"S_IFIFO\": 4096,\n \"S_IFLNK\": 40960,\n \"S_IFSOCK\": 49152,\n \"O_CREAT\": 512,\n \"O_EXCL\": 2048,\n \"O_NOCTTY\": 131072,\n \"O_TRUNC\": 1024,\n \"O_APPEND\": 8,\n \"O_DIRECTORY\": 1048576,\n \"O_NOFOLLOW\": 256,\n \"O_SYNC\": 128,\n \"O_SYMLINK\": 2097152,\n \"O_NONBLOCK\": 4,\n \"S_IRWXU\": 448,\n \"S_IRUSR\": 256,\n \"S_IWUSR\": 128,\n \"S_IXUSR\": 64,\n \"S_IRWXG\": 56,\n \"S_IRGRP\": 32,\n \"S_IWGRP\": 16,\n \"S_IXGRP\": 8,\n \"S_IRWXO\": 7,\n \"S_IROTH\": 4,\n \"S_IWOTH\": 2,\n \"S_IXOTH\": 1,\n \"E2BIG\": 7,\n \"EACCES\": 13,\n \"EADDRINUSE\": 48,\n \"EADDRNOTAVAIL\": 49,\n \"EAFNOSUPPORT\": 47,\n \"EAGAIN\": 35,\n \"EALREADY\": 37,\n \"EBADF\": 9,\n \"EBADMSG\": 94,\n \"EBUSY\": 16,\n \"ECANCELED\": 89,\n \"ECHILD\": 10,\n \"ECONNABORTED\": 53,\n \"ECONNREFUSED\": 61,\n \"ECONNRESET\": 54,\n \"EDEADLK\": 11,\n \"EDESTADDRREQ\": 39,\n \"EDOM\": 33,\n \"EDQUOT\": 69,\n \"EEXIST\": 17,\n \"EFAULT\": 14,\n \"EFBIG\": 27,\n \"EHOSTUNREACH\": 65,\n \"EIDRM\": 90,\n \"EILSEQ\": 92,\n \"EINPROGRESS\": 36,\n \"EINTR\": 4,\n \"EINVAL\": 22,\n \"EIO\": 5,\n \"EISCONN\": 56,\n \"EISDIR\": 21,\n \"ELOOP\": 62,\n \"EMFILE\": 24,\n \"EMLINK\": 31,\n \"EMSGSIZE\": 40,\n \"EMULTIHOP\": 95,\n \"ENAMETOOLONG\": 63,\n \"ENETDOWN\": 50,\n \"ENETRESET\": 52,\n \"ENETUNREACH\": 51,\n \"ENFILE\": 23,\n \"ENOBUFS\": 55,\n \"ENODATA\": 96,\n \"ENODEV\": 19,\n \"ENOENT\": 2,\n \"ENOEXEC\": 8,\n \"ENOLCK\": 77,\n \"ENOLINK\": 97,\n \"ENOMEM\": 12,\n \"ENOMSG\": 91,\n \"ENOPROTOOPT\": 42,\n \"ENOSPC\": 28,\n \"ENOSR\": 98,\n \"ENOSTR\": 99,\n \"ENOSYS\": 78,\n \"ENOTCONN\": 57,\n \"ENOTDIR\": 20,\n \"ENOTEMPTY\": 66,\n \"ENOTSOCK\": 38,\n \"ENOTSUP\": 45,\n \"ENOTTY\": 25,\n \"ENXIO\": 6,\n \"EOPNOTSUPP\": 102,\n \"EOVERFLOW\": 84,\n \"EPERM\": 1,\n \"EPIPE\": 32,\n \"EPROTO\": 100,\n \"EPROTONOSUPPORT\": 43,\n \"EPROTOTYPE\": 41,\n \"ERANGE\": 34,\n \"EROFS\": 30,\n \"ESPIPE\": 29,\n \"ESRCH\": 3,\n \"ESTALE\": 70,\n \"ETIME\": 101,\n \"ETIMEDOUT\": 60,\n \"ETXTBSY\": 26,\n \"EWOULDBLOCK\": 35,\n \"EXDEV\": 18,\n \"SIGHUP\": 1,\n \"SIGINT\": 2,\n \"SIGQUIT\": 3,\n \"SIGILL\": 4,\n \"SIGTRAP\": 5,\n \"SIGABRT\": 6,\n \"SIGIOT\": 6,\n \"SIGBUS\": 10,\n \"SIGFPE\": 8,\n \"SIGKILL\": 9,\n \"SIGUSR1\": 30,\n \"SIGSEGV\": 11,\n \"SIGUSR2\": 31,\n \"SIGPIPE\": 13,\n \"SIGALRM\": 14,\n \"SIGTERM\": 15,\n \"SIGCHLD\": 20,\n \"SIGCONT\": 19,\n \"SIGSTOP\": 17,\n \"SIGTSTP\": 18,\n \"SIGTTIN\": 21,\n \"SIGTTOU\": 22,\n \"SIGURG\": 16,\n \"SIGXCPU\": 24,\n \"SIGXFSZ\": 25,\n \"SIGVTALRM\": 26,\n \"SIGPROF\": 27,\n \"SIGWINCH\": 28,\n \"SIGIO\": 23,\n \"SIGSYS\": 12,\n \"SSL_OP_ALL\": 2147486719,\n \"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION\": 262144,\n \"SSL_OP_CIPHER_SERVER_PREFERENCE\": 4194304,\n \"SSL_OP_CISCO_ANYCONNECT\": 32768,\n \"SSL_OP_COOKIE_EXCHANGE\": 8192,\n \"SSL_OP_CRYPTOPRO_TLSEXT_BUG\": 2147483648,\n \"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS\": 2048,\n \"SSL_OP_EPHEMERAL_RSA\": 0,\n \"SSL_OP_LEGACY_SERVER_CONNECT\": 4,\n \"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER\": 32,\n \"SSL_OP_MICROSOFT_SESS_ID_BUG\": 1,\n \"SSL_OP_MSIE_SSLV2_RSA_PADDING\": 0,\n \"SSL_OP_NETSCAPE_CA_DN_BUG\": 536870912,\n \"SSL_OP_NETSCAPE_CHALLENGE_BUG\": 2,\n \"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG\": 1073741824,\n \"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG\": 8,\n \"SSL_OP_NO_COMPRESSION\": 131072,\n \"SSL_OP_NO_QUERY_MTU\": 4096,\n \"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION\": 65536,\n \"SSL_OP_NO_SSLv2\": 16777216,\n \"SSL_OP_NO_SSLv3\": 33554432,\n \"SSL_OP_NO_TICKET\": 16384,\n \"SSL_OP_NO_TLSv1\": 67108864,\n \"SSL_OP_NO_TLSv1_1\": 268435456,\n \"SSL_OP_NO_TLSv1_2\": 134217728,\n \"SSL_OP_PKCS1_CHECK_1\": 0,\n \"SSL_OP_PKCS1_CHECK_2\": 0,\n \"SSL_OP_SINGLE_DH_USE\": 1048576,\n \"SSL_OP_SINGLE_ECDH_USE\": 524288,\n \"SSL_OP_SSLEAY_080_CLIENT_DH_BUG\": 128,\n \"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG\": 0,\n \"SSL_OP_TLS_BLOCK_PADDING_BUG\": 512,\n \"SSL_OP_TLS_D5_BUG\": 256,\n \"SSL_OP_TLS_ROLLBACK_BUG\": 8388608,\n \"ENGINE_METHOD_DSA\": 2,\n \"ENGINE_METHOD_DH\": 4,\n \"ENGINE_METHOD_RAND\": 8,\n \"ENGINE_METHOD_ECDH\": 16,\n \"ENGINE_METHOD_ECDSA\": 32,\n \"ENGINE_METHOD_CIPHERS\": 64,\n \"ENGINE_METHOD_DIGESTS\": 128,\n \"ENGINE_METHOD_STORE\": 256,\n \"ENGINE_METHOD_PKEY_METHS\": 512,\n \"ENGINE_METHOD_PKEY_ASN1_METHS\": 1024,\n \"ENGINE_METHOD_ALL\": 65535,\n \"ENGINE_METHOD_NONE\": 0,\n \"DH_CHECK_P_NOT_SAFE_PRIME\": 2,\n \"DH_CHECK_P_NOT_PRIME\": 1,\n \"DH_UNABLE_TO_CHECK_GENERATOR\": 4,\n \"DH_NOT_SUITABLE_GENERATOR\": 8,\n \"NPN_ENABLED\": 1,\n \"RSA_PKCS1_PADDING\": 1,\n \"RSA_SSLV23_PADDING\": 2,\n \"RSA_NO_PADDING\": 3,\n \"RSA_PKCS1_OAEP_PADDING\": 4,\n \"RLine truncated
|
||||
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n",
|
||||
"var elliptic = require('elliptic');\nvar BN = require('bn.js');\n\nmodule.exports = function createECDH(curve) {\n\treturn new ECDH(curve);\n};\n\nvar aliases = {\n\tsecp256k1: {\n\t\tname: 'secp256k1',\n\t\tbyteLength: 32\n\t},\n\tsecp224r1: {\n\t\tname: 'p224',\n\t\tbyteLength: 28\n\t},\n\tprime256v1: {\n\t\tname: 'p256',\n\t\tbyteLength: 32\n\t},\n\tprime192v1: {\n\t\tname: 'p192',\n\t\tbyteLength: 24\n\t},\n\ted25519: {\n\t\tname: 'ed25519',\n\t\tbyteLength: 32\n\t},\n\tsecp384r1: {\n\t\tname: 'p384',\n\t\tbyteLength: 48\n\t},\n\tsecp521r1: {\n\t\tname: 'p521',\n\t\tbyteLength: 66\n\t}\n};\n\naliases.p224 = aliases.secp224r1;\naliases.p256 = aliases.secp256r1 = aliases.prime256v1;\naliases.p192 = aliases.secp192r1 = aliases.prime192v1;\naliases.p384 = aliases.secp384r1;\naliases.p521 = aliases.secp521r1;\n\nfunction ECDH(curve) {\n\tthis.curveType = aliases[curve];\n\tif (!this.curveType ) {\n\t\tthis.curveType = {\n\t\t\tname: curve\n\t\t};\n\t}\n\tthis.curve = new elliptic.ec(this.curveType.name);\n\tthis.keys = void 0;\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n\tthis.keys = this.curve.genKeyPair();\n\treturn this.getPublicKey(enc, format);\n};\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n\tinenc = inenc || 'utf8';\n\tif (!Buffer.isBuffer(other)) {\n\t\tother = new Buffer(other, inenc);\n\t}\n\tvar otherPub = this.curve.keyFromPublic(other).getPublic();\n\tvar out = otherPub.mul(this.keys.getPrivate()).getX();\n\treturn formatReturnValue(out, enc, this.curveType.byteLength);\n};\n\nECDH.prototype.getPublicKey = function (enc, format) {\n\tvar key = this.keys.getPublic(format === 'compressed', true);\n\tif (format === 'hybrid') {\n\t\tif (key[key.length - 1] % 2) {\n\t\t\tkey[0] = 7;\n\t\t} else {\n\t\t\tkey [0] = 6;\n\t\t}\n\t}\n\treturn formatReturnValue(key, enc);\n};\n\nECDH.prototype.getPrivateKey = function (enc) {\n\treturn formatReturnValue(this.keys.getPrivate(), enc);\n};\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n\tenc = enc || 'utf8';\n\tif (!Buffer.isBuffer(pub)) {\n\t\tpub = new Buffer(pub, enc);\n\t}\n\tthis.keys._importPublic(pub);\n\treturn this;\n};\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n\tenc = enc || 'utf8';\n\tif (!Buffer.isBuffer(priv)) {\n\t\tpriv = new Buffer(priv, enc);\n\t}\n\tvar _priv = new BN(priv);\n\t_priv = _priv.toString(16);\n\tthis.keys._importPrivate(_priv);\n\treturn this;\n};\n\nfunction formatReturnValue(bn, enc, len) {\n\tif (!Array.isArray(bn)) {\n\t\tbn = bn.toArray();\n\t}\n\tvar buf = new Buffer(bn);\n\tif (len && buf.length < len) {\n\t\tvar zeros = new Buffer(len - buf.length);\n\t\tzeros.fill(0);\n\t\tbuf = Buffer.concat([zeros, buf]);\n\t}\n\tif (!enc) {\n\t\treturn buf;\n\t} else {\n\t\treturn buf.toString(enc);\n\t}\n}\n",
|
||||
"'use strict';\nvar inherits = require('inherits')\nvar md5 = require('./md5')\nvar rmd160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar Base = require('cipher-base')\n\nfunction HashNoConstructor(hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n this.buffers = []\n}\n\ninherits(HashNoConstructor, Base)\n\nHashNoConstructor.prototype._update = function (data) {\n this.buffers.push(data)\n}\n\nHashNoConstructor.prototype._final = function () {\n var buf = Buffer.concat(this.buffers)\n var r = this._hash(buf)\n this.buffers = null\n\n return r\n}\n\nfunction Hash(hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if ('md5' === alg) return new HashNoConstructor(md5)\n if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)\n\n return new Hash(sha(alg))\n}\n",
|
||||
@@ -616,20 +668,20 @@
|
||||
"module.exports={\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\"<\",\"quot\":\"\\\"\"}\n",
|
||||
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeoLine truncated
|
||||
"var md5 = require('create-hash/md5')\nmodule.exports = EVP_BytesToKey\nfunction EVP_BytesToKey (password, salt, keyLen, ivLen) {\n if (!Buffer.isBuffer(password)) {\n password = new Buffer(password, 'binary')\n }\n if (salt && !Buffer.isBuffer(salt)) {\n salt = new Buffer(salt, 'binary')\n }\n keyLen = keyLen / 8\n ivLen = ivLen || 0\n var ki = 0\n var ii = 0\n var key = new Buffer(keyLen)\n var iv = new Buffer(ivLen)\n var addmd = 0\n var md_buf\n var i\n var bufs = []\n while (true) {\n if (addmd++ > 0) {\n bufs.push(md_buf)\n }\n bufs.push(password)\n if (salt) {\n bufs.push(salt)\n }\n md_buf = md5(Buffer.concat(bufs))\n bufs = []\n i = 0\n if (keyLen > 0) {\n while (true) {\n if (keyLen === 0) {\n break\n }\n if (i === md_buf.length) {\n break\n }\n key[ki++] = md_buf[i]\n keyLen--\n i++\n }\n }\n if (ivLen > 0 && i !== md_buf.length) {\n while (true) {\n if (ivLen === 0) {\n break\n }\n if (i === md_buf.length) {\n break\n }\n iv[ii++] = md_buf[i]\n ivLen--\n i++\n }\n }\n if (keyLen === 0 && ivLen === 0) {\n break\n }\n }\n for (i = 0; i < md_buf.length; i++) {\n md_buf[i] = 0\n }\n return {\n key: key,\n iv: iv\n }\n}\n",
|
||||
"/*jshint asi: true */\nmodule.exports = forge\n\nvar fu = require('fu')\nvar fs = require('fs')\nvar subarg = require('subarg')\n\nfunction isFile(file) {\n return fs.existsSync(file)\n}\n\nfunction transformFiles(transforms) {\n return function (file) {\n return addTransforms(fs.createReadStream(file), transforms, file)\n }\n}\n\nfunction transformStdin(transforms) {\n process.stdin.resume()\n return addTransforms(process.stdin, transforms, null)\n}\n\nfunction addTransforms(stream, transforms, fileName) {\n return fu.foldl(function (stream, transform) {\n return stream.pipe(transform(fileName))\n }, transforms, stream).pipe(process.stdout)\n}\n\nfunction append(obj, prop, x) {\n obj[prop].push(x)\n return obj\n}\n\nfunction addTransformWithOptions(arg) {\n var transform = require(arg._[0])\n return function (file) {\n return transform(file, arg)\n }\n}\n\nfunction forge(args) {\n var argv = subarg(args)\n\n var x = fu.foldl(function (obj, arg) {\n if (arg._) {\n return append(obj, 'transforms', addTransformWithOptions(arg))\n } else {\n return isFile(arg)\n ? append(obj, 'files', arg)\n : append(obj, 'transforms', require(arg))\n }\n }, argv._, { transforms: [], files: [] })\n\n return x.files.length\n ? fu.map(transformFiles(x.transforms), x.files)\n : transformStdin(x.transforms)\n}\n",
|
||||
"/*jshint curly: false, latedef: false, eqeqeq: false, plusplus: false, newcap: false */\n;(function (name, definition) {\n 'use strict';\n if (typeof define == 'function') {\n define(definition)\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = definition()\n } else {\n var Module = definition(), global = this, old = global[name]\n Module.noConflict = function () {\n global[name] = old\n return Module\n }\n global[name] = Module\n }\n}).call(this, 'fu', function () {\n 'use strict';\n\n var toStr = toString\n var isArray = Array.isArray || function (a) {\n return toStr.call(a) == '[object Array]'\n }\n var emptyList = 'empty list'\n\n function id(x) {\n return x\n }\n\n function head(xs) {\n return xs[0]\n }\n\n function last(xs) {\n return xs[xs.length - 1]\n }\n\n function init(xs) {\n var i = 0, l = xs.length - 1, r = Array(l - 1)\n for (i; i < l; i += 1) r[i] = xs[i]\n return r\n }\n\n function tail(xs) {\n var i = 1, l = xs.length, r = Array(l - 1)\n for (i; i < l; i += 1) r[i - 1] = xs[i]\n return r\n }\n\n function and(a) {\n return all(Boolean, a)\n }\n\n function or(a) {\n return any(Boolean, a)\n }\n\n function all(f, a) {\n if (arguments.length == 1) return function (a) { return all(f, a) }\n var i = 0, l = a.length\n for (i; i < l; i += 1) if (!f(a[i])) return false\n return true\n }\n\n function any(f, a) {\n if (arguments.length == 1) return function (a) { return any(f, a) }\n var i = 0, l = a.length\n for (i; i < l; i += 1) if (f(a[i])) return true\n return false\n }\n\n function concat() {\n var i = 0, l = arguments.length, n = 0, j = 0, lx = 0, r, a = arguments\n for (i; i < l; i += 1) n += a[i].length\n r = Array(n), n = 0\n for (i = 0; i < l; i += 1)\n for (j = 0, lx = a[i].length; j < lx; j++)\n r[n++] = a[i][j]\n return r\n }\n\n function curry(f, a) {\n return function (b) {\n return f(a, b)\n }\n }\n\n //+ intoObject :: [[key, value]] -> Object\n function intoObject(a) {\n return foldl(function (o, x) {\n if (!isArray(x)) throw new TypeError('expected key value pair')\n var k = x[0], v = x[1]\n o[k] = v\n return o\n }, a, {})\n }\n\n //+ intoArray :: Object -> [[key, value]]\n function intoArray(o) {\n return map(function (k) {\n return [k, o[k]]\n }, Object.keys(o))\n }\n\n //+ compact :: [a] -> [a]\n function compact(a) {\n return filter(Boolean, a)\n }\n\n //+ filter :: (a -> Boolean), [a] -> [a]\n function filter(f, a) {\n if (arguments.length == 1) return function (a) { return filter(f, a) }\n var i = 0, l = a.length, r = []\n for (i; i < l; i += 1) f(a[i]) === true && r.push(a[i])\n return r\n }\n\n //+ map :: (a -> b), [a] -> [b]\n function map(f, a) {\n if (arguments.length == 1) return function (a) { return map(f, a) }\n var i = 0, l = a.length, r = Array(l)\n for (i; i < l; i += 1) r[i] = f(a[i])\n return r\n }\n\n //+ foldl :: (a, b -> a), [a], b -> a\n function foldl(f, a, s) {\n if (arguments.length == 1) return function (a, s) { return foldl(f, a, s) }\n var i = 0, l = a.length, v\n if (s === undefined) {\n if (!l) throw new Error(emptyList)\n v = a[i++]\n } else {\n v = s\n }\n for (i; i < l; i += 1) v = f(v, a[i])\n return v\n }\n\n //+ concatMap :: (a -> [a]), [a] -> [a]\n function concatMap(f, a) {\n if (arguments.length == 1) return function (a) { return concatMap(f, a) }\n var i = 0, l = a.length, r = [], v\n for (i; i < l; i += 1) {\n v = f(a[i])\n isArray(v)\n ? [].push.apply(r, v)\n : r.push(v)\n }\n return r\n }\n\n //+ take :: Number, [a] -> [a]\n function take(n, a) {\n if (arguments.length == 1) return function (a) { return take(n, a) }\n if (n < 0) return []\n var i = 0, l = a.length, x = min([n, l]), r = Array(x)\n for (i; i < x; i += 1) r[i] = a[i]\n return r\n }\n\n //+ takeWhile :: (a -> Boolean), [a] -> [a]\n function takeWhile(f, a) {\n if (arguments.length == 1) return function (a) { return takeWhile(f, a) }\n var i = 0, l = a.length, r = []\n for (i; i < l; i += 1)\n if (f(a[i]) === true) r.push(a[i])\n else break\n return r\n }\n\n //+ drop :: Number, [a] -> [a]\n function drop(n, a) {\n if (n < 1) return a\n if (arguments.length == 1) return function (a) { return drop(n, a) }\n var l = a.length\n if (n >= l) return []\n var i = n, r = Array(l - n), x = -1\n for (i; i < l; i += 1) r[++x] = a[i]\n return r\n }\n\n //+ dropWhile :: (a -> Boolean), [a] -> [a]\n function dropWhile(f, a) {\n if (arguments.length == 1) return function (a) { return dropWhile(f, a) }\n var i = 0, l = a.length, n = 0\n for (i; i < l; i += 1) if (f(a[i]) !== true) break\n if (i == l) return []\n var r = Array(l - i - 1)\n for (i; i < l; i +Line truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var aesHelper = crypto.createCipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedText = aesHelper.update(text, \"utf8\", \"base64\");\n encryptedText += aesHelper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var aesHelper = crypto.createDecipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key)\n var decryptedText = aesHelper.update(text, \"base64\", \"utf8\")\n decryptedText += aesHelper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var file = fs.readFileSync(inputFileName);\n var aesHelper = crypto.createCipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedFile = aesHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var file = fs.readFileSync(inputFileName);\n var aesHelper = crypto.createDecipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedFile = aesHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var aesHelper = crypto.createCipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedText = aesHelper.update(text, \"utf8\", \"base64\");\n encryptedText += aesHelper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var aesHelper = crypto.createDecipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var decryptedText = aesHelper.update(text, \"base64\", \"utf8\");\n decryptedText += aesHelper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var aesHelper = crypto.createCipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(aesHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var aesHelper = crypto.createDecipher((\"aes-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(aesHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar enLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet, a, b) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(a, replacedAlphabet.length) === true) {\n return encryptSync(text, replacedAlphabet, a, b);\n }\n}\nvar decryptTextSync = function(text, alphabet, a, b) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(a, replacedAlphabet.length) === true) {\n return decryptSync(text, replacedAlphabet, a, b);\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, a, b) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(a, replacedAlphabet.length) === true) {\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, a, b), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, a, b) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(a, replacedAlphabet.length) === true) {\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, a, b), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, alphabet, a, b, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(a, replacedAlphabet.length, function(err) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedAlphabet, a, b, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, a, b, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(a, replacedAlphabet.length, function(err) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedAlphabet, a, b, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, a, b, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(a, replacedAlphabet.length, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedAlphabet, a, b, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, a, b, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(a, replacedAlphabet.length, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hexLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet) {\n return atbashSync(text, replaceAlphabetForTextSync(alphabet));\n}\nvar decryptTextSync = function(text, alphabet) {\n return encryptTextSync(text, alphabet);\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet) {\n fs.writeFileSync(outputFileName, atbashSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replaceAlphabetForFileSync(alphabet)), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet) {\n return encryptFileSync(inputFileName, outputFileName, deleteOriginal, alphabet);\n}\nvar encryptText = function(text, alphabet, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n atbash(text, replacedAlphabet, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, callback) {\n encryptText(text, alphabet, callback);\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n atbash(readData.toUpperCase(), replacedAlphabet, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, callback) {\n encryptFile(inputFileName, outputFileName, deleteOriginal, alphabet, callback);\n}\nvar encryptTextWithPromise = function(text, alphabet) {\n return new Promise(function(resolve, reject) {\n try {\n replaceAlphabetForTextWithPromise(alphabet).then(function(replacedAlphabet) {\n return atbashWithPromise(text, replacedAlphabet);\n }).then(function(encryptedText) {\n resolve(encryptedText);\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar decryptTextWithPromise = function(text, alphabet) {\n return encryptTextWithPromise(text, alphabet);\n}\nvar encryptFileWithPromise = function(inputFileName, outputFileName, deleteOriginal, alphabet) {\n return new Promise(function(resolve, reject) {\n try {\n replaceAlphabetForFileWithPromise(alphabet).then(function(replacedAlphabet) {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n atbashWithPromise(readData.toUpperCase(), replacedAlphabet).then(function(encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n reject(err);\n } else {\n resolve(true);\n }\n });\n } else {\n resolve(true);\n }\n });\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar decryptFileWithPromise = function(inputFileName, outputFileName, deleteOriginal, alphabet) {\n return encryptFileWithPromise(inputFileName, outputFileName, deleteOriginal, alphabet);\n}\n\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.deleteOriginal == null) {\n options.deleteOriginal = false;\n }\n if (options.callback) {\n if (options.operationType == \"decrypt\") {\n if (type == \"file\") {\n decryptFile(options.inputFile, options.outputFile, options.deletLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(text, replacedAlphabet, columnCount)) {\n return encryptSync(text, replacedAlphabet, columnCount);\n }\n}\nvar decryptTextSync = function(text, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(text, replacedAlphabet, columnCount)) {\n return decryptSync(text, replacedAlphabet, columnCount);\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForFileSync(alphabet);\n if (checkIfOptionsAreValidSync(\"\", replacedAlphabet, columnCount, true)) {\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, columnCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForFileSync(alphabet);\n if (checkIfOptionsAreValidSync(\"\", replacedAlphabet, columnCount, true)) {\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, columnCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(text, replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedAlphabet, columnCount, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(text, replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedAlphabet, columnCount, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(\"\", replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedAlphabet, columnCount, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n }, true);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(\"\", replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStreamLine truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var blowfishHelper = crypto.createCipher((\"bf-\" + operationMode).toLowerCase(), key);\n var encryptedText = blowfishHelper.update(text, \"utf8\", \"base64\");\n encryptedText += blowfishHelper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var blowfishHelper = crypto.createDecipher((\"bf-\" + operationMode).toLowerCase(), key)\n var decryptedText = blowfishHelper.update(text, \"base64\", \"utf8\")\n decryptedText += blowfishHelper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var blowfishHelper = crypto.createCipher((\"bf-\" + operationMode).toLowerCase(), key);\n var encryptedFile = blowfishHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var blowfishHelper = crypto.createDecipher((\"bf-\" + operationMode).toLowerCase(), key);\n var encryptedFile = blowfishHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var blowfishHelper = crypto.createCipher((\"bf-\" + operationMode).toLowerCase(), key);\n var encryptedText = blowfishHelper.update(text, \"utf8\", \"base64\");\n encryptedText += blowfishHelper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var blowfishHelper = crypto.createDecipher((\"bf-\" + operationMode).toLowerCase(), key);\n var decryptedText = blowfishHelper.update(text, \"base64\", \"utf8\");\n decryptedText += blowfishHelper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var blowfishHelper = crypto.createCipher((\"bf-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(blowfishHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var blowfishHelper = crypto.createDecipher((\"bf-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(blowfishHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, key, operationMode) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(operationMode).then(function() {\nLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet, shiftCount) {\n return encryptSync(text, replaceAlphabetForTextSync(alphabet), shiftCount);\n}\nvar decryptTextSync = function(text, alphabet, shiftCount) {\n return decryptSync(text, replaceAlphabetForTextSync(alphabet), shiftCount);\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, shiftCount) {\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replaceAlphabetForFileSync(alphabet), shiftCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, shiftCount) {\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replaceAlphabetForFileSync(alphabet), shiftCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar encryptText = function(text, alphabet, shiftCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedAlphabet, shiftCount, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, shiftCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedAlphabet, shiftCount, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, shiftCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedAlphabet, shiftCount, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, shiftCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n decrypt(readData.toUpperCase(), replacedAlphabet, shiftCount, function(err, decryptedText) {\n outputFileStream.write(decryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, alphabet, shiftCount) {\n return new Promise(function(resolve, reject) {\n try {\n replaceAlphabetForTextWithPromise(alphabet).then(function(replacedAlphabet) {\n return encryptWithPromise(text, replacedAlphabet, shiftCount);\n }).then(function(encryptedText) {\n resolve(encryptedText);\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar decryptTextWithPromise = function(text, alphaLine truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var camelliaHelper = crypto.createCipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedText = camelliaHelper.update(text, \"utf8\", \"base64\");\n encryptedText += camelliaHelper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var camelliaHelper = crypto.createDecipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key)\n var decryptedText = camelliaHelper.update(text, \"base64\", \"utf8\")\n decryptedText += camelliaHelper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var file = fs.readFileSync(inputFileName);\n var camelliaHelper = crypto.createCipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedFile = camelliaHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode, bitSize)) {\n var file = fs.readFileSync(inputFileName);\n var camelliaHelper = crypto.createDecipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedFile = camelliaHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var camelliaHelper = crypto.createCipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var encryptedText = camelliaHelper.update(text, \"utf8\", \"base64\");\n encryptedText += camelliaHelper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var camelliaHelper = crypto.createDecipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var decryptedText = camelliaHelper.update(text, \"base64\", \"utf8\");\n decryptedText += camelliaHelper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var camelliaHelper = crypto.createCipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(camelliaHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, bitSize, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var camelliaHelper = crypto.createDecipher((\"camellia-\" + bitSize + \"-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(camelliaHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\Line truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var cast5Helper = crypto.createCipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var encryptedText = cast5Helper.update(text, \"utf8\", \"base64\");\n encryptedText += cast5Helper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var cast5Helper = crypto.createDecipher((\"cast5-\" + operationMode).toLowerCase(), key)\n var decryptedText = cast5Helper.update(text, \"base64\", \"utf8\")\n decryptedText += cast5Helper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var cast5Helper = crypto.createCipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var encryptedFile = cast5Helper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var cast5Helper = crypto.createDecipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var encryptedFile = cast5Helper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var cast5Helper = crypto.createCipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var encryptedText = cast5Helper.update(text, \"utf8\", \"base64\");\n encryptedText += cast5Helper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var cast5Helper = crypto.createDecipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var decryptedText = cast5Helper.update(text, \"base64\", \"utf8\");\n decryptedText += cast5Helper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var cast5Helper = crypto.createCipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(cast5Helper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var cast5Helper = crypto.createDecipher((\"cast5-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(cast5Helper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, key, operationMode) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(operationMode).then(function() {\n var cast5Helper = crypto.creLine truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var desHelper = crypto.createCipher((\"des-\" + operationMode).toLowerCase(), key);\n var encryptedText = desHelper.update(text, \"utf8\", \"base64\");\n encryptedText += desHelper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var desHelper = crypto.createDecipher((\"des-\" + operationMode).toLowerCase(), key)\n var decryptedText = desHelper.update(text, \"base64\", \"utf8\")\n decryptedText += desHelper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var desHelper = crypto.createCipher((\"des-\" + operationMode).toLowerCase(), key);\n var encryptedFile = desHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var desHelper = crypto.createDecipher((\"des-\" + operationMode).toLowerCase(), key);\n var encryptedFile = desHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var desHelper = crypto.createCipher((\"des-\" + operationMode).toLowerCase(), key);\n var encryptedText = desHelper.update(text, \"utf8\", \"base64\");\n encryptedText += desHelper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var desHelper = crypto.createDecipher((\"des-\" + operationMode).toLowerCase(), key);\n var decryptedText = desHelper.update(text, \"base64\", \"utf8\");\n decryptedText += desHelper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var desHelper = crypto.createCipher((\"des-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(desHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var desHelper = crypto.createDecipher((\"des-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(desHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, key, operationMode) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(operationMode).then(function() {\n var desHelper = crypto.createCipher((\"des-\" + operationMode).toLowerCase(), key);\Line truncated
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"dss1\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"dss1\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"dss1\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var dss1Helper = crypto.createHash(\"dss1\");\n dss1Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n dss1Helper.end();\n callback(null, dss1Helper.read());\n });\n stream.pipe(dss1Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"dss1\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var dss1Helper = crypto.createHash(\"dss1\");\n dss1Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n dss1Helper.end();\n resolve(dss1Helper.read());\n });\n stream.pipe(dss1Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const fs = require(\"fs\");\nconst keccak_512 = require(\"js-sha3\").keccak_512;\nconst keccak_384 = require(\"js-sha3\").keccak_384;\nconst keccak_256 = require(\"js-sha3\").keccak_256;\nconst keccak_224 = require(\"js-sha3\").keccak_224;\n\nvar getHashOfTextSync = function(bitSize, text) {\n if (checkIfOptionsAreValidSync(bitSize)) {\n var hashOfText = \"\";\n switch (bitSize) {\n case 224:\n hashOfText = keccak_224(text);\n break;\n case 256:\n hashOfText = keccak_256(text);\n break;\n case 384:\n hashOfText = keccak_384(text);\n break;\n case 512:\n hashOfText = keccak_512(text);\n break;\n default:\n hashOfText = \"\";\n }\n return hashOfText;\n }\n}\nvar getHashOfFileSync = function(bitSize, fileName) {\n if (checkIfOptionsAreValidSync(bitSize)) {\n var file = fs.readFileSync(fileName);\n var hashOfFile = \"\";\n switch (bitSize) {\n case 224:\n hashOfFile = keccak_224(file);\n break;\n case 256:\n hashOfFile = keccak_256(file);\n break;\n case 384:\n hashOfFile = keccak_384(file);\n break;\n case 512:\n hashOfFile = keccak_512(file);\n break;\n default:\n hashOfFile = \"\";\n }\n return hashOfFile;\n }\n}\nvar getHashOfText = function(bitSize, text, callback) {\n try {\n checkIfOptionsAreValid(bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var hashOfText = \"\";\n switch (bitSize) {\n case 224:\n hashOfText = keccak_224(text);\n break;\n case 256:\n hashOfText = keccak_256(text);\n break;\n case 384:\n hashOfText = keccak_384(text);\n break;\n case 512:\n hashOfText = keccak_512(text);\n break;\n default:\n hashOfText = \"\";\n }\n callback(null, hashOfText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(bitSize, fileName, callback) {\n try {\n checkIfOptionsAreValid(bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n fs.readFile(fileName, function(err, file) {\n var hashOfFile = \"\";\n switch (bitSize) {\n case 224:\n hashOfFile = keccak_224(file);\n break;\n case 256:\n hashOfFile = keccak_256(file);\n break;\n case 384:\n hashOfFile = keccak_384(file);\n break;\n case 512:\n hashOfFile = keccak_512(file);\n break;\n default:\n hashOfFile = \"\";\n }\n callback(null, hashOfFile);\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(bitSize, text) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(bitSize).then(function() {\n var hashOfText = \"\";\n switch (bitSize) {\n case 224:\n hashOfText = keccak_224(text);\n break;\n case 256:\n hashOfText = keccak_256(text);\n break;\n case 384:\n hashOfText = keccak_384(text);\n break;\n case 512:\n hashOfText = keccak_512(text);\n break;\n default:\n hashOfText = \"\";\n }\n resolve(hashOfText);\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(bitSize, fileName) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(bitSize).then(function() {\n fs.readFile(fileName, function(err, file) {\n var hashOfFile = \"\";\n switch (bitSize) {\n case 224:\n hashOfFile = keccak_224(file);\n break;\n case 256:\n hashOfFile = keccak_256(file);\n break;\n case 384:\n hashOfFile = keccak_384(file);\n break;\n case 512:\n hashOfFile = keccak_512(file);\n break;\n default:\n hashOfFile = \"\";\n }\n resolve(hashOfFile);\n });\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.bitSize == null) {\n options.bitSize = 256;\n }\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.bitSize, options.fileName, options.callback);\n } else {\n getHashOfText(options.bitSize, options.tLine truncated
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"md4\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"md4\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"md4\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var md4Helper = crypto.createHash(\"md4\");\n md4Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n md4Helper.end();\n callback(null, md4Helper.read());\n });\n stream.pipe(md4Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"md4\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var md4Helper = crypto.createHash(\"md4\");\n md4Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n md4Helper.end();\n resolve(md4Helper.read());\n });\n stream.pipe(md4Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"md5\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"md5\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"md5\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var md5Helper = crypto.createHash(\"md5\");\n md5Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n md5Helper.end();\n callback(null, md5Helper.read());\n });\n stream.pipe(md5Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"md5\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var md5Helper = crypto.createHash(\"md5\");\n md5Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n md5Helper.end();\n resolve(md5Helper.read());\n });\n stream.pipe(md5Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"mdc2\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"mdc2\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"mdc2\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var mdc2Helper = crypto.createHash(\"mdc2\");\n mdc2Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n mdc2Helper.end();\n callback(null, mdc2Helper.read());\n });\n stream.pipe(mdc2Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"mdc2\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var mdc2Helper = crypto.createHash(\"mdc2\");\n mdc2Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n mdc2Helper.end();\n resolve(mdc2Helper.read());\n });\n stream.pipe(mdc2Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, baseAlphabet, targetAlphabet) {\n var replacedBaseAlphabet = replaceAlphabetForTextSync(baseAlphabet);\n return encryptSync(text, replacedBaseAlphabet, replaceTargetAlphabetSync(replacedBaseAlphabet, replaceAlphabetForTextSync(targetAlphabet)));\n}\nvar decryptTextSync = function(text, baseAlphabet, targetAlphabet) {\n var replacedBaseAlphabet = replaceAlphabetForTextSync(baseAlphabet);\n return decryptSync(text, replacedBaseAlphabet, replaceTargetAlphabetSync(replacedBaseAlphabet, replaceAlphabetForTextSync(targetAlphabet)));\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, baseAlphabet, targetAlphabet) {\n var replacedBaseAlphabet = replaceAlphabetForFileSync(baseAlphabet);\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedBaseAlphabet, replaceTargetAlphabetSync(replacedBaseAlphabet, replaceAlphabetForTextSync(targetAlphabet))), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, baseAlphabet, targetAlphabet) {\n var replacedBaseAlphabet = replaceAlphabetForFileSync(baseAlphabet);\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedBaseAlphabet, replaceTargetAlphabetSync(replacedBaseAlphabet, replaceAlphabetForTextSync(targetAlphabet))), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar encryptText = function(text, baseAlphabet, targetAlphabet, callback) {\n try {\n replaceAlphabetForText(baseAlphabet, function(err, replacedBaseAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceAlphabetForText(targetAlphabet, function(err, replacedTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceTargetAlphabet(replacedBaseAlphabet, replacedTargetAlphabet, function(err, finalTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedBaseAlphabet, finalTargetAlphabet, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, baseAlphabet, targetAlphabet, callback) {\n try {\n replaceAlphabetForText(baseAlphabet, function(err, replacedBaseAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceAlphabetForText(targetAlphabet, function(err, replacedTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceTargetAlphabet(replacedBaseAlphabet, replacedTargetAlphabet, function(err, finalTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedBaseAlphabet, finalTargetAlphabet, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, baseAlphabet, targetAlphabet, callback) {\n try {\n replaceAlphabetForFile(baseAlphabet, function(err, replacedBaseAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n replaceAlphabetForFile(targetAlphabet, function(err, replacedTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceTargetAlphabet(replacedBaseAlphabet, replacedTargetAlphabet, function(err, finalTargetAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedBaseAlphabet, finalTargetAlphabet, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n Line truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, key) {\n var replacedKey = replaceKeySync(key);\n if (checkIfOptionsAreValidForTextSync(text, replacedKey)) {\n return permutationSync(text, replacedKey);\n }\n}\nvar decryptTextSync = function(text, key) {\n return encryptTextSync(text, getDecryptionKeySync(replaceKeySync(key)));\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key) {\n var replacedKey = replaceKeySync(key);\n var file = fs.readFileSync(inputFileName, \"hex\").toUpperCase();\n if (checkIfOptionsAreValidForFileSync(file.length, replacedKey)) {\n fs.writeFileSync(outputFileName, permutationSync(file, replacedKey), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key) {\n return encryptFileSync(inputFileName, outputFileName, deleteOriginal, getDecryptionKeySync(replaceKeySync(key)));\n}\nvar encryptText = function(text, key, callback) {\n try {\n replaceKey(key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValidForText(text, replacedKey, function(err) {\n if (err) {\n callback(err, null);\n } else {\n permutation(text, replacedKey, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, callback) {\n replaceKey(key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n getDecryptionKey(replacedKey, function(err, decryptionKey) {\n if (err) {\n callback(err, null);\n } else {\n encryptText(text, decryptionKey, callback);\n }\n });\n }\n });\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, callback) {\n try {\n replaceKey(key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n var checkStream = fs.createReadStream(inputFileName);\n var fileLength = 0;\n checkStream.setEncoding(\"hex\");\n checkStream.on(\"data\", function(readData) {\n fileLength += readData.length;\n });\n checkStream.on(\"end\", function() {\n checkIfOptionsAreValidForFile(fileLength, replacedKey, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n permutation(readData.toUpperCase(), replacedKey, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, callback) {\n replaceKey(key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n getDecryptionKey(replacedKey, function(err, decryptionKey) {\n if (err) {\n callback(err, null);\n } else {\n encryptFile(inputFileName, outputFileName, deleteOriginal, decryptionKey, callback);\n }\n });\n }\n });\n}\nvar encryptTextWithPromise = function(text, key) {\n return new Promise(function(resolve, reject) {\n try {\n replaceKeyWithPromise(key).then(function(replacedKey) {\n return checkIfOptionsAreValidForTextWithPromise(text, replacedKey).then(function() {\n return permutationWithPromise(text, replacedKey);\n });\n }).then(function(encryptedText) {\n resolve(encryptedText);\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar decryptTextWithPromise = function(text, key) {\n return new Promise(function(resolve, reject) {\n try {\n replLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(text, replacedAlphabet, columnCount)) {\n return encryptSync(text, replacedAlphabet, columnCount);\n }\n}\nvar decryptTextSync = function(text, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n if (checkIfOptionsAreValidSync(text, replacedAlphabet, columnCount)) {\n return decryptSync(text, replacedAlphabet, columnCount);\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForFileSync(alphabet);\n if (checkIfOptionsAreValidSync(\"\", replacedAlphabet, columnCount, true)) {\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, columnCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount) {\n var replacedAlphabet = replaceAlphabetForFileSync(alphabet);\n if (checkIfOptionsAreValidSync(\"\", replacedAlphabet, columnCount, true)) {\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, columnCount), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(text, replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedAlphabet, columnCount, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n checkIfOptionsAreValid(text, replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedAlphabet, columnCount, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(\"\", replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedAlphabet, columnCount, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n }, true);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, columnCount, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null)\n } else {\n checkIfOptionsAreValid(\"\", replacedAlphabet, columnCount, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStreamLine truncated
|
||||
@@ -637,6 +689,7 @@
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var rc2Helper = crypto.createCipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var encryptedText = rc2Helper.update(text, \"utf8\", \"base64\");\n encryptedText += rc2Helper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var rc2Helper = crypto.createDecipher((\"rc2-\" + operationMode).toLowerCase(), key)\n var decryptedText = rc2Helper.update(text, \"base64\", \"utf8\")\n decryptedText += rc2Helper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var rc2Helper = crypto.createCipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var encryptedFile = rc2Helper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var rc2Helper = crypto.createDecipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var encryptedFile = rc2Helper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var rc2Helper = crypto.createCipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var encryptedText = rc2Helper.update(text, \"utf8\", \"base64\");\n encryptedText += rc2Helper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var rc2Helper = crypto.createDecipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var decryptedText = rc2Helper.update(text, \"base64\", \"utf8\");\n decryptedText += rc2Helper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var rc2Helper = crypto.createCipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(rc2Helper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var rc2Helper = crypto.createDecipher((\"rc2-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(rc2Helper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, key, operationMode) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(operationMode).then(function() {\n var rc2Helper = crypto.createCipher((\"rc2-\" + operationMode).toLowerCase(), key);\Line truncated
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"ripemd\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"ripemd\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"ripemd\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var ripemdHelper = crypto.createHash(\"ripemd\");\n ripemdHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n ripemdHelper.end();\n callback(null, ripemdHelper.read());\n });\n stream.pipe(ripemdHelper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"ripemd\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var ripemdHelper = crypto.createHash(\"ripemd\");\n ripemdHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n ripemdHelper.end();\n resolve(ripemdHelper.read());\n });\n stream.pipe(ripemdHelper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"ripemd160\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"ripemd160\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"ripemd160\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var ripemd160Helper = crypto.createHash(\"ripemd160\");\n ripemd160Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n ripemd160Helper.end();\n callback(null, ripemd160Helper.read());\n });\n stream.pipe(ripemd160Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"ripemd160\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var ripemd160Helper = crypto.createHash(\"ripemd160\");\n ripemd160Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n ripemd160Helper.end();\n resolve(ripemd160Helper.read());\n });\n stream.pipe(ripemd160Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const fs = require(\"fs\");\nconst nodeRSA = require(\"node-rsa\");\n\nvar generateKeyPairSync = function(bitSize, exponent) {\n if (!exponent) {\n exponent = 65537;\n }\n var keyGenerator = new nodeRSA();\n var keyPair = keyGenerator.generateKeyPair(bitSize, exponent);\n var privateKey = keyPair.exportKey(\"private\");\n var publicKey = keyPair.exportKey(\"public\");\n return {\n public: publicKey,\n private: privateKey\n };\n}\nvar generateKeyPair = function(bitSize, exponent, callback) {\n try {\n if (!exponent) {\n exponent = 65537;\n }\n var keyGenerator = new nodeRSA();\n var keyPair = keyGenerator.generateKeyPair(bitSize, exponent);\n var privateKey = keyPair.exportKey(\"private\");\n var publicKey = keyPair.exportKey(\"public\");\n callback(null, {\n public: publicKey,\n private: privateKey\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar generateKeyPairWithPromise = function(bitSize, exponent) {\n return new Promise(function(resolve, reject) {\n try {\n if (!exponent) {\n exponent = 65537;\n }\n var keyGenerator = new nodeRSA();\n var keyPair = keyGenerator.generateKeyPair(bitSize, exponent);\n var privateKey = keyPair.exportKey(\"private\");\n var publicKey = keyPair.exportKey(\"public\");\n resolve({\n public: publicKey,\n private: privateKey\n });\n } catch (err) {\n reject(err);\n }\n });\n}\n\nvar exportKeySync = function(key, outputFileName) {\n fs.writeFileSync(outputFileName, key);\n return true;\n}\nvar exportKey = function(key, outputFileName, callback) {\n try {\n fs.writeFile(outputFileName, key, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar exportKeyWithPromise = function(key, outputFileName) {\n return new Promise(function(resolve, reject) {\n try {\n fs.writeFile(outputFileName, key, function(err) {\n if (err) {\n reject(err);\n } else {\n resolve(true);\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar importKeySync = function(fileName) {\n return fs.readFileSync(fileName).toString();\n}\nvar importKey = function(fileName, callback) {\n try {\n fs.readFile(fileName, function(err, data) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, data.toString());\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar importKeyWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n fs.readFile(fileName, function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data.toString());\n }\n });\n } catch (err) {\n reject(err);\n }\n });\n}\n\nvar encryptTextSync = function(text, publicKey) {\n var rsaHelper = new nodeRSA(publicKey);\n return rsaHelper.encrypt(text, \"base64\", \"utf8\");\n}\nvar decryptTextSync = function(text, privateKey) {\n var rsaHelper = new nodeRSA(privateKey);\n return rsaHelper.decrypt(text, \"utf8\", \"base64\");\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, publicKey) {\n var rsaHelper = new nodeRSA(publicKey);\n fs.writeFileSync(outputFileName, rsaHelper.encrypt(fs.readFileSync(inputFileName), \"buffer\", \"buffer\"));\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, privateKey) {\n var rsaHelper = new nodeRSA(privateKey);\n fs.writeFileSync(outputFileName, rsaHelper.decrypt(fs.readFileSync(inputFileName), \"buffer\", \"buffer\"));\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar encryptText = function(text, publicKey, callback) {\n try {\n var rsaHelper = new nodeRSA(publicKey);\n callback(null, rsaHelper.encrypt(text, \"base64\", \"utf8\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, privateKey, callback) {\n try {\n var rsaHelper = new nodeRSA(privateKey);\n callback(null, rsaHelper.decrypt(text, \"utf8\", \"base64\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, publicKey, callback) {\n try {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n var rsaHelper = new nodeRSA(publicKey);\n inputFileStream.on(\"data\", function(readData) {\n outputFileStream.write(rsaHelper.encrypt(readData, \"buffer\", \"buffer\"));\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fsLine truncated
|
||||
"const fs = require(\"fs\");\nconst crypto = require(\"crypto\");\n\nvar encryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var seedHelper = crypto.createCipher((\"seed-\" + operationMode).toLowerCase(), key);\n var encryptedText = seedHelper.update(text, \"utf8\", \"base64\");\n encryptedText += seedHelper.final(\"base64\");\n return encryptedText;\n }\n}\nvar decryptTextSync = function(text, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var seedHelper = crypto.createDecipher((\"seed-\" + operationMode).toLowerCase(), key)\n var decryptedText = seedHelper.update(text, \"base64\", \"utf8\")\n decryptedText += seedHelper.final(\"utf8\");\n return decryptedText;\n }\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var seedHelper = crypto.createCipher((\"seed-\" + operationMode).toLowerCase(), key);\n var encryptedFile = seedHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key, operationMode) {\n if (checkIfOptionsAreValidSync(operationMode)) {\n var file = fs.readFileSync(inputFileName);\n var seedHelper = crypto.createDecipher((\"seed-\" + operationMode).toLowerCase(), key);\n var encryptedFile = seedHelper.update(file);\n fs.writeFileSync(outputFileName, encryptedFile);\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n }\n}\nvar encryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var seedHelper = crypto.createCipher((\"seed-\" + operationMode).toLowerCase(), key);\n var encryptedText = seedHelper.update(text, \"utf8\", \"base64\");\n encryptedText += seedHelper.final(\"base64\");\n callback(null, encryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var seedHelper = crypto.createDecipher((\"seed-\" + operationMode).toLowerCase(), key);\n var decryptedText = seedHelper.update(text, \"base64\", \"utf8\");\n decryptedText += seedHelper.final(\"utf8\");\n callback(null, decryptedText);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var seedHelper = crypto.createCipher((\"seed-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(seedHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, operationMode, callback) {\n try {\n checkIfOptionsAreValid(operationMode, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var seedHelper = crypto.createDecipher((\"seed-\" + operationMode).toLowerCase(), key);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.pipe(seedHelper).pipe(outputFileStream);\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptTextWithPromise = function(text, key, operationMode) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(operationMode).then(function() {\n var seedHelper = crypto.createCipher((\"seed-\" + operatLine truncated
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"sha1\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"sha1\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"sha1\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var sha1Helper = crypto.createHash(\"sha1\");\n sha1Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n sha1Helper.end();\n callback(null, sha1Helper.read());\n });\n stream.pipe(sha1Helper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"sha1\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var sha1Helper = crypto.createHash(\"sha1\");\n sha1Helper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n sha1Helper.end();\n resolve(sha1Helper.read());\n });\n stream.pipe(sha1Helper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(bitSize, text) {\n if (checkIfOptionsAreValidSync(bitSize)) {\n return crypto.createHash(\"sha\" + bitSize).update(text).digest(\"hex\");\n }\n}\nvar getHashOfFileSync = function(bitSize, fileName) {\n if (checkIfOptionsAreValidSync(bitSize)) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"sha\" + bitSize).update(file).digest(\"hex\");\n }\n}\nvar getHashOfText = function(bitSize, text, callback) {\n try {\n checkIfOptionsAreValid(bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, crypto.createHash(\"sha\" + bitSize).update(text).digest(\"hex\"));\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(bitSize, fileName, callback) {\n try {\n checkIfOptionsAreValid(bitSize, function(err) {\n if (err) {\n callback(err, null);\n } else {\n var stream = fs.createReadStream(fileName);\n var shaHelper = crypto.createHash(\"sha\" + bitSize);\n shaHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n shaHelper.end();\n callback(null, shaHelper.read());\n });\n stream.pipe(shaHelper);\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(bitSize, text) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(bitSize).then(function() {\n resolve(crypto.createHash(\"sha\" + bitSize).update(text).digest(\"hex\"));\n }).catch(function(err) {\n reject(err)\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(bitSize, fileName) {\n return new Promise(function(resolve, reject) {\n try {\n checkIfOptionsAreValidWithPromise(bitSize).then(function() {\n var stream = fs.createReadStream(fileName);\n var shaHelper = crypto.createHash(\"sha\" + bitSize);\n shaHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n shaHelper.end();\n resolve(shaHelper.read());\n });\n stream.pipe(shaHelper);\n\n }).catch(function(err) {\n reject(err)\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.bitSize == null) {\n options.bitSize = 256;\n }\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.bitSize, options.fileName, options.callback);\n } else {\n getHashOfText(options.bitSize, options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.bitSize, options.fileName);\n } else {\n return getHashOfTextWithPromise(options.bitSize, options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.bitSize, options.fileName);\n } else {\n return getHashOfTextSync(options.bitSize, options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n\nvar checkIfOptionsAreValidSync = function(bitSize) {\n if (bitSize == 224 || bitSize == 256 || bitSize == 384 || bitSize == 512) {\n return true;\n } else {\n throw new Error(\"You have entered an invalid bitSize. Please enter a valid bitSize to proceed.\");\n }\n}\nvar checkIfOptionsAreValid = function(bitSize, callback) {\n if (bitSize == 224 || bitSize == 256 || bitSize == 384 || bitSize == 512) {\n callback(null);\n } else {\n callback(new Error(\"You have entered an invalid bitSize. Please enter a valid bitSize to proceed.\"));\n }\n}\nvar checkIfOptionsAreValidWithPromise = function(bitSize) {\n return new Promise(function(resolve, reject) {\n try {\n if (bitSize == 224 || bitSize == 256 || bitSize == 384 || bitSize == 512) {\n resolve(true);\n } else {\n reject(new Error(\"You have entered an invalid bitSize. Please enter a valid bitSize to proceed.\"));\n }\n } catch (err) {\n reject(err);\n }\n });\n}\n",
|
||||
@@ -646,7 +699,7 @@
|
||||
"const fs = require(\"fs\");\nconst hexanary = require(\"hexanary\");\nconst baseanary = require(\"baseanary\");\nconst textanary = require(\"textanary\");\n\nvar encryptTextSync = function(text, key) {\n return baseanary.toBase64Sync(vernamSync(textanary.toBinarySync(text), textanary.toBinarySync(key)));\n}\nvar decryptTextSync = function(text, key) {\n return textanary.toTextSync(vernamSync(baseanary.toBinarySync(text), textanary.toBinarySync(key)));\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key) {\n fs.writeFileSync(outputFileName, hexanary.toHexSync(vernamSync(hexanary.toBinarySync(fs.readFileSync(inputFileName, \"hex\").toUpperCase()), textanary.toBinarySync(key))), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, key) {\n return encryptFileSync(inputFileName, outputFileName, deleteOriginal, key);\n}\nvar encryptText = function(text, key, callback) {\n try {\n textanary.toBinary(key, function(err, binaryKey) {\n if (err) {\n callback(err, null);\n } else {\n textanary.toBinary(text, function(err, binaryText) {\n if (err) {\n callback(err, null);\n } else {\n vernam(binaryText, binaryKey, function(err, encryptedBinary) {\n if (err) {\n callback(err, null);\n } else {\n baseanary.toBase64(encryptedBinary, function(err, encryptedBase64) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedBase64);\n }\n });\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, key, callback) {\n try {\n textanary.toBinary(key, function(err, binaryKey) {\n if (err) {\n callback(err, null);\n } else {\n baseanary.toBinary(text, function(err, binaryText) {\n if (err) {\n callback(err, null);\n } else {\n vernam(binaryText, binaryKey, function(err, decryptedBinary) {\n if (err) {\n callback(err, null);\n } else {\n textanary.toText(decryptedBinary, function(err, plainText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, plainText);\n }\n });\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, key, callback) {\n try {\n textanary.toBinary(key, function(err, binaryKey) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n hexanary.toBinary(readData.toUpperCase(), function(err, binaryForm) {\n vernam(binaryForm, binaryKey, function(err, encryptedBinary) {\n hexanary.toHex(encryptedBinary, function(err, encryptedHex) {\n outputFileStream.write(encryptedHex, \"hex\");\n });\n });\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, key, callback) {\n encryptFile(inputFileName, outputFileName, deleteOriginal, key, callback);\n}\nvar encryptTextWithPromise = function(text, key) {\n return new Promise(function(resolve, reject) {\n try {\n textanary.toBinaryWithPromise(key).then(function(binaryKey) {\n return textanary.toBinaryWithPromise(text).then(function(binaryText) {\n return vernamWithPromise(binaryText, binaryKey);\n });\n }).then(function(encryptedBinary) {\n return baseanary.toBase64WithPromise(encryptedBinary);\n }).then(function(encryptedBase64) {\n resolve(encryptedBase64);\n }).catch(function(err) {\n reject(err);\n });\n } catch (err) {\n reject(err);\n }\n });\n}\nvar decryptTextWithPromise = function(text, key) {\n return new Promise(fLine truncated
|
||||
"const fs = require(\"fs\");\n\nvar encryptTextSync = function(text, alphabet, key) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n return encryptSync(text, replacedAlphabet, replaceKeySync(replacedAlphabet, key));\n}\nvar decryptTextSync = function(text, alphabet, key) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n return decryptSync(text, replacedAlphabet, replaceKeySync(replacedAlphabet, key));\n}\nvar encryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, key) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n fs.writeFileSync(outputFileName, encryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, replaceKeySync(replacedAlphabet, key)), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar decryptFileSync = function(inputFileName, outputFileName, deleteOriginal, alphabet, key) {\n var replacedAlphabet = replaceAlphabetForTextSync(alphabet);\n fs.writeFileSync(outputFileName, decryptSync(fs.readFileSync(inputFileName, \"hex\").toUpperCase(), replacedAlphabet, replaceKeySync(replacedAlphabet, key)), \"hex\");\n if (deleteOriginal) {\n fs.unlinkSync(inputFileName);\n return true;\n } else {\n return true;\n }\n}\nvar encryptText = function(text, alphabet, key, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceKey(replacedAlphabet, key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n encrypt(text, replacedAlphabet, replacedKey, function(err, encryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, encryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptText = function(text, alphabet, key, callback) {\n try {\n replaceAlphabetForText(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceKey(replacedAlphabet, key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n decrypt(text, replacedAlphabet, replacedKey, function(err, decryptedText) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, decryptedText);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar encryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, key, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceKey(replacedAlphabet, key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n encrypt(readData.toUpperCase(), replacedAlphabet, replacedKey, function(err, encryptedText) {\n outputFileStream.write(encryptedText, \"hex\");\n });\n });\n inputFileStream.on(\"end\", function() {\n outputFileStream.end();\n if (deleteOriginal) {\n fs.unlink(inputFileName, function(err) {\n if (err) {\n callback(err, null);\n } else {\n callback(null, true);\n }\n });\n } else {\n callback(null, true);\n }\n });\n }\n });\n }\n });\n } catch (err) {\n callback(err, null);\n }\n}\nvar decryptFile = function(inputFileName, outputFileName, deleteOriginal, alphabet, key, callback) {\n try {\n replaceAlphabetForFile(alphabet, function(err, replacedAlphabet) {\n if (err) {\n callback(err, null);\n } else {\n replaceKey(replacedAlphabet, key, function(err, replacedKey) {\n if (err) {\n callback(err, null);\n } else {\n var inputFileStream = fs.createReadStream(inputFileName);\n var outputFileStream = fs.createWriteStream(outputFileName);\n inputFileStream.setEncoding(\"hex\");\n inputFileStream.on(\"data\", function(readData) {\n decrypt(readData.toUpperCase(), replacedAlphabet, replacedKey, function(err, decryptedText) {\n outputFileStream.write(Line truncated
|
||||
"const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nvar getHashOfTextSync = function(text) {\n return crypto.createHash(\"whirlpool\").update(text).digest(\"hex\");\n}\nvar getHashOfFileSync = function(fileName) {\n var file = fs.readFileSync(fileName);\n return crypto.createHash(\"whirlpool\").update(file).digest(\"hex\");\n}\nvar getHashOfText = function(text, callback) {\n try {\n callback(null, crypto.createHash(\"whirlpool\").update(text).digest(\"hex\"));\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfFile = function(fileName, callback) {\n try {\n var stream = fs.createReadStream(fileName);\n var whirlpoolHelper = crypto.createHash(\"whirlpool\");\n whirlpoolHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n whirlpoolHelper.end();\n callback(null, whirlpoolHelper.read());\n });\n stream.pipe(whirlpoolHelper);\n } catch (err) {\n callback(err, null);\n }\n}\nvar getHashOfTextWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n resolve(crypto.createHash(\"whirlpool\").update(text).digest(\"hex\"));\n } catch (err) {\n reject(err);\n }\n });\n}\nvar getHashOfFileWithPromise = function(fileName) {\n return new Promise(function(resolve, reject) {\n try {\n var stream = fs.createReadStream(fileName);\n var whirlpoolHelper = crypto.createHash(\"whirlpool\");\n whirlpoolHelper.setEncoding(\"hex\");\n stream.on(\"end\", function() {\n whirlpoolHelper.end();\n resolve(whirlpoolHelper.read());\n });\n stream.pipe(whirlpoolHelper);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOneFunction = function(options) {\n var type = options.type;\n if (options.callback) {\n if (type == \"file\") {\n getHashOfFile(options.fileName, options.callback);\n } else {\n getHashOfText(options.text, options.callback);\n }\n } else if (options.promise === true) {\n if (type == \"file\") {\n return getHashOfFileWithPromise(options.fileName);\n } else {\n return getHashOfTextWithPromise(options.text);\n }\n } else {\n if (type == \"file\") {\n return getHashOfFileSync(options.fileName);\n } else {\n return getHashOfTextSync(options.text);\n }\n }\n}\n\nmodule.exports = allInOneFunction;\nmodule.exports.getHashOfTextSync = getHashOfTextSync;\nmodule.exports.getHashOfFileSync = getHashOfFileSync;\nmodule.exports.getHashOfText = getHashOfText;\nmodule.exports.getHashOfFile = getHashOfFile;\nmodule.exports.getHashOfTextWithPromise = getHashOfTextWithPromise;\nmodule.exports.getHashOfFileWithPromise = getHashOfFileWithPromise;\n",
|
||||
"const md4 = require(\"./algorithms/md4\");\nconst md5 = require(\"./algorithms/md5\");\nconst sha1 = require(\"./algorithms/sha1\");\nconst sha2 = require(\"./algorithms/sha2\");\nconst sha3 = require(\"./algorithms/sha3\");\nconst keccak = require(\"./algorithms/keccak\");\nconst shake = require(\"./algorithms/shake\");\nconst whirlpool = require(\"./algorithms/whirlpool\");\nconst ripemd = require(\"./algorithms/ripemd\");\nconst ripemd160 = require(\"./algorithms/ripemd160\");\nconst dss1 = require(\"./algorithms/dss1\");\nconst polybius = require(\"./algorithms/polybius\");\nconst atbash = require(\"./algorithms/atbash\");\nconst mixedAlphabet = require(\"./algorithms/mixedAlphabet\");\nconst caesar = require(\"./algorithms/caesar\");\nconst affine = require(\"./algorithms/affine\");\nconst vigenere = require(\"./algorithms/vigenere\");\nconst playfair = require(\"./algorithms/playfair\");\nconst vernam = require(\"./algorithms/vernam\");\nconst bifid = require(\"./algorithms/bifid\");\nconst permutation = require(\"./algorithms/permutation\");\nconst cast5 = require(\"./algorithms/cast5\");\nconst rc2 = require(\"./algorithms/rc2\");\nconst seed = require(\"./algorithms/seed\");\nconst des = require(\"./algorithms/des\");\nconst tripleDes = require(\"./algorithms/tripleDes\");\nconst blowfish = require(\"./algorithms/blowfish\");\nconst aes = require(\"./algorithms/aes\");\n\nmodule.exports.md4 = md4;\nmodule.exports.md5 = md5;\nmodule.exports.sha1 = sha1;\nmodule.exports.sha2 = sha2;\nmodule.exports.sha3 = sha3;\nmodule.exports.keccak = keccak;\nmodule.exports.shake = shake;\nmodule.exports.whirlpool = whirlpool;\nmodule.exports.ripemd = ripemd;\nmodule.exports.ripemd160 = ripemd160;\nmodule.exports.dss1 = dss1;\nmodule.exports.polybius = polybius;\nmodule.exports.atbash = atbash;\nmodule.exports.mixedAlphabet = mixedAlphabet;\nmodule.exports.caesar = caesar;\nmodule.exports.affine = affine;\nmodule.exports.vigenere = vigenere;\nmodule.exports.playfair = playfair;\nmodule.exports.vernam = vernam;\nmodule.exports.bifid = bifid;\nmodule.exports.permutation = permutation;\nmodule.exports.cast5 = cast5;\nmodule.exports.rc2 = rc2;\nmodule.exports.seed = seed;\nmodule.exports.des = des;\nmodule.exports.tripleDes = tripleDes;\nmodule.exports.blowfish = blowfish;\nmodule.exports.aes = aes;\n",
|
||||
"const md4 = require(\"./algorithms/md4\");\nconst md5 = require(\"./algorithms/md5\");\nconst sha1 = require(\"./algorithms/sha1\");\nconst sha2 = require(\"./algorithms/sha2\");\nconst sha3 = require(\"./algorithms/sha3\");\nconst keccak = require(\"./algorithms/keccak\");\nconst shake = require(\"./algorithms/shake\");\nconst whirlpool = require(\"./algorithms/whirlpool\");\nconst ripemd = require(\"./algorithms/ripemd\");\nconst ripemd160 = require(\"./algorithms/ripemd160\");\nconst dss1 = require(\"./algorithms/dss1\");\nconst mdc2 = require(\"./algorithms/mdc2\");\nconst polybius = require(\"./algorithms/polybius\");\nconst atbash = require(\"./algorithms/atbash\");\nconst mixedAlphabet = require(\"./algorithms/mixedAlphabet\");\nconst caesar = require(\"./algorithms/caesar\");\nconst affine = require(\"./algorithms/affine\");\nconst vigenere = require(\"./algorithms/vigenere\");\nconst playfair = require(\"./algorithms/playfair\");\nconst vernam = require(\"./algorithms/vernam\");\nconst bifid = require(\"./algorithms/bifid\");\nconst permutation = require(\"./algorithms/permutation\");\nconst cast5 = require(\"./algorithms/cast5\");\nconst rc2 = require(\"./algorithms/rc2\");\nconst seed = require(\"./algorithms/seed\");\nconst des = require(\"./algorithms/des\");\nconst tripleDes = require(\"./algorithms/tripleDes\");\nconst blowfish = require(\"./algorithms/blowfish\");\nconst aes = require(\"./algorithms/aes\");\nconst camellia = require(\"./algorithms/camellia\");\nconst rsa = require(\"./algorithms/rsa\");\n\nmodule.exports.md4 = md4;\nmodule.exports.md5 = md5;\nmodule.exports.sha1 = sha1;\nmodule.exports.sha2 = sha2;\nmodule.exports.sha3 = sha3;\nmodule.exports.keccak = keccak;\nmodule.exports.shake = shake;\nmodule.exports.whirlpool = whirlpool;\nmodule.exports.ripemd = ripemd;\nmodule.exports.ripemd160 = ripemd160;\nmodule.exports.dss1 = dss1;\nmodule.exports.mdc2 = mdc2;\nmodule.exports.polybius = polybius;\nmodule.exports.atbash = atbash;\nmodule.exports.mixedAlphabet = mixedAlphabet;\nmodule.exports.caesar = caesar;\nmodule.exports.affine = affine;\nmodule.exports.vigenere = vigenere;\nmodule.exports.playfair = playfair;\nmodule.exports.vernam = vernam;\nmodule.exports.bifid = bifid;\nmodule.exports.permutation = permutation;\nmodule.exports.cast5 = cast5;\nmodule.exports.rc2 = rc2;\nmodule.exports.seed = seed;\nmodule.exports.des = des;\nmodule.exports.tripleDes = tripleDes;\nmodule.exports.blowfish = blowfish;\nmodule.exports.aes = aes;\nmodule.exports.camellia = camellia;\nmodule.exports.rsa = rsa;\n",
|
||||
"/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {Line truncated
|
||||
"var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n",
|
||||
"var hash = require('../hash');\nvar utils = hash.utils;\nvar assert = utils.assert;\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n",
|
||||
@@ -656,8 +709,8 @@
|
||||
"var utils = exports;\nvar inherits = require('inherits');\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nutils.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nutils.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nutils.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nutils.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nutils.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nutils.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nutils.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nutils.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nutils.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nutils.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nutils.sum32_5 = sum32_5;\n\nfunction assert(cond, msg) {\n if (!cond)\n throw new Error(msg || 'Assertion failed');\n}\nutils.assert = assert;\n\nutils.inherits = inherits;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n};\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n};\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n};\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n};\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;Line truncated
|
||||
"/*!!\n * Hasher <http://github.com/millermedeiros/hasher>\n * @author Miller Medeiros\n * @version 1.2.0 (2013/11/11 03:18 PM)\n * Released under the MIT License\n */\n\n;(function () {\nvar factory = function(signals){\n\n/*jshint white:false*/\n/*global signals:false, window:false*/\n\n/**\n * Hasher\n * @namespace History Manager for rich-media applications.\n * @name hasher\n */\nvar hasher = (function(window){\n\n //--------------------------------------------------------------------------------------\n // Private Vars\n //--------------------------------------------------------------------------------------\n\n var\n\n // frequency that it will check hash value on IE 6-7 since it doesn't\n // support the hashchange event\n POOL_INTERVAL = 25,\n\n // local storage for brevity and better compression --------------------------------\n\n document = window.document,\n history = window.history,\n Signal = signals.Signal,\n\n // local vars ----------------------------------------------------------------------\n\n hasher,\n _hash,\n _checkInterval,\n _isActive,\n _frame, //iframe used for legacy IE (6-7)\n _checkHistory,\n _hashValRegexp = /#(.*)$/,\n _baseUrlRegexp = /(\\?.*)|(\\#.*)/,\n _hashRegexp = /^\\#/,\n\n // sniffing/feature detection -------------------------------------------------------\n\n //hack based on this: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html\n _isIE = (!+\"\\v1\"),\n // hashchange is supported by FF3.6+, IE8+, Chrome 5+, Safari 5+ but\n // feature detection fails on IE compatibility mode, so we need to\n // check documentMode\n _isHashChangeSupported = ('onhashchange' in window) && document.documentMode !== 7,\n //check if is IE6-7 since hash change is only supported on IE8+ and\n //changing hash value on IE6-7 doesn't generate history record.\n _isLegacyIE = _isIE && !_isHashChangeSupported,\n _isLocal = (location.protocol === 'file:');\n\n\n //--------------------------------------------------------------------------------------\n // Private Methods\n //--------------------------------------------------------------------------------------\n\n function _escapeRegExp(str){\n return String(str || '').replace(/\\W/g, \"\\\\$&\");\n }\n\n function _trimHash(hash){\n if (!hash) return '';\n var regexp = new RegExp('^' + _escapeRegExp(hasher.prependHash) + '|' + _escapeRegExp(hasher.appendHash) + '$', 'g');\n return hash.replace(regexp, '');\n }\n\n function _getWindowHash(){\n //parsed full URL instead of getting window.location.hash because Firefox decode hash value (and all the other browsers don't)\n //also because of IE8 bug with hash query in local file [issue #6]\n var result = _hashValRegexp.exec( hasher.getURL() );\n var path = (result && result[1]) || '';\n try {\n return hasher.raw? path : decodeURIComponent(path);\n } catch (e) {\n // in case user did not set `hasher.raw` and decodeURIComponent\n // throws an error (see #57)\n return path;\n }\n }\n\n function _getFrameHash(){\n return (_frame)? _frame.contentWindow.frameHash : null;\n }\n\n function _createFrame(){\n _frame = document.createElement('iframe');\n _frame.src = 'about:blank';\n _frame.style.display = 'none';\n document.body.appendChild(_frame);\n }\n\n function _updateFrame(){\n if(_frame && _hash !== _getFrameHash()){\n var frameDoc = _frame.contentWindow.document;\n frameDoc.open();\n //update iframe content to force new history record.\n //based on Really Simple History, SWFAddress and YUI.history.\n frameDoc.write('<html><head><title>' + document.title + '</title><script type=\"text/javascript\">var frameHash=\"' + _hash + '\";</script></head><body> </body></html>');\n frameDoc.close();\n }\n }\n\n function _registerChange(newHash, isReplace){\n if(_hash !== newHash){\n var oldHash = _hash;\n _hash = newHash; //should come before event dispatch to make sure user can get proper value inside event handler\n if(_isLegacyIE){\n if(!isReplace){\n _updateFrame();\n } else {\n _frame.contentWindow.frameHash = newHash;\n }\n }\n hasher.changed.dispatch(_trimHash(newHash), _trimHash(oldHash));\n }\n }\n\n if (_isLegacyIE) {\n /**\n * @private\n */\n _checkHistory = function(){\n var windowHash = _getWindowHash(),\n frameHash = _getFrameHash();\n if(frameHash !== _hash &&Line truncated
|
||||
"var toBinarySync = function(hex) {\n var binaryForm = \"\";\n for (var i = 0; i < hex.length; i++) {\n var basicBinary = parseInt(hex[i], 16).toString(2);\n while (basicBinary.length < 4) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryForm += basicBinary;\n }\n return binaryForm;\n}\nvar toHexSync = function(binary) {\n var hexForm = \"\";\n var splittedBinary = binary.match(/.{1,4}/g);\n for (var i = 0; i < splittedBinary.length; i++) {\n hexForm += parseInt(splittedBinary[i], 2).toString(16);\n }\n return hexForm.toUpperCase();\n}\nvar toBinary = function(hex, callback) {\n try {\n var binaryForm = \"\";\n for (var i = 0; i < hex.length; i++) {\n var basicBinary = parseInt(hex[i], 16).toString(2);\n while (basicBinary.length < 4) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryForm += basicBinary;\n }\n callback(null, binaryForm);\n } catch (err) {\n callback(err, null);\n }\n}\nvar toHex = function(binary, callback) {\n try {\n var hexForm = \"\";\n var splittedBinary = binary.match(/.{1,4}/g);\n for (var i = 0; i < splittedBinary.length; i++) {\n hexForm += parseInt(splittedBinary[i], 2).toString(16);\n }\n callback(null, hexForm.toUpperCase());\n } catch (err) {\n callback(err, null);\n }\n}\nvar toBinaryWithPromise = function(hex) {\n return new Promise(function(resolve, reject) {\n try {\n var binaryForm = \"\";\n for (var i = 0; i < hex.length; i++) {\n var basicBinary = parseInt(hex[i], 16).toString(2);\n while (basicBinary.length < 4) {\n basicBinary = \"0\" + basicBinary;\n }\n binaryForm += basicBinary;\n }\n resolve(binaryForm);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar toHexWithPromise = function(binary) {\n return new Promise(function(resolve, reject) {\n try {\n var hexForm = \"\";\n var splittedBinary = binary.match(/.{1,4}/g);\n for (var i = 0; i < splittedBinary.length; i++) {\n hexForm += parseInt(splittedBinary[i], 2).toString(16);\n }\n resolve(hexForm.toUpperCase());\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOne = function(options) {\n var to = options.to;\n if (options.callback) {\n if (to == \"hex\") {\n toHex(options.data, options.callback);\n } else if (to == \"binary\") {\n toBinary(options.data, options.callback);\n }\n } else if (options.promise === true) {\n if (to == \"hex\") {\n return toHexWithPromise(options.data);\n } else if (to == \"binary\") {\n return toBinaryWithPromise(options.data);\n }\n } else {\n if (to == \"hex\") {\n return toHexSync(options.data);\n } else if (to == \"binary\") {\n return toBinarySync(options.data);\n }\n }\n}\n\nmodule.exports = allInOne;\nmodule.exports.toBinarySync = toBinarySync;\nmodule.exports.toHexSync = toHexSync;\nmodule.exports.toBinary = toBinary;\nmodule.exports.toHex = toHex;\nmodule.exports.toBinaryWithPromise = toBinaryWithPromise;\nmodule.exports.toHexWithPromise = toHexWithPromise;\n",
|
||||
"/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n // Find the global object for export to both the browser and web workers.\n var globalObject = typeof window === 'object' && window ||\n typeof self === 'object' && self;\n\n // Setup highlight.js for different environments. First is Node.js or\n // CommonJS.\n if(typeof exports !== 'undefined') {\n factory(exports);\n } else if(globalObject) {\n // Export hljs globally even when using AMD for cases when this script\n // is loaded with others that may still expect a global hljs.\n globalObject.hljs = factory({});\n\n // Finally register the global hljs with AMD.\n if(typeof define === 'function' && define.amd) {\n define([], function() {\n return globalObject.hljs;\n });\n }\n }\n\n}(function(hljs) {\n // Convenience variables for build-in objects\n var ArrayProto = [],\n objectKeys = Object.keys;\n\n // Global internal variables used within the highlight.js library.\n var languages = {},\n aliases = {};\n\n // Regular expressions used throughout the highlight.js library.\n var noHighlightRe = /^(no-?highlight|plain|text)$/i,\n languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n fixMarkupRe = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n var spanEndTag = '</span>';\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n var options = {\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: undefined\n };\n\n // Object map that is used to escape some common HTML characters.\n var escapeRegexMap = {\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n /* Utility functions */\n\n function escape(value) {\n return value.replace(/[&<>]/gm, function(character) {\n return escapeRegexMap[character];\n });\n }\n\n function tag(node) {\n return node.nodeName.toLowerCase();\n }\n\n function testRe(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n }\n\n function isNotHighlighted(language) {\n return noHighlightRe.test(language);\n }\n\n function blockLanguage(block) {\n var i, match, length, _class;\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n match = languagePrefixRe.exec(classes);\n if (match) {\n return getLanguage(match[1]) ? match[1] : 'no-highlight';\n }\n\n classes = classes.split(/\\s+/);\n\n for (i = 0, length = classes.length; i < length; i++) {\n _class = classes[i]\n\n if (isNotHighlighted(_class) || getLanguage(_class)) {\n return _class;\n }\n }\n }\n\n function inherit(parent, obj) {\n var key;\n var result = {};\n\n for (key in parent)\n result[key] = parent[key];\n if (obj)\n for (key in obj)\n result[key] = obj[key];\n return result;\n }\n\n /* Stream merging */\n\n function nodeStream(node) {\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3)\n offset += child.nodeValue.length;\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n }\n\n function mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n Line truncated
|
||||
"var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('informLine truncated
|
||||
"/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n // Find the global object for export to both the browser and web workers.\n var globalObject = typeof window === 'object' && window ||\n typeof self === 'object' && self;\n\n // Setup highlight.js for different environments. First is Node.js or\n // CommonJS.\n if(typeof exports !== 'undefined') {\n factory(exports);\n } else if(globalObject) {\n // Export hljs globally even when using AMD for cases when this script\n // is loaded with others that may still expect a global hljs.\n globalObject.hljs = factory({});\n\n // Finally register the global hljs with AMD.\n if(typeof define === 'function' && define.amd) {\n define([], function() {\n return globalObject.hljs;\n });\n }\n }\n\n}(function(hljs) {\n // Convenience variables for build-in objects\n var ArrayProto = [],\n objectKeys = Object.keys;\n\n // Global internal variables used within the highlight.js library.\n var languages = {},\n aliases = {};\n\n // Regular expressions used throughout the highlight.js library.\n var noHighlightRe = /^(no-?highlight|plain|text)$/i,\n languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n fixMarkupRe = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n var spanEndTag = '</span>';\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n var options = {\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: undefined\n };\n\n // Object map that is used to escape some common HTML characters.\n var escapeRegexMap = {\n '&': '&',\n '<': '<',\n '>': '>'\n };\n\n /* Utility functions */\n\n function escape(value) {\n return value.replace(/[&<>]/gm, function(character) {\n return escapeRegexMap[character];\n });\n }\n\n function tag(node) {\n return node.nodeName.toLowerCase();\n }\n\n function testRe(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n }\n\n function isNotHighlighted(language) {\n return noHighlightRe.test(language);\n }\n\n function blockLanguage(block) {\n var i, match, length, _class;\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n match = languagePrefixRe.exec(classes);\n if (match) {\n return getLanguage(match[1]) ? match[1] : 'no-highlight';\n }\n\n classes = classes.split(/\\s+/);\n\n for (i = 0, length = classes.length; i < length; i++) {\n _class = classes[i]\n\n if (isNotHighlighted(_class) || getLanguage(_class)) {\n return _class;\n }\n }\n }\n\n function inherit(parent) { // inherit(parent, override_obj, override_obj, ...)\n var key;\n var result = {};\n var objects = Array.prototype.slice.call(arguments, 1);\n\n for (key in parent)\n result[key] = parent[key];\n objects.forEach(function(obj) {\n for (key in obj)\n result[key] = obj[key];\n });\n return result;\n }\n\n /* Stream merging */\n\n function nodeStream(node) {\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3)\n offset += child.nodeValue.length;\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n }\n\n function mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n returnLine truncated
|
||||
"var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', rLine truncated
|
||||
"module.exports = function(hljs){\n var IDENT_RE_RU = '[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*';\n var OneS_KEYWORDS = 'возврат дата для если и или иначе иначеесли исключение конецесли ' +\n 'конецпопытки конецпроцедуры конецфункции конеццикла константа не перейти перем ' +\n 'перечисление по пока попытка прервать продолжить процедура строка тогда фс функция цикл ' +\n 'число экспорт';\n var OneS_BUILT_IN = 'ansitooem oemtoansi ввестивидсубконто ввестидату ввестизначение ' +\n 'ввестиперечисление ввестипериод ввестиплансчетов ввестистроку ввестичисло вопрос ' +\n 'восстановитьзначение врег выбранныйплансчетов вызватьисключение датагод датамесяц ' +\n 'датачисло добавитьмесяц завершитьработусистемы заголовоксистемы записьжурналарегистрации ' +\n 'запуститьприложение зафиксироватьтранзакцию значениевстроку значениевстрокувнутр ' +\n 'значениевфайл значениеизстроки значениеизстрокивнутр значениеизфайла имякомпьютера ' +\n 'имяпользователя каталогвременныхфайлов каталогиб каталогпользователя каталогпрограммы ' +\n 'кодсимв командасистемы конгода конецпериодаби конецрассчитанногопериодаби ' +\n 'конецстандартногоинтервала конквартала конмесяца коннедели лев лог лог10 макс ' +\n 'максимальноеколичествосубконто мин монопольныйрежим названиеинтерфейса названиенабораправ ' +\n 'назначитьвид назначитьсчет найти найтипомеченныенаудаление найтиссылки началопериодаби ' +\n 'началостандартногоинтервала начатьтранзакцию начгода начквартала начмесяца начнедели ' +\n 'номерднягода номерднянедели номернеделигода нрег обработкаожидания окр описаниеошибки ' +\n 'основнойжурналрасчетов основнойплансчетов основнойязык открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьокносообщений периодстр полноеимяпользователя получитьвремята ' +\n 'получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта ' +\n 'получитьпустоезначение получитьта прав праводоступа предупреждение префиксавтонумерации ' +\n 'пустаястрока пустоезначение рабочаядаттьпустоезначение рабочаядата разделительстраниц ' +\n 'разделительстрок разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо сигнал симв символтабуляции создатьобъект сокрл сокрлп сокрп ' +\n 'сообщить состояние сохранитьзначение сред статусвозврата стрдлина стрзаменить ' +\n 'стрколичествострок стрполучитьстроку стрчисловхождений сформироватьпозициюдокумента ' +\n 'счетпокоду текущаядата текущеевремя типзначения типзначениястр удалитьобъекты ' +\n 'установитьтана установитьтапо фиксшаблон формат цел шаблон';\n var DQUOTE = {begin: '\"\"'};\n var STR_START = {\n className: 'string',\n begin: '\"', end: '\"|$',\n contains: [DQUOTE]\n };\n var STR_CONT = {\n className: 'string',\n begin: '\\\\|', end: '\"|$',\n contains: [DQUOTE]\n };\n\n return {\n case_insensitive: true,\n lexemes: IDENT_RE_RU,\n keywords: {keyword: OneS_KEYWORDS, built_in: OneS_BUILLine truncated
|
||||
"module.exports = function(hljs) {\n var regexes = {\n ruleDeclaration: \"^[a-zA-Z][a-zA-Z0-9-]*\",\n unexpectedChars: \"[!@#$^&',?+~`|:]\"\n };\n\n var keywords = [\n \"ALPHA\",\n \"BIT\",\n \"CHAR\",\n \"CR\",\n \"CRLF\",\n \"CTL\",\n \"DIGIT\",\n \"DQUOTE\",\n \"HEXDIG\",\n \"HTAB\",\n \"LF\",\n \"LWSP\",\n \"OCTET\",\n \"SP\",\n \"VCHAR\",\n \"WSP\"\n ];\n\n var commentMode = hljs.COMMENT(\";\", \"$\");\n\n var terminalBinaryMode = {\n className: \"symbol\",\n begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n };\n\n var terminalDecimalMode = {\n className: \"symbol\",\n begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n };\n\n var terminalHexadecimalMode = {\n className: \"symbol\",\n begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/,\n };\n\n var caseSensitivityIndicatorMode = {\n className: \"symbol\",\n begin: /%[si]/\n };\n\n var ruleDeclarationMode = {\n begin: regexes.ruleDeclaration + '\\\\s*=',\n returnBegin: true,\n end: /=/,\n relevance: 0,\n contains: [{className: \"attribute\", begin: regexes.ruleDeclaration}]\n };\n\n return {\n illegal: regexes.unexpectedChars,\n keywords: keywords.join(\" \"),\n contains: [\n ruleDeclarationMode,\n commentMode,\n terminalBinaryMode,\n terminalDecimalMode,\n terminalHexadecimalMode,\n caseSensitivityIndicatorMode,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n contains: [\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // Other numbers\n {\n className: 'number',\n begin: '\\\\b\\\\d+\\\\b',\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n illegal: '\\\\n',\n relevance: 10\n },\n // Dates\n {\n className: 'string',\n begin: /\\[/, end: /\\]/,\n illegal: '\\\\n'\n },\n // Strings\n {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n };\n};",
|
||||
@@ -688,7 +741,7 @@
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger super yield import export from as default await ' +\n // Coffee keywords\n 'then unless until loop of by when and or is isnt not',\n literal:\n // JS literals\n 'true false null undefined ' +\n // Coffee literals\n 'yes no on off',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '///', end: '///',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n begin: '//[gim]*',\n relevance: 0\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE // relevance booster\n },\n {\n subLanguage: 'javascript',\n excludeBegin: true, excludeEnd: true,\n variants: [\n {\n begin: '```', end: '```',\n },\n {\n begin: '`', end: '`',\n }\n ]\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['coffee', 'cson', 'iced'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('###', '###'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n // anonymous function start\n begin: /[:\\(,=]\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n '_ as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n 'match mod Prop return Set then Type using where with ' +\n 'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n 'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n 'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n 'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n 'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent' +\n 'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n 'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n 'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n 'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n 'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n 'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n 'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n 'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n 'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n 'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n 'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n 'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n 'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n 'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n 'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n 'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n 'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n 'Verbose Visibility where with',\n built_in:\n 'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n 'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n 'classical_left classical_right clear clearbody cofix compare compute ' +\n 'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n 'cycle decide decompose dependent destruct destruction dintuition ' +\n 'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n 'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n 'einjection eleft elim elimtype enough equality erewrite eright ' +\n 'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n 'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n 'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n 'induction injection instantiate intro intro_pattern intros intuition ' +\n 'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n 'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n 'record red refine reflexivity remember rename repeat replace revert ' +\n 'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n 'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n 'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n 'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n 'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n 'unfold unify until using vm_compute with'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n hljs.C_NUMBER_MODE,\n {\n className: 'type',\n excludeBegin: true,\n begin: '\\\\|\\\\s*',\n end: '\\\\w+'\n },\n {begin: /[-=]>/} // relevance booster\n ]\n };\n};",
|
||||
"module.exports = function cos (hljs) {\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{ // escaped\n begin: \"\\\"\\\"\",\n relevance: 0\n }]\n }\n ]\n };\n\n var NUMBERS = {\n className: \"number\",\n begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n relevance: 0\n };\n\n var COS_KEYWORDS =\n 'property parameter class classmethod clientmethod extends as break ' +\n 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n 'zsync ascii';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I'll just leave this here.\n\n //\"$bit\", \"$bitcount\",\n //\"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n //\"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n //\"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n //\"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n //\"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n //\"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n //\"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n //\"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n //\"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n //\"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n //\"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n //\"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n //\"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n //\"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n //\"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n //\"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n //\"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n //\"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n //\"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n //\"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n //\"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n //\"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n //\"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n //\"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n //\"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n //\"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n //\"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n //\"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n //\"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n //\"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n //\"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n //\"$ztrap\", \"$zversion\"\n\n return {\n case_insensitive: true,\n aliases: [\"cos\", \"cls\"],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"comment\",\n begin: /;/, end: \"$\",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: \"built_in\",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: \"built_in\",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: \"built_in\",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: \"symbol\",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: \"keyword\",\n begin: /##class|##super|#define|#dim/\n },\n\n // sub-languages: arLine truncated
|
||||
"module.exports = function(hljs) {\n var CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U)?L?\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '(u8?|U)?R\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/, end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: '<', end: '>',\n illegal: '\\\\n',\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n var CPP_KEYWORDS = {\n keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using class asm case typeid ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignof constexpr decltype ' +\n 'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return',\n built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n literal: 'true false nullptr NULL'\n };\n\n var EXPRESSION_CONTAINS = [\n CPP_PRIMITIVE_TYPES,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n return {\n aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n contains: EXPRESSION_CONTAINS.concat([\n PREPROCESSOR,\n {\n begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n keywords: CPP_KEYWORDS,\n contains: ['self', CPP_PRIMITIVE_TYPES]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {begin: /=/, end: /;/},\n {begin: /\\(/, end: /\\)/},\n {beginKeywords: 'new throw return else', end: /;/}\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat(['self']),\n relevance: 0\n }\n ]),\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&]/,\n contains: [\n Line truncated
|
||||
"module.exports = function(hljs) {\n var CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U)?L?\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '(u8?|U)?R\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/, end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: /<[^\\n>]*>/, end: /$/,\n illegal: '\\\\n',\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n var CPP_KEYWORDS = {\n keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using class asm case typeid ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignof constexpr decltype ' +\n 'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return',\n built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n literal: 'true false nullptr NULL'\n };\n\n var EXPRESSION_CONTAINS = [\n CPP_PRIMITIVE_TYPES,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n return {\n aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n contains: EXPRESSION_CONTAINS.concat([\n PREPROCESSOR,\n {\n begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n keywords: CPP_KEYWORDS,\n contains: ['self', CPP_PRIMITIVE_TYPES]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {begin: /=/, end: /;/},\n {begin: /\\(/, end: /\\)/},\n {beginKeywords: 'new throw return else', end: /;/}\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat(['self']),\n relevance: 0\n }\n ]),\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&]/,\n contaLine truncated
|
||||
"module.exports = function(hljs) {\n var RESOURCES = 'primitive rsc_template';\n\n var COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n 'rsc_ticket acl_target acl_group user role ' +\n 'tag xml';\n\n var PROPERTY_SETS = 'property rsc_defaults op_defaults';\n\n var KEYWORDS = 'params meta operations op rule attributes utilization';\n\n var OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n 'ref reference attribute type xpath version and or lt gt tag ' +\n 'lte gte eq ne \\\\';\n\n var TYPES = 'number string';\n\n var LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n return {\n aliases: ['crm', 'pcmk'],\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: 'node',\n starts: {\n end: '\\\\s*([\\\\w_-]+:)?',\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n }\n }\n },\n {\n beginKeywords: RESOURCES,\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n starts: {\n end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n }\n }\n },\n {\n begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n keywords: COMMANDS,\n starts: {\n className: 'title',\n end: '[\\\\$\\\\w_][\\\\w_-]*'\n }\n },\n {\n beginKeywords: PROPERTY_SETS,\n starts: {\n className: 'title',\n end: '\\\\s*([\\\\w_-]+:)?'\n }\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n relevance: 0\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '[-]?(infinity|inf)',\n relevance: 0\n },\n {\n className: 'attr',\n begin: /([A-Za-z\\$_\\#][\\w_-]+)=/,\n relevance: 0\n },\n {\n className: 'tag',\n begin: '</?',\n end: '/?>',\n relevance: 0\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var NUM_SUFFIX = '(_[uif](8|16|32|64))?';\n var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n var RE_STARTER = '!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|' +\n '>>|>|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\][=?]?';\n var CRYSTAL_KEYWORDS = {\n keyword:\n 'abstract alias as asm begin break case class def do else elsif end ensure enum extend for fun if ifdef ' +\n 'include instance_sizeof is_a? lib macro module next of out pointerof private protected rescue responds_to? ' +\n 'return require self sizeof struct super then type typeof union unless until when while with yield ' +\n '__DIR__ __FILE__ __LINE__',\n literal: 'false nil true'\n };\n var SUBST = {\n className: 'subst',\n begin: '#{', end: '}',\n keywords: CRYSTAL_KEYWORDS\n };\n var EXPANSION = {\n className: 'template-variable',\n variants: [\n {begin: '\\\\{\\\\{', end: '\\\\}\\\\}'},\n {begin: '\\\\{%', end: '%\\\\}'}\n ],\n keywords: CRYSTAL_KEYWORDS\n };\n\n function recursiveParen(begin, end) {\n var\n contains = [{begin: begin, end: end}];\n contains[0].contains = contains;\n return contains;\n }\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%w?\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%w?\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%w?{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%w?<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%w?/', end: '/'},\n {begin: '%w?%', end: '%'},\n {begin: '%w?-', end: '-'},\n {begin: '%w?\\\\|', end: '\\\\|'},\n ],\n relevance: 0,\n };\n var REGEXP = {\n begin: '(' + RE_STARTER + ')\\\\s*',\n contains: [\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '//[a-z]*', relevance: 0},\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ]\n }\n ],\n relevance: 0\n };\n var REGEXP2 = {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ],\n relevance: 0\n };\n var ATTRIBUTE = {\n className: 'meta',\n begin: '@\\\\[', end: '\\\\]',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'})\n ]\n };\n var CRYSTAL_DEFAULT_CONTAINS = [\n EXPANSION,\n STRING,\n REGEXP,\n REGEXP2,\n ATTRIBUTE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class module struct', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {begin: '<'} // relevance booster for inheritance\n ]\n },\n {\n className: 'class',\n beginKeywords: 'lib enum union', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n ],\n relevance: 10\n },\n {\n className: 'function',\n beginKeywords: 'def', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'fun macro', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ],\n relevance: 5\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE +Line truncated
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Normal keywords.\n 'abstract as base bool break byte case catch char checked const continue decimal ' +\n 'default delegate do double else enum event explicit extern finally fixed float ' +\n 'for foreach goto if implicit in int interface internal is lock long ' +\n 'object operator out override params private protected public readonly ref sbyte ' +\n 'sealed short sizeof stackalloc static string struct switch this try typeof ' +\n 'uint ulong unchecked unsafe ushort using virtual void volatile while ' +\n 'nameof ' +\n // Contextual keywords.\n 'add alias ascending async await by descending dynamic equals from get global group into join ' +\n 'let on orderby partial remove select set value var where yield',\n literal:\n 'null false true'\n };\n\n var VERBATIM_STRING = {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n };\n var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\\n/});\n var SUBST = {\n className: 'subst',\n begin: '{', end: '}',\n keywords: KEYWORDS\n };\n var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\\n/});\n var INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/, end: '\"',\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]\n };\n var INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/, end: '\"',\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST]\n };\n var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST_NO_LF]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\\n/})\n ];\n var STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n return {\n aliases: ['csharp'],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///', relevance: 0\n },\n {\n begin: '<!--|-->'\n },\n {\n begin: '</?', end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'}\n },\n STRING,\n hljs.C_NUMBER_MODE,\n {\n beginKeywords: 'class interface', end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCLine truncated
|
||||
@@ -717,7 +770,7 @@
|
||||
"module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image'\n };\n return {\n case_insensitive: true,\n aliases: ['f90', 'f95'],\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n {\n className: 'number',\n Line truncated
|
||||
"module.exports = function(hljs) {\n var TYPEPARAM = {\n begin: '<', end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n ]\n };\n\n return {\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n {\n className: 'class',\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<', end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n hljs.C_NUMBER_MODE\n ]\n };\n};",
|
||||
"module.exports = function (hljs) {\n var KEYWORDS = {\n 'keyword':\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n 'literal': 'eps inf na',\n 'built-in':\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n };\n var SYMBOLS = {\n className: 'symbol',\n variants: [\n {begin: /\\=[lgenxc]=/},\n {begin: /\\$/},\n ]\n };\n var QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {begin: '\\'', end: '\\''},\n {begin: '\"', end: '\"'},\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n var ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n ],\n };\n var DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n relevance: 0\n },\n ],\n };\n\n return {\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+',\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT,\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT],\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z][a-z0-9_]+/,\n },\n PARAMS,\n SYMBOLS,\n ],\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS,\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuroLine truncated
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuroLine truncated
|
||||
"module.exports = function(hljs) {\n var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var GCODE_CLOSE_RE = '\\\\%';\n var GCODE_KEYWORDS =\n 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n 'EQ LT GT NE GE LE OR XOR';\n var GCODE_START = {\n className: 'meta',\n begin: '([O])([0-9]+)'\n };\n var GCODE_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(/\\(/, /\\)/),\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'name',\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'name',\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'attr',\n begin: '(VC|VS|#)',\n end: '(\\\\d+)'\n },\n {\n className: 'attr',\n begin: '(VZOFX|VZOFY|VZOFZ)'\n },\n {\n className: 'built_in',\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: 'N', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ];\n\n return {\n aliases: ['nc'],\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n // However, most prefer all uppercase and uppercase is customary.\n case_insensitive: true,\n lexemes: GCODE_IDENT_RE,\n keywords: GCODE_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: GCODE_CLOSE_RE\n },\n GCODE_START\n ].concat(GCODE_CODE)\n };\n};",
|
||||
"module.exports = function (hljs) {\n return {\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|', end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<', end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Statements\n 'break continue discard do else for if return while switch case default ' +\n // Qualifiers\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n type:\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n built_in:\n // Constants\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n 'gl_MaxVertexAtomicCounterBuffers Line truncated
|
||||
@@ -732,6 +785,7 @@
|
||||
"module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: /[\\w\\._]+/,\n keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n {\n // multi-line string\n className: 'string',\n begin: '{\"', end: '\"}',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n {\n // pre-processor\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n\n {\n // label\n className: 'symbol',\n begin: '^\\\\*(\\\\w+|@)'\n },\n\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\n\n var ATTR_ASSIGNMENT = {\n illegal: /\\}\\}/,\n begin: /[a-zA-Z0-9_]+=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr', begin: /[a-zA-Z0-9_]+/\n }\n ]\n };\n\n var SUB_EXPR = {\n illegal: /\\}\\}/,\n begin: /\\)/, end: /\\)/,\n contains: [\n {\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {built_in: BUILT_INS},\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE,\n ]\n }\n }\n ]\n };\n\n var TAG_INNARDS = {\n endsWithParent: true, relevance: 0,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE,\n ATTR_ASSIGNMENT,\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {'builtin-name': BUILT_INS},\n starts: TAG_INNARDS\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var VERSION = 'HTTP/[0-9\\\\.]+';\n return {\n aliases: ['https'],\n illegal: '\\\\S',\n contains: [\n {\n begin: '^' + VERSION, end: '$',\n contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\n },\n {\n begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\n contains: [\n {\n className: 'string',\n begin: ' ', end: ' ',\n excludeBegin: true, excludeEnd: true\n },\n {\n begin: VERSION\n },\n {\n className: 'keyword',\n begin: '[A-Z]+'\n }\n ]\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n illegal: '\\\\n|\\\\s|=',\n starts: {end: '$', relevance: 0}\n },\n {\n begin: '\\\\n\\\\n',\n starts: {subLanguage: [], endsWithParent: true}\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // keywords\n '!= % %= & &= * ** **= *= *map ' +\n '+ += , --build-class-- --import-- -= . / // //= ' +\n '/= < << <<= <= = > >= >> >>= ' +\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\n 'compress cond cons cons? continue count curry cut cycle dec ' +\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\n 'identity if if* if-not if-python2 import in inc input instance? ' +\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n aliases: ['hylang'],\n illegal: /\\S/,\n contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};",
|
||||
"module.exports = function(hljs) {\n var START_BRACKET = '\\\\[';\n var END_BRACKET = '\\\\]';\n return {\n aliases: ['i7'],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container ' +\n 'supporter backdrop door ' +\n // characteristic:\n 'scenery open closed locked inside gender ' +\n // verb:\n 'is are say understand ' +\n // misc keyword:\n 'kind of rule'\n },\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET, end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n //Rule name\n begin: '\\\\(This', end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET, end: END_BRACKET,\n contains: ['self']\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var STRING = {\n className: \"string\",\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: \"'''\", end: \"'''\",\n relevance: 10\n }, {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n }, {\n begin: '\"', end: '\"'\n }, {\n begin: \"'\", end: \"'\"\n }\n ]\n };\n return {\n aliases: ['toml'],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT(';', '$'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'section',\n begin: /^\\s*\\[+/, end: /\\]+/\n },\n {\n begin: /^[a-z0-9\\[\\]_-]+\\s*=\\s*/, end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: /[a-z0-9\\[\\]_-]+/\n },\n {\n begin: /=/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n },\n {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d\"][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n },\n STRING,\n {\n className: 'number',\n begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/\n },\n hljs.NUMBER_MODE\n ]\n }\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data ' +\n // IRPF90 special keywords\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n // IRPF90 special built_ins\n 'IRP_ALIGN irp_here'\n };\n return {\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),Line truncated
|
||||
@@ -739,16 +793,17 @@
|
||||
"module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var KEYWORDS = {\n keyword:\n 'in of if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await static ' +\n // ECMAScript 6 modules import\n 'import from as'\n ,\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Promise'\n };\n var EXPRESSIONS;\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ]\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['js', 'jsx'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n {\n className: 'meta',\n begin: /^#!/, end: /$/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // E4X / JSX\n begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n subLanguage: 'xml',\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n {\n begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true,\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n 'self'\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n hljs.METHOD_GUARD,\n { // ES6 class\n className: 'class',\n beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends'Line truncated
|
||||
"module.exports = function(hljs) {\n var LITERALS = {literal: 'true false null'};\n var TYPES = [\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ];\n var VALUE_CONTAINER = {\n end: ',', endsWithParent: true, excludeEnd: true,\n contains: TYPES,\n keywords: LITERALS\n };\n var OBJECT = {\n begin: '{', end: '}',\n contains: [\n {\n className: 'attr',\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE],\n illegal: '\\\\n',\n },\n hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n ],\n illegal: '\\\\S'\n };\n var ARRAY = {\n begin: '\\\\[', end: '\\\\]',\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n illegal: '\\\\S'\n };\n TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n return {\n contains: TYPES,\n keywords: LITERALS,\n illegal: '\\\\S'\n };\n};",
|
||||
"module.exports = function(hljs) {\n // Since there are numerous special names in Julia, it is too much trouble\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\n // built-ins) are automatically generated from Julia (v0.3.0 and v0.4.1)\n // itself through following scripts for each.\n\n var KEYWORDS = {\n // # keyword generator\n // println(\"in\")\n // for kw in Base.REPLCompletions.complete_keyword(\"\")\n // println(kw)\n // end\n keyword:\n 'in abstract baremodule begin bitstype break catch ccall const continue do else elseif end export ' +\n 'finally for function global if immutable import importall let local macro module quote return try type ' +\n 'typealias using while',\n\n // # literal generator\n // println(\"true\")\n // println(\"false\")\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // s = symbol(name)\n // v = eval(s)\n // if !isa(v, Function) &&\n // !isa(v, DataType) &&\n // !isa(v, IntrinsicFunction) &&\n // !issubtype(typeof(v), Tuple) &&\n // !isa(v, Union) &&\n // !isa(v, Module) &&\n // !isa(v, TypeConstructor) &&\n // !isa(v, TypeVar) &&\n // !isa(v, Colon)\n // println(name)\n // end\n // end\n // end\n literal:\n // v0.3\n 'true false ARGS CPU_CORES C_NULL DL_LOAD_PATH DevNull ENDIAN_BOM ENV I|0 Inf Inf16 Inf32 ' +\n 'InsertionSort JULIA_HOME LOAD_PATH MS_ASYNC MS_INVALIDATE MS_SYNC MergeSort NaN NaN16 NaN32 OS_NAME QuickSort ' +\n 'RTLD_DEEPBIND RTLD_FIRST RTLD_GLOBAL RTLD_LAZY RTLD_LOCAL RTLD_NODELETE RTLD_NOLOAD RTLD_NOW RoundDown ' +\n 'RoundFromZero RoundNearest RoundToZero RoundUp STDERR STDIN STDOUT VERSION WORD_SIZE catalan cglobal e|0 eu|0 ' +\n 'eulergamma golden im nothing pi γ π φ ' +\n // v0.4 (diff)\n 'Inf64 NaN64 RoundNearestTiesAway RoundNearestTiesUp ',\n\n // # built_in generator:\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(symbol(name))\n // if isa(v, DataType) || isa(v, TypeConstructor) || isa(v, TypeVar)\n // println(name)\n // end\n // end\n // end\n built_in:\n // v0.3\n 'ANY ASCIIString AbstractArray AbstractRNG AbstractSparseArray Any ArgumentError Array Associative Base64Pipe ' +\n 'Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError Box CFILE Cchar Cdouble Cfloat Char ' +\n 'CharString Cint Clong Clonglong ClusterManager Cmd Coff_t Colon Complex Complex128 Complex32 Complex64 ' +\n 'Condition Cptrdiff_t Cshort Csize_t Cssize_t Cuchar Cuint Culong Culonglong Cushort Cwchar_t DArray DataType ' +\n 'DenseArray Diagonal Dict DimensionMismatch DirectIndexString Display DivideError DomainError EOFError ' +\n 'EachLine Enumerate ErrorException Exception Expr Factorization FileMonitor FileOffset Filter Float16 Float32 ' +\n 'Float64 FloatRange FloatingPoint Function GetfieldNode GotoNode Hermitian IO IOBuffer IOStream IPv4 IPv6 ' +\n 'InexactError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException IntrinsicFunction KeyError ' +\n 'LabelNode LambdaStaticData LineNumberNode LoadError LocalProcess MIME MathConst MemoryError MersenneTwister ' +\n 'Method MethodError MethodTable Module NTuple NewvarNode Nothing Number ObjectIdDict OrdinalRange ' +\n 'OverflowError ParseError PollingFileWatcher ProcessExitedException ProcessGroup Ptr QuoteNode Range Range1 ' +\n 'Ranges Rational RawFD Real Regex RegexMatch RemoteRef RepString RevString RopeString RoundingMode Set ' +\n 'SharedArray Signed SparseMatrixCSC StackOverflowError Stat StatStruct StepRange String SubArray SubString ' +\n 'SymTridiagonal Symbol SymbolNode Symmetric SystemError Task TextDisplay Timer TmStruct TopNode Triangular ' +\n 'Tridiagonal Type TypeConstructor TypeError TypeName TypeVar UTF16String UTF32String UTF8String UdpSocket ' +\n 'Uint Uint128 Uint16 Uint32 Uint64 Uint8 UndefRefError UndefVarError UniformScaling UnionType UnitRange ' +\n 'Unsigned Vararg VersionNumber WString WeakKeyDict WeakRef Woodbury Zip ' +\n // v0.4 (diff)\n 'AbstractChannel AbstractFloat AbstractString AssertionError Base64DecodePipe Base64EncodePipe BufferStream ' +\n 'CapturedException CartesianIndex CartesianRange Channel Cintmax_t CompositeException Cstring Cuintmax_t ' +\n 'Cwstring Date DateTime Dims Enum GenSym GlobalRef HTML InitError InvalidStateException Irrational LinSpace ' +\n 'LowerTriangular NullException Nullable OutOfMemoryError Pair PartialQuickSort Pipe RandomDevice ' +\n 'ReadOnlyMemoryError ReentrantLock Ref RemoteException SegmentationFault SerializationState SimpleVector ' +\n 'TCPSocket Line truncated
|
||||
"module.exports = function (hljs) {\n var KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline ' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n // to be deleted soon\n 'trait volatile transient native default',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n var KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n var LABEL = {\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE},\n {begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]}\n ]\n };\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [SUBST]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'', end: '\\'',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n };\n\n var ANNOTATION_USE_SITE = {\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n var ANNOTATION = {\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.inherit(STRING, {className: 'meta-string'})\n ]\n }\n ]\n };\n\n return {\n keywords: KEYWORDS,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [{\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun', end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'type',\n begin: /</, end: />/, keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n contains: [\n {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {beginKeywords: 'public protected internal private constructor'},\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n Line truncated
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline lateinit init' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n // to be deleted soon\n 'trait volatile transient native default',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n var KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n var LABEL = {\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE},\n {begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]}\n ]\n };\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [SUBST]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'', end: '\\'',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n };\n\n var ANNOTATION_USE_SITE = {\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n var ANNOTATION = {\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.inherit(STRING, {className: 'meta-string'})\n ]\n }\n ]\n };\n\n return {\n keywords: KEYWORDS,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [{\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun', end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'type',\n begin: /</, end: />/, keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n contains: [\n {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {beginKeywords: 'public protected internal private constructor'},\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", eLine truncated
|
||||
"module.exports = function(hljs) {\n var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n var LASSO_KEYWORDS = {\n literal:\n 'true false none minimal full all void and or not ' +\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n built_in:\n 'array date decimal duration integer map pair string tag xml null ' +\n 'boolean bytes keyword list locale queue set stack staticarray ' +\n 'local var variable global data self inherited currentcapture givenblock',\n keyword:\n 'cache database_names database_schemanames database_tablenames ' +\n 'define_tag define_type email_batch encode_set html_comment handle ' +\n 'handle_error header if inline iterate ljax_target link ' +\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n 'loop namespace_using output_none portal private protect records ' +\n 'referer referrer repeating resultset rows search_args ' +\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n 'params_up return return_value run_children soap_definetag ' +\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n 'define descending do equals frozen group handle_failure import in ' +\n 'into join let match max min on order parent protected provide public ' +\n 'require returnhome skip split_thread sum take thread to trait type ' +\n 'where with yield yieldhome'\n };\n var HTML_COMMENT = hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 0\n }\n );\n var LASSO_NOPROCESS = {\n className: 'meta',\n begin: '\\\\[noprocess\\\\]',\n starts: {\n end: '\\\\[/noprocess\\\\]',\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n };\n var LASSO_START = {\n className: 'meta',\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n };\n var LASSO_DATAMEMBER = {\n className: 'symbol',\n begin: '\\'' + LASSO_IDENT_RE + '\\''\n };\n var LASSO_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: '`', end: '`'\n },\n { // variables\n variants: [\n {\n begin: '[#$]' + LASSO_IDENT_RE\n },\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n },\n {\n className: 'type',\n begin: '::\\\\s*', end: LASSO_IDENT_RE,\n illegal: '\\\\W'\n },\n {\n className: 'params',\n variants: [\n {\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\n relevance: 0\n },\n {\n begin: '(\\\\.\\\\.\\\\.)'\n }\n ]\n },\n {\n begin: /(->|\\.)\\s*/,\n relevance: 0,\n contains: [LASSO_DATAMEMBER]\n },\n {\n className: 'class',\n beginKeywords: 'define',\n returnEnd: true, end: '\\\\(|=>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\n ]\n }\n ];\n return {\n aliases: ['ls', 'lassoscript'],\n case_insensitive: true,\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: { // markup\n end: '\\\\[|' + LASSO_ANGLE_RE,\n returnEnd: true,\n relevance: 0,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START,\n {\n className: 'meta',\n begin: '\\\\[no_square_brackets',\n starts: {\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: {\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START\n ].concat(LASSO_CODE)\n }\n },\n {\n className: 'meta',\n begin: '\\\\[',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '^#!', end:'lasso9$',\n Line truncated
|
||||
"module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'attribute',\n begin: '^dn', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0},\n relevance: 10\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0}\n },\n {\n className: 'literal',\n begin: '^-', end: '$'\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n};",
|
||||
"module.exports = function (hljs) {\n return {\n contains: [\n {\n className: 'function',\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\n end:' {',\n returnBegin: true,\n excludeEnd: true,\n contains : [\n {\n className: 'keyword',\n begin: '#+'\n },\n {\n className: 'title',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n },\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n endsParent: true,\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"'\n },\n {\n className: 'variable',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n }\n ]\n }\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n /* Generic Modes */\n\n var RULES = [], VALUE = []; // forward def. for recursive modes\n\n var STRING_MODE = function(c) { return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string', begin: '~?' + c + '.*?' + c\n };};\n\n var IDENT_MODE = function(name, begin, relevance) { return {\n className: name, begin: begin, relevance: relevance\n };};\n\n var PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n },\n IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n },\n {\n className: 'meta',\n begin: '!important'\n }\n );\n\n var VALUE_WITH_RULESETS = VALUE.concat({\n begin: '{', end: '}', contains: RULES\n });\n\n var MIXIN_GUARD_MODE = {\n beginKeywords: 'when', endsWithParent: true,\n contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n var RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n relevance: 0,\n contains: [\n {\n className: 'attribute',\n begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, illegal: '[<=$]',\n relevance: 0,\n contains: VALUE\n }\n }\n ]\n };\n\n var AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n };\n\n // variable definitions and calls\n var VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n {begin: '@' + IDENT_RE}\n ],\n starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n };\n\n var SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [{\n begin: '[\\\\.#:&\\\\[>]', end: '[;{}]' // mixin calls end with ';'\n }, {\n begin: INTERP_IDENT_RE, end: '{'\n }],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n RULE_MODE,\n SELECTOR_MODE\n );\n\n return {\n case_insensitive: trLine truncated
|
||||
"module.exports = function(hljs) {\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\n var MEC_RE = '\\\\|[^]*?\\\\|';\n var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n var LITERAL = {\n className: 'literal',\n begin: '\\\\b(t{1}|nil)\\\\b'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n ]\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';', '$',\n {\n relevance: 0\n }\n );\n var VARIABLE = {\n begin: '\\\\*', end: '\\\\*'\n };\n var KEYWORD = {\n className: 'symbol',\n begin: '[:&]' + LISP_IDENT_RE\n };\n var IDENT = {\n begin: LISP_IDENT_RE,\n relevance: 0\n };\n var MEC = {\n begin: MEC_RE\n };\n var QUOTED_LIST = {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n };\n var QUOTED = {\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n variants: [\n {\n begin: '[\\'`]\\\\(', end: '\\\\)'\n },\n {\n begin: '\\\\(quote ', end: '\\\\)',\n keywords: {name: 'quote'}\n },\n {\n begin: '\\'' + MEC_RE\n }\n ]\n };\n var QUOTED_ATOM = {\n variants: [\n {begin: '\\'' + LISP_IDENT_RE},\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n ]\n };\n var LIST = {\n begin: '\\\\(\\\\s*', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n LIST.contains = [\n {\n className: 'name',\n variants: [\n {begin: LISP_IDENT_RE},\n {begin: MEC_RE}\n ]\n },\n BODY\n ];\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n return {\n illegal: /\\S/,\n contains: [\n NUMBER,\n SHEBANG,\n LITERAL,\n STRING,\n COMMENT,\n QUOTED,\n QUOTED_ATOM,\n LIST,\n IDENT\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\b[gtps][A-Z]+[A-Za-z0-9_\\\\-]*\\\\b|\\\\$_[A-Z]+',\n relevance: 0\n };\n var COMMENT_MODES = [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('--', '$'),\n hljs.COMMENT('[^:]//', '$')\n ];\n var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n variants: [\n {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\n {begin: '\\\\b_[a-z0-9\\\\-]+'}\n ]\n });\n var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n 'contains ends with begins the keys of keys',\n literal:\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n built_in:\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n 'constantNames cos date dateFormat decompress directories ' +\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec ' +\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabLine truncated
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger case default function var with ' +\n // LiveScript keywords\n 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\n 'case default function var void const let enum export import native ' +\n '__hasProp __extends __slice __bind __indexOf',\n literal:\n // JS literals\n 'true false null undefined ' +\n // LiveScript literals\n 'yes no on off it that void',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var SUBST_SIMPLE = {\n className: 'subst',\n begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'number',\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n relevance: 0,\n starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\n },\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\\\\/, end: /(\\s|$)/,\n excludeEnd: true\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '//', end: '//[gim]*',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE\n },\n {\n begin: '``', end: '``',\n excludeBegin: true, excludeEnd: true,\n subLanguage: 'javascript'\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n aliases: ['ls'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n contains: [TITLE, PARAMS],\n returnBegin: true,\n variants: [\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};",
|
||||
"module.exports = function(hljs) {\n var identifier = '([-a-zA-Z$._][\\\\w\\\\-$.]*)';\n return {\n //lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords:\n 'begin end true false declare define global ' +\n 'constant private linker_private internal ' +\n 'available_externally linkonce linkonce_odr weak ' +\n 'weak_odr appending dllimport dllexport common ' +\n 'default hidden protected extern_weak external ' +\n 'thread_local zeroinitializer undef null to tail ' +\n 'target triple datalayout volatile nuw nsw nnan ' +\n 'ninf nsz arcp fast exact inbounds align ' +\n 'addrspace section alias module asm sideeffect ' +\n 'gc dbg linker_private_weak attributes blockaddress ' +\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\n 'cc c signext zeroext inreg sret nounwind ' +\n 'noreturn noalias nocapture byval nest readnone ' +\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\n 'uwtable returned type opaque eq ne slt sgt ' +\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\n 'ole oge ord uno ueq une x acq_rel acquire ' +\n 'alignstack atomic catch cleanup filter inteldialect ' +\n 'max min monotonic nand personality release seq_cst ' +\n 'singlethread umax umin unordered xchg add fadd ' +\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\n 'frem shl lshr ashr and or xor icmp fcmp ' +\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\n 'addrspacecast select va_arg ret br switch invoke ' +\n 'unwind unreachable indirectbr landingpad resume ' +\n 'malloc alloca free load store getelementptr ' +\n 'extractelement insertelement shufflevector getresult ' +\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\n 'argmemonly double',\n contains: [\n {\n className: 'keyword',\n begin: 'i\\\\d+'\n },\n hljs.COMMENT(\n ';', '\\\\n', {relevance: 0}\n ),\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Double-quoted string\n { begin: '\"', end: '[^\\\\\\\\]\"' },\n ],\n relevance: 0\n },\n {\n className: 'title',\n variants: [\n { begin: '@' + identifier },\n { begin: '@\\\\d+' },\n { begin: '!' + identifier },\n { begin: '!\\\\d+' + identifier }\n ]\n },\n {\n className: 'symbol',\n variants: [\n { begin: '%' + identifier },\n { begin: '%\\\\d+' },\n { begin: '#\\\\d+' },\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '0[xX][a-fA-F0-9]+' },\n { begin: '-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?' }\n ],\n relevance: 0\n },\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n\n var LSL_STRING_ESCAPE_CHARS = {\n className: 'subst',\n begin: /\\\\[tn\"\\\\]/\n };\n\n var LSL_STRINGS = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [\n LSL_STRING_ESCAPE_CHARS\n ]\n };\n\n var LSL_NUMBERS = {\n className: 'number',\n begin: hljs.C_NUMBER_RE\n };\n\n var LSL_CONSTANTS = {\n className: 'literal',\n variants: [\n {\n begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n },\n {\n begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PLine truncated
|
||||
"module.exports = function(hljs) {\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n var LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n var COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n keyword:\n 'and break do else elseif end false for if in local nil not or repeat return then ' +\n 'true until while',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function', end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n {\n className: 'params',\n begin: '\\\\(', endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n};",
|
||||
"module.exports = function(hljs) {\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n var LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n var COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n //Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\n //Standard methods and properties:\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring' +\n 'module next pairs pcall print rawequal rawget rawset require select setfenv' +\n 'setmetatable tonumber tostring type unpack xpcall arg self' +\n //Library methods and properties (one line per library):\n 'coroutine resume yield status wrap create running debug getupvalue' +\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv' +\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile' +\n 'math, log, max, acos, huge, ldexp, pi, cos, tanh, pow, deg, tan, cosh, sinh, random, randomseed, frexp, ceil, floor, rad, abs, sqrt, modf, asin, min, mod, fmod, log10, atan2, exp, sin, atan' +\n 'os, exit, setlocale, date, getenv, difftime, remove, time, clock, tmpname, rename, execute, package, preload, loadlib, loaded, loaders, cpath, config path, seeall' +\n 'string, sub, upper, len, gfind, rep, find, match, char, dump, gmatch, reverse, byte, format, gsub, lower' +\n 'table, setn, insert, getn, foreachi, maxn, foreach, concat, sort, remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function', end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n {\n className: 'params',\n begin: '\\\\(', endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n};",
|
||||
"module.exports = function(hljs) {\n var VARIABLE = {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n return {\n aliases: ['mk', 'mak'],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: /^\\w+\\s*\\W*=/, returnBegin: true,\n relevance: 0,\n starts: {\n end: /\\s*\\W*=/, excludeEnd: true,\n starts: {\n end: /$/,\n relevance: 0,\n contains: [\n VARIABLE\n ]\n }\n }\n },\n {\n className: 'section',\n begin: /^[\\w]+:\\s*$/\n },\n {\n className: 'meta',\n begin: /^\\.PHONY:/, end: /$/,\n keywords: {'meta-keyword': '.PHONY'}, lexemes: /[\\.\\w]+/\n },\n {\n begin: /^\\t+/, end: /$/,\n relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE,\n VARIABLE\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n aliases: ['md', 'mkdown', 'mkd'],\n contains: [\n // highlight headers\n {\n className: 'section',\n variants: [\n { begin: '^#{1,6}', end: '$' },\n { begin: '^.+?\\\\n[=-]{2,}$' }\n ]\n },\n // inline html\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n },\n // lists (indicators only)\n {\n className: 'bullet',\n begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n },\n // strong segments\n {\n className: 'strong',\n begin: '[*_]{2}.+?[*_]{2}'\n },\n // emphasis segments\n {\n className: 'emphasis',\n variants: [\n { begin: '\\\\*.+?\\\\*' },\n { begin: '_.+?_'\n , relevance: 0\n }\n ]\n },\n // blockquotes\n {\n className: 'quote',\n begin: '^>\\\\s+', end: '$'\n },\n // code snippets\n {\n className: 'code',\n variants: [\n {\n begin: '^```\\w*\\s*$', end: '^```\\s*$'\n },\n {\n begin: '`.+?`'\n },\n {\n begin: '^( {4}|\\t)', end: '$',\n relevance: 0\n }\n ]\n },\n // horizontal rules\n {\n begin: '^[-\\\\*]{3,}', end: '$'\n },\n // using links - title and link\n {\n begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n returnBegin: true,\n contains: [\n {\n className: 'string',\n begin: '\\\\[', end: '\\\\]',\n excludeBegin: true,\n returnEnd: true,\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\]\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'symbol',\n begin: '\\\\]\\\\[', end: '\\\\]',\n excludeBegin: true, excludeEnd: true\n }\n ],\n relevance: 10\n },\n {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/, end: /\\]/,\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/, end: /$/,\n excludeBegin: true\n }\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n aliases: ['mma'],\n lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\n keywords: 'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis ' +\n 'BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonLine truncated
|
||||
@@ -761,6 +816,7 @@
|
||||
"module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {\n begin: '[$][a-fA-F0-9]+'\n },\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword: 'public private property continue exit extern new try catch ' +\n 'eachin not abstract final select case default const local global field ' +\n 'end if then else elseif endif while wend repeat until forever for ' +\n 'to step next return module inline throw import',\n\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n literal: 'true false null and or shl shr mod'\n },\n illegal: /\\/\\*/,\n contains: [\n hljs.COMMENT('#rem', '#end'),\n hljs.COMMENT(\n \"'\",\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'function method', end: '[(=:]|$',\n illegal: /\\n/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '$',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'built_in',\n begin: '\\\\b(self|super)\\\\b'\n },\n {\n className: 'meta',\n begin: '\\\\s*#', end: '$',\n keywords: {'meta-keyword': 'if else elseif endif end then'}\n },\n {\n className: 'meta',\n begin: '^\\\\s*strict\\\\b'\n },\n {\n beginKeywords: 'alias', end: '=',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER\n ]\n }\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or ' +\n 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n {\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n {\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['moon'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n beginKeywords:\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\n end: /;/, endsWithParent: true,\n keywords: {\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\n keyword:\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\n 'valued values via view when where while with within work xor',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\n literal:\n 'true false null missing|5',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\n built_in:\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 2\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$\\d+/},\n {begin: /\\$\\{/, end: /}/},\n {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\n ]\n };\n var DEFAULT = {\n endsWithParent: true,\n lexemes: '[a-z/_]+',\n keywords: {\n literal:\n 'on off yes no true false none blocked debug info notice warn error crit ' +\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/}\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\n contains: [VAR]\n },\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\n // regexp locations (~, ~*)\n {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\n // *.example.com\n {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\n // sub.example.*\n {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n aliases: ['nginxconf'],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\n end: '{',\n contains: [\n {\n className: 'section',\n begin: hljs.UNDERSCORE_IDENT_RE\n }\n ],\n relevance: 0\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}]'\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n aliases: ['nim'],\n keywords: {\n keyword:\n 'addr and as asm bind block break case cast const continue converter ' +\n 'discard distinct div do elif else end enum except export finally ' +\n 'for from generic if import in include interface is isnot iterator ' +\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\n 'raise ref return shl shr static template try tuple type using var ' +\n 'when while with without xor yield',\n literal:\n 'shared guarded stdin stdout stderr result true false',\n built_in:\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\n 'auto any range array openarray varargs seq set clong culong cchar ' +\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n 'cuchar cushort cuint culonglong cstringarray semistatic'\n },\n contains: [ {\n className: 'meta', // Actually pragma\n begin: /{\\./,\n end: /\\.}/,\n relevance: 10\n }, {\n className: 'string',\n begin: /[a-zA-Z]\\w*\"/,\n end: /\"/,\n contains: [{begin: /\"\"/}]\n }, {\n className: 'string',\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\n end: /\"\"\"/\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'type',\n begin: /\\b[A-Z]\\w+\\b/,\n relevance: 0\n }, {\n className: 'number',\n relevance: 0,\n variants: [\n {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\n {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\n ]\n },\n hljs.HASH_COMMENT_MODE\n ]\n }\n};",
|
||||
"module.exports = function(hljs) {\n var NIX_KEYWORDS = {\n keyword:\n 'rec with let in inherit assert if else then',\n literal:\n 'true false or and null',\n built_in:\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n 'toString derivation'\n };\n var ANTIQUOTE = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /}/,\n keywords: NIX_KEYWORDS\n };\n var ATTRS = {\n begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /\\S+/\n }\n ]\n };\n var STRING = {\n className: 'string',\n contains: [ANTIQUOTE],\n variants: [\n {begin: \"''\", end: \"''\"},\n {begin: '\"', end: '\"'}\n ]\n };\n var EXPRESSIONS = [\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n ATTRS\n ];\n ANTIQUOTE.contains = EXPRESSIONS;\n return {\n aliases: [\"nixos\"],\n keywords: NIX_KEYWORDS,\n contains: EXPRESSIONS\n };\n};",
|
||||
@@ -781,7 +837,7 @@
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'package import option optional required repeated group',\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n literal: 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'message enum service', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'rpc',\n end: /;/, excludeEnd: true,\n keywords: 'rpc returns'\n },\n {\n begin: /^\\s*[A-Z_]+/,\n end: /\\s*=/, excludeEnd: true\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n\n var PUPPET_KEYWORDS = {\n keyword:\n /* language keywords */\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n literal:\n /* metaparameters */\n 'alias audit before loglevel noop require subscribe tag ' +\n /* normal attributes */\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n 'en_address ip_address realname command environment hour monute month monthday special target weekday '+\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n 'sslverify mounted',\n built_in:\n /* core facts */\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n };\n\n var COMMENT = hljs.COMMENT('#', '$');\n\n var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\n\n var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\n\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/}\n ]\n };\n\n return {\n aliases: ['pp'],\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n {\n beginKeywords: 'class', end: '\\\\{|;',\n illegal: /=/,\n contains: [TITLE, COMMENT]\n },\n {\n beginKeywords: 'define', end: /\\{/,\n contains: [\n {\n className: 'section', begin: hljs.IDENT_RE, endsParent: true\n }\n ]\n },\n {\n begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\n end: /\\S/,\n contains: [\n {\n className: 'keyword',\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\{/, end: /\\}/,\n keywords: PUPPET_KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n COMMENT,\n {\n begin:'[a-zA-Z_]+\\\\s*=>',\n Line truncated
|
||||
"module.exports = // Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction(hljs) {\n var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n className: 'string',\n begin: '(~)?\"', end: '\"',\n illegal: '\\\\n'\n };\n var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n className: 'symbol',\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n };\n\n return {\n aliases: ['pb', 'pbi'],\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n // The following keywords list was taken and adapted from GuShH's PureBasic language file for GeSHi...\n 'And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect ' +\n 'CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel ' +\n 'Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n 'EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure ' +\n 'EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ' +\n 'ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro ' +\n 'NewList Not Or ProcedureReturn Protected Prototype ' +\n 'PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion ' +\n 'Swap To Wend While With XIncludeFile XOr ' +\n 'Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL',\n contains: [\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n { // PROCEDURES DEFINITIONS\n className: 'function',\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n end: '\\\\(',\n excludeEnd: true,\n returnBegin: true,\n contains: [\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n className: 'keyword',\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n excludeEnd: true\n },\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n className: 'type',\n begin: '\\\\.\\\\w*'\n // end: ' ',\n },\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n ]\n },\n STRINGS,\n CONSTANTS\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var PROMPT = {\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n contains: [PROMPT],\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n contains: [PROMPT],\n relevance: 10\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n contains: ['self', PROMPT, NUMBER, STRING]\n };\n return {\n aliases: ['py', 'gyp'],\n keywords: {\n keyword:\n 'and elif is global as in if from raise for except finally print import pass return ' +\n 'exec else break not with class assert yield try while continue del or def lambda ' +\n 'async await nonlocal|10 None True False',\n built_in:\n 'Ellipsis NotImplemented'\n },\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {className: 'function', beginKeywords: 'def'},\n {className: 'class', beginKeywords: 'class'}\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/, endsWithParent: true,\n keywords: 'None'\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/, end: /$/\n },\n {\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'and elif is global as in if from raise for except finally print import pass return ' +\n 'exec else break not with class assert yield try while continue del or def lambda ' +\n 'async await nonlocal|10 None True False',\n built_in:\n 'Ellipsis NotImplemented'\n };\n var PROMPT = {\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\n };\n var SUBST = {\n className: 'subst',\n begin: /\\{/, end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n contains: [PROMPT],\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n contains: [PROMPT],\n relevance: 10\n },\n {\n begin: /(fr|rf|f)'''/, end: /'''/,\n contains: [PROMPT, SUBST]\n },\n {\n begin: /(fr|rf|f)\"\"\"/, end: /\"\"\"/,\n contains: [PROMPT, SUBST]\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n {\n begin: /(fr|rf|f)'/, end: /'/,\n contains: [SUBST]\n },\n {\n begin: /(fr|rf|f)\"/, end: /\"/,\n contains: [SUBST]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n contains: ['self', PROMPT, NUMBER, STRING]\n };\n SUBST.contains = [STRING, NUMBER, PROMPT];\n return {\n aliases: ['py', 'gyp'],\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {className: 'function', beginKeywords: 'def'},\n {className: 'class', beginKeywords: 'class'}\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/, endsWithParent: true,\n keywords: 'None'\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/, end: /$/\n },\n {\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var Q_KEYWORDS = {\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n return {\n aliases:['k', 'kdb'],\n keywords: Q_KEYWORDS,\n lexemes: /(`?)[A-Za-z0-9_]+\\b/,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in of on if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await import',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\n 'size string url var variant vector2d vector3d vector4d' +\n 'Promise'\n };\n\n var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n // Use property class.\n var PROPERTY = {\n className: 'keyword',\n begin: '\\\\bproperty\\\\b',\n starts: {\n className: 'string',\n end: '(:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // Isolate signal statements. Ends at a ) a comment or end of line.\n // Use property class.\n var SIGNAL = {\n className: 'keyword',\n begin: '\\\\bsignal\\\\b',\n starts: {\n className: 'string',\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\n // emphasize the token following.\n var ID_ID = {\n className: 'attribute',\n begin: '\\\\bid\\\\s*:',\n starts: {\n className: 'string',\n end: QML_IDENT_RE,\n returnEnd: false\n }\n };\n\n // Find QML object attribute. An attribute is a QML identifier followed by :.\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\n // objects, object definitions, or javascript. The true end is either when the parent\n // ends or the next attribute is detected.\n var QML_ATTRIBUTE = {\n begin: QML_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: QML_IDENT_RE,\n end: '\\\\s*:',\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 0\n };\n\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n var QML_OBJECT = {\n begin: QML_IDENT_RE + '\\\\s*{', end: '{',\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\n ]\n };\n\n return {\n aliases: ['qt'],\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n { // E4X / JSX\n begin: /</, end: />\\s*[);\\]]/,\n relevance: 0,\n subLanguage: 'xml'\n }\n ],\n relevance: 0\n },\n SIGNAL,\n PROPERTY,\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n Line truncated
|
||||
"module.exports = function(hljs) {\n var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\n\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: IDENT_RE,\n lexemes: IDENT_RE,\n keywords: {\n keyword:\n 'function if in break next repeat else for return switch while try tryCatch ' +\n 'stop warning require library attach detach source setMethod setGeneric ' +\n 'setGroupGeneric setClass ...',\n literal:\n 'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\n 'NA_complex_|10'\n },\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n\n {\n // escaped identifier\n begin: '`',\n end: '`',\n relevance: 0\n },\n\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\"', end: '\"'},\n {begin: \"'\", end: \"'\"}\n ]\n }\n ]\n };\n};",
|
||||
@@ -790,9 +846,9 @@
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'float color point normal vector matrix while for if do return else break extern continue',\n built_in:\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'surface displacement light volume imager', end: '\\\\('\n },\n {\n beginKeywords: 'illuminate illuminance gather', end: '\\\\('\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var RUBY_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var RUBY_KEYWORDS = {\n keyword:\n 'and then defined module in return redo if BEGIN retry end for self when ' +\n 'next until do begin unless END rescue else break undef not super class case ' +\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\n literal:\n 'true false nil'\n };\n var YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n var IRB_OBJECT = {\n begin: '#<', end: '>'\n };\n var COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n {\n contains: [YARDOCTAG]\n }\n ),\n hljs.COMMENT(\n '^\\\\=begin',\n '^\\\\=end',\n {\n contains: [YARDOCTAG],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', '\\\\n$')\n ];\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n keywords: RUBY_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\n {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\n {begin: '%[qQwWx]?{', end: '}'},\n {begin: '%[qQwWx]?<', end: '>'},\n {begin: '%[qQwWx]?/', end: '/'},\n {begin: '%[qQwWx]?%', end: '%'},\n {begin: '%[qQwWx]?-', end: '-'},\n {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\n {\n // \\B in the beginning suppresses recognition of ?-sequences where ?\n // is the last character of a preceding identifier, as in: `func?4`\n begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\n },\n {\n begin: /<<(-?)\\w+$/, end: /^\\s*\\w+$/,\n }\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)', endsParent: true,\n keywords: RUBY_KEYWORDS\n };\n\n var RUBY_DEFAULT_CONTAINS = [\n STRING,\n IRB_OBJECT,\n {\n className: 'class',\n beginKeywords: 'class module', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {\n begin: '<\\\\s*',\n contains: [{\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\n }]\n }\n ].concat(COMMENT_MODES)\n },\n {\n className: 'function',\n beginKeywords: 'def', end: '$|;',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\n PARAMS\n ].concat(COMMENT_MODES)\n },\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [STRING, {begin: RUBY_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\n },\n {\n className: 'params',\n begin: /\\|/, end: /\\|/,\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n contains: [\n IRB_OBJECT,\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n illegal: /\\n/,\n variants: [\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r{', end: '}[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\n {begin: '%r!', end: '![a-z]*'},\n {begin: '%r\\\\[', end: '\\\\][a-z]*'}\n ]\n }\n ].concat(COMMENT_MODES),\n relevance: 0\n }\n ].concat(COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n var SIMPLE_PROMPT = \"[>?]>\";\n var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\n\n var IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta',\n begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n return {\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n 'NUMDAYS READ_DATE STAGING',\n built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'literal',\n variants: [\n {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\n {begin: '#[a-zA-Z\\\\ \\\\.]+'}\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var NUM_SUFFIX = '([uif](8|16|32|64|size))\\?';\n var KEYWORDS =\n 'alignof as be box break const continue crate do else enum extern ' +\n 'false fn for if impl in let loop match mod mut offsetof once priv ' +\n 'proc pub pure ref return self Self sizeof static struct super trait true ' +\n 'type typeof unsafe unsized use virtual while where yield move default ' +\n 'int i8 i16 i32 i64 isize ' +\n 'uint u8 u32 u64 usize ' +\n 'float f32 f64 ' +\n 'str char bool'\n var BUILTINS =\n // prelude\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce drop Box ToOwned Clone ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator Option ' +\n 'Result SliceConcatExt String ToString Vec ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules!';\n return {\n aliases: ['rs'],\n keywords: {\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n lexemes: hljs.IDENT_RE + '!?',\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n {\n className: 'string',\n variants: [\n { begin: /r(#*)\".*?\"\\1(?!#)/ },\n { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'meta',\n begin: '#\\\\!?\\\\[', end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/, end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type', end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct', end: '{',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {built_in: BUILTINS}\n },\n {\n begin: '->'\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n var KEYWORDS =\n 'alignof as be box break const continue crate do else enum extern ' +\n 'false fn for if impl in let loop match mod mut offsetof once priv ' +\n 'proc pub pure ref return self Self sizeof static struct super trait true ' +\n 'type typeof unsafe unsized use virtual while where yield move default';\n var BUILTINS =\n // functions\n 'drop ' +\n // types\n 'i8 i16 i32 i64 i128 isize ' +\n 'u8 u16 u32 u64 u128 usize ' +\n 'f32 f64 ' +\n 'str char bool ' +\n 'Box Option Result String Vec ' +\n // traits\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\n 'SliceConcatExt ToString ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\n return {\n aliases: ['rs'],\n keywords: {\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n lexemes: hljs.IDENT_RE + '!?',\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n {\n className: 'string',\n variants: [\n { begin: /r(#*)\".*?\"\\1(?!#)/ },\n { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'meta',\n begin: '#\\\\!?\\\\[', end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/, end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type', end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct union', end: '{',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {built_in: BUILTINS}\n },\n {\n begin: '->'\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n\n var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\n\n // used in strings for escaping/interpolation/substitution\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$[A-Za-z0-9_]+'},\n {begin: '\\\\${', end: '}'}\n ]\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '[a-z]+\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"', end: '\"\"\"',\n contains: [SUBST],\n relevance: 10\n }\n ]\n\n };\n\n var SYMBOL = {\n className: 'symbol',\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n NAME\n ]\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n SYMBOL,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n ANNOTATION\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n var BUILTINS = {\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!',\n end: '$'\n };\n\n var LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n { begin: '#b[0-1]+(/[0-1]+)?' },\n { begin: '#o[0-7]+(/[0-7]+)?' },\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n ]\n };\n\n var STRING = hljs.QUOTE_STRING_MODE;\n\n var REGULAR_EXPRESSION = {\n className: 'regexp',\n begin: '#[pr]x\"',\n end: '[^\\\\\\\\]\"'\n };\n\n var COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n var IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n var QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n var QUOTED_LIST = {\n begin: /'/,\n contains: [\n {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n }\n ]\n };\n\n var NAME = {\n className: 'name',\n begin: SCHEME_IDENT_RE,\n lexemes: SCHEME_IDENT_RE,\n keywords: BUILTINS\n };\n\n var LAMBDA = {\n begin: /lambda/, endsWithParent: true, returnBegin: true,\n contains: [\n NAME,\n {\n begin: /\\(/, end: /\\)/, endsParent: true,\n contains: [IDENT],\n }\n ]\n };\n\n var LIST = {\n variants: [\n { begin: '\\\\(', end: '\\\\)' },\n { begin: '\\\\[', end: '\\\\]' }\n ],\n contains: [LAMBDA, NAME, BODY]\n };\n\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n return {\n illegal: /\\S/,\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\n };\n};",
|
||||
"module.exports = function(hljs) {\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n var BUILTINS = {\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!',\n end: '$'\n };\n\n var LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n { begin: '#b[0-1]+(/[0-1]+)?' },\n { begin: '#o[0-7]+(/[0-7]+)?' },\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n ]\n };\n\n var STRING = hljs.QUOTE_STRING_MODE;\n\n var REGULAR_EXPRESSION = {\n className: 'regexp',\n begin: '#[pr]x\"',\n end: '[^\\\\\\\\]\"'\n };\n\n var COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n var IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n var QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n var QUOTED_LIST = {\n variants: [\n { begin: /'/ },\n { begin: '`' }\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n }\n ]\n };\n\n var NAME = {\n className: 'name',\n begin: SCHEME_IDENT_RE,\n lexemes: SCHEME_IDENT_RE,\n keywords: BUILTINS\n };\n\n var LAMBDA = {\n begin: /lambda/, endsWithParent: true, returnBegin: true,\n contains: [\n NAME,\n {\n begin: /\\(/, end: /\\)/, endsParent: true,\n contains: [IDENT],\n }\n ]\n };\n\n var LIST = {\n variants: [\n { begin: '\\\\(', end: '\\\\)' },\n { begin: '\\\\[', end: '\\\\]' }\n ],\n contains: [LAMBDA, NAME, BODY]\n };\n\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n return {\n illegal: /\\S/,\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMLine truncated
|
||||
"module.exports = function(hljs) {\n\n var COMMON_CONTAINS = [\n hljs.C_NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'|\\\"', end: '\\'|\\\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n }\n ];\n\n return {\n aliases: ['sci'],\n lexemes: /%?\\w+/,\n keywords: {\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\n 'global if pause return resume select try then while',\n literal:\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n built_in: // Scilab has more than 2000 functions. Just list the most commons\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\n 'type typename warning zeros matrix'\n },\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\n relevance: 0\n },\n {\n begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\n relevance: 0,\n contains: COMMON_CONTAINS\n },\n hljs.COMMENT('//', '$')\n ].concat(COMMON_CONTAINS)\n };\n};",
|
||||
"module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n var HEXCOLOR = {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n };\n var DEF_INTERNALS = {\n className: 'attribute',\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n excludeEnd: true,\n illegal: '[^\\\\s]',\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n };\n return {\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n illegal: '$'\n },\n {\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n relevance: 0\n },\n {\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n },\n {\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n },\n VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|backgLine truncated
|
||||
"module.exports = function(hljs) {\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n return {\n aliases: ['smali'],\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n ]\n },\n {\n className: 'built_in',\n variants : [\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n },\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n },\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+',\n }\n ]\n };\n};",
|
||||
@@ -813,7 +869,7 @@
|
||||
"module.exports = function(hljs) {\n var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n return {\n keywords: {\n keyword:\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\n built_in:\n BUILT_IN_TYPES,\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'struct enum service exception', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\n keywords: BUILT_IN_TYPES,\n contains: ['self']\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var TPID = {\n className: 'number',\n begin: '[1-9][0-9]*', /* no leading zeros */\n relevance: 0\n };\n var TPLABEL = {\n className: 'symbol',\n begin: ':[^\\\\]]+'\n };\n var TPDATA = {\n className: 'built_in',\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|\\\n TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n TPLABEL\n ]\n };\n var TPIO = {\n className: 'built_in',\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n TPLABEL\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n literal:\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n },\n contains: [\n TPDATA,\n TPIO,\n {\n className: 'keyword',\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n },\n {\n /* this is for cases like ,CALL */\n className: 'keyword',\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n },\n {\n /* this is for cases like CNT100 where the default lexemes do not\n * separate the keyword and the number */\n className: 'keyword',\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n },\n {\n /* to catch numbers that do not have a word boundary on the left */\n className: 'number',\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n relevance: 0\n },\n hljs.COMMENT('//', '[;$]'),\n hljs.COMMENT('!', '[;$]'),\n hljs.COMMENT('--eg:', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\''\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'variable',\n begin: '\\\\$[A-Za-z0-9_]+'\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n 'max min parent random range source template_from_string';\n\n var FUNCTIONS = {\n beginKeywords: FUNCTION_NAMES,\n keywords: {name: FUNCTION_NAMES},\n relevance: 0,\n contains: [\n PARAMS\n ]\n };\n\n var FILTER = {\n begin: /\\|[A-Za-z_]+:?/,\n keywords:\n 'abs batch capitalize convert_encoding date date_modify default ' +\n 'escape first format join json_encode keys last length lower ' +\n 'merge nl2br number_format raw replace reverse round slice sort split ' +\n 'striptags title trim upper url_encode',\n contains: [\n FUNCTIONS\n ]\n };\n\n var TAGS = 'autoescape block do embed extends filter flush for ' +\n 'if import include macro sandbox set spaceless use verbatim';\n\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n return {\n aliases: ['craftcms'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: TAGS,\n starts: {\n endsWithParent: true,\n contains: [FILTER, FUNCTIONS],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: ['self', FILTER, FUNCTIONS]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const class public private protected get set super ' +\n 'static implements enum export import declare type namespace abstract',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document any number boolean string void'\n };\n\n return {\n aliases: ['ts'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use strict['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE\n ],\n relevance: 0\n },\n {\n className: 'function',\n begin: 'function', end: /[\\{;]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ],\n illegal: /%/,\n relevance: 0 // () => {} is more typical in TypeScript\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n contains: [\n 'self',\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ]\n },\n { // prevent references like module.id from being higlighted as module definitions\n begin: /module\\./,\n keywords: {built_in: 'module'},\n relevance: 0\n },\n {\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\n },\n {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const class public private protected get set super ' +\n 'static implements enum export import declare type namespace abstract ' +\n 'as from extends async await',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document any number boolean string void Promise'\n };\n\n return {\n aliases: ['ts'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use strict['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n begin: 'function', end: /[\\{;]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ],\n illegal: /%/,\n relevance: 0 // () => {} is more typical in TypeScript\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n contains: [\n 'self',\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ]\n },\n { // prevent references like module.id from being higlighted as module definitions\n begin: /module\\./,\n keywords: {built_in: 'module'},\n relevance: 0\n },\n {\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\n },\n {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n {\n classNameLine truncated
|
||||
"module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\n // Reference types\n 'weak unowned owned ' +\n // Modifiers\n 'async signal static abstract interface override virtual delegate ' +\n // Control Structures\n 'if while do for foreach else switch case break default return try catch ' +\n // Visibility\n 'public private protected internal ' +\n // Other\n 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#', end: '$',\n relevance: 2\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n aliases: ['vb'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval ' + /* a-b */\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n 'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue ' + /* g-i */\n 'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\n 'namespace narrowing new next not notinheritable notoverridable ' + /* n */\n 'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\n 'paramarray partial preserve private property protected public ' + /* p */\n 'raiseevent readonly redim rem removehandler resume return ' + /* r */\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n 'take text then throw to try unicode until using when where while widening with withevents writeonly xor', /* t-x */\n built_in:\n 'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' + /* b-c */\n 'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\n 'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\n literal:\n 'true false nothing'\n },\n illegal: '//|{|}|endif|gosub|variant|wend', /* reserved deprecated keywords */\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n '\\'',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n begin: '\\'\\'\\'|<!--|-->',\n contains: [hljs.PHRASAL_WORDS_MODE]\n },\n {\n className: 'doctag',\n begin: '</?', end: '>',\n contains: [hljs.PHRASAL_WORDS_MODE]\n }\n ]\n }\n ),\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end region externalsource'}\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n begin: '<%', end: '%>',\n subLanguage: 'vbscript'\n }\n ]\n };\n};",
|
||||
@@ -825,7 +881,7 @@
|
||||
"module.exports = function(hljs) {\n var BUILTIN_MODULES =\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n var XL_KEYWORDS = {\n keyword:\n 'if then else do while until for loop import with is as where when by data constant ' +\n 'integer real text name boolean symbol infix prefix postfix block tree',\n literal:\n 'true false nil',\n built_in:\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n 'text_find text_replace contains page slide basic_slide title_slide ' +\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\n 'mouse_?y mouse_buttons ' +\n BUILTIN_MODULES\n };\n\n var DOUBLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\"', end: '\"', illegal: '\\\\n'\n };\n var SINGLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\\'', end: '\\'', illegal: '\\\\n'\n };\n var LONG_TEXT = {\n className: 'string',\n begin: '<<', end: '>>'\n };\n var BASED_NUMBER = {\n className: 'number',\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n };\n var IMPORT = {\n beginKeywords: 'import', end: '$',\n keywords: XL_KEYWORDS,\n contains: [DOUBLE_QUOTE_TEXT]\n };\n var FUNCTION_DEFINITION = {\n className: 'function',\n begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {starts: {\n endsWithParent: true,\n keywords: XL_KEYWORDS\n }})\n ]\n };\n return {\n aliases: ['tao'],\n lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\n keywords: XL_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DOUBLE_QUOTE_TEXT,\n SINGLE_QUOTE_TEXT,\n LONG_TEXT,\n FUNCTION_DEFINITION,\n IMPORT,\n BASED_NUMBER,\n hljs.NUMBER_MODE\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n var TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/},\n {begin: /[^\\s\"'=<>`]+/}\n ]\n }\n ]\n }\n ]\n };\n return {\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '<!DOCTYPE', end: '>',\n relevance: 10,\n contains: [{begin: '\\\\[', end: '\\\\]'}]\n },\n hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 10\n }\n ),\n {\n begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n relevance: 10\n },\n {\n begin: /<\\?(php)?/, end: /\\?>/,\n subLanguage: 'php',\n contains: [{begin: '/\\\\*', end: '\\\\*/', skip: true}]\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending braket. The '$' is needed for the lexeme to be recognized\n by hljs.subMode() that tests lexemes outside the stream.\n */\n begin: '<style(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'style'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '</style>', returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: '<script(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'script'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '\\<\\/script\\>', returnEnd: true,\n subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n }\n },\n {\n className: 'meta',\n variants: [\n {begin: /<\\?xml/, end: /\\?>/, relevance: 10},\n {begin: /<\\?\\w+/, end: /\\?>/}\n ]\n },\n {\n className: 'tag',\n begin: '</?', end: '/?>',\n contains: [\n {\n className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n },\n TAG_INTERNALS\n ]\n }\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +\n 'module namespace boundary-space preserve strip default collation base-uri ordering' +\n 'copy-namespaces order declare import schema namespace function option in allowing empty' +\n 'at tumbling window sliding window start when only end when previous next stable ascending' +\n 'descending empty greatest least some every satisfies switch case typeswitch try catch and' +\n 'or to union intersect instance of treat as castable cast map array delete insert into' +\n 'replace value rename copy modify update';\n var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';\n var VAR = {\n begin: /\\$[a-zA-Z0-9\\-]+/\n };\n\n var NUMBER = {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {begin: /\"/, end: /\"/, contains: [{begin: /\"\"/, relevance: 0}]},\n {begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}\n ]\n };\n\n var ANNOTATION = {\n className: 'meta',\n begin: '%\\\\w+'\n };\n\n var COMMENT = {\n className: 'comment',\n begin: '\\\\(:', end: ':\\\\)',\n relevance: 10,\n contains: [\n {\n className: 'doctag', begin: '@\\\\w+'\n }\n ]\n };\n\n var METHOD = {\n begin: '{', end: '}'\n };\n\n var CONTAINS = [\n VAR,\n STRING,\n NUMBER,\n COMMENT,\n ANNOTATION,\n METHOD\n ];\n METHOD.contains = CONTAINS;\n\n\n return {\n aliases: ['xpath', 'xq'],\n case_insensitive: false,\n lexemes: /[a-zA-Z\\$][a-zA-Z0-9_:\\-]*/,\n illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERAL\n },\n contains: CONTAINS\n };\n};",
|
||||
"module.exports = function(hljs) {\n var LITERALS = {literal: '{ } true false yes no Yes No True False null'};\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n STRING,\n hljs.HASH_COMMENT_MODE,\n hljs.C_NUMBER_MODE\n ],\n keywords: LITERALS\n };\n};",
|
||||
"module.exports = function(hljs) {\n var LITERALS = 'true false yes no null';\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /\\S+/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {literal: LITERALS}\n },\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n};",
|
||||
"module.exports = function(hljs) {\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['zep'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var let while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally int uint long ulong char uchar double float bool boolean string' +\n 'likely unlikely',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: '<<<[\\'\"]?\\\\w+[\\'\"]?$', end: '^\\\\w+;',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};",
|
||||
"'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this.reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this.reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this.reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this.reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this.reseed++;\n return utils.encode(res, enc);\n};\n",
|
||||
"var lodash = require('lodash'),\n Linter = require('./linter');\n\n/**\n * The htmllint namespace.\n * @namespace\n */\nvar htmllint = function () {\n var linter = htmllint.defaultLinter;\n\n return linter.lint.apply(linter, arguments);\n};\n\nmodule.exports = htmllint;\n\nhtmllint.Linter = Linter;\nhtmllint.rules = require('./rules');\nhtmllint.messages = require('./messages');\nhtmllint.defaultLinter = new Linter(htmllint.rules);\n\nhtmllint.use = function (plugins) {\n plugins.forEach(function (plugin) {\n if (lodash.isString(plugin)) {\n plugin = require(plugin);\n }\n\n htmllint.defaultLinter.use(plugin);\n });\n};\n",
|
||||
@@ -906,16 +962,72 @@
|
||||
"if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n",
|
||||
"/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n",
|
||||
"var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n",
|
||||
"/*!\n * jQuery JavaScript Library v3.1.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2016-09-22T22:30Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.1.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internLine truncated
|
||||
"/*!\n * jQuery JavaScript Library v3.2.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2017-03-20T18:59Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.2.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal uLine truncated
|
||||
"/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n*/\n\n/**\nThe following batches are equivalent:\n\nvar beautify_js = require('js-beautify');\nvar beautify_js = require('js-beautify').js;\nvar beautify_js = require('js-beautify').js_beautify;\n\nvar beautify_css = require('js-beautify').css;\nvar beautify_css = require('js-beautify').css_beautify;\n\nvar beautify_html = require('js-beautify').html;\nvar beautify_html = require('js-beautify').html_beautify;\n\nAll methods returned accept two arguments, the source string and an options object.\n**/\n\nfunction get_beautify(js_beautify, css_beautify, html_beautify) {\n // the default is js\n var beautify = function(src, config) {\n return js_beautify.js_beautify(src, config);\n };\n\n // short aliases\n beautify.js = js_beautify.js_beautify;\n beautify.css = css_beautify.css_beautify;\n beautify.html = html_beautify.html_beautify;\n\n // legacy aliases\n beautify.js_beautify = js_beautify.js_beautify;\n beautify.css_beautify = css_beautify.css_beautify;\n beautify.html_beautify = html_beautify.html_beautify;\n\n return beautify;\n}\n\nif (typeof define === \"function\" && define.amd) {\n // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )\n define([\n \"./lib/beautify\",\n \"./lib/beautify-css\",\n \"./lib/beautify-html\"\n ], function(js_beautify, css_beautify, html_beautify) {\n return get_beautify(js_beautify, css_beautify, html_beautify);\n });\n} else {\n (function(mod) {\n var js_beautify = require('./lib/beautify');\n var css_beautify = require('./lib/beautify-css');\n var html_beautify = require('./lib/beautify-html');\n\n mod.exports = get_beautify(js_beautify, css_beautify, html_beautify);\n\n })(module);\n}",
|
||||
"/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n\n CSS Beautifier\n---------------\n\n Written by Harutyun Amirjanyan, (amirjanyan@gmail.com)\n\n Based on code initially developed by: Einar Lielmanis, <einar@jsbeautifier.org>\n http://jsbeautifier.org/\n\n Usage:\n css_beautify(source_text);\n css_beautify(source_text, options);\n\n The options are (default in brackets):\n indent_size (4) — indentation size,\n indent_char (space) — character to indent with,\n selector_separator_newline (true) - separate selectors with newline or\n not (e.g. \"a,\\nbr\" or \"a, br\")\n end_with_newline (false) - end with a newline\n newline_between_rules (true) - add a new line after every css rule\n space_around_selector_separator (false) - ensure space around selector separators:\n '>', '+', '~' (e.g. \"a>b\" -> \"a > b\")\n e.g\n\n css_beautify(css_source_text, {\n 'indent_size': 1,\n 'indent_char': '\\t',\n 'selector_separator': ' ',\n 'end_with_newline': false,\n 'newline_between_rules': true,\n 'space_around_selector_separator': true\n });\n*/\n\n// http://www.w3.org/TR/CSS21/syndata.html#tokenization\n// http://www.w3.org/TR/css3-syntax/\n\n(function() {\n\n function mergeOpts(allOptions, targetType) {\n var finalOpts = {};\n var name;\n\n for (name in allOptions) {\n if (name !== targetType) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n\n //merge in the per type settings for the targetType\n if (targetType in allOptions) {\n for (name in allOptions[targetType]) {\n finalOpts[name] = allOptions[targetType][name];\n }\n }\n return finalOpts;\n }\n\n var lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n var allLineBreaks = new RegExp(lineBreak.source, 'g');\n\n function css_beautify(source_text, options) {\n options = options || {};\n\n // Allow the setting of language/file-type specific options\n // with inheritance of overall settings\n options = mergeOpts(options, 'css');\n\n source_text = source_text || '';\n\n var indentSize = options.indent_size ? parseInt(options.indent_size, 10) : 4;\n var indentCharacter = options.indent_char || ' ';\n var selectorSeparatorNewline = (options.selector_separator_newline === undefined) ? true : options.selector_separator_newline;\n var end_with_newline = (options.end_with_newline === undefined) ? false : options.end_with_newline;\n var newline_between_rules = (options.newline_between_rules === undefined) ? true : options.newline_between_rules;\n var space_around_combinator = (options.space_around_combinator === undefined) ? false : options.space_around_combinator;\n space_around_combinator = space_around_combinator || ((options.space_around_selector_separator === undefined) ? false : options.space_around_selector_separator);\n var eol = options.eol ? options.eol : 'auto';\n\n if (options.indent_with_tabs) {\n indentCharacter = '\\t';\n indentSize = 1;\n }\n\n if (eol === 'auto') {\n eol = '\\n';\n if (source_text && lineBreak.test(source_text || '')) {\n eol = source_text.match(lineBreak)[0];\n }\n }\n\n eol = eol.replace(/\\\\r/, '\\r').replace(/\\\\n/, '\\n');\n\n // HACK: newline parsing inconsistent. This brute force normalizes the input.\n sourcLine truncated
|
||||
"/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n\n CSS Beautifier\n---------------\n\n Written by Harutyun Amirjanyan, (amirjanyan@gmail.com)\n\n Based on code initially developed by: Einar Lielmanis, <einar@jsbeautifier.org>\n http://jsbeautifier.org/\n\n Usage:\n css_beautify(source_text);\n css_beautify(source_text, options);\n\n The options are (default in brackets):\n indent_size (4) — indentation size,\n indent_char (space) — character to indent with,\n preserve_newlines (default false) - whether existing line breaks should be preserved,\n selector_separator_newline (true) - separate selectors with newline or\n not (e.g. \"a,\\nbr\" or \"a, br\")\n end_with_newline (false) - end with a newline\n newline_between_rules (true) - add a new line after every css rule\n space_around_selector_separator (false) - ensure space around selector separators:\n '>', '+', '~' (e.g. \"a>b\" -> \"a > b\")\n e.g\n\n css_beautify(css_source_text, {\n 'indent_size': 1,\n 'indent_char': '\\t',\n 'selector_separator': ' ',\n 'end_with_newline': false,\n 'newline_between_rules': true,\n 'space_around_selector_separator': true\n });\n*/\n\n// http://www.w3.org/TR/CSS21/syndata.html#tokenization\n// http://www.w3.org/TR/css3-syntax/\n\n(function() {\n\n function mergeOpts(allOptions, targetType) {\n var finalOpts = {};\n var name;\n\n for (name in allOptions) {\n if (name !== targetType) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n\n //merge in the per type settings for the targetType\n if (targetType in allOptions) {\n for (name in allOptions[targetType]) {\n finalOpts[name] = allOptions[targetType][name];\n }\n }\n return finalOpts;\n }\n\n var lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n var allLineBreaks = new RegExp(lineBreak.source, 'g');\n\n function css_beautify(source_text, options) {\n options = options || {};\n\n // Allow the setting of language/file-type specific options\n // with inheritance of overall settings\n options = mergeOpts(options, 'css');\n\n source_text = source_text || '';\n\n var newlinesFromLastWSEat = 0;\n var indentSize = options.indent_size ? parseInt(options.indent_size, 10) : 4;\n var indentCharacter = options.indent_char || ' ';\n var preserve_newlines = (options.preserve_newlines === undefined) ? false : options.preserve_newlines;\n var selectorSeparatorNewline = (options.selector_separator_newline === undefined) ? true : options.selector_separator_newline;\n var end_with_newline = (options.end_with_newline === undefined) ? false : options.end_with_newline;\n var newline_between_rules = (options.newline_between_rules === undefined) ? true : options.newline_between_rules;\n var space_around_combinator = (options.space_around_combinator === undefined) ? false : options.space_around_combinator;\n space_around_combinator = space_around_combinator || ((options.space_around_selector_separator === undefined) ? false : options.space_around_selector_separator);\n var eol = options.eol ? options.eol : 'auto';\n\n if (options.indent_with_tabs) {\n indentCharacter = '\\t';\n indentSize = 1;\n }\n\n if (eol === 'auto') {\n eol = '\\n';\n if (source_text && lineBreak.test(source_text || '')) {\n Line truncated
|
||||
"/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n\n Style HTML\n---------------\n\n Written by Nochum Sossonko, (nsossonko@hotmail.com)\n\n Based on code initially developed by: Einar Lielmanis, <einar@jsbeautifier.org>\n http://jsbeautifier.org/\n\n Usage:\n style_html(html_source);\n\n style_html(html_source, options);\n\n The options are:\n indent_inner_html (default false) — indent <head> and <body> sections,\n indent_size (default 4) — indentation size,\n indent_char (default space) — character to indent with,\n wrap_line_length (default 250) - maximum amount of characters per line (0 = disable)\n brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"none\"\n put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are.\n unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n content_unformatted (defaults to pre tag) - list of tags, that its content shouldn't be reformatted\n indent_scripts (default normal) - \"keep\"|\"separate\"|\"normal\"\n preserve_newlines (default true) - whether existing line breaks before elements should be preserved\n Only works before elements, not inside tags or for text.\n max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk\n indent_handlebars (default false) - format and indent {{#foo}} and {{/foo}}\n end_with_newline (false) - end with a newline\n extra_liners (default [head,body,/html]) -List of tags that should have an extra newline before them.\n\n e.g.\n\n style_html(html_source, {\n 'indent_inner_html': false,\n 'indent_size': 2,\n 'indent_char': ' ',\n 'wrap_line_length': 78,\n 'brace_style': 'expand',\n 'preserve_newlines': true,\n 'max_preserve_newlines': 5,\n 'indent_handlebars': false,\n 'extra_liners': ['/html']\n });\n*/\n\n(function() {\n\n // function trim(s) {\n // return s.replace(/^\\s+|\\s+$/g, '');\n // }\n\n function ltrim(s) {\n return s.replace(/^\\s+/g, '');\n }\n\n function rtrim(s) {\n return s.replace(/\\s+$/g, '');\n }\n\n function mergeOpts(allOptions, targetType) {\n var finalOpts = {};\n var name;\n\n for (name in allOptions) {\n if (name !== targetType) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the targetType\n if (targetType in allOptions) {\n for (name in allOptions[targetType]) {\n finalOpts[name] = allOptions[targetType][name];\n }\n }\n return finalOpts;\n }\n\n var lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n var allLineBreaks = new RegExp(lineBreak.source, 'g');\n\n function style_html(html_source, options, js_beautify, css_beautify) {\n //Wrapper function to invoke all the necessary constructors and deal with the output.\n\n var multi_parser,\n indent_inner_html,\n indent_body_inner_html,\n indent_head_inner_html,\n indent_size,\n indent_character,\n wrap_line_length,\n brace_style,\n unformatted,\n content_unformatted,\n preserve_newlines,\n max_preserve_newlines,\n indent_handlebars,\n wrap_attributes,\n wrap_attributes_indent_size,\n is_wrap_attributes_force,\n is_wrap_attributes_force_expand_multLine truncated
|
||||
"/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n JS Beautifier\n---------------\n\n\n Written by Einar Lielmanis, <einar@jsbeautifier.org>\n http://jsbeautifier.org/\n\n Originally converted to javascript by Vital, <vital76@gmail.com>\n \"End braces on own line\" added by Chris J. Shull, <chrisjshull@gmail.com>\n Parsing improvements for brace-less statements by Liam Newman <bitwiseman@gmail.com>\n\n\n Usage:\n js_beautify(js_source_text);\n js_beautify(js_source_text, options);\n\n The options are:\n indent_size (default 4) - indentation size,\n indent_char (default space) - character to indent with,\n preserve_newlines (default true) - whether existing line breaks should be preserved,\n max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk,\n\n jslint_happy (default false) - if true, then jslint-stricter mode is enforced.\n\n jslint_happy !jslint_happy\n ---------------------------------\n function () function()\n\n switch () { switch() {\n case 1: case 1:\n break; break;\n } }\n\n space_after_anon_function (default false) - should the space before an anonymous function's parens be added, \"function()\" vs \"function ()\",\n NOTE: This option is overriden by jslint_happy (i.e. if jslint_happy is true, space_after_anon_function is true by design)\n\n brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"none\" | any of the former + \",preserve-inline\"\n put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are.\n preserve-inline will try to preserve inline blocks of curly braces\n\n space_before_conditional (default true) - should the space before conditional statement be added, \"if(true)\" vs \"if (true)\",\n\n unescape_strings (default false) - should printable characters in strings encoded in \\xNN notation be unescaped, \"example\" vs \"\\x65\\x78\\x61\\x6d\\x70\\x6c\\x65\"\n\n wrap_line_length (default unlimited) - lines should wrap at next opportunity after this number of characters.\n NOTE: This is not a hard limit. Lines will continue until a point where a newline would\n be preserved if it were present.\n\n end_with_newline (default false) - end output with a newline\n\n\n e.g\n\n js_beautify(js_source_text, {\n 'indent_size': 1,\n 'indent_char': '\\t'\n });\n\n*/\n\n// Object.values polyfill found here:\n// http://tokenposts.blogspot.com.au/2012/04/javascript-objectkeys-browser.html\nif (!Object.values) {\n Object.values = function(o) {\n if (o !== Object(o)) {\n throw new TypeError('Object.values called on a non-object');\n }\n var k = [],\n p;\n for (p in o) {\n if (Object.prototype.hasOwnProperty.call(o, p)) {\n k.push(o[p]);\n }\n }\n return k;\n };\n}\n\n(function() {\n\n function mergeOpts(allOptions, targetType) {\n var finalOpts = {};\n var name;\n\n for (name in allOptions) {\n if (name !== targetType) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the targetType\n if (targetType in allOptions) {\n for (name in allOptions[targetType]) {\n finalOpts[name] = allOptions[targetType][name];\n }\n }\n return finalOpts;\n }\n\n funcLine truncated
|
||||
"/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n Line truncated
|
||||
"var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._rand = function _rand(n) {\n var len = n.bitLength();\n var buf = this.rand.generate(Math.ceil(len / 8));\n\n // Set low bits\n buf[0] |= 3;\n\n // Mask high bits\n var mask = len & 0x7;\n if (mask !== 0)\n buf[buf.length - 1] >>= 7 - mask;\n\n return new bn(buf);\n}\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n var n2 = n1.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._rand(n2);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n var n2 = n1.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._rand(n2);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n",
|
||||
"module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n",
|
||||
"'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n",
|
||||
"module.exports = function (args, opts) {\n if (!opts) opts = {};\n \n var flags = { bools : {}, strings : {}, unknownFn: null };\n\n if (typeof opts['unknown'] === 'function') {\n flags.unknownFn = opts['unknown'];\n }\n\n if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {\n flags.allBools = true;\n } else {\n [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n });\n }\n \n var aliases = {};\n Object.keys(opts.alias || {}).forEach(function (key) {\n aliases[key] = [].concat(opts.alias[key]);\n aliases[key].forEach(function (x) {\n aliases[x] = [key].concat(aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n\n [].concat(opts.string).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n if (aliases[key]) {\n flags.strings[aliases[key]] = true;\n }\n });\n\n var defaults = opts['default'] || {};\n \n var argv = { _ : [] };\n Object.keys(flags.bools).forEach(function (key) {\n setArg(key, defaults[key] === undefined ? false : defaults[key]);\n });\n \n var notFlags = [];\n\n if (args.indexOf('--') !== -1) {\n notFlags = args.slice(args.indexOf('--')+1);\n args = args.slice(0, args.indexOf('--'));\n }\n\n function argDefined(key, arg) {\n return (flags.allBools && /^--[^=]+$/.test(arg)) ||\n flags.strings[key] || flags.bools[key] || aliases[key];\n }\n\n function setArg (key, val, arg) {\n if (arg && flags.unknownFn && !argDefined(key, arg)) {\n if (flags.unknownFn(arg) === false) return;\n }\n\n var value = !flags.strings[key] && isNumber(val)\n ? Number(val) : val\n ;\n setKey(argv, key.split('.'), value);\n \n (aliases[key] || []).forEach(function (x) {\n setKey(argv, x.split('.'), value);\n });\n }\n\n function setKey (obj, keys, value) {\n var o = obj;\n keys.slice(0,-1).forEach(function (key) {\n if (o[key] === undefined) o[key] = {};\n o = o[key];\n });\n\n var key = keys[keys.length - 1];\n if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {\n o[key] = value;\n }\n else if (Array.isArray(o[key])) {\n o[key].push(value);\n }\n else {\n o[key] = [ o[key], value ];\n }\n }\n \n function aliasIsBoolean(key) {\n return aliases[key].some(function (x) {\n return flags.bools[x];\n });\n }\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n \n if (/^--.+=/.test(arg)) {\n // Using [\\s\\S] instead of . because js doesn't support the\n // 'dotall' regex modifier. See:\n // http://stackoverflow.com/a/1068308/13216\n var m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n var key = m[1];\n var value = m[2];\n if (flags.bools[key]) {\n value = value !== 'false';\n }\n setArg(key, value, arg);\n }\n else if (/^--no-.+/.test(arg)) {\n var key = arg.match(/^--no-(.+)/)[1];\n setArg(key, false, arg);\n }\n else if (/^--.+/.test(arg)) {\n var key = arg.match(/^--(.+)/)[1];\n var next = args[i + 1];\n if (next !== undefined && !/^-/.test(next)\n && !flags.bools[key]\n && !flags.allBools\n && (aliases[key] ? !aliasIsBoolean(key) : true)) {\n setArg(key, next, arg);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next === 'true', arg);\n i++;\n }\n else {\n setArg(key, flags.strings[key] ? '' : true, arg);\n }\n }\n else if (/^-[^-]+/.test(arg)) {\n var letters = arg.slice(1,-1).split('');\n \n var broken = false;\n for (var j = 0; j < letters.length; j++) {\n var next = arg.slice(j+2);\n \n if (next === '-') {\n setArg(letters[j], next, arg)\n continue;\n }\n \n if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {\n setArg(letters[j], next.split('=')[1], arg);\n broken = true;\n break;\n }\n \n if (/[A-Za-z]/.test(letters[j])\n && /-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) {\n setArg(letters[j], next, arg);\n broken = true;\n break;\n }\n Line truncated
|
||||
"/**\n * Advanced Encryption Standard (AES) implementation.\n *\n * This implementation is based on the public domain library 'jscrypto' which\n * was written by:\n *\n * Emily Stark (estark@stanford.edu)\n * Mike Hamburg (mhamburg@stanford.edu)\n * Dan Boneh (dabo@cs.stanford.edu)\n *\n * Parts of this code are based on the OpenSSL implementation of AES:\n * http://www.openssl.org\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* AES API */\nmodule.exports = forge.aes = forge.aes || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-<mode>', key);\n * cipher.start({iv: iv});\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-<mode>', key);\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-<mode>', key);\n * decipher.start({iv: iv});\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-<mode>', key);\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new AES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the AES algorithm object.\n */\nforge.aes.Algorithm = function(name, mode) {\n if(!init) {\n initialize();\n }\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 16,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this AES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.aes.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = options.key;\n var tmp;\n\n /* Note: The key may be a string of bytes, an array of bytes, a byte\n buffer, or an array of 32-bit integers. If the key is in bytes, then\n it must be 16, 24, or 32 bytes in length. If it is in 32-bit\n integers, it must be 4, 6, or 8 integers long. */\n\n if(typeof key =Line truncated
|
||||
"/**\n * A Javascript implementation of AES Cipher Suites for TLS.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2015 Digital Bazaar, Inc.\n *\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./tls');\n\nvar tls = module.exports = forge.tls;\n\n/**\n * Supported cipher suites.\n */\ntls.CipherSuites['TLS_RSA_WITH_AES_128_CBC_SHA'] = {\n id: [0x00,0x2f],\n name: 'TLS_RSA_WITH_AES_128_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 16;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\ntls.CipherSuites['TLS_RSA_WITH_AES_256_CBC_SHA'] = {\n id: [0x00,0x35],\n name: 'TLS_RSA_WITH_AES_256_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 32;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\n\nfunction initConnectionState(state, c, sp) {\n var client = (c.entity === forge.tls.ConnectionEnd.client);\n\n // cipher setup\n state.read.cipherState = {\n init: false,\n cipher: forge.cipher.createDecipher('AES-CBC', client ?\n sp.keys.server_write_key : sp.keys.client_write_key),\n iv: client ? sp.keys.server_write_IV : sp.keys.client_write_IV\n };\n state.write.cipherState = {\n init: false,\n cipher: forge.cipher.createCipher('AES-CBC', client ?\n sp.keys.client_write_key : sp.keys.server_write_key),\n iv: client ? sp.keys.client_write_IV : sp.keys.server_write_IV\n };\n state.read.cipherFunction = decrypt_aes_cbc_sha1;\n state.write.cipherFunction = encrypt_aes_cbc_sha1;\n\n // MAC setup\n state.read.macLength = state.write.macLength = sp.mac_length;\n state.read.macFunction = state.write.macFunction = tls.hmac_sha1;\n}\n\n/**\n * Encrypts the TLSCompressed record into a TLSCipherText record using AES\n * in CBC mode.\n *\n * @param record the TLSCompressed record to encrypt.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1(record, s) {\n var rval = false;\n\n // append MAC to fragment, update sequence number\n var mac = s.macFunction(s.macKey, s.sequenceNumber, record);\n record.fragment.putBytes(mac);\n s.updateSequenceNumber();\n\n // TLS 1.1+ use an explicit IV every time to protect against CBC attacks\n var iv;\n if(record.version.minor === tls.Versions.TLS_1_0.minor) {\n // use the pre-generated IV when initializing for TLS 1.0, otherwise use\n // the residue from the previous encryption\n iv = s.cipherState.init ? null : s.cipherState.iv;\n } else {\n iv = forge.random.getBytesSync(16);\n }\n\n s.cipherState.init = true;\n\n // start cipher\n var cipher = s.cipherState.cipher;\n cipher.start({iv: iv});\n\n // TLS 1.1+ write IV into output\n if(record.version.minor >= tls.Versions.TLS_1_1.minor) {\n cipher.output.putBytes(iv);\n }\n\n // do encryption (default padding is appropriate)\n cipher.update(record.fragment);\n if(cipher.finish(encrypt_aes_cbc_sha1_padding)) {\n // set record fragment to encrypted output\n record.fragment = cipher.output;\n record.length = record.fragment.length();\n rval = true;\n }\n\n return rval;\n}\n\n/**\n * Handles padding for aes_cbc_sha1 in encrypt mode.\n *\n * @param blockSize the block size.\n * @param input the input buffer.\n * @param decrypt true in decrypt mode, false in encrypt mode.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1_padding(blockSize, input, decrypt) {\n /* The encrypted data length (TLSCiphertext.length) is one more than the sum\n of SecurityParameters.block_length, TLSCompressed.length,\n SecurityParameters.mac_length, and padding_length.\n\n The padding may be any length up to 255 bytes long, as long as it results in\n the TLSCiphertext.length being an integral multiple of the block length.\n Lengths longer than necessary might be desirable to frustrate attacks on a\n protocol based on analysis of the lengths of exchanged messages. Each uint8\n in the padding data vector must be filled with the padding length value.\n\n The padding length should be such that the total size of the\n GenericBlockCipher structure is a multiple of the cipher's block length.\n Legal values range from zero to 255, inclusive. This length specifies the\n length of the padding field exclusive of the padding_length field itself.\n\n This is slightly different from PLine truncated
|
||||
"/**\n * Javascript implementation of Abstract Syntax Notation Number One.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n *\n * An API for storing data using the Abstract Syntax Notation Number One\n * format using DER (Distinguished Encoding Rules) encoding. This encoding is\n * commonly used to store data for PKI, i.e. X.509 Certificates, and this\n * implementation exists for that purpose.\n *\n * Abstract Syntax Notation Number One (ASN.1) is used to define the abstract\n * syntax of information without restricting the way the information is encoded\n * for transmission. It provides a standard that allows for open systems\n * communication. ASN.1 defines the syntax of information data and a number of\n * simple data types as well as a notation for describing them and specifying\n * values for them.\n *\n * The RSA algorithm creates public and private keys that are often stored in\n * X.509 or PKCS#X formats -- which use ASN.1 (encoded in DER format). This\n * class provides the most basic functionality required to store and load DSA\n * keys that are encoded according to ASN.1.\n *\n * The most common binary encodings for ASN.1 are BER (Basic Encoding Rules)\n * and DER (Distinguished Encoding Rules). DER is just a subset of BER that\n * has stricter requirements for how data must be encoded.\n *\n * Each ASN.1 structure has a tag (a byte identifying the ASN.1 structure type)\n * and a byte array for the value of this ASN1 structure which may be data or a\n * list of ASN.1 structures.\n *\n * Each ASN.1 structure using BER is (Tag-Length-Value):\n *\n * | byte 0 | bytes X | bytes Y |\n * |--------|---------|----------\n * | tag | length | value |\n *\n * ASN.1 allows for tags to be of \"High-tag-number form\" which allows a tag to\n * be two or more octets, but that is not supported by this class. A tag is\n * only 1 byte. Bits 1-5 give the tag number (ie the data type within a\n * particular 'class'), 6 indicates whether or not the ASN.1 value is\n * constructed from other ASN.1 values, and bits 7 and 8 give the 'class'. If\n * bits 7 and 8 are both zero, the class is UNIVERSAL. If only bit 7 is set,\n * then the class is APPLICATION. If only bit 8 is set, then the class is\n * CONTEXT_SPECIFIC. If both bits 7 and 8 are set, then the class is PRIVATE.\n * The tag numbers for the data types for the class UNIVERSAL are listed below:\n *\n * UNIVERSAL 0 Reserved for use by the encoding rules\n * UNIVERSAL 1 Boolean type\n * UNIVERSAL 2 Integer type\n * UNIVERSAL 3 Bitstring type\n * UNIVERSAL 4 Octetstring type\n * UNIVERSAL 5 Null type\n * UNIVERSAL 6 Object identifier type\n * UNIVERSAL 7 Object descriptor type\n * UNIVERSAL 8 External type and Instance-of type\n * UNIVERSAL 9 Real type\n * UNIVERSAL 10 Enumerated type\n * UNIVERSAL 11 Embedded-pdv type\n * UNIVERSAL 12 UTF8String type\n * UNIVERSAL 13 Relative object identifier type\n * UNIVERSAL 14-15 Reserved for future editions\n * UNIVERSAL 16 Sequence and Sequence-of types\n * UNIVERSAL 17 Set and Set-of types\n * UNIVERSAL 18-22, 25-30 Character string types\n * UNIVERSAL 23-24 Time types\n *\n * The length of an ASN.1 structure is specified after the tag identifier.\n * There is a definite form and an indefinite form. The indefinite form may\n * be used if the encoding is constructed and not all immediately available.\n * The indefinite form is encoded using a length byte with only the 8th bit\n * set. The end of the constructed object is marked using end-of-contents\n * octets (two zero bytes).\n *\n * The definite form looks like this:\n *\n * The length may take up 1 or more bytes, it depends on the length of the\n * value of the ASN.1 structure. DER encoding requires that if the ASN.1\n * structure has a value that has a length greater than 127, more than 1 byte\n * will be used to store its length, otherwise just one byte will be used.\n * This is strict.\n *\n * In the case that the length of the ASN.1 value is less than 127, 1 octet\n * (byte) is used to store the \"short form\" length. The 8th bit has a value of\n * 0 indicating the length is \"short form\" and not \"long form\" and bits 7-1\n * give the length of the data. (The 8th bit is the left-most, most significant\n * bit: also known as big endian or network format).\n *\n * In the case that the length of the ASN.1 value is greater than 127, 2 to\n * 127 octets (bytes) are used to store the \"long form\" length. The first\n * byte's 8th bit is set to 1 to indicate the length is \"long form.\" Bits 7-1\n * give the number of additional octets. All following octets are in base 256\n * with the most significant digit first (typical big-endian binary unsigned\n * integer storage). So, for instance, if the length of a value was 257, the\n * first byte would be set to:\n *\n * 10000010 = 130 = 0x82.\n *\n * This indicates there are 2 octets (base 256) for the length. The second and\n * third bytes (the octets just mentioned) would store thLine truncated
|
||||
"/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.starLine truncated
|
||||
"/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.uLine truncated
|
||||
"/**\n * Debugging support for web applications.\n *\n * @author David I. Lehn <dlehn@digitalbazaar.com>\n *\n * Copyright 2008-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\n/* DEBUG API */\nmodule.exports = forge.debug = forge.debug || {};\n\n// Private storage for debugging.\n// Useful to expose data that is otherwise unviewable behind closures.\n// NOTE: remember that this can hold references to data and cause leaks!\n// format is \"forge._debug.<modulename>.<dataname> = data\"\n// Example:\n// (function() {\n// var cat = 'forge.test.Test'; // debugging category\n// var sState = {...}; // local state\n// forge.debug.set(cat, 'sState', sState);\n// })();\nforge.debug.storage = {};\n\n/**\n * Gets debug data. Omit name for all cat data Omit name and cat for\n * all data.\n *\n * @param cat name of debugging category.\n * @param name name of data to get (optional).\n * @return object with requested debug data or undefined.\n */\nforge.debug.get = function(cat, name) {\n var rval;\n if(typeof(cat) === 'undefined') {\n rval = forge.debug.storage;\n } else if(cat in forge.debug.storage) {\n if(typeof(name) === 'undefined') {\n rval = forge.debug.storage[cat];\n } else {\n rval = forge.debug.storage[cat][name];\n }\n }\n return rval;\n};\n\n/**\n * Sets debug data.\n *\n * @param cat name of debugging category.\n * @param name name of data to set.\n * @param data data to set.\n */\nforge.debug.set = function(cat, name, data) {\n if(!(cat in forge.debug.storage)) {\n forge.debug.storage[cat] = {};\n }\n forge.debug.storage[cat][name] = data;\n};\n\n/**\n * Clears debug data. Omit name for all cat data. Omit name and cat for\n * all data.\n *\n * @param cat name of debugging category.\n * @param name name of data to clear or omit to clear entire category.\n */\nforge.debug.clear = function(cat, name) {\n if(typeof(cat) === 'undefined') {\n forge.debug.storage = {};\n } else if(cat in forge.debug.storage) {\n if(typeof(name) === 'undefined') {\n delete forge.debug.storage[cat];\n } else {\n delete forge.debug.storage[cat][name];\n }\n }\n};\n",
|
||||
"/**\n * DES (Data Encryption Standard) implementation.\n *\n * This implementation supports DES as well as 3DES-EDE in ECB and CBC mode.\n * It is based on the BSD-licensed implementation by Paul Tero:\n *\n * Paul Tero, July 2001\n * http://www.tero.co.uk/des/\n *\n * Optimised for performance with large blocks by Michael Hayworth, November 2001\n * http://www.netdealing.com\n *\n * THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n * Copyright (c) 2012-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* DES API */\nmodule.exports = forge.des = forge.des || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-<mode>', key);\n * cipher.start({iv: iv});\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-<mode>', key);\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-<mode>', key);\n * decipher.start({iv: iv});\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-<mode>', key);\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new DES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the DES algorithm object.\n */\nforge.des.Algorithm = function(name, mode) {\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 8,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, false);\n Line truncated
|
||||
"/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n",
|
||||
"/**\n * Hash-based Message Authentication Code implementation. Requires a message\n * digest object that can be obtained, for example, from forge.md.sha1 or\n * forge.md.md5.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2012 Digital Bazaar, Inc. All rights reserved.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\n/* HMAC API */\nvar hmac = module.exports = forge.hmac = forge.hmac || {};\n\n/**\n * Creates an HMAC object that uses the given message digest object.\n *\n * @return an HMAC object.\n */\nhmac.create = function() {\n // the hmac key to use\n var _key = null;\n\n // the message digest to use\n var _md = null;\n\n // the inner padding\n var _ipadding = null;\n\n // the outer padding\n var _opadding = null;\n\n // hmac context\n var ctx = {};\n\n /**\n * Starts or restarts the HMAC with the given key and message digest.\n *\n * @param md the message digest to use, null to reuse the previous one,\n * a string to use builtin 'sha1', 'md5', 'sha256'.\n * @param key the key to use as a string, array of bytes, byte buffer,\n * or null to reuse the previous key.\n */\n ctx.start = function(md, key) {\n if(md !== null) {\n if(typeof md === 'string') {\n // create builtin message digest\n md = md.toLowerCase();\n if(md in forge.md.algorithms) {\n _md = forge.md.algorithms[md].create();\n } else {\n throw new Error('Unknown hash algorithm \"' + md + '\"');\n }\n } else {\n // store message digest\n _md = md;\n }\n }\n\n if(key === null) {\n // reuse previous key\n key = _key;\n } else {\n if(typeof key === 'string') {\n // convert string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key)) {\n // convert byte array into byte buffer\n var tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // if key is longer than blocksize, hash it\n var keylen = key.length();\n if(keylen > _md.blockLength) {\n _md.start();\n _md.update(key.bytes());\n key = _md.digest();\n }\n\n // mix key into inner and outer padding\n // ipadding = [0x36 * blocksize] ^ key\n // opadding = [0x5C * blocksize] ^ key\n _ipadding = forge.util.createBuffer();\n _opadding = forge.util.createBuffer();\n keylen = key.length();\n for(var i = 0; i < keylen; ++i) {\n var tmp = key.at(i);\n _ipadding.putByte(0x36 ^ tmp);\n _opadding.putByte(0x5C ^ tmp);\n }\n\n // if key is shorter than blocksize, add additional padding\n if(keylen < _md.blockLength) {\n var tmp = _md.blockLength - keylen;\n for(var i = 0; i < tmp; ++i) {\n _ipadding.putByte(0x36);\n _opadding.putByte(0x5C);\n }\n }\n _key = key;\n _ipadding = _ipadding.bytes();\n _opadding = _opadding.bytes();\n }\n\n // digest is done like so: hash(opadding | hash(ipadding | message))\n\n // prepare to do inner hash\n // hash(ipadding | message)\n _md.start();\n _md.update(_ipadding);\n };\n\n /**\n * Updates the HMAC with the given message bytes.\n *\n * @param bytes the bytes to update with.\n */\n ctx.update = function(bytes) {\n _md.update(bytes);\n };\n\n /**\n * Produces the Message Authentication Code (MAC).\n *\n * @return a byte buffer containing the digest value.\n */\n ctx.getMac = function() {\n // digest is done like so: hash(opadding | hash(ipadding | message))\n // here we do the outer hashing\n var inner = _md.digest().bytes();\n _md.start();\n _md.update(_opadding);\n _md.update(inner);\n return _md.digest();\n };\n // alias for getMac\n ctx.digest = ctx.getMac;\n\n return ctx;\n};\n",
|
||||
"/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = require('./forge');\nrequire('./aes');\nrequire('./aesCipherSuites');\nrequire('./asn1');\nrequire('./cipher');\nrequire('./debug');\nrequire('./des');\nrequire('./hmac');\nrequire('./kem');\nrequire('./log');\nrequire('./md.all');\nrequire('./mgf1');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./pkcs1');\nrequire('./pkcs12');\nrequire('./pkcs7');\nrequire('./pki');\nrequire('./prime');\nrequire('./prng');\nrequire('./pss');\nrequire('./random');\nrequire('./rc2');\nrequire('./ssh');\nrequire('./task');\nrequire('./tls');\nrequire('./util');\n",
|
||||
"// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\n*/\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n this.data = [];\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\nforge.jsbn.BigInteger = BigInteger;\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<<dbits)-1);\nBigInteger.prototype.DV = (1<<dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2,BI_FP);\nBigInteger.prototype.F1 = BI_FP-dbits;\nBigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr,vv;\nrr = \"0\".charCodeAt(0);\nfor(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) { return BI_RM.charAt(n); }\nfunction intAt(s,i) {\n var c = BI_RC[s.charCoLine truncated
|
||||
"/**\n * Javascript implementation of RSA-KEM.\n *\n * @author Lautaro Cozzani Rodriguez\n * @author Dave Longley\n *\n * Copyright (c) 2014 Lautaro Cozzani <lautaro.cozzani@scytl.com>\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./jsbn');\n\nmodule.exports = forge.kem = forge.kem || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n/**\n * The API for the RSA Key Encapsulation Mechanism (RSA-KEM) from ISO 18033-2.\n */\nforge.kem.rsa = {};\n\n/**\n * Creates an RSA KEM API object for generating a secret asymmetric key.\n *\n * The symmetric key may be generated via a call to 'encrypt', which will\n * produce a ciphertext to be transmitted to the recipient and a key to be\n * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which\n * will produce the same secret key for the recipient to use to decrypt a\n * message that was encrypted with the secret key.\n *\n * @param kdf the KDF API to use (eg: new forge.kem.kdf1()).\n * @param options the options to use.\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n */\nforge.kem.rsa.create = function(kdf, options) {\n options = options || {};\n var prng = options.prng || forge.random;\n\n var kem = {};\n\n /**\n * Generates a secret key and its encapsulation.\n *\n * @param publicKey the RSA public key to encrypt with.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return an object with:\n * encapsulation: the ciphertext for generating the secret key, as a\n * binary-encoded string of bytes.\n * key: the secret key to use for encrypting a message.\n */\n kem.encrypt = function(publicKey, keyLength) {\n // generate a random r where 1 > r > n\n var byteLength = Math.ceil(publicKey.n.bitLength() / 8);\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(prng.getBytesSync(byteLength)),\n 16).mod(publicKey.n);\n } while(r.equals(BigInteger.ZERO));\n\n // prepend r with zeros\n r = forge.util.hexToBytes(r.toString(16));\n var zeros = byteLength - r.length;\n if(zeros > 0) {\n r = forge.util.fillString(String.fromCharCode(0), zeros) + r;\n }\n\n // encrypt the random\n var encapsulation = publicKey.encrypt(r, 'NONE');\n\n // generate the secret key\n var key = kdf.generate(r, keyLength);\n\n return {encapsulation: encapsulation, key: key};\n };\n\n /**\n * Decrypts an encapsulated secret key.\n *\n * @param privateKey the RSA private key to decrypt with.\n * @param encapsulation the ciphertext for generating the secret key, as\n * a binary-encoded string of bytes.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return the secret key as a binary-encoded string of bytes.\n */\n kem.decrypt = function(privateKey, encapsulation, keyLength) {\n // decrypt the encapsulation and generate the secret key\n var r = privateKey.decrypt(encapsulation, 'NONE');\n return kdf.generate(r, keyLength);\n };\n\n return kem;\n};\n\n// TODO: add forge.kem.kdf.create('KDF1', {md: ..., ...}) API?\n\n/**\n * Creates a key derivation API object that implements KDF1 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF1 API object.\n */\nforge.kem.kdf1 = function(md, digestLength) {\n _createKDF(this, md, 0, digestLength || md.digestLength);\n};\n\n/**\n * Creates a key derivation API object that implements KDF2 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF2 API object.\n */\nforge.kem.kdf2 = function(md, digestLength) {\n _createKDF(this, md, 1, digestLength || md.digestLength);\n};\n\n/**\n * Creates a KDF1 or KDF2 API object.\n *\n * @param md the hash API to use.\n * @param counterStart the starting index for the counter.\n * @param digestLength the digest length to use.\n *\n * @return the KDF API object.\n */\nfunction _createKDF(kdf, md, counterStart, digestLength) {\n /**\n * Generate a key of the specified length.\n *\n * @param x the binary-encoded byte string to generate a key from.\n * @param length the number of bytes to generate (the size of the key).\n *\n * @return the key as a binary-encoded string.\n */\n kdf.generate = function(x, length) {\n var key = new forge.util.ByteBuffer();\n\n // run counter from counterStart to ceil(length / Hash.len)\n var k = Math.ceil(length / digestLength) + counterStart;\n\n var c = new forge.util.ByteBuffer();\n for(var i = counterStart; i < k; ++i) {\n // I2OSP(i, 4): convert counter to aLine truncated
|
||||
"/**\n * Cross-browser support for logging in a web application.\n *\n * @author David I. Lehn <dlehn@digitalbazaar.com>\n *\n * Copyright (c) 2008-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n/* LOG API */\nmodule.exports = forge.log = forge.log || {};\n\n/**\n * Application logging system.\n *\n * Each logger level available as it's own function of the form:\n * forge.log.level(category, args...)\n * The category is an arbitrary string, and the args are the same as\n * Firebug's console.log API. By default the call will be output as:\n * 'LEVEL [category] <args[0]>, args[1], ...'\n * This enables proper % formatting via the first argument.\n * Each category is enabled by default but can be enabled or disabled with\n * the setCategoryEnabled() function.\n */\n// list of known levels\nforge.log.levels = [\n 'none', 'error', 'warning', 'info', 'debug', 'verbose', 'max'];\n// info on the levels indexed by name:\n// index: level index\n// name: uppercased display name\nvar sLevelInfo = {};\n// list of loggers\nvar sLoggers = [];\n/**\n * Standard console logger. If no console support is enabled this will\n * remain null. Check before using.\n */\nvar sConsoleLogger = null;\n\n// logger flags\n/**\n * Lock the level at the current value. Used in cases where user config may\n * set the level such that only critical messages are seen but more verbose\n * messages are needed for debugging or other purposes.\n */\nforge.log.LEVEL_LOCKED = (1 << 1);\n/**\n * Always call log function. By default, the logging system will check the\n * message level against logger.level before calling the log function. This\n * flag allows the function to do its own check.\n */\nforge.log.NO_LEVEL_CHECK = (1 << 2);\n/**\n * Perform message interpolation with the passed arguments. \"%\" style\n * fields in log messages will be replaced by arguments as needed. Some\n * loggers, such as Firebug, may do this automatically. The original log\n * message will be available as 'message' and the interpolated version will\n * be available as 'fullMessage'.\n */\nforge.log.INTERPOLATE = (1 << 3);\n\n// setup each log level\nfor(var i = 0; i < forge.log.levels.length; ++i) {\n var level = forge.log.levels[i];\n sLevelInfo[level] = {\n index: i,\n name: level.toUpperCase()\n };\n}\n\n/**\n * Message logger. Will dispatch a message to registered loggers as needed.\n *\n * @param message message object\n */\nforge.log.logMessage = function(message) {\n var messageLevelIndex = sLevelInfo[message.level].index;\n for(var i = 0; i < sLoggers.length; ++i) {\n var logger = sLoggers[i];\n if(logger.flags & forge.log.NO_LEVEL_CHECK) {\n logger.f(message);\n } else {\n // get logger level\n var loggerLevelIndex = sLevelInfo[logger.level].index;\n // check level\n if(messageLevelIndex <= loggerLevelIndex) {\n // message critical enough, call logger\n logger.f(logger, message);\n }\n }\n }\n};\n\n/**\n * Sets the 'standard' key on a message object to:\n * \"LEVEL [category] \" + message\n *\n * @param message a message log object\n */\nforge.log.prepareStandard = function(message) {\n if(!('standard' in message)) {\n message.standard =\n sLevelInfo[message.level].name +\n //' ' + +message.timestamp +\n ' [' + message.category + '] ' +\n message.message;\n }\n};\n\n/**\n * Sets the 'full' key on a message object to the original message\n * interpolated via % formatting with the message arguments.\n *\n * @param message a message log object.\n */\nforge.log.prepareFull = function(message) {\n if(!('full' in message)) {\n // copy args and insert message at the front\n var args = [message.message];\n args = args.concat([] || message['arguments']);\n // format the message\n message.full = forge.util.format.apply(this, args);\n }\n};\n\n/**\n * Applies both preparseStandard() and prepareFull() to a message object and\n * store result in 'standardFull'.\n *\n * @param message a message log object.\n */\nforge.log.prepareStandardFull = function(message) {\n if(!('standardFull' in message)) {\n // FIXME implement 'standardFull' logging\n forge.log.prepareStandard(message);\n message.standardFull = message.standard;\n }\n};\n\n// create log level functions\nif(true) {\n // levels for which we want functions\n var levels = ['error', 'warning', 'info', 'debug', 'verbose'];\n for(var i = 0; i < levels.length; ++i) {\n // wrap in a function to ensure proper level var is passed\n (function(level) {\n // create function for this level\n forge.log[level] = function(category, message/*, args...*/) {\n // convert arguments to real array, remove category and message\n var args = Array.prototype.slice.call(arguments).slice(2);\n // create message object\n // Note: interpolation and standard formatting is done lazily\n var msg = {\n timestamp: new Line truncated
|
||||
"/**\n * Node.js module for all known Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nmodule.exports = require('./md');\n\nrequire('./md5');\nrequire('./sha1');\nrequire('./sha256');\nrequire('./sha512');\n",
|
||||
"/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n",
|
||||
"/**\n * Message Digest Algorithm 5 with 128-bit digest (MD5) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar md5 = module.exports = forge.md5 = forge.md5 || {};\nforge.md.md5 = forge.md.algorithms.md5 = md5;\n\n/**\n * Creates an MD5 message digest object.\n *\n * @return a message digest object.\n */\nmd5.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // MD5 state contains four 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(16);\n\n // message digest object\n var md = {\n algorithm: 'md5',\n blockLength: 64,\n digestLength: 16,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = (len[1] / 0x100000000) >>> 0;\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate MD5 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in little-endian order; since length\n // is stored in bytes we multiply by 8 andLine truncated
|
||||
"/**\n * Node.js module for Forge mask generation functions.\n *\n * @author Stefan Siegl\n *\n * Copyright 2012 Stefan Siegl <stesie@brokenpipe.de>\n */\nvar forge = require('./forge');\nrequire('./mgf1');\n\nmodule.exports = forge.mgf = forge.mgf || {};\nforge.mgf.mgf1 = forge.mgf1;\n",
|
||||
"/**\n * Javascript implementation of mask generation function MGF1.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.mgf = forge.mgf || {};\nvar mgf1 = module.exports = forge.mgf.mgf1 = forge.mgf1 = forge.mgf1 || {};\n\n/**\n * Creates a MGF1 mask generation function object.\n *\n * @param md the message digest API to use (eg: forge.md.sha1.create()).\n *\n * @return a mask generation function object.\n */\nmgf1.create = function(md) {\n var mgf = {\n /**\n * Generate mask of specified length.\n *\n * @param {String} seed The seed for mask generation.\n * @param maskLen Number of bytes to generate.\n * @return {String} The generated mask.\n */\n generate: function(seed, maskLen) {\n /* 2. Let T be the empty octet string. */\n var t = new forge.util.ByteBuffer();\n\n /* 3. For counter from 0 to ceil(maskLen / hLen), do the following: */\n var len = Math.ceil(maskLen / md.digestLength);\n for(var i = 0; i < len; i++) {\n /* a. Convert counter to an octet string C of length 4 octets */\n var c = new forge.util.ByteBuffer();\n c.putInt32(i);\n\n /* b. Concatenate the hash of the seed mgfSeed and C to the octet\n * string T: */\n md.start();\n md.update(seed + c.getBytes());\n t.putBuffer(md.digest());\n }\n\n /* Output the leading maskLen octets of T as the octet string mask. */\n t.truncate(t.length() - maskLen);\n return t.getBytes();\n }\n };\n\n return mgf;\n};\n",
|
||||
"/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.5', 'serialName');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21'Line truncated
|
||||
"/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl <stesie@brokenpipe.de>\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * ELine truncated
|
||||
"/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = new Buffer(p, 'binary');\n s = new Buffer(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.subsLine truncated
|
||||
"/**\n * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.\n *\n * See: RFC 1421.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n *\n * A Forge PEM object has the following fields:\n *\n * type: identifies the type of message (eg: \"RSA PRIVATE KEY\").\n *\n * procType: identifies the type of processing performed on the message,\n * it has two subfields: version and type, eg: 4,ENCRYPTED.\n *\n * contentDomain: identifies the type of content in the message, typically\n * only uses the value: \"RFC822\".\n *\n * dekInfo: identifies the message encryption algorithm and mode and includes\n * any parameters for the algorithm, it has two subfields: algorithm and\n * parameters, eg: DES-CBC,F8143EDE5960C597.\n *\n * headers: contains all other PEM encapsulated headers -- where order is\n * significant (for pairing data like recipient ID + key info).\n *\n * body: the binary-encoded body.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n// shortcut for pem API\nvar pem = module.exports = forge.pem = forge.pem || {};\n\n/**\n * Encodes (serializes) the given PEM object.\n *\n * @param msg the PEM message object to encode.\n * @param options the options to use:\n * maxline the maximum characters per line for the body, (default: 64).\n *\n * @return the PEM-formatted string.\n */\npem.encode = function(msg, options) {\n options = options || {};\n var rval = '-----BEGIN ' + msg.type + '-----\\r\\n';\n\n // encode special headers\n var header;\n if(msg.procType) {\n header = {\n name: 'Proc-Type',\n values: [String(msg.procType.version), msg.procType.type]\n };\n rval += foldHeader(header);\n }\n if(msg.contentDomain) {\n header = {name: 'Content-Domain', values: [msg.contentDomain]};\n rval += foldHeader(header);\n }\n if(msg.dekInfo) {\n header = {name: 'DEK-Info', values: [msg.dekInfo.algorithm]};\n if(msg.dekInfo.parameters) {\n header.values.push(msg.dekInfo.parameters);\n }\n rval += foldHeader(header);\n }\n\n if(msg.headers) {\n // encode all other headers\n for(var i = 0; i < msg.headers.length; ++i) {\n rval += foldHeader(msg.headers[i]);\n }\n }\n\n // terminate header\n if(msg.procType) {\n rval += '\\r\\n';\n }\n\n // add body\n rval += forge.util.encode64(msg.body, options.maxline || 64) + '\\r\\n';\n\n rval += '-----END ' + msg.type + '-----\\r\\n';\n return rval;\n};\n\n/**\n * Decodes (deserializes) all PEM messages found in the given string.\n *\n * @param str the PEM-formatted string to decode.\n *\n * @return the PEM message objects in an array.\n */\npem.decode = function(str) {\n var rval = [];\n\n // split string into PEM messages (be lenient w/EOF on BEGIN line)\n var rMessage = /\\s*-----BEGIN ([A-Z0-9- ]+)-----\\r?\\n?([\\x21-\\x7e\\s]+?(?:\\r?\\n\\r?\\n))?([:A-Za-z0-9+\\/=\\s]+?)-----END \\1-----/g;\n var rHeader = /([\\x21-\\x7e]+):\\s*([\\x21-\\x7e\\s^:]+)/;\n var rCRLF = /\\r?\\n/;\n var match;\n while(true) {\n match = rMessage.exec(str);\n if(!match) {\n break;\n }\n\n var msg = {\n type: match[1],\n procType: null,\n contentDomain: null,\n dekInfo: null,\n headers: [],\n body: forge.util.decode64(match[3])\n };\n rval.push(msg);\n\n // no headers\n if(!match[2]) {\n continue;\n }\n\n // parse headers\n var lines = match[2].split(rCRLF);\n var li = 0;\n while(match && li < lines.length) {\n // get line, trim any rhs whitespace\n var line = lines[li].replace(/\\s+$/, '');\n\n // RFC2822 unfold any following folded lines\n for(var nl = li + 1; nl < lines.length; ++nl) {\n var next = lines[nl];\n if(!/\\s/.test(next[0])) {\n break;\n }\n line += next;\n li = nl;\n }\n\n // parse header\n match = line.match(rHeader);\n if(match) {\n var header = {name: match[1], values: []};\n var values = match[2].split(',');\n for(var vi = 0; vi < values.length; ++vi) {\n header.values.push(ltrim(values[vi]));\n }\n\n // Proc-Type must be the first header\n if(!msg.procType) {\n if(header.name !== 'Proc-Type') {\n throw new Error('Invalid PEM formatted message. The first ' +\n 'encapsulated header must be \"Proc-Type\".');\n } else if(header.values.length !== 2) {\n throw new Error('Invalid PEM formatted message. The \"Proc-Type\" ' +\n 'header must have two subfields.');\n }\n msg.procType = {version: values[0], type: values[1]};\n } else if(!msg.contentDomain && header.name === 'Content-Domain') {\n // special-case Content-Domain\n msg.contentDomain = values[0] || '';\n } else if(!msg.dekInfo && header.name === 'DEK-Info') {\n // special-case DEK-Info\n if(header.values.length === 0) Line truncated
|
||||
"/**\n * Partial implementation of PKCS#1 v2.2: RSA-OEAP\n *\n * Modified but based on the following MIT and BSD licensed code:\n *\n * https://github.com/kjur/jsjws/blob/master/rsa.js:\n *\n * The 'jsjws'(JSON Web Signature JavaScript Library) License\n *\n * Copyright (c) 2012 Kenji Urushima\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain:\n *\n * RSAES-OAEP.js\n * $Id: RSAES-OAEP.js,v 1.1.1.1 2003/03/19 15:37:20 ellispritchard Exp $\n * JavaScript Implementation of PKCS #1 v2.1 RSA CRYPTOGRAPHY STANDARD (RSA Laboratories, June 14, 2002)\n * Copyright (C) Ellis Pritchard, Guardian Unlimited 2003.\n * Contact: ellis@nukinetics.com\n * Distributed under the BSD License.\n *\n * Official documentation: http://www.rsa.com/rsalabs/node.asp?id=2125\n *\n * @author Evan Jones (http://evanjones.ca/)\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./sha1');\n\n// shortcut for PKCS#1 API\nvar pkcs1 = module.exports = forge.pkcs1 = forge.pkcs1 || {};\n\n/**\n * Encode the given RSAES-OAEP message (M) using key, with optional label (L)\n * and seed.\n *\n * This method does not perform RSA encryption, it only encodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param message the message to encode.\n * @param options the options to use:\n * label an optional label to use.\n * seed the seed to use.\n * md the message digest object to use, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the encoded message bytes.\n */\npkcs1.encode_rsa_oaep = function(key, message, options) {\n // parse arguments\n var label;\n var seed;\n var md;\n var mgf1Md;\n // legacy args (label, seed, md)\n if(typeof options === 'string') {\n label = options;\n seed = arguments[3] || undefined;\n md = arguments[4] || undefined;\n } else if(options) {\n label = options.label || undefined;\n seed = options.seed || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // default OAEP to SHA-1 message digest\n if(!md) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n // compute length in bytes and check output\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n var maxLength = keyLength - 2 * md.digestLength - 2;\n if(message.length > maxLength) {\n var error = new Error('RSAES-OAEP input message length is too long.');\n error.length = message.length;\n error.maxLength = maxLength;\n throw error;\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest();\n\n var PS = '';\n var PS_length = maxLength - message.length;\n for (var i = 0; i < PS_length; i++) {\n PS += '\\x00';\n }\n\n var DB = lHash.getBytes() + PS + '\\x01' + message;\n\n if(!seed) {\n seed = forge.random.getBytes(md.digestLength);\n } else if(seed.length !== md.digestLength) {\n var error = new Error('Invalid RSAES-OAEP seed. The seed length must ' +\n 'match the digest length.');\n error.seedLength = seed.length;\n error.digestLength = md.digestLength;\n throw error;\n }\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var maskedDB = forge.util.xorBytes(DB, dbMask, DB.length);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var maskedSeed = forge.util.xorBytes(seed, seedMask, seed.length);\n\n // return encoded message\n return '\\x00' + maskedSeed + maskedDB;\n};\n\n/**\n * Decode the given RSAES-OAEP encoded message (EM) using key, wiLine truncated
|
||||
"/**\n * Javascript implementation of PKCS#12.\n *\n * @author Dave Longley\n * @author Stefan Siegl <stesie@brokenpipe.de>\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n *\n * The ASN.1 representation of PKCS#12 is as follows\n * (see ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12-tc1.pdf for details)\n *\n * PFX ::= SEQUENCE {\n * version INTEGER {v3(3)}(v3,...),\n * authSafe ContentInfo,\n * macData MacData OPTIONAL\n * }\n *\n * MacData ::= SEQUENCE {\n * mac DigestInfo,\n * macSalt OCTET STRING,\n * iterations INTEGER DEFAULT 1\n * }\n * Note: The iterations default is for historical reasons and its use is\n * deprecated. A higher value, like 1024, is recommended.\n *\n * DigestInfo is defined in PKCS#7 as follows:\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of SHA1 there is none.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * Digest ::= OCTET STRING\n *\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * AuthenticatedSafe ::= SEQUENCE OF ContentInfo\n * -- Data if unencrypted\n * -- EncryptedData if password-encrypted\n * -- EnvelopedData if public key-encrypted\n *\n *\n * SafeContents ::= SEQUENCE OF SafeBag\n *\n * SafeBag ::= SEQUENCE {\n * bagId BAG-TYPE.&id ({PKCS12BagSet})\n * bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),\n * bagAttributes SET OF PKCS12Attribute OPTIONAL\n * }\n *\n * PKCS12Attribute ::= SEQUENCE {\n * attrId ATTRIBUTE.&id ({PKCS12AttrSet}),\n * attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})\n * } -- This type is compatible with the X.500 type ’Attribute’\n *\n * PKCS12AttrSet ATTRIBUTE ::= {\n * friendlyName | -- from PKCS #9\n * localKeyId, -- from PKCS #9\n * ... -- Other attributes are allowed\n * }\n *\n * CertBag ::= SEQUENCE {\n * certId BAG-TYPE.&id ({CertTypes}),\n * certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId})\n * }\n *\n * x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}}\n * -- DER-encoded X.509 certificate stored in OCTET STRING\n *\n * sdsiCertificate BAG-TYPE ::= {IA5String IDENTIFIED BY {certTypes 2}}\n * -- Base64-encoded SDSI certificate stored in IA5String\n *\n * CertTypes BAG-TYPE ::= {\n * x509Certificate |\n * sdsiCertificate,\n * ... -- For future extensions\n * }\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./hmac');\nrequire('./oids');\nrequire('./pkcs7asn1');\nrequire('./pbe');\nrequire('./random');\nrequire('./rsa');\nrequire('./sha1');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 & PKI API\nvar asn1 = forge.asn1;\nvar pki = forge.pki;\n\n// shortcut for PKCS#12 API\nvar p12 = module.exports = forge.pkcs12 = forge.pkcs12 || {};\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // a ContentInfo\n constructed: true,\n value: [{\n name: 'ContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n captureAsn1: 'content'\n }]\n};\n\nvar pfxValidator = {\n name: 'PFX',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PFX.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n },\n contentInfoValidator, {\n name: 'PFX.macData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'mac',\n value: [{\n name: 'PFX.macData.mac',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestInfo\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestAlgorithmIdentifier\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'macAlgorithm'\n }, {\n name: 'PFX.macData.mac.digestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n captureAsn1: 'macAlgorithmParameters'\n }]\n }, {\n name: Line truncated
|
||||
"/**\n * Javascript implementation of PKCS#7 v1.5.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n *\n * Currently this implementation only supports ContentType of EnvelopedData,\n * EncryptedData, or SignedData at the root level. The top level elements may\n * contain only a ContentInfo of ContentType Data, i.e. plain data. Further\n * nesting is not (yet) supported.\n *\n * The Forge validators for PKCS #7's ASN.1 structures are available from\n * a separate file pkcs7asn1.js, since those are referenced from other\n * PKCS standards like PKCS #12.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./oids');\nrequire('./pem');\nrequire('./pkcs7asn1');\nrequire('./random');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7 = module.exports = forge.pkcs7 = forge.pkcs7 || {};\n\n/**\n * Converts a PKCS#7 message from PEM format.\n *\n * @param pem the PEM-formatted PKCS#7 message.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PKCS7') {\n var error = new Error('Could not convert PKCS#7 message from PEM; PEM ' +\n 'header type is not \"PKCS#7\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PKCS#7 message from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return p7.messageFromAsn1(obj);\n};\n\n/**\n * Converts a PKCS#7 message to PEM format.\n *\n * @param msg The PKCS#7 message object\n * @param maxline The maximum characters per line, defaults to 64.\n *\n * @return The PEM-formatted PKCS#7 message.\n */\np7.messageToPem = function(msg, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var pemObj = {\n type: 'PKCS7',\n body: asn1.toDer(msg.toAsn1()).getBytes()\n };\n return forge.pem.encode(pemObj, {maxline: maxline});\n};\n\n/**\n * Converts a PKCS#7 message from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a ContentInfo.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromAsn1 = function(obj) {\n // validate root level ContentInfo and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.contentInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 message. ' +\n 'ASN.1 object is not an PKCS#7 ContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var contentType = asn1.derToOid(capture.contentType);\n var msg;\n\n switch(contentType) {\n case forge.pki.oids.envelopedData:\n msg = p7.createEnvelopedData();\n break;\n\n case forge.pki.oids.encryptedData:\n msg = p7.createEncryptedData();\n break;\n\n case forge.pki.oids.signedData:\n msg = p7.createSignedData();\n break;\n\n default:\n throw new Error('Cannot read PKCS#7 message. ContentType with OID ' +\n contentType + ' is not (yet) supported.');\n }\n\n msg.fromAsn1(capture.content.value[0]);\n return msg;\n};\n\np7.createSignedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.signedData,\n version: 1,\n certificates: [],\n crls: [],\n // TODO: add json-formatted signer stuff here?\n signers: [],\n // populated during sign()\n digestAlgorithmIdentifiers: [],\n contentInfo: null,\n signerInfos: [],\n\n fromAsn1: function(obj) {\n // validate SignedData content block and capture data.\n _fromAsn1(msg, obj, p7.asn1.signedDataValidator);\n msg.certificates = [];\n msg.crls = [];\n msg.digestAlgorithmIdentifiers = [];\n msg.contentInfo = null;\n msg.signerInfos = [];\n\n var certs = msg.rawCapture.certificates.value;\n for(var i = 0; i < certs.length; ++i) {\n msg.certificates.push(forge.pki.certificateFromAsn1(certs[i]));\n }\n\n // TODO: parse crls\n },\n\n toAsn1: function() {\n // degenerate case with no content\n if(!msg.contentInfo) {\n msg.sign();\n }\n\n var certs = [];\n for(var i = 0; i < msg.certificates.length; ++i) {\n certs.push(forge.pki.certificateToAsn1(msg.certificates[i]));\n }\n\n var crls = [];\n // TODO: implement CRLs\n\n // [0] SignedData\n var signedData = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(msg.version).getBytes()),\n // DigestAlgorithmIdentifiers\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SET, trLine truncated
|
||||
"/**\n * Javascript implementation of ASN.1 validators for PKCS#7 v1.5.\n *\n * @author Dave Longley\n * @author Stefan Siegl\n *\n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n *\n * The ASN.1 representation of PKCS#7 is as follows\n * (see RFC #2315 for details, http://www.ietf.org/rfc/rfc2315.txt):\n *\n * A PKCS#7 message consists of a ContentInfo on root level, which may\n * contain any number of further ContentInfo nested into it.\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * EnvelopedData ::= SEQUENCE {\n * version Version,\n * recipientInfos RecipientInfos,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * EncryptedData ::= SEQUENCE {\n * version Version,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)\n * us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }\n *\n * SignedData ::= SEQUENCE {\n * version INTEGER,\n * digestAlgorithms DigestAlgorithmIdentifiers,\n * contentInfo ContentInfo,\n * certificates [0] IMPLICIT Certificates OPTIONAL,\n * crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,\n * signerInfos SignerInfos\n * }\n *\n * SignerInfos ::= SET OF SignerInfo\n *\n * SignerInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * digestAlgorithm DigestAlgorithmIdentifier,\n * authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,\n * digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,\n * encryptedDigest EncryptedDigest,\n * unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL\n * }\n *\n * EncryptedDigest ::= OCTET STRING\n *\n * Attributes ::= SET OF Attribute\n *\n * Attribute ::= SEQUENCE {\n * attrType OBJECT IDENTIFIER,\n * attrValues SET OF AttributeValue\n * }\n *\n * AttributeValue ::= ANY\n *\n * Version ::= INTEGER\n *\n * RecipientInfos ::= SET OF RecipientInfo\n *\n * EncryptedContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,\n * encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL\n * }\n *\n * ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of AES and DES3, there is only one,\n * the IV.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * EncryptedContent ::= OCTET STRING\n *\n * RecipientInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,\n * encryptedKey EncryptedKey\n * }\n *\n * IssuerAndSerialNumber ::= SEQUENCE {\n * issuer Name,\n * serialNumber CertificateSerialNumber\n * }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedKey ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./util');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7v = module.exports = forge.pkcs7asn1 = forge.pkcs7asn1 || {};\nforge.pkcs7 = forge.pkcs7 || {};\nforge.pkcs7.asn1 = p7v;\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'ContentInfo.ContentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n captureAsn1: 'content'\n }]\n};\np7v.contentInfoValidator = contentInfoValidator;\n\nvar encryptedContentInfoValidator = {\n name: 'EncryptedContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constrLine truncated
|
||||
"/**\n * Javascript implementation of a basic Public Key Infrastructure, including\n * support for RSA public and private keys.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./oids');\nrequire('./pbe');\nrequire('./pem');\nrequire('./pbkdf2');\nrequire('./pkcs12');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED. Use pem.decode() instead.\n *\n * Converts PEM-formatted data to DER.\n *\n * @param pem the PEM-formatted data.\n *\n * @return the DER-formatted data.\n */\npki.pemToDer = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PEM to DER; PEM is encrypted.');\n }\n return forge.util.createBuffer(msg.body);\n};\n\n/**\n * Converts an RSA private key from PEM format.\n *\n * @param pem the PEM-formatted private key.\n *\n * @return the private key.\n */\npki.privateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PRIVATE KEY' && msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM ' +\n 'header type is not \"PRIVATE KEY\" or \"RSA PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert private key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.privateKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA private key to PEM format.\n *\n * @param key the private key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PRIVATE KEY',\n body: asn1.toDer(pki.privateKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PrivateKeyInfo to PEM format.\n *\n * @param pki the PrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyInfoToPem = function(pki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'PRIVATE KEY',\n body: asn1.toDer(pki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n",
|
||||
"/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: <the maximum amount of time to block the main\n * thread before allowing I/O other JS to run>,\n * millerRabinTests: <the number of miller-rabin tests to run>,\n * workerScript: <the worker script URL>,\n * workers: <the number of web workers (if supported) to use,\n * -1 to use estimated cores minus one>.\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFinLine truncated
|
||||
"/**\n * A javascript implementation of a cryptographically-secure\n * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed\n * here though the use of SHA-256 is not enforced; when generating an\n * a PRNG context, the hashing algorithm and block cipher used for\n * the generator are specified via a plugin.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar _crypto = null;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n !process.versions['node-webkit']) {\n _crypto = require('crypto');\n}\n\n/* PRNG API */\nvar prng = module.exports = forge.prng = forge.prng || {};\n\n/**\n * Creates a new PRNG context.\n *\n * A PRNG plugin must be passed in that will provide:\n *\n * 1. A function that initializes the key and seed of a PRNG context. It\n * will be given a 16 byte key and a 16 byte seed. Any key expansion\n * or transformation of the seed from a byte string into an array of\n * integers (or similar) should be performed.\n * 2. The cryptographic function used by the generator. It takes a key and\n * a seed.\n * 3. A seed increment function. It takes the seed and returns seed + 1.\n * 4. An api to create a message digest.\n *\n * For an example, see random.js.\n *\n * @param plugin the PRNG plugin to use.\n */\nprng.create = function(plugin) {\n var ctx = {\n plugin: plugin,\n key: null,\n seed: null,\n time: null,\n // number of reseeds so far\n reseeds: 0,\n // amount of data generated so far\n generated: 0\n };\n\n // create 32 entropy pools (each is a message digest)\n var md = plugin.md;\n var pools = new Array(32);\n for(var i = 0; i < 32; ++i) {\n pools[i] = md.create();\n }\n ctx.pools = pools;\n\n // entropy pools are written to cyclically, starting at index 0\n ctx.pool = 0;\n\n /**\n * Generates random bytes. The bytes may be generated synchronously or\n * asynchronously. Web workers must use the asynchronous interface or\n * else the behavior is undefined.\n *\n * @param count the number of random bytes to generate.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return count random bytes as a string.\n */\n ctx.generate = function(count, callback) {\n // do synchronously\n if(!callback) {\n return ctx.generateSync(count);\n }\n\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n var b = forge.util.createBuffer();\n\n // reset key for every request\n ctx.key = null;\n\n generate();\n\n function generate(err) {\n if(err) {\n return callback(err);\n }\n\n // sufficient bytes generated\n if(b.length() >= count) {\n return callback(null, b.getBytes(count));\n }\n\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n // prevent stack overflow\n return forge.util.nextTick(function() {\n _reseed(generate);\n });\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n\n forge.util.setImmediate(generate);\n }\n };\n\n /**\n * Generates random bytes synchronously.\n *\n * @param count the number of random bytes to generate.\n *\n * @return count random bytes as a string.\n */\n ctx.generateSync = function(count) {\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n\n // reset key for every request\n ctx.key = null;\n\n var b = forge.util.createBuffer();\n while(b.length() < count) {\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n _reseedSync();\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n }\n\n return b.getBytes(count);\n };\n\n /**\n * Private function that asynchronously reseeds a generator.\n *\n * @param callback(err) called once the operation completes.\n */\n function _reseed(calLine truncated
|
||||
"/**\n * Javascript implementation of PKCS#1 PSS signature padding.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n */\nvar forge = require('./forge');\nrequire('./random');\nrequire('./util');\n\n// shortcut for PSS API\nvar pss = module.exports = forge.pss = forge.pss || {};\n\n/**\n * Creates a PSS signature scheme object.\n *\n * There are several ways to provide a salt for encoding:\n *\n * 1. Specify the saltLength only and the built-in PRNG will generate it.\n * 2. Specify the saltLength and a custom PRNG with 'getBytesSync' defined that\n * will be used.\n * 3. Specify the salt itself as a forge.util.ByteBuffer.\n *\n * @param options the options to use:\n * md the message digest object to use, a forge md instance.\n * mgf the mask generation function to use, a forge mgf instance.\n * [saltLength] the length of the salt in octets.\n * [prng] the pseudo-random number generator to use to produce a salt.\n * [salt] the salt to use when encoding.\n *\n * @return a signature scheme object.\n */\npss.create = function(options) {\n // backwards compatibility w/legacy args: hash, mgf, sLen\n if(arguments.length === 3) {\n options = {\n md: arguments[0],\n mgf: arguments[1],\n saltLength: arguments[2]\n };\n }\n\n var hash = options.md;\n var mgf = options.mgf;\n var hLen = hash.digestLength;\n\n var salt_ = options.salt || null;\n if(typeof salt_ === 'string') {\n // assume binary-encoded string\n salt_ = forge.util.createBuffer(salt_);\n }\n\n var sLen;\n if('saltLength' in options) {\n sLen = options.saltLength;\n } else if(salt_ !== null) {\n sLen = salt_.length();\n } else {\n throw new Error('Salt length not specified or specific salt not given.');\n }\n\n if(salt_ !== null && salt_.length() !== sLen) {\n throw new Error('Given salt length does not match length of given salt.');\n }\n\n var prng = options.prng || forge.random;\n\n var pssobj = {};\n\n /**\n * Encodes a PSS signature.\n *\n * This function implements EMSA-PSS-ENCODE as per RFC 3447, section 9.1.1.\n *\n * @param md the message digest object with the hash to sign.\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return the encoded message as a binary-encoded string of length\n * ceil((modBits - 1) / 8).\n */\n pssobj.encode = function(md, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* 2. Let mHash = Hash(M), an octet string of length hLen. */\n var mHash = md.digest().getBytes();\n\n /* 3. If emLen < hLen + sLen + 2, output \"encoding error\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Message is too long to encrypt.');\n }\n\n /* 4. Generate a random octet string salt of length sLen; if sLen = 0,\n * then salt is the empty string. */\n var salt;\n if(salt_ === null) {\n salt = prng.getBytesSync(sLen);\n } else {\n salt = salt_.bytes();\n }\n\n /* 5. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt; */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 6. Let H = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h = hash.digest().getBytes();\n\n /* 7. Generate an octet string PS consisting of emLen - sLen - hLen - 2\n * zero octets. The length of PS may be 0. */\n var ps = new forge.util.ByteBuffer();\n ps.fillWithByte(0, emLen - sLen - hLen - 2);\n\n /* 8. Let DB = PS || 0x01 || salt; DB is an octet string of length\n * emLen - hLen - 1. */\n ps.putByte(0x01);\n ps.putBytes(salt);\n var db = ps.getBytes();\n\n /* 9. Let dbMask = MGF(H, emLen - hLen - 1). */\n var maskLen = emLen - hLen - 1;\n var dbMask = mgf.generate(h, maskLen);\n\n /* 10. Let maskedDB = DB \\xor dbMask. */\n var maskedDB = '';\n for(i = 0; i < maskLen; i++) {\n maskedDB += String.fromCharCode(db.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 11. Set the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB to zero. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n maskedDB = String.fromCharCode(maskedDB.charCodeAt(0) & ~mask) +\n maskedDB.substr(1);\n\n /* 12. Let EM = maskedDB || H || 0xbc.\n * 13. Output EM. */\n return maskedDB + h + String.fromCharCode(0xbc);\n };\n\n /**\n * Verifies a PSS signature.\n *\n * This function implements EMSA-PSS-VERIFY as per RFC 3447, section 9.1.2.\n *\n * @param mHash the message digest hash, as a binary-encoded string, to\n * compare against the signature.\n * @param em the encoded message, as a binary-encoded string\n * (RSA decryption result).\n * @param modsBits the length of the RSA modulus in bits.\n *Line truncated
|
||||
"/**\n * An API for getting cryptographically-secure random bytes. The bytes are\n * generated using the Fortuna algorithm devised by Bruce Schneier and\n * Niels Ferguson.\n *\n * Getting strong random bytes is not yet easy to do in javascript. The only\n * truish random entropy that can be collected is from the mouse, keyboard, or\n * from timing with respect to page loads, etc. This generator makes a poor\n * attempt at providing random bytes when those sources haven't yet provided\n * enough entropy to initially seed or to reseed the PRNG.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./sha256');\nrequire('./prng');\nrequire('./util');\n\n(function() {\n\n// forge.random already defined\nif(forge.random && forge.random.getBytes) {\n module.exports = forge.random;\n return;\n}\n\n(function(jQuery) {\n\n// the default prng plugin, uses AES-128\nvar prng_aes = {};\nvar _prng_aes_output = new Array(4);\nvar _prng_aes_buffer = forge.util.createBuffer();\nprng_aes.formatKey = function(key) {\n // convert the key into 32-bit integers\n var tmp = forge.util.createBuffer(key);\n key = new Array(4);\n key[0] = tmp.getInt32();\n key[1] = tmp.getInt32();\n key[2] = tmp.getInt32();\n key[3] = tmp.getInt32();\n\n // return the expanded key\n return forge.aes._expandKey(key, false);\n};\nprng_aes.formatSeed = function(seed) {\n // convert seed into 32-bit integers\n var tmp = forge.util.createBuffer(seed);\n seed = new Array(4);\n seed[0] = tmp.getInt32();\n seed[1] = tmp.getInt32();\n seed[2] = tmp.getInt32();\n seed[3] = tmp.getInt32();\n return seed;\n};\nprng_aes.cipher = function(key, seed) {\n forge.aes._updateBlock(key, seed, _prng_aes_output, false);\n _prng_aes_buffer.putInt32(_prng_aes_output[0]);\n _prng_aes_buffer.putInt32(_prng_aes_output[1]);\n _prng_aes_buffer.putInt32(_prng_aes_output[2]);\n _prng_aes_buffer.putInt32(_prng_aes_output[3]);\n return _prng_aes_buffer.getBytes();\n};\nprng_aes.increment = function(seed) {\n // FIXME: do we care about carry or signed issues?\n ++seed[3];\n return seed;\n};\nprng_aes.md = forge.md.sha256;\n\n/**\n * Creates a new PRNG.\n */\nfunction spawnPrng() {\n var ctx = forge.prng.create(prng_aes);\n\n /**\n * Gets random bytes. If a native secure crypto API is unavailable, this\n * method tries to make the bytes more unpredictable by drawing from data that\n * can be collected from the user of the browser, eg: mouse movement.\n *\n * If a callback is given, this method will be called asynchronously.\n *\n * @param count the number of random bytes to get.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytes = function(count, callback) {\n return ctx.generate(count, callback);\n };\n\n /**\n * Gets random bytes asynchronously. If a native secure crypto API is\n * unavailable, this method tries to make the bytes more unpredictable by\n * drawing from data that can be collected from the user of the browser,\n * eg: mouse movement.\n *\n * @param count the number of random bytes to get.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytesSync = function(count) {\n return ctx.generate(count);\n };\n\n return ctx;\n}\n\n// create default prng context\nvar _ctx = spawnPrng();\n\n// add other sources of entropy only if window.crypto.getRandomValues is not\n// available -- otherwise this source will be automatically used by the prng\nvar getRandomValues = null;\nif(typeof window !== 'undefined') {\n var _crypto = window.crypto || window.msCrypto;\n if(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n }\n}\nif(forge.options.usePureJavaScript ||\n (!forge.util.isNodejs && !getRandomValues)) {\n // if this is a web worker, do not use weak entropy, instead register to\n // receive strong entropy asynchronously from the main thread\n if(typeof window === 'undefined' || window.document === undefined) {\n // FIXME:\n }\n\n // get load time entropy\n _ctx.collectInt(+new Date(), 32);\n\n // add some entropy from navigator object\n if(typeof(navigator) !== 'undefined') {\n var _navBytes = '';\n for(var key in navigator) {\n try {\n if(typeof(navigator[key]) == 'string') {\n _navBytes += navigator[key];\n }\n } catch(e) {\n /* Some navigator keys might not be accessible, e.g. the geolocation\n attribute throws an exception if touched in Mozilla chrome://\n context.\n\n Silently ignore this and just don't use this as a source of\n entropy. */\n }\n }\n _ctx.collect(_navBytes);\n _navBytes = null;\n }\n\n // add mouse and keyboard collectors if jquery is available\n if(jQuery) {\n // set up mouse entropy capture\nLine truncated
|
||||
"/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to pLine truncated
|
||||
"/**\n * Javascript implementation of basic RSA algorithms.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The only algorithm currently supported for PKI is RSA.\n *\n * An RSA key is often stored in ASN.1 DER format. The SubjectPublicKeyInfo\n * ASN.1 structure is composed of an algorithm of type AlgorithmIdentifier\n * and a subjectPublicKey of type bit string.\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of RSA, there aren't any.\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * For an RSA public key, the subjectPublicKey is:\n *\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n *\n * PrivateKeyInfo ::= SEQUENCE {\n * version Version,\n * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,\n * privateKey PrivateKey,\n * attributes [0] IMPLICIT Attributes OPTIONAL\n * }\n *\n * Version ::= INTEGER\n * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier\n * PrivateKey ::= OCTET STRING\n * Attributes ::= SET OF Attribute\n *\n * An RSA private key as the following structure:\n *\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p-1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER -- (inverse of q) mod p\n * }\n *\n * Version ::= INTEGER\n *\n * The OID for the RSA key algorithm is: 1.2.840.113549.1.1.1\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./jsbn');\nrequire('./oids');\nrequire('./pkcs1');\nrequire('./prime');\nrequire('./random');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/*\n * RSA encryption and decryption, see RFC 2313.\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.rsa = forge.rsa = forge.rsa || {};\nvar pki = forge.pki;\n\n// for finding primes, which are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\n\n// validator for a PrivateKeyInfo structure\nvar privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\n// validator for an RSA private key\nvar rsaPrivateKeyValidator = {\n // RSAPrivateKey\n name: 'RSAPrivateKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'RSAPrivateKey.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // modulus (n)\n name: 'RSAPrivateKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPrivateKey.publicExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPublicExponent'\n }, {\n // privateExponent (d)\n name: 'RSAPrivateKey.privateExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrivateExponent'\n }, {\n // prime1 (p)\n name: 'RSAPrivateKey.prime1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime1'\n }, {\n // prime2 (q)\n name: 'RSAPrivateKey.prime2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime2'\n }, {\n // exponent1 (d mod (p-1))\n name: 'RSAPrivateKey.exponent1',\n tagClass: asn1.ClaLine truncated
|
||||
"/**\n * Secure Hash Algorithm with 160-bit digest (SHA-1) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha1 = module.exports = forge.sha1 = forge.sha1 || {};\nforge.md.sha1 = forge.md.algorithms.sha1 = sha1;\n\n/**\n * Creates a SHA-1 message digest object.\n *\n * @return a message digest object.\n */\nsha1.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-1 state contains five 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(80);\n\n // message digest object\n var md = {\n algorithm: 'sha1',\n blockLength: 64,\n digestLength: 20,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-1 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // iLine truncated
|
||||
"/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.sLine truncated
|
||||
"/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch (algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so thatLine truncated
|
||||
"/**\n * Functions to output keys in SSH-friendly formats.\n *\n * This is part of the Forge project which may be used under the terms of\n * either the BSD License or the GNU General Public License (GPL) Version 2.\n *\n * See: https://github.com/digitalbazaar/forge/blob/cbebca3780658703d925b61b2caffb1d263a6c1d/LICENSE\n *\n * @author https://github.com/shellac\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./hmac');\nrequire('./md5');\nrequire('./sha1');\nrequire('./util');\n\nvar ssh = module.exports = forge.ssh = forge.ssh || {};\n\n/**\n * Encodes (and optionally encrypts) a private RSA key as a Putty PPK file.\n *\n * @param privateKey the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n * @param comment a comment to include in the key file.\n *\n * @return the PPK file as a string.\n */\nssh.privateKeyToPutty = function(privateKey, passphrase, comment) {\n comment = comment || '';\n passphrase = passphrase || '';\n var algorithm = 'ssh-rsa';\n var encryptionAlgorithm = (passphrase === '') ? 'none' : 'aes256-cbc';\n\n var ppk = 'PuTTY-User-Key-File-2: ' + algorithm + '\\r\\n';\n ppk += 'Encryption: ' + encryptionAlgorithm + '\\r\\n';\n ppk += 'Comment: ' + comment + '\\r\\n';\n\n // public key into buffer for ppk\n var pubbuffer = forge.util.createBuffer();\n _addStringToBuffer(pubbuffer, algorithm);\n _addBigIntegerToBuffer(pubbuffer, privateKey.e);\n _addBigIntegerToBuffer(pubbuffer, privateKey.n);\n\n // write public key\n var pub = forge.util.encode64(pubbuffer.bytes(), 64);\n var length = Math.floor(pub.length / 66) + 1; // 66 = 64 + \\r\\n\n ppk += 'Public-Lines: ' + length + '\\r\\n';\n ppk += pub;\n\n // private key into a buffer\n var privbuffer = forge.util.createBuffer();\n _addBigIntegerToBuffer(privbuffer, privateKey.d);\n _addBigIntegerToBuffer(privbuffer, privateKey.p);\n _addBigIntegerToBuffer(privbuffer, privateKey.q);\n _addBigIntegerToBuffer(privbuffer, privateKey.qInv);\n\n // optionally encrypt the private key\n var priv;\n if(!passphrase) {\n // use the unencrypted buffer\n priv = forge.util.encode64(privbuffer.bytes(), 64);\n } else {\n // encrypt RSA key using passphrase\n var encLen = privbuffer.length() + 16 - 1;\n encLen -= encLen % 16;\n\n // pad private key with sha1-d data -- needs to be a multiple of 16\n var padding = _sha1(privbuffer.bytes());\n\n padding.truncate(padding.length() - encLen + privbuffer.length());\n privbuffer.putBuffer(padding);\n\n var aeskey = forge.util.createBuffer();\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x00', passphrase));\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x01', passphrase));\n\n // encrypt some bytes using CBC mode\n // key is 40 bytes, so truncate *by* 8 bytes\n var cipher = forge.aes.createEncryptionCipher(aeskey.truncate(8), 'CBC');\n cipher.start(forge.util.createBuffer().fillWithByte(0, 16));\n cipher.update(privbuffer.copy());\n cipher.finish();\n var encrypted = cipher.output;\n\n // Note: this appears to differ from Putty -- is forge wrong, or putty?\n // due to padding we finish as an exact multiple of 16\n encrypted.truncate(16); // all padding\n\n priv = forge.util.encode64(encrypted.bytes(), 64);\n }\n\n // output private key\n length = Math.floor(priv.length / 66) + 1; // 64 + \\r\\n\n ppk += '\\r\\nPrivate-Lines: ' + length + '\\r\\n';\n ppk += priv;\n\n // MAC\n var mackey = _sha1('putty-private-key-file-mac-key', passphrase);\n\n var macbuffer = forge.util.createBuffer();\n _addStringToBuffer(macbuffer, algorithm);\n _addStringToBuffer(macbuffer, encryptionAlgorithm);\n _addStringToBuffer(macbuffer, comment);\n macbuffer.putInt32(pubbuffer.length());\n macbuffer.putBuffer(pubbuffer);\n macbuffer.putInt32(privbuffer.length());\n macbuffer.putBuffer(privbuffer);\n\n var hmac = forge.hmac.create();\n hmac.start('sha1', mackey);\n hmac.update(macbuffer.bytes());\n\n ppk += '\\r\\nPrivate-MAC: ' + hmac.digest().toHex() + '\\r\\n';\n\n return ppk;\n};\n\n/**\n * Encodes a public RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param comment a comment.\n *\n * @return the public key in OpenSSH format.\n */\nssh.publicKeyToOpenSSH = function(key, comment) {\n var type = 'ssh-rsa';\n comment = comment || '';\n\n var buffer = forge.util.createBuffer();\n _addStringToBuffer(buffer, type);\n _addBigIntegerToBuffer(buffer, key.e);\n _addBigIntegerToBuffer(buffer, key.n);\n\n return type + ' ' + forge.util.encode64(buffer.bytes()) + ' ' + comment;\n};\n\n/**\n * Encodes a private RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n *\n * @return the public key in OpenSSH format.\n */\nssh.privateKeyToOpenSSH = function(privateKey, passphrase) {\n if(!passphrase) {\n return forge.pki.privateKeyToPem(privateKey);\n }\n // OpenSSH private key is jLine truncated
|
||||
"/**\n * Support for concurrent task management and synchronization in web\n * applications.\n *\n * @author Dave Longley\n * @author David I. Lehn <dlehn@digitalbazaar.com>\n *\n * Copyright (c) 2009-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./debug');\nrequire('./log');\nrequire('./util');\n\n// logging category\nvar cat = 'forge.task';\n\n// verbose level\n// 0: off, 1: a little, 2: a whole lot\n// Verbose debug logging is surrounded by a level check to avoid the\n// performance issues with even calling the logging code regardless if it\n// is actually logged. For performance reasons this should not be set to 2\n// for production use.\n// ex: if(sVL >= 2) forge.log.verbose(....)\nvar sVL = 0;\n\n// track tasks for debugging\nvar sTasks = {};\nvar sNextTaskId = 0;\n// debug access\nforge.debug.set(cat, 'tasks', sTasks);\n\n// a map of task type to task queue\nvar sTaskQueues = {};\n// debug access\nforge.debug.set(cat, 'queues', sTaskQueues);\n\n// name for unnamed tasks\nvar sNoTaskName = '?';\n\n// maximum number of doNext() recursions before a context swap occurs\n// FIXME: might need to tweak this based on the browser\nvar sMaxRecursions = 30;\n\n// time slice for doing tasks before a context swap occurs\n// FIXME: might need to tweak this based on the browser\nvar sTimeSlice = 20;\n\n/**\n * Task states.\n *\n * READY: ready to start processing\n * RUNNING: task or a subtask is running\n * BLOCKED: task is waiting to acquire N permits to continue\n * SLEEPING: task is sleeping for a period of time\n * DONE: task is done\n * ERROR: task has an error\n */\nvar READY = 'ready';\nvar RUNNING = 'running';\nvar BLOCKED = 'blocked';\nvar SLEEPING = 'sleeping';\nvar DONE = 'done';\nvar ERROR = 'error';\n\n/**\n * Task actions. Used to control state transitions.\n *\n * STOP: stop processing\n * START: start processing tasks\n * BLOCK: block task from continuing until 1 or more permits are released\n * UNBLOCK: release one or more permits\n * SLEEP: sleep for a period of time\n * WAKEUP: wakeup early from SLEEPING state\n * CANCEL: cancel further tasks\n * FAIL: a failure occured\n */\nvar STOP = 'stop';\nvar START = 'start';\nvar BLOCK = 'block';\nvar UNBLOCK = 'unblock';\nvar SLEEP = 'sleep';\nvar WAKEUP = 'wakeup';\nvar CANCEL = 'cancel';\nvar FAIL = 'fail';\n\n/**\n * State transition table.\n *\n * nextState = sStateTable[currentState][action]\n */\nvar sStateTable = {};\n\nsStateTable[READY] = {};\nsStateTable[READY][STOP] = READY;\nsStateTable[READY][START] = RUNNING;\nsStateTable[READY][CANCEL] = DONE;\nsStateTable[READY][FAIL] = ERROR;\n\nsStateTable[RUNNING] = {};\nsStateTable[RUNNING][STOP] = READY;\nsStateTable[RUNNING][START] = RUNNING;\nsStateTable[RUNNING][BLOCK] = BLOCKED;\nsStateTable[RUNNING][UNBLOCK] = RUNNING;\nsStateTable[RUNNING][SLEEP] = SLEEPING;\nsStateTable[RUNNING][WAKEUP] = RUNNING;\nsStateTable[RUNNING][CANCEL] = DONE;\nsStateTable[RUNNING][FAIL] = ERROR;\n\nsStateTable[BLOCKED] = {};\nsStateTable[BLOCKED][STOP] = BLOCKED;\nsStateTable[BLOCKED][START] = BLOCKED;\nsStateTable[BLOCKED][BLOCK] = BLOCKED;\nsStateTable[BLOCKED][UNBLOCK] = BLOCKED;\nsStateTable[BLOCKED][SLEEP] = BLOCKED;\nsStateTable[BLOCKED][WAKEUP] = BLOCKED;\nsStateTable[BLOCKED][CANCEL] = DONE;\nsStateTable[BLOCKED][FAIL] = ERROR;\n\nsStateTable[SLEEPING] = {};\nsStateTable[SLEEPING][STOP] = SLEEPING;\nsStateTable[SLEEPING][START] = SLEEPING;\nsStateTable[SLEEPING][BLOCK] = SLEEPING;\nsStateTable[SLEEPING][UNBLOCK] = SLEEPING;\nsStateTable[SLEEPING][SLEEP] = SLEEPING;\nsStateTable[SLEEPING][WAKEUP] = SLEEPING;\nsStateTable[SLEEPING][CANCEL] = DONE;\nsStateTable[SLEEPING][FAIL] = ERROR;\n\nsStateTable[DONE] = {};\nsStateTable[DONE][STOP] = DONE;\nsStateTable[DONE][START] = DONE;\nsStateTable[DONE][BLOCK] = DONE;\nsStateTable[DONE][UNBLOCK] = DONE;\nsStateTable[DONE][SLEEP] = DONE;\nsStateTable[DONE][WAKEUP] = DONE;\nsStateTable[DONE][CANCEL] = DONE;\nsStateTable[DONE][FAIL] = ERROR;\n\nsStateTable[ERROR] = {};\nsStateTable[ERROR][STOP] = ERROR;\nsStateTable[ERROR][START] = ERROR;\nsStateTable[ERROR][BLOCK] = ERROR;\nsStateTable[ERROR][UNBLOCK] = ERROR;\nsStateTable[ERROR][SLEEP] = ERROR;\nsStateTable[ERROR][WAKEUP] = ERROR;\nsStateTable[ERROR][CANCEL] = ERROR;\nsStateTable[ERROR][FAIL] = ERROR;\n\n/**\n * Creates a new task.\n *\n * @param options options for this task\n * run: the run function for the task (required)\n * name: the run function for the task (optional)\n * parent: parent of this task (optional)\n *\n * @return the empty task.\n */\nvar Task = function(options) {\n // task id\n this.id = -1;\n\n // task name\n this.name = options.name || sNoTaskName;\n\n // task has no parent\n this.parent = options.parent || null;\n\n // save run function\n this.run = options.run;\n\n // create a queue of subtasks to run\n this.subtasks = [];\n\n // error flag\n this.error = false;\n\n // state of the task\n this.state = READY;\n\n // number of times the taskLine truncated
|
||||
"/**\n * A Javascript implementation of Transport Layer Security (TLS).\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n *\n * The TLS Handshake Protocol involves the following steps:\n *\n * - Exchange hello messages to agree on algorithms, exchange random values,\n * and check for session resumption.\n *\n * - Exchange the necessary cryptographic parameters to allow the client and\n * server to agree on a premaster secret.\n *\n * - Exchange certificates and cryptographic information to allow the client\n * and server to authenticate themselves.\n *\n * - Generate a master secret from the premaster secret and exchanged random\n * values.\n *\n * - Provide security parameters to the record layer.\n *\n * - Allow the client and server to verify that their peer has calculated the\n * same security parameters and that the handshake occurred without tampering\n * by an attacker.\n *\n * Up to 4 different messages may be sent during a key exchange. The server\n * certificate, the server key exchange, the client certificate, and the\n * client key exchange.\n *\n * A typical handshake (from the client's perspective).\n *\n * 1. Client sends ClientHello.\n * 2. Client receives ServerHello.\n * 3. Client receives optional Certificate.\n * 4. Client receives optional ServerKeyExchange.\n * 5. Client receives ServerHelloDone.\n * 6. Client sends optional Certificate.\n * 7. Client sends ClientKeyExchange.\n * 8. Client sends optional CertificateVerify.\n * 9. Client sends ChangeCipherSpec.\n * 10. Client sends Finished.\n * 11. Client receives ChangeCipherSpec.\n * 12. Client receives Finished.\n * 13. Client sends/receives application data.\n *\n * To reuse an existing session:\n *\n * 1. Client sends ClientHello with session ID for reuse.\n * 2. Client receives ServerHello with same session ID if reusing.\n * 3. Client receives ChangeCipherSpec message if reusing.\n * 4. Client receives Finished.\n * 5. Client sends ChangeCipherSpec.\n * 6. Client sends Finished.\n *\n * Note: Client ignores HelloRequest if in the middle of a handshake.\n *\n * Record Layer:\n *\n * The record layer fragments information blocks into TLSPlaintext records\n * carrying data in chunks of 2^14 bytes or less. Client message boundaries are\n * not preserved in the record layer (i.e., multiple client messages of the\n * same ContentType MAY be coalesced into a single TLSPlaintext record, or a\n * single message MAY be fragmented across several records).\n *\n * struct {\n * uint8 major;\n * uint8 minor;\n * } ProtocolVersion;\n *\n * struct {\n * ContentType type;\n * ProtocolVersion version;\n * uint16 length;\n * opaque fragment[TLSPlaintext.length];\n * } TLSPlaintext;\n *\n * type:\n * The higher-level protocol used to process the enclosed fragment.\n *\n * version:\n * The version of the protocol being employed. TLS Version 1.2 uses version\n * {3, 3}. TLS Version 1.0 uses version {3, 1}. Note that a client that\n * supports multiple versions of TLS may not know what version will be\n * employed before it receives the ServerHello.\n *\n * length:\n * The length (in bytes) of the following TLSPlaintext.fragment. The length\n * MUST NOT exceed 2^14 = 16384 bytes.\n *\n * fragment:\n * The application data. This data is transparent and treated as an\n * independent block to be dealt with by the higher-level protocol specified\n * by the type field.\n *\n * Implementations MUST NOT send zero-length fragments of Handshake, Alert, or\n * ChangeCipherSpec content types. Zero-length fragments of Application data\n * MAY be sent as they are potentially useful as a traffic analysis\n * countermeasure.\n *\n * Note: Data of different TLS record layer content types MAY be interleaved.\n * Application data is generally of lower precedence for transmission than\n * other content types. However, records MUST be delivered to the network in\n * the same order as they are protected by the record layer. Recipients MUST\n * receive and process interleaved application layer traffic during handshakes\n * subsequent to the first one on a connection.\n *\n * struct {\n * ContentType type; // same as TLSPlaintext.type\n * ProtocolVersion version;// same as TLSPlaintext.version\n * uint16 length;\n * opaque fragment[TLSCompressed.length];\n * } TLSCompressed;\n *\n * length:\n * The length (in bytes) of the following TLSCompressed.fragment.\n * The length MUST NOT exceed 2^14 + 1024.\n *\n * fragment:\n * The compressed form of TLSPlaintext.fragment.\n *\n * Note: A CompressionMethod.null operation is an identity operation; no fields\n * are altered. In this implementation, since no compression is supported,\n * uncompressed records are always the same as compressed records.\n *\n * Encryption Information:\n *\n * The encryption and MAC functions translate a TLSCompressed structure into a\n * TLSCiphertext. The decryption functions reverse the process. The MAC of the\nLine truncated
|
||||
"/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick\n if(typeof process !== 'undefined' && process.nextTick) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8ArraLine truncated
|
||||
"/**\n * Javascript implementation of X.509 and related components (such as\n * Certification Signing Requests) of a Public Key Infrastructure.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The ASN.1 representation of an X.509v3 certificate is as follows\n * (see RFC 2459):\n *\n * Certificate ::= SEQUENCE {\n * tbsCertificate TBSCertificate,\n * signatureAlgorithm AlgorithmIdentifier,\n * signatureValue BIT STRING\n * }\n *\n * TBSCertificate ::= SEQUENCE {\n * version [0] EXPLICIT Version DEFAULT v1,\n * serialNumber CertificateSerialNumber,\n * signature AlgorithmIdentifier,\n * issuer Name,\n * validity Validity,\n * subject Name,\n * subjectPublicKeyInfo SubjectPublicKeyInfo,\n * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * extensions [3] EXPLICIT Extensions OPTIONAL\n * -- If present, version shall be v3\n * }\n *\n * Version ::= INTEGER { v1(0), v2(1), v3(2) }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * Name ::= CHOICE {\n * // only one possible choice for now\n * RDNSequence\n * }\n *\n * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName\n *\n * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue\n *\n * AttributeTypeAndValue ::= SEQUENCE {\n * type AttributeType,\n * value AttributeValue\n * }\n * AttributeType ::= OBJECT IDENTIFIER\n * AttributeValue ::= ANY DEFINED BY AttributeType\n *\n * Validity ::= SEQUENCE {\n * notBefore Time,\n * notAfter Time\n * }\n *\n * Time ::= CHOICE {\n * utcTime UTCTime,\n * generalTime GeneralizedTime\n * }\n *\n * UniqueIdentifier ::= BIT STRING\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension\n *\n * Extension ::= SEQUENCE {\n * extnID OBJECT IDENTIFIER,\n * critical BOOLEAN DEFAULT FALSE,\n * extnValue OCTET STRING\n * }\n *\n * The only key algorithm currently supported for PKI is RSA.\n *\n * RSASSA-PSS signatures are described in RFC 3447 and RFC 4055.\n *\n * PKCS#10 v1.7 describes certificate signing requests:\n *\n * CertificationRequestInfo:\n *\n * CertificationRequestInfo ::= SEQUENCE {\n * version INTEGER { v1(0) } (v1,...),\n * subject Name,\n * subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},\n * attributes [0] Attributes{{ CRIAttributes }}\n * }\n *\n * Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}\n *\n * CRIAttributes ATTRIBUTE ::= {\n * ... -- add any locally defined attributes here -- }\n *\n * Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {\n * type ATTRIBUTE.&id({IOSet}),\n * values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})\n * }\n *\n * CertificationRequest ::= SEQUENCE {\n * certificationRequestInfo CertificationRequestInfo,\n * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},\n * signature BIT STRING\n * }\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./mgf');\nrequire('./oids');\nrequire('./pem');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\nvar oids = pki.oids;\n\n// short name OID mappings\nvar _shortNames = {};\n_shortNames['CN'] = oids['commonName'];\n_shortNames['commonName'] = 'CN';\n_shortNames['C'] = oids['countryName'];\n_shortNames['countryName'] = 'C';\n_shortNames['L'] = oids['localityName'];\n_shortNames['localityName'] = 'L';\n_shortNames['ST'] = oids['stateOrProvinceName'];\n_shortNames['stateOrProvinceName'] = 'ST';\n_shortNames['O'] = oids['organizationName'];\n_shortNames['organizationName'] = 'O';\n_shortNames['OU'] = oids['organizationalUnitName'];\n_shortNames['organizationalUnitName'] = 'OU';\n_shortNames['E'] = oids['emailAddress'];\n_shortNames['emailAddress'] = 'E';\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator;\n\n// validator for an X.509v3 certificate\nvar x509CertificateValidator = {\n name: 'Certificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'tbsCertificate',\n value: [{\n name: 'Certificate.TBSCertificate.versiLine truncated
|
||||
"/*!\n * RSA library for Node.js\n *\n * Copyright (c) 2014 rzcoder\n * All Rights Reserved.\n *\n * License BSD\n */\n\nvar constants = require('constants');\nvar rsa = require('./libs/rsa.js');\nvar crypt = require('crypto');\nvar ber = require('asn1').Ber;\nvar _ = require('./utils')._;\nvar utils = require('./utils');\nvar schemes = require('./schemes/schemes.js');\nvar formats = require('./formats/formats.js');\n\nif (typeof constants.RSA_NO_PADDING == \"undefined\") {\n //patch for node v0.10.x, constants do not defined\n constants.RSA_NO_PADDING = 3;\n}\n\nmodule.exports = (function () {\n var SUPPORTED_HASH_ALGORITHMS = {\n node10: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],\n node: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],\n iojs: ['md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'],\n browser: ['md5', 'ripemd160', 'sha1', 'sha256', 'sha512']\n };\n\n var DEFAULT_ENCRYPTION_SCHEME = 'pkcs1_oaep';\n var DEFAULT_SIGNING_SCHEME = 'pkcs1';\n\n var DEFAULT_EXPORT_FORMAT = 'private';\n var EXPORT_FORMAT_ALIASES = {\n 'private': 'pkcs1-private-pem',\n 'private-der': 'pkcs1-private-der',\n 'public': 'pkcs8-public-pem',\n 'public-der': 'pkcs8-public-der',\n };\n\n /**\n * @param key {string|buffer|object} Key in PEM format, or data for generate key {b: bits, e: exponent}\n * @constructor\n */\n function NodeRSA(key, format, options) {\n if (!(this instanceof NodeRSA)) {\n return new NodeRSA(key, format, options);\n }\n\n if (_.isObject(format)) {\n options = format;\n format = undefined;\n }\n\n this.$options = {\n signingScheme: DEFAULT_SIGNING_SCHEME,\n signingSchemeOptions: {\n hash: 'sha256',\n saltLength: null\n },\n encryptionScheme: DEFAULT_ENCRYPTION_SCHEME,\n encryptionSchemeOptions: {\n hash: 'sha1',\n label: null\n },\n environment: utils.detectEnvironment(),\n rsaUtils: this\n };\n this.keyPair = new rsa.Key();\n this.$cache = {};\n\n if (Buffer.isBuffer(key) || _.isString(key)) {\n this.importKey(key, format);\n } else if (_.isObject(key)) {\n this.generateKeyPair(key.b, key.e);\n }\n\n this.setOptions(options);\n }\n\n /**\n * Set and validate options for key instance\n * @param options\n */\n NodeRSA.prototype.setOptions = function (options) {\n options = options || {};\n if (options.environment) {\n this.$options.environment = options.environment;\n }\n\n if (options.signingScheme) {\n if (_.isString(options.signingScheme)) {\n var signingScheme = options.signingScheme.toLowerCase().split('-');\n if (signingScheme.length == 1) {\n if (SUPPORTED_HASH_ALGORITHMS.node.indexOf(signingScheme[0]) > -1) {\n this.$options.signingSchemeOptions = {\n hash: signingScheme[0]\n };\n this.$options.signingScheme = DEFAULT_SIGNING_SCHEME;\n } else {\n this.$options.signingScheme = signingScheme[0];\n this.$options.signingSchemeOptions = {\n hash: null\n };\n }\n } else {\n this.$options.signingSchemeOptions = {\n hash: signingScheme[1]\n };\n this.$options.signingScheme = signingScheme[0];\n }\n } else if (_.isObject(options.signingScheme)) {\n this.$options.signingScheme = options.signingScheme.scheme || DEFAULT_SIGNING_SCHEME;\n this.$options.signingSchemeOptions = _.omit(options.signingScheme, 'scheme');\n }\n\n if (!schemes.isSignature(this.$options.signingScheme)) {\n throw Error('Unsupported signing scheme');\n }\n\n if (this.$options.signingSchemeOptions.hash &&\n SUPPORTED_HASH_ALGORITHMS[this.$options.environment].indexOf(this.$options.signingSchemeOptions.hash) === -1) {\n throw Error('Unsupported hashing algorithm for ' + this.$options.environment + ' environment');\n }\n }\n\n if (options.encryptionScheme) {\n if (_.isString(options.encryptionScheme)) {\n this.$options.encryptionScheme = options.encryptionScheme.toLowerCase();\n this.$options.encryptionSchemeOptions = {};\n } else if (_.isObject(options.encryptionScheme)) {\n this.Line truncated
|
||||
"var crypt = require('crypto');\n\nmodule.exports = {\n getEngine: function (keyPair, options) {\n var engine = require('./js.js');\n if (options.environment === 'node') {\n if (typeof crypt.publicEncrypt === 'function' && typeof crypt.privateDecrypt === 'function') {\n if (typeof crypt.privateEncrypt === 'function' && typeof crypt.publicDecrypt === 'function') {\n engine = require('./io.js');\n } else {\n engine = require('./node12.js');\n }\n }\n }\n return engine(keyPair, options);\n }\n};",
|
||||
"var crypto = require('crypto');\nvar constants = require('constants');\nvar schemes = require('../schemes/schemes.js');\n\nmodule.exports = function (keyPair, options) {\n var pkcs1Scheme = schemes.pkcs1.makeScheme(keyPair, options);\n\n return {\n encrypt: function (buffer, usePrivate) {\n if (usePrivate) {\n var padding = constants.RSA_PKCS1_PADDING;\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n return crypto.privateEncrypt({\n key: options.rsaUtils.exportKey('private'),\n padding: padding\n }, buffer);\n } else {\n var padding = constants.RSA_PKCS1_OAEP_PADDING;\n if (options.encryptionScheme === 'pkcs1') {\n padding = constants.RSA_PKCS1_PADDING;\n }\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n\n var data = buffer;\n if (padding === constants.RSA_NO_PADDING) {\n data = pkcs1Scheme.pkcs0pad(buffer);\n }\n\n return crypto.publicEncrypt({\n key: options.rsaUtils.exportKey('public'),\n padding: padding\n }, data);\n }\n },\n\n decrypt: function (buffer, usePublic) {\n if (usePublic) {\n var padding = constants.RSA_PKCS1_PADDING;\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n return crypto.publicDecrypt({\n key: options.rsaUtils.exportKey('public'),\n padding: padding\n }, buffer);\n } else {\n var padding = constants.RSA_PKCS1_OAEP_PADDING;\n if (options.encryptionScheme === 'pkcs1') {\n padding = constants.RSA_PKCS1_PADDING;\n }\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n var res = crypto.privateDecrypt({\n key: options.rsaUtils.exportKey('private'),\n padding: padding\n }, buffer);\n\n if (padding === constants.RSA_NO_PADDING) {\n return pkcs1Scheme.pkcs0unpad(res);\n }\n return res;\n }\n }\n };\n};",
|
||||
"var BigInteger = require('../libs/jsbn.js');\nvar schemes = require('../schemes/schemes.js');\n\nmodule.exports = function (keyPair, options) {\n var pkcs1Scheme = schemes.pkcs1.makeScheme(keyPair, options);\n\n return {\n encrypt: function (buffer, usePrivate) {\n var m, c;\n if (usePrivate) {\n /* Type 1: zeros padding for private key encrypt */\n m = new BigInteger(pkcs1Scheme.encPad(buffer, {type: 1}));\n c = keyPair.$doPrivate(m);\n } else {\n m = new BigInteger(keyPair.encryptionScheme.encPad(buffer));\n c = keyPair.$doPublic(m);\n }\n return c.toBuffer(keyPair.encryptedDataLength);\n },\n\n decrypt: function (buffer, usePublic) {\n var m, c = new BigInteger(buffer);\n\n if (usePublic) {\n m = keyPair.$doPublic(c);\n /* Type 1: zeros padding for private key decrypt */\n return pkcs1Scheme.encUnPad(m.toBuffer(keyPair.encryptedDataLength), {type: 1});\n } else {\n m = keyPair.$doPrivate(c);\n return keyPair.encryptionScheme.encUnPad(m.toBuffer(keyPair.encryptedDataLength));\n }\n }\n };\n};",
|
||||
"var crypto = require('crypto');\nvar constants = require('constants');\nvar schemes = require('../schemes/schemes.js');\n\nmodule.exports = function (keyPair, options) {\n var jsEngine = require('./js.js')(keyPair, options);\n var pkcs1Scheme = schemes.pkcs1.makeScheme(keyPair, options);\n\n return {\n encrypt: function (buffer, usePrivate) {\n if (usePrivate) {\n return jsEngine.encrypt(buffer, usePrivate);\n }\n var padding = constants.RSA_PKCS1_OAEP_PADDING;\n if (options.encryptionScheme === 'pkcs1') {\n padding = constants.RSA_PKCS1_PADDING;\n }\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n\n var data = buffer;\n if (padding === constants.RSA_NO_PADDING) {\n data = pkcs1Scheme.pkcs0pad(buffer);\n }\n\n return crypto.publicEncrypt({\n key: options.rsaUtils.exportKey('public'),\n padding: padding\n }, data);\n },\n\n decrypt: function (buffer, usePublic) {\n if (usePublic) {\n return jsEngine.decrypt(buffer, usePublic);\n }\n var padding = constants.RSA_PKCS1_OAEP_PADDING;\n if (options.encryptionScheme === 'pkcs1') {\n padding = constants.RSA_PKCS1_PADDING;\n }\n if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) {\n padding = options.encryptionSchemeOptions.padding;\n }\n\n var res = crypto.privateDecrypt({\n key: options.rsaUtils.exportKey('private'),\n padding: padding\n }, buffer);\n\n if (padding === constants.RSA_NO_PADDING) {\n return pkcs1Scheme.pkcs0unpad(res);\n }\n return res;\n }\n };\n};",
|
||||
"var _ = require('../utils')._;\nvar utils = require('../utils');\n\nmodule.exports = {\n privateExport: function (key, options) {\n return {\n n: key.n.toBuffer(),\n e: key.e,\n d: key.d.toBuffer(),\n p: key.p.toBuffer(),\n q: key.q.toBuffer(),\n dmp1: key.dmp1.toBuffer(),\n dmq1: key.dmq1.toBuffer(),\n coeff: key.coeff.toBuffer()\n };\n },\n\n privateImport: function (key, data, options) {\n if (data.n && data.e && data.d && data.p && data.q && data.dmp1 && data.dmq1 && data.coeff) {\n key.setPrivate(\n data.n,\n data.e,\n data.d,\n data.p,\n data.q,\n data.dmp1,\n data.dmq1,\n data.coeff\n );\n } else {\n throw Error(\"Invalid key data\");\n }\n },\n\n publicExport: function (key, options) {\n return {\n n: key.n.toBuffer(),\n e: key.e\n };\n },\n\n publicImport: function (key, data, options) {\n if (data.n && data.e) {\n key.setPublic(\n data.n,\n data.e\n );\n } else {\n throw Error(\"Invalid key data\");\n }\n },\n\n /**\n * Trying autodetect and import key\n * @param key\n * @param data\n */\n autoImport: function (key, data) {\n if (data.n && data.e) {\n if (data.d && data.p && data.q && data.dmp1 && data.dmq1 && data.coeff) {\n module.exports.privateImport(key, data);\n return true;\n } else {\n module.exports.publicImport(key, data);\n return true;\n }\n }\n\n return false;\n }\n};\n",
|
||||
"var _ = require('../utils')._;\n\nfunction formatParse(format) {\n format = format.split('-');\n var keyType = 'private';\n var keyOpt = {type: 'default'};\n\n for (var i = 1; i < format.length; i++) {\n if (format[i]) {\n switch (format[i]) {\n case 'public':\n keyType = format[i];\n break;\n case 'private':\n keyType = format[i];\n break;\n case 'pem':\n keyOpt.type = format[i];\n break;\n case 'der':\n keyOpt.type = format[i];\n break;\n }\n }\n }\n\n return {scheme: format[0], keyType: keyType, keyOpt: keyOpt};\n}\n\nmodule.exports = {\n pkcs1: require('./pkcs1'),\n pkcs8: require('./pkcs8'),\n components: require('./components'),\n\n isPrivateExport: function (format) {\n return module.exports[format] && typeof module.exports[format].privateExport === 'function';\n },\n\n isPrivateImport: function (format) {\n return module.exports[format] && typeof module.exports[format].privateImport === 'function';\n },\n\n isPublicExport: function (format) {\n return module.exports[format] && typeof module.exports[format].publicExport === 'function';\n },\n\n isPublicImport: function (format) {\n return module.exports[format] && typeof module.exports[format].publicImport === 'function';\n },\n\n detectAndImport: function (key, data, format) {\n if (format === undefined) {\n for (var scheme in module.exports) {\n if (typeof module.exports[scheme].autoImport === 'function' && module.exports[scheme].autoImport(key, data)) {\n return true;\n }\n }\n } else if (format) {\n var fmt = formatParse(format);\n\n if (module.exports[fmt.scheme]) {\n if (fmt.keyType === 'private') {\n module.exports[fmt.scheme].privateImport(key, data, fmt.keyOpt);\n } else {\n module.exports[fmt.scheme].publicImport(key, data, fmt.keyOpt);\n }\n } else {\n throw Error('Unsupported key format');\n }\n }\n\n return false;\n },\n\n detectAndExport: function (key, format) {\n if (format) {\n var fmt = formatParse(format);\n\n if (module.exports[fmt.scheme]) {\n if (fmt.keyType === 'private') {\n if (!key.isPrivate()) {\n throw Error(\"This is not private key\");\n }\n return module.exports[fmt.scheme].privateExport(key, fmt.keyOpt);\n } else {\n if (!key.isPublic()) {\n throw Error(\"This is not public key\");\n }\n return module.exports[fmt.scheme].publicExport(key, fmt.keyOpt);\n }\n } else {\n throw Error('Unsupported key format');\n }\n }\n }\n};",
|
||||
"var ber = require('asn1').Ber;\nvar _ = require('../utils')._;\nvar utils = require('../utils');\n\nmodule.exports = {\n privateExport: function (key, options) {\n options = options || {};\n\n var n = key.n.toBuffer();\n var d = key.d.toBuffer();\n var p = key.p.toBuffer();\n var q = key.q.toBuffer();\n var dmp1 = key.dmp1.toBuffer();\n var dmq1 = key.dmq1.toBuffer();\n var coeff = key.coeff.toBuffer();\n\n var length = n.length + d.length + p.length + q.length + dmp1.length + dmq1.length + coeff.length + 512; // magic\n var writer = new ber.Writer({size: length});\n\n writer.startSequence();\n writer.writeInt(0);\n writer.writeBuffer(n, 2);\n writer.writeInt(key.e);\n writer.writeBuffer(d, 2);\n writer.writeBuffer(p, 2);\n writer.writeBuffer(q, 2);\n writer.writeBuffer(dmp1, 2);\n writer.writeBuffer(dmq1, 2);\n writer.writeBuffer(coeff, 2);\n writer.endSequence();\n\n if (options.type === 'der') {\n return writer.buffer;\n } else {\n return '-----BEGIN RSA PRIVATE KEY-----\\n' + utils.linebrk(writer.buffer.toString('base64'), 64) + '\\n-----END RSA PRIVATE KEY-----';\n }\n },\n\n privateImport: function (key, data, options) {\n options = options || {};\n var buffer;\n\n if (options.type !== 'der') {\n if (Buffer.isBuffer(data)) {\n data = data.toString('utf8');\n }\n\n if (_.isString(data)) {\n var pem = data.replace('-----BEGIN RSA PRIVATE KEY-----', '')\n .replace('-----END RSA PRIVATE KEY-----', '')\n .replace(/\\s+|\\n\\r|\\n|\\r$/gm, '');\n buffer = new Buffer(pem, 'base64');\n } else {\n throw Error('Unsupported key format');\n }\n } else if (Buffer.isBuffer(data)) {\n buffer = data;\n } else {\n throw Error('Unsupported key format');\n }\n\n var reader = new ber.Reader(buffer);\n reader.readSequence();\n reader.readString(2, true); // just zero\n key.setPrivate(\n reader.readString(2, true), // modulus\n reader.readString(2, true), // publicExponent\n reader.readString(2, true), // privateExponent\n reader.readString(2, true), // prime1\n reader.readString(2, true), // prime2\n reader.readString(2, true), // exponent1 -- d mod (p1)\n reader.readString(2, true), // exponent2 -- d mod (q-1)\n reader.readString(2, true) // coefficient -- (inverse of q) mod p\n );\n },\n\n publicExport: function (key, options) {\n options = options || {};\n\n var n = key.n.toBuffer();\n var length = n.length + 512; // magic\n\n var bodyWriter = new ber.Writer({size: length});\n bodyWriter.startSequence();\n bodyWriter.writeBuffer(n, 2);\n bodyWriter.writeInt(key.e);\n bodyWriter.endSequence();\n\n if (options.type === 'der') {\n return bodyWriter.buffer;\n } else {\n return '-----BEGIN RSA PUBLIC KEY-----\\n' + utils.linebrk(bodyWriter.buffer.toString('base64'), 64) + '\\n-----END RSA PUBLIC KEY-----';\n }\n },\n\n publicImport: function (key, data, options) {\n options = options || {};\n var buffer;\n\n if (options.type !== 'der') {\n if (Buffer.isBuffer(data)) {\n data = data.toString('utf8');\n }\n\n if (_.isString(data)) {\n var pem = data.replace('-----BEGIN RSA PUBLIC KEY-----', '')\n .replace('-----END RSA PUBLIC KEY-----', '')\n .replace(/\\s+|\\n\\r|\\n|\\r$/gm, '');\n buffer = new Buffer(pem, 'base64');\n }\n } else if (Buffer.isBuffer(data)) {\n buffer = data;\n } else {\n throw Error('Unsupported key format');\n }\n\n var body = new ber.Reader(buffer);\n body.readSequence();\n key.setPublic(\n body.readString(0x02, true), // modulus\n body.readString(0x02, true) // publicExponent\n );\n },\n\n /**\n * Trying autodetect and import key\n * @param key\n * @param data\n */\n autoImport: function (key, data) {\n if (/^\\s*-----BEGIN RSA PRIVATE KEY-----\\s*(?=(([A-Za-z0-9+/=]+\\s*)+))\\1-----END RSA PRIVATE KEY-----\\s*$/g.test(data)) {\n module.exports.privateImport(key, data);\n return true;\n }\n\n if (/^\\s*-----BEGIN RSA PUBLIC KEY-----\\s*(?=(([A-Za-z0-9+/=]+\\s*)+))\\1-----END RSA PUBLIC KEY-----\\s*$/g.test(data)) {\n module.exports.publicImport(key, data);\n return true;\n }\n\n return false;\n }\n};",
|
||||
"var ber = require('asn1').Ber;\nvar _ = require('../utils')._;\nvar PUBLIC_RSA_OID = '1.2.840.113549.1.1.1';\nvar utils = require('../utils');\n\nmodule.exports = {\n privateExport: function (key, options) {\n options = options || {};\n\n var n = key.n.toBuffer();\n var d = key.d.toBuffer();\n var p = key.p.toBuffer();\n var q = key.q.toBuffer();\n var dmp1 = key.dmp1.toBuffer();\n var dmq1 = key.dmq1.toBuffer();\n var coeff = key.coeff.toBuffer();\n\n var length = n.length + d.length + p.length + q.length + dmp1.length + dmq1.length + coeff.length + 512; // magic\n var bodyWriter = new ber.Writer({size: length});\n\n bodyWriter.startSequence();\n bodyWriter.writeInt(0);\n bodyWriter.writeBuffer(n, 2);\n bodyWriter.writeInt(key.e);\n bodyWriter.writeBuffer(d, 2);\n bodyWriter.writeBuffer(p, 2);\n bodyWriter.writeBuffer(q, 2);\n bodyWriter.writeBuffer(dmp1, 2);\n bodyWriter.writeBuffer(dmq1, 2);\n bodyWriter.writeBuffer(coeff, 2);\n bodyWriter.endSequence();\n\n var writer = new ber.Writer({size: length});\n writer.startSequence();\n writer.writeInt(0);\n writer.startSequence();\n writer.writeOID(PUBLIC_RSA_OID);\n writer.writeNull();\n writer.endSequence();\n writer.writeBuffer(bodyWriter.buffer, 4);\n writer.endSequence();\n\n if (options.type === 'der') {\n return writer.buffer;\n } else {\n return '-----BEGIN PRIVATE KEY-----\\n' + utils.linebrk(writer.buffer.toString('base64'), 64) + '\\n-----END PRIVATE KEY-----';\n }\n },\n\n privateImport: function (key, data, options) {\n options = options || {};\n var buffer;\n\n if (options.type !== 'der') {\n if (Buffer.isBuffer(data)) {\n data = data.toString('utf8');\n }\n\n if (_.isString(data)) {\n var pem = data.replace('-----BEGIN PRIVATE KEY-----', '')\n .replace('-----END PRIVATE KEY-----', '')\n .replace(/\\s+|\\n\\r|\\n|\\r$/gm, '');\n buffer = new Buffer(pem, 'base64');\n } else {\n throw Error('Unsupported key format');\n }\n } else if (Buffer.isBuffer(data)) {\n buffer = data;\n } else {\n throw Error('Unsupported key format');\n }\n\n var reader = new ber.Reader(buffer);\n reader.readSequence();\n reader.readInt(0);\n var header = new ber.Reader(reader.readString(0x30, true));\n\n if (header.readOID(0x06, true) !== PUBLIC_RSA_OID) {\n throw Error('Invalid Public key format');\n }\n\n var body = new ber.Reader(reader.readString(0x04, true));\n body.readSequence();\n body.readString(2, true); // just zero\n key.setPrivate(\n body.readString(2, true), // modulus\n body.readString(2, true), // publicExponent\n body.readString(2, true), // privateExponent\n body.readString(2, true), // prime1\n body.readString(2, true), // prime2\n body.readString(2, true), // exponent1 -- d mod (p1)\n body.readString(2, true), // exponent2 -- d mod (q-1)\n body.readString(2, true) // coefficient -- (inverse of q) mod p\n );\n },\n\n publicExport: function (key, options) {\n options = options || {};\n\n var n = key.n.toBuffer();\n var length = n.length + 512; // magic\n\n var bodyWriter = new ber.Writer({size: length});\n bodyWriter.writeByte(0);\n bodyWriter.startSequence();\n bodyWriter.writeBuffer(n, 2);\n bodyWriter.writeInt(key.e);\n bodyWriter.endSequence();\n\n var writer = new ber.Writer({size: length});\n writer.startSequence();\n writer.startSequence();\n writer.writeOID(PUBLIC_RSA_OID);\n writer.writeNull();\n writer.endSequence();\n writer.writeBuffer(bodyWriter.buffer, 3);\n writer.endSequence();\n\n if (options.type === 'der') {\n return writer.buffer;\n } else {\n return '-----BEGIN PUBLIC KEY-----\\n' + utils.linebrk(writer.buffer.toString('base64'), 64) + '\\n-----END PUBLIC KEY-----';\n }\n },\n\n publicImport: function (key, data, options) {\n options = options || {};\n var buffer;\n\n if (options.type !== 'der') {\n if (Buffer.isBuffer(data)) {\n data = data.toString('utf8');\n }\n\n if (_.isString(data)) {\n var pem = data.replace('-----BEGIN PUBLIC KEY-----', '')\n .replace('-----END PUBLIC KEY-----', '')\n .replace(/\\s+|\\n\\r|\\n|\\r$/gm, '');\n buffer = new Buffer(pem, 'base64');\n Line truncated
|
||||
"/*\n * Basic JavaScript BN library - subset useful for RSA encryption.\n * \n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n/*\n * Added Node.js Buffers support\n * 2014 rzcoder\n */\n\nvar crypt = require('crypto');\nvar _ = require('../utils')._;\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a, b) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b);\n } else if (Buffer.isBuffer(a)) {\n this.fromBuffer(a);\n } else if (b == null && \"string\" != typeof a) {\n this.fromByteArray(a);\n } else {\n this.fromString(a, b);\n }\n }\n}\n\n// return new, unset BigInteger\nfunction nbi() {\n return new BigInteger(null);\n}\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff, xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff, xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n}\n\n// We need to select the fastest one that works in this environment. \n//if (j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n//\tBigInteger.prototype.am = am2;\n//\tdbits = 30;\n//} else if (j_lm && (navigator.appName != \"Netscape\")) {\n//\tBigInteger.prototype.am = am1;\n//\tdbits = 26;\n//} else { // Mozilla/Netscape seems to prefer am3\n//\tBigInteger.prototype.am = am3;\n//\tdbits = 28;\n//}\n\n// For node.js, we pick am3 with max dbits to 28.\nBigInteger.prototype.am = am3;\ndbits = 28;\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr, vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunctiLine truncated
|
||||
"/*\n * RSA Encryption / Decryption with PKCS1 v2 Padding.\n * \n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n/*\n * Node.js adaptation\n * long message support implementation\n * signing/verifying\n *\n * 2014 rzcoder\n */\n\nvar _ = require('../utils')._;\nvar crypt = require('crypto');\nvar BigInteger = require('./jsbn.js');\nvar utils = require('../utils.js');\nvar schemes = require('../schemes/schemes.js');\nvar encryptEngines = require('../encryptEngines/encryptEngines.js');\n\nexports.BigInteger = BigInteger;\nmodule.exports.Key = (function () {\n /**\n * RSA key constructor\n *\n * n - modulus\n * e - publicExponent\n * d - privateExponent\n * p - prime1\n * q - prime2\n * dmp1 - exponent1 -- d mod (p1)\n * dmq1 - exponent2 -- d mod (q-1)\n * coeff - coefficient -- (inverse of q) mod p\n */\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n\n RSAKey.prototype.setOptions = function (options) {\n var signingSchemeProvider = schemes[options.signingScheme];\n var encryptionSchemeProvider = schemes[options.encryptionScheme];\n\n if (signingSchemeProvider === encryptionSchemeProvider) {\n this.signingScheme = this.encryptionScheme = encryptionSchemeProvider.makeScheme(this, options);\n } else {\n this.encryptionScheme = encryptionSchemeProvider.makeScheme(this, options);\n this.signingScheme = signingSchemeProvider.makeScheme(this, options);\n }\n\n this.encryptEngine = encryptEngines.getEngine(this, options);\n };\n\n /**\n * Generate a new random private key B bits long, using public expt E\n * @param B\n * @param E\n */\n RSAKey.prototype.generate = function (B, E) {\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new BigInteger(E, 16);\n while (true) {\n while (true) {\n this.p = new BigInteger(B - qs, 1);\n if (this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) === 0 && this.p.isProbablePrime(10))\n break;\n }\n while (true) {\n this.q = new BigInteger(qs, 1);\n if (this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) === 0 && this.q.isProbablePrime(10))\n break;\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(BigInteger.ONE);\n var q1 = this.q.subtract(BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(BigInteger.ONE) === 0) {\n this.n = this.p.multiply(this.q);\n if (this.n.bitLength() < B) {\n continue;\n }\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n this.$$recalculateCache();\n };\n\n /**\n * Set the private key fields N, e, d and CRT params from buffers\n *\n * @param N\n * @param E\n * @param D\n * @param P\n * @param Q\n * @param DP\n * @param DQ\n * @param C\n */\n RSAKey.prototype.setPriLine truncated
|
||||
"/**\n * PKCS_OAEP signature scheme\n */\n\nvar BigInteger = require('../libs/jsbn');\nvar crypt = require('crypto');\n\nmodule.exports = {\n isEncryption: true,\n isSignature: false\n};\n\nmodule.exports.digestLength = {\n md4: 16,\n md5: 16,\n ripemd160: 20,\n rmd160: 20,\n sha: 20,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64\n};\n\nvar DEFAULT_HASH_FUNCTION = 'sha1';\n\n/*\n * OAEP Mask Generation Function 1\n * Generates a buffer full of pseudorandom bytes given seed and maskLength.\n * Giving the same seed, maskLength, and hashFunction will result in the same exact byte values in the buffer.\n *\n * https://tools.ietf.org/html/rfc3447#appendix-B.2.1\n *\n * Parameters:\n * seed\t\t\t[Buffer]\tThe pseudo random seed for this function\n * maskLength\t[int]\t\tThe length of the output\n * hashFunction\t[String]\tThe hashing function to use. Will accept any valid crypto hash. Default \"sha1\"\n *\t\tSupports \"sha1\" and \"sha256\".\n *\t\tTo add another algorythm the algorythem must be accepted by crypto.createHash, and then the length of the output of the hash function (the digest) must be added to the digestLength object below.\n *\t\tMost RSA implementations will be expecting sha1\n */\nmodule.exports.eme_oaep_mgf1 = function (seed, maskLength, hashFunction) {\n hashFunction = hashFunction || DEFAULT_HASH_FUNCTION;\n var hLen = module.exports.digestLength[hashFunction];\n var count = Math.ceil(maskLength / hLen);\n var T = new Buffer(hLen * count);\n var c = new Buffer(4);\n for (var i = 0; i < count; ++i) {\n var hash = crypt.createHash(hashFunction);\n hash.update(seed);\n c.writeUInt32BE(i, 0);\n hash.update(c);\n hash.digest().copy(T, i * hLen);\n }\n return T.slice(0, maskLength);\n};\n\nmodule.exports.makeScheme = function (key, options) {\n function Scheme(key, options) {\n this.key = key;\n this.options = options;\n }\n\n Scheme.prototype.maxMessageLength = function () {\n return this.key.encryptedDataLength - 2 * module.exports.digestLength[this.options.encryptionSchemeOptions.hash || DEFAULT_HASH_FUNCTION] - 2;\n };\n\n /**\n * Pad input\n * alg: PKCS1_OAEP\n *\n * https://tools.ietf.org/html/rfc3447#section-7.1.1\n */\n Scheme.prototype.encPad = function (buffer) {\n var hash = this.options.encryptionSchemeOptions.hash || DEFAULT_HASH_FUNCTION;\n var mgf = this.options.encryptionSchemeOptions.mgf || module.exports.eme_oaep_mgf1;\n var label = this.options.encryptionSchemeOptions.label || new Buffer(0);\n var emLen = this.key.encryptedDataLength;\n\n var hLen = module.exports.digestLength[hash];\n\n // Make sure we can put message into an encoded message of emLen bytes\n if (buffer.length > emLen - 2 * hLen - 2) {\n throw new Error(\"Message is too long to encode into an encoded message with a length of \" + emLen + \" bytes, increase\" +\n \"emLen to fix this error (minimum value for given parameters and options: \" + (emLen - 2 * hLen - 2) + \")\");\n }\n\n var lHash = crypt.createHash(hash);\n lHash.update(label);\n lHash = lHash.digest();\n\n var PS = new Buffer(emLen - buffer.length - 2 * hLen - 1); // Padding \"String\"\n PS.fill(0); // Fill the buffer with octets of 0\n PS[PS.length - 1] = 1;\n\n var DB = Buffer.concat([lHash, PS, buffer]);\n var seed = crypt.randomBytes(hLen);\n\n // mask = dbMask\n var mask = mgf(seed, DB.length, hash);\n // XOR DB and dbMask together.\n for (var i = 0; i < DB.length; i++) {\n DB[i] ^= mask[i];\n }\n // DB = maskedDB\n\n // mask = seedMask\n mask = mgf(DB, hLen, hash);\n // XOR seed and seedMask together.\n for (i = 0; i < seed.length; i++) {\n seed[i] ^= mask[i];\n }\n // seed = maskedSeed\n\n var em = new Buffer(1 + seed.length + DB.length);\n em[0] = 0;\n seed.copy(em, 1);\n DB.copy(em, 1 + seed.length);\n\n return em;\n };\n\n /**\n * Unpad input\n * alg: PKCS1_OAEP\n *\n * Note: This method works within the buffer given and modifies the values. It also returns a slice of the EM as the return Message.\n * If the implementation requires that the EM parameter be unmodified then the implementation should pass in a clone of the EM buffer.\n *\n * https://tools.ietf.org/html/rfc3447#section-7.1.2\n */\n Scheme.prototype.encUnPad = function (buffer) {\n var hash = this.options.encryptionSchemeOptions.hash || DEFAULT_HASH_FUNCTION;\n var mgf = this.options.encryptionSchemeOptions.mgf || module.exports.eme_oaep_mgf1;\n var label = this.options.encryptionSchemeOptions.label || new Buffer(0);\n\n var hLen = module.exports.digestLength[hash]Line truncated
|
||||
"/**\n * PKCS1 padding and signature scheme\n */\n\nvar BigInteger = require('../libs/jsbn');\nvar crypt = require('crypto');\nvar constants = require('constants');\nvar SIGN_INFO_HEAD = {\n md2: new Buffer('3020300c06082a864886f70d020205000410', 'hex'),\n md5: new Buffer('3020300c06082a864886f70d020505000410', 'hex'),\n sha1: new Buffer('3021300906052b0e03021a05000414', 'hex'),\n sha224: new Buffer('302d300d06096086480165030402040500041c', 'hex'),\n sha256: new Buffer('3031300d060960864801650304020105000420', 'hex'),\n sha384: new Buffer('3041300d060960864801650304020205000430', 'hex'),\n sha512: new Buffer('3051300d060960864801650304020305000440', 'hex'),\n ripemd160: new Buffer('3021300906052b2403020105000414', 'hex'),\n rmd160: new Buffer('3021300906052b2403020105000414', 'hex')\n};\n\nvar SIGN_ALG_TO_HASH_ALIASES = {\n 'ripemd160': 'rmd160'\n};\n\nvar DEFAULT_HASH_FUNCTION = 'sha256';\n\nmodule.exports = {\n isEncryption: true,\n isSignature: true\n};\n\nmodule.exports.makeScheme = function (key, options) {\n function Scheme(key, options) {\n this.key = key;\n this.options = options;\n }\n\n Scheme.prototype.maxMessageLength = function () {\n if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == constants.RSA_NO_PADDING) {\n return this.key.encryptedDataLength;\n }\n return this.key.encryptedDataLength - 11;\n };\n\n /**\n * Pad input Buffer to encryptedDataLength bytes, and return new Buffer\n * alg: PKCS#1\n * @param buffer\n * @returns {Buffer}\n */\n Scheme.prototype.encPad = function (buffer, options) {\n options = options || {};\n var filled;\n if (buffer.length > this.key.maxMessageLength) {\n throw new Error(\"Message too long for RSA (n=\" + this.key.encryptedDataLength + \", l=\" + buffer.length + \")\");\n }\n if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == constants.RSA_NO_PADDING) {\n //RSA_NO_PADDING treated like JAVA left pad with zero character\n return this.pkcs0pad(buffer);\n }\n\n /* Type 1: zeros padding for private key encrypt */\n if (options.type === 1) {\n filled = new Buffer(this.key.encryptedDataLength - buffer.length - 1);\n filled.fill(0xff, 0, filled.length - 1);\n filled[0] = 1;\n filled[filled.length - 1] = 0;\n\n return Buffer.concat([filled, buffer]);\n } else {\n /* random padding for public key encrypt */\n filled = new Buffer(this.key.encryptedDataLength - buffer.length);\n filled[0] = 0;\n filled[1] = 2;\n var rand = crypt.randomBytes(filled.length - 3);\n for (var i = 0; i < rand.length; i++) {\n var r = rand[i];\n while (r === 0) { // non-zero only\n r = crypt.randomBytes(1)[0];\n }\n filled[i + 2] = r;\n }\n filled[filled.length - 1] = 0;\n return Buffer.concat([filled, buffer]);\n }\n };\n\n /**\n * Unpad input Buffer and, if valid, return the Buffer object\n * alg: PKCS#1 (type 2, random)\n * @param buffer\n * @returns {Buffer}\n */\n Scheme.prototype.encUnPad = function (buffer, options) {\n options = options || {};\n var i = 0;\n\n if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == constants.RSA_NO_PADDING) {\n //RSA_NO_PADDING treated like JAVA left pad with zero character\n return this.pkcs0unpad(buffer);\n }\n\n if (buffer.length < 4) {\n return null;\n }\n\n /* Type 1: zeros padding for private key decrypt */\n if (options.type === 1) {\n if (buffer[0] !== 0 && buffer[1] !== 1) {\n return null;\n }\n i = 3;\n while (buffer[i] !== 0) {\n if (buffer[i] != 0xFF || ++i >= buffer.length) {\n return null;\n }\n }\n } else {\n /* random padding for public key decrypt */\n if (buffer[0] !== 0 && buffer[1] !== 2) {\n return null;\n }\n i = 3;\n while (buffer[i] !== 0) {\n if (++i >= buffer.length) {\n return null;\n }\n }\n }\n return buffer.slice(i + 1, buffer.length);\n };\n\n Scheme.prototype.sign = function (buffer) {\n var hashAlgorithm = this.options.signingSchemeOptions.hash || DEFAULT_HASH_FUNCTION;\n if (this.options.environment === 'browser') {\n hashAlgorithm = SIGN_ALG_TO_HASH_ALIASES[hashAlgorithm] || hashAlgorithm;\n\n var hasher = crypt.createHash(hashAlgLine truncated
|
||||
"/**\n * PSS signature scheme\n */\n\nvar BigInteger = require('../libs/jsbn');\nvar crypt = require('crypto');\n\nmodule.exports = {\n isEncryption: false,\n isSignature: true\n};\n\nvar DEFAULT_HASH_FUNCTION = 'sha1';\nvar DEFAULT_SALT_LENGTH = 20;\n\nmodule.exports.makeScheme = function (key, options) {\n var OAEP = require('./schemes').pkcs1_oaep;\n\n /**\n * @param key\n * @param options\n * options [Object] An object that contains the following keys that specify certain options for encoding.\n * └>signingSchemeOptions\n * ├>hash [String] Hash function to use when encoding and generating masks. Must be a string accepted by node's crypto.createHash function. (default = \"sha1\")\n * ├>mgf [function] The mask generation function to use when encoding. (default = mgf1SHA1)\n * └>sLen [uint] The length of the salt to generate. (default = 20)\n * @constructor\n */\n function Scheme(key, options) {\n this.key = key;\n this.options = options;\n }\n\n Scheme.prototype.sign = function (buffer) {\n var mHash = crypt.createHash(this.options.signingSchemeOptions.hash || DEFAULT_HASH_FUNCTION);\n mHash.update(buffer);\n\n var encoded = this.emsa_pss_encode(mHash.digest(), this.key.keySize - 1);\n return this.key.$doPrivate(new BigInteger(encoded)).toBuffer(this.key.encryptedDataLength);\n };\n\n Scheme.prototype.verify = function (buffer, signature, signature_encoding) {\n if (signature_encoding) {\n signature = new Buffer(signature, signature_encoding);\n }\n signature = new BigInteger(signature);\n\n var emLen = Math.ceil((this.key.keySize - 1) / 8);\n var m = this.key.$doPublic(signature).toBuffer(emLen);\n\n var mHash = crypt.createHash(this.options.signingSchemeOptions.hash || DEFAULT_HASH_FUNCTION);\n mHash.update(buffer);\n\n return this.emsa_pss_verify(mHash.digest(), m, this.key.keySize - 1);\n };\n\n /*\n * https://tools.ietf.org/html/rfc3447#section-9.1.1\n *\n * mHash\t[Buffer]\tHashed message to encode\n * emBits\t[uint]\t\tMaximum length of output in bits. Must be at least 8hLen + 8sLen + 9 (hLen = Hash digest length in bytes | sLen = length of salt in bytes)\n * @returns {Buffer} The encoded message\n */\n Scheme.prototype.emsa_pss_encode = function (mHash, emBits) {\n var hash = this.options.signingSchemeOptions.hash || DEFAULT_HASH_FUNCTION;\n var mgf = this.options.signingSchemeOptions.mgf || OAEP.eme_oaep_mgf1;\n var sLen = this.options.signingSchemeOptions.saltLength || DEFAULT_SALT_LENGTH;\n\n var hLen = OAEP.digestLength[hash];\n var emLen = Math.ceil(emBits / 8);\n\n if (emLen < hLen + sLen + 2) {\n throw new Error(\"Output length passed to emBits(\" + emBits + \") is too small for the options \" +\n \"specified(\" + hash + \", \" + sLen + \"). To fix this issue increase the value of emBits. (minimum size: \" +\n (8 * hLen + 8 * sLen + 9) + \")\"\n );\n }\n\n var salt = crypt.randomBytes(sLen);\n\n var Mapostrophe = new Buffer(8 + hLen + sLen);\n Mapostrophe.fill(0, 0, 8);\n mHash.copy(Mapostrophe, 8);\n salt.copy(Mapostrophe, 8 + mHash.length);\n\n var H = crypt.createHash(hash);\n H.update(Mapostrophe);\n H = H.digest();\n\n var PS = new Buffer(emLen - salt.length - hLen - 2);\n PS.fill(0);\n\n var DB = new Buffer(PS.length + 1 + salt.length);\n PS.copy(DB);\n DB[PS.length] = 0x01;\n salt.copy(DB, PS.length + 1);\n\n var dbMask = mgf(H, DB.length, hash);\n\n // XOR DB and dbMask together\n var maskedDB = new Buffer(DB.length);\n for (var i = 0; i < dbMask.length; i++) {\n maskedDB[i] = DB[i] ^ dbMask[i];\n }\n\n var bits = 8 * emLen - emBits;\n var mask = 255 ^ (255 >> 8 - bits << 8 - bits);\n maskedDB[0] = maskedDB[0] & mask;\n\n var EM = new Buffer(maskedDB.length + H.length + 1);\n maskedDB.copy(EM, 0);\n H.copy(EM, maskedDB.length);\n EM[EM.length - 1] = 0xbc;\n\n return EM;\n };\n\n /*\n * https://tools.ietf.org/html/rfc3447#section-9.1.2\n *\n * mHash\t[Buffer]\tHashed message\n * EM\t\t[Buffer]\tSignature\n * emBits\t[uint]\t\tLength of EM in bits. Must be at least 8hLen + 8sLen + 9 to be a valid signature. (hLen = Hash digest length in bytes | sLen = length of salt in bytes)\n * @returns {Boolean} True if signature(EM) matches message(M)\n */\n Scheme.prototype.emsa_pss_verify = function (mHash, EM, emBits) {\n var hash = this.options.signingSchemeOptions.hash || DEFAULT_HASH_FUNCTION;\n var mgf = this.options.signingSchemeOptions.mgf || OAEP.eme_oaep_mgf1;\n var sLen = this.opLine truncated
|
||||
"module.exports = {\n pkcs1: require('./pkcs1'),\n pkcs1_oaep: require('./oaep'),\n pss: require('./pss'),\n\n /**\n * Check if scheme has padding methods\n * @param scheme {string}\n * @returns {Boolean}\n */\n isEncryption: function (scheme) {\n return module.exports[scheme] && module.exports[scheme].isEncryption;\n },\n\n /**\n * Check if scheme has sign/verify methods\n * @param scheme {string}\n * @returns {Boolean}\n */\n isSignature: function (scheme) {\n return module.exports[scheme] && module.exports[scheme].isSignature;\n }\n};",
|
||||
"/*\n * Utils functions\n *\n */\n\nvar crypt = require('crypto');\n\n/**\n * Break string str each maxLen symbols\n * @param str\n * @param maxLen\n * @returns {string}\n */\nmodule.exports.linebrk = function (str, maxLen) {\n var res = '';\n var i = 0;\n while (i + maxLen < str.length) {\n res += str.substring(i, i + maxLen) + \"\\n\";\n i += maxLen;\n }\n return res + str.substring(i, str.length);\n};\n\nmodule.exports.detectEnvironment = function () {\n if (process && process.title === 'browser' || (typeof(window) !== 'undefined' && window)) {\n return 'browser';\n }\n\n return 'node';\n};\n\n/**\n * Trying get a 32-bit unsigned integer from the partial buffer\n * @param buffer\n * @param offset\n * @returns {Number}\n */\nmodule.exports.get32IntFromBuffer = function (buffer, offset) {\n offset = offset || 0;\n var size = 0;\n if ((size = buffer.length - offset) > 0) {\n if (size >= 4) {\n return buffer.readUInt32BE(offset);\n } else {\n var res = 0;\n for (var i = offset + size, d = 0; i > offset; i--, d += 2) {\n res += buffer[i - 1] * Math.pow(16, d);\n }\n return res;\n }\n } else {\n return NaN;\n }\n};\n\nmodule.exports._ = {\n isObject: function (value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n },\n\n isString: function (value) {\n return typeof value == 'string' || value instanceof String;\n },\n\n isNumber: function (value) {\n return typeof value == 'number' || !isNaN(parseFloat(value)) && isFinite(value);\n },\n\n /**\n * Returns copy of `obj` without `removeProp` field.\n * @param obj\n * @param removeProp\n * @returns Object\n */\n omit: function (obj, removeProp) {\n var newObj = {};\n for (var prop in obj) {\n if (!obj.hasOwnProperty(prop) || prop === removeProp) {\n continue;\n }\n newObj[prop] = obj[prop];\n }\n\n return newObj;\n }\n};",
|
||||
"module.exports={\"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n\"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n\"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n\"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n\"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n\"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n\"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n\"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n\"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n\"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n\"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n\"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n}",
|
||||
"// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\nvar asn1 = require('asn1.js')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n",
|
||||
"// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m\nvar startRegex = /^-----BEGIN (.*) KEY-----\\r?\\n/m\nvar fullRegex = /^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = new Buffer(match2[2].replace(/\\r?\\n/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = new Buffer(match[2], 'hex')\n var cipherText = new Buffer(match[3].replace(/\\r?\\n/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1] + ' KEY'\n return {\n tag: tag,\n data: decrypted\n }\n}\n",
|
||||
@@ -973,15 +1085,15 @@
|
||||
"/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.4';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n Line truncated
|
||||
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n",
|
||||
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incompleteLine truncated
|
||||
"var minimist = require('minimist');\n\nmodule.exports = function parse (args, opts) {\n var level = 0, index;\n var args_ = [];\n \n for (var i = 0; i < args.length; i++) {\n if (typeof args[i] === 'string' && /^\\[/.test(args[i])) {\n if (level ++ === 0) {\n index = i;\n }\n }\n if (typeof args[i] === 'string' && /\\]$/.test(args[i])) {\n if (-- level > 0) continue;\n \n var sub = args.slice(index, i + 1);\n if (typeof sub[0] === 'string') {\n sub[0] = sub[0].replace(/^\\[/, '');\n }\n if (sub[0] === '') sub.shift();\n \n var n = sub.length - 1;\n if (typeof sub[n] === 'string') {\n sub[n] = sub[n].replace(/\\]$/, '');\n }\n if (sub[n] === '') sub.pop();\n \n args_.push(parse(sub));\n }\n else if (level === 0) args_.push(args[i]);\n }\n \n var argv = minimist(args_, opts);\n return argv;\n};\n",
|
||||
"var toBinarySync = function(text) {\n var binaryForm = \"\";\n for (var i = 0; i < text.length; i++) {\n var basicBinaryVersion = parseInt(text.charCodeAt(i)).toString(2);\n while (basicBinaryVersion.length < 8) {\n basicBinaryVersion = \"0\" + basicBinaryVersion;\n }\n binaryForm += basicBinaryVersion;\n }\n return binaryForm;\n}\nvar toTextSync = function(binary) {\n var textForm = \"\";\n for (var i = 0; i < binary.length; i += 8) {\n textForm += String.fromCharCode(parseInt(binary.substr(i, 8), 2));\n }\n return textForm;\n}\nvar toBinary = function(text, callback) {\n try {\n var binaryForm = \"\";\n for (var i = 0; i < text.length; i++) {\n var basicBinaryVersion = parseInt(text.charCodeAt(i)).toString(2);\n while (basicBinaryVersion.length < 8) {\n basicBinaryVersion = \"0\" + basicBinaryVersion;\n }\n binaryForm += basicBinaryVersion;\n }\n callback(null, binaryForm);\n } catch (err) {\n callback(err, null);\n }\n}\nvar toText = function(binary, callback) {\n try {\n var textForm = \"\";\n for (var i = 0; i < binary.length; i += 8) {\n textForm += String.fromCharCode(parseInt(binary.substr(i, 8), 2));\n }\n callback(null, textForm);\n } catch (err) {\n callback(err, null);\n }\n}\nvar toBinaryWithPromise = function(text) {\n return new Promise(function(resolve, reject) {\n try {\n var binaryForm = \"\";\n for (var i = 0; i < text.length; i++) {\n var basicBinaryVersion = parseInt(text.charCodeAt(i)).toString(2);\n while (basicBinaryVersion.length < 8) {\n basicBinaryVersion = \"0\" + basicBinaryVersion;\n }\n binaryForm += basicBinaryVersion;\n }\n resolve(binaryForm);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar toTextWithPromise = function(binary) {\n return new Promise(function(resolve, reject) {\n try {\n var textForm = \"\";\n for (var i = 0; i < binary.length; i += 8) {\n textForm += String.fromCharCode(parseInt(binary.substr(i, 8), 2));\n }\n resolve(textForm);\n } catch (err) {\n reject(err);\n }\n });\n}\nvar allInOne = function(options) {\n var to = options.to;\n if (options.callback) {\n if (to == \"text\") {\n toText(options.data, options.callback);\n } else if (to == \"binary\") {\n toBinary(options.data, options.callback);\n }\n } else if (options.promise === true) {\n if (to == \"text\") {\n return toTextWithPromise(options.data);\n } else if (to == \"binary\") {\n return toBinaryWithPromise(options.data);\n }\n } else {\n if (to == \"text\") {\n return toTextSync(options.data);\n } else if (to == \"binary\") {\n return toBinarySync(options.data);\n }\n }\n}\n\nmodule.exports = allInOne;\nmodule.exports.toBinarySync = toBinarySync;\nmodule.exports.toTextSync = toTextSync;\nmodule.exports.toBinary = toBinary;\nmodule.exports.toText = toText;\nmodule.exports.toBinaryWithPromise = toBinaryWithPromise;\nmodule.exports.toTextWithPromise = toTextWithPromise;\n",
|
||||
"\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n",
|
||||
"module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}",
|
||||
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible Line truncated
|
||||
"var indexOf = require('indexof');\n\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj)\n else {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n }\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nvar defineProp = (function() {\n try {\n Object.defineProperty({}, '_', {});\n return function(obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n })\n };\n } catch(e) {\n return function(obj, name, value) {\n obj[name] = value;\n };\n }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n \n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n \n document.body.appendChild(iframe);\n \n var win = iframe.contentWindow;\n var wEval = win.eval, wExecScript = win.execScript;\n\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n \n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n \n var winKeys = Object_keys(win);\n\n var res = wEval.call(win, this.code);\n \n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n \n document.body.removeChild(iframe);\n \n return res;\n};\n\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n\n return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\n\nexports.createScript = function (code) {\n return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if(typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};\n",
|
||||
"/* Whirlpool\n * fork of http://www.sunsean.com/Whirlpool.js for nodejs\n * (c) 2013 David (daXXog) Volm ><> + + + <><\n * Released under Apache License, Version 2.0:\n * http://www.apache.org/licenses/LICENSE-2.0.html \n */ !function(r,o){\"object\"==typeof exports?module.exports=o():\"function\"==typeof define&&define.amd?define(o):r.Whirlpool=o()}(this,function(){var r;return function(){var o,n,f,t,e,i,u,a,c,h,l,d,p=10,v=[],s=[],y=\"ᠣ웨螸ŏ㚦틵祯酒悼鮎ꌌ笵ᷠퟂ⹋﹗ᕷ㟥鿰䫚壉⤊놠殅뵝ჴ쬾է䆋Ᵹ闘ﯮ籦���䞞쨭뼇굚茳挂ꩱ젙䧙守騦㊰햀뻍㑈コ遟둔錢擱猒䀈쏬���贽需켫皂혛떯橐䗳ワ㽕ꋪ斺⿀���﵍鉵ڊ닦ฟ拔ꢖ暈╙葲㥌幸㢌톥댡鰞䏇ﰄ写洍縤㮫츑轎럫㲁铷뤓ⳓ쐃噄義⪻셓���鵬ㅴ겉ᓡᘺ椉炶탭챂颤⡜\";for(n=8;n-->0;)v[n]=[];for(f=0;256>f;f++){t=y.charCodeAt(f/2),u=0==(1&f)?t>>>8:255&t,a=u<<1,a>=256&&(a^=285),c=a<<1,c>=256&&(c^=285),h=c^u,l=c<<1,l>=256&&(l^=285),d=l^u,v[0][f]=[0,0],v[0][f][0]=u<<24|u<<16|c<<8|u,v[0][f][1]=l<<24|h<<16|a<<8|d;for(var n=1;8>n;n++)v[n][f]=[0,0],v[n][f][0]=v[n-1][f][0]>>>8|v[n-1][f][1]<<24,v[n][f][1]=v[n-1][f][1]>>>8|v[n-1][f][0]<<24}for(s[0]=[0,0],e=1;p>=e;e++)i=8*(e-1),s[e]=[0,0],s[e][0]=4278190080&v[0][i][0]^16711680&v[1][i+1][0]^65280&v[2][i+2][0]^255&v[3][i+3][0],s[e][1]=4278190080&v[4][i+4][1]^16711680&v[5][i+5][1]^65280&v[6][i+6][1]^255&v[7][i+7][1];var g=[],A=[],b=0,m=0,x=[],z=[],C=[],M=[],W=[],j=function(){var r,o,n,f,t;for(r=0,o=0;8>r;r++,o+=8)M[r]=[0,0],M[r][0]=(255&A[o])<<24^(255&A[o+1])<<16^(255&A[o+2])<<8^255&A[o+3],M[r][1]=(255&A[o+4])<<24^(255&A[o+5])<<16^(255&A[o+6])<<8^255&A[o+7];for(r=0;8>r;r++)W[r]=[0,0],z[r]=[0,0],W[r][0]=M[r][0]^(z[r][0]=x[r][0]),W[r][1]=M[r][1]^(z[r][1]=x[r][1]);for(n=1;p>=n;n++){for(r=0;8>r;r++)for(C[r]=[0,0],t=0,f=56,o=0;8>t;t++,f-=8,o=32>f?1:0)C[r][0]^=v[t][z[r-t&7][o]>>>f%32&255][0],C[r][1]^=v[t][z[r-t&7][o]>>>f%32&255][1];for(r=0;8>r;r++)z[r][0]=C[r][0],z[r][1]=C[r][1];for(z[0][0]^=s[n][0],z[0][1]^=s[n][1],r=0;8>r;r++)for(C[r][0]=z[r][0],C[r][1]=z[r][1],t=0,f=56,o=0;8>t;t++,f-=8,o=32>f?1:0)C[r][0]^=v[t][W[r-t&7][o]>>>f%32&255][0],C[r][1]^=v[t][W[r-t&7][o]>>>f%32&255][1];for(r=0;8>r;r++)W[r][0]=C[r][0],W[r][1]=C[r][1]}for(r=0;8>r;r++)x[r][0]^=W[r][0]^M[r][0],x[r][1]^=W[r][1]^M[r][1]};o=r=function(r){return o.init().add(r).finalize()},o.version=\"3.0\",o.init=function(){for(var r=32;r-->0;)g[r]=0;for(b=m=0,A=[0],r=8;r-->0;)x[r]=[0,0];return o};var g=function(r){var o,n=r.length;return 0===n?0:(o=r[n-1],32*(n-1)+(Math.round(o/1099511627776)||32))},q=function(r){return Array.isArray(r)?function(r){var o,n,f=[],t=g(r);for(o=0;t/8>o;o++)0===(3&o)&&(n=r[o/4]),f.push(n>>>24),n<<=8;return f}(r):function(r){var o,n,f=r.toString();for(r=[],o=0;o<f.length;o++)n=f.charCodeAt(o),n>=256&&r.push(n>>>8&255),r.push(255&n);return r}(r)};o.add=function(r,n){if(!r)return o;n||(r=q(r),n=8*r.length);var f,t,e,i=0,u=8-(7&n)&7,a=7&b,c=n;for(f=31,e=0;f>=0;f--)e+=(255&g[f])+c%256,g[f]=255&e,e>>>=8,c=Math.floor(c/256);for(;n>8;){if(t=r[i]<<u&255|(255&r[i+1])>>>8-u,0>t||t>=256)return\"Whirlpool requires a byte array\";A[m++]|=t>>>a,b+=8-a,512==b&&(j(),b=m=0,A=[]),A[m]=t<<8-a&255,b+=a,n-=8,i++}return n>0?(t=r[i]<<u&255,A[m]|=t>>>a):t=0,8>a+n?b+=n:(m++,b+=8-a,n-=8-a,512==b&&(j(),b=m=0,A=[]),A[m]=t<<8-a&255,b+=n),o},o.finalize=function(){var r,o,n,f=\"\",t=[],e=\"0123456789abcdef\".split(\"\");if(A[m]|=128>>>(7&b),m++,m>32){for(;64>m;)A[m++]=0;j(),m=0,A=[]}for(;32>m;)A[m++]=0;for(A.push.apply(A,g),j(),r=0,o=0;8>r;r++,o+=8)n=x[r][0],t[o]=n>>>24&255,t[o+1]=n>>>16&255,t[o+2]=n>>>8&255,t[o+3]=255&n,n=x[r][1],t[o+4]=n>>>24&255,t[o+5]=n>>>16&255,t[o+6]=n>>>8&255,t[o+7]=255&n;for(r=0;r<t.length;r++)f+=e[t[r]>>>4],f+=e[15&t[r]];return f}}(),r});",
|
||||
"'use strict';\n\nvar repeat = require('repeat-string');\n\nvar splitOnTags = function splitOnTags(str) {\n return str.split(/(<\\/?[^>]+>)/g).filter(function (line) {\n return line.trim() !== '';\n });\n};\nvar isTag = function isTag(str) {\n return (/<[^>!]+>/.test(str)\n );\n};\nvar isClosingTag = function isClosingTag(str) {\n return (/<\\/+[^>]+>/.test(str)\n );\n};\nvar isSelfClosingTag = function isSelfClosingTag(str) {\n return (/<[^>]+\\/>/.test(str)\n );\n};\nvar isOpeningTag = function isOpeningTag(str) {\n return isTag(str) && !isClosingTag(str) && !isSelfClosingTag(str);\n};\n\nmodule.exports = function (xml, indent) {\n var depth = 0;\n indent = indent || ' ';\n\n return splitOnTags(xml).map(function (item) {\n if (isClosingTag(item)) {\n depth--;\n }\n\n var line = repeat(indent, depth) + item;\n\n if (isOpeningTag(item)) {\n depth++;\n }\n\n return line;\n }).join('\\n');\n};",
|
||||
"/**\n * Created by apanesar on 3/17/17.\n */\n\n// debugging code\n(function () {\n if (typeof window.debug !== 'object') {\n window.debug = {\n log: window.console.log.bind(window.console, '%s'),\n type: window.console.log.bind(window.console, '%s: %s'),\n error: window.console.error.bind(window.console, 'error: %s'),\n info: window.console.info.bind(window.console, 'info: %s'),\n warn: window.console.warn.bind(window.console, 'warn: %s')\n };\n }\n})();",
|
||||
"var css = \"@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic);/*!\\n * Bootstrap v3.3.7 (http://getbootstrap.com)\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css *//*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:\\\" (\\\" attr(href) \\\")\\\"}abbr[title]:after{content:\\\" (\\\" attr(title) \\\")\\\"}a[href^=\\\"javascript:\\\"]:after,a[href^=\\\"#\\\"]:after{content:\\\"\\\"}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}@media (min-width:768px){.lead{font-size:21px}}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:Line truncated
|
||||
"/**\n * Created by neo on 3/6/17.\n */\n\n// debug shim\n(function () {\n if (typeof window.debug !== 'object') {\n window.debug = {\n log: function () {\n },\n type: function () {\n },\n error: function () {\n },\n warn: function () {\n },\n info: function () {\n }\n };\n }\n})();\n\n// can't get browserify-shim to work right\n// let's just make it work here\nwindow.$ = window.jQuery = require('jquery');\n\n// include bootstrap css and javascript\nrequire('./index.css');\nrequire('bootstrap');\n\n// use hasher for application page management\nvar hasher = require('hasher');\nhasher.prependHash = '!';\nhasher.separator = '/';\n\n// include/configure highlight.js\nvar hljs = require('highlight.js');\nhljs.configure({\n tabReplace: ' '.repeat(4)\n});\n\n// use HTML Lint (will display later)\nvar htmlLint = require('htmllint');\n\n// js-beautify libraries\nvar beautify_js = require('js-beautify').js;\nvar beautify_css = require('js-beautify').css;\nvar beautify_html = require('js-beautify').html;\n\n// xml-beautify library\nvar beautify_xml = require('xml-beautifier');\n\n// sql-formatter library\nvar beautify_sql = require('sql-formatter');\n\n// bcrypt-js library\nvar bcrypt = require('bcryptjs');\n\n// forge library\nvar forge = require('forge');\n\n// gencryption\nvar gencryption = require(\"gencryption\");\n\nvar cryptoShim = {\n shim: {\n out: function (md) {\n return md.digest().toHex();\n }\n },\n MD5: function () {\n var type = 'md5';\n cryptoShim.shim[type] = typeof cryptoShim.shim[type] === 'undefined' ? forge.md[type].create() : cryptoShim.shim[type];\n cryptoShim.shim[type].update.apply(this, arguments);\n return cryptoShim.shim.out(cryptoShim.shim[type]);\n },\n SHA1: function () {\n var type = 'sha1';\n cryptoShim.shim[type] = typeof cryptoShim.shim[type] === 'undefined' ? forge.md[type].create() : cryptoShim.shim[type];\n cryptoShim.shim[type].update.apply(this, arguments);\n return cryptoShim.shim.out(cryptoShim.shim[type]);\n },\n RIPEMD160: function () {\n return CryptoJS.RIPEMD160.apply(this, arguments).toString(CryptoJS.enc.Hex);\n },\n bcrypt: function (stringIn) {\n return bcrypt.hashSync(stringIn, 10);\n }\n};\n\n/**\n * JSON linting!\n * @param json\n */\nvar jsonLint = function (json) {\n return typeof json !== 'string' ? JSON.stringify(json, undefined, 4) : jsonLint(JSON.parse(json));\n};\n\nvar hashShim = {\n /**\n * Returns hash, code, and type based on hashIn and separator\n * @param hashIn\n * @param separator\n * @return {{type: string, code: string, hash: string}}\n */\n getHash: function (hashIn, separator) {\n hashIn = typeof hashIn !== 'string' ? hasher.getHash() : hashIn;\n separator = typeof separator !== 'string' ? hasher.separator : separator;\n\n var split = hashIn.split(separator, 3);\n\n return {\n 'type': typeof split[0] === 'string' ? split[0] : '',\n 'code': typeof split[1] === 'string' ? atob(split[1]) : '',\n 'hash': typeof split[2] === 'string' ? atob(split[2]) : ''\n };\n },\n\n /**\n * Compares the first substring of separator with one and two\n * @param one\n * @param two\n * @param separator\n * @returns {boolean}\n */\n hashTypeCompare: function (one, two, separator) {\n separator = typeof separator !== 'string' ? hasher.separator : separator;\n\n var oneS = one.split(separator, 1)[0];\n var twoS = two.split(separator, 1)[0];\n\n debug.type(\"hashTypeCompare\", \"one: {\" + oneS + \"} two: {\" + twoS + \"} === \" + (oneS === twoS ? 'true' : 'false'));\n\n return oneS === twoS;\n },\n\n /**\n * Calls hasher.setHash()\n */\n setHash: function (path) {\n debug.type(\"setHash() in\", JSON.stringify(arguments));\n\n // arguments[0]; // = type\n arguments[1] = btoa(arguments[1]); // = code\n arguments[2] = typeof arguments[2] !== 'undefined' ? btoa(arguments[2]) : arguments[2]; // hash\n\n debug.type(\"setHash() out\", JSON.stringify(arguments));\n\n hasher.setHash.apply(this, arguments);\n },\n\n /**\n * Calls hasher.replaceHash()\n */\n replaceHash: function (path) {\n debug.type(\"replaceHash() in\", JSON.stringify(arguments));\n\n // arguments[0]; // = type\n arguments[1] = btoa(arguments[1]); // = code\n arguments[2] = typeof arguments[2] !== 'undefined' ? btoa(arguments[2]) : arguments[2]; // hash\n\n debug.type(\"replaceHash() out\", JSON.stringify(arguments));\n\n hasher.replaceHash.apply(this, arguments);\n }\n\n};\n\nvar config = {\n _valid_tabs: [],\n html: {\n name: \"HTML Linter\",\n text: \Line truncated
|
||||
"var css = \"@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic);/*!\\n * Bootstrap v3.3.7 (http://getbootstrap.com)\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css *//*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:\\\" (\\\" attr(href) \\\")\\\"}abbr[title]:after{content:\\\" (\\\" attr(title) \\\")\\\"}a[href^=\\\"javascript:\\\"]:after,a[href^=\\\"#\\\"]:after{content:\\\"\\\"}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.eot);src:url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.woff) format('woff'),url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(node_modules/bootstrap.native/assets/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}@media (min-width:768px){.lead{font-size:21px}}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{righLine truncated
|
||||
"/**\n * Created by neo on 3/6/17.\n */\n\n// debug shim\n(function () {\n if (typeof window.debug !== 'object') {\n window.debug = {\n log: function () {\n },\n type: function () {\n },\n error: function () {\n },\n warn: function () {\n },\n info: function () {\n }\n };\n }\n})();\n\n// can't get browserify-shim to work right\n// let's just make it work here\nwindow.$ = window.jQuery = require('jquery');\n\n// include bootstrap css and javascript\nrequire('./index.css');\nvar bsn = require('bootstrap.native');\n\n// use hasher for application page management\nvar hasher = require('hasher');\nhasher.prependHash = '!';\nhasher.separator = '/';\n\n// include/configure highlight.js\nvar hljs = require('highlight.js');\nhljs.configure({\n tabReplace: ' '.repeat(4)\n});\n\n// use HTML Lint (will display later)\nvar htmlLint = require('htmllint');\n\n// js-beautify libraries\nvar beautify_js = require('js-beautify').js;\nvar beautify_css = require('js-beautify').css;\nvar beautify_html = require('js-beautify').html;\n\n// xml-beautify library\nvar beautify_xml = require('xml-beautifier');\n\n// sql-formatter library\nvar beautify_sql = require('sql-formatter');\n\n// bcrypt-js library\nvar bcrypt = require('bcryptjs');\n\n// forge library\nvar forge = require('node-forge');\n\n// gencryption\nvar gencryption = require(\"gencryption\");\n\n// whirlpool\nvar whirlpool = require(\"whirlpool\");\n\nvar cryptoShim = {\n shim: {\n out: function (md) {\n return md.digest().toHex();\n }\n },\n /**\n * MD(4|5) support\n * @param type\n * @param textIn\n * @return {*}\n * @constructor\n */\n MD: function (type, textIn) {\n switch (type) {\n case 4:\n type = \"md4\";\n return gencryption.md4.getHashOfTextSync.apply(this, [textIn]);\n break;\n case 5:\n type = \"md5\";\n return gencryption.md5.getHashOfTextSync.apply(this, [textIn]);\n default:\n throw new Error(\"Unable to parse MD \" + type);\n }\n },\n /**\n * SHA(1|2|3|KE) support\n * @param type\n * @param bits\n * @param textIn\n * @param outputBitLength\n * @return {*}\n * @constructor\n */\n SHA: function (type, bits, textIn, outputBitLength) {\n switch (type) {\n case 1:\n return gencryption.sha1.getHashOfTextSync.apply(this, [textIn]);\n break;\n case 2:\n return gencryption.sha2.getHashOfTextSync.apply(this, [bits, textIn]);\n break;\n case 3:\n return gencryption.sha3.getHashOfTextSync.apply(this, [bits, textIn]);\n break;\n case \"ke\":\n return gencryption.shake.getHashOfTextSync.apply(this, [bits, outputBitLength, textIn]);\n break;\n default:\n throw new Error(\"Unable to parse SHA \" + type);\n }\n },\n /**\n * Keccak support\n * @param bitSize [224, 256, 384, 512]\n * @param stringIn\n * @return {*}\n */\n keccak: function (bitSize, stringIn) {\n return gencryption.keccak.getHashOfTextSync.apply(this, [bitSize, stringIn]);\n },\n /**\n * Whirlpool support\n * @param stringIn\n * @return {*}\n */\n whirlpool: function (stringIn) {\n return whirlpool.apply(this, [stringIn]);\n },\n /**\n * RIPEMD[160] support\n * @param length\n * @param stringIn\n * @constructor\n */\n RIPEMD: function (length, stringIn) {\n if (length === 160) {\n return gencryption.ripemd160.getHashOfTextSync.apply(this, [stringIn]);\n } else {\n return gencryption.ripemd.getHashOfTextSync.apply(this, [stringIn]);\n }\n },\n /**\n * DSS1 support\n * @param stringIn\n * @return {*}\n * @constructor\n */\n DSS1: function (stringIn) {\n return gencryption.dss1.getHashOfTextSync.apply(this, [stringIn])\n },\n /**\n * MDC2 support\n * @param stringIn\n * @return {*}\n * @constructor\n */\n MDC2: function (stringIn) {\n return gencryption.mdc2.getHashOfTextSync.apply(this, [stringIn]);\n },\n /**\n * BCrypt support\n * @param stringIn\n * @return {string|?string}\n */\n bcrypt: function (stringIn) {\n return bcrypt.hashSync.apply(this, [stringIn, 10]);\n }\n};\n\n/**\n * JSON linting!\n * @param json\n */\nvar jsonLint = function (json) {\n return typeof json !== 'string' ? JSON.stringify(json, undefined, 4) : jsonLint(JSON.parse(json));\n};\n\nvar hashShim = {\n /**\n * Returns hash, code, and type based on hashIn and separator\n * @param hashIn\n * @param separatLine truncated
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
CSS Boilerplate
|
||||
*/
|
||||
|
||||
@import url('../node_modules/bootstrap/dist/css/bootstrap.min.css');
|
||||
@import url('../node_modules/bootstrap.native/assets/css/bootstrap.min.css');
|
||||
@import url('../node_modules/bootswatch/darkly/bootstrap.min.css');
|
||||
@import url('../node_modules/highlight.js/styles/default.css');
|
||||
@import url('../node_modules/highlight.js/styles/monokai-sublime.css');
|
||||
|
||||
+31
-5
@@ -9,7 +9,8 @@
|
||||
<nav class="navbar navbar-fixed-top navbar-default">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
@@ -25,19 +26,44 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
<div class="col">
|
||||
<h1 id="header">HTML Lint</h1>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-9">
|
||||
<p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="input">
|
||||
<textarea id="input"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="form-group">
|
||||
<label for="select" class="control-label">Dropdown</label>
|
||||
<select class="form-control" id="select">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="output">
|
||||
<pre><code id="output" class="hljs" contenteditable="true"></code></pre>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
+80
-24
@@ -26,7 +26,7 @@ window.$ = window.jQuery = require('jquery');
|
||||
|
||||
// include bootstrap css and javascript
|
||||
require('./index.css');
|
||||
require('bootstrap');
|
||||
var bsn = require('bootstrap.native');
|
||||
|
||||
// use hasher for application page management
|
||||
var hasher = require('hasher');
|
||||
@@ -62,6 +62,9 @@ var forge = require('node-forge');
|
||||
// gencryption
|
||||
var gencryption = require("gencryption");
|
||||
|
||||
// whirlpool
|
||||
var whirlpool = require("whirlpool");
|
||||
|
||||
var cryptoShim = {
|
||||
shim: {
|
||||
out: function (md) {
|
||||
@@ -79,11 +82,11 @@ var cryptoShim = {
|
||||
switch (type) {
|
||||
case 4:
|
||||
type = "md4";
|
||||
return gencryption.md4.getHashOfTextSync.apply(this, [arguments[1]]);
|
||||
return gencryption.md4.getHashOfTextSync.apply(this, [textIn]);
|
||||
break;
|
||||
case 5:
|
||||
type = "md5";
|
||||
return gencryption.md5.getHashOfTextSync.apply(this, [arguments[1]]);
|
||||
return gencryption.md5.getHashOfTextSync.apply(this, [textIn]);
|
||||
default:
|
||||
throw new Error("Unable to parse MD " + type);
|
||||
}
|
||||
@@ -100,16 +103,16 @@ var cryptoShim = {
|
||||
SHA: function (type, bits, textIn, outputBitLength) {
|
||||
switch (type) {
|
||||
case 1:
|
||||
return gencryption.sha1.getHashOfTextSync.apply(this, [arguments[2]]);
|
||||
return gencryption.sha1.getHashOfTextSync.apply(this, [textIn]);
|
||||
break;
|
||||
case 2:
|
||||
gencryption.sha2.getHashOfTextSync.apply(this, [arguments[1], arguments[2]]);
|
||||
return gencryption.sha2.getHashOfTextSync.apply(this, [bits, textIn]);
|
||||
break;
|
||||
case 3:
|
||||
gencryption.sha3.getHashOfTextSync.apply(this, [arguments[1], arguments[2]]);
|
||||
return gencryption.sha3.getHashOfTextSync.apply(this, [bits, textIn]);
|
||||
break;
|
||||
case "ke":
|
||||
return gencryption.shake.getHashOfTextSync.apply(this, [arguments[1], arguments[3], arguments[2]]);
|
||||
return gencryption.shake.getHashOfTextSync.apply(this, [bits, outputBitLength, textIn]);
|
||||
break;
|
||||
default:
|
||||
throw new Error("Unable to parse SHA " + type);
|
||||
@@ -122,7 +125,7 @@ var cryptoShim = {
|
||||
* @return {*}
|
||||
*/
|
||||
keccak: function (bitSize, stringIn) {
|
||||
return gencryption.keccak.getHashOfTextSync.apply(this, arguments);
|
||||
return gencryption.keccak.getHashOfTextSync.apply(this, [bitSize, stringIn]);
|
||||
},
|
||||
/**
|
||||
* Whirlpool support
|
||||
@@ -130,7 +133,7 @@ var cryptoShim = {
|
||||
* @return {*}
|
||||
*/
|
||||
whirlpool: function (stringIn) {
|
||||
return gencryption.whirlpool.getHashOfTextSync.apply(this, arguments);
|
||||
return whirlpool.apply(this, [stringIn]);
|
||||
},
|
||||
/**
|
||||
* RIPEMD[160] support
|
||||
@@ -140,9 +143,9 @@ var cryptoShim = {
|
||||
*/
|
||||
RIPEMD: function (length, stringIn) {
|
||||
if (length === 160) {
|
||||
return gencryption.ripemd160.getHashOfTextSync.apply(this, [arguments[1]]);
|
||||
return gencryption.ripemd160.getHashOfTextSync.apply(this, [stringIn]);
|
||||
} else {
|
||||
return gencryption.ripemd.getHashOfTextSync.apply(this, [arguments[1]]);
|
||||
return gencryption.ripemd.getHashOfTextSync.apply(this, [stringIn]);
|
||||
}
|
||||
},
|
||||
/**
|
||||
@@ -152,7 +155,7 @@ var cryptoShim = {
|
||||
* @constructor
|
||||
*/
|
||||
DSS1: function (stringIn) {
|
||||
return gencryption.dss1.getHashOfTextSync.apply(this, arguments)
|
||||
return gencryption.dss1.getHashOfTextSync.apply(this, [stringIn])
|
||||
},
|
||||
/**
|
||||
* MDC2 support
|
||||
@@ -160,8 +163,8 @@ var cryptoShim = {
|
||||
* @return {*}
|
||||
* @constructor
|
||||
*/
|
||||
MDC2: function(stringIn) {
|
||||
return gencryption.mdc2.getHashOfTextSync.apply(this, arguments);
|
||||
MDC2: function (stringIn) {
|
||||
return gencryption.mdc2.getHashOfTextSync.apply(this, [stringIn]);
|
||||
},
|
||||
/**
|
||||
* BCrypt support
|
||||
@@ -169,7 +172,7 @@ var cryptoShim = {
|
||||
* @return {string|?string}
|
||||
*/
|
||||
bcrypt: function (stringIn) {
|
||||
return bcrypt.hashSync(stringIn, 10);
|
||||
return bcrypt.hashSync.apply(this, [stringIn, 10]);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -330,6 +333,10 @@ var config = {
|
||||
dss1_hash: {
|
||||
name: "DSS1 Hasher",
|
||||
text: "DSS1"
|
||||
},
|
||||
mdc2_hash: {
|
||||
name: "MDC2 Hasher",
|
||||
text: "MDC2"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -361,6 +368,20 @@ var config = {
|
||||
}
|
||||
};
|
||||
|
||||
var shim = {
|
||||
/**
|
||||
* Shim for d.gEBI();
|
||||
* @param id
|
||||
* @return {Element}
|
||||
*/
|
||||
element: function(id) {
|
||||
if (id.substring(0, 1) === '#') {
|
||||
id = id.substring(1);
|
||||
}
|
||||
return document.getElementById(id);
|
||||
}
|
||||
};
|
||||
|
||||
$('window').ready(function () {
|
||||
|
||||
// main I/O
|
||||
@@ -373,19 +394,24 @@ $('window').ready(function () {
|
||||
return;
|
||||
}
|
||||
|
||||
var id = key + '_tab';
|
||||
var listItemID = key + '_tab';
|
||||
var linkID = key + '_link';
|
||||
|
||||
var listItem = $('<li />')
|
||||
.attr('id', id)
|
||||
.attr('id', listItemID)
|
||||
.attr('data-name', config[key].name)
|
||||
.attr('data-function', key);
|
||||
|
||||
var link = $('<a />')
|
||||
.attr('id', linkID)
|
||||
.attr('href', '#')
|
||||
.html(config[key].text)
|
||||
.appendTo(listItem);
|
||||
|
||||
navbar.append(listItem);
|
||||
|
||||
if (config[key].hasOwnProperty('tabs')) {
|
||||
|
||||
var tabs = config[key].tabs;
|
||||
|
||||
listItem.addClass('dropdown');
|
||||
@@ -408,7 +434,7 @@ $('window').ready(function () {
|
||||
|
||||
var li = $('<li />')
|
||||
.attr('id', id2)
|
||||
.attr('data-extra-highlight', id)
|
||||
.attr('data-extra-highlight', listItemID)
|
||||
.attr('data-name', tabs[k2].name)
|
||||
.attr('data-function', k2)
|
||||
.appendTo(ul);
|
||||
@@ -419,11 +445,11 @@ $('window').ready(function () {
|
||||
.appendTo(li);
|
||||
|
||||
});
|
||||
|
||||
listItem.append(ul);
|
||||
|
||||
new bsn.Dropdown(shim.element(linkID), {persist: true});
|
||||
}
|
||||
|
||||
navbar.append(listItem);
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -437,7 +463,19 @@ $('window').ready(function () {
|
||||
|
||||
var hash = hashShim.getHash();
|
||||
|
||||
if (!(type in config)) {
|
||||
var exists = false;
|
||||
|
||||
for (var key in config) {
|
||||
if (config.hasOwnProperty(type)) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
else if (config[key].hasOwnProperty('tabs') && config[key].tabs.hasOwnProperty(type)) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!exists) {
|
||||
debug.type('changeType()', 'Default Case: Calling hasher.sethash with {html} : {' + hash.code + '}');
|
||||
hashShim.setHash('html', hash.code);
|
||||
debug.type('changeType()', '----------End----------');
|
||||
@@ -446,10 +484,14 @@ $('window').ready(function () {
|
||||
|
||||
debug.type('changeType()', 'type: ' + type);
|
||||
|
||||
// de-highlight currently highlighted tab
|
||||
navbar.find('.active').removeClass('active');
|
||||
|
||||
// add highlighting to active tab
|
||||
var tab = $('#' + type + '_tab');
|
||||
tab.addClass('active');
|
||||
|
||||
// if it's a sub tab this will be populated
|
||||
if (tab.data('extra-highlight') !== '') {
|
||||
$('#' + tab.data('extra-highlight')).addClass('active');
|
||||
}
|
||||
@@ -501,6 +543,7 @@ $('window').ready(function () {
|
||||
case 'sql':
|
||||
stringOut = hljs.highlight('sql', beautify_sql.format(code), true).value;
|
||||
break;
|
||||
|
||||
case 'urlencode':
|
||||
stringOut = hljs.highlight('yaml', encodeURIComponent(code), true).value;
|
||||
break;
|
||||
@@ -513,14 +556,27 @@ $('window').ready(function () {
|
||||
case 'base64decode':
|
||||
stringOut = hljs.highlight('yaml', atob(code), true).value;
|
||||
break;
|
||||
|
||||
case 'md_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.MD5(code), true).value;
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.MD(5, code), true).value;
|
||||
break;
|
||||
case 'sha_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.SHA1(code), true).value;
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.SHA(1, null, code, null), true).value;
|
||||
break;
|
||||
case 'ripemd_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.RIPEMD160(code), true).value;
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.RIPEMD(160, code), true).value;
|
||||
break;
|
||||
case 'keccak_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.keccak(512, code), true).value;
|
||||
break;
|
||||
case 'whirlpool_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.whirlpool(code), true).value;
|
||||
break;
|
||||
case 'dss1_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.DSS1(code), true).value;
|
||||
break;
|
||||
case 'mdc2_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.MDC2(code), true).value;
|
||||
break;
|
||||
case 'bcrypt_hash':
|
||||
stringOut = hljs.highlight('yaml', cryptoShim.bcrypt(code), true).value;
|
||||
|
||||
Reference in new issue
Block a user