diff --git a/.editorconfig b/.editorconfig
index 87a3009..1eaa865 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -11,5 +11,6 @@ insert_final_newline = true
[*.yml]
indent_size = 2
+
[*.md]
trim_trailing_whitespace = false
diff --git a/package-lock.json b/package-lock.json
index 7002adf..4ce40ac 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,218 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@types/jquery": {
+ "version": "3.3.29",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/jquery/-/jquery-3.3.29.tgz",
+ "integrity": "sha1-aAoiGc48klBINyL8z1Vw0eLQir0=",
+ "dev": true,
+ "requires": {
+ "@types/sizzle": "*"
+ }
+ },
+ "@types/jqueryui": {
+ "version": "1.12.7",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/jqueryui/-/jqueryui-1.12.7.tgz",
+ "integrity": "sha1-gVRqc9VGCifZcgCKi9HXOw4nWkg=",
+ "dev": true,
+ "requires": {
+ "@types/jquery": "*"
+ }
+ },
+ "@types/sizzle": {
+ "version": "2.3.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@types/sizzle/-/sizzle-2.3.2.tgz",
+ "integrity": "sha1-qBG4wY4rq6t9VCszZYh64uTZ3kc=",
+ "dev": true
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha1-3vS5knsBAdyMu9jR7bW3ucguskU=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha1-U3p1Dt31weky83RCBlUckcG5PmE=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha1-cSMp2+8kDza/V70ve4+5v0FUQh4=",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha1-BE7es06mefPgTNT9mCTV41dnrhA=",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw=",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha1-li2hKqWswcExyBxCMpkcgs5W4Bo=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=",
+ "dev": true
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/abbrev/-/abbrev-1.1.1.tgz",
@@ -20,6 +232,18 @@
"negotiator": "0.6.2"
}
},
+ "acorn": {
+ "version": "6.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/acorn/-/acorn-6.1.1.tgz",
+ "integrity": "sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "4.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
+ "integrity": "sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=",
+ "dev": true
+ },
"agent-base": {
"version": "4.2.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/agent-base/-/agent-base-4.2.1.tgz",
@@ -41,6 +265,18 @@
"uri-js": "^4.2.2"
}
},
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.4.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
+ "integrity": "sha1-S4Mee1MUFafMUYzUBOc/YZPGNJ0=",
+ "dev": true
+ },
"ansi-colors": {
"version": "3.2.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ansi-colors/-/ansi-colors-3.2.3.tgz",
@@ -62,6 +298,33 @@
"color-convert": "^1.9.0"
}
},
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+ "dev": true
+ },
"argparse": {
"version": "1.0.10",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/argparse/-/argparse-1.0.10.tgz",
@@ -157,6 +420,17 @@
"safer-buffer": "~2.1.0"
}
},
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
"assert": {
"version": "1.4.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/assert/-/assert-1.4.1.tgz",
@@ -190,6 +464,12 @@
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
"dev": true
},
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
+ "dev": true
+ },
"async-limiter": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/async-limiter/-/async-limiter-1.0.0.tgz",
@@ -281,6 +561,12 @@
}
}
},
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=",
+ "dev": true
+ },
"basic-auth": {
"version": "2.0.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -311,6 +597,30 @@
"integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
"dev": true
},
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bluebird/-/bluebird-3.5.4.tgz",
+ "integrity": "sha1-1sxmFZXeMNWzr1/O3TwLPvbsVxQ=",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+ "dev": true
+ },
"body": {
"version": "5.1.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/body/-/body-5.1.0.tgz",
@@ -362,24 +672,162 @@
}
}
},
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
"browser-stdout": {
"version": "1.3.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=",
"dev": true
},
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
"dev": true
},
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
"bytes": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/bytes/-/bytes-1.0.0.tgz",
"integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
"dev": true
},
+ "cacache": {
+ "version": "11.3.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cacache/-/cacache-11.3.2.tgz",
+ "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.3",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.15",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
"cache-base": {
"version": "1.0.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cache-base/-/cache-base-1.0.1.tgz",
@@ -450,6 +898,62 @@
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
"dev": true
},
+ "chokidar": {
+ "version": "2.1.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chokidar/-/chokidar-2.1.5.tgz",
+ "integrity": "sha1-CuhDTZYigaX1bHKGnnnLbZ2GrU0=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chownr/-/chownr-1.1.1.tgz",
+ "integrity": "sha1-VHJri4//TfBTxCGH6AH7RBLfFJQ=",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
+ "integrity": "sha1-Rakb0sIMlBHwljtarrmhuV4JzEg=",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"class-utils": {
"version": "0.3.6",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/class-utils/-/class-utils-0.3.6.tgz",
@@ -602,6 +1106,12 @@
"integrity": "sha1-1YuytcHuj4ew00ACfp6U4iLFpCI=",
"dev": true
},
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
"component-emitter": {
"version": "1.3.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -653,12 +1163,32 @@
"date-now": "^0.1.4"
}
},
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
"continuable-cache": {
"version": "0.3.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/continuable-cache/-/continuable-cache-0.3.1.tgz",
"integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
"dev": true
},
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -671,6 +1201,43 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -684,6 +1251,25 @@
"which": "^1.2.9"
}
},
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -693,6 +1279,12 @@
"array-find-index": "^1.0.1"
}
},
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
"dashdash": {
"version": "1.14.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/dashdash/-/dashdash-1.14.1.tgz",
@@ -819,6 +1411,16 @@
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
"dev": true
},
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
"destroy": {
"version": "1.0.4",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/destroy/-/destroy-1.0.4.tgz",
@@ -837,6 +1439,17 @@
"integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=",
"dev": true
},
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
"dom-serializer": {
"version": "0.1.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/dom-serializer/-/dom-serializer-0.1.1.tgz",
@@ -855,6 +1468,12 @@
}
}
},
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+ "dev": true
+ },
"domelementtype": {
"version": "1.3.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/domelementtype/-/domelementtype-1.3.1.tgz",
@@ -914,12 +1533,33 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
"dev": true
},
+ "elliptic": {
+ "version": "6.4.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
"dev": true
},
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -935,12 +1575,32 @@
"once": "^1.4.0"
}
},
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "tapable": "^1.0.0"
+ }
+ },
"entities": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
"dev": true
},
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
"error": {
"version": "7.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/error/-/error-7.0.2.tgz",
@@ -1012,12 +1672,37 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
"esprima": {
"version": "4.0.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
"dev": true
},
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
"etag": {
"version": "1.8.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/etag/-/etag-1.8.1.tgz",
@@ -1036,6 +1721,16 @@
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
"dev": true
},
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"execa": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/execa/-/execa-1.0.0.tgz",
@@ -1241,6 +1936,12 @@
"pend": "~1.2.0"
}
},
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=",
+ "dev": true
+ },
"figures": {
"version": "1.7.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/figures/-/figures-1.7.0.tgz",
@@ -1289,6 +1990,17 @@
"unpipe": "~1.0.0"
}
},
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
"find-up": {
"version": "1.1.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-1.1.2.tgz",
@@ -1359,6 +2071,16 @@
}
}
},
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/for-in/-/for-in-1.0.2.tgz",
@@ -1406,6 +2128,16 @@
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
"dev": true
},
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
"fs-extra": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs-extra/-/fs-extra-1.0.0.tgz",
@@ -1417,12 +2149,553 @@
"klaw": "^1.0.0"
}
},
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "fsevents": {
+ "version": "1.2.9",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fsevents/-/fsevents-1.2.9.tgz",
+ "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/function-bind/-/function-bind-1.1.1.tgz",
@@ -1500,6 +2773,16 @@
"path-is-absolute": "^1.0.0"
}
},
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
"global-modules": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/global-modules/-/global-modules-1.0.0.tgz",
@@ -1955,6 +3238,26 @@
}
}
},
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
"hasha": {
"version": "2.2.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hasha/-/hasha-2.2.0.tgz",
@@ -1971,6 +3274,17 @@
"integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
"dev": true
},
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -2110,6 +3424,34 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
"indent-string": {
"version": "2.1.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indent-string/-/indent-string-2.1.0.tgz",
@@ -2119,6 +3461,12 @@
"repeating": "^2.0.0"
}
},
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
"inflight": {
"version": "1.0.6",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/inflight/-/inflight-1.0.6.tgz",
@@ -2195,6 +3543,15 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -2504,6 +3861,12 @@
}
}
},
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
+ "dev": true
+ },
"json-schema": {
"version": "0.2.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json-schema/-/json-schema-0.2.3.tgz",
@@ -2522,6 +3885,15 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
"jsonfile": {
"version": "2.4.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/jsonfile/-/jsonfile-2.4.0.tgz",
@@ -2634,6 +4006,23 @@
"strip-bom": "^2.0.0"
}
},
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ }
+ },
"locate-path": {
"version": "2.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-2.0.0.tgz",
@@ -2710,6 +4099,33 @@
"signal-exit": "^3.0.0"
}
},
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+ "dev": true
+ }
+ }
+ },
"make-iterator": {
"version": "1.0.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/make-iterator/-/make-iterator-1.0.1.tgz",
@@ -2719,6 +4135,12 @@
"kind-of": "^6.0.2"
}
},
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q=",
+ "dev": true
+ },
"map-age-cleaner": {
"version": "0.1.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
@@ -2788,6 +4210,17 @@
}
}
},
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
"mem": {
"version": "4.3.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mem/-/mem-4.3.0.tgz",
@@ -2799,6 +4232,16 @@
"p-is-promise": "^2.0.0"
}
},
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
"meow": {
"version": "3.7.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/meow/-/meow-3.7.0.tgz",
@@ -2838,6 +4281,16 @@
"to-regex": "^3.0.2"
}
},
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
"mime": {
"version": "1.4.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mime/-/mime-1.4.1.tgz",
@@ -2865,6 +4318,18 @@
"integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
"dev": true
},
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
"minimatch": {
"version": "3.0.4",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/minimatch/-/minimatch-3.0.4.tgz",
@@ -2880,6 +4345,24 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
"mixin-deep": {
"version": "1.3.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mixin-deep/-/mixin-deep-1.3.1.tgz",
@@ -3072,6 +4555,20 @@
"on-headers": "~1.0.1"
}
},
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.0.0.tgz",
@@ -3090,6 +4587,13 @@
"minimatch": "^3.0.0"
}
},
+ "nan": {
+ "version": "2.13.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nan/-/nan-2.13.2.tgz",
+ "integrity": "sha1-9R3Hrma6fV1V4ebU2AkugCya7+c=",
+ "dev": true,
+ "optional": true
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -3115,6 +4619,12 @@
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
"dev": true
},
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=",
+ "dev": true
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nice-try/-/nice-try-1.0.5.tgz",
@@ -3147,6 +4657,69 @@
"websocket-stream": "^5.0.1"
}
},
+ "node-libs-browser": {
+ "version": "2.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/node-libs-browser/-/node-libs-browser-2.2.0.tgz",
+ "integrity": "sha1-xy9g2dRt4IqUDe27JfP/ovm7qnc=",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "events": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/events/-/events-3.0.0.tgz",
+ "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=",
+ "dev": true
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/util/-/util-0.11.1.tgz",
+ "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+ },
"nopt": {
"version": "3.0.6",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/nopt/-/nopt-3.0.6.tgz",
@@ -3168,6 +4741,12 @@
"validate-npm-package-license": "^3.0.1"
}
},
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
+ "dev": true
+ },
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -3327,6 +4906,12 @@
"is-wsl": "^1.1.0"
}
},
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
"os-homedir": {
"version": "1.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/os-homedir/-/os-homedir-1.0.2.tgz",
@@ -3417,6 +5002,37 @@
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
+ "pako": {
+ "version": "1.0.10",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pako/-/pako-1.0.10.tgz",
+ "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-asn1/-/parse-asn1-5.1.4.tgz",
+ "integrity": "sha1-N/Zij4I/vesic7TVQENKIvPvH8w=",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"parse-filepath": {
"version": "1.0.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-filepath/-/parse-filepath-1.0.2.tgz",
@@ -3461,6 +5077,18 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
"path-exists": {
"version": "2.1.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-2.1.0.tgz",
@@ -3520,6 +5148,19 @@
"integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
"dev": true
},
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
"pend": {
"version": "1.2.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pend/-/pend-1.2.0.tgz",
@@ -3578,6 +5219,66 @@
"pinkie": "^2.0.0"
}
},
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
"pkg-up": {
"version": "2.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pkg-up/-/pkg-up-2.0.0.tgz",
@@ -3662,6 +5363,12 @@
}
}
},
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
@@ -3674,18 +5381,44 @@
"integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
"dev": true
},
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
"dev": true
},
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
"psl": {
"version": "1.1.31",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/psl/-/psl-1.1.31.tgz",
"integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=",
"dev": true
},
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pump/-/pump-3.0.0.tgz",
@@ -3696,6 +5429,29 @@
"once": "^1.3.1"
}
},
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
"punycode": {
"version": "1.3.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/punycode/-/punycode-1.3.2.tgz",
@@ -3762,6 +5518,31 @@
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
"range-parser": {
"version": "1.2.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/range-parser/-/range-parser-1.2.0.tgz",
@@ -3822,6 +5603,17 @@
"util-deprecate": "~1.0.1"
}
},
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
"rechoir": {
"version": "0.6.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/rechoir/-/rechoir-0.6.2.tgz",
@@ -3851,6 +5643,12 @@
"safe-regex": "^1.1.0"
}
},
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
"repeat-element": {
"version": "1.1.3",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/repeat-element/-/repeat-element-1.1.3.tgz",
@@ -3938,6 +5736,23 @@
"path-parse": "^1.0.6"
}
},
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
"resolve-dir": {
"version": "1.0.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/resolve-dir/-/resolve-dir-1.0.1.tgz",
@@ -4000,6 +5815,25 @@
}
}
},
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -4027,6 +5861,17 @@
"integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
"dev": true
},
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
"semver": {
"version": "5.7.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/semver/-/semver-5.7.0.tgz",
@@ -4062,6 +5907,12 @@
}
}
},
+ "serialize-javascript": {
+ "version": "1.7.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+ "integrity": "sha1-1uDfsqODKoyURo5usduX5VoZKmU=",
+ "dev": true
+ },
"serve-index": {
"version": "1.9.1",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/serve-index/-/serve-index-1.9.1.tgz",
@@ -4130,6 +5981,16 @@
"integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
"dev": true
},
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -4264,6 +6125,12 @@
}
}
},
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.5.7.tgz",
@@ -4283,6 +6150,24 @@
"urix": "^0.1.0"
}
},
+ "source-map-support": {
+ "version": "0.5.12",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map-support/-/source-map-support-0.5.12.tgz",
+ "integrity": "sha1-tPOxDVGFelrwE4086AA7IBYT1Zk=",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
"source-map-url": {
"version": "0.4.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map-url/-/source-map-url-0.4.0.tgz",
@@ -4353,6 +6238,15 @@
"tweetnacl": "~0.14.0"
}
},
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
"static-extend": {
"version": "0.1.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/static-extend/-/static-extend-0.1.2.tgz",
@@ -4390,6 +6284,29 @@
"readable-stream": "^2.0.2"
}
},
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
"stream-shift": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stream-shift/-/stream-shift-1.0.0.tgz",
@@ -4495,6 +6412,55 @@
"has-flag": "^3.0.0"
}
},
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
+ "dev": true
+ },
+ "terser": {
+ "version": "3.17.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/terser/-/terser-3.17.0.tgz",
+ "integrity": "sha1-+I/77aDetWN/nSSw2mb04VqxDLI=",
+ "dev": true,
+ "requires": {
+ "commander": "^2.19.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.10"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.2.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz",
+ "integrity": "sha1-P5i8kC+sPl0N5zCGn1BmhWEmLsg=",
+ "dev": true,
+ "requires": {
+ "cacache": "^11.0.2",
+ "find-cache-dir": "^2.0.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^1.4.0",
+ "source-map": "^0.6.1",
+ "terser": "^3.16.1",
+ "webpack-sources": "^1.1.0",
+ "worker-farm": "^1.5.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/text-table/-/text-table-0.2.0.tgz",
@@ -4507,6 +6473,16 @@
"integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
"dev": true
},
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
"time-grunt": {
"version": "2.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/time-grunt/-/time-grunt-2.0.0.tgz",
@@ -4595,6 +6571,12 @@
}
}
},
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
"to-object-path": {
"version": "0.3.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -4661,6 +6643,18 @@
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -4763,6 +6757,24 @@
}
}
},
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unique-slug/-/unique-slug-2.0.1.tgz",
+ "integrity": "sha1-Xp7cbRzo+yZNsYpQfvm9hURFHKY=",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
"unpipe": {
"version": "1.0.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/unpipe/-/unpipe-1.0.0.tgz",
@@ -4809,6 +6821,12 @@
}
}
},
+ "upath": {
+ "version": "1.1.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg=",
+ "dev": true
+ },
"uri-js": {
"version": "4.2.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/uri-js/-/uri-js-4.2.2.tgz",
@@ -4889,6 +6907,12 @@
"integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=",
"dev": true
},
+ "v8-compile-cache": {
+ "version": "2.0.2",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
+ "integrity": "sha1-pCiyi7JnkHNMT8i8n6EG/M6/amw=",
+ "dev": true
+ },
"v8flags": {
"version": "3.1.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/v8flags/-/v8flags-3.1.2.tgz",
@@ -4919,6 +6943,206 @@
"extsprintf": "^1.2.0"
}
},
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ }
+ },
+ "webpack": {
+ "version": "4.30.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack/-/webpack-4.30.0.tgz",
+ "integrity": "sha1-rKdu91YwoixJ/MI1s5tMV1kdM6k=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "^6.0.5",
+ "acorn-dynamic-import": "^4.0.0",
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0",
+ "chrome-trace-event": "^1.0.0",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.0",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.3.0",
+ "loader-utils": "^1.1.0",
+ "memory-fs": "~0.4.1",
+ "micromatch": "^3.1.8",
+ "mkdirp": "~0.5.0",
+ "neo-async": "^2.5.0",
+ "node-libs-browser": "^2.0.0",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.0",
+ "terser-webpack-plugin": "^1.1.0",
+ "watchpack": "^1.5.0",
+ "webpack-sources": "^1.3.0"
+ }
+ },
+ "webpack-cli": {
+ "version": "3.3.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack-cli/-/webpack-cli-3.3.1.tgz",
+ "integrity": "sha1-mLBJnHE4up7OiJi9mcTwB9tZkJ0=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "enhanced-resolve": "^4.1.0",
+ "findup-sync": "^2.0.0",
+ "global-modules": "^1.0.0",
+ "import-local": "^2.0.0",
+ "interpret": "^1.1.0",
+ "loader-utils": "^1.1.0",
+ "supports-color": "^5.5.0",
+ "v8-compile-cache": "^2.0.2",
+ "yargs": "^12.0.5"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.3.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/webpack-sources/-/webpack-sources-1.3.0.tgz",
+ "integrity": "sha1-KijcufH0X+lg2PFJMlK17mUw+oU=",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
"websocket-driver": {
"version": "0.7.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/websocket-driver/-/websocket-driver-0.7.0.tgz",
@@ -4973,6 +7197,15 @@
"string-width": "^1.0.2 || 2"
}
},
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
@@ -5034,6 +7267,12 @@
"integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=",
"dev": true
},
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=",
+ "dev": true
+ },
"yargs": {
"version": "13.2.2",
"resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yargs/-/yargs-13.2.2.tgz",
diff --git a/package.json b/package.json
index 210103f..0fad4f5 100644
--- a/package.json
+++ b/package.json
@@ -1,50 +1,54 @@
{
- "name": "uhr",
- "version": "9.0.0-dev.0",
- "description": "jQuery QLOCKTWO plugin",
- "keywords": [
- "jquery-plugin",
- "qlocktwo"
- ],
- "homepage": "http://bärneruhr.ch/",
- "author": {
- "name": "Manuel Friedli",
- "email": "manuel@fritteli.ch",
- "url": "http://www.fritteli.ch/"
- },
- "repository": {
- "type": "git",
- "url": "https://gittr.ch/manuel/uhr"
- },
- "licenses": [
- {
- "type": "GPL-3.0"
+ "name": "uhr",
+ "version": "9.0.0-dev.0",
+ "description": "jQuery QLOCKTWO plugin",
+ "keywords": [
+ "jquery-plugin",
+ "qlocktwo"
+ ],
+ "homepage": "http://bärneruhr.ch/",
+ "author": {
+ "name": "Manuel Friedli",
+ "email": "manuel@fritteli.ch",
+ "url": "http://www.fritteli.ch/"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://gittr.ch/manuel/uhr"
+ },
+ "licenses": [
+ {
+ "type": "GPL-3.0"
+ }
+ ],
+ "license": "GPL-3.0",
+ "dependencies": {
+ "jquery": "3.4.1",
+ "jquery-ui": "1.12.1",
+ "jquery.cookie": "1.4.1"
+ },
+ "devDependencies": {
+ "@types/jquery": "3.3.29",
+ "@types/jqueryui": "1.12.7",
+ "chai": "4.2.0",
+ "grunt": "1.0.4",
+ "grunt-cli": "1.3.2",
+ "grunt-contrib-clean": "2.0.0",
+ "grunt-contrib-concat": "1.0.1",
+ "grunt-contrib-connect": "2.0.0",
+ "grunt-contrib-cssmin": "3.0.0",
+ "grunt-contrib-jshint": "2.1.0",
+ "grunt-contrib-qunit": "3.1.0",
+ "grunt-contrib-uglify": "4.0.1",
+ "grunt-contrib-watch": "1.1.0",
+ "grunt-mocha-phantomjs": "4.0.0",
+ "grunt-version": "1.3.0",
+ "jshint-stylish": "2.2.1",
+ "load-grunt-tasks": "4.0.0",
+ "mocha": "6.1.4",
+ "phantomjs-prebuilt": "2.1.16",
+ "time-grunt": "2.0.0",
+ "webpack": "4.30.0",
+ "webpack-cli": "3.3.1"
}
- ],
- "license": "GPL-3.0",
- "dependencies": {
- "jquery": "3.4.1",
- "jquery-ui": "1.12.1",
- "jquery.cookie": "1.4.1"
- },
- "devDependencies": {
- "grunt": "1.0.4",
- "grunt-cli": "1.3.2",
- "grunt-contrib-clean": "2.0.0",
- "grunt-contrib-concat": "1.0.1",
- "grunt-contrib-connect": "2.0.0",
- "grunt-contrib-cssmin": "3.0.0",
- "grunt-contrib-jshint": "2.1.0",
- "grunt-contrib-qunit": "3.1.0",
- "grunt-contrib-uglify": "4.0.1",
- "grunt-contrib-watch": "1.1.0",
- "grunt-mocha-phantomjs": "4.0.0",
- "grunt-version": "1.3.0",
- "jshint-stylish": "2.2.1",
- "load-grunt-tasks": "4.0.0",
- "phantomjs-prebuilt": "2.1.16",
- "time-grunt": "2.0.0",
- "mocha": "6.1.4",
- "chai": "4.2.0"
- }
}
diff --git a/src/domain/globals.ts b/src/domain/globals.ts
new file mode 100644
index 0000000..81167f9
--- /dev/null
+++ b/src/domain/globals.ts
@@ -0,0 +1,87 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import {Layout} from "./layout";
+import {Theme} from "./theme";
+
+export class Globals {
+ private static layouts: Layout[] = [];
+ private static themes: Theme[] = [];
+
+ static registerTheme(name: string, styleClass: string): void {
+ if (Globals.themes.some(value => value.name === name)) {
+ console.log(`Theme with name '${name}' already registered; ignoring register request for styleClass '${styleClass}'.`)
+ } else {
+ Globals.themes.push({
+ name,
+ styleClass
+ });
+ }
+ }
+
+ static hasThemes(): boolean {
+ return Globals.themes.length > 0;
+ }
+
+ static hasMultipleThemes(): boolean {
+ return Globals.themes.length > 1;
+ }
+
+ static getFirstTheme(): Theme {
+ return Globals.getTheme(0);
+ }
+
+ static getTheme(index: number): Theme {
+ return Globals.themes[index];
+ }
+
+ static getThemes(): Theme[] {
+ return Globals.themes;
+ }
+
+ static registerLayout(langCode: string, layout: Layout): void {
+ const available = Globals.layouts.some(element => {
+ if (langCode === element.code) {
+ console.error(
+ `Error: Language code '${langCode}' cannot be registered for layout '${layout.prettyName}'
+ because it is already registered for layout '${element.prettyName}'!`
+ );
+ return false;
+ }
+ return true;
+ }
+ );
+ if (available) {
+ layout.code = langCode;
+ Globals.layouts.push(layout);
+ }
+ }
+
+ static hasLayouts(): boolean {
+ return Globals.layouts.length > 0;
+ }
+
+ static hasMultipleLayouts(): boolean {
+ return Globals.layouts.length > 1;
+ }
+
+ static getFirstLayout(): Layout {
+ return Globals.layouts[0];
+ }
+
+ static getLayouts(): Layout[] {
+ return Globals.layouts;
+ }
+}
diff --git a/src/domain/layout.ts b/src/domain/layout.ts
new file mode 100644
index 0000000..9e61746
--- /dev/null
+++ b/src/domain/layout.ts
@@ -0,0 +1,50 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import {Letter} from "./letter";
+
+export interface Layout {
+ version: number;
+ code: string;
+ prettyName: string;
+ letters: string[];
+ permanent: WordDefinition | WordDefinition[];
+ hours: TimeDefinition;
+ minutes: TimeDefinition;
+ seconds?: TimeDefinition;
+ getHour?: (Date) => number;
+ getDotMinute?: (Date) => number;
+ getCoarseMinute?: (Date) => number;
+ getSeconds?: (Date) => number;
+ parsed?: Letter[][];
+}
+
+export interface WordDefinition {
+ [line: number]: number[];
+}
+
+export interface TimeDefinition {
+ [values: string]: WordDefinition | WordDefinition[];
+}
+
+export const EMPTY_LAYOUT: Layout = {
+ version: 2,
+ code: null,
+ prettyName: null,
+ letters: [],
+ permanent: [],
+ minutes: null,
+ hours: null
+};
diff --git a/src/domain/letter.ts b/src/domain/letter.ts
new file mode 100644
index 0000000..8e31c8e
--- /dev/null
+++ b/src/domain/letter.ts
@@ -0,0 +1,43 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+/**
+ * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.
+ * @param value Der Buchstabe, der Dargestellt werden soll.
+ * @param style Die CSS-Styleklassen des Buchstabens.
+ */
+export class Letter {
+ private readonly value: string;
+ private style: string = '';
+
+ constructor(value: string, style?: string) {
+ this.value = value;
+ if (!!style) {
+ this.style = style;
+ }
+ }
+
+ addStyle(style: string): void {
+ if (this.style === '') {
+ this.style = style;
+ } else {
+ this.style += ` ${style}`;
+ }
+ };
+
+ toString(): string {
+ return `${this.value}`;
+ };
+}
diff --git a/src/domain/theme.ts b/src/domain/theme.ts
new file mode 100644
index 0000000..6144b6c
--- /dev/null
+++ b/src/domain/theme.ts
@@ -0,0 +1,19 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+export interface Theme {
+ styleClass: string;
+ name: string;
+}
diff --git a/src/index.d.ts b/src/index.d.ts
new file mode 100644
index 0000000..3330ed4
--- /dev/null
+++ b/src/index.d.ts
@@ -0,0 +1,11 @@
+declare namespace Fritteli {
+ interface Fritteli {
+ uhr: {
+ register: (options?: { checkboxSelector: JQuery | string }) => JQuery;
+ }
+ }
+}
+
+interface JQueryStatic {
+ fritteli: Fritteli.Fritteli;
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..854c1d6
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,71 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import {Globals} from "./domain/globals";
+import {autodetectThemes} from "./theme-autodetector";
+import {Uehrli} from "./uehrli";
+import {WidgetPrototype} from "./widget/widget-prototype";
+
+// First things first: discover included themes and register them
+autodetectThemes();
+
+$.widget("fritteli.uhr", {
+ "options": {
+ width: '100%',
+ status: 'on',
+ language: 'de_CH',
+ theme: Globals.getFirstTheme().styleClass,
+ force: false,
+ controls: true,
+ cookiePath: undefined,
+ autoresize: true,
+ mode: 'normal'
+ },
+ "start": function () {
+ this.__fritteli_uhr_instance.start();
+ },
+ "stop": function () {
+ this.__fritteli_uhr_instance.stop();
+ },
+ "toggle": function () {
+ this.__fritteli_uhr_instance.toggle();
+ },
+ "language": function (key: string) {
+ this.__fritteli_uhr_instance.setLanguage(key);
+ },
+ "theme": function (styleClass: string) {
+ this.__fritteli_uhr_instance.setTheme(styleClass);
+ },
+ "time": function (time: Date) {
+ this.__fritteli_uhr_instance.setTime(time);
+ },
+ "mode": function (mode: string) {
+ this.__fritteli_uhr_instance.setMode(mode);
+ },
+ "width": function (width: string) {
+ this.__fritteli_uhr_instance.setWidth(width);
+ },
+ // constructor method
+ "_create": function () {
+ this.__fritteli_uhr_instance = new Uehrli(this);
+ },
+ // destructor method
+ "_destroy": function () {
+ this.__fritteli_uhr_instance.destroy();
+ },
+ "__fritteli_uhr_instance": null
+} as WidgetPrototype);
+
+$.fritteli.uhr.register = Globals.registerLayout;
diff --git a/src/renderer.ts b/src/renderer.ts
new file mode 100644
index 0000000..9feed0d
--- /dev/null
+++ b/src/renderer.ts
@@ -0,0 +1,322 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import {Layout, TimeDefinition, WordDefinition} from "./domain/layout";
+import {Letter} from "./domain/letter";
+
+class UhrRendererV2Delegate {
+ private static readonly vorne0: WordDefinition = {
+ 3: [2, 3, 4],
+ 4: [1, 5],
+ 5: [1, 4, 5],
+ 6: [1, 3, 5],
+ 7: [1, 2, 5],
+ 8: [1, 5],
+ 9: [2, 3, 4]
+ };
+ private static readonly hinten0: WordDefinition = {
+ 3: [8, 9, 10],
+ 4: [7, 11],
+ 5: [7, 10, 11],
+ 6: [7, 9, 11],
+ 7: [7, 8, 11],
+ 8: [7, 11],
+ 9: [8, 9, 10]
+ };
+ private static readonly vorne1: WordDefinition = {
+ 3: [3],
+ 4: [2, 3],
+ 5: [3],
+ 6: [3],
+ 7: [3],
+ 8: [3],
+ 9: [2, 3, 4]
+ };
+ private static readonly hinten1: WordDefinition = {
+ 3: [9],
+ 4: [8, 9],
+ 5: [9],
+ 6: [9],
+ 7: [9],
+ 8: [9],
+ 9: [8, 9, 10]
+ };
+ private static readonly vorne2: WordDefinition = {
+ 3: [2, 3, 4],
+ 4: [1, 5],
+ 5: [5],
+ 6: [4],
+ 7: [3],
+ 8: [2],
+ 9: [1, 2, 3, 4, 5]
+ };
+ private static readonly hinten2: WordDefinition = {
+ 3: [8, 9, 10],
+ 4: [7, 11],
+ 5: [11],
+ 6: [10],
+ 7: [9],
+ 8: [8],
+ 9: [7, 8, 9, 10, 11]
+ };
+ private static readonly vorne3: WordDefinition = {
+ 3: [1, 2, 3, 4, 5],
+ 4: [4],
+ 5: [3],
+ 6: [4],
+ 7: [5],
+ 8: [1, 5],
+ 9: [2, 3, 4]
+ };
+ private static readonly hinten3: WordDefinition = {
+ 3: [7, 8, 9, 10, 11],
+ 4: [10],
+ 5: [9],
+ 6: [10],
+ 7: [11],
+ 8: [7, 11],
+ 9: [8, 9, 10]
+ };
+ private static readonly vorne4: WordDefinition = {
+ 3: [4],
+ 4: [3, 4],
+ 5: [2, 4],
+ 6: [1, 4],
+ 7: [1, 2, 3, 4, 5],
+ 8: [4],
+ 9: [4]
+ };
+ private static readonly hinten4: WordDefinition = {
+ 3: [10],
+ 4: [9, 10],
+ 5: [8, 10],
+ 6: [7, 10],
+ 7: [7, 8, 9, 10, 11],
+ 8: [10],
+ 9: [10]
+ };
+ private static readonly vorne5: WordDefinition = {
+ 3: [1, 2, 3, 4, 5],
+ 4: [1],
+ 5: [1, 2, 3, 4],
+ 6: [5],
+ 7: [5],
+ 8: [1, 5],
+ 9: [2, 3, 4]
+ };
+ private static readonly hinten5: WordDefinition = {
+ 3: [7, 8, 9, 10, 11],
+ 4: [7],
+ 5: [7, 8, 9, 10],
+ 6: [11],
+ 7: [11],
+ 8: [7, 11],
+ 9: [8, 9, 10]
+ };
+ private static readonly hinten6: WordDefinition = {
+ 3: [9, 10],
+ 4: [8],
+ 5: [7],
+ 6: [7, 8, 9, 10],
+ 7: [7, 11],
+ 8: [7, 11],
+ 9: [8, 9, 10]
+ };
+ private static readonly hinten7: WordDefinition = {
+ 3: [7, 8, 9, 10, 11],
+ 4: [11],
+ 5: [10],
+ 6: [9],
+ 7: [8],
+ 8: [8],
+ 9: [8]
+ };
+ private static readonly hinten8: WordDefinition = {
+ 3: [8, 9, 10],
+ 4: [7, 11],
+ 5: [7, 11],
+ 6: [8, 9, 10],
+ 7: [7, 11],
+ 8: [7, 11],
+ 9: [8, 9, 10]
+ };
+ private static readonly hinten9: WordDefinition = {
+ 3: [8, 9, 10],
+ 4: [7, 11],
+ 5: [7, 11],
+ 6: [8, 9, 10, 11],
+ 7: [11],
+ 8: [10],
+ 9: [8, 9]
+ };
+ private static readonly seconds: TimeDefinition = {
+ "0": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten0],
+ "1": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten1],
+ "2": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten2],
+ "3": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten3],
+ "4": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten4],
+ "5": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten5],
+ "6": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten6],
+ "7": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten7],
+ "8": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten8],
+ "9": [UhrRendererV2Delegate.vorne0, UhrRendererV2Delegate.hinten9],
+ "10": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten0],
+ "11": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten1],
+ "12": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten2],
+ "13": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten3],
+ "14": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten4],
+ "15": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten5],
+ "16": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten6],
+ "17": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten7],
+ "18": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten8],
+ "19": [UhrRendererV2Delegate.vorne1, UhrRendererV2Delegate.hinten9],
+ "20": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten0],
+ "21": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten1],
+ "22": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten2],
+ "23": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten3],
+ "24": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten4],
+ "25": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten5],
+ "26": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten6],
+ "27": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten7],
+ "28": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten8],
+ "29": [UhrRendererV2Delegate.vorne2, UhrRendererV2Delegate.hinten9],
+ "30": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten0],
+ "31": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten1],
+ "32": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten2],
+ "33": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten3],
+ "34": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten4],
+ "35": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten5],
+ "36": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten6],
+ "37": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten7],
+ "38": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten8],
+ "39": [UhrRendererV2Delegate.vorne3, UhrRendererV2Delegate.hinten9],
+ "40": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten0],
+ "41": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten1],
+ "42": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten2],
+ "43": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten3],
+ "44": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten4],
+ "45": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten5],
+ "46": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten6],
+ "47": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten7],
+ "48": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten8],
+ "49": [UhrRendererV2Delegate.vorne4, UhrRendererV2Delegate.hinten9],
+ "50": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten0],
+ "51": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten1],
+ "52": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten2],
+ "53": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten3],
+ "54": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten4],
+ "55": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten5],
+ "56": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten6],
+ "57": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten7],
+ "58": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten8],
+ "59": [UhrRendererV2Delegate.vorne5, UhrRendererV2Delegate.hinten9]
+ };
+
+ constructor(private layout: Layout) {
+ }
+
+ public parse(): Letter[][] {
+ const letters: Letter[][] = [];
+ this.layout.letters.forEach(lineString => {
+ const line: Letter[] = [];
+ for (let c = 0; c < lineString.length; c++) {
+ line.push(new Letter(lineString[c]));
+ }
+ letters.push(line);
+ });
+ this.parseArrayOrObject(letters, 'on', this.layout.permanent);
+ if (typeof this.layout.seconds !== 'undefined' && this.layout.seconds !== null) {
+ this.parseTimeDefinition(letters, 'second', this.layout.seconds);
+ } else {
+ this.parseTimeDefinition(letters, 'second', UhrRendererV2Delegate.seconds);
+ }
+ this.parseTimeDefinition(letters, 'minute', this.layout.minutes);
+ this.parseTimeDefinition(letters, 'hour', this.layout.hours);
+ return letters;
+ };
+
+ private parseObject(letters: Letter[][], styleClass: string, object: WordDefinition): void {
+ if (typeof object !== 'undefined' && object !== null) {
+ Object.keys(object)
+ .map(key => Number(key))
+ .forEach(
+ y => object[y].forEach(
+ x => letters[y - 1][x - 1].addStyle(styleClass)
+ )
+ );
+ }
+ }
+
+ private parseArrayOrObject(letters: Letter[][], styleClass: string, input: WordDefinition | WordDefinition[]): void {
+ if (typeof input !== 'undefined' && input !== null) {
+ if (Array.isArray(input)) {
+ input.forEach(item => this.parseObject(letters, styleClass, item));
+ } else {
+ this.parseObject(letters, styleClass, input);
+ }
+ }
+ }
+
+ private parseTimeDefinition(letters: Letter[][], styleClass: string, definition: TimeDefinition): void {
+ if (typeof definition !== 'undefined' && definition !== null) {
+ Object.keys(definition).forEach(listString => {
+ const timeValues: string[] = listString.split(',');
+ const highlightLetters: WordDefinition | WordDefinition[] = definition[listString];
+ timeValues.forEach(timeValue => this.parseArrayOrObject(letters, styleClass + timeValue, highlightLetters));
+ });
+ }
+ }
+}
+
+/**
+ * Hilfsklasse zum Rendern der Uhr.
+ * @param layout Layout-Objekt, das gerendert werden soll.
+ * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.
+ */
+export class UhrRenderer {
+ constructor(private layout: Layout, private renderarea: any/*FIXME any: jQuery-wrapped HTML element*/) {
+ }
+
+ render(beforeshow?: () => void): void {
+ if (this.layout.parsed === undefined) {
+ if (this.layout.version === 2) {
+ const delegate: UhrRendererV2Delegate = new UhrRendererV2Delegate(this.layout);
+ const parsedLayout: Letter[][] = delegate.parse();
+ Object.defineProperty(this.layout, "parsed", {
+ "value": parsedLayout,
+ "writable": false,
+ "configurable": false
+ });
+ } else {
+ console.warn(`Unknown layout version: '${this.layout.version}', expecting '2'`);
+ return;
+ }
+ }
+ const letters: Letter[][] = this.layout.parsed;
+ this.renderarea.fadeOut('fast', () => {
+ this.renderarea.empty();
+ letters.forEach((line, index, array) => {
+ line.forEach(letter => this.renderarea.append(letter.toString()));
+ if (index < array.length - 1) {
+ this.renderarea.append('
');
+ }
+ });
+ if (typeof beforeshow === 'function') {
+ beforeshow();
+ }
+ this.renderarea.fadeIn('fast');
+ });
+ };
+}
diff --git a/src/theme-autodetector.ts b/src/theme-autodetector.ts
new file mode 100644
index 0000000..13e4c4d
--- /dev/null
+++ b/src/theme-autodetector.ts
@@ -0,0 +1,36 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import * as $ from 'jquery';
+import {Globals} from "./domain/globals";
+
+export function autodetectThemes() {
+ $('link[rel=stylesheet]').each((index, item) => {
+ const styleSheet = $(item);
+ const styleClass: string = styleSheet.attr('data-class');
+ if (styleClass !== undefined) {
+ let name: string = styleSheet.attr('data-name');
+ if (name === undefined) {
+ name = styleClass;
+ }
+ Globals.registerTheme(name, styleClass);
+ }
+ });
+
+ // fall-back if no theme was included
+ if (!Globals.hasThemes()) {
+ Globals.registerTheme('', '');
+ }
+}
diff --git a/src/uehrli.ts b/src/uehrli.ts
new file mode 100644
index 0000000..58169cd
--- /dev/null
+++ b/src/uehrli.ts
@@ -0,0 +1,430 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import {WidgetPrototype} from "./widget/widget-prototype";
+import {Globals} from "./domain/globals";
+import {UhrRenderer} from "./renderer";
+import {EMPTY_LAYOUT, Layout} from "./domain/layout";
+
+export class Uehrli {
+
+ private timer: number = null;
+ private currentMinute: number = null;
+
+ constructor(private widgetInstance: WidgetPrototype) {
+ const userTime = this.widgetInstance.options.time;
+ if (this.widgetInstance.options.time === undefined) {
+ this.widgetInstance.options.time = new Date();
+ }
+ this.parseHash();
+ this.setupHTML();
+ this.wireFunctionality();
+ if (userTime !== undefined) {
+ this.setTime(userTime);
+ }
+ }
+
+ destroy(): void {
+ if (!!this.timer) {
+ window.clearInterval(this.timer);
+ this.timer = null;
+ }
+ this.widgetInstance.element
+ .removeAttr('style')
+ .removeAttr('class')
+ .empty();
+ $(`#uhr-configlink${this.widgetInstance.uuid}`).remove();
+ $(`#uhr-controlpanel${this.widgetInstance.uuid}`).remove();
+ }
+
+ start(): void {
+ if (!this.isOn()) {
+ this.timer = window.setInterval(() => {
+ this.widgetInstance.options.time = new Date();
+ this.update();
+ }, 1000);
+ this.update();
+ this.setCookie('uhr-status', 'on');
+ }
+ }
+
+ stop(): void {
+ if (this.isOn()) {
+ window.clearInterval(this.timer);
+ this.timer = null;
+ this.update();
+ this.setCookie('uhr-status', 'off');
+ }
+ }
+
+ toggle(): void {
+ if (this.isOn()) {
+ this.stop();
+ } else {
+ this.start();
+ }
+ }
+
+ setLanguage(key: string): void {
+ if (key !== this.widgetInstance.options.language) {
+ this.widgetInstance.options.language = key;
+ const renderer = new UhrRenderer(this.getCurrentLayout(), this.widgetInstance.element.find('.letterarea'));
+ renderer.render(() => {
+ this.currentMinute = -1;
+ this.update();
+ });
+ this.setCookie('uhr-language', key);
+ this.update();
+ }
+ }
+
+ setTheme(styleClass: string): void {
+ if (styleClass !== this.widgetInstance.options.theme) {
+ this.widgetInstance.element.removeClass(this.widgetInstance.options.theme).addClass(styleClass);
+ $(`#uhr-onoffswitch${this.widgetInstance.uuid}`).removeClass(this.widgetInstance.options.theme).addClass(styleClass);
+ this.widgetInstance.options.theme = styleClass;
+ this.setCookie('uhr-theme', styleClass);
+ }
+ }
+
+ setTime(time: Date): void {
+ this.currentMinute = null;
+ if (time === null) {
+ this.widgetInstance.options.time = new Date();
+ } else {
+ if (this.timer !== null) {
+ window.clearInterval(this.timer);
+ }
+ this.widgetInstance.options.time = time;
+ }
+ this.update();
+ }
+
+ setMode(mode: string): void {
+ this.widgetInstance.options.mode = mode;
+ this.currentMinute = null;
+ this.update();
+ this.setCookie('uhr-mode', mode);
+ }
+
+ setWidth(width: string): void {
+ const e = this.widgetInstance.element;
+ e.css('width', width);
+ const realWidth = e.width();
+ e.width(realWidth);
+ e.height(realWidth);
+ e.css('font-size', (realWidth / 40) + 'px');
+ }
+
+ private setupHTML(): void {
+ const e: JQuery = this.widgetInstance.element;
+ // Base clock area
+ e.addClass('uhr')
+ .empty()
+ .append('')
+ .append('')
+ .append('')
+ .append('')
+ .append('')
+ .append('');
+
+ this.setWidth(this.widgetInstance.options.width);
+
+ if (this.widgetInstance.options.controls) {
+ const controlpanel = $(``);
+ const content = $('');
+ controlpanel.append(content);
+ // on/off switch
+ const toggleSwitch = $(``);
+ toggleSwitch.append(``);
+ toggleSwitch.append(``);
+ content.append(toggleSwitch);
+
+ // time mode switch
+ const modeSwitch = $(``);
+ modeSwitch.append(``);
+ modeSwitch.append(``);
+ content.append(modeSwitch);
+ // language chooser
+ if (Globals.hasMultipleLayouts()) {
+ const languageChooser = $(``);
+ Globals.getLayouts().forEach(layout => {
+ languageChooser.append(``);
+ });
+ content.append(languageChooser);
+ }
+
+ // theme chooser
+ if (Globals.hasMultipleThemes()) {
+ const themeChooser = $(``);
+ Globals.getThemes().forEach(theme => {
+ themeChooser.append(``);
+ });
+ content.append(themeChooser);
+ }
+ const closebutton = $(``);
+ //FIXME deprecated?!
+ closebutton.on('click', function () {
+ $(`#uhr-controlpanel${this.uuid}`).hide('fast');
+ }.bind(this.widgetInstance));
+ content.append(closebutton);
+ e.after(controlpanel);
+ controlpanel.hide();
+ const configlink = $(``);
+ // FIXME deprecated!?
+ configlink.on('click', function () {
+ this.toggleConfigScreen();
+ }.bind(this));
+ e.after(configlink);
+ }
+ };
+
+ private wireFunctionality(): void {
+ // on/off switch
+ const toggleSwitch = $(`#uhr-onoffswitch-checkbox${this.widgetInstance.uuid}`);
+ // FIXME deprecated!?
+ toggleSwitch.on('click', () => this.toggle());
+ let status = this.getCookie('uhr-status');
+ if (status === undefined || this.widgetInstance.options.force) {
+ status = this.widgetInstance.options.status;
+ }
+ toggleSwitch.prop('checked', status === 'on');
+ if (status === 'on') {
+ this.start();
+ } else {
+ this.stop();
+ }
+
+ // time mode switch
+ const modeSwitch = $(`#uhr-modeswitch-checkbox${this.widgetInstance.uuid}`);
+ // FIXME deprecated!?
+ modeSwitch.on('click', () => {
+ if (this.widgetInstance.options.mode === 'seconds') {
+ this.setMode('normal');
+ } else {
+ this.setMode('seconds');
+ }
+ });
+
+ let mode = this.getCookie('uhr-mode');
+ if (mode === undefined || this.widgetInstance.options.force) {
+ mode = this.widgetInstance.options.mode;
+ }
+ modeSwitch.prop('checked', mode !== 'seconds');
+ if (mode === 'seconds') {
+ this.setMode('seconds');
+ } else {
+ this.setMode('normal');
+ }
+
+ // language chooser
+ const languageChooser = $(`#uhr-languagechooser${this.widgetInstance.uuid}`);
+ // FIXME deprecated!?
+ languageChooser.on('change', () => {
+ const languageKey = $(`#uhr-languagechooser${this.widgetInstance.uuid}`).val() as string;
+ this.setLanguage(languageKey);
+ });
+ let selectedLayout = this.getCookie('uhr-language');
+ if (selectedLayout === undefined || this.widgetInstance.options.force) {
+ selectedLayout = this.widgetInstance.options.language;
+ }
+ let found = Globals.getLayouts().some(item => selectedLayout === item.code);
+ if (!found) {
+ let fallbackLanguage;
+ if (Globals.hasLayouts()) {
+ fallbackLanguage = Globals.getFirstLayout().code;
+ } else {
+ fallbackLanguage = '';
+ }
+ console.warn(`Language '${selectedLayout}' not found! Using fallback '${fallbackLanguage}'.`);
+ selectedLayout = fallbackLanguage;
+ }
+ languageChooser.val(selectedLayout);
+ this.widgetInstance.options.language = "";
+ this.setLanguage(selectedLayout);
+
+ // theme chooser
+ const themeChooser = $(`#uhr-themechooser${this.widgetInstance.uuid}`);
+ // FIXME deprecated!?
+ themeChooser.on('change', () => {
+ const themeKey = $(`#uhr-themechooser${this.widgetInstance.uuid}`).val() as string;
+ this.setTheme(themeKey);
+ });
+ let selectedTheme = this.getCookie('uhr-theme');
+ if (selectedTheme === undefined || this.widgetInstance.options.force) {
+ selectedTheme = this.widgetInstance.options.theme;
+ }
+ found = Globals.getThemes().some(item => selectedTheme === item.styleClass);
+ if (!found) {
+ const fallbackTheme = Globals.getFirstTheme().styleClass;
+ console.warn(`Theme '${selectedTheme}' not found! Using fallback '${fallbackTheme}'.`);
+ selectedTheme = fallbackTheme;
+ }
+ themeChooser.val(selectedTheme);
+ this.widgetInstance.options.theme = "";
+ this.setTheme(selectedTheme);
+ if (this.widgetInstance.options.autoresize) {
+ // FIXME deprecated!?
+ $(window).on('resize', () => {
+ const $e = this.widgetInstance.element;
+ const $parent = $e.parent();
+ const $window = $(window);
+ const parentWidth = $parent.width();
+ const parentHeight = $parent.height();
+ const windowWidth = $window.width();
+ const windowHeight = $window.height();
+ const size = `${Math.min(parentWidth, parentHeight, windowWidth, windowHeight)}px`;
+ this.setWidth(size);
+ });
+ }
+ }
+
+ private isOn(): boolean {
+ return this.timer !== null;
+ }
+
+ private getCookie(cookieName: string): string {
+ return $.cookie(cookieName + this.widgetInstance.uuid);
+ }
+
+ private setCookie(cookieName: string, cookieValue: string): void {
+ let options;
+ if (this.widgetInstance.options.cookiePath !== undefined) {
+ options = {expires: 365, path: this.widgetInstance.options.cookiePath};
+ } else {
+ options = {expires: 365};
+ }
+ $.cookie(cookieName + this.widgetInstance.uuid, cookieValue, options);
+ }
+
+ private update(): void {
+ if (this.isOn()) {
+ const time = this.widgetInstance.options.time;
+ if (!this.getCurrentLayout().hasOwnProperty('seconds') && this.widgetInstance.options.mode !== 'seconds') {
+ if (time.getMinutes() === this.currentMinute) {
+ return;
+ }
+ this.currentMinute = time.getMinutes();
+ }
+ this.show(time);
+ } else {
+ this.clear();
+ this.currentMinute = -1;
+ }
+ }
+
+ private show(time: Date): void {
+ const second = this.getSecond(time);
+ const dotMinute = this.getDotMinute(time);
+ const hour = this.getHour(time);
+ const coarseMinute = this.getCoarseMinute(time);
+ this.clear();
+ if (this.widgetInstance.options.mode === 'seconds') {
+ this.highlight(`second${second}`);
+ } else {
+ this.highlight('on');
+ for (let i = 1; i <= dotMinute; i++) {
+ this.highlight(`dot${i}`);
+ }
+ this.highlight(`minute${coarseMinute}`);
+ this.highlight(`hour${hour}`);
+ }
+ }
+
+ private clear(): void {
+ this.widgetInstance.element.find('.item').removeClass('active');
+ }
+
+ private highlight(itemClass: string): void {
+ this.widgetInstance.element.find(`.item.${itemClass}`).addClass('active');
+ }
+
+ private getSecond(time: Date): number {
+ if (typeof this.getCurrentLayout().getSeconds === 'function') {
+ return this.getCurrentLayout().getSeconds(time);
+ }
+ return time.getSeconds();
+ };
+
+ private getDotMinute(date: Date): number {
+ if (typeof this.getCurrentLayout().getDotMinute === 'function') {
+ return this.getCurrentLayout().getDotMinute(date);
+ }
+ return date.getMinutes() % 5;
+ };
+
+ private getCoarseMinute(date: Date): number {
+ if (typeof this.getCurrentLayout().getCoarseMinute === 'function') {
+ return this.getCurrentLayout().getCoarseMinute(date);
+ }
+ return date.getMinutes();
+ };
+
+ private getHour(date: Date): number {
+ if (typeof this.getCurrentLayout().getHour === 'function') {
+ return this.getCurrentLayout().getHour(date);
+ }
+ const hour = date.getHours();
+ if (date.getMinutes() >= 25) {
+ return (hour + 1) % 24;
+ }
+ return hour;
+ };
+
+ private parseHash(): void {
+ let hash: string = window.location.hash;
+ if (hash !== undefined && hash.charAt(0) === '#') {
+ hash = hash.substring(1);
+ hash = decodeURIComponent(hash);
+ const params: string[] = hash.split('&');
+ params.forEach(element => {
+ const pair: string[] = element.split('=');
+ const key = pair[0];
+ const value = pair[1];
+ switch (key) {
+ case 'l':
+ case 'language':
+ this.widgetInstance.options.language = value;
+ this.widgetInstance.options.force = true;
+ break;
+ case 't':
+ case 'theme':
+ this.widgetInstance.options.theme = value;
+ this.widgetInstance.options.force = true;
+ break;
+ case 'm':
+ case 'mode':
+ this.widgetInstance.options.mode = value;
+ this.widgetInstance.options.force = true;
+ break;
+ case 's':
+ case 'status':
+ this.widgetInstance.options.status = value;
+ this.widgetInstance.options.force = true;
+ break;
+ }
+ });
+ }
+ }
+
+ private getCurrentLayout(): Layout {
+ const matchingLanguages: Layout[] = Globals.getLayouts().filter(element => element.code === this.widgetInstance.options.language, this);
+ if (matchingLanguages.length > 0) {
+ return matchingLanguages[0];
+ }
+ // fallback: return empty object
+ return EMPTY_LAYOUT;
+ };
+}
diff --git a/src/widget/options.ts b/src/widget/options.ts
new file mode 100644
index 0000000..7813fab
--- /dev/null
+++ b/src/widget/options.ts
@@ -0,0 +1,27 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+export interface Options {
+ width: string;
+ status: string;
+ language: string;
+ theme: string;
+ force: boolean;
+ controls: boolean;
+ cookiePath?: string;
+ autoresize: boolean;
+ mode: string;
+ time?: Date;
+}
diff --git a/src/widget/widget-prototype.ts b/src/widget/widget-prototype.ts
new file mode 100644
index 0000000..c72a2a2
--- /dev/null
+++ b/src/widget/widget-prototype.ts
@@ -0,0 +1,33 @@
+/*
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ */
+
+import WidgetCommonProperties = JQueryUI.WidgetCommonProperties;
+import {Uehrli} from "../uehrli";
+import {Options} from "./options";
+
+export interface WidgetPrototype extends WidgetCommonProperties {
+ options: Options;
+ start: () => void;
+ stop: () => void;
+ toggle: () => void;
+ language: (key: string) => void;
+ theme: (id: string) => void;
+ time: (time: Date) => void;
+ mode: (mode: string) => void;
+ width: (width: string) => void;
+ _create: () => void;
+ _destroy: () => void;
+ __fritteli_uhr_instance: Uehrli;
+}