Move from yarn to npm

This commit is contained in:
Fedor Indutny 2024-06-24 13:14:32 -07:00 committed by GitHub
parent 59b27974f0
commit 2478bf1bd3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 53620 additions and 26702 deletions

View file

@ -17,7 +17,7 @@ Remember, you can preview this before saving it.
- [ ] My contribution is **not** related to translations.
- [ ] My commits are in nice logical chunks with [good commit messages](http://chris.beams.io/posts/git-commit/)
- [ ] My changes are [rebased](https://medium.com/free-code-camp/git-rebase-and-the-golden-rule-explained-70715eccc372) on the latest [`main`](https://github.com/signalapp/Signal-Desktop/tree/main) branch
- [ ] A `yarn ready` run passes successfully ([more about tests here](https://github.com/signalapp/Signal-Desktop/blob/main/CONTRIBUTING.md#tests))
- [ ] A `npm run ready` run passes successfully ([more about tests here](https://github.com/signalapp/Signal-Desktop/blob/main/CONTRIBUTING.md#tests))
- [ ] My changes are ready to be shipped to users
### Description

View file

@ -32,7 +32,7 @@ jobs:
with:
node-version: '20.11.1'
- name: Install global dependencies
run: npm install -g yarn@1.22.10 npm@10.2.5
run: npm install -g npm@10.2.5
- name: Install xvfb
run: sudo apt-get install xvfb
@ -42,18 +42,18 @@ jobs:
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
NPM_CONFIG_LOGLEVEL: verbose
- name: Build typescript
run: yarn generate
run: npm run generate
- name: Bundle
run: yarn build:esbuild:prod
run: npm run build:esbuild:prod
- name: Run startup benchmarks
run: |
@ -145,7 +145,7 @@ jobs:
- name: Build benchmark repo
working-directory: benchmark-results
run: |
npm ci
npm ci --legacy-peer-deps
npm run build
- name: Publish to DataDog

View file

@ -22,14 +22,14 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '20.11.1'
- run: npm install -g yarn@1.22.10 npm@10.2.5
- run: npm install -g npm@10.2.5
- name: Cache Desktop node_modules
id: cache-desktop-modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Restore cached .eslintcache and tsconfig.tsbuildinfo
uses: actions/cache/restore@v3
@ -38,21 +38,21 @@ jobs:
path: |
.eslintcache
tsconfig.tsbuildinfo
key: lint-${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**', '.eslintrc.js', '.eslint/**', 'tsconfig.json') }}
key: lint-${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**', '.eslintrc.js', '.eslint/**', 'tsconfig.json') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
NPM_CONFIG_LOGLEVEL: verbose
- run: yarn generate
- run: yarn lint
- run: yarn lint-deps
- run: yarn lint-license-comments
- run: npm run generate
- run: npm run lint
- run: npm run lint-deps
- run: npm run lint-license-comments
- name: Check acknowledgments file is up to date
run: yarn build:acknowledgments
run: npm run build:acknowledgments
env:
REQUIRE_SIGNAL_LIB_FILES: 1
@ -79,39 +79,39 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '20.11.1'
- run: npm install -g yarn@1.22.10 npm@10.2.5
- run: npm install -g npm@10.2.5
- name: Cache Desktop node_modules
id: cache-desktop-modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
NPM_CONFIG_LOGLEVEL: verbose
- run: yarn generate
- run: yarn prepare-beta-build
- run: yarn test-node
- run: yarn test-electron
- run: npm run generate
- run: npm run prepare-beta-build
- run: npm run test-node
- run: npm run test-electron
env:
ARTIFACTS_DIR: artifacts/macos
timeout-minutes: 5
- run: touch noop.sh && chmod +x noop.sh
- run: yarn build
- run: npm run build
env:
DISABLE_INSPECT_FUSE: on
SIGN_MACOS_SCRIPT: noop.sh
- name: Rebuild native modules for x64
run: yarn electron:install-app-deps
- run: yarn test-release
run: npm run electron:install-app-deps
- run: npm run test-release
env:
NODE_ENV: production
- run: yarn test-eslint
- run: npm run test-eslint
- name: Upload artifacts on failure
if: failure()
@ -133,45 +133,45 @@ jobs:
node-version: '20.11.1'
- run: sudo apt-get install xvfb
- run: npm install -g yarn@1.22.10 npm@10.2.5
- run: npm install -g npm@10.2.5
- name: Cache Desktop node_modules
id: cache-desktop-modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
NPM_CONFIG_LOGLEVEL: verbose
- run: yarn generate
- run: yarn prepare-beta-build
- run: npm run generate
- run: npm run prepare-beta-build
- name: Create bundle
run: yarn build:esbuild:prod
run: npm run build:esbuild:prod
- name: Build with packaging .deb file
run: yarn build:release -- --publish=never
run: npm run build:release -- --publish=never
if: github.ref == 'refs/heads/main'
env:
DISABLE_INSPECT_FUSE: on
- name: Build without packaging .deb file
run: yarn build:release --linux dir
run: npm run build:release -- --linux dir
if: github.ref != 'refs/heads/main'
env:
DISABLE_INSPECT_FUSE: on
- run: xvfb-run --auto-servernum yarn test-node
- run: xvfb-run --auto-servernum yarn test-electron
- run: xvfb-run --auto-servernum npm run test-node
- run: xvfb-run --auto-servernum npm run test-electron
timeout-minutes: 5
env:
ARTIFACTS_DIR: artifacts/linux
LANG: en_US
LANGUAGE: en_US
- run: xvfb-run --auto-servernum yarn test-release
- run: xvfb-run --auto-servernum npm run test-release
env:
NODE_ENV: production
@ -198,7 +198,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '20.11.1'
- run: npm install -g yarn@1.22.10 npm@10.2.5 node-gyp@10.0.1
- run: npm install -g npm@10.2.5 node-gyp@10.0.1
# Set things up so @nodert-win10-rs4 dependencies build properly
- run: dir "$env:BUILD_LOCATION"
@ -211,40 +211,40 @@ jobs:
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
CHILD_CONCURRENCY: 1
NPM_CONFIG_LOGLEVEL: verbose
- run: yarn generate
- run: yarn test-node
- run: npm run generate
- run: npm run test-node
- run: copy package.json temp.json
- run: del package.json
- run: type temp.json | findstr /v certificateSubjectName | findstr /v certificateSha1 > package.json
- run: yarn prepare-beta-build
- run: npm run prepare-beta-build
- name: Create bundle
run: yarn build:esbuild:prod
run: npm run build:esbuild:prod
- name: Build with NSIS
run: yarn build:release
run: npm run build:release
if: github.ref == 'refs/heads/main'
env:
DISABLE_INSPECT_FUSE: on
- name: Build without NSIS
run: yarn build:release --win dir
run: npm run build:release -- --win dir
if: github.ref != 'refs/heads/main'
env:
DISABLE_INSPECT_FUSE: on
- run: yarn test-electron
- run: npm run test-electron
env:
ARTIFACTS_DIR: artifacts/windows
timeout-minutes: 5
- run: yarn test-release
- run: npm run test-release
env:
SIGNAL_ENV: production
@ -268,25 +268,24 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '18.17.1'
- run: npm install -g yarn@1.22.10
- name: Install Sticker Creator node_modules
run: yarn install
run: npm ci --legacy-peer-deps
- name: Build Sticker Creator
run: yarn build
run: npm run build
- name: Check Sticker Creator types
run: yarn check:types
run: npm run check:types
- name: Check Sticker Creator formatting
run: yarn prettier:check
run: npm run prettier:check
- name: Check Sticker Creator linting
run: yarn lint
run: npm run lint
- name: Run tests
run: yarn test --run
run: npm test -- --run
mock-tests:
needs: lint
@ -308,7 +307,7 @@ jobs:
with:
node-version: '20.11.1'
- name: Install global dependencies
run: npm install -g yarn@1.22.10 npm@10.2.5
run: npm install -g npm@10.2.5
- name: Install xvfb
run: sudo apt-get install xvfb
@ -318,23 +317,23 @@ jobs:
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile
run: npm ci --legacy-peer-deps
env:
NPM_CONFIG_LOGLEVEL: verbose
- name: Build typescript
run: yarn generate
run: npm run generate
- name: Bundle
run: yarn build:esbuild:prod
run: npm run build:esbuild:prod
- name: Run mock server tests
run: |
set -o pipefail
xvfb-run --auto-servernum yarn test-mock
xvfb-run --auto-servernum npm run test-mock
timeout-minutes: 10
env:
NODE_ENV: production

View file

@ -16,17 +16,17 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '20.11.1'
- run: npm install -g yarn@1.22.10 npm@10.2.5
- run: npm install -g npm@10.2.5
- name: Cache danger node_modules
id: cache-desktop-modules
uses: actions/cache@v3
with:
path: danger/node_modules
key: danger-${{ runner.os }}-${{ hashFiles('danger/package.json', 'danger/yarn.lock') }}
key: danger-${{ runner.os }}-${{ hashFiles('danger/package.json', 'danger/package-lock.json') }}
- name: Install danger node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: cd danger && yarn install --frozen-lockfile
run: cd danger && npm ci --legacy-peer-deps
- name: Run DangerJS
run: yarn danger:ci
run: npm run danger:ci
env:
DANGER_GITHUB_API_TOKEN: ${{ secrets.AUTOMATED_GITHUB_PAT }}

View file

@ -17,21 +17,21 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: '20.11.1'
cache: 'yarn'
cache: 'npm'
- name: Install global dependencies
run: npm install -g yarn@1.22.10 npm@10.2.5
run: npm install -g npm@10.2.5
- name: Cache Desktop node_modules
id: cache-desktop-modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }}
key: ${{ runner.os }}-${{ hashFiles('package.json', 'package-lock.json', 'patches/**') }}
- name: Install Desktop node_modules
if: steps.cache-desktop-modules.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --prefer-offline
run: npm ci --legacy-peer-deps
env:
CHILD_CONCURRENCY: 1
NPM_CONFIG_LOGLEVEL: verbose
- run: yarn build:storybook
- run: npm run build:storybook
- run: npx playwright install chromium
- run: yarn run-p --race test:storybook:serve test:storybook:test
- run: ./node_modules/.bin/run-p --race test:storybook:serve test:storybook:test

View file

@ -22,9 +22,12 @@ storybook-static
build/locale-display-names.json
build/country-display-names.json
build/compact-locales/**/*.json
release/**
# Third-party files
node_modules/**
danger/node_modules/**
sticker-creator/node_modules/**
components/**
js/curve/**
js/Mp3LameEncoder.min.js

View file

@ -7,15 +7,39 @@ Signal Desktop makes use of the following open source projects.
## @formatjs/fast-memoize
License: MIT
MIT License
Copyright (c) 2021 FormatJS
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## @formatjs/icu-messageformat-parser
License: MIT
MIT License
Copyright (c) 2021 FormatJS
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## @formatjs/intl-localematcher
License: MIT
MIT License
Copyright (c) 2021 FormatJS
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## @indutny/sneequals
@ -435,7 +459,26 @@ Signal Desktop makes use of the following open source projects.
## @popperjs/core
License: MIT
The MIT License (MIT)
Copyright (c) 2019 Federico Zivolo
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## @react-aria/utils
@ -1017,7 +1060,27 @@ Signal Desktop makes use of the following open source projects.
## changedpi
License: MIT
The MIT License (MIT)
=====================
Copyright (c) `2018` `Shutterstock, Inc.`
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## cirbuf
@ -2378,7 +2441,37 @@ Signal Desktop makes use of the following open source projects.
## node-fetch
License: MIT
The MIT License (MIT)
Copyright (c) 2016 David Frank
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## nop
Copyright (c) 2012 Ian Hansen (//github.com/supershabam)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## normalize-path
@ -3068,7 +3161,27 @@ Signal Desktop makes use of the following open source projects.
## react-contextmenu
License: MIT
The MIT License (MIT)
Copyright (c) 2015 Vivek Kumar Bansal
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## react-dom
@ -3120,7 +3233,33 @@ Signal Desktop makes use of the following open source projects.
## react-intl
License: BSD-3-Clause
Copyright 2019 Oath Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the Oath Inc. nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Oath INC. BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## react-popper
@ -3172,7 +3311,27 @@ Signal Desktop makes use of the following open source projects.
## react-redux
License: MIT
The MIT License (MIT)
Copyright (c) 2015-present Dan Abramov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## react-router-dom
@ -3271,7 +3430,27 @@ Signal Desktop makes use of the following open source projects.
## redux
License: MIT
The MIT License (MIT)
Copyright (c) 2015-present Dan Abramov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## redux-logger
@ -3321,7 +3500,27 @@ Signal Desktop makes use of the following open source projects.
## redux-thunk
License: MIT
The MIT License (MIT)
Copyright (c) 2015-present Dan Abramov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## redux-ts-utils
@ -3391,7 +3590,114 @@ Signal Desktop makes use of the following open source projects.
## sanitize.css
License: CC0-1.0
# CC0 1.0 Universal
## Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator and
subsequent owner(s) (each and all, an “owner”) of an original work of
authorship and/or a database (each, a “Work”).
Certain owners wish to permanently relinquish those rights to a Work for the
purpose of contributing to a commons of creative, cultural and scientific works
(“Commons”) that the public can reliably and without fear of later claims of
infringement build upon, modify, incorporate in other works, reuse and
redistribute as freely as possible in any form whatsoever and for any purposes,
including without limitation commercial purposes. These owners may contribute
to the Commons to promote the ideal of a free culture and the further
production of creative, cultural and scientific works, or to gain reputation or
greater distribution for their Work in part through the use and efforts of
others.
For these and/or other purposes and motivations, and without any expectation of
additional consideration or compensation, the person associating CC0 with a
Work (the “Affirmer”), to the extent that he or she is an owner of Copyright
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and
publicly distribute the Work under its terms, with knowledge of his or her
Copyright and Related Rights in the Work and the meaning and intended legal
effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights (“Copyright and
Related Rights”). Copyright and Related Rights include, but are not limited
to, the following:
1. the right to reproduce, adapt, distribute, perform, display, communicate,
and translate a Work;
2. moral rights retained by the original author(s) and/or performer(s);
3. publicity and privacy rights pertaining to a persons image or likeness
depicted in a Work;
4. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(i), below;
5. rights protecting the extraction, dissemination, use and reuse of data in
a Work;
6. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation thereof,
including any amended or successor version of such directive); and
7. other similar, equivalent or corresponding rights throughout the world
based on applicable law or treaty, and any national implementations
thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of,
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmers Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the “Waiver”). Affirmer
makes the Waiver for the benefit of each member of the public at large and
to the detriment of Affirmers heirs and successors, fully intending that
such Waiver shall not be subject to revocation, rescission, cancellation,
termination, or any other legal or equitable action to disrupt the quiet
enjoyment of the Work by the public as contemplated by Affirmers express
Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be
judged legally invalid or ineffective under applicable law, then the Waiver
shall be preserved to the maximum extent permitted taking into account
Affirmers express Statement of Purpose. In addition, to the extent the
Waiver is so judged Affirmer hereby grants to each affected person a
royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmers Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the “License”). The License
shall be deemed effective as of the date CC0 was applied by Affirmer to the
Work. Should any part of the License for any reason be judged legally
invalid or ineffective under applicable law, such partial invalidity or
ineffectiveness shall not invalidate the remainder of the License, and in
such case Affirmer hereby affirms that he or she will not (i) exercise any
of his or her remaining Copyright and Related Rights in the Work or (ii)
assert any associated claims and causes of action with respect to the Work,
in either case contrary to Affirmers express Statement of Purpose.
4. Limitations and Disclaimers.
1. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
2. Affirmer offers the Work as-is and makes no representations or warranties
of any kind concerning the Work, express, implied, statutory or
otherwise, including without limitation warranties of title,
merchantability, fitness for a particular purpose, non infringement, or
the absence of latent or other defects, accuracy, or the present or
absence of errors, whether or not discoverable, all to the greatest
extent permissible under applicable law.
3. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any persons Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the Work.
4. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to this
CC0 or use of the Work.
For more information, please see
http://creativecommons.org/publicdomain/zero/1.0/.
## semver
@ -3455,11 +3761,51 @@ Signal Desktop makes use of the following open source projects.
## uuid
License: MIT
The MIT License (MIT)
Copyright (c) 2010-2016 Robert Kieffer and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## uuid-browser
License: MIT
MIT License
Copyright (c) 2017 Heiko Mathes
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## websocket
@ -3642,7 +3988,11 @@ Signal Desktop makes use of the following open source projects.
## write-file-atomic
License: ISC
Copyright (c) 2015, Rebecca Turner
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
## zod

View file

@ -52,13 +52,12 @@ Install the [Xcode Command-Line Tools](http://osxdaily.com/2014/02/12/install-co
Now, run these commands in your preferred terminal in a good directory for development:
```
npm install --global yarn # Make sure you have have `yarn`
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
yarn generate # Generate final JS and CSS assets
yarn test # A good idea to make sure tests run first
yarn start # Start Signal!
npm install --legacy-peer-deps # Install and build dependencies (this will take a while)
npm run generate # Generate final JS and CSS assets
npm test # A good idea to make sure tests run first
npm start # Start Signal!
```
You'll need to restart the application regularly to see your changes, as there
@ -68,14 +67,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
youre touching. You may not see your changes until you run `yarn generate` on the
youre touching. You may not see your changes until you run `npm run 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 each of these in their own terminal
instance while you make changes - they'll run until you stop them:
```
yarn dev:transpile # recompiles when you change .ts files
yarn dev:sass # recompiles when you change .scss files
npm run dev:transpile # recompiles when you change .ts files
npm run dev:sass # recompiles when you change .scss files
```
### webpack
@ -85,7 +84,7 @@ You can run a development server for these parts of the app with the
following command:
```
yarn dev
npm run dev
```
In order for the app to make requests to the development server you must set
@ -93,7 +92,7 @@ the `SIGNAL_ENABLE_HTTP` environment variable to a truthy value. On Linux and
macOS, that simply looks like this:
```
SIGNAL_ENABLE_HTTP=1 yarn start
SIGNAL_ENABLE_HTTP=1 npm start
```
## Setting up standalone
@ -158,7 +157,7 @@ For example, to create an 'alice' profile, put a file called `local-alice.json`
Then you can start up the application a little differently to load the profile:
```
NODE_APP_INSTANCE=alice yarn run start
NODE_APP_INSTANCE=alice npm start
```
This changes the `userData` directory from `%appData%/Signal` to `%appData%/Signal-aliceProfile`.
@ -174,15 +173,15 @@ Please write tests! Our testing framework is
[mocha](http://mochajs.org/) and our assertion library is
[chai](http://chaijs.com/api/assert/).
The easiest way to run all tests at once is `yarn test`, which will run them on the
The easiest way to run all tests at once is `npm test`, which will run them on the
command line. You can run the client-side tests in an interactive session with
`NODE_ENV=test yarn run start`.
`NODE_ENV=test npm start`.
## Pull requests
So you wanna make a pull request? Please observe the following guidelines.
- First, make sure that your `yarn ready` run passes - it's very similar to what our
- First, make sure that your `npm run ready` run passes - it's very similar to what our
Continuous Integration servers do to test the app.
- Please do not submit pull requests for translation fixes.
- Never use plain strings right in the source code - pull them from `messages.json`!
@ -261,8 +260,8 @@ will go to your new development desktop app instead of your phone.
To test changes to the build system, build a release using
```
yarn generate
yarn build
npm run generate
npm run build
```
Then, run the tests using `yarn test-release`.
Then, run the tests using `npm run test-release`.

2012
danger/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

43753
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -16,11 +16,11 @@
},
"main": "app/main.js",
"scripts": {
"postinstall": "yarn build:acknowledgments && patch-package && yarn electron:install-app-deps",
"postuninstall": "yarn build:acknowledgments",
"postinstall": "npm run build:acknowledgments && patch-package && npm run electron:install-app-deps",
"postuninstall": "npm run build:acknowledgments",
"start": "electron .",
"generate": "npm-run-all build-protobuf build:esbuild build:dns-fallback build:icu-types build:compact-locales sass get-expire-time copy-components",
"build-release": "yarn run build",
"build-release": "npm run build",
"sign-release": "node ts/updater/generateSignature.js",
"notarize": "echo 'No longer necessary'",
"get-strings": "ts-node ts/scripts/get-strings.ts && ts-node ts/scripts/gen-nsis-script.ts && ts-node ts/scripts/gen-locales-config.ts && run-p get-strings:locales get-strings:countries get-strings:emoji mark-unusued-strings-deleted && run-p build:compact-locales",
@ -34,14 +34,14 @@
"sass": "sass stylesheets/manifest.scss:stylesheets/manifest.css stylesheets/manifest_bridge.scss:stylesheets/manifest_bridge.css",
"build-module-protobuf": "pbjs --target static-module --force-long --no-typeurl --no-verify --no-create --no-convert --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --no-comments --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",
"clean-protobuf": "yarn clean-module-protobuf",
"build-protobuf": "npm run build-module-protobuf",
"clean-protobuf": "npm run clean-module-protobuf",
"prepare-beta-build": "node scripts/prepare_beta_build.js",
"prepare-alpha-build": "node scripts/prepare_alpha_build.js",
"prepare-alpha-version": "node scripts/prepare_alpha_version.js",
"prepare-staging-build": "node scripts/prepare_staging_build.js",
"prepare-windows-cert": "node scripts/prepare_windows_cert.js",
"test": "yarn test-node && yarn test-electron && yarn test-lint-intl && yarn test-eslint",
"test": "run-s test-node test-electron test-lint-intl test-eslint",
"test-electron": "node ts/scripts/test-electron.js",
"test-release": "node ts/scripts/test-release.js",
"test-node": "cross-env LANG=en-us electron-mocha --timeout 10000 --file test/setup-test-node.js --recursive test/modules ts/test-node ts/test-both",
@ -63,20 +63,20 @@
"transpile": "run-p check:types build:esbuild",
"check:types": "tsc --noEmit",
"clean-transpile-once": "rimraf sticker-creator/dist app/**/*.js app/*.js ts/**/*.js ts/*.js bundles tsconfig.tsbuildinfo",
"clean-transpile": "yarn run clean-transpile-once && yarn run clean-transpile-once",
"clean-transpile": "run-s clean-transpile-once clean-transpile-once",
"open-coverage": "open coverage/lcov-report/index.html",
"ready": "npm-run-all --print-label clean-transpile generate --parallel lint lint-deps lint-intl test-node test-electron",
"dev": "yarn build-protobuf && cross-env SIGNAL_ENV=storybook storybook dev --port 6006",
"dev": "npm run build-protobuf && cross-env SIGNAL_ENV=storybook storybook dev --port 6006",
"dev:transpile": "run-p \"check:types --watch\" dev:esbuild dev:icu-types",
"dev:esbuild": "node scripts/esbuild.js --watch",
"dev:sass": "yarn sass --watch",
"dev:icu-types": "chokidar ./_locales/en/messages.json --initial --command \"yarn run build:icu-types\"",
"build:storybook": "yarn build-protobuf && cross-env SIGNAL_ENV=storybook storybook build",
"test:storybook": "yarn build:storybook && run-p --race test:storybook:*",
"dev:sass": "npm run sass --watch",
"dev:icu-types": "chokidar ./_locales/en/messages.json --initial --command \"npm run run build:icu-types\"",
"build:storybook": "npm run build-protobuf && cross-env SIGNAL_ENV=storybook storybook build",
"test:storybook": "npm run build:storybook && run-p --race test:storybook:*",
"test:storybook:serve": "http-server storybook-static --port 6006 --silent",
"test:storybook:test": "wait-on http://127.0.0.1:6006/ --timeout 5000 && test-storybook",
"build": "run-s --print-label generate build:esbuild:prod build:release",
"build-linux": "yarn generate && yarn build:esbuild:prod && yarn build:release -- --publish=never",
"build-linux": "run-s generate build:esbuild:prod && npm run build:release -- --publish=never",
"build:acknowledgments": "node scripts/generate-acknowledgments.js",
"build:dns-fallback": "node ts/scripts/generate-dns-fallback.js",
"build:icu-types": "node ts/scripts/generate-icu-types.js",
@ -85,7 +85,7 @@
"build:esbuild": "node scripts/esbuild.js",
"build:esbuild:prod": "node scripts/esbuild.js --prod",
"build:electron": "electron-builder --config.extraMetadata.environment=$SIGNAL_ENV",
"build:release": "cross-env SIGNAL_ENV=production yarn build:electron -- --config.directories.output=release",
"build:release": "cross-env SIGNAL_ENV=production npm run build:electron -- --config.directories.output=release",
"verify": "run-p --print-label verify:*",
"verify:ts": "tsc --noEmit",
"electron:install-app-deps": "electron-builder install-app-deps"
@ -150,6 +150,7 @@
"moment": "2.29.4",
"mp4box": "0.5.2",
"node-fetch": "2.6.7",
"nop": "1.0.0",
"normalize-path": "3.0.0",
"p-map": "2.1.0",
"p-props": "4.0.0",
@ -344,16 +345,18 @@
"webpack-cli": "4.9.2",
"webpack-dev-server": "4.11.1"
},
"resolutions": {
"@mixer/parallel-prettier/prettier": "2.8.0",
"@storybook/react/@storybook/core/node-fetch": "2.6.1",
"overrides": {
"@storybook/react": {
"@storybook/core": {
"node-fetch": "2.6.1"
}
},
"@types/react": "17.0.45",
"@types/react-dom": "17.0.17",
"dmg-license": "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz",
"fabric/canvas": "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz",
"fabric/jsdom": "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz",
"fast-glob/glob-parent": "5.1.2",
"read-last-lines/mz/thenify-all/thenify": "3.3.1"
"dmg-license": "$nop",
"fabric": { "canvas": "$nop", "jsdom": "$nop" },
"fast-glob": { "glob-parent": "5.1.2" },
"read-last-lines": { "mz": { "thenify-all": { "thenify": "3.3.1" } } }
},
"engines": {
"node": "20.11.1"

6997
sticker-creator/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -733,6 +733,34 @@
"reasonCategory": "falseMatch",
"updated": "2023-08-29T19:25:52.732Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/array-includes/node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/array-includes/node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/array.prototype.flatmap/node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/array.prototype.flatmap/node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/axe-core/axe.js",
@ -759,6 +787,13 @@
"reasonCategory": "usageTrusted",
"updated": "2021-04-13T17:31:15.352Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/axe-core/doc/examples/jest_react/test-helpers.js",
"line": "\twrapper.innerHTML = '';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-outerHTML",
"path": "node_modules/axe-core/lib/core/utils/dq-element.js",
@ -794,6 +829,27 @@
"reasonCategory": "falseMatch",
"updated": "2018-09-15T00:38:04.183Z"
},
{
"rule": "eval",
"path": "node_modules/config/node_modules/json5/test/parse.js",
"line": "// native JSON.parse() or ES5 strict-mode eval(). See readme.txt for details.",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/config/node_modules/json5/test/parse.js",
"line": "// For eval(), remember to wrap the input in parentheses before eval()'ing,",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/config/node_modules/json5/test/parse.js",
"line": " return eval('\"use strict\"; (\\n' + str + '\\n)');",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-outerHTML",
"path": "node_modules/domutils/node_modules/dom-serializer/lib/esm/index.js",
@ -808,6 +864,34 @@
"reasonCategory": "falseMatch",
"updated": "2023-01-11T23:51:00.603Z"
},
{
"rule": "eval",
"path": "node_modules/es5-ext/node_modules/type/test/_lib/arrow-function-if-supported.js",
"line": "try { module.exports = eval(\"(() => {})\"); }",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/es5-ext/node_modules/type/test/_lib/class-if-supported.js",
"line": "try { module.exports = eval(\"(class {})\"); }",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/esniff/node_modules/d/node_modules/type/test/_lib/arrow-function-if-supported.js",
"line": "try { module.exports = eval(\"(() => {})\"); }",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/esniff/node_modules/d/node_modules/type/test/_lib/class-if-supported.js",
"line": "try { module.exports = eval(\"(class {})\"); }",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "React-ref",
"path": "node_modules/esquery/dist/esquery.esm.min.js",
@ -843,6 +927,13 @@
"reasonCategory": "exampleCode",
"updated": "2021-10-01T23:53:26.107Z"
},
{
"rule": "eval",
"path": "node_modules/globalthis/test/tests.js",
"line": "\t\teval(key + ' = semaphore;');",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/google-libphonenumber/dist/libphonenumber.js",
@ -1224,6 +1315,55 @@
"reasonCategory": "notExercisedByOurApp",
"updated": "2023-06-29T17:01:25.145Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.runningAlert.innerHTML = \"Running \" + this.completeSpecCount + \" of \" + specPluralizedFor(this.totalSpecCount);",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.skippedAlert.innerHTML = \"Skipping \" + this.skippedCount + \" of \" + specPluralizedFor(this.totalSpecCount) + \" - run all\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.passedAlert.innerHTML = \"Passing \" + specPluralizedFor(this.passedCount);",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.failedAlert.innerHTML = \"Failing \" + specPluralizedFor(this.failedCount);",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.summaryMenuItem.innerHTML = \"\" + specPluralizedFor(this.runningSpecCount);",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.detailsMenuItem.innerHTML = \"\" + this.failedCount + \" failing\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/lz-string/tests/lib/jasmine-1.3.1/jasmine-html.js",
"line": " this.skippedAlert.innerHTML = \"Ran \" + this.runningSpecCount + \" of \" + specPluralizedFor(this.totalSpecCount) + \" - run all\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/serialize.js",
@ -1248,6 +1388,104 @@
"updated": "2020-09-11T17:24:56.124Z",
"reasonDetail": "Read, not write"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " html = div.innerHTML",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " var innerHTML = []",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " innerHTML.push(String(node.outerHTML || node))",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " html = innerHTML.join(\"\")",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-outerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " var html = String(div.outerHTML || div)",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-outerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " html = element.outerHTML",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-outerHTML",
"path": "node_modules/min-document/test/test-document.js",
"line": " innerHTML.push(String(node.outerHTML || node))",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-dom-element.js",
"line": " test(\"does not serialize innerHTML as an attribute\", function(assert) {",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-dom-element.js",
"line": " div.innerHTML = \"Test <img />\"",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/min-document/test/test-dom-element.js",
"line": " input.innerHTML = \"user input here\"",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/object.hasown/node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/object.hasown/node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/parse-entities/decode-entity.browser.js",
@ -1270,6 +1508,13 @@
"reasonCategory": "falseMatch",
"updated": "2018-09-19T18:06:35.446Z"
},
{
"rule": "eval",
"path": "node_modules/pino/test/fixtures/eval/index.js",
"line": "eval(`",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/protobufjs/dist/light/protobuf.js",
@ -2176,6 +2421,20 @@
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/side-channel/node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/side-channel/node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "eval",
"path": "node_modules/source-map-support/source-map-support.js",
@ -2204,6 +2463,20 @@
"reasonCategory": "falseMatch",
"updated": "2020-04-30T22:35:27.860Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/string.prototype.matchall/node_modules/object-inspect/example/inspect.js",
"line": "d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/string.prototype.matchall/node_modules/object-inspect/test/browser/dom.js",
"line": " d.innerHTML = '<b>wooo</b><i>iiiii</i>';",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/tocbot/dist/tocbot.js",
@ -2388,6 +2661,62 @@
"reasonCategory": "notExercisedByOurApp",
"updated": "2023-10-03T18:55:06.301Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\t\ttests.innerHTML = \"\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\t\t\tb.innerHTML = name + \" <b style='color:black;'>(<b class='fail'>\" + bad + \"</b>, <b class='pass'>\" + good + \"</b>, \" + config.assertions.length + \")</b>\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\tuserAgent.innerHTML = navigator.userAgent;",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\tlabel.innerHTML = \"Hide passed tests\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\t\t\tif ( li[i].className.indexOf(\"fail\") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\tlabel.innerHTML = \"Hide missing tests (untested code is broken code)\";",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\tconfig.fixture = main.innerHTML;",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "DOM-innerHTML",
"path": "node_modules/uri-js/tests/qunit.js",
"line": "\t\tresult.innerHTML = html;",
"reasonCategory": "testCode",
"updated": "2024-06-24T19:19:28.335Z"
},
{
"rule": "React-useRef",
"path": "node_modules/use-callback-ref/dist/es2015/assignRef.js",
@ -2809,6 +3138,13 @@
"reasonCategory": "usageTrusted",
"updated": "2021-08-03T21:17:38.615Z"
},
{
"rule": "React-useRef",
"path": "ts/components/CallManager.tsx",
"line": " const imageDataCache = React.useRef<CallingImageDataCache>(new Map());",
"reasonCategory": "usageTrusted",
"updated": "2024-05-06T20:18:59.647Z"
},
{
"rule": "React-useRef",
"path": "ts/components/CallNeedPermissionScreen.tsx",
@ -2987,6 +3323,46 @@
"reasonCategory": "usageTrusted",
"updated": "2024-01-12T18:56:18.138Z"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const searchStateItemsRef = useRef<ReadonlyArray<CallHistoryGroup> | null>(",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueRef = useRef<Set<string>>(new Set());",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueArgsRef = useRef<Map<string, PeekNotConnectedGroupCallType>>(",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const inactiveCallLinksPeekedAtRef = useRef<Map<string, number>>(new Map());",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueTimerRef = useRef<NodeJS.Timeout | null>(null);",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
@ -3899,52 +4275,5 @@
"line": " message.innerHTML = window.i18n('icu:optimizingApplication');",
"reasonCategory": "usageTrusted",
"updated": "2021-09-17T21:02:59.414Z"
},
{
"rule": "React-useRef",
"path": "ts/components/CallManager.tsx",
"line": " const imageDataCache = React.useRef<CallingImageDataCache>(new Map());",
"reasonCategory": "usageTrusted",
"updated": "2024-05-06T20:18:59.647Z"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const searchStateItemsRef = useRef<ReadonlyArray<CallHistoryGroup> | null>(",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueRef = useRef<Set<string>>(new Set());",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueArgsRef = useRef<Map<string, PeekNotConnectedGroupCallType>>(",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const inactiveCallLinksPeekedAtRef = useRef<Map<string, number>>(new Map());",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
},
{
"rule": "React-useRef",
"path": "ts/components/CallsList.tsx",
"line": " const peekQueueTimerRef = useRef<NodeJS.Timeout | null>(null);",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"updated": "2024-05-16T02:10:00.652Z",
"reasonDetail": "<optional>"
}
]

View file

@ -26,7 +26,6 @@ const EXTENSIONS_TO_CHECK = new Set([
'.prettierignore',
'.sh',
'.snyk',
'.yarnclean',
'.yml',
'.js',
'.scss',
@ -272,7 +271,7 @@ async function main() {
console.log();
}
console.log(chalk.magenta.bold('`yarn lint-license-comments` failed'));
console.log(chalk.magenta.bold('`npm run lint-license-comments` failed'));
console.log();
process.exit(1);

20912
yarn.lock

File diff suppressed because it is too large Load diff