Remove Grunt in favor of ts/scripts
This commit is contained in:
parent
4e947211b2
commit
e74376b997
92 changed files with 1137 additions and 1661 deletions
2
.github/workflows/benchmark.yml
vendored
2
.github/workflows/benchmark.yml
vendored
|
@ -56,7 +56,7 @@ jobs:
|
|||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||
|
||||
- name: Build typescript
|
||||
run: yarn grunt
|
||||
run: yarn generate
|
||||
- name: Bundle
|
||||
run: yarn build:webpack
|
||||
|
||||
|
|
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
|
@ -128,7 +128,6 @@ jobs:
|
|||
run: yarn install --frozen-lockfile
|
||||
|
||||
- run: yarn generate
|
||||
- run: node build\grunt.js
|
||||
- run: yarn test-node
|
||||
- run: copy package.json temp.json
|
||||
- run: del package.json
|
||||
|
|
|
@ -59,7 +59,7 @@ cd Signal-Desktop
|
|||
git-lfs install # Setup Git LFS.
|
||||
npm install --global yarn # (only if you don’t already have `yarn`)
|
||||
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
|
||||
yarn grunt # Generate final JS and CSS assets
|
||||
yarn generate # Generate final JS and CSS assets
|
||||
yarn build:webpack # Build parts of the app that use webpack (Sticker Creator)
|
||||
yarn test # A good idea to make sure tests run first
|
||||
yarn start # Start Signal!
|
||||
|
@ -72,13 +72,14 @@ is no automatic restart mechanism. Alternatively, keep the developer tools open
|
|||
(Windows & Linux).
|
||||
|
||||
Also, note that the assets loaded by the application are not necessarily the same files
|
||||
you’re touching. You may not see your changes until you run `yarn grunt` on the
|
||||
you’re touching. You may not see your changes until you run `yarn generate` on the
|
||||
command-line like you did during setup. You can make it easier on yourself by generating
|
||||
the latest built assets when you change a file. Run this in its own terminal instance
|
||||
while you make changes:
|
||||
the latest built assets when you change a file. Run each of these in their own terminal
|
||||
instance while you make changes - they'll run until you stop them:
|
||||
|
||||
```
|
||||
yarn grunt dev # runs until you stop it, re-generating built assets on file changes
|
||||
yarn transpile --watch # recompiles when you change .ts files
|
||||
yarn sass-manifest --watch # recompiles when you change .scss files
|
||||
```
|
||||
|
||||
If you miss the `git-lfs` step, run `yarn cache clean` and remove `node_modules` before trying again.
|
||||
|
|
148
Gruntfile.js
148
Gruntfile.js
|
@ -1,148 +0,0 @@
|
|||
// Copyright 2014-2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
const importOnce = require('node-sass-import-once');
|
||||
const rimraf = require('rimraf');
|
||||
const mkdirp = require('mkdirp');
|
||||
const sass = require('node-sass');
|
||||
|
||||
/* eslint-disable more/no-then, no-console */
|
||||
|
||||
module.exports = grunt => {
|
||||
const bower = grunt.file.readJSON('bower.json');
|
||||
const components = [];
|
||||
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
||||
for (const i in bower.concat.app) {
|
||||
components.push(bower.concat.app[i]);
|
||||
}
|
||||
|
||||
grunt.loadNpmTasks('grunt-sass');
|
||||
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
concat: {
|
||||
components: {
|
||||
src: components,
|
||||
dest: 'js/components.js',
|
||||
},
|
||||
},
|
||||
sass: {
|
||||
options: {
|
||||
implementation: sass,
|
||||
sourceMap: true,
|
||||
importer: importOnce,
|
||||
},
|
||||
dev: {
|
||||
files: {
|
||||
'stylesheets/manifest.css': 'stylesheets/manifest.scss',
|
||||
'stylesheets/manifest_bridge.css': 'stylesheets/manifest_bridge.scss',
|
||||
},
|
||||
},
|
||||
},
|
||||
copy: {
|
||||
deps: {
|
||||
files: [
|
||||
{
|
||||
src: 'components/mp3lameencoder/lib/Mp3LameEncoder.js',
|
||||
dest: 'js/Mp3LameEncoder.min.js',
|
||||
},
|
||||
{
|
||||
src: 'components/webaudiorecorder/lib/WebAudioRecorderMp3.js',
|
||||
dest: 'js/WebAudioRecorderMp3.js',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
protobuf: {
|
||||
files: ['./protos/SignalService.proto'],
|
||||
tasks: ['exec:build-protobuf'],
|
||||
},
|
||||
sass: {
|
||||
files: ['./stylesheets/*.scss', './stylesheets/**/*.scss'],
|
||||
tasks: ['sass'],
|
||||
},
|
||||
},
|
||||
exec: {
|
||||
'tx-pull-mostly-translated': {
|
||||
cmd: 'tx pull --all --use-git-timestamps --minimum-perc=80',
|
||||
},
|
||||
'tx-pull-any-existing-translation': {
|
||||
cmd: 'tx pull --use-git-timestamps',
|
||||
},
|
||||
transpile: {
|
||||
cmd: 'yarn transpile',
|
||||
},
|
||||
'build-protobuf': {
|
||||
cmd: 'yarn build-protobuf',
|
||||
},
|
||||
},
|
||||
gitinfo: {}, // to be populated by grunt gitinfo
|
||||
});
|
||||
|
||||
Object.keys(grunt.config.get('pkg').devDependencies).forEach(key => {
|
||||
if (/^grunt(?!(-cli)?$)/.test(key)) {
|
||||
// ignore grunt and grunt-cli
|
||||
grunt.loadNpmTasks(key);
|
||||
}
|
||||
});
|
||||
|
||||
// Transifex does not understand placeholders, so this task patches all non-en
|
||||
// locales with missing placeholders
|
||||
grunt.registerTask('locale-patch', () => {
|
||||
const en = grunt.file.readJSON('_locales/en/messages.json');
|
||||
grunt.file.recurse('_locales', (abspath, rootdir, subdir, filename) => {
|
||||
if (subdir === 'en' || filename !== 'messages.json') {
|
||||
return;
|
||||
}
|
||||
const messages = grunt.file.readJSON(abspath);
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const key in messages) {
|
||||
if (en[key] !== undefined && messages[key] !== undefined) {
|
||||
if (
|
||||
en[key].placeholders !== undefined &&
|
||||
messages[key].placeholders === undefined
|
||||
) {
|
||||
messages[key].placeholders = en[key].placeholders;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grunt.file.write(abspath, `${JSON.stringify(messages, null, 4)}\n`);
|
||||
});
|
||||
});
|
||||
|
||||
grunt.registerTask('getExpireTime', () => {
|
||||
grunt.task.requires('gitinfo');
|
||||
const gitinfo = grunt.config.get('gitinfo');
|
||||
const committed = gitinfo.local.branch.current.lastCommitTime;
|
||||
const buildCreation = Date.parse(committed);
|
||||
const buildExpiration = buildCreation + 1000 * 60 * 60 * 24 * 90;
|
||||
grunt.file.write(
|
||||
'config/local-production.json',
|
||||
`${JSON.stringify({ buildCreation, buildExpiration })}\n`
|
||||
);
|
||||
});
|
||||
|
||||
grunt.registerTask('clean-release', () => {
|
||||
rimraf.sync('release');
|
||||
mkdirp.sync('release');
|
||||
});
|
||||
|
||||
grunt.registerTask('tx', [
|
||||
'exec:tx-pull-mostly-translated',
|
||||
'exec:tx-pull-any-existing-translation',
|
||||
'locale-patch',
|
||||
]);
|
||||
grunt.registerTask('dev', ['default', 'watch']);
|
||||
grunt.registerTask('date', ['gitinfo', 'getExpireTime']);
|
||||
grunt.registerTask('default', [
|
||||
'exec:build-protobuf',
|
||||
'exec:transpile',
|
||||
'concat',
|
||||
'copy:deps',
|
||||
'sass',
|
||||
'date',
|
||||
]);
|
||||
};
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Voorskou van duimnaelskakel vir $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "يتم جلب صورة مصغرة لمعاينة الوصلة $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "واجه سطح المكتب خطأ في فك التشفير.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "إرسال السجل",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ üçün bağlantı önbaxış eskizi",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Masaüstü, şifrə açma xətası ilə qarşılaşdı.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Jurnalı göndər",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Преглед на линк към $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ লিঙ্ক এর জন্য ছোট পূর্বরূপ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "ডেস্কটপে একটি ডিক্রিপশন ত্রুটি হয়েছে।",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "লগ জমা দিন",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Previsualització de la vista en miniatura de l'enllaç $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Hi ha hagut un error de desencriptació.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Envia el registre",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Náhled na odkaz pro $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop narazil na chybu při dešifrování.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Odeslat log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Rhagolwg dolen llun bach ar gyfer $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Cafodd y bwrdd gwaith yn wall dadgryptio.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Cyflwyno cofnod",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniature-linkforhåndsvisning for $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop stødte på en dekrypteringsfejl.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Indsend log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniaturbild der Link-Vorschau für $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Es trat ein Entschlüsselungsfehler auf.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Diagnoseprotokoll übermitteln",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Προεπισκόπηση συνδέσμου για $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Το Desktop αντιμετώπισε σφάλμα αποκρυπτογράφησης.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Υποβολή αρχείου",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatura antaŭrigardo de ligilo pri $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Eraro de malĉifrado okazis.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Sendi protokolon",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatura de vista previa para $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Fallo encontrado al descifrar.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Enviar el registro de depuración",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Lingi eelvaate pisipilt: $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Programmil tekkis dekrüptimistõrge.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Postita logi",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Estekaren miniatura aurrebista $domain$ domeinurako",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "پیش نمایش پیوند thumbnail برای $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Linkin $domain$ esikatselukuva",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Ohjelma törmäsi salauksen purkuvirheeseen.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Lähetä loki",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Imagette d’aperçu de lien pour $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Signal pour ordinateur a rencontré une erreur de déchiffrement.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Envoyer le journal",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ માટે થંબનેલ લિંક પ્રિવ્યુ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "קדם־תצוגה של קישור עבור $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "שולחן העבודה נתקל בשגיאת פיענוח.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "הגש יומן",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ के लिये थंबनेल लिंक पूर्वावलोकन",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "डेस्कटॉप एक डिक्रिप्शन एरर में चला गया.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "लॉग सबमिट करें",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Sličica pregleda poveznice za $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "A $domain$ hivatkozás előnézeti képe",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "A Desktop egy dekódolási hibába ütközött.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Log küldése",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Gambar mini pratinjau tautan untuk $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop menemui eror dekripsi.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Kirim catatan",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Smámynd forskoðunar tengils fyrir $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Forritið lenti í afkóðunarvillu.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Senda inn atvikaskrá",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatura anteprima del collegamento per $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ha riscontrato un errore di decrittazione.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Invia log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ のリンクプレビュー",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "デスクトップで復号化エラーが発生しました。",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "ログを送信",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "ការមើលតំណជារូបភាពតូចៗសម្រាប់$domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ಗೆ ಥಂಬ್ನೇಲ್ ಲಿಂಕ್ ಪೂರ್ವವೀಕ್ಷಣೆ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$의 섬네일 링크 미리보기",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Thumbnail link preview for $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "ຮູບນ້ອຍລີງ ທີຜ່ານມາ ສຳລັບ $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatiūrinė nuorodos peržiūra, skirta $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Programa susidūrė su iššifravimo klaida.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Pateikti žurnalą",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ sīktēlu saites priekšskatījums",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Линк до сликичка за преглед на $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$-ൻ്റെ ലിങ്ക് പ്രിവ്യൂ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ करिता थंबनेल दुवा पुनरावलोकन",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": " डेस्कटॉपमध्ये डिक्रिप्शन त्रुटी आली",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "लॉग सादर करा",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Pratonton pautan imej kecil untuk $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Komputer meja mengalami ralat nyahinkripsi.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Hantar log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatyrbilde til linkforhåndsvisning for $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Voorbeeldafbeelding voor $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Signal-Desktop heeft een probleem met ontsleutelen.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Foutopsporingslog indienen",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Førehandsvisning av lenkje til $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Send inn logg",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Thumbnail link preview for $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": " $domain$ ਦੇ ਲਈ ਥੰਬਨੇਲ ਲਿੰਕ ਦੀ ਝਲਕ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Podgląd miniatury odnośnika dla $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Aplikacja Desktop napotkała błąd, w trakcie odszyfrowywania.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Wyślij logi debugowania",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "د $domain$ لپاره د thumbnail د لینک مخکتنه",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "ډیسکټاپ له یوې ډیکرپشن شوې تیروتنې سره رن شوی",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "د رپوټ تسلیمول",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Pré-visualização em miniatura do link $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Signal encontrou um erro ao descriptografar uma mensagem.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Enviar um registro de depuração",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Pré-visualização da hiperligação da miniatura $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "O desktop apresentou um erro de desencriptação.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submeter relatório",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Miniatură a previzualizări pentru $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop a întâmpinat o eroare de decriptare.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Trimite jurnalul",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Миниатюра предпросмотра ссылки для $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "В Signal Desktop произошла ошибка расшифровки.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Отправить журнал",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Náhľad odkazu pre $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "V programe Signal Desktop sa vyskytla chyba pri dešifrovaní.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Odoslať denník",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Predogledna sličica povezave na: $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Prišlo je do težav z dešifriranjem.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Oddaj sistemsko zabeležbo",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Paraparje lidhjeje miniature për $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktopi hasi një gabim shfshehtëzimi.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Parashtroni regjistër",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Сличица прегледа линка за $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Десктоп је налетео на грешку у дешифрирању.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Пошањи извештај",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Länkförhandsgranskning i miniatyrbild för $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop stötte på ett dekrypteringsfel.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Skicka in logg",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Muunganisho wa hakiki ya kijipicha kwa $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ க்கான சிறு இணைப்பு முன்னோட்டம்",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$కోసం సూక్ష్మచిత్రం పూర్వప్రదర్శన లింకు ",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "ภาพย่อตัวอย่างลิงก์ของ $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ için bağlantı ön izlemesi küçük resmi",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop deşifreleme hatası ile karşılaştı.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Günlüğü gönder",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ نىڭ كىچىك سۈرەت ئۇلانما ئالدىن كۆزىتىشى",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Мініатюра попереднього перегляду посилання для $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$کیلئے پیش نظر تھمب نیل لنک",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "Hình thu nhỏ liên kết bản xem trước cho $domain$",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$的链接预览缩略图",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "Desktop ran into a decryption error.",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "Submit log",
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": 123
|
||||
"example": "123"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -631,7 +631,7 @@
|
|||
"message": "$domain$ 的縮圖連結預覽",
|
||||
"description": "Shown while Signal Desktop is fetching metadata for a url in composition area",
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"domain": {
|
||||
"content": "$1",
|
||||
"example": "instagram.com"
|
||||
}
|
||||
|
@ -649,7 +649,17 @@
|
|||
},
|
||||
"decryptionErrorToast": {
|
||||
"message": "電腦遇到解密錯誤。",
|
||||
"description": "An error popup when we haven't added an error for decryption error."
|
||||
"description": "An error popup when we haven't added an error for decryption error.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "John"
|
||||
},
|
||||
"deviceId": {
|
||||
"content": "$1",
|
||||
"example": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"decryptionErrorToastAction": {
|
||||
"message": "上傳日誌",
|
||||
|
|
43
bower.json
43
bower.json
|
@ -1,43 +0,0 @@
|
|||
{
|
||||
"name": "signal-desktop",
|
||||
"version": "0.0.0",
|
||||
"homepage": "https://github.com/signalapp/Signal-Desktop",
|
||||
"license": "AGPL-3.0-only",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"mp3lameencoder": "https://github.com/higuma/mp3-lame-encoder-js.git",
|
||||
"protobuf": "~3.8.0",
|
||||
"qrcode": "https://github.com/davidshimjs/qrcodejs.git#1c78ccd71",
|
||||
"webaudiorecorder": "https://github.com/higuma/web-audio-recorder-js.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
},
|
||||
"preen": {
|
||||
"mp3lameencoder": [
|
||||
"lib/Mp3LameEncoder.js"
|
||||
],
|
||||
"protobuf": [
|
||||
"dist/ProtoBuf.js"
|
||||
],
|
||||
"qrcode": [
|
||||
"qrcode.js"
|
||||
],
|
||||
"webaudiorecorder": [
|
||||
"lib/WebAudioRecorder.js",
|
||||
"lib/WebAudioRecorderMp3.js"
|
||||
]
|
||||
},
|
||||
"concat": {
|
||||
"app": [
|
||||
"node_modules/jquery/dist/jquery.js",
|
||||
"components/long/**/*.js",
|
||||
"components/bytebuffer/**/*.js",
|
||||
"components/protobuf/**/*.js",
|
||||
"node_modules/mustache/mustache.js",
|
||||
"node_modules/underscore/underscore.js",
|
||||
"components/qrcode/**/*.js",
|
||||
"components/autosize/**/*.js",
|
||||
"components/webaudiorecorder/lib/WebAudioRecorder.js"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
// Copyright 2017-2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
// because grunt.cmd is totally flakey on windows
|
||||
require('grunt').cli();
|
|
@ -1,662 +0,0 @@
|
|||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['backbone', 'underscore'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
// Node. Does not work with strict CommonJS, but
|
||||
// only CommonJS-like environments that support module.exports,
|
||||
// like Node.
|
||||
module.exports = factory(require('backbone'), require('underscore'));
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
root.returnExports = factory(root.Backbone, root._);
|
||||
}
|
||||
}(this, function (Backbone, _) {
|
||||
|
||||
// Generate four random hex digits.
|
||||
function S4() {
|
||||
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
||||
}
|
||||
|
||||
// Generate a pseudo-GUID by concatenating random hexadecimal.
|
||||
function guid() {
|
||||
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
||||
}
|
||||
|
||||
if ( _(indexedDB).isUndefined() ) { return; }
|
||||
|
||||
// Driver object
|
||||
// That's the interesting part.
|
||||
// There is a driver for each schema provided. The schema is a te combination of name (for the database), a version as well as migrations to reach that
|
||||
// version of the database.
|
||||
function Driver(schema, ready, nolog, onerror) {
|
||||
this.schema = schema;
|
||||
this.ready = ready;
|
||||
this.error = null;
|
||||
this.transactions = []; // Used to list all transactions and keep track of active ones.
|
||||
this.db = null;
|
||||
this.nolog = nolog;
|
||||
this.onerror = onerror;
|
||||
var lastMigrationPathVersion = _.last(this.schema.migrations).version;
|
||||
if (!this.nolog) debugLog("opening database " + this.schema.id + " in version #" + lastMigrationPathVersion);
|
||||
this.dbRequest = indexedDB.open(this.schema.id,lastMigrationPathVersion); //schema version need to be an unsigned long
|
||||
|
||||
this.launchMigrationPath = function(dbVersion) {
|
||||
var transaction = this.dbRequest.transaction;
|
||||
var clonedMigrations = _.clone(schema.migrations);
|
||||
this.migrate(transaction, clonedMigrations, dbVersion, {
|
||||
error: function (event) {
|
||||
this.error = "Database not up to date. " + dbVersion + " expected was " + lastMigrationPathVersion;
|
||||
}.bind(this)
|
||||
});
|
||||
};
|
||||
|
||||
this.dbRequest.onblocked = function(event){
|
||||
if (!this.nolog) debugLog("connection to database blocked");
|
||||
}
|
||||
|
||||
this.dbRequest.onsuccess = function (e) {
|
||||
this.db = e.target.result; // Attach the connection ot the queue.
|
||||
var currentIntDBVersion = (parseInt(this.db.version) || 0); // we need convert beacuse chrome store in integer and ie10 DP4+ in int;
|
||||
var lastMigrationInt = (parseInt(lastMigrationPathVersion) || 0); // And make sure we compare numbers with numbers.
|
||||
|
||||
if (currentIntDBVersion === lastMigrationInt) { //if support new event onupgradeneeded will trigger the ready function
|
||||
// No migration to perform!
|
||||
this.ready();
|
||||
} else if (currentIntDBVersion < lastMigrationInt ) {
|
||||
// We need to migrate up to the current migration defined in the database
|
||||
this.launchMigrationPath(currentIntDBVersion);
|
||||
} else {
|
||||
// Looks like the IndexedDB is at a higher version than the current driver schema.
|
||||
this.error = "Database version is greater than current code " + currentIntDBVersion + " expected was " + lastMigrationInt;
|
||||
}
|
||||
}.bind(this);
|
||||
|
||||
|
||||
|
||||
this.dbRequest.onerror = function (e) {
|
||||
// Failed to open the database
|
||||
this.error = "Couldn't not connect to the database"
|
||||
if (!this.nolog) debugLog("Couldn't not connect to the database");
|
||||
this.onerror();
|
||||
}.bind(this);
|
||||
|
||||
this.dbRequest.onabort = function (e) {
|
||||
// Failed to open the database
|
||||
this.error = "Connection to the database aborted"
|
||||
if (!this.nolog) debugLog("Connection to the database aborted");
|
||||
this.onerror();
|
||||
}.bind(this);
|
||||
|
||||
|
||||
|
||||
this.dbRequest.onupgradeneeded = function(iDBVersionChangeEvent){
|
||||
this.db =iDBVersionChangeEvent.target.result;
|
||||
|
||||
var newVersion = iDBVersionChangeEvent.newVersion;
|
||||
var oldVersion = iDBVersionChangeEvent.oldVersion;
|
||||
|
||||
// Fix Safari 8 and iOS 8 bug
|
||||
// at the first connection oldVersion is equal to 9223372036854776000
|
||||
// but the real value is 0
|
||||
if (oldVersion > 99999999999)
|
||||
oldVersion = 0;
|
||||
|
||||
if (!this.nolog) debugLog("onupgradeneeded = " + oldVersion + " => " + newVersion);
|
||||
this.launchMigrationPath(oldVersion);
|
||||
}.bind(this);
|
||||
}
|
||||
|
||||
function debugLog(str) {
|
||||
if (typeof window !== "undefined" && typeof window.console !== "undefined" && typeof window.console.log !== "undefined") {
|
||||
window.console.log(str);
|
||||
}
|
||||
else if(console.log !== "undefined") {
|
||||
console.log(str)
|
||||
}
|
||||
}
|
||||
|
||||
// Driver Prototype
|
||||
Driver.prototype = {
|
||||
|
||||
// Tracks transactions. Mostly for debugging purposes. TO-IMPROVE
|
||||
_track_transaction: function(transaction) {
|
||||
this.transactions.push(transaction);
|
||||
function removeIt() {
|
||||
var idx = this.transactions.indexOf(transaction);
|
||||
if (idx !== -1) {this.transactions.splice(idx); }
|
||||
};
|
||||
transaction.oncomplete = removeIt.bind(this);
|
||||
transaction.onabort = removeIt.bind(this);
|
||||
transaction.onerror = removeIt.bind(this);
|
||||
},
|
||||
|
||||
// Performs all the migrations to reach the right version of the database.
|
||||
migrate: function (transaction, migrations, version, options) {
|
||||
transaction.onerror = options.error;
|
||||
transaction.onabort = options.error;
|
||||
|
||||
if (!this.nolog) debugLog("migrate begin version from #" + version);
|
||||
var that = this;
|
||||
var migration = migrations.shift();
|
||||
if (migration) {
|
||||
if (!version || version < migration.version) {
|
||||
// We need to apply this migration-
|
||||
if (typeof migration.before == "undefined") {
|
||||
migration.before = function (next) {
|
||||
next();
|
||||
};
|
||||
}
|
||||
if (typeof migration.after == "undefined") {
|
||||
migration.after = function (next) {
|
||||
next();
|
||||
};
|
||||
}
|
||||
// First, let's run the before script
|
||||
if (!this.nolog) debugLog("migrate begin before version #" + migration.version);
|
||||
migration.before(function () {
|
||||
if (!this.nolog) debugLog("migrate done before version #" + migration.version);
|
||||
|
||||
if (!this.nolog) debugLog("migrate begin migrate version #" + migration.version);
|
||||
|
||||
migration.migrate(transaction, function () {
|
||||
if (!this.nolog) debugLog("migrate done migrate version #" + migration.version);
|
||||
// Migration successfully appliedn let's go to the next one!
|
||||
if (!this.nolog) debugLog("migrate begin after version #" + migration.version);
|
||||
migration.after(function () {
|
||||
if (!this.nolog) debugLog("migrate done after version #" + migration.version);
|
||||
if (!this.nolog) debugLog("Migrated to " + migration.version);
|
||||
|
||||
//last modification occurred, need finish
|
||||
if(migrations.length ==0) {
|
||||
if (!this.nolog) {
|
||||
debugLog("migrate setting transaction.oncomplete to finish version #" + migration.version);
|
||||
transaction.oncomplete = function() {
|
||||
debugLog("migrate done transaction.oncomplete version #" + migration.version);
|
||||
debugLog("Done migrating");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!this.nolog) debugLog("migrate end from version #" + version + " to " + migration.version);
|
||||
that.migrate(transaction, migrations, version, options);
|
||||
}
|
||||
|
||||
}.bind(this));
|
||||
}.bind(this));
|
||||
}.bind(this));
|
||||
} else {
|
||||
// No need to apply this migration
|
||||
if (!this.nolog) debugLog("Skipping migration " + migration.version);
|
||||
this.migrate(transaction, migrations, version, options);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// This is the main method, called by the ExecutionQueue when the driver is ready (database open and migration performed)
|
||||
execute: function (storeName, method, object, options) {
|
||||
if (!this.nolog) debugLog("execute : " + method + " on " + storeName + " for " + object.id);
|
||||
switch (method) {
|
||||
case "create":
|
||||
this.create(storeName, object, options);
|
||||
break;
|
||||
case "read":
|
||||
if (object.id || object.cid) {
|
||||
this.read(storeName, object, options); // It's a model
|
||||
} else {
|
||||
this.query(storeName, object, options); // It's a collection
|
||||
}
|
||||
break;
|
||||
case "update":
|
||||
this.update(storeName, object, options); // We may want to check that this is not a collection. TOFIX
|
||||
break;
|
||||
case "delete":
|
||||
if (object.id || object.cid) {
|
||||
this.delete(storeName, object, options);
|
||||
} else {
|
||||
this.clear(storeName, object, options);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Hum what?
|
||||
}
|
||||
},
|
||||
|
||||
// Writes the json to the storeName in db. It is a create operations, which means it will fail if the key already exists
|
||||
// options are just success and error callbacks.
|
||||
create: function (storeName, object, options) {
|
||||
var writeTransaction = this.db.transaction([storeName], 'readwrite');
|
||||
//this._track_transaction(writeTransaction);
|
||||
var store = writeTransaction.objectStore(storeName);
|
||||
var json = object.toJSON();
|
||||
var idAttribute = _.result(object, 'idAttribute');
|
||||
var writeRequest;
|
||||
|
||||
if (json[idAttribute] === undefined && !store.autoIncrement) json[idAttribute] = guid();
|
||||
|
||||
writeTransaction.onerror = function (e) {
|
||||
options.error(e);
|
||||
};
|
||||
writeTransaction.oncomplete = function (e) {
|
||||
options.success(json);
|
||||
};
|
||||
|
||||
if (!store.keyPath)
|
||||
writeRequest = store.add(json, json[idAttribute]);
|
||||
else
|
||||
writeRequest = store.add(json);
|
||||
},
|
||||
|
||||
// Writes the json to the storeName in db. It is an update operation, which means it will overwrite the value if the key already exist
|
||||
// options are just success and error callbacks.
|
||||
update: function (storeName, object, options) {
|
||||
var writeTransaction = this.db.transaction([storeName], 'readwrite');
|
||||
//this._track_transaction(writeTransaction);
|
||||
var store = writeTransaction.objectStore(storeName);
|
||||
var json = object.toJSON();
|
||||
var idAttribute = _.result(object, 'idAttribute');
|
||||
var writeRequest;
|
||||
|
||||
if (!json[idAttribute]) json[idAttribute] = guid();
|
||||
|
||||
if (!store.keyPath)
|
||||
writeRequest = store.put(json, json[idAttribute]);
|
||||
else
|
||||
writeRequest = store.put(json);
|
||||
|
||||
writeRequest.onerror = function (e) {
|
||||
options.error(e);
|
||||
};
|
||||
writeTransaction.oncomplete = function (e) {
|
||||
options.success(json);
|
||||
};
|
||||
},
|
||||
|
||||
// Reads from storeName in db with json.id if it's there of with any json.xxxx as long as xxx is an index in storeName
|
||||
read: function (storeName, object, options) {
|
||||
var readTransaction = this.db.transaction([storeName], "readonly");
|
||||
this._track_transaction(readTransaction);
|
||||
|
||||
var store = readTransaction.objectStore(storeName);
|
||||
var json = object.toJSON();
|
||||
var idAttribute = _.result(object, 'idAttribute');
|
||||
|
||||
var getRequest = null;
|
||||
if (json[idAttribute]) {
|
||||
getRequest = store.get(json[idAttribute]);
|
||||
} else if(options.index) {
|
||||
var index = store.index(options.index.name);
|
||||
getRequest = index.get(options.index.value);
|
||||
} else {
|
||||
// We need to find which index we have
|
||||
var cardinality = 0; // try to fit the index with most matches
|
||||
_.each(store.indexNames, function (key, index) {
|
||||
index = store.index(key);
|
||||
if(typeof index.keyPath === 'string' && 1 > cardinality) {
|
||||
// simple index
|
||||
if (json[index.keyPath] !== undefined) {
|
||||
getRequest = index.get(json[index.keyPath]);
|
||||
cardinality = 1;
|
||||
}
|
||||
} else if(typeof index.keyPath === 'object' && index.keyPath.length > cardinality) {
|
||||
// compound index
|
||||
var valid = true;
|
||||
var keyValue = _.map(index.keyPath, function(keyPart) {
|
||||
valid = valid && json[keyPart] !== undefined;
|
||||
return json[keyPart];
|
||||
});
|
||||
if(valid) {
|
||||
getRequest = index.get(keyValue);
|
||||
cardinality = index.keyPath.length;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (getRequest) {
|
||||
getRequest.onsuccess = function (event) {
|
||||
if (event.target.result) {
|
||||
options.success(event.target.result);
|
||||
} else {
|
||||
options.error("Not Found");
|
||||
}
|
||||
};
|
||||
getRequest.onerror = function () {
|
||||
options.error("Not Found"); // We couldn't find the record.
|
||||
}
|
||||
} else {
|
||||
options.error("Not Found"); // We couldn't even look for it, as we don't have enough data.
|
||||
}
|
||||
},
|
||||
|
||||
// Deletes the json.id key and value in storeName from db.
|
||||
delete: function (storeName, object, options) {
|
||||
var deleteTransaction = this.db.transaction([storeName], 'readwrite');
|
||||
//this._track_transaction(deleteTransaction);
|
||||
|
||||
var store = deleteTransaction.objectStore(storeName);
|
||||
var json = object.toJSON();
|
||||
var idAttribute = _.result(object, 'idAttribute');
|
||||
|
||||
var deleteRequest = store.delete(json[idAttribute]);
|
||||
|
||||
deleteTransaction.oncomplete = function (event) {
|
||||
options.success(null);
|
||||
};
|
||||
deleteRequest.onerror = function (event) {
|
||||
options.error("Not Deleted");
|
||||
};
|
||||
},
|
||||
|
||||
// Clears all records for storeName from db.
|
||||
clear: function (storeName, object, options) {
|
||||
var deleteTransaction = this.db.transaction([storeName], "readwrite");
|
||||
//this._track_transaction(deleteTransaction);
|
||||
|
||||
var store = deleteTransaction.objectStore(storeName);
|
||||
|
||||
var deleteRequest = store.clear();
|
||||
deleteRequest.onsuccess = function (event) {
|
||||
options.success(null);
|
||||
};
|
||||
deleteRequest.onerror = function (event) {
|
||||
options.error("Not Cleared");
|
||||
};
|
||||
},
|
||||
|
||||
// Performs a query on storeName in db.
|
||||
// options may include :
|
||||
// - conditions : value of an index, or range for an index
|
||||
// - range : range for the primary key
|
||||
// - limit : max number of elements to be yielded
|
||||
// - offset : skipped items.
|
||||
query: function (storeName, collection, options) {
|
||||
var elements = [];
|
||||
var skipped = 0, processed = 0;
|
||||
var queryTransaction = this.db.transaction([storeName], "readonly");
|
||||
//this._track_transaction(queryTransaction);
|
||||
|
||||
var idAttribute = _.result(collection.model.prototype, 'idAttribute');
|
||||
var readCursor = null;
|
||||
var store = queryTransaction.objectStore(storeName);
|
||||
var index = null,
|
||||
lower = null,
|
||||
upper = null,
|
||||
bounds = null;
|
||||
|
||||
if (options.conditions) {
|
||||
// We have a condition, we need to use it for the cursor
|
||||
_.each(store.indexNames, function (key) {
|
||||
if (!readCursor) {
|
||||
index = store.index(key);
|
||||
if (options.conditions[index.keyPath] instanceof Array) {
|
||||
lower = options.conditions[index.keyPath][0] > options.conditions[index.keyPath][1] ? options.conditions[index.keyPath][1] : options.conditions[index.keyPath][0];
|
||||
upper = options.conditions[index.keyPath][0] > options.conditions[index.keyPath][1] ? options.conditions[index.keyPath][0] : options.conditions[index.keyPath][1];
|
||||
bounds = IDBKeyRange.bound(lower, upper, true, true);
|
||||
|
||||
if (options.conditions[index.keyPath][0] > options.conditions[index.keyPath][1]) {
|
||||
// Looks like we want the DESC order
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.PREV || "prev");
|
||||
} else {
|
||||
// We want ASC order
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.NEXT || "next");
|
||||
}
|
||||
} else if (typeof options.conditions[index.keyPath] === 'object' && ('$gt' in options.conditions[index.keyPath] || '$gte' in options.conditions[index.keyPath])) {
|
||||
if('$gt' in options.conditions[index.keyPath])
|
||||
bounds = IDBKeyRange.lowerBound(options.conditions[index.keyPath]['$gt'], true);
|
||||
else
|
||||
bounds = IDBKeyRange.lowerBound(options.conditions[index.keyPath]['$gte']);
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.NEXT || "next");
|
||||
} else if (typeof options.conditions[index.keyPath] === 'object' && ('$lt' in options.conditions[index.keyPath] || '$lte' in options.conditions[index.keyPath])) {
|
||||
if('$lt' in options.conditions[index.keyPath])
|
||||
bounds = IDBKeyRange.upperBound(options.conditions[index.keyPath]['$lt'], true);
|
||||
else
|
||||
bounds = IDBKeyRange.upperBound(options.conditions[index.keyPath]['$lte']);
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.NEXT || "next");
|
||||
} else if (options.conditions[index.keyPath] != undefined) {
|
||||
bounds = IDBKeyRange.only(options.conditions[index.keyPath]);
|
||||
readCursor = index.openCursor(bounds);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (options.index) {
|
||||
index = store.index(options.index.name);
|
||||
var excludeLower = !!options.index.excludeLower;
|
||||
var excludeUpper = !!options.index.excludeUpper;
|
||||
if (index) {
|
||||
if (options.index.lower && options.index.upper) {
|
||||
bounds = IDBKeyRange.bound(options.index.lower, options.index.upper, excludeLower, excludeUpper);
|
||||
} else if (options.index.lower) {
|
||||
bounds = IDBKeyRange.lowerBound(options.index.lower, excludeLower);
|
||||
} else if (options.index.upper) {
|
||||
bounds = IDBKeyRange.upperBound(options.index.upper, excludeUpper);
|
||||
} else if (options.index.only) {
|
||||
bounds = IDBKeyRange.only(options.index.only);
|
||||
}
|
||||
|
||||
if (typeof options.index.order === 'string' && options.index.order.toLowerCase() === 'desc') {
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.PREV || "prev");
|
||||
} else {
|
||||
readCursor = index.openCursor(bounds, window.IDBCursor.NEXT || "next");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No conditions, use the index
|
||||
if (options.range) {
|
||||
lower = options.range[0] > options.range[1] ? options.range[1] : options.range[0];
|
||||
upper = options.range[0] > options.range[1] ? options.range[0] : options.range[1];
|
||||
bounds = IDBKeyRange.bound(lower, upper);
|
||||
if (options.range[0] > options.range[1]) {
|
||||
readCursor = store.openCursor(bounds, window.IDBCursor.PREV || "prev");
|
||||
} else {
|
||||
readCursor = store.openCursor(bounds, window.IDBCursor.NEXT || "next");
|
||||
}
|
||||
} else {
|
||||
readCursor = store.openCursor();
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof (readCursor) == "undefined" || !readCursor) {
|
||||
options.error("No Cursor");
|
||||
} else {
|
||||
readCursor.onerror = function(e){
|
||||
options.error("readCursor error", e);
|
||||
};
|
||||
// Setup a handler for the cursor’s `success` event:
|
||||
readCursor.onsuccess = function (e) {
|
||||
var cursor = e.target.result;
|
||||
if (!cursor) {
|
||||
if (options.addIndividually || options.clear) {
|
||||
// nothing!
|
||||
// We need to indicate that we're done. But, how?
|
||||
collection.trigger("reset");
|
||||
} else {
|
||||
options.success(elements); // We're done. No more elements.
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Cursor is not over yet.
|
||||
if (options.limit && processed >= options.limit) {
|
||||
// Yet, we have processed enough elements. So, let's just skip.
|
||||
if (bounds) {
|
||||
if (options.conditions && options.conditions[index.keyPath]) {
|
||||
cursor.continue(options.conditions[index.keyPath][1] + 1); /* We need to 'terminate' the cursor cleany, by moving to the end */
|
||||
} else if (options.index && (options.index.upper || options.index.lower)) {
|
||||
if (typeof options.index.order === 'string' && options.index.order.toLowerCase() === 'desc') {
|
||||
cursor.continue(options.index.lower);
|
||||
} else {
|
||||
cursor.continue(options.index.upper);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cursor.continue(); /* We need to 'terminate' the cursor cleany, by moving to the end */
|
||||
}
|
||||
}
|
||||
else if (options.offset && options.offset > skipped) {
|
||||
skipped++;
|
||||
cursor.continue(); /* We need to Moving the cursor forward */
|
||||
} else {
|
||||
// This time, it looks like it's good!
|
||||
if (options.addIndividually) {
|
||||
collection.add(cursor.value);
|
||||
} else if (options.clear) {
|
||||
var deleteRequest = store.delete(cursor.value[idAttribute]);
|
||||
deleteRequest.onsuccess = function (event) {
|
||||
elements.push(cursor.value);
|
||||
};
|
||||
deleteRequest.onerror = function (event) {
|
||||
elements.push(cursor.value);
|
||||
};
|
||||
|
||||
} else {
|
||||
elements.push(cursor.value);
|
||||
}
|
||||
processed++;
|
||||
cursor.continue();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
close :function(){
|
||||
if(this.db){
|
||||
this.db.close();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// ExecutionQueue object
|
||||
// The execution queue is an abstraction to buffer up requests to the database.
|
||||
// It holds a "driver". When the driver is ready, it just fires up the queue and executes in sync.
|
||||
function ExecutionQueue(schema,next,nolog) {
|
||||
this.driver = new Driver(schema, this.ready.bind(this), nolog, this.error.bind(this));
|
||||
this.started = false;
|
||||
this.failed = false;
|
||||
this.stack = [];
|
||||
this.version = _.last(schema.migrations).version;
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
// ExecutionQueue Prototype
|
||||
ExecutionQueue.prototype = {
|
||||
// Called when the driver is ready
|
||||
// It just loops over the elements in the queue and executes them.
|
||||
ready: function () {
|
||||
this.started = true;
|
||||
_.each(this.stack, function (message) {
|
||||
this.execute(message);
|
||||
}.bind(this));
|
||||
this.stack = []; // fix memory leak
|
||||
this.next();
|
||||
},
|
||||
|
||||
error: function() {
|
||||
this.failed = true;
|
||||
_.each(this.stack, function (message) {
|
||||
this.execute(message);
|
||||
}.bind(this));
|
||||
this.stack = [];
|
||||
this.next();
|
||||
},
|
||||
|
||||
// Executes a given command on the driver. If not started, just stacks up one more element.
|
||||
execute: function (message) {
|
||||
if (this.started) {
|
||||
try {
|
||||
this.driver.execute(message[2].storeName || message[1].storeName, message[0], message[1], message[2]); // Upon messages, we execute the query
|
||||
} catch (e) {
|
||||
if (e.name === 'InvalidStateError') {
|
||||
var f = window.onInvalidStateError;
|
||||
if (f) f(e);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
} else if (this.failed) {
|
||||
message[2].error();
|
||||
} else {
|
||||
this.stack.push(message);
|
||||
}
|
||||
},
|
||||
|
||||
close : function(){
|
||||
this.driver.close();
|
||||
}
|
||||
};
|
||||
|
||||
// Method used by Backbone for sync of data with data store. It was initially designed to work with "server side" APIs, This wrapper makes
|
||||
// it work with the local indexedDB stuff. It uses the schema attribute provided by the object.
|
||||
// The wrapper keeps an active Executuon Queue for each "schema", and executes querues agains it, based on the object type (collection or
|
||||
// single model), but also the method... etc.
|
||||
// Keeps track of the connections
|
||||
var Databases = {};
|
||||
|
||||
function sync(method, object, options) {
|
||||
|
||||
if(method == "closeall"){
|
||||
_.each(Databases,function(database){
|
||||
database.close();
|
||||
});
|
||||
// Clean up active databases object.
|
||||
Databases = {};
|
||||
return Backbone.$.Deferred().resolve();
|
||||
}
|
||||
|
||||
// If a model or a collection does not define a database, fall back on ajaxSync
|
||||
if (!object || !_.isObject(object.database)) {
|
||||
return Backbone.ajaxSync(method, object, options);
|
||||
}
|
||||
|
||||
var schema = object.database;
|
||||
if (Databases[schema.id]) {
|
||||
if(Databases[schema.id].version != _.last(schema.migrations).version){
|
||||
Databases[schema.id].close();
|
||||
delete Databases[schema.id];
|
||||
}
|
||||
}
|
||||
|
||||
var promise;
|
||||
|
||||
if (typeof Backbone.$ === 'undefined' || typeof Backbone.$.Deferred === 'undefined') {
|
||||
var noop = function() {};
|
||||
var resolve = noop;
|
||||
var reject = noop;
|
||||
} else {
|
||||
var dfd = Backbone.$.Deferred();
|
||||
var resolve = dfd.resolve;
|
||||
var reject = dfd.reject;
|
||||
|
||||
promise = dfd.promise();
|
||||
}
|
||||
|
||||
var success = options.success;
|
||||
options.success = function(resp) {
|
||||
if (success) success(resp);
|
||||
resolve();
|
||||
object.trigger('sync', object, resp, options);
|
||||
};
|
||||
|
||||
var error = options.error;
|
||||
options.error = function(resp) {
|
||||
if (error) error(resp);
|
||||
reject();
|
||||
object.trigger('error', object, resp, options);
|
||||
};
|
||||
|
||||
var next = function(){
|
||||
Databases[schema.id].execute([method, object, options]);
|
||||
};
|
||||
|
||||
if (!Databases[schema.id]) {
|
||||
Databases[schema.id] = new ExecutionQueue(schema,next,schema.nolog);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
|
||||
return promise;
|
||||
};
|
||||
|
||||
Backbone.ajaxSync = Backbone.sync;
|
||||
Backbone.sync = sync;
|
||||
|
||||
return { sync: sync, debugLog: debugLog};
|
||||
}));
|
28
package.json
28
package.json
|
@ -15,11 +15,17 @@
|
|||
"postinstall": "yarn build:acknowledgments && yarn build:fuses && patch-package && yarn electron:install-app-deps && rimraf node_modules/dtrace-provider",
|
||||
"postuninstall": "yarn build:acknowledgments",
|
||||
"start": "electron .",
|
||||
"grunt": "grunt",
|
||||
"generate": "yarn grunt",
|
||||
"generate": "npm-run-all build-protobuf transpile sass get-expire-time copy-and-concat",
|
||||
"build-release": "yarn run build",
|
||||
"sign-release": "node ts/updater/generateSignature.js",
|
||||
"notarize": "node ts/build/notarize.js",
|
||||
"get-strings": "node ts/scripts/get-strings.js",
|
||||
"get-expire-time": "node ts/scripts/get-expire-time.js",
|
||||
"copy-and-concat": "node ts/scripts/copy-and-concat.js",
|
||||
"sass": "npm-run-all sass-manifest sass-manifest-bridge",
|
||||
"sass-base": "node-sass --source-map true --importer node_modules/node-sass-import-once/index.js",
|
||||
"sass-manifest": "yarn sass-base stylesheets/manifest.scss stylesheets/manifest.css",
|
||||
"sass-manifest-bridge": "yarn sass-base stylesheets/manifest_bridge.scss stylesheets/manifest_bridge.css",
|
||||
"build-module-protobuf": "pbjs --target static-module --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --out ts/protobuf/compiled.d.ts ts/protobuf/compiled.js",
|
||||
"clean-module-protobuf": "rm -f ts/protobuf/compiled.d.ts ts/protobuf/compiled.js",
|
||||
"build-protobuf": "yarn build-module-protobuf",
|
||||
|
@ -43,18 +49,16 @@
|
|||
"clean-transpile-once": "rimraf app/**/*.js app/*.js ts/**/*.js ts/*.js tsconfig.tsbuildinfo",
|
||||
"clean-transpile": "yarn run clean-transpile-once && yarn run clean-transpile-once",
|
||||
"open-coverage": "open coverage/lcov-report/index.html",
|
||||
"ready": "npm-run-all --print-label clean-transpile grunt --parallel lint lint-deps test-node test-electron",
|
||||
"ready": "npm-run-all --print-label clean-transpile generate --parallel lint lint-deps test-node test-electron",
|
||||
"dev": "run-p --print-label dev:*",
|
||||
"dev:grunt": "yarn grunt dev",
|
||||
"dev:transpile": "yarn run transpile --watch --preserveWatchOutput",
|
||||
"dev:webpack": "cross-env NODE_ENV=development webpack serve --mode development",
|
||||
"dev:typed-scss": "yarn build:typed-scss -w",
|
||||
"dev:storybook": "cross-env SIGNAL_ENV=storybook start-storybook -p 6006 -s ./",
|
||||
"storybook:axe": "build-storybook && axe-storybook",
|
||||
"build": "run-s --print-label build:grunt build:typed-scss build:webpack build:fuses:release build:release build:fuses build:zip",
|
||||
"build": "run-s --print-label generate build:typed-scss build:webpack build:fuses:release build:release build:fuses build:zip",
|
||||
"build:acknowledgments": "node scripts/generate-acknowledgments.js",
|
||||
"build:dev": "run-s --print-label build:grunt build:typed-scss build:webpack",
|
||||
"build:grunt": "yarn grunt",
|
||||
"build:dev": "run-s --print-label generate build:typed-scss build:webpack",
|
||||
"build:typed-scss": "tsm sticker-creator",
|
||||
"build:webpack": "run-p build:webpack:sticker-creator build:webpack:preload build:webpack:sql-worker build:webpack:heic-worker",
|
||||
"build:webpack:sticker-creator": "cross-env NODE_ENV=production webpack",
|
||||
|
@ -65,7 +69,7 @@
|
|||
"build:release": "cross-env SIGNAL_ENV=production yarn build:electron -- --config.directories.output=release",
|
||||
"build:fuses": "node scripts/fuse-electron.js",
|
||||
"build:fuses:release": "node scripts/fuse-electron.js --release",
|
||||
"build:zip": "node scripts/zip-macos-release.js",
|
||||
"build:zip": "node ts/scripts/zip-macos-release.js",
|
||||
"preverify:ts": "yarn build:typed-scss",
|
||||
"verify": "run-p --print-label verify:*",
|
||||
"verify:ts": "tsc --noEmit",
|
||||
|
@ -264,14 +268,6 @@
|
|||
"eslint-plugin-more": "1.0.0",
|
||||
"eslint-plugin-react": "7.20.6",
|
||||
"file-loader": "4.2.0",
|
||||
"grunt": "1.4.1",
|
||||
"grunt-cli": "1.4.3",
|
||||
"grunt-contrib-concat": "2.0.0",
|
||||
"grunt-contrib-copy": "1.0.0",
|
||||
"grunt-contrib-watch": "1.1.0",
|
||||
"grunt-exec": "3.0.0",
|
||||
"grunt-gitinfo": "0.1.9",
|
||||
"grunt-sass": "3.1.0",
|
||||
"html-webpack-plugin": "5.3.1",
|
||||
"mocha": "9.1.3",
|
||||
"mocha-testcheck": "1.0.0-rc.0",
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
module.exports = {
|
||||
rules: {
|
||||
'no-console': 'off',
|
||||
|
||||
// We still get the value of this rule, it just allows for dev deps
|
||||
'import/no-extraneous-dependencies': [
|
||||
'error',
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const { flipFuses, FuseVersion, FuseV1Options } = require('@electron/fuses');
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright 2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const { join } = require('path');
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const path = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const fs = require('fs');
|
||||
const _ = require('lodash');
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
// Copyright 2018-2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const fs = require('fs');
|
||||
const _ = require('lodash');
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
// Copyright 2018-2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
const fs = require('fs');
|
||||
const _ = require('lodash');
|
||||
|
||||
|
|
16
ts/scripts/.eslintrc.js
Normal file
16
ts/scripts/.eslintrc.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
'no-console': 'off',
|
||||
|
||||
// We still get the value of this rule, it just allows for dev deps
|
||||
'import/no-extraneous-dependencies': [
|
||||
'error',
|
||||
{
|
||||
devDependencies: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
54
ts/scripts/copy-and-concat.ts
Normal file
54
ts/scripts/copy-and-concat.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { basename, join } from 'path';
|
||||
import { copyFileSync, readFileSync, writeFileSync } from 'fs';
|
||||
|
||||
// Concat
|
||||
|
||||
console.log('Concatenating...');
|
||||
|
||||
const BASE_BOWER = join(__dirname, '../../components');
|
||||
const BASE_NODE = join(__dirname, '../../node_modules');
|
||||
const CONCAT_TARGET = join(__dirname, '../../js/components.js');
|
||||
const CONCAT_SOURCES = [
|
||||
join(BASE_NODE, 'jquery/dist/jquery.js'),
|
||||
join(BASE_NODE, 'mustache/mustache.js'),
|
||||
join(BASE_NODE, 'underscore/underscore.js'),
|
||||
join(BASE_BOWER, 'qrcode/qrcode.js'),
|
||||
join(BASE_BOWER, 'webaudiorecorder/lib/WebAudioRecorder.js'),
|
||||
];
|
||||
|
||||
let concat = '// concatenated components.js';
|
||||
CONCAT_SOURCES.forEach(source => {
|
||||
const contents = readFileSync(source, 'utf8');
|
||||
const name = basename(source);
|
||||
|
||||
console.log(`Concatenating ${source}`);
|
||||
concat += `\n\n// ${name}\n${contents}`;
|
||||
});
|
||||
|
||||
console.log(`Writing to ${CONCAT_TARGET}`);
|
||||
writeFileSync(CONCAT_TARGET, concat);
|
||||
|
||||
// Copy
|
||||
|
||||
console.log();
|
||||
console.log('Copying...');
|
||||
|
||||
const BASE_JS = join(__dirname, '../../js');
|
||||
const COPY_SOURCES = [
|
||||
{
|
||||
src: join(BASE_BOWER, 'mp3lameencoder/lib/Mp3LameEncoder.js'),
|
||||
dest: join(BASE_JS, 'Mp3LameEncoder.min.js'),
|
||||
},
|
||||
{
|
||||
src: join(BASE_BOWER, 'webaudiorecorder/lib/WebAudioRecorderMp3.js'),
|
||||
dest: join(BASE_JS, 'WebAudioRecorderMp3.js'),
|
||||
},
|
||||
];
|
||||
|
||||
for (const { src, dest } of COPY_SOURCES) {
|
||||
console.log(`Copying ${src} to ${dest}`);
|
||||
copyFileSync(src, dest);
|
||||
}
|
26
ts/scripts/get-expire-time.ts
Normal file
26
ts/scripts/get-expire-time.ts
Normal file
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { join } from 'path';
|
||||
import { execSync } from 'child_process';
|
||||
import { writeFileSync } from 'fs';
|
||||
|
||||
import { DAY } from '../util/durations';
|
||||
|
||||
const unixTimestamp = parseInt(
|
||||
execSync('git show -s --format=%ct').toString('utf8'),
|
||||
10
|
||||
);
|
||||
const buildCreation = unixTimestamp * 1000;
|
||||
|
||||
const buildExpiration = buildCreation + DAY * 90;
|
||||
|
||||
const localProductionPath = join(
|
||||
__dirname,
|
||||
'../../config/local-production.json'
|
||||
);
|
||||
const localProductionConfig = { buildCreation, buildExpiration };
|
||||
writeFileSync(
|
||||
localProductionPath,
|
||||
`${JSON.stringify(localProductionConfig)}\n`
|
||||
);
|
53
ts/scripts/get-strings.ts
Normal file
53
ts/scripts/get-strings.ts
Normal file
|
@ -0,0 +1,53 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { join, resolve } from 'path';
|
||||
import { existsSync, readdirSync, writeFileSync } from 'fs';
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
import { readJsonSync } from 'fs-extra';
|
||||
import type { LocaleMessagesType } from '../types/I18N';
|
||||
|
||||
console.log('Getting latest strings!');
|
||||
|
||||
console.log();
|
||||
console.log('Getting strings, allow for new ones over 80% translated');
|
||||
execSync('tx pull --all --use-git-timestamps --minimum-perc=80', {
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
});
|
||||
|
||||
console.log();
|
||||
console.log('Getting strings, updating everything previously missed');
|
||||
execSync('tx pull --use-git-timestamps', {
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
});
|
||||
|
||||
const BASE_DIR = join(__dirname, '../../_locales');
|
||||
const en: LocaleMessagesType = readJsonSync(
|
||||
join(BASE_DIR, '/en/messages.json')
|
||||
);
|
||||
const locales = readdirSync(join(BASE_DIR, ''));
|
||||
|
||||
console.log();
|
||||
console.log('Re-adding placeholders to non-en locales');
|
||||
locales.forEach((locale: string) => {
|
||||
if (locale === 'en') {
|
||||
return;
|
||||
}
|
||||
const target = resolve(join(BASE_DIR, locale, 'messages.json'));
|
||||
if (!existsSync(target)) {
|
||||
throw new Error(`File not found for ${locale}: ${target}`);
|
||||
}
|
||||
|
||||
const messages: LocaleMessagesType = readJsonSync(target);
|
||||
Object.keys(messages).forEach(key => {
|
||||
if (!en[key]) {
|
||||
return;
|
||||
}
|
||||
|
||||
messages[key].placeholders = en[key].placeholders;
|
||||
});
|
||||
|
||||
console.log(`Writing ${target}`);
|
||||
writeFileSync(target, `${JSON.stringify(messages, null, 4)}\n`);
|
||||
});
|
|
@ -1,8 +1,6 @@
|
|||
// Copyright 2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
/* eslint-disable no-console */
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import rimraf from 'rimraf';
|
||||
|
|
|
@ -7,6 +7,12 @@ export type LocaleMessagesType = {
|
|||
[key: string]: {
|
||||
message: string;
|
||||
description?: string;
|
||||
placeholders?: {
|
||||
[name: string]: {
|
||||
content: string;
|
||||
example: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,18 +1,4 @@
|
|||
[
|
||||
{
|
||||
"rule": "jQuery-after(",
|
||||
"path": "components/indexeddb-backbonejs-adapter/backbone-indexeddb.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-13T21:24:40.667Z",
|
||||
"line": " migration.after(function () {"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-before(",
|
||||
"path": "components/indexeddb-backbonejs-adapter/backbone-indexeddb.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-13T21:24:40.667Z",
|
||||
"line": " migration.before(function () {"
|
||||
},
|
||||
{
|
||||
"rule": "eval",
|
||||
"path": "components/mp3lameencoder/lib/Mp3LameEncoder.js",
|
||||
|
@ -599,6 +585,101 @@
|
|||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-19T18:13:29.628Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertAfter(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": " if (this.tail) this.insertAfter(this.tail, node);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertBefore(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": " if (this.head) this.insertBefore(this.head, node);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertBefore(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": " q._tasks.insertBefore(nextNode, item);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": "function wrap(defer) {",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": "var setImmediate$1 = wrap(_defer);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/async/dist/async.js",
|
||||
"line": "var nextTick = wrap(_defer$1);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-$(",
|
||||
"path": "node_modules/async/dist/async.min.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertAfter(",
|
||||
"path": "node_modules/async/dist/async.min.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertBefore(",
|
||||
"path": "node_modules/async/dist/async.min.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertAfter(",
|
||||
"path": "node_modules/async/internal/DoublyLinkedList.js",
|
||||
"line": " if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertBefore(",
|
||||
"path": "node_modules/async/internal/DoublyLinkedList.js",
|
||||
"line": " if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/async/internal/setImmediate.js",
|
||||
"line": "function wrap(defer) {",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/async/internal/setImmediate.js",
|
||||
"line": "exports.default = wrap(_defer);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-insertBefore(",
|
||||
"path": "node_modules/async/priorityQueue.js",
|
||||
"line": " q._tasks.insertBefore(nextNode, item);",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-12-11T02:14:15.457Z"
|
||||
},
|
||||
{
|
||||
"rule": "DOM-innerHTML",
|
||||
"path": "node_modules/axe-core/axe.js",
|
||||
|
@ -6618,26 +6699,6 @@
|
|||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-19T21:59:32.770Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/underscore.string/dist/underscore.string.js",
|
||||
"line": "module.exports = function wrap(str, options){",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-19T18:13:29.628Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/underscore.string/dist/underscore.string.min.js",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2021-05-06T21:37:22.288Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-wrap(",
|
||||
"path": "node_modules/underscore.string/wrap.js",
|
||||
"line": "module.exports = function wrap(str, options){",
|
||||
"reasonCategory": "falseMatch",
|
||||
"updated": "2018-09-19T18:13:29.628Z"
|
||||
},
|
||||
{
|
||||
"rule": "jQuery-after(",
|
||||
"path": "node_modules/underscore/amd/after.js",
|
||||
|
|
|
@ -38,7 +38,6 @@ const FILES_TO_IGNORE = new Set(
|
|||
[
|
||||
'.github/ISSUE_TEMPLATE/bug_report.md',
|
||||
'.github/PULL_REQUEST_TEMPLATE.md',
|
||||
'components/indexeddb-backbonejs-adapter/backbone-indexeddb.js',
|
||||
'components/mp3lameencoder/lib/Mp3LameEncoder.js',
|
||||
'components/qrcode/qrcode.js',
|
||||
'components/recorderjs/recorder.js',
|
||||
|
|
|
@ -170,14 +170,6 @@ const excludedFilesRegexp = RegExp(
|
|||
'^node_modules/gauge/.+',
|
||||
'^node_modules/global-agent/.+',
|
||||
'^node_modules/globule/.+',
|
||||
'^node_modules/grunt-cli/.+',
|
||||
'^node_modules/grunt-contrib-concat/.+',
|
||||
'^node_modules/grunt-contrib-watch/.+',
|
||||
'^node_modules/grunt-gitinfo/.+',
|
||||
'^node_modules/grunt-legacy-log-utils/.+',
|
||||
'^node_modules/grunt-legacy-log/.+',
|
||||
'^node_modules/grunt-legacy-util/.+',
|
||||
'^node_modules/grunt/.+',
|
||||
'^node_modules/handle-thing/.+',
|
||||
'^node_modules/handlebars/.+', // Used by nyc#istanbul-reports
|
||||
'^node_modules/har-validator/.+',
|
||||
|
|
548
yarn.lock
548
yarn.lock
|
@ -3862,11 +3862,6 @@ arr-union@^3.1.0:
|
|||
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
||||
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
||||
|
||||
array-each@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
|
||||
integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8=
|
||||
|
||||
array-filter@~0.0.0:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
|
||||
|
@ -3923,11 +3918,6 @@ array-reduce@~0.0.0:
|
|||
resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
|
||||
integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
|
||||
|
||||
array-slice@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"
|
||||
integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==
|
||||
|
||||
array-union@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
|
||||
|
@ -4127,7 +4117,7 @@ async-limiter@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||
|
||||
async@0.9.x, async@~0.9.0:
|
||||
async@0.9.x:
|
||||
version "0.9.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||
|
||||
|
@ -4137,18 +4127,13 @@ async@^2.1.4:
|
|||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
async@^2.6.0, async@^2.6.2:
|
||||
async@^2.6.2:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
|
||||
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
|
||||
dependencies:
|
||||
lodash "^4.17.14"
|
||||
|
||||
async@~3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
|
||||
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
|
@ -4746,16 +4731,6 @@ body-parser@1.19.0:
|
|||
raw-body "2.4.0"
|
||||
type-is "~1.6.17"
|
||||
|
||||
body@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069"
|
||||
integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=
|
||||
dependencies:
|
||||
continuable-cache "^0.3.1"
|
||||
error "^7.0.0"
|
||||
raw-body "~1.1.0"
|
||||
safe-json-parse "~1.0.1"
|
||||
|
||||
bonjour@^3.5.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
||||
|
@ -5036,11 +5011,6 @@ builtin-status-codes@^3.0.0:
|
|||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
|
||||
bytes@1:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
|
||||
integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=
|
||||
|
||||
bytes@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
|
@ -5288,7 +5258,7 @@ chalk@^4.0.0, chalk@^4.1.0:
|
|||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@^4.1.1, chalk@^4.1.2:
|
||||
chalk@^4.1.1:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||
|
@ -5296,14 +5266,6 @@ chalk@^4.1.1, chalk@^4.1.2:
|
|||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@~4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
|
||||
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
change-emitter@^0.1.2:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
|
||||
|
@ -5681,10 +5643,6 @@ colors@^1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
|
||||
integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
|
||||
|
||||
colors@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
|
||||
|
||||
combined-stream@1.0.6, combined-stream@~1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
|
||||
|
@ -5866,11 +5824,6 @@ content-type@~1.0.4:
|
|||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
|
||||
continuable-cache@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f"
|
||||
integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=
|
||||
|
||||
convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
|
||||
|
@ -6271,11 +6224,6 @@ date-now@^0.1.4:
|
|||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
|
||||
|
||||
dateformat@~3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
|
||||
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
|
||||
|
||||
debug-log@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
|
||||
|
@ -6512,11 +6460,6 @@ destroy@~1.0.4:
|
|||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
||||
|
||||
detect-file@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
|
||||
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
|
||||
|
||||
detect-indent@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
|
||||
|
@ -7079,13 +7022,6 @@ error-ex@^1.3.1:
|
|||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
error@^7.0.0:
|
||||
version "7.2.1"
|
||||
resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894"
|
||||
integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==
|
||||
dependencies:
|
||||
string-template "~0.2.1"
|
||||
|
||||
es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.9.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
|
||||
|
@ -7661,10 +7597,6 @@ event-target-shim@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
|
||||
|
||||
eventemitter2@~0.4.13:
|
||||
version "0.4.14"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab"
|
||||
|
||||
eventemitter3@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
|
||||
|
@ -7772,11 +7704,6 @@ execa@^5.0.0:
|
|||
signal-exit "^3.0.3"
|
||||
strip-final-newline "^2.0.0"
|
||||
|
||||
exit@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
|
||||
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
|
||||
|
||||
expand-brackets@^0.1.4:
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
|
||||
|
@ -7806,13 +7733,6 @@ expand-template@^2.0.3:
|
|||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
|
||||
integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
|
||||
dependencies:
|
||||
homedir-polyfill "^1.0.1"
|
||||
|
||||
express@^4.17.0, express@^4.17.1:
|
||||
version "4.17.1"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
||||
|
@ -8039,12 +7959,6 @@ faye-websocket@^0.11.3, faye-websocket@~0.11.1:
|
|||
dependencies:
|
||||
websocket-driver ">=0.5.1"
|
||||
|
||||
faye-websocket@~0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
|
||||
dependencies:
|
||||
websocket-driver ">=0.5.1"
|
||||
|
||||
fbjs@^0.8.0, fbjs@^0.8.1:
|
||||
version "0.8.17"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
|
||||
|
@ -8120,10 +8034,6 @@ file-selector@^0.1.11:
|
|||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
file-sync-cmp@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"
|
||||
|
||||
file-system-cache@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.0.5.tgz#84259b36a2bbb8d3d6eb1021d3132ffe64cfff4f"
|
||||
|
@ -8272,43 +8182,11 @@ find-yarn-workspace-root@^2.0.0:
|
|||
dependencies:
|
||||
micromatch "^4.0.2"
|
||||
|
||||
findup-sync@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0"
|
||||
integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==
|
||||
dependencies:
|
||||
detect-file "^1.0.0"
|
||||
is-glob "^4.0.0"
|
||||
micromatch "^4.0.2"
|
||||
resolve-dir "^1.0.1"
|
||||
|
||||
findup-sync@~0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16"
|
||||
dependencies:
|
||||
glob "~5.0.0"
|
||||
|
||||
fined@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b"
|
||||
integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==
|
||||
dependencies:
|
||||
expand-tilde "^2.0.2"
|
||||
is-plain-object "^2.0.3"
|
||||
object.defaults "^1.1.0"
|
||||
object.pick "^1.2.0"
|
||||
parse-filepath "^1.0.1"
|
||||
|
||||
firstline@1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.2.1.tgz#b88673c42009f8821fac2926e99720acee924fae"
|
||||
integrity sha1-uIZzxCAJ+IIfrCkm6ZcgrO6ST64=
|
||||
|
||||
flagged-respawn@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41"
|
||||
integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==
|
||||
|
||||
flat-cache@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
|
||||
|
@ -8381,13 +8259,6 @@ for-own@^0.1.3, for-own@^0.1.4:
|
|||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
for-own@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
|
||||
integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
|
||||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
foreach@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
@ -8638,13 +8509,6 @@ gaze@^1.0.0:
|
|||
dependencies:
|
||||
globule "^1.0.0"
|
||||
|
||||
gaze@^1.1.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
|
||||
integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
|
||||
dependencies:
|
||||
globule "^1.0.0"
|
||||
|
||||
gensync@^1.0.0-beta.2:
|
||||
version "1.0.0-beta.2"
|
||||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
||||
|
@ -8740,15 +8604,6 @@ get-value@^2.0.3, get-value@^2.0.6:
|
|||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
|
||||
getobject@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c"
|
||||
|
||||
getobject@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/getobject/-/getobject-1.0.0.tgz#27eeb6394716cfb6adcef275a33c2752df9ca49a"
|
||||
integrity sha512-tbUz6AKKKr2YiMB+fLWIgq5ZeBOobop9YMMAU9dC54/ot2ksMXt3DOFyBuhZw6ptcVszEykgByK20j7W9jHFag==
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
|
@ -8805,7 +8660,7 @@ glob-to-regexp@^0.4.1:
|
|||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
|
||||
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
|
||||
|
||||
glob@7.1.6, glob@^7.1.3, glob@^7.1.6, glob@~7.1.6:
|
||||
glob@7.1.6, glob@^7.1.3, glob@^7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
|
@ -8874,16 +8729,6 @@ glob@^7.1.4:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@~5.0.0:
|
||||
version "5.0.15"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
|
||||
dependencies:
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "2 || 3"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-agent@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
|
||||
|
@ -8910,26 +8755,6 @@ global-modules@2.0.0:
|
|||
dependencies:
|
||||
global-prefix "^3.0.0"
|
||||
|
||||
global-modules@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
|
||||
integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
|
||||
dependencies:
|
||||
global-prefix "^1.0.1"
|
||||
is-windows "^1.0.1"
|
||||
resolve-dir "^1.0.0"
|
||||
|
||||
global-prefix@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
|
||||
integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
|
||||
dependencies:
|
||||
expand-tilde "^2.0.2"
|
||||
homedir-polyfill "^1.0.1"
|
||||
ini "^1.3.4"
|
||||
is-windows "^1.0.1"
|
||||
which "^1.2.14"
|
||||
|
||||
global-prefix@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
|
||||
|
@ -9102,135 +8927,6 @@ growl@1.10.5:
|
|||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
|
||||
|
||||
grunt-cli@1.4.3:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.4.3.tgz#22c9f1a3d2780bf9b0d206e832e40f8f499175ff"
|
||||
integrity sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==
|
||||
dependencies:
|
||||
grunt-known-options "~2.0.0"
|
||||
interpret "~1.1.0"
|
||||
liftup "~3.0.1"
|
||||
nopt "~4.0.1"
|
||||
v8flags "~3.2.0"
|
||||
|
||||
grunt-cli@~1.4.2:
|
||||
version "1.4.2"
|
||||
resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.4.2.tgz#8a83dcc89ebd92d278ccd6014105011cffc71165"
|
||||
integrity sha512-wsu6BZh7KCnfeaSkDrKIAvOlqGKxNRTZjc8xfZlvxCByQIqUfZ31kh5uHpPnhQ4NdVgvaWaVxa1LUbVU80nACw==
|
||||
dependencies:
|
||||
grunt-known-options "~1.1.1"
|
||||
interpret "~1.1.0"
|
||||
liftup "~3.0.1"
|
||||
nopt "~4.0.1"
|
||||
v8flags "~3.2.0"
|
||||
|
||||
grunt-contrib-concat@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-contrib-concat/-/grunt-contrib-concat-2.0.0.tgz#3af65e4663186abce6052a6bed345b53c0551090"
|
||||
integrity sha512-/cfWwsGiprVTOl7c2bZwMdQ8hIf3e1f4szm1i7qhY9hOnR/X2KL+Xe7dynNweTYHa6aWPZx2B5GPsUpxAXNCaA==
|
||||
dependencies:
|
||||
chalk "^4.1.2"
|
||||
source-map "^0.5.3"
|
||||
|
||||
grunt-contrib-copy@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573"
|
||||
integrity sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=
|
||||
dependencies:
|
||||
chalk "^1.1.1"
|
||||
file-sync-cmp "^0.1.0"
|
||||
|
||||
grunt-contrib-watch@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4"
|
||||
integrity sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==
|
||||
dependencies:
|
||||
async "^2.6.0"
|
||||
gaze "^1.1.0"
|
||||
lodash "^4.17.10"
|
||||
tiny-lr "^1.1.1"
|
||||
|
||||
grunt-exec@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-exec/-/grunt-exec-3.0.0.tgz#881f868d64098788fddaf22fa25d8572a9d64dc7"
|
||||
integrity sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==
|
||||
|
||||
grunt-gitinfo@0.1.9:
|
||||
version "0.1.9"
|
||||
resolved "https://registry.yarnpkg.com/grunt-gitinfo/-/grunt-gitinfo-0.1.9.tgz#299601084e5638cff0e3e4d36093beb5cec9b9ba"
|
||||
integrity sha512-nAyUZQrLkgHZuqepTgkA3jn9CX4kyrNcWzjENxo/nOwYjZPEWDJeaxWcYrAzB5OcBk5gYJmTA0r3XCgczxtbPg==
|
||||
dependencies:
|
||||
async "~0.9.0"
|
||||
getobject "~0.1.0"
|
||||
lodash "^4.17.14"
|
||||
|
||||
grunt-known-options@~1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d"
|
||||
integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==
|
||||
|
||||
grunt-known-options@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-2.0.0.tgz#cac641e897f9a0a680b8c9839803d35f3325103c"
|
||||
integrity sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==
|
||||
|
||||
grunt-legacy-log-utils@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz#49a8c7dc74051476dcc116c32faf9db8646856ef"
|
||||
integrity sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==
|
||||
dependencies:
|
||||
chalk "~4.1.0"
|
||||
lodash "~4.17.19"
|
||||
|
||||
grunt-legacy-log@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz#1c6eaf92371ea415af31ea84ce50d434ef6d39c4"
|
||||
integrity sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==
|
||||
dependencies:
|
||||
colors "~1.1.2"
|
||||
grunt-legacy-log-utils "~2.1.0"
|
||||
hooker "~0.2.3"
|
||||
lodash "~4.17.19"
|
||||
|
||||
grunt-legacy-util@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz#0f929d13a2faf9988c9917c82bff609e2d9ba255"
|
||||
integrity sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==
|
||||
dependencies:
|
||||
async "~3.2.0"
|
||||
exit "~0.1.2"
|
||||
getobject "~1.0.0"
|
||||
hooker "~0.2.3"
|
||||
lodash "~4.17.21"
|
||||
underscore.string "~3.3.5"
|
||||
which "~2.0.2"
|
||||
|
||||
grunt-sass@3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/grunt-sass/-/grunt-sass-3.1.0.tgz#a5936cc2a80ec08092d9f31c101dc307d1e4f71c"
|
||||
integrity sha512-90s27H7FoCDcA8C8+R0GwC+ntYD3lG6S/jqcavWm3bn9RiJTmSfOvfbFa1PXx4NbBWuiGQMLfQTj/JvvqT5w6A==
|
||||
|
||||
grunt@1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.4.1.tgz#7d1e17db1f9c8108777f7273d6b9359755576f50"
|
||||
integrity sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==
|
||||
dependencies:
|
||||
dateformat "~3.0.3"
|
||||
eventemitter2 "~0.4.13"
|
||||
exit "~0.1.2"
|
||||
findup-sync "~0.3.0"
|
||||
glob "~7.1.6"
|
||||
grunt-cli "~1.4.2"
|
||||
grunt-known-options "~2.0.0"
|
||||
grunt-legacy-log "~3.0.0"
|
||||
grunt-legacy-util "~2.0.1"
|
||||
iconv-lite "~0.4.13"
|
||||
js-yaml "~3.14.0"
|
||||
minimatch "~3.0.4"
|
||||
mkdirp "~1.0.4"
|
||||
nopt "~3.0.6"
|
||||
rimraf "~3.0.2"
|
||||
|
||||
gud@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
|
||||
|
@ -9477,17 +9173,6 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
|
|||
dependencies:
|
||||
react-is "^16.7.0"
|
||||
|
||||
homedir-polyfill@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
|
||||
integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
|
||||
dependencies:
|
||||
parse-passwd "^1.0.0"
|
||||
|
||||
hooker@~0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
|
||||
|
||||
hosted-git-info@^2.1.4:
|
||||
version "2.8.9"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
|
||||
|
@ -9748,10 +9433,6 @@ iconv-lite@^0.6.2:
|
|||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
iconv-lite@~0.4.13:
|
||||
version "0.4.13"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
|
||||
|
||||
icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
|
||||
|
@ -9987,11 +9668,6 @@ interpret@^2.2.0:
|
|||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
|
||||
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
|
||||
|
||||
interpret@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
|
||||
integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
|
||||
|
||||
intl-tel-input@17.0.13:
|
||||
version "17.0.13"
|
||||
resolved "https://registry.yarnpkg.com/intl-tel-input/-/intl-tel-input-17.0.13.tgz#74a51db3b44f47ae8264df7d101a0810e53c77a6"
|
||||
|
@ -10043,14 +9719,6 @@ is-absolute-url@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
|
||||
integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
|
||||
|
||||
is-absolute@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
|
||||
integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
|
||||
dependencies:
|
||||
is-relative "^1.0.0"
|
||||
is-windows "^1.0.1"
|
||||
|
||||
is-accessor-descriptor@^0.1.6:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
||||
|
@ -10471,13 +10139,6 @@ is-regex@^1.1.4:
|
|||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-relative@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
|
||||
integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
|
||||
dependencies:
|
||||
is-unc-path "^1.0.0"
|
||||
|
||||
is-root@2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
|
||||
|
@ -10532,13 +10193,6 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
|
||||
is-unc-path@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
|
||||
integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
|
||||
dependencies:
|
||||
unc-path-regex "^0.1.2"
|
||||
|
||||
is-unicode-supported@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||
|
@ -10560,7 +10214,7 @@ is-window@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
|
||||
integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0=
|
||||
|
||||
is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
|
||||
is-windows@^1.0.0, is-windows@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
|
||||
|
@ -10748,14 +10402,6 @@ js-yaml@^3.2.7:
|
|||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
js-yaml@~3.14.0:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
|
@ -11060,20 +10706,6 @@ libheif-js@^1.10.0:
|
|||
resolved "https://registry.yarnpkg.com/libheif-js/-/libheif-js-1.12.0.tgz#9ad1ed16a8e6412b4d3d83565d285465a00e7305"
|
||||
integrity sha512-hDs6xQ7028VOwAFwEtM0Q+B2x2NW69Jb2MhQFUbk3rUrHzz4qo5mqS8VrqNgYnSc8TiUGnR691LnO4uIfEE23w==
|
||||
|
||||
liftup@~3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/liftup/-/liftup-3.0.1.tgz#1cb81aff0f368464ed3a5f1a7286372d6b1a60ce"
|
||||
integrity sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==
|
||||
dependencies:
|
||||
extend "^3.0.2"
|
||||
findup-sync "^4.0.0"
|
||||
fined "^1.2.0"
|
||||
flagged-respawn "^1.0.1"
|
||||
is-plain-object "^2.0.4"
|
||||
object.map "^1.0.1"
|
||||
rechoir "^0.7.0"
|
||||
resolve "^1.19.0"
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||
|
@ -11086,11 +10718,6 @@ linkify-it@2.2.0:
|
|||
dependencies:
|
||||
uc.micro "^1.0.1"
|
||||
|
||||
livereload-js@^2.3.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c"
|
||||
integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==
|
||||
|
||||
load-json-file@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
||||
|
@ -11201,7 +10828,7 @@ lodash.throttle@^4.1.1:
|
|||
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
|
||||
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
|
||||
|
||||
lodash@4.17.21, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1, lodash@~4.17.19, lodash@~4.17.21:
|
||||
lodash@4.17.21, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
@ -11340,13 +10967,6 @@ make-error@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
|
||||
integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
|
||||
|
||||
make-iterator@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6"
|
||||
integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==
|
||||
dependencies:
|
||||
kind-of "^6.0.2"
|
||||
|
||||
mamacro@^0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
|
||||
|
@ -11359,7 +10979,7 @@ map-age-cleaner@^0.1.1:
|
|||
dependencies:
|
||||
p-defer "^1.0.0"
|
||||
|
||||
map-cache@^0.2.0, map-cache@^0.2.2:
|
||||
map-cache@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||
|
||||
|
@ -11748,7 +11368,7 @@ minimalistic-crypto-utils@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
|
||||
"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2, minimatch@~3.0.4:
|
||||
minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
|
@ -11860,7 +11480,7 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1:
|
|||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
mkdirp@^1.0.3, mkdirp@~1.0.4:
|
||||
mkdirp@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
@ -12262,20 +11882,6 @@ nopt@~1.0.10:
|
|||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
nopt@~3.0.6:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
nopt@~4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
osenv "^0.1.4"
|
||||
|
||||
normalize-package-data@^2.3.2:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
|
||||
|
@ -12469,7 +12075,7 @@ object-copy@^0.1.0:
|
|||
define-property "^0.2.5"
|
||||
kind-of "^3.0.3"
|
||||
|
||||
object-inspect@^1.11.0:
|
||||
object-inspect@^1.11.0, object-inspect@^1.9.0:
|
||||
version "1.11.1"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b"
|
||||
integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==
|
||||
|
@ -12479,11 +12085,6 @@ object-inspect@^1.7.0, object-inspect@^1.8.0:
|
|||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
|
||||
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
|
||||
|
||||
object-inspect@^1.9.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
|
||||
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
|
||||
|
||||
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||
|
@ -12519,16 +12120,6 @@ object.assign@^4.1.2:
|
|||
has-symbols "^1.0.1"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
object.defaults@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
|
||||
integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=
|
||||
dependencies:
|
||||
array-each "^1.0.1"
|
||||
array-slice "^1.0.0"
|
||||
for-own "^1.0.0"
|
||||
isobject "^3.0.0"
|
||||
|
||||
object.entries@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519"
|
||||
|
@ -12602,14 +12193,6 @@ object.hasown@^1.1.0:
|
|||
define-properties "^1.1.3"
|
||||
es-abstract "^1.19.1"
|
||||
|
||||
object.map@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37"
|
||||
integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=
|
||||
dependencies:
|
||||
for-own "^1.0.0"
|
||||
make-iterator "^1.0.0"
|
||||
|
||||
object.omit@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
|
||||
|
@ -12617,7 +12200,7 @@ object.omit@^2.0.0:
|
|||
for-own "^0.1.4"
|
||||
is-extendable "^0.1.1"
|
||||
|
||||
object.pick@^1.2.0, object.pick@^1.3.0:
|
||||
object.pick@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
||||
dependencies:
|
||||
|
@ -13011,15 +12594,6 @@ parse-entities@^1.1.2:
|
|||
is-decimal "^1.0.0"
|
||||
is-hexadecimal "^1.0.0"
|
||||
|
||||
parse-filepath@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891"
|
||||
integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=
|
||||
dependencies:
|
||||
is-absolute "^1.0.0"
|
||||
map-cache "^0.2.0"
|
||||
path-root "^0.1.1"
|
||||
|
||||
parse-glob@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
|
||||
|
@ -13053,11 +12627,6 @@ parse-json@^5.0.0:
|
|||
json-parse-even-better-errors "^2.3.0"
|
||||
lines-and-columns "^1.1.6"
|
||||
|
||||
parse-passwd@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
||||
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
|
||||
|
||||
parseurl@~1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||
|
@ -13145,18 +12714,6 @@ path-parse@^1.0.5, path-parse@^1.0.6:
|
|||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
path-root-regex@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
|
||||
integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=
|
||||
|
||||
path-root@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
|
||||
integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=
|
||||
dependencies:
|
||||
path-root-regex "^0.1.0"
|
||||
|
||||
path-to-regexp@0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
||||
|
@ -13886,13 +13443,6 @@ qs@6.7.0:
|
|||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
|
||||
|
||||
qs@^6.4.0:
|
||||
version "6.10.1"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a"
|
||||
integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==
|
||||
dependencies:
|
||||
side-channel "^1.0.4"
|
||||
|
||||
qs@^6.6.0:
|
||||
version "6.8.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081"
|
||||
|
@ -14041,14 +13591,6 @@ raw-body@^2.2.0:
|
|||
iconv-lite "0.4.19"
|
||||
unpipe "1.0.0"
|
||||
|
||||
raw-body@~1.1.0:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425"
|
||||
integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=
|
||||
dependencies:
|
||||
bytes "1"
|
||||
string_decoder "0.10"
|
||||
|
||||
raw-loader@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-2.0.0.tgz#e2813d9e1e3f80d1bbade5ad082e809679e20c26"
|
||||
|
@ -15019,14 +14561,6 @@ resolve-cwd@^3.0.0:
|
|||
dependencies:
|
||||
resolve-from "^5.0.0"
|
||||
|
||||
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
|
||||
integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
|
||||
dependencies:
|
||||
expand-tilde "^2.0.0"
|
||||
global-modules "^1.0.0"
|
||||
|
||||
resolve-from@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
|
||||
|
@ -15075,7 +14609,7 @@ resolve@^1.13.1, resolve@^1.17.0:
|
|||
dependencies:
|
||||
path-parse "^1.0.6"
|
||||
|
||||
resolve@^1.19.0, resolve@^1.20.0, resolve@^1.9.0:
|
||||
resolve@^1.20.0, resolve@^1.9.0:
|
||||
version "1.20.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
|
||||
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
|
||||
|
@ -15160,7 +14694,7 @@ rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
|
|||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^3.0.0, rimraf@^3.0.2, rimraf@~3.0.2:
|
||||
rimraf@^3.0.0, rimraf@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
|
||||
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
|
||||
|
@ -15234,11 +14768,6 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1,
|
|||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
safe-json-parse@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57"
|
||||
integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=
|
||||
|
||||
safe-regex@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||
|
@ -15962,7 +15491,7 @@ split2@4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/split2/-/split2-4.0.0.tgz#c76cb53ad55040ddff3a9c3b73fc88a4690f047c"
|
||||
integrity sha512-gjmavJzvQCAZzaEHWoJBOwqIUAiEvUOlguQ6uO0+0LTS1tlLa2YetTLWCrm049ouvLOa1l6SOGm3XaiRiCg9SQ==
|
||||
|
||||
sprintf-js@^1.0.3, sprintf-js@^1.1.2:
|
||||
sprintf-js@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
||||
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
|
||||
|
@ -16069,11 +15598,6 @@ strict-uri-encode@^1.0.0:
|
|||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||
|
||||
string-template@~0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
|
||||
integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=
|
||||
|
||||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
|
@ -16210,10 +15734,6 @@ string.prototype.trimstart@^1.0.4:
|
|||
call-bind "^1.0.2"
|
||||
define-properties "^1.1.3"
|
||||
|
||||
string_decoder@0.10, string_decoder@~0.10.x:
|
||||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
|
||||
string_decoder@^1.0.0, string_decoder@~1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
||||
|
@ -16228,6 +15748,10 @@ string_decoder@^1.1.1:
|
|||
dependencies:
|
||||
safe-buffer "~5.2.0"
|
||||
|
||||
string_decoder@~0.10.x:
|
||||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
|
||||
strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
|
||||
|
@ -16633,18 +16157,6 @@ tiny-invariant@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73"
|
||||
integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==
|
||||
|
||||
tiny-lr@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab"
|
||||
integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==
|
||||
dependencies:
|
||||
body "^5.1.0"
|
||||
debug "^3.1.0"
|
||||
faye-websocket "~0.10.0"
|
||||
livereload-js "^2.3.0"
|
||||
object-assign "^4.1.0"
|
||||
qs "^6.4.0"
|
||||
|
||||
tiny-warning@^1.0.0, tiny-warning@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
|
||||
|
@ -17009,19 +16521,6 @@ unbox-primitive@^1.0.1:
|
|||
has-symbols "^1.0.2"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
unc-path-regex@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
|
||||
integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
|
||||
|
||||
underscore.string@~3.3.5:
|
||||
version "3.3.5"
|
||||
resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023"
|
||||
integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==
|
||||
dependencies:
|
||||
sprintf-js "^1.0.3"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
underscore@1.12.1, underscore@>=1.8.3:
|
||||
version "1.12.1"
|
||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e"
|
||||
|
@ -17264,13 +16763,6 @@ v8-compile-cache@^2.2.0:
|
|||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
|
||||
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
|
||||
|
||||
v8flags@~3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656"
|
||||
integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==
|
||||
dependencies:
|
||||
homedir-polyfill "^1.0.1"
|
||||
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
|
||||
|
@ -17587,14 +17079,14 @@ which-module@^2.0.0:
|
|||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
|
||||
which@2.0.2, which@^2.0.1, which@^2.0.2, which@~2.0.2:
|
||||
which@2.0.2, which@^2.0.1, which@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
which@^1.2.14, which@^1.2.9, which@^1.3.1:
|
||||
which@^1.2.9, which@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||
|
|
Loading…
Reference in a new issue