diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..6d2119a --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml new file mode 100644 index 0000000..011c0f4 --- /dev/null +++ b/.github/workflows/create-release.yml @@ -0,0 +1,53 @@ +name: Build and Deploy + +on: + push: + tags: + - auth-android@*.*.* + - auth-ios@*.*.* + - booking-android@*.*.* + - booking-ios@*.*.* + - dashboard-android@*.*.* + - dashboard-ios@*.*.* + - shopping-android@*.*.* + - shopping-ios@*.*.* + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Create code-signing.pem + env: + CODE_SIGNING_KEY: ${{ secrets.CODE_SIGNING_KEY }} + run: echo "$CODE_SIGNING_KEY" > code-signing.pem + + - name: Build + run: yarn node scripts/build-miniapp.js ${{ github.ref_name }} + + - name: Delete code-signing.pem + run: rm code-signing.pem + + - name: Release + uses: ncipollo/release-action@v1 + with: + artifacts: "build/**/*.bundle,build/**/*.map" + artifactErrorsFailBuild: true + skipIfReleaseExists: true + name: ${{ github.ref_name }} + tag: ${{ github.ref }} diff --git a/.github/workflows/deploy-catalog-server.yml b/.github/workflows/deploy-catalog-server.yml new file mode 100644 index 0000000..b9bcffb --- /dev/null +++ b/.github/workflows/deploy-catalog-server.yml @@ -0,0 +1,23 @@ +name: Deploy catalog-server + +on: + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + environment: release + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Vercel CLI + run: npm install --global vercel@latest + + - name: Deploy to Vercel + env: + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + run: vercel --token $VERCEL_TOKEN --prod diff --git a/.gitignore b/.gitignore index 263ef65..ba8597b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ node_modules build/ +.vscode/ + # Code Signing code-signing.pem -code-signing.pem.pub \ No newline at end of file +code-signing.pem.pub + diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..1c53a99 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,65 @@ +# Super-App-Showcase Release Process + +This document explains the detailed process of releasing the Super-App-Showcase. The release process is divided into three major sections: + +1. Releasing Mini-Apps +2. Deploying Catalog-Server +3. Deploying Apps to the Stores + +Please follow the below guidelines for each step of the process. + +--- + +## 1. Releasing Mini-Apps + +Mini-apps are released by creating and bumping its version via changeset. Please follow these steps to successfully release mini-apps: + +1. **Run Changeset Version Command**: Execute the following command to create a changeset: + +```bash +yarn changeset version +``` + +This assumes that the repository is correctly set up with node_modules installed and there are already some changesets ready to be used for the next version. + +2. **Update Compatibility Matrix**: Run the script to update the compatibility matrix. This matrix keeps information on compatibility between mini-apps and the host/shell app. Here's the command to execute: + +```bash +yarn node scripts/update-compatibility-matrix.js +``` + +This script goes through all the packages in the monorepo and determines their compatibility based on semantic versioning rules. It's vital to have an accurate compatibility matrix because it dictates which versions of federated dependencies are compatible with which versions of the app. It is assumed that the project uses semantic versioning for package versions. + +3. **Create a Pull Request (PR)**: Create a PR that includes updated CHANGELOG.md from changesets, bumped version packages, and updated compatibility matrix. The PR should have "Release" in the title. Example: `Release: auth v0.0.1`. + +4. **Release Mini-Apps**: After the PR is merged, release the mini-apps by creating and pushing git tags of the specific format: `-@`. You can use the following command to create a tag: + +```bash +git tag auth-ios@0.0.1 + +git push --tags +``` + +In this format, `` represents the package name of the mini-apps in the repository (auth, booking, dashboard, shopping), `` represents either ios or android, and `` represents the current version of that mini-app in its `package.json`. + +5. **Create and Upload a Release**: When the tag is pushed, the GitHub workflow is launched for each tag pushed. This workflow creates a build of that mini-app and uploads it to GitHub Releases. + +--- + +## 2. Deploying Catalog-Server + +The catalog-server is manually deployed once the mini-apps have been released. It gathers URLs to the releases and deploys itself to production, exposing the mini-apps to the host app in production. + +The catalog-server can be deployed via a manual GitHub workflow. This workflow triggers deployment on Vercel where the catalog-server is hosted. The Vercel deployment includes running a build script that reads the 'compatibility-matrix.json' file and generates URLs for iOS and Android application bundles. It organizes the generated URLs into a JSON object, separated by platform and application version, and writes this JSON object to a file named '[appName].prod.json' in the 'data' directory. + +For the catalog-server deployment to be successful, ensure that the mini-apps are properly released on GitHub and that the compatibility matrix isn't corrupted. + +--- + +## 3. Deploying Apps to the Stores + +Please note, as of now the process for releasing the host app to the stores is not yet implemented. This section will be updated as soon as the implementation is done. + +**TODO**: Implement and document the process of deploying apps to the stores. + +--- diff --git a/compatibility-matrix.json b/compatibility-matrix.json new file mode 100644 index 0000000..303872d --- /dev/null +++ b/compatibility-matrix.json @@ -0,0 +1,120 @@ +{ + "booking": { + "sources": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], + "versions": { + "0.0.1": { + "auth": "0.0.1" + } + } + }, + "dashboard": { + "sources": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], + "versions": { + "0.0.1": { + "auth": "0.0.1" + } + } + }, + "host": { + "sources": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "booking", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "dashboard", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "shopping", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "news", + "type": "external", + "url": "https://github.com/callstack/news-mini-app-showcase" + } + ], + "versions": { + "0.0.1": { + "auth": "0.0.1", + "booking": "0.0.1", + "dashboard": "0.0.1", + "shopping": "0.0.1", + "news": "0.0.1" + } + } + }, + "shell": { + "sources": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "booking", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "dashboard", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "shopping", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "news", + "type": "external", + "url": "https://github.com/callstack/news-mini-app-showcase" + } + ], + "versions": { + "0.0.1": { + "auth": "0.0.1", + "booking": "0.0.1", + "dashboard": "0.0.1", + "shopping": "0.0.1", + "news": "0.0.1" + } + } + }, + "shopping": { + "sources": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], + "versions": { + "0.0.1": { + "auth": "0.0.1" + } + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index adf0dda..e27e505 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,8 @@ "packageManager": "yarn@3.2.1", "devDependencies": { "concurrently": "^7.6.0" + }, + "dependencies": { + "@changesets/cli": "^2.26.1" } } diff --git a/packages/auth/.gitignore b/packages/auth/.gitignore index e2eb4d3..75a86ae 100644 --- a/packages/auth/.gitignore +++ b/packages/auth/.gitignore @@ -28,3 +28,6 @@ buck-out/ # Bundle artifact *.jsbundle + +# Build dir +build/ diff --git a/packages/auth/index.js b/packages/auth/index.js index e69de29..ce2b47d 100644 --- a/packages/auth/index.js +++ b/packages/auth/index.js @@ -0,0 +1,5 @@ +export * from './src/contexts/AuthContext'; +export * from './src/providers/AuthProvider'; +export * from './src/screens/AccountScreen'; +export * from './src/screens/SignInScreen'; +export * from './src/services/AuthService'; diff --git a/packages/auth/package.json b/packages/auth/package.json index 2dd6af8..9a7cf34 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -9,6 +9,7 @@ "start": "react-native webpack-start --port 9003", "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", + "bundle": "yarn bundle:ios && yarn bundle:android", "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev false", "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev false" }, @@ -41,6 +42,7 @@ "typescript": "4.8.4", "webpack": "^5.74.0" }, + "federatedModule": "auth", "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/auth/webpack.config.mjs b/packages/auth/webpack.config.mjs index 922adbc..0d3f01b 100644 --- a/packages/auth/webpack.config.mjs +++ b/packages/auth/webpack.config.mjs @@ -198,6 +198,7 @@ export default env => { options: { platform, devServerEnabled: Boolean(devServer), + inline: true, /** * Defines which assets are scalable - which assets can have * scale suffixes: `@1x`, `@2x` and so on. @@ -271,7 +272,7 @@ export default env => { }, }), new Repack.plugins.CodeSigningPlugin({ - privateKeyPath: path.join('..', '..', './code-signing.pem'), + privateKeyPath: path.join('..', '..', 'code-signing.pem'), outputPath: path.join('build', 'outputs', platform, 'remotes'), }), ], diff --git a/packages/booking/package.json b/packages/booking/package.json index 5b22a3c..46e402e 100644 --- a/packages/booking/package.json +++ b/packages/booking/package.json @@ -10,6 +10,7 @@ "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "typecheck": "tsc", + "bundle": "yarn bundle:ios && yarn bundle:android", "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev false", "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev false" }, @@ -49,6 +50,14 @@ "typescript": "4.8.4", "webpack": "^5.74.0" }, + "federatedModule": "booking", + "federatedDependencies": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/booking/webpack.config.mjs b/packages/booking/webpack.config.mjs index b3088e3..0ffcb13 100644 --- a/packages/booking/webpack.config.mjs +++ b/packages/booking/webpack.config.mjs @@ -199,6 +199,7 @@ export default env => { options: { platform, devServerEnabled: Boolean(devServer), + inline: true, /** * Defines which assets are scalable - which assets can have * scale suffixes: `@1x`, `@2x` and so on. @@ -254,7 +255,7 @@ export default env => { shared: deps, }), new Repack.plugins.CodeSigningPlugin({ - privateKeyPath: path.join('..', '..', './code-signing.pem'), + privateKeyPath: path.join('..', '..', 'code-signing.pem'), outputPath: path.join('build', 'outputs', platform, 'remotes'), }), ], diff --git a/packages/catalog-server/.gitignore b/packages/catalog-server/.gitignore new file mode 100644 index 0000000..67a66af --- /dev/null +++ b/packages/catalog-server/.gitignore @@ -0,0 +1,6 @@ +.env + +node_modules/ + +# prod data +data/*.prod.json diff --git a/packages/catalog-server/.prettierrc.js b/packages/catalog-server/.prettierrc.js new file mode 100644 index 0000000..2b54074 --- /dev/null +++ b/packages/catalog-server/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + arrowParens: 'avoid', + bracketSameLine: true, + bracketSpacing: false, + singleQuote: true, + trailingComma: 'all', +}; diff --git a/packages/catalog-server/api/index.js b/packages/catalog-server/api/index.js new file mode 100644 index 0000000..4a2bb49 --- /dev/null +++ b/packages/catalog-server/api/index.js @@ -0,0 +1,51 @@ +const express = require('express'); + +// if running on vercel, use generated .prod configs +const env = process.env.VERCEL ? '.prod' : '.dev'; +const suffix = env + '.json'; + +const host = require('../data/host' + suffix); +const shell = require('../data/host' + suffix); +const booking = require('../data/booking' + suffix); +const shopping = require('../data/shopping' + suffix); +const dashboard = require('../data/dashboard' + suffix); + +const app = express(); +const port = process.env.PORT ?? 3000; + +app.get('/host', (req, res) => { + const platform = req.query.platform; + const appVersion = req.query.appVersion; + + res.send(host[platform][appVersion]); +}); +app.get('/shell', (req, res) => { + const platform = req.query.platform; + const appVersion = req.query.appVersion; + + res.send(shell[platform][appVersion]); +}); +app.get('/booking', (req, res) => { + const platform = req.query.platform; + const appVersion = req.query.appVersion; + + res.send(booking[platform][appVersion]); +}); +app.get('/shopping', (req, res) => { + const platform = req.query.platform; + const appVersion = req.query.appVersion; + + res.send(shopping[platform][appVersion]); +}); +app.get('/dashboard', (req, res) => { + const platform = req.query.platform; + const appVersion = req.query.appVersion; + + res.send(dashboard[platform][appVersion]); +}); + +app.listen(port, () => { + console.log(`[CatalogServer] Server listening at port ${port} `); +}); + +module.exports = app; diff --git a/packages/catalog-server/data/booking.dev.json b/packages/catalog-server/data/booking.dev.json new file mode 100644 index 0000000..d2829d7 --- /dev/null +++ b/packages/catalog-server/data/booking.dev.json @@ -0,0 +1,12 @@ +{ + "ios": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + }, + "android": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + } +} diff --git a/packages/catalog-server/data/booking.json b/packages/catalog-server/data/booking.json deleted file mode 100644 index 1b9fd90..0000000 --- a/packages/catalog-server/data/booking.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ios": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - }, - "android": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - } -} \ No newline at end of file diff --git a/packages/catalog-server/data/dashboard.dev.json b/packages/catalog-server/data/dashboard.dev.json new file mode 100644 index 0000000..d2829d7 --- /dev/null +++ b/packages/catalog-server/data/dashboard.dev.json @@ -0,0 +1,12 @@ +{ + "ios": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + }, + "android": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + } +} diff --git a/packages/catalog-server/data/dashboard.json b/packages/catalog-server/data/dashboard.json deleted file mode 100644 index 1b9fd90..0000000 --- a/packages/catalog-server/data/dashboard.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ios": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - }, - "android": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - } -} \ No newline at end of file diff --git a/packages/catalog-server/data/host.json b/packages/catalog-server/data/host.dev.json similarity index 100% rename from packages/catalog-server/data/host.json rename to packages/catalog-server/data/host.dev.json diff --git a/packages/catalog-server/data/shell.dev.json b/packages/catalog-server/data/shell.dev.json new file mode 100644 index 0000000..f2ecac0 --- /dev/null +++ b/packages/catalog-server/data/shell.dev.json @@ -0,0 +1,20 @@ +{ + "ios": { + "0.0.1": { + "booking": "http://localhost:9000/[name][ext]", + "shopping": "http://localhost:9001/[name][ext]", + "news": "https://github.com/callstack/news-mini-app-showcase/releases/download/news-ios@0.0.1/[name][ext]", + "dashboard": "http://localhost:9002/[name][ext]", + "auth": "http://localhost:9003/[name][ext]" + } + }, + "android": { + "0.0.1": { + "booking": "http://localhost:9000/[name][ext]", + "shopping": "http://localhost:9001/[name][ext]", + "news": "https://github.com/callstack/news-mini-app-showcase/releases/download/news-android@0.0.1/[name][ext]", + "dashboard": "http://localhost:9002/[name][ext]", + "auth": "http://localhost:9003/[name][ext]" + } + } +} diff --git a/packages/catalog-server/data/shopping.dev.json b/packages/catalog-server/data/shopping.dev.json new file mode 100644 index 0000000..d2829d7 --- /dev/null +++ b/packages/catalog-server/data/shopping.dev.json @@ -0,0 +1,12 @@ +{ + "ios": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + }, + "android": { + "0.0.1": { + "auth": "http://localhost:9003/[name][ext]" + } + } +} diff --git a/packages/catalog-server/data/shopping.json b/packages/catalog-server/data/shopping.json deleted file mode 100644 index 1b9fd90..0000000 --- a/packages/catalog-server/data/shopping.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ios": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - }, - "android": { - "0.0.1": { - "auth": "http://localhost:9003/[name][ext]" - } - } -} \ No newline at end of file diff --git a/packages/catalog-server/index.js b/packages/catalog-server/index.js deleted file mode 100644 index 89dea53..0000000 --- a/packages/catalog-server/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const express = require('express') - -const host = require('./data/host.json') -const booking = require('./data/booking.json') -const shopping = require('./data/shopping.json') -const dashboard = require('./data/dashboard.json') - -const app = express() -const port = 3000 - -app.get('/host', (req, res) => { - const platform = req.query.platform - const appVersion = req.query.appVersion - - res.send(host[platform][appVersion]) -}) -app.get('/booking', (req, res) => { - const platform = req.query.platform - const appVersion = req.query.appVersion - - res.send(booking[platform][appVersion]) -}) -app.get('/shopping', (req, res) => { - const platform = req.query.platform - const appVersion = req.query.appVersion - - res.send(shopping[platform][appVersion]) -}) -app.get('/dashboard', (req, res) => { - const platform = req.query.platform - const appVersion = req.query.appVersion - - res.send(dashboard[platform][appVersion]) -}) - -app.listen(port, () => { - console.log(`[CatalogServer] Server listening at port ${port} `) -}) \ No newline at end of file diff --git a/packages/catalog-server/package.json b/packages/catalog-server/package.json index 3dc4c80..62176e0 100644 --- a/packages/catalog-server/package.json +++ b/packages/catalog-server/package.json @@ -2,17 +2,18 @@ "name": "catalog-server", "version": "0.0.1", "description": "Catalog Server", - "main": "index.js", + "main": "api/index.js", "private": true, "installConfig": { "hoistingLimits": "workspaces" }, "scripts": { - "start": "node index.js" + "start": "node api/index.js" }, "author": "", "license": "ISC", "dependencies": { + "dotenv": "^16.0.3", "express": "^4.18.2" } } diff --git a/packages/catalog-server/scripts/build.js b/packages/catalog-server/scripts/build.js new file mode 100644 index 0000000..a54f3b7 --- /dev/null +++ b/packages/catalog-server/scripts/build.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node + +/** + * Node.js script for processing a 'compatibility-matrix.json' file to generate application version specific JSON files. + * + * This script performs the following actions: + * - Reads the 'compatibility-matrix.json' file which contains the versioning and source information for a set of applications. + * - Parses the data from the file into a JavaScript object. + * - For each application, it processes its version and source data to generate URLs for iOS and Android application bundles. + * - The generated URLs are then organized into a JSON object, separated by platform and application version. + * - This JSON object is then written to a file named '[appName].prod.json' in the 'data' directory. + * + * The resulting JSON files can be used to provide version specific download links for each mini-app on iOS and Android platforms. + * + * Note: The script assumes the presence of a 'compatibility-matrix.json' file in the project directory and that the file has a specific structure. + * The 'sources' and 'versions' objects are expected within each app in the matrix, with the versions containing app versions and the sources containing source information. + * It also assumes that the applications have releases hosted at specific URL patterns. + */ + +const fs = require('fs'); +const path = require('path'); + +function createAppJSON(matrix) { + const result = { + ios: {}, + android: {}, + }; + + for (const version in matrix.versions) { + result.ios[version] = {}; + result.android[version] = {}; + + for (const appName in matrix.versions[version]) { + const appVersion = matrix.versions[version][appName]; + const appInfo = matrix.sources.find(source => source.name === appName); + + const iosBundleURL = `${appInfo.url}/releases/download/${appName}-ios@${appVersion}/[name][ext]`; + const androidBundleURL = `${appInfo.url}/releases/download/${appName}-android@${appVersion}/[name][ext]`; + + result.ios[version][appName] = iosBundleURL; + result.android[version][appName] = androidBundleURL; + } + } + + return result; +} + +const data = fs.readFileSync( + path.join(__dirname, '..', '..', '..', 'compatibility-matrix.json'), + 'utf8', +); + +// parse JSON data +const matrix = JSON.parse(data); + +// process each app in the compatibility matrix +for (const appName in matrix) { + const appMatrix = matrix[appName]; + + // generate the JSON data object for the catalog-server + const appJSON = createAppJSON(appMatrix); + + // save the JSON object to a file synchronously + const outputFilename = `${appName}.prod.json`; + fs.writeFileSync( + path.join(__dirname, '..', 'data', outputFilename), + JSON.stringify(appJSON, null, 2), + ); + + console.log(`JSON data for app '${appName}' saved to ${outputFilename}`); +} diff --git a/packages/catalog-server/utils/getContainersURL.js b/packages/catalog-server/utils/getContainersURL.js index c280233..91df046 100644 --- a/packages/catalog-server/utils/getContainersURL.js +++ b/packages/catalog-server/utils/getContainersURL.js @@ -1,5 +1,10 @@ -const getContainersURL = ({appName, version, platform}) => { - return `http://localhost:3000/${appName}?platform=${platform}&appVersion=${version}`; +const getContainersURL = ({ + hostname = 'http://localhost:3000', + appName, + version, + platform, +}) => { + return `${hostname}/${appName}?platform=${platform}&appVersion=${version}`; }; -export default getContainersURL; \ No newline at end of file +export default getContainersURL; diff --git a/packages/catalog-server/vercel.json b/packages/catalog-server/vercel.json new file mode 100644 index 0000000..0143d66 --- /dev/null +++ b/packages/catalog-server/vercel.json @@ -0,0 +1,14 @@ +{ + "installCommand": "yarn", + "buildCommand": "yarn node scripts/build.js && mkdir -p public && touch public/index.html", + "outputDirectory": "public", + "rewrites": [ + { + "source": "/(host|booking|shopping|dashboard)", + "destination": "api/index.js" + } + ], + "github": { + "enabled": false + } +} diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 0c3c2f5..f4c19fd 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -13,6 +13,7 @@ "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "typecheck": "tsc", + "bundle": "yarn bundle:ios && yarn bundle:android", "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev false", "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev false", "pods": "(cd ios && bundle install && bundle exec pod install)" @@ -53,6 +54,14 @@ "typescript": "^4.8.4", "webpack": "^5.75.0" }, + "federatedModule": "dashboard", + "federatedDependencies": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/dashboard/webpack.config.mjs b/packages/dashboard/webpack.config.mjs index b3254ec..acacab3 100644 --- a/packages/dashboard/webpack.config.mjs +++ b/packages/dashboard/webpack.config.mjs @@ -205,6 +205,7 @@ export default env => { options: { platform, devServerEnabled: Boolean(devServer), + inline: true, /** * Defines which assets are scalable - which assets can have * scale suffixes: `@1x`, `@2x` and so on. @@ -259,7 +260,7 @@ export default env => { shared: deps, }), new Repack.plugins.CodeSigningPlugin({ - privateKeyPath: path.join('..', '..', './code-signing.pem'), + privateKeyPath: path.join('..', '..', 'code-signing.pem'), outputPath: path.join('build', 'outputs', platform, 'remotes'), }), ], diff --git a/packages/host/.gitignore b/packages/host/.gitignore index abab531..1cd8b30 100644 --- a/packages/host/.gitignore +++ b/packages/host/.gitignore @@ -60,4 +60,7 @@ yarn-error.log /vendor/bundle/ # Temporary files created by Metro to check the health of the file watcher -.metro-health-check* \ No newline at end of file +.metro-health-check* + +# env +.env \ No newline at end of file diff --git a/packages/host/babel.config.js b/packages/host/babel.config.js index f842b77..0bfc727 100644 --- a/packages/host/babel.config.js +++ b/packages/host/babel.config.js @@ -1,3 +1,4 @@ module.exports = { presets: ['module:metro-react-native-babel-preset'], + plugins: ['module:react-native-dotenv'], }; diff --git a/packages/host/index.js b/packages/host/index.js index 5e44ea9..ea242fc 100644 --- a/packages/host/index.js +++ b/packages/host/index.js @@ -9,8 +9,11 @@ import getContainersURL from '../catalog-server/utils/getContainersURL'; import {name as appName} from './app.json'; import {version as appVersion} from './package.json'; +import {CATALOG_SERVER_URL} from '@env'; + ScriptManager.shared.addResolver(async (scriptId, caller) => { const containersURL = getContainersURL({ + hostname: CATALOG_SERVER_URL, version: appVersion, platform: Platform.OS, appName, @@ -25,7 +28,7 @@ ScriptManager.shared.addResolver(async (scriptId, caller) => { }); let url; - if (caller === 'main') { + if (__DEV__ && caller === 'main') { url = Script.getDevServerURL(scriptId); } else { url = resolveURL(scriptId, caller); @@ -37,8 +40,10 @@ ScriptManager.shared.addResolver(async (scriptId, caller) => { return { url, - cache: false, // For development - query: {platform: Platform.OS}, + cache: !__DEV__, + query: { + platform: Platform.OS, // only needed in development + }, verifyScriptSignature: 'strict', }; }); diff --git a/packages/host/package.json b/packages/host/package.json index aecb853..3536686 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -47,11 +47,39 @@ "eslint": "^8.19.0", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.73.9", + "react-native-dotenv": "^3.4.8", "react-test-renderer": "18.2.0", "terser-webpack-plugin": "^5.3.6", "typescript": "4.8.4", "webpack": "^5.74.0" }, + "federatedDependencies": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "booking", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "dashboard", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "shopping", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "news", + "type": "external", + "url": "https://github.com/callstack/news-mini-app-showcase" + } + ], "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/shell/package.json b/packages/shell/package.json index fdc0690..80219f6 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -51,6 +51,33 @@ "typescript": "4.8.4", "webpack": "^5.74.0" }, + "federatedDependencies": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "booking", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "dashboard", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "shopping", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + }, + { + "name": "news", + "type": "external", + "url": "https://github.com/callstack/news-mini-app-showcase" + } + ], "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/shopping/package.json b/packages/shopping/package.json index 7bf21e8..e540cb8 100644 --- a/packages/shopping/package.json +++ b/packages/shopping/package.json @@ -9,7 +9,10 @@ "start": "react-native webpack-start --port 9001", "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", - "typecheck": "tsc" + "typecheck": "tsc", + "bundle": "yarn bundle:ios && yarn bundle:android", + "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev false", + "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev false" }, "dependencies": { "@react-native-async-storage/async-storage": "^1.17.11", @@ -46,6 +49,14 @@ "typescript": "4.8.4", "webpack": "^5.74.0" }, + "federatedModule": "shopping", + "federatedDependencies": [ + { + "name": "auth", + "type": "internal", + "url": "https://github.com/callstack/super-app-showcase" + } + ], "jest": { "preset": "react-native", "moduleFileExtensions": [ diff --git a/packages/shopping/webpack.config.mjs b/packages/shopping/webpack.config.mjs index f210ea7..4f6e162 100644 --- a/packages/shopping/webpack.config.mjs +++ b/packages/shopping/webpack.config.mjs @@ -199,6 +199,7 @@ export default env => { options: { platform, devServerEnabled: Boolean(devServer), + inline: true, /** * Defines which assets are scalable - which assets can have * scale suffixes: `@1x`, `@2x` and so on. @@ -239,7 +240,7 @@ export default env => { shared: deps, }), new Repack.plugins.CodeSigningPlugin({ - privateKeyPath: path.join('..', '..', './code-signing.pem'), + privateKeyPath: path.join('..', '..', 'code-signing.pem'), outputPath: path.join('build', 'outputs', platform, 'remotes'), }), ], diff --git a/scripts/build-miniapp.js b/scripts/build-miniapp.js new file mode 100644 index 0000000..a874b9e --- /dev/null +++ b/scripts/build-miniapp.js @@ -0,0 +1,97 @@ +#!/usr/bin/env node + +/** + * Node.js script for automating the process of building a mini app in a CI environment based on git tags. + * + * This script performs the following actions: + * - Extracts the git tag from the command-line argument passed when running the script. + * - Parses and validates the git tag format. The expected format is -@. + * - Based on the parsed git tag, it identifies the package name, the target platform. + * - Determines the appropriate build command for the specified platform. + * - Executes a series of shell commands to run the build for specific platform + * and move the output to the 'build' directory in the root of the monorepo. + * + * The resulting build output can be used to release the built mini app. + * + * Note: This script assumes the presence of a valid git tag as an argument when running the script. + */ + +const path = require("path"); +const { spawn } = require("child_process"); + +function verifyGitTagFormat(gitTag) { + const gitTagPattern = /^([\w-]+)-(\w+)@([\d.]+)$/; + const match = gitTag.match(gitTagPattern); + + if (!match) { + console.error( + "Invalid git tag format. Expected format: -@" + ); + process.exit(1); + } + + return { + packageName: match[1], + platform: match[2], + version: match[3], + }; +} + +function getScriptName(targetPlatform) { + if (targetPlatform === "android") { + return "bundle:android"; + } + if (targetPlatform === "ios") { + return "bundle:ios"; + } + + console.error(`Unsupported platform: ${targetPlatform}`); + process.exit(1); +} + +function runShellCommands(commands) { + const command = commands.shift(); + const child = spawn(command.cmd, command.args); + + child.stdout.on("data", (data) => { + console.log(String(data)); + }); + + child.stderr.on("data", (data) => { + console.error(String(data)); + }); + + child.on("close", (code) => { + if (code !== 0) { + process.exit(1); + } + + if (commands.length > 0) { + runShellCommands(commands); + } + }); +} + +function buildMiniApp(gitTag) { + const { packageName, platform } = verifyGitTagFormat(gitTag); + + const scriptName = getScriptName(platform); + + const buildPath = path.join( + "packages", + packageName, + "build", + "outputs", + platform, + "remotes" + ); + + const commands = [ + { cmd: "yarn", args: ["workspace", packageName, "run", scriptName] }, + { cmd: "mv", args: [buildPath, "build"] }, + ]; + + runShellCommands(commands); +} + +buildMiniApp(process.argv[2]); diff --git a/scripts/update-compatibility-matrix.js b/scripts/update-compatibility-matrix.js new file mode 100644 index 0000000..8fed0bf --- /dev/null +++ b/scripts/update-compatibility-matrix.js @@ -0,0 +1,219 @@ +#!/usr/bin/env node + +/** + * Node.js script for managing and updating the compatibility matrix of federated dependencies in a project. + * + * This script performs the following actions: + * - Discovers all the packages with federated dependencies within the project. + * - Reads an existing compatibility matrix or initializes a new one if it doesn't exist. + * - Goes through all the relevant packages in the monorepo, and for each of them: + * - Determines whether package will be included in the compatibility matrix. + * - Goes through all the federated dependencies of the app, and checks their versions. + * - Updates the compatibility matrix based on the rules of semantic versioning (semver). + * - Writes the updated compatibility matrix back to the file. + * + * The compatibility matrix is a JSON object where the keys are the app names + * and the values are objects containing information about the apps's federated + * dependencies and their versions. + * + * The update of the compatibility matrix adheres to the following guidelines: + * - For app's that experience a major version bump, their dependencies are + * deemed compatible and updated in the matrix only if these dependencies also + * get a major version bump. + * - If a app's version is incremented by a minor or patch update, or remains unchanged, + * the dependencies are updated in the matrix provided they have not undergone a major version bump. + * + * The resulting compatibility matrix can be used to understand which versions of federated dependencies + * are compatible with which versions of the app. + * + * Note: This script assumes the project uses semantic versioning for package versions and that the + * structure of the project follows certain rules, such as the presence of a 'package.json' + * in every package directory and a 'compatibility-matrix.json' at the root. + * + * Note: This is a rather naive implementation of the compatibility matrix update logic. It is meant + * to be used as a proof of concept rather than something you would want to use in production. + */ + +const fs = require("fs"); +const path = require("path"); +const semver = require("semver"); + +const rootDir = path.join(__dirname, ".."); +const compatibilityMatrixPath = path.join(rootDir, "compatibility-matrix.json"); +const packagesPath = path.join(rootDir, "packages"); + +function readPackageJson(packagePath) { + return JSON.parse(fs.readFileSync(packagePath, "utf-8")); +} + +function readCompatibilityMatrix() { + return JSON.parse(fs.readFileSync(compatibilityMatrixPath, "utf-8")); +} + +function writeCompatibilityMatrix(matrix) { + fs.writeFileSync(compatibilityMatrixPath, JSON.stringify(matrix, null, 2)); +} + +function getPreviousVersion(versions) { + if (!versions) { + return null; + } + return Object.keys(versions).sort(semver.rcompare)[0]; +} + +function getCompatibilityMatrix(packages) { + if (fs.existsSync(compatibilityMatrixPath)) { + return readCompatibilityMatrix(); + } else { + return initCompatibilityMatrix(packages); + } +} + +function initCompatibilityMatrix(packages) { + const matrix = {}; + + for (const packageName in packages) { + const packageData = packages[packageName]; + if (!packageData.federatedDependencies) { + continue; + } + + matrix[packageName] = { + sources: packageData.federatedDependencies, + versions: {}, + }; + } + + return matrix; +} + +function getExternalDependencyVersion(dependency) { + // Stub function to obtain the version of an external dependency. + // Implement the logic to fetch the version from the remote location here. + // As of now, the only external dependency is the news mini-app, and it's version is hardcoded here + return "0.0.1"; +} + +function discoverPackagesWithFederatedDependencies() { + const packageDirs = fs + .readdirSync(packagesPath, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => path.join(packagesPath, dirent.name)); + + const packageJsonFiles = packageDirs.map((packageDir) => + path.join(packageDir, "package.json") + ); + const packages = {}; + + for (const packageJsonFile of packageJsonFiles) { + const packageData = readPackageJson(packageJsonFile); + if (packageData.federatedDependencies || packageData.federatedModule) { + packages[packageData.name] = { + path: packageJsonFile, + version: packageData.version, + federatedDependencies: packageData.federatedDependencies, + }; + } + } + return packages; +} + +function getCurrentDependencyVersion(dependency, packages) { + if (dependency.type === "internal") { + return packages[dependency.name]?.version; + } + if (dependency.type === "external") { + return getExternalDependencyVersion(dependency); + } +} + +function updateCompatibilityMatrix() { + const packages = discoverPackagesWithFederatedDependencies(); + const matrix = getCompatibilityMatrix(packages); + + for (const app in packages) { + const packageData = packages[app]; + + // app is always used only as a dependency + if (!packageData.federatedDependencies) { + continue; + } + + const newVersion = packageData.version; + const oldVersion = getPreviousVersion(matrix[app]?.versions) || "0.0.0"; + + for (const dependency of packageData.federatedDependencies) { + const newDependencyVersion = getCurrentDependencyVersion( + dependency, + packages + ); + + const oldDependencyVersion = + matrix[app]?.versions?.[oldVersion]?.[dependency.name] || "0.0.0"; + + const appVersionDiff = semver.diff(oldVersion, newVersion); + const dependencyVersionDiff = semver.diff( + oldDependencyVersion, + newDependencyVersion + ); + + // get matrix entry for the app or initialize new one + matrix[app] = matrix[app] || { sources: [], versions: {} }; + + // always use the most up-to-date sources of the federatedDependencies + matrix[app].sources = packageData.federatedDependencies; + + // get version data for the app from the matrix or initialize new one + matrix[app].versions[newVersion] = matrix[app].versions[newVersion] || {}; + + // case 1: app gets a major bump + if (appVersionDiff === "major") { + // dependency gets a major bump too - add it to the matrix + // otherwise mark it as incompatible + if (dependencyVersionDiff === "major") { + matrix[app].versions[newVersion][dependency.name] = + newDependencyVersion; + } else { + console.log( + `Package "${app}" had a major bump but dependency "${ + dependency.name + }" ${ + dependencyVersionDiff !== null + ? "only had a " + dependencyVersionDiff + " bump" + : "remained unchanged" + }. Marking "${ + dependency.name + }" version ${newDependencyVersion} as incompatible.` + ); + } + } + // case 2: app gets a minor/patch bump or stays the same + else { + // dependency gets a minor/patch bump or stays the same - add it to the matrix + // otherwise mark it as incompatible + if (dependencyVersionDiff !== "major") { + matrix[app].versions[newVersion][dependency.name] = + newDependencyVersion; + } else { + console.log( + `Package "${app}" ${ + appVersionDiff !== null + ? "had a " + appVersionDiff + "bump" + : "remained unchanged" + }, but the current highest version of the dependency "${ + dependency.name + }" had a major bump marking it incompatible with this version. Version ${oldDependencyVersion} of "${ + dependency.name + }" will be used instead.` + ); + matrix[app].versions[newVersion][dependency.name] = + oldDependencyVersion; + } + } + } + } + + writeCompatibilityMatrix(matrix); +} + +updateCompatibilityMatrix(); diff --git a/yarn.lock b/yarn.lock index b53f9b2..8adade3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1790,6 +1790,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.5.5": + version: 7.21.5 + resolution: "@babel/runtime@npm:7.21.5" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 358f2779d3187f5c67ad302e8f8d435412925d0b991d133c7d4a7b1ddd5a3fda1b6f34537cb64628dfd96a27ae46df105bed3895b8d754b88cacdded8d1129dd + languageName: node + linkType: hard + "@babel/template@npm:^7.0.0, @babel/template@npm:^7.18.10, @babel/template@npm:^7.3.3": version: 7.18.10 resolution: "@babel/template@npm:7.18.10" @@ -1952,6 +1961,242 @@ __metadata: languageName: node linkType: hard +"@changesets/apply-release-plan@npm:^6.1.3": + version: 6.1.3 + resolution: "@changesets/apply-release-plan@npm:6.1.3" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/config": ^2.3.0 + "@changesets/get-version-range-type": ^0.3.2 + "@changesets/git": ^2.0.0 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + detect-indent: ^6.0.0 + fs-extra: ^7.0.1 + lodash.startcase: ^4.4.0 + outdent: ^0.5.0 + prettier: ^2.7.1 + resolve-from: ^5.0.0 + semver: ^5.4.1 + checksum: 3772a6e0ede33abdac6fcc52359307f770d5fafa53295c83e0a11b81e5802b2fe5e74e4d672c0a082f5d73dc1a9ef56509870b81824111396f74de99ada9526b + languageName: node + linkType: hard + +"@changesets/assemble-release-plan@npm:^5.2.3": + version: 5.2.3 + resolution: "@changesets/assemble-release-plan@npm:5.2.3" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/errors": ^0.1.4 + "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + semver: ^5.4.1 + checksum: 2c61894414736b12e9a26903d73c387b65f4caba398e280488b885f4d0f4bb307aaa6bae140dfd754c85de6557bd07645accda2af6b8794837ab43823ba6215c + languageName: node + linkType: hard + +"@changesets/changelog-git@npm:^0.1.14": + version: 0.1.14 + resolution: "@changesets/changelog-git@npm:0.1.14" + dependencies: + "@changesets/types": ^5.2.1 + checksum: 60b45bb899e66cec669ab3884d5d18550cd30bf5a8b06f335eb72aa6c9e018dd3e0187e4df61c91a22076153e346b735b792f0e9c6186e6245b1b7aec2fc42d4 + languageName: node + linkType: hard + +"@changesets/cli@npm:^2.26.1": + version: 2.26.1 + resolution: "@changesets/cli@npm:2.26.1" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/apply-release-plan": ^6.1.3 + "@changesets/assemble-release-plan": ^5.2.3 + "@changesets/changelog-git": ^0.1.14 + "@changesets/config": ^2.3.0 + "@changesets/errors": ^0.1.4 + "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/get-release-plan": ^3.0.16 + "@changesets/git": ^2.0.0 + "@changesets/logger": ^0.0.5 + "@changesets/pre": ^1.0.14 + "@changesets/read": ^0.5.9 + "@changesets/types": ^5.2.1 + "@changesets/write": ^0.2.3 + "@manypkg/get-packages": ^1.1.3 + "@types/is-ci": ^3.0.0 + "@types/semver": ^6.0.0 + ansi-colors: ^4.1.3 + chalk: ^2.1.0 + enquirer: ^2.3.0 + external-editor: ^3.1.0 + fs-extra: ^7.0.1 + human-id: ^1.0.2 + is-ci: ^3.0.1 + meow: ^6.0.0 + outdent: ^0.5.0 + p-limit: ^2.2.0 + preferred-pm: ^3.0.0 + resolve-from: ^5.0.0 + semver: ^5.4.1 + spawndamnit: ^2.0.0 + term-size: ^2.1.0 + tty-table: ^4.1.5 + bin: + changeset: bin.js + checksum: d7d6445ebbc1b2718d97852a2275f59af32020e8a1e1efe666767819dd862c7794ce50627ad52f1f97ba4bc57c81bfc4750e92265757cc94ab2d44198d2afb10 + languageName: node + linkType: hard + +"@changesets/config@npm:^2.3.0": + version: 2.3.0 + resolution: "@changesets/config@npm:2.3.0" + dependencies: + "@changesets/errors": ^0.1.4 + "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/logger": ^0.0.5 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + fs-extra: ^7.0.1 + micromatch: ^4.0.2 + checksum: 68a61437ffeda219f22f6d4d32bf8d428e6f284d7e0e191c0629f64f035a051b4068222b1ea3ff1866e5944a153004735dab82205404919f6806c97c546700b1 + languageName: node + linkType: hard + +"@changesets/errors@npm:^0.1.4": + version: 0.1.4 + resolution: "@changesets/errors@npm:0.1.4" + dependencies: + extendable-error: ^0.1.5 + checksum: 10734f1379715bf5a70b566dd42b50a75964d76f382bb67332776614454deda6d04a43dd7e727cd7cba56d7f2f7c95a07c7c0a19dd5d64fb1980b28322840733 + languageName: node + linkType: hard + +"@changesets/get-dependents-graph@npm:^1.3.5": + version: 1.3.5 + resolution: "@changesets/get-dependents-graph@npm:1.3.5" + dependencies: + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + chalk: ^2.1.0 + fs-extra: ^7.0.1 + semver: ^5.4.1 + checksum: d7abb1da21804fd66b1458e46be2f2aec741145a43500b0463a5acfbb420ac5ce776a7328fa660ad4e6e811f933bd6f36e7bbaf00fb3f591d46f0b8e7108fdcd + languageName: node + linkType: hard + +"@changesets/get-release-plan@npm:^3.0.16": + version: 3.0.16 + resolution: "@changesets/get-release-plan@npm:3.0.16" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/assemble-release-plan": ^5.2.3 + "@changesets/config": ^2.3.0 + "@changesets/pre": ^1.0.14 + "@changesets/read": ^0.5.9 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + checksum: ab8360c17f69437ad51edfd8910a2609ab8dc1e8cf006994b3938b2551b1eb08b7ab8043b8bf1e94916cbadd89e357a0c1148e20eab8bb5e3ae284384d239942 + languageName: node + linkType: hard + +"@changesets/get-version-range-type@npm:^0.3.2": + version: 0.3.2 + resolution: "@changesets/get-version-range-type@npm:0.3.2" + checksum: b7ee7127c472a3886906ca6db336ac11233a5e75abc882084bfb4794e79a8936e3faceec3c04bf61c26453cd7f74278d9bf22aea4cdca8c1cd992591925b3c9b + languageName: node + linkType: hard + +"@changesets/git@npm:^2.0.0": + version: 2.0.0 + resolution: "@changesets/git@npm:2.0.0" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/errors": ^0.1.4 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + is-subdir: ^1.1.1 + micromatch: ^4.0.2 + spawndamnit: ^2.0.0 + checksum: 3820b7b689bbe8dfb93222c766bee214e68a45f07b2b5c8056891f9ffe6f1e369c0f84388246a9eea5317b496ae80ffd1508319190f79c359f060ebf8ccb7b13 + languageName: node + linkType: hard + +"@changesets/logger@npm:^0.0.5": + version: 0.0.5 + resolution: "@changesets/logger@npm:0.0.5" + dependencies: + chalk: ^2.1.0 + checksum: bfec3cd9122b00c0ec25e96730f771ffd662ef3906d571bad1e4e9993f9d54d357d3eaf074b3dfaa4e23af759ce68efa2a97d8b845b0d8c951df5d21c6dfdff5 + languageName: node + linkType: hard + +"@changesets/parse@npm:^0.3.16": + version: 0.3.16 + resolution: "@changesets/parse@npm:0.3.16" + dependencies: + "@changesets/types": ^5.2.1 + js-yaml: ^3.13.1 + checksum: 475f808ac8d33ec90af3914d55af1da8eeb9336d6cab7dd9e5be74af844f0ec04f4a67d5237a1d3284a468e0c9198e2be01d0e5870a1b28e63bc240f5f1ffea9 + languageName: node + linkType: hard + +"@changesets/pre@npm:^1.0.14": + version: 1.0.14 + resolution: "@changesets/pre@npm:1.0.14" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/errors": ^0.1.4 + "@changesets/types": ^5.2.1 + "@manypkg/get-packages": ^1.1.3 + fs-extra: ^7.0.1 + checksum: 6b849bd6f916476a5b5664bc4286020bee506985c82f723a757fa4e681b0b7129db81751f16072ac55a980ffd83a4b234d6b8d0f8b6bc889aa0c0fd5377431e8 + languageName: node + linkType: hard + +"@changesets/read@npm:^0.5.9": + version: 0.5.9 + resolution: "@changesets/read@npm:0.5.9" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/git": ^2.0.0 + "@changesets/logger": ^0.0.5 + "@changesets/parse": ^0.3.16 + "@changesets/types": ^5.2.1 + chalk: ^2.1.0 + fs-extra: ^7.0.1 + p-filter: ^2.1.0 + checksum: 0875a80829186de2da55bc0347601cc31b269d54fb6967a5093abacbbd9f949e352907b8340b61348a304228fdade670ded151327f16eea3424b5b4b2bb9888c + languageName: node + linkType: hard + +"@changesets/types@npm:^4.0.1": + version: 4.1.0 + resolution: "@changesets/types@npm:4.1.0" + checksum: 72c1f58044178ca867dd9349ecc4b7c233ce3781bb03b5b72a70c3166fbbab54a2f2cb19a81f96b4649ba004442c8734569fba238be4dd737fb4624a135c6098 + languageName: node + linkType: hard + +"@changesets/types@npm:^5.2.1": + version: 5.2.1 + resolution: "@changesets/types@npm:5.2.1" + checksum: 527dc1aa41b040fe35bcd55f7d07bec710320b179b000c429723e25b87aac18be487daf5047d4fecf2781aad78f73abff111e76e411b652f7a2e812a464c69f2 + languageName: node + linkType: hard + +"@changesets/write@npm:^0.2.3": + version: 0.2.3 + resolution: "@changesets/write@npm:0.2.3" + dependencies: + "@babel/runtime": ^7.20.1 + "@changesets/types": ^5.2.1 + fs-extra: ^7.0.1 + human-id: ^1.0.2 + prettier: ^2.7.1 + checksum: 40ad8069f9adc565b78a5f25992e31b41a12e551d94c29e1b4def49ce98871a1e358feda6536be8b363a6dba18b1226a22ecfc60fdd7bc1e74bfcf46b07f91be + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.4.1": version: 1.4.1 resolution: "@eslint/eslintrc@npm:1.4.1" @@ -2419,6 +2664,32 @@ __metadata: languageName: node linkType: hard +"@manypkg/find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "@manypkg/find-root@npm:1.1.0" + dependencies: + "@babel/runtime": ^7.5.5 + "@types/node": ^12.7.1 + find-up: ^4.1.0 + fs-extra: ^8.1.0 + checksum: f0fd881a5a81a351cb6561cd24117e8ee9481bbf3b6d1c7d9d10bef1f4744ca2ba3d064713e83c0a0574416d1e5b4a4c6c414aad91913c4a1c6040d87283ac50 + languageName: node + linkType: hard + +"@manypkg/get-packages@npm:^1.1.3": + version: 1.1.3 + resolution: "@manypkg/get-packages@npm:1.1.3" + dependencies: + "@babel/runtime": ^7.5.5 + "@changesets/types": ^4.0.1 + "@manypkg/find-root": ^1.1.0 + fs-extra: ^8.1.0 + globby: ^11.0.0 + read-yaml-file: ^1.1.0 + checksum: f5a756e5a659e0e1c33f48852d56826d170d5b10a3cdea89ce4fcaa77678d8799aa4004b30e1985c87b73dbc390b95bb6411b78336dd1e0db87c08c74b5c0e74 + languageName: node + linkType: hard + "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -3002,6 +3273,15 @@ __metadata: languageName: node linkType: hard +"@types/is-ci@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/is-ci@npm:3.0.0" + dependencies: + ci-info: ^3.1.0 + checksum: 7c1f1f16c1fa2134de7400d82766c83fa76057261ba890628af77a09382ebb92d945bb077b98cfcf3d40ab1469c9ffbd2278112867edbe57aa655f53547eb139 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -3044,6 +3324,13 @@ __metadata: languageName: node linkType: hard +"@types/minimist@npm:^1.2.0": + version: 1.2.2 + resolution: "@types/minimist@npm:1.2.2" + checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d + languageName: node + linkType: hard + "@types/node@npm:*": version: 18.11.7 resolution: "@types/node@npm:18.11.7" @@ -3051,6 +3338,20 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^12.7.1": + version: 12.20.55 + resolution: "@types/node@npm:12.20.55" + checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0": + version: 2.4.1 + resolution: "@types/normalize-package-data@npm:2.4.1" + checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" @@ -3122,6 +3423,13 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^6.0.0": + version: 6.2.3 + resolution: "@types/semver@npm:6.2.3" + checksum: 83c86d7005b229df9c4c0d6d13825b839a01932895504596140aea19e2b88f63ac27ab1575347451b50eedb63f72309e845ce1a0ca78360c4f719bbb38371594 + languageName: node + linkType: hard + "@types/semver@npm:^7.3.12": version: 7.3.13 resolution: "@types/semver@npm:7.3.13" @@ -3746,6 +4054,13 @@ __metadata: languageName: node linkType: hard +"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e + languageName: node + linkType: hard + "ansi-escapes@npm:^4.2.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -3939,6 +4254,18 @@ __metadata: languageName: node linkType: hard +"array.prototype.flat@npm:^1.2.3": + version: 1.3.1 + resolution: "array.prototype.flat@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + languageName: node + linkType: hard + "array.prototype.flatmap@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flatmap@npm:1.3.1" @@ -3964,6 +4291,13 @@ __metadata: languageName: node linkType: hard +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 + languageName: node + linkType: hard + "asap@npm:~2.0.3, asap@npm:~2.0.6": version: 2.0.6 resolution: "asap@npm:2.0.6" @@ -4282,6 +4616,15 @@ __metadata: languageName: node linkType: hard +"better-path-resolve@npm:1.0.0": + version: 1.0.0 + resolution: "better-path-resolve@npm:1.0.0" + dependencies: + is-windows: ^1.0.0 + checksum: 5392dbe04e7fe68b944eb37961d9dfa147aaac3ee9ee3f6e13d42e2c9fbe949e68d16e896c14ee9016fa5f8e6e53ec7fd8b5f01b50a32067a7d94ac9cfb9a050 + languageName: node + linkType: hard + "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" @@ -4405,6 +4748,15 @@ __metadata: languageName: node linkType: hard +"breakword@npm:^1.0.5": + version: 1.0.5 + resolution: "breakword@npm:1.0.5" + dependencies: + wcwidth: ^1.0.1 + checksum: 8ca7b10bbbbfe1c45c12c9119c4bc1e585452ddd58c5da93020a0c1deac3cf6bb335632675c9c705ba7b644065ae1d6623a25e79b7a48e0ee0ff42cb6e94b357 + languageName: node + linkType: hard + "browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": version: 4.21.4 resolution: "browserslist@npm:4.21.4" @@ -4551,6 +4903,17 @@ __metadata: languageName: node linkType: hard +"camelcase-keys@npm:^6.2.2": + version: 6.2.2 + resolution: "camelcase-keys@npm:6.2.2" + dependencies: + camelcase: ^5.3.1 + map-obj: ^4.0.0 + quick-lru: ^4.0.1 + checksum: 43c9af1adf840471e54c68ab3e5fe8a62719a6b7dbf4e2e86886b7b0ff96112c945736342b837bd2529ec9d1c7d1934e5653318478d98e0cf22c475c04658e2a + languageName: node + linkType: hard + "camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" @@ -4576,11 +4939,12 @@ __metadata: version: 0.0.0-use.local resolution: "catalog-server@workspace:packages/catalog-server" dependencies: + dotenv: ^16.0.3 express: ^4.18.2 languageName: unknown linkType: soft -"chalk@npm:^2.0.0": +"chalk@npm:^2.0.0, chalk@npm:^2.1.0": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -4608,6 +4972,13 @@ __metadata: languageName: node linkType: hard +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -4636,6 +5007,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.1.0": + version: 3.8.0 + resolution: "ci-info@npm:3.8.0" + checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 + languageName: node + linkType: hard + "ci-info@npm:^3.2.0": version: 3.5.0 resolution: "ci-info@npm:3.5.0" @@ -5050,6 +5428,17 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^5.1.0": + version: 5.1.0 + resolution: "cross-spawn@npm:5.1.0" + dependencies: + lru-cache: ^4.0.1 + shebang-command: ^1.2.0 + which: ^1.2.9 + checksum: 726939c9954fc70c20e538923feaaa33bebc253247d13021737c3c7f68cdc3e0a57f720c0fe75057c0387995349f3f12e20e9bfdbf12274db28019c7ea4ec166 + languageName: node + linkType: hard + "cross-spawn@npm:^6.0.0": version: 6.0.5 resolution: "cross-spawn@npm:6.0.5" @@ -5081,6 +5470,39 @@ __metadata: languageName: node linkType: hard +"csv-generate@npm:^3.4.3": + version: 3.4.3 + resolution: "csv-generate@npm:3.4.3" + checksum: 868dc630e8bcabf42d3d1ef22c09fb783de72d7e5929854aad0323f44059b1747edf8a2724e32fdc5008396e2ea38d5c45df0b0e3a1b506e3ab34f76f3e2fb3a + languageName: node + linkType: hard + +"csv-parse@npm:^4.16.3": + version: 4.16.3 + resolution: "csv-parse@npm:4.16.3" + checksum: 5ad7790fc31c32ca1623bad1a54906134ba44fa109e8dd2dfda440bf7e9fd93610d9076a78f45c872701bfafdf7f93c9b75500c09d7efd6611d863f1d45ec69f + languageName: node + linkType: hard + +"csv-stringify@npm:^5.6.5": + version: 5.6.5 + resolution: "csv-stringify@npm:5.6.5" + checksum: f93e1444857416081de3d86765b62e4c4f7c110974ad6bbcb0031d7db39b6624847ac9ee5705726e7011346f32f3696f27299b74b23a6c2b083adff0dd2755fe + languageName: node + linkType: hard + +"csv@npm:^5.5.3": + version: 5.5.3 + resolution: "csv@npm:5.5.3" + dependencies: + csv-generate: ^3.4.3 + csv-parse: ^4.16.3 + csv-stringify: ^5.6.5 + stream-transform: ^2.1.3 + checksum: 0decc2d0d7a0abf127f4556d6f3cef5a54015b78d348608b5e8f42256c2bd0a021f34f1efc9723b2cd162680917de4c0b3967bfb65a07305eca0827654ca727e + languageName: node + linkType: hard + "dashboard@workspace:packages/dashboard": version: 0.0.0-use.local resolution: "dashboard@workspace:packages/dashboard" @@ -5155,7 +5577,17 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^1.2.0": +"decamelize-keys@npm:^1.1.0": + version: 1.1.1 + resolution: "decamelize-keys@npm:1.1.1" + dependencies: + decamelize: ^1.1.0 + map-obj: ^1.0.0 + checksum: fc645fe20b7bda2680bbf9481a3477257a7f9304b1691036092b97ab04c0ab53e3bf9fcc2d2ae382536568e402ec41fb11e1d4c3836a9abe2d813dd9ef4311e0 + languageName: node + linkType: hard + +"decamelize@npm:^1.1.0, decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa @@ -5320,6 +5752,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d + languageName: node + linkType: hard + "detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" @@ -5368,6 +5807,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.0.3": + version: 16.0.3 + resolution: "dotenv@npm:16.0.3" + checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 + languageName: node + linkType: hard + "ecdsa-sig-formatter@npm:1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -5454,6 +5900,15 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.3.0": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 + languageName: node + linkType: hard + "env-editor@npm:^1.0.0": version: 1.1.0 resolution: "env-editor@npm:1.1.0" @@ -6086,6 +6541,24 @@ __metadata: languageName: node linkType: hard +"extendable-error@npm:^0.1.5": + version: 0.1.7 + resolution: "extendable-error@npm:0.1.7" + checksum: 80478be7429a1675d2085f701239796bab3230ed6f2fb1b138fbabec24bea6516b7c5ceb6e9c209efcc9c089948d93715703845653535f8e8a49655066a9255e + languageName: node + linkType: hard + +"external-editor@npm:^3.1.0": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: ^0.7.0 + iconv-lite: ^0.4.24 + tmp: ^0.0.33 + checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + languageName: node + linkType: hard + "extglob@npm:^2.0.4": version: 2.0.4 resolution: "extglob@npm:2.0.4" @@ -6397,6 +6870,16 @@ __metadata: languageName: node linkType: hard +"find-yarn-workspace-root2@npm:1.2.16": + version: 1.2.16 + resolution: "find-yarn-workspace-root2@npm:1.2.16" + dependencies: + micromatch: ^4.0.2 + pkg-dir: ^4.2.0 + checksum: b4abdd37ab87c2172e2abab69ecbfed365d63232742cd1f0a165020fba1b200478e944ec2035c6aaf0ae142ac4c523cbf08670f45e59b242bcc295731b017825 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -6503,6 +6986,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + languageName: node + linkType: hard + "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -6747,7 +7241,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": +"globby@npm:^11.0.0, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -6777,6 +7271,13 @@ __metadata: languageName: node linkType: hard +"graceful-fs@npm:^4.1.5": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + "grapheme-splitter@npm:^1.0.4": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" @@ -6784,6 +7285,13 @@ __metadata: languageName: node linkType: hard +"hard-rejection@npm:^2.1.0": + version: 2.1.0 + resolution: "hard-rejection@npm:2.1.0" + checksum: 7baaf80a0c7fff4ca79687b4060113f1529589852152fa935e6787a2bc96211e784ad4588fb3048136ff8ffc9dfcf3ae385314a5b24db32de20bea0d1597f9dc + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -6974,6 +7482,7 @@ __metadata: react: 18.2.0 react-native: 0.71.8 react-native-bootsplash: ^4.7.1 + react-native-dotenv: ^3.4.8 react-native-paper: 5.0.0-rc.10 react-native-safe-area-context: ^4.4.1 react-native-screens: ^3.18.2 @@ -6985,6 +7494,13 @@ __metadata: languageName: unknown linkType: soft +"hosted-git-info@npm:^2.1.4": + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd + languageName: node + linkType: hard + "html-entities@npm:^2.1.0": version: 2.3.3 resolution: "html-entities@npm:2.3.3" @@ -7053,6 +7569,13 @@ __metadata: languageName: node linkType: hard +"human-id@npm:^1.0.2": + version: 1.0.2 + resolution: "human-id@npm:1.0.2" + checksum: 95ee57ffae849f008e2ef3fe6e437be8c999861b4256f18c3b194c8928670a8a149e0576917105d5fd77e5edbb621c5a4736fade20bb7bf130113c1ebc95cb74 + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -7069,7 +7592,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -7333,6 +7856,26 @@ __metadata: languageName: node linkType: hard +"is-ci@npm:^3.0.1": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: ^3.2.0 + bin: + is-ci: bin.js + checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + languageName: node + linkType: hard + +"is-core-module@npm:^2.12.0": + version: 2.12.0 + resolution: "is-core-module@npm:2.12.0" + dependencies: + has: ^1.0.3 + checksum: f7f7eb2ab71fd769ee9fb2385c095d503aa4b5ce0028c04557de03f1e67a87c85e5bac1f215945fc3c955867a139a415a3ec4c4234a0bffdf715232660f440a6 + languageName: node + linkType: hard + "is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" @@ -7513,6 +8056,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 + languageName: node + linkType: hard + "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" @@ -7571,6 +8121,15 @@ __metadata: languageName: node linkType: hard +"is-subdir@npm:^1.1.1": + version: 1.2.0 + resolution: "is-subdir@npm:1.2.0" + dependencies: + better-path-resolve: 1.0.0 + checksum: 31029a383972bff4cc4f1bd1463fd04dde017e0a04ae3a6f6e08124a90c6c4656312d593101b0f38805fa3f3c8f6bc4583524bbf72c50784fa5ca0d3e5a76279 + languageName: node + linkType: hard + "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": version: 1.0.4 resolution: "is-symbol@npm:1.0.4" @@ -7609,7 +8168,7 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.2": +"is-windows@npm:^1.0.0, is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 @@ -8257,7 +8816,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": +"js-yaml@npm:^3.13.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -8482,7 +9041,7 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b @@ -8496,6 +9055,13 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^4.1.5": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 + languageName: node + linkType: hard + "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -8541,6 +9107,18 @@ __metadata: languageName: node linkType: hard +"load-yaml-file@npm:^0.2.0": + version: 0.2.0 + resolution: "load-yaml-file@npm:0.2.0" + dependencies: + graceful-fs: ^4.1.5 + js-yaml: ^3.13.0 + pify: ^4.0.1 + strip-bom: ^3.0.0 + checksum: d86d7ec7b15a1c35b40fb0d8abe710a7de83e0c1186c1d35a7eaaf8581611828089a3e706f64560c2939762bc73f18a7b85aed9335058c640e033933cf317f11 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -8601,6 +9179,13 @@ __metadata: languageName: node linkType: hard +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 + languageName: node + linkType: hard + "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -8649,6 +9234,16 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^4.0.1": + version: 4.1.5 + resolution: "lru-cache@npm:4.1.5" + dependencies: + pseudomap: ^1.0.2 + yallist: ^2.1.2 + checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -8733,6 +9328,20 @@ __metadata: languageName: node linkType: hard +"map-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed + languageName: node + linkType: hard + +"map-obj@npm:^4.0.0": + version: 4.3.0 + resolution: "map-obj@npm:4.3.0" + checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e + languageName: node + linkType: hard + "map-visit@npm:^1.0.0": version: 1.0.0 resolution: "map-visit@npm:1.0.0" @@ -8765,6 +9374,25 @@ __metadata: languageName: node linkType: hard +"meow@npm:^6.0.0": + version: 6.1.1 + resolution: "meow@npm:6.1.1" + dependencies: + "@types/minimist": ^1.2.0 + camelcase-keys: ^6.2.2 + decamelize-keys: ^1.1.0 + hard-rejection: ^2.1.0 + minimist-options: ^4.0.2 + normalize-package-data: ^2.5.0 + read-pkg-up: ^7.0.1 + redent: ^3.0.0 + trim-newlines: ^3.0.0 + type-fest: ^0.13.1 + yargs-parser: ^18.1.3 + checksum: 77b569781145ad030be77130623d9f74d6eef0af5e0a349419d3df39bcf6d88cc25be046a7757062162a88160fb5d8604e540b5177b371d2bbc2aaf73ec01479 + languageName: node + linkType: hard + "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" @@ -9164,7 +9792,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -9222,6 +9850,13 @@ __metadata: languageName: node linkType: hard +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 + languageName: node + linkType: hard + "minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" @@ -9247,6 +9882,17 @@ __metadata: languageName: node linkType: hard +"minimist-options@npm:^4.0.2": + version: 4.1.0 + resolution: "minimist-options@npm:4.1.0" + dependencies: + arrify: ^1.0.1 + is-plain-obj: ^1.1.0 + kind-of: ^6.0.3 + checksum: 8c040b3068811e79de1140ca2b708d3e203c8003eb9a414c1ab3cd467fc5f17c9ca02a5aef23bedc51a7f8bfbe77f87e9a7e31ec81fba304cda675b019496f4e + languageName: node + linkType: hard + "minimist@npm:^1.2.0, minimist@npm:^1.2.3": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -9341,6 +9987,13 @@ __metadata: languageName: node linkType: hard +"mixme@npm:^0.5.1": + version: 0.5.9 + resolution: "mixme@npm:0.5.9" + checksum: ec0e96b2fa099a051fe14477577e3da13f158690c64114a50ecd039694ca2cca1cb7c71a8755aaee8a3ef7229ef33408df822faa4d1d6123b52295eecf50620f + languageName: node + linkType: hard + "mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" @@ -9576,6 +10229,18 @@ __metadata: languageName: node linkType: hard +"normalize-package-data@npm:^2.5.0": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: ^2.1.4 + resolve: ^1.10.0 + semver: 2 || 3 || 4 || 5 + validate-npm-package-license: ^3.0.1 + checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 + languageName: node + linkType: hard + "normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -9838,13 +10503,29 @@ __metadata: languageName: node linkType: hard -"os-tmpdir@npm:^1.0.0": +"os-tmpdir@npm:^1.0.0, os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d languageName: node linkType: hard +"outdent@npm:^0.5.0": + version: 0.5.0 + resolution: "outdent@npm:0.5.0" + checksum: 6e6c63dd09e9890e67ef9a0b4d35df0b0b850b2059ce3f7e19e4cc1a146b26dc5d8c45df238dbf187dfffc8bd82cd07d37c697544015680bcb9f07f29a36c678 + languageName: node + linkType: hard + +"p-filter@npm:^2.1.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: ^2.0.0 + checksum: 76e552ca624ce2233448d68b19eec9de42b695208121998f7e011edce71d1079a83096ee6a2078fb2a59cfa8a5c999f046edf00ebf16a8e780022010b4693234 + languageName: node + linkType: hard + "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -9897,6 +10578,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -9932,7 +10620,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.2.0": +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -10113,6 +10801,18 @@ __metadata: languageName: node linkType: hard +"preferred-pm@npm:^3.0.0": + version: 3.0.3 + resolution: "preferred-pm@npm:3.0.3" + dependencies: + find-up: ^5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: ^4.0.0 + which-pm: 2.0.0 + checksum: 0de0948cb6ae22213f2ad7868032d89f1e1443d9caabc22ceeb9d284f19d359d65b67fab178f4db5c8c6ca6ae34642bdc72730b70ab1899ea158e2677a88a6d0 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -10129,6 +10829,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.7.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 + languageName: node + linkType: hard + "pretty-format@npm:^26.5.2, pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" @@ -10253,6 +10962,13 @@ __metadata: languageName: node linkType: hard +"pseudomap@npm:^1.0.2": + version: 1.0.2 + resolution: "pseudomap@npm:1.0.2" + checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -10314,6 +11030,13 @@ __metadata: languageName: node linkType: hard +"quick-lru@npm:^4.0.1": + version: 4.0.1 + resolution: "quick-lru@npm:4.0.1" + checksum: bea46e1abfaa07023e047d3cf1716a06172c4947886c053ede5c50321893711577cb6119360f810cc3ffcd70c4d7db4069c3cee876b358ceff8596e062bd1154 + languageName: node + linkType: hard + "randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -10441,6 +11164,17 @@ __metadata: languageName: node linkType: hard +"react-native-dotenv@npm:^3.4.8": + version: 3.4.8 + resolution: "react-native-dotenv@npm:3.4.8" + dependencies: + dotenv: ^16.0.3 + peerDependencies: + "@babel/runtime": ^7.20.6 + checksum: 8443cec44862d3e110f236b1120d8a1f829cb4545a85c8462e6c01935aa216f50b05eb659661db29939d4d293ce7de6212bf877963e3b37f6c900629f6546d67 + languageName: node + linkType: hard + "react-native-gradle-plugin@npm:^0.71.18": version: 0.71.18 resolution: "react-native-gradle-plugin@npm:0.71.18" @@ -10609,6 +11343,41 @@ __metadata: languageName: node linkType: hard +"read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: ^4.1.0 + read-pkg: ^5.2.0 + type-fest: ^0.8.1 + checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 + languageName: node + linkType: hard + +"read-pkg@npm:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": ^2.4.0 + normalize-package-data: ^2.5.0 + parse-json: ^5.0.0 + type-fest: ^0.6.0 + checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 + languageName: node + linkType: hard + +"read-yaml-file@npm:^1.1.0": + version: 1.1.0 + resolution: "read-yaml-file@npm:1.1.0" + dependencies: + graceful-fs: ^4.1.5 + js-yaml: ^3.6.1 + pify: ^4.0.1 + strip-bom: ^3.0.0 + checksum: 41ee5f075507ef0403328dd54e225a61c3149f915675ce7fd0fd791ddcce2e6c30a9fe0f76ffa7a465c1c157b9b4ad8ded1dcf47dc3b396103eeb013490bbc2e + languageName: node + linkType: hard + "readable-stream@npm:^3.1.1": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -10679,6 +11448,16 @@ __metadata: languageName: node linkType: hard +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: ^4.0.0 + strip-indent: ^3.0.0 + checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.1.0": version: 10.1.0 resolution: "regenerate-unicode-properties@npm:10.1.0" @@ -10871,6 +11650,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.10.0": + version: 1.22.3 + resolution: "resolve@npm:1.22.3" + dependencies: + is-core-module: ^2.12.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 + languageName: node + linkType: hard + "resolve@npm:^1.14.2, resolve@npm:^1.20.0": version: 1.22.1 resolution: "resolve@npm:1.22.1" @@ -10897,6 +11689,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^1.10.0#~builtin": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b" + dependencies: + is-core-module: ^2.12.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 + languageName: node + linkType: hard + "resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" @@ -11113,7 +11918,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^5.5.0, semver@npm:^5.6.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: @@ -11499,6 +12304,22 @@ __metadata: languageName: node linkType: hard +"smartwrap@npm:^2.0.2": + version: 2.0.2 + resolution: "smartwrap@npm:2.0.2" + dependencies: + array.prototype.flat: ^1.2.3 + breakword: ^1.0.5 + grapheme-splitter: ^1.0.4 + strip-ansi: ^6.0.0 + wcwidth: ^1.0.1 + yargs: ^15.1.0 + bin: + smartwrap: src/terminal-adapter.js + checksum: 1a6833eb1c3d8488b036df66dcab37dcdda5270bb9629c471155785c09ee1b591177a9774c588c43f8fa28833204500019265da2ffed28ac7bbf4589b943d2fa + languageName: node + linkType: hard + "snapdragon-node@npm:^2.0.1": version: 2.1.1 resolution: "snapdragon-node@npm:2.1.1" @@ -11634,6 +12455,50 @@ __metadata: languageName: node linkType: hard +"spawndamnit@npm:^2.0.0": + version: 2.0.0 + resolution: "spawndamnit@npm:2.0.0" + dependencies: + cross-spawn: ^5.1.0 + signal-exit: ^3.0.2 + checksum: c74b5e264ee5bc13d55692fd422d74c282e4607eb04ac64d19d06796718d89b14921620fa4237ec5635e7acdff21461670ff19850f210225410a353cad0d7fed + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" + dependencies: + spdx-expression-parse: ^3.0.0 + spdx-license-ids: ^3.0.0 + checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.3.0 + resolution: "spdx-exceptions@npm:2.3.0" + checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: ^2.1.0 + spdx-license-ids: ^3.0.0 + checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.13 + resolution: "spdx-license-ids@npm:3.0.13" + checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 + languageName: node + linkType: hard + "split-on-first@npm:^1.0.0": version: 1.1.0 resolution: "split-on-first@npm:1.1.0" @@ -11715,6 +12580,15 @@ __metadata: languageName: node linkType: hard +"stream-transform@npm:^2.1.3": + version: 2.1.3 + resolution: "stream-transform@npm:2.1.3" + dependencies: + mixme: ^0.5.1 + checksum: 26ce872a6812d5c784fa1f042bfd403644bc1c019f64627b5012c4544830a5570bef98b47225b38120c5878b326f3d1a213cd999a2285c98b536e5e202ca5bdf + languageName: node + linkType: hard + "strict-uri-encode@npm:^2.0.0": version: 2.0.0 resolution: "strict-uri-encode@npm:2.0.0" @@ -11867,6 +12741,13 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + languageName: node + linkType: hard + "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" @@ -11888,6 +12769,15 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: ^1.0.0 + checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -11920,6 +12810,7 @@ __metadata: version: 0.0.0-use.local resolution: "super-app-showcase@workspace:." dependencies: + "@changesets/cli": ^2.26.1 concurrently: ^7.6.0 languageName: unknown linkType: soft @@ -12023,6 +12914,13 @@ __metadata: languageName: node linkType: hard +"term-size@npm:^2.1.0": + version: 2.2.1 + resolution: "term-size@npm:2.2.1" + checksum: 1ed981335483babc1e8206f843e06bd2bf89b85f0bf5a9a9d928033a0fcacdba183c03ba7d91814643015543ba002f1339f7112402a21da8f24b6c56b062a5a9 + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.6": version: 5.3.6 resolution: "terser-webpack-plugin@npm:5.3.6" @@ -12115,6 +13013,15 @@ __metadata: languageName: node linkType: hard +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: ~1.0.2 + checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -12192,6 +13099,13 @@ __metadata: languageName: node linkType: hard +"trim-newlines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-newlines@npm:3.0.1" + checksum: b530f3fadf78e570cf3c761fb74fef655beff6b0f84b29209bac6c9622db75ad1417f4a7b5d54c96605dcd72734ad44526fef9f396807b90839449eb543c6206 + languageName: node + linkType: hard + "ts-object-utils@npm:0.0.5": version: 0.0.5 resolution: "ts-object-utils@npm:0.0.5" @@ -12231,6 +13145,23 @@ __metadata: languageName: node linkType: hard +"tty-table@npm:^4.1.5": + version: 4.2.1 + resolution: "tty-table@npm:4.2.1" + dependencies: + chalk: ^4.1.2 + csv: ^5.5.3 + kleur: ^4.1.5 + smartwrap: ^2.0.2 + strip-ansi: ^6.0.1 + wcwidth: ^1.0.1 + yargs: ^17.7.1 + bin: + tty-table: adapters/terminal-adapter.js + checksum: e058c0bd553c515d2ed908eb5f6a220a412e160168ef5c87847c62dacf78a7de9ccb548d7f6cd5edbcce2301c389ac2858c10aa330dccea2764809beb63d1d7b + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -12256,6 +13187,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.13.1": + version: 0.13.1 + resolution: "type-fest@npm:0.13.1" + checksum: e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -12270,6 +13208,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f + languageName: node + linkType: hard + "type-fest@npm:^0.7.1": version: 0.7.1 resolution: "type-fest@npm:0.7.1" @@ -12277,7 +13222,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.8.0": +"type-fest@npm:^0.8.0, type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 @@ -12560,6 +13505,16 @@ __metadata: languageName: node linkType: hard +"validate-npm-package-license@npm:^3.0.1": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: ^3.0.0 + spdx-expression-parse: ^3.0.0 + checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad + languageName: node + linkType: hard + "vary@npm:^1.1.2, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -12734,6 +13689,16 @@ __metadata: languageName: node linkType: hard +"which-pm@npm:2.0.0": + version: 2.0.0 + resolution: "which-pm@npm:2.0.0" + dependencies: + load-yaml-file: ^0.2.0 + path-exists: ^4.0.0 + checksum: e556635eaf237b3a101043a21c2890af045db40eac4df3575161d4fb834c2aa65456f81c60d8ea4db2d51fe5ac549d989eeabd17278767c2e4179361338ac5ce + languageName: node + linkType: hard + "which-typed-array@npm:^1.1.9": version: 1.1.9 resolution: "which-typed-array@npm:1.1.9" @@ -12903,6 +13868,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^2.1.2": + version: 2.1.2 + resolution: "yallist@npm:2.1.2" + checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -12917,7 +13889,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^18.1.2": +"yargs-parser@npm:^18.1.2, yargs-parser@npm:^18.1.3": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" dependencies: @@ -12990,6 +13962,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.7.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"