diff --git a/.asf.yaml b/.asf.yaml index 788ca6d..fcf5a5d 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY diff --git a/.gitattributes b/.gitattributes index 07764a7..70b9bc0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,18 @@ -* text eol=lf \ No newline at end of file +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +* text eol=lf diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 2d17c40..68ae405 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -6,12 +6,12 @@ # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the +# KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. @@ -30,6 +30,9 @@ on: - 'LICENSE' - '.eslint*' +permissions: + contents: read + jobs: test: name: Android ${{ matrix.versions.android }} Test @@ -41,7 +44,7 @@ jobs: # Storing a copy of the repo repo: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - node-version: 20 + node-version: 24 # These are the default Java configurations used by most tests. # To customize these options, add "java-distro" or "java-version" to the strategy matrix with its overriding value. @@ -57,28 +60,6 @@ jobs: strategy: matrix: versions: - - android: 7 - android-api: 24 - - - android: 7.1 - android-api: 25 - - - android: 8 - android-api: 26 - - - android: 8.1 - android-api: 27 - system-image-arch: x86 - - - android: 9 - android-api: 28 - - - android: 10 - android-api: 29 - - - android: 11 - android-api: 30 - - android: 12 android-api: 31 @@ -91,14 +72,25 @@ jobs: - android: 14 android-api: 34 + - android: 15 + android-api: 35 + + - android: 16 + android-api: 36 + timeout-minutes: 60 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ env.node-version }} - - uses: actions/setup-java@v4 + + - uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0 env: java-version: ${{ matrix.versions.java-version == '' && env.default_java-version || matrix.versions.java-version }} java-distro: ${{ matrix.versions.java-distro == '' && env.default_java-distro || matrix.versions.java-distro }} @@ -129,7 +121,7 @@ jobs: if: ${{ endswith(env.repo, '/cordova-paramedic') != true }} run: npm i -g github:apache/cordova-paramedic - - uses: reactivecircus/android-emulator-runner@v2 + - uses: reactivecircus/android-emulator-runner@a421e43855164a8197daf9d8d40fe71c6996bb0d # v2.38.0 env: system-image-arch: ${{ matrix.versions.system-image-arch == '' && env.default_system-image-arch || matrix.versions.system-image-arch }} system-image-target: ${{ matrix.versions.system-image-target == '' && env.default_system-image-target || matrix.versions.system-image-target }} @@ -143,7 +135,7 @@ jobs: script: echo "Pregenerate the AVD before running Paramedic" - name: Run paramedic tests - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@a421e43855164a8197daf9d8d40fe71c6996bb0d # v2.38.0 env: system-image-arch: ${{ matrix.versions.system-image-arch == '' && env.default_system-image-arch || matrix.versions.system-image-arch }} system-image-target: ${{ matrix.versions.system-image-target == '' && env.default_system-image-target || matrix.versions.system-image-target }} diff --git a/.github/workflows/chrome.yml b/.github/workflows/chrome.yml index a067f65..d430677 100644 --- a/.github/workflows/chrome.yml +++ b/.github/workflows/chrome.yml @@ -6,12 +6,12 @@ # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the +# KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. @@ -29,6 +29,9 @@ on: - 'LICENSE' - '.eslint*' +permissions: + contents: read + jobs: test: name: Chrome Latest Test @@ -39,11 +42,15 @@ jobs: # Storing a copy of the repo repo: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - node-version: 20 + node-version: 24 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ env.node-version }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0d788b6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Node CI + +on: + push: + branches-ignore: + - 'dependabot/**' + pull_request: + branches: + - '*' + +jobs: + codeql: + name: CodeQL Analysis + runs-on: ubuntu-latest + + permissions: + contents: read + security-events: write + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24.x + + - uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 + with: + tools: linked + languages: javascript, actions + queries: security-and-quality + config: | + paths-ignore: + - node_modules + + - name: Run npm install + run: npm ci + env: + CI: true + + - uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index b188046..1776ffe 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -6,12 +6,12 @@ # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the +# KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. @@ -30,6 +30,9 @@ on: - 'LICENSE' - '.eslint*' +permissions: + contents: read + jobs: test: name: iOS ${{ matrix.versions.ios-version }} Test @@ -41,7 +44,7 @@ jobs: # Storing a copy of the repo repo: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - node-version: 20 + node-version: 24 # > Starting April 26, 2021, all iOS and iPadOS apps submitted to the App Store must be built with Xcode 12 and the iOS 14 SDK. # Because of Apple's requirement, listed above, We will only be using the latest Xcode release for testing. @@ -51,10 +54,6 @@ jobs: strategy: matrix: versions: - - os-version: macos-13 - ios-version: 16.x - xcode-version: 14.x - - os-version: macos-14 ios-version: 17.x xcode-version: 15.x @@ -63,12 +62,21 @@ jobs: ios-version: 18.x xcode-version: 16.x + - os-version: macos-26 + ios-version: 26.x + xcode-version: 26.x + steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ env.node-version }} - - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd + + - uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0 env: xcode-version: ${{ matrix.versions.xcode-version == '' && env.default_xcode-version || matrix.versions.xcode-version }} with: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 53dad12..47c42dc 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,12 +6,12 @@ # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the +# KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. @@ -29,16 +29,23 @@ on: - '.eslint*' - '.github/workflow/lint.yml' +permissions: + contents: read + jobs: test: name: Lint Test runs-on: ubuntu-latest env: - node-version: 20 + node-version: 24 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ env.node-version }} diff --git a/.github/workflows/release-audit.yml b/.github/workflows/release-audit.yml new file mode 100644 index 0000000..6bceca2 --- /dev/null +++ b/.github/workflows/release-audit.yml @@ -0,0 +1,58 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Release Auditing + +on: + push: + branches-ignore: + - 'dependabot/**' + pull_request: + branches: + - '*' + +permissions: + contents: read + +jobs: + test: + name: Audit Licenses + runs-on: ubuntu-latest + steps: + # Checkout project + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 1 + + # Check license headers + - uses: erisu/apache-rat-action@30c94d10ed21e6f6fd5590dc5c158f58cae7a0dd # v3.0.0 + + # Setup environment with node + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24 + + # Install node packages + - name: npm install packages + run: npm ci + + # Check node package licenses + - uses: erisu/license-checker-action@04511f4c052b5773f11e1c65b42cda88235c62ae # v2.1.0 + with: + license-config: 'licence_checker.yml' + include-asf-category-a: true diff --git a/.gitignore b/.gitignore index 6964ea0..3e4cbb3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,19 @@ -#If ignorance is bliss, then somebody knock the smile off my face +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. *.csproj.user *.suo @@ -13,11 +28,3 @@ Thumbs.db *.user node_modules - - - - - - - - \ No newline at end of file diff --git a/.npmignore b/.npmignore index 2657abf..10b946b 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + .* tests diff --git a/.npmrc b/.npmrc index 24358ae..7cff323 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,18 @@ -registry=https://registry.npmjs.org +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +registry=https://registry.npmjs.org diff --git a/.rat-excludes b/.rat-excludes new file mode 100644 index 0000000..f21ebe1 --- /dev/null +++ b/.rat-excludes @@ -0,0 +1,21 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +.git/ +coverage/ +node_modules/ +types/index.d.ts diff --git a/licence_checker.yml b/licence_checker.yml new file mode 100644 index 0000000..6456f79 --- /dev/null +++ b/licence_checker.yml @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Empty for the release audit workflow. +# The `license-config` is required even if there are no custom configs