From 5420f9c8174f74afafdbdc7fee66ebee26981f60 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sun, 5 May 2019 01:07:55 +0200 Subject: [PATCH] Rewrite it in TypeScript; I have no idea if that works. It's still a work-in-progress. --- .editorconfig | 1 + package-lock.json | 2239 ++++++++++++++++++++++++++++++++ package.json | 98 +- src/domain/globals.ts | 87 ++ src/domain/layout.ts | 50 + src/domain/letter.ts | 43 + src/domain/theme.ts | 19 + src/index.d.ts | 11 + src/index.ts | 71 + src/renderer.ts | 322 +++++ src/theme-autodetector.ts | 36 + src/uehrli.ts | 430 ++++++ src/widget/options.ts | 27 + src/widget/widget-prototype.ts | 33 + 14 files changed, 3420 insertions(+), 47 deletions(-) create mode 100644 src/domain/globals.ts create mode 100644 src/domain/layout.ts create mode 100644 src/domain/letter.ts create mode 100644 src/domain/theme.ts create mode 100644 src/index.d.ts create mode 100644 src/index.ts create mode 100644 src/renderer.ts create mode 100644 src/theme-autodetector.ts create mode 100644 src/uehrli.ts create mode 100644 src/widget/options.ts create mode 100644 src/widget/widget-prototype.ts 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; +}