diff --git a/.changeset/shaggy-ads-arrive.md b/.changeset/shaggy-ads-arrive.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/shaggy-ads-arrive.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.cursor/rules/development.mdc b/.cursor/rules/development.mdc index d4121c5dc5c..f8e641d3f2f 100644 --- a/.cursor/rules/development.mdc +++ b/.cursor/rules/development.mdc @@ -113,7 +113,7 @@ Release Process Local Development Tips - Use playground applications to test changes quickly - Set up multiple test environments for different scenarios -- Use Verdaccio for local npm registry testing +- Use pkglab for local npm registry testing (`pkglab pub` to publish, `pkglab add` to install) - Leverage hot reloading for faster development cycles - Use proper IDE setup with TypeScript support diff --git a/.cursor/rules/monorepo.mdc b/.cursor/rules/monorepo.mdc index 5d00749620d..6759d6933cb 100644 --- a/.cursor/rules/monorepo.mdc +++ b/.cursor/rules/monorepo.mdc @@ -75,7 +75,7 @@ Environment Configuration - Supports multiple Clerk environment variables (CLERK*\*, NEXT_PUBLIC_CLERK*\*, etc.) - Development, staging, and production configurations -- Verdaccio for local npm registry testing +- pkglab for local npm registry testing - Docker support for integration testing - CI/CD with GitHub Actions diff --git a/.github/actions/init-blacksmith/action.yml b/.github/actions/init-blacksmith/action.yml index f779c356bd1..c5cfce60eac 100644 --- a/.github/actions/init-blacksmith/action.yml +++ b/.github/actions/init-blacksmith/action.yml @@ -119,6 +119,10 @@ runs: run: pnpm install shell: bash + - name: Add node_modules/.bin to PATH + run: echo "${{ github.workspace }}/node_modules/.bin" >> $GITHUB_PATH + shell: bash + - name: Get Playwright Version if: inputs.playwright-enabled == 'true' shell: bash diff --git a/.github/actions/init/action.yml b/.github/actions/init/action.yml index ef5b523c313..ffde9aadae0 100644 --- a/.github/actions/init/action.yml +++ b/.github/actions/init/action.yml @@ -119,6 +119,10 @@ runs: run: pnpm install shell: bash + - name: Add node_modules/.bin to PATH + run: echo "${{ github.workspace }}/node_modules/.bin" >> $GITHUB_PATH + shell: bash + - name: Get Playwright Version if: inputs.playwright-enabled == 'true' shell: bash diff --git a/.github/actions/verdaccio/action.yml b/.github/actions/verdaccio/action.yml deleted file mode 100644 index c3a14d3e2ec..00000000000 --- a/.github/actions/verdaccio/action.yml +++ /dev/null @@ -1,128 +0,0 @@ -name: Run Verdaccio -description: Checkout, setup node and dependencies -inputs: - auth-email: - description: 'The email to use for auth' - required: false - default: 'test@test.com' - auth-password: - description: 'The pass to use for auth' - required: false - default: 'pass' - auth-user: - description: 'The user to use for auth' - required: false - default: 'user' - publish-cmd: - description: 'The command to use to publish' - required: true - registry: - description: 'The registry to use' - required: false - default: 'http://localhost:4873' - -runs: - using: 'composite' - steps: - - name: Update NPM Registry to Verdaccio - shell: bash - run: pnpm set registry ${{ inputs.registry }} - - - name: Run Verdaccio (using publish config) - shell: bash - run: | - nohup ./node_modules/.bin/verdaccio --config ./verdaccio.publish.yaml & echo "VERDACCIO_PID=$!" >> $GITHUB_ENV - # Wait for Verdaccio to start and verify it's responding - for i in {1..10}; do - if curl -f ${{ inputs.registry }}/ > /dev/null 2>&1; then - echo "Verdaccio is up and running" - break - fi - echo "Waiting for Verdaccio to start (attempt $i)..." - sleep 2 - done - pnpm config set $(echo ${{ inputs.registry }} | sed -E 's/https?://')/:_authToken secretToken - - - name: Publish to Verdaccio - shell: bash - run: ${{ inputs.publish-cmd }} - - - name: Stop Verdaccio - shell: bash - run: | - if [ -n "$VERDACCIO_PID" ]; then - kill -9 $VERDACCIO_PID || true - sleep 2 - fi - - - name: Run Verdaccio (using install config) - shell: bash - run: | - nohup ./node_modules/.bin/verdaccio --config ./verdaccio.install.yaml & echo "VERDACCIO_PID=$!" >> $GITHUB_ENV - # Wait for Verdaccio to start and verify it's responding - for i in {1..10}; do - if curl -f ${{ inputs.registry }}/ > /dev/null 2>&1; then - echo "Verdaccio is up and running" - break - fi - echo "Waiting for Verdaccio to start (attempt $i)..." - sleep 2 - done - pnpm config set $(echo ${{ inputs.registry }} | sed -E 's/https?://')/:_authToken secretToken - - # Verify proxy is working by testing multiple packages with retries - # These packages are known transitive dependencies that have caused CI failures - test_packages=("semver" "browserslist" "update-browserslist-db") - max_retries=3 - retry_delay=2 - - for pkg in "${test_packages[@]}"; do - echo "Verifying proxy can fetch: $pkg" - for attempt in $(seq 1 $max_retries); do - if pnpm view "$pkg" version > /dev/null 2>&1; then - echo "✓ Successfully fetched $pkg" - break - fi - if [ $attempt -eq $max_retries ]; then - echo "✗ Failed to fetch $pkg after $max_retries attempts" - echo "Proxy verification failed - this may cause integration test failures" - exit 1 - fi - echo " Attempt $attempt failed, retrying in ${retry_delay}s..." - sleep $retry_delay - done - done - echo "Proxy verification complete - all test packages accessible" - - - name: Print published Clerk package versions - shell: bash - run: | - echo "Published @clerk packages (snapshot versions):" - echo "==================================================" - packages=( - "@clerk/agent-toolkit" - "@clerk/astro" - "@clerk/backend" - "@clerk/chrome-extension" - "@clerk/clerk-js" - "@clerk/dev-cli" - "@clerk/expo" - "@clerk/expo-passkeys" - "@clerk/express" - "@clerk/fastify" - "@clerk/localizations" - "@clerk/nextjs" - "@clerk/nuxt" - "@clerk/react" - "@clerk/react-router" - "@clerk/shared" - "@clerk/tanstack-react-start" - "@clerk/testing" - "@clerk/ui" - "@clerk/upgrade" - "@clerk/vue" - ) - for pkg in "${packages[@]}"; do - version=$(pnpm view "$pkg" version 2>/dev/null || echo "not found") - printf "%-35s %s\n" "$pkg:" "$version" - done diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0b0e25a5f4..af4636a3679 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -379,38 +379,24 @@ jobs: echo "affected=${AFFECTED}" echo "affected=${AFFECTED}" >> $GITHUB_OUTPUT - - name: Version packages for snapshot + - name: Build packages if: ${{ steps.task-status.outputs.affected == '1' }} - run: npm run version-packages:snapshot ci + run: pnpm turbo build $TURBO_ARGS --only - - name: Verdaccio + - name: Publish to local registry if: ${{ steps.task-status.outputs.affected == '1' }} - uses: ./.github/actions/verdaccio - with: - publish-cmd: | - if [ "$(pnpm config get registry)" = "https://registry.npmjs.org/" ]; then echo 'Error: Using default registry' && exit 1; else pnpm turbo build $TURBO_ARGS --only && pnpm changeset publish --no-git-tag --tag latest; fi + run: pkglab pub --force - name: Edit .npmrc [link-workspace-packages=false] run: sed -i -E 's/link-workspace-packages=(deep|true)/link-workspace-packages=false/' .npmrc - - name: Install @clerk/backend in /integration - if: ${{ steps.task-status.outputs.affected == '1' }} - working-directory: ./integration - run: | - pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/backend - - # Install published packages from Verdaccio to test against real npm install scenarios - # rather than local monorepo builds. Validates package structure, dependencies, and entry points. - name: Install @clerk/clerk-js in os temp if: ${{ steps.task-status.outputs.affected == '1' }} working-directory: ${{runner.temp}} run: | mkdir clerk-js && cd clerk-js pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/clerk-js + pkglab add @clerk/clerk-js - name: Install @clerk/ui in os temp if: ${{ steps.task-status.outputs.affected == '1' }} @@ -418,8 +404,7 @@ jobs: run: | mkdir clerk-ui && cd clerk-ui pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/ui + pkglab add @clerk/ui - name: Copy components @clerk/astro if: ${{ matrix.test-name == 'astro' }} diff --git a/.github/workflows/e2e-cleanups.yml b/.github/workflows/e2e-cleanups.yml index e6770240ba1..3ef23266d2b 100644 --- a/.github/workflows/e2e-cleanups.yml +++ b/.github/workflows/e2e-cleanups.yml @@ -27,15 +27,8 @@ jobs: turbo-token: ${{ secrets.TURBO_TOKEN }} playwright-enabled: true - - name: Verdaccio - uses: ./.github/actions/verdaccio - with: - publish-cmd: | - if [ "$(pnpm config get registry)" = "https://registry.npmjs.org/" ]; then echo 'Error: Using default registry' && exit 1; else pnpm turbo build $TURBO_ARGS --only && pnpm changeset publish --no-git-tag; fi - - - name: Install @clerk/backend in /integration - working-directory: ./integration - run: pnpm init && pnpm add @clerk/backend + - name: Build packages + run: pnpm turbo build $TURBO_ARGS --only - name: Run cleanup run: pnpm test:integration:cleanup diff --git a/.github/workflows/nightly-checks.yml b/.github/workflows/nightly-checks.yml index 5b3afbc094f..17c5f756427 100644 --- a/.github/workflows/nightly-checks.yml +++ b/.github/workflows/nightly-checks.yml @@ -32,37 +32,25 @@ jobs: turbo-token: ${{ secrets.TURBO_TOKEN }} playwright-enabled: true - - name: Version packages for snapshot - run: npm run version-packages:snapshot ci + - name: Build packages + run: pnpm turbo build $TURBO_ARGS --only - - name: Verdaccio - uses: ./.github/actions/verdaccio - with: - publish-cmd: | - if [ "$(pnpm config get registry)" = "https://registry.npmjs.org/" ]; then echo 'Error: Using default registry' && exit 1; else pnpm turbo build $TURBO_ARGS --only && pnpm changeset publish --no-git-tag --tag latest; fi - - - name: Install @clerk/backend in /integration - working-directory: ./integration - run: | - pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/backend + - name: Publish to local registry + run: pkglab pub --force - name: Install @clerk/clerk-js in os temp working-directory: ${{runner.temp}} run: | mkdir clerk-js && cd clerk-js pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/clerk-js + pkglab add @clerk/clerk-js - name: Install @clerk/ui in os temp working-directory: ${{runner.temp}} run: | mkdir clerk-ui && cd clerk-ui pnpm init - pnpm config set minimum-release-age-exclude @clerk/* - pnpm add @clerk/ui + pkglab add @clerk/ui - name: Run Integration Tests id: integration_tests @@ -81,9 +69,7 @@ jobs: E2E_APP_CLERK_JS_DIR: ${{runner.temp}} E2E_APP_CLERK_UI_DIR: ${{runner.temp}} # Don't set E2E_CLERK_JS_VERSION - let it use '*' (via linkPackage) - # which matches any version including snapshots from verdaccio. - # Using "latest" would fail since snapshot packages don't have - # the "latest" dist-tag, causing fallback to npm's stable version. + # which resolves via pkglab add in the integration test setup E2E_NEXTJS_VERSION: "canary" E2E_NPM_FORCE: "true" E2E_REACT_DOM_VERSION: "19.2.3" diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml deleted file mode 100644 index 5252a7226dd..00000000000 --- a/.github/workflows/preview.yml +++ /dev/null @@ -1,163 +0,0 @@ -name: Deploy Preview -run-name: Deploy Preview by ${{ github.actor }} - -env: - COMMENT_HEADER: javascript-preview - -on: - issue_comment: - types: [created] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.actor }} - cancel-in-progress: true - -jobs: - preview: - if: ${{ startsWith(github.event.comment.body, '!preview') && github.repository == 'clerk/javascript' && github.event.issue.pull_request }} - runs-on: ${{ vars.RUNNER_NORMAL || 'ubuntu-latest' }} - timeout-minutes: ${{ vars.TIMEOUT_MINUTES_NORMAL && fromJSON(vars.TIMEOUT_MINUTES_NORMAL) || 10 }} - - env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_CLERK_PROD_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_JS_PREVIEW_PROJECT_ID }} - - permissions: - contents: write - pull-requests: write - - steps: - - name: Limit action to Clerk members - uses: actions/github-script@v7 - with: - result-encoding: string - retries: 3 - retry-exempt-status-codes: 400,401 - github-token: ${{ secrets.CLERK_COOKIE_PAT }} - script: | - const isMember = await github.rest.orgs.checkMembershipForUser({ - org: 'clerk', - username: context.actor - }); - if (!isMember) { - core.setFailed(`@${actor} is not a member of the Clerk organization`); - } - - - name: Checkout repo - uses: actions/checkout@v4 - with: - ref: refs/pull/${{ github.event.issue.number }}/head - fetch-depth: 1 - fetch-tags: false - filter: "blob:none" - - - name: Ensure the PR hasn't changed since initiating the !preview command. - uses: actions/github-script@v7 - with: - result-encoding: string - retries: 3 - retry-exempt-status-codes: 400,401 - github-token: ${{ secrets.CLERK_COOKIE_PAT }} - script: | - const commentCreated = new Date(context.payload.comment.created_at); - - const pr = await github.rest.pulls.get({ - owner: 'clerk', - repo: 'javascript', - pull_number: context.issue.number, - }); - - const prLastUpdated = new Date(pr.updated_at); - - if (prLastUpdated > commentCreated) { - core.setFailed("The PR has been updated since !preview was initiated. Please review the changes and re-run the !preview command."); - } - - - name: Setup - id: config - uses: ./.github/actions/init - with: - turbo-signature: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }} - turbo-team: ${{ vars.TURBO_TEAM }} - turbo-token: ${{ secrets.TURBO_TOKEN }} - registry-url: "https://registry.npmjs.org" - - - name: Build packages - run: pnpm turbo build $TURBO_ARGS - - - name: Get date - run: | - echo "DATE=$(date -u +"%b %d, %Y %I:%M %p")" >> $GITHUB_ENV - - - name: Install site in isolation - run: node scripts/install-site-in-isolation.mjs playground/nextjs - - - name: Install Vercel CLI - run: pnpm add -g vercel@latest - - - name: Pull Vercel environment information - run: | - cd $FULL_TMP_FOLDER - vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_CLERK_COOKIE_TOKEN }} - - - name: Copy clerk-js/dist into public/clerk-js of test site - run: | - cp -r $GITHUB_WORKSPACE/packages/clerk-js/dist $FULL_TMP_FOLDER/public/clerk-js - - - name: Copy ui/dist/browser into public/clerk-ui of test site - run: | - cp -r $GITHUB_WORKSPACE/packages/ui/dist/browser $FULL_TMP_FOLDER/public/clerk-ui - - - name: Build with Vercel - run: | - cd $FULL_TMP_FOLDER - vercel build --yes - env: - NEXT_PUBLIC_CLERK_JS_URL: /clerk-js/clerk.browser.js - NEXT_PUBLIC_CLERK_UI_URL: /clerk-ui/ui.browser.js - - - name: Deploy to Vercel (prebuilt) - id: vercel-deploy - run: | - cd $FULL_TMP_FOLDER - vercel deploy --prebuilt --token=${{ secrets.VERCEL_CLERK_COOKIE_TOKEN }} --no-wait > deployment_url.txt - echo "url=$(cat deployment_url.txt)" >> $GITHUB_OUTPUT - - - name: Create preview comment - Deploying - uses: marocchino/sticky-pull-request-comment@v2.8.0 - with: - GITHUB_TOKEN: ${{ secrets.CLERK_COOKIE_PAT }} - number: ${{ github.event.issue.number }} - header: ${{ env.COMMENT_HEADER}} - message: | - Hey @${{ github.event.comment.user.login }}, your preview is currently deploying and should be available shortly. - - | Status | Preview | Updated (UTC) | - | :-- | :-- | :-- | - | :cook: _Deploying..._ | [Inspect](${{ steps.vercel-deploy.outputs.url }}) | ${{ env.DATE }} | - - - name: Get date - run: | - echo "DATE=$(date -u +"%b %d, %Y %I:%M %p")" >> $GITHUB_ENV - - - name: Wait for deployment - id: vercel-wait-for-deploy - run: | - vercel inspect --token=${{ secrets.VERCEL_CLERK_COOKIE_TOKEN }} --wait ${{ steps.vercel-deploy.outputs.url }} --timeout 10m --scope clerk-production - vercel alias set ${{ steps.vercel-deploy.outputs.url }} javascript-preview-${{ github.event.issue.number }}.clerkpreview.com --token=${{ secrets.VERCEL_CLERK_COOKIE_TOKEN }} --scope clerk-production - echo "stable_url=https://javascript-preview-${{ github.event.issue.number }}.clerkpreview.com" >> $GITHUB_OUTPUT - - - name: Create preview comment - Deployed - uses: marocchino/sticky-pull-request-comment@v2.8.0 - with: - GITHUB_TOKEN: ${{ secrets.CLERK_COOKIE_PAT }} - number: ${{ github.event.issue.number }} - header: ${{ env.COMMENT_HEADER }} - message: | - Hey @${{ github.event.comment.user.login }}, your preview is available. - - | Status | Preview | Updated (UTC) | - | :-- | :-- | :-- | - | :cookie: Deployed | [Visit preview](${{ steps.vercel-wait-for-deploy.outputs.stable_url }}) | ${{ env.DATE }} | - - diff --git a/.gitignore b/.gitignore index 87655c15d80..7d1b4dc876a 100644 --- a/.gitignore +++ b/.gitignore @@ -84,7 +84,7 @@ test-results sessions-key.pem sessions.pem -# Verdaccio +# pkglab / Verdaccio local registry .verdaccio # Release preflight diff --git a/integration/README.md b/integration/README.md index ff565b2cce5..050bee3f64f 100644 --- a/integration/README.md +++ b/integration/README.md @@ -19,6 +19,14 @@ Before you begin writing tests, you should already have: - Access to the **Integration testing** organization on Clerk (it owns the Clerk instances used in the tests) - Chromium installed. Run `pnpm playwright install chromium`. - WebKit installed. Run `pnpm playwright install webkit`. +- pkglab installed. Run `npm install -g pkglab`. + +Integration tests install Clerk packages from a local registry managed by pkglab. Before running tests: + +1. Publish packages: `pkglab pub` (builds and publishes to local registry) +2. Run tests: `pnpm test:integration:base` + +After making changes to packages, re-run `pkglab pub` to update the registry. ## Initial setup diff --git a/integration/models/application.ts b/integration/models/application.ts index fd4a4d00fa6..fdd83e09a22 100644 --- a/integration/models/application.ts +++ b/integration/models/application.ts @@ -47,7 +47,13 @@ export const application = ( const nodeModulesExist = await fs.pathExists(path.resolve(appDirPath, 'node_modules')); if (force || !nodeModulesExist) { const log = logger.child({ prefix: 'setup' }).info; - await run(scripts.setup, { cwd: appDirPath, log }); + // Use pkglab add to install packages from the local registry + const pkglabDeps = config.pkglabDependencies; + if (pkglabDeps.length > 0) { + await run(`pkglab add ${pkglabDeps.join(' ')}`, { cwd: appDirPath, log }); + } else { + await run(scripts.setup, { cwd: appDirPath, log }); + } state.completedSetup = true; // Print all Clerk package versions (direct and transitive) const clerkPackagesLog = logger.child({ prefix: 'clerk-packages' }).info; diff --git a/integration/models/applicationConfig.ts b/integration/models/applicationConfig.ts index 343378f8c67..1416ba8587f 100644 --- a/integration/models/applicationConfig.ts +++ b/integration/models/applicationConfig.ts @@ -3,6 +3,7 @@ import * as path from 'node:path'; import type { AccountlessApplication } from '@clerk/backend'; import { constants } from '../constants'; +import { PKGLAB } from '../presets/utils'; import { createLogger, fs } from '../scripts'; import { application } from './application'; import type { EnvironmentConfig } from './environment'; @@ -21,8 +22,6 @@ export const applicationConfig = () => { const envFormatters = { public: (key: string) => key, private: (key: string) => key }; const logger = createLogger({ prefix: 'appConfig', color: 'yellow' }); const dependencies = new Map(); - const resolutions = new Map(); - const self = { clone: () => { const clone = applicationConfig(); @@ -33,7 +32,6 @@ export const applicationConfig = () => { clone.useTemplate(template); } dependencies.forEach((v, k) => clone.addDependency(k, v)); - resolutions.forEach((v, k) => clone.addResolution(k, v)); Object.entries(scripts).forEach(([k, v]) => clone.addScript(k as keyof typeof scripts, v)); files.forEach((v, k) => clone.addFile(k, () => v)); return clone; @@ -78,10 +76,6 @@ export const applicationConfig = () => { } return self; }, - addResolution: (name: string, version: string) => { - resolutions.set(name, version); - return self; - }, /** * Creates a new application directory and copies the template files (and any overrides) to it. * The application directory is created in the `constants.TMP_DIR` directory. @@ -122,21 +116,13 @@ export const applicationConfig = () => { }), ); - // Adjust package.json dependencies - if (dependencies.size > 0) { + // Adjust package.json dependencies (skip pkglab deps, those are handled by pkglab add) + const npmDeps = [...dependencies.entries()].filter(([, version]) => version !== PKGLAB); + if (npmDeps.length > 0) { const packageJsonPath = path.resolve(appDirPath, 'package.json'); logger.info(`Modifying dependencies in "${packageJsonPath}"`); const contents = await fs.readJSON(packageJsonPath); - contents.dependencies = { ...contents.dependencies, ...Object.fromEntries(dependencies) }; - await fs.writeJSON(packageJsonPath, contents, { spaces: 2 }); - } - - // Adjust package.json resolutions - if (resolutions.size > 0) { - const packageJsonPath = path.resolve(appDirPath, 'package.json'); - logger.info(`Modifying resolutions in "${packageJsonPath}"`); - const contents = await fs.readJSON(packageJsonPath); - contents.resolutions = { ...contents.resolutions, ...Object.fromEntries(resolutions) }; + contents.dependencies = { ...contents.dependencies, ...Object.fromEntries(npmDeps) }; await fs.writeJSON(packageJsonPath, contents, { spaces: 2 }); } @@ -151,6 +137,9 @@ export const applicationConfig = () => { get scripts() { return scripts; }, + get pkglabDependencies() { + return [...dependencies.entries()].filter(([, version]) => version === PKGLAB).map(([name]) => name); + }, get copyKeylessToEnv() { const writer = async (appDir: string) => { const CONFIG_PATH = path.join(appDir, '.clerk', '.tmp', 'keyless.json'); diff --git a/integration/presets/astro.ts b/integration/presets/astro.ts index 5b6b941485e..f41b9644a39 100644 --- a/integration/presets/astro.ts +++ b/integration/presets/astro.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const astroNode = applicationConfig() .setName('astro-node') @@ -10,13 +10,10 @@ const astroNode = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/astro', linkPackage('astro')) - .addDependency('@clerk/backend', linkPackage('backend')) - .addDependency('@clerk/shared', linkPackage('shared')) - .addDependency('@clerk/localizations', linkPackage('localizations')) - // Resolutions ensure the tarball's transitive dependencies use our local packages - .addResolution('@clerk/backend', linkPackage('backend')) - .addResolution('@clerk/shared', linkPackage('shared')); + .addDependency('@clerk/astro', PKGLAB) + .addDependency('@clerk/backend', PKGLAB) + .addDependency('@clerk/shared', PKGLAB) + .addDependency('@clerk/localizations', PKGLAB); const astroStatic = astroNode.clone().setName('astro-hybrid').useTemplate(templates['astro-hybrid']); diff --git a/integration/presets/custom-flows.ts b/integration/presets/custom-flows.ts index 236967404b8..1015975fb63 100644 --- a/integration/presets/custom-flows.ts +++ b/integration/presets/custom-flows.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const reactVite = applicationConfig() .setName('custom-flows-react-vite') @@ -10,9 +10,9 @@ const reactVite = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/react', linkPackage('react')) - .addDependency('@clerk/shared', linkPackage('shared')) - .addDependency('@clerk/ui', linkPackage('ui')); + .addDependency('@clerk/react', PKGLAB) + .addDependency('@clerk/shared', PKGLAB) + .addDependency('@clerk/ui', PKGLAB); export const customFlows = { reactVite, diff --git a/integration/presets/expo.ts b/integration/presets/expo.ts index ad692fd2268..9d16f44fadf 100644 --- a/integration/presets/expo.ts +++ b/integration/presets/expo.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const expoWeb = applicationConfig() .setName('expo-web') @@ -10,7 +10,7 @@ const expoWeb = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/expo', linkPackage('expo')); + .addDependency('@clerk/expo', PKGLAB); export const expo = { expoWeb, diff --git a/integration/presets/express.ts b/integration/presets/express.ts index 3a0ee82f392..6e940f933d8 100644 --- a/integration/presets/express.ts +++ b/integration/presets/express.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const vite = applicationConfig() .setName('express-vite') @@ -10,9 +10,9 @@ const vite = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/express', linkPackage('express')) - .addDependency('@clerk/clerk-js', linkPackage('clerk-js')) - .addDependency('@clerk/ui', linkPackage('ui')); + .addDependency('@clerk/express', PKGLAB) + .addDependency('@clerk/clerk-js', PKGLAB) + .addDependency('@clerk/ui', PKGLAB); export const express = { vite, diff --git a/integration/presets/next.ts b/integration/presets/next.ts index ae212742525..72252a434c8 100644 --- a/integration/presets/next.ts +++ b/integration/presets/next.ts @@ -1,7 +1,7 @@ import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const appRouter = applicationConfig() .setName('next-app-router') @@ -14,8 +14,8 @@ const appRouter = applicationConfig() .addDependency('next', constants.E2E_NEXTJS_VERSION) .addDependency('react', constants.E2E_REACT_VERSION) .addDependency('react-dom', constants.E2E_REACT_DOM_VERSION) - .addDependency('@clerk/nextjs', constants.E2E_CLERK_JS_VERSION || linkPackage('nextjs')) - .addDependency('@clerk/shared', linkPackage('shared')); + .addDependency('@clerk/nextjs', PKGLAB) + .addDependency('@clerk/shared', PKGLAB); const appRouterTurbo = appRouter.clone().setName('next-app-router-turbopack').addScript('dev', 'pnpm dev'); @@ -47,9 +47,9 @@ const appRouterBundledUI = applicationConfig() .addDependency('next', constants.E2E_NEXTJS_VERSION) .addDependency('react', constants.E2E_REACT_VERSION) .addDependency('react-dom', constants.E2E_REACT_DOM_VERSION) - .addDependency('@clerk/nextjs', constants.E2E_CLERK_JS_VERSION || linkPackage('nextjs')) - .addDependency('@clerk/shared', linkPackage('shared')) - .addDependency('@clerk/ui', constants.E2E_CLERK_UI_VERSION || linkPackage('ui')); + .addDependency('@clerk/nextjs', PKGLAB) + .addDependency('@clerk/shared', PKGLAB) + .addDependency('@clerk/ui', PKGLAB); const cacheComponents = applicationConfig() .setName('next-cache-components') @@ -59,8 +59,8 @@ const cacheComponents = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/nextjs', constants.E2E_CLERK_JS_VERSION || linkPackage('nextjs')) - .addDependency('@clerk/shared', linkPackage('shared')); + .addDependency('@clerk/nextjs', PKGLAB) + .addDependency('@clerk/shared', PKGLAB); export const next = { appRouter, diff --git a/integration/presets/nuxt.ts b/integration/presets/nuxt.ts index 5e7973ede02..6ae1ed81b03 100644 --- a/integration/presets/nuxt.ts +++ b/integration/presets/nuxt.ts @@ -1,7 +1,7 @@ import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const nuxtNode = applicationConfig() .setName('nuxt-node') @@ -12,9 +12,9 @@ const nuxtNode = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/nuxt', constants.E2E_CLERK_JS_VERSION || linkPackage('nuxt')) - .addDependency('@clerk/shared', linkPackage('shared')) - .addDependency('@clerk/vue', linkPackage('vue')); + .addDependency('@clerk/nuxt', PKGLAB) + .addDependency('@clerk/shared', PKGLAB) + .addDependency('@clerk/vue', PKGLAB); export const nuxt = { node: nuxtNode, diff --git a/integration/presets/react-router.ts b/integration/presets/react-router.ts index da2bf124c05..99e2d40abac 100644 --- a/integration/presets/react-router.ts +++ b/integration/presets/react-router.ts @@ -1,7 +1,6 @@ -import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const reactRouterNode = applicationConfig() .setName('react-router-node') @@ -11,7 +10,7 @@ const reactRouterNode = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/react-router', constants.E2E_CLERK_JS_VERSION || linkPackage('react-router')); + .addDependency('@clerk/react-router', PKGLAB); const reactRouterLibrary = applicationConfig() .setName('react-router-library') @@ -21,7 +20,7 @@ const reactRouterLibrary = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/react-router', constants.E2E_CLERK_JS_VERSION || linkPackage('react-router')); + .addDependency('@clerk/react-router', PKGLAB); export const reactRouter = { reactRouterNode, diff --git a/integration/presets/react.ts b/integration/presets/react.ts index 863e17b106c..90af667b46e 100644 --- a/integration/presets/react.ts +++ b/integration/presets/react.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const cra = applicationConfig() .setName('react-cra') @@ -10,9 +10,9 @@ const cra = applicationConfig() .addScript('dev', 'pnpm start') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/react', linkPackage('react')) - .addDependency('@clerk/shared', linkPackage('shared')) - .addDependency('@clerk/ui', linkPackage('ui')); + .addDependency('@clerk/react', PKGLAB) + .addDependency('@clerk/shared', PKGLAB) + .addDependency('@clerk/ui', PKGLAB); const vite = cra .clone() diff --git a/integration/presets/tanstack.ts b/integration/presets/tanstack.ts index 6460c20f20b..a5acf81cda2 100644 --- a/integration/presets/tanstack.ts +++ b/integration/presets/tanstack.ts @@ -1,6 +1,6 @@ import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const reactStart = applicationConfig() .setName('tanstack-react-start') @@ -10,7 +10,7 @@ const reactStart = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm start') - .addDependency('@clerk/tanstack-react-start', linkPackage('tanstack-react-start')); + .addDependency('@clerk/tanstack-react-start', PKGLAB); export const tanstack = { reactStart, diff --git a/integration/presets/utils.ts b/integration/presets/utils.ts index b776eb91bfe..8fca27ae2c3 100644 --- a/integration/presets/utils.ts +++ b/integration/presets/utils.ts @@ -1,51 +1,5 @@ -import { execSync } from 'node:child_process'; -import fs from 'node:fs'; -import os from 'node:os'; -import path from 'node:path'; - -const tarballCache = new Map(); - -const PACKAGES_REQUIRING_TARBALL = ['astro']; - /** - * Creates a tarball of a package and returns the file: protocol path to it. - * This is needed for packages containing .astro files because Astro's Vite - * plugin cannot properly resolve paths in symlinked packages. + * Marker value indicating a dependency should be resolved from the local + * pkglab registry rather than npm. Use as the version in addDependency(). */ -function createPackageTarball(pkg: string): string { - if (tarballCache.has(pkg)) { - return tarballCache.get(pkg); - } - - const pkgPath = path.resolve(process.cwd(), `packages/${pkg}`); - const tmpDir = path.join(os.tmpdir(), '.clerk-integration-tarballs'); - - fs.mkdirSync(tmpDir, { recursive: true }); - - const result = execSync('pnpm pack --pack-destination ' + tmpDir, { - cwd: pkgPath, - encoding: 'utf-8', - }); - - const tgzPath = result.trim().split('\n').pop(); - const tarballPath = `file:${tgzPath}`; - - tarballCache.set(pkg, tarballPath); - return tarballPath; -} - -export function linkPackage(pkg: string) { - // eslint-disable-next-line turbo/no-undeclared-env-vars - if (process.env.CI === 'true') { - // In CI, use '*' to get the latest version from Verdaccio - // which will be the snapshot version we just published - return '*'; - } - - // See: https://github.com/withastro/astro/issues/8312 - if (PACKAGES_REQUIRING_TARBALL.includes(pkg)) { - return createPackageTarball(pkg); - } - - return `link:${path.resolve(process.cwd(), `packages/${pkg}`)}`; -} +export const PKGLAB = 'pkglab'; diff --git a/integration/presets/vue.ts b/integration/presets/vue.ts index 85272d2c836..5f4620760e6 100644 --- a/integration/presets/vue.ts +++ b/integration/presets/vue.ts @@ -1,7 +1,6 @@ -import { constants } from '../constants'; import { applicationConfig } from '../models/applicationConfig'; import { templates } from '../templates'; -import { linkPackage } from './utils'; +import { PKGLAB } from './utils'; const vite = applicationConfig() .setName('vue-vite') @@ -11,8 +10,8 @@ const vite = applicationConfig() .addScript('dev', 'pnpm dev') .addScript('build', 'pnpm build') .addScript('serve', 'pnpm preview') - .addDependency('@clerk/vue', constants.E2E_CLERK_JS_VERSION || linkPackage('vue')) - .addDependency('@clerk/localizations', linkPackage('localizations')); + .addDependency('@clerk/vue', PKGLAB) + .addDependency('@clerk/localizations', PKGLAB); export const vue = { vite, diff --git a/integration/templates/astro-hybrid/astro.config.mjs b/integration/templates/astro-hybrid/astro.config.mjs index 8568979754d..2fc27645f9c 100644 --- a/integration/templates/astro-hybrid/astro.config.mjs +++ b/integration/templates/astro-hybrid/astro.config.mjs @@ -1,9 +1,12 @@ import { defineConfig } from 'astro/config'; +import node from '@astrojs/node'; import clerk from '@clerk/astro'; import react from '@astrojs/react'; export default defineConfig({ - output: 'hybrid', + adapter: node({ + mode: 'standalone', + }), integrations: [ clerk({ appearance: { diff --git a/integration/templates/astro-hybrid/package.json b/integration/templates/astro-hybrid/package.json index 0577b94f676..76cd6fd3c0a 100644 --- a/integration/templates/astro-hybrid/package.json +++ b/integration/templates/astro-hybrid/package.json @@ -12,10 +12,10 @@ "dependencies": { "@astrojs/check": "^0.9.4", "@astrojs/node": "^9.4.2", - "@astrojs/react": "^3.6.2", + "@astrojs/react": "^4.0.0", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", - "astro": "^4.15.11", + "astro": "^5.15.9", "react": "18.3.1", "react-dom": "18.3.1", "typescript": "^5.7.3" diff --git a/integration/tests/next-build.test.ts b/integration/tests/next-build.test.ts index ffdba908205..697384b9922 100644 --- a/integration/tests/next-build.test.ts +++ b/integration/tests/next-build.test.ts @@ -2,7 +2,7 @@ import { expect, test } from '@playwright/test'; import type { Application } from '../models/application'; import { appConfigs } from '../presets'; -import { linkPackage } from '../presets/utils'; +import { PKGLAB } from '../presets/utils'; type RenderingModeTestCase = { name: string; @@ -32,7 +32,7 @@ test.describe('next build - bundled UI with react-server condition @nextjs', () test.setTimeout(90_000); // Wait for app to be ready app = await appConfigs.next.appRouter .clone() - .addDependency('@clerk/ui', linkPackage('ui')) + .addDependency('@clerk/ui', PKGLAB) .addFile( 'src/app/layout.tsx', () => `import './globals.css'; diff --git a/package.json b/package.json index e63bdd9400e..c3a168ad486 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,6 @@ "lint:inspect": "pnpx @eslint/config-inspector@latest", "lint:packages": "FORCE_COLOR=1 turbo lint", "lint:publint": "FORCE_COLOR=1 turbo lint:publint", - "local:registry:down": "./scripts/local-registry.sh down", - "local:registry:pub": "./scripts/local-registry.sh pub", - "local:registry:up": "./scripts/local-registry.sh up", "nuke": "node ./scripts/nuke.mjs", "prepare": "husky install", "pub": "pkglab pub", @@ -35,7 +32,6 @@ "release:canary-core3": "changeset publish --tag canary-core3 --no-git-tag", "release:snapshot": "changeset publish --tag snapshot --no-git-tag", "release:status": "changeset status --output .changeset-status.json", - "release:verdaccio": "if [ \"$(npm config get registry)\" = \"https://registry.npmjs.org/\" ]; then echo 'Error: Using default registry' && exit 1; else TURBO_CONCURRENCY=1 pnpm build && changeset publish --no-git-tag; fi", "test": "FORCE_COLOR=1 turbo test --concurrency=${TURBO_CONCURRENCY:-80%}", "test:cache:clear": "FORCE_COLOR=1 turbo test:cache:clear --continue --concurrency=${TURBO_CONCURRENCY:-80%}", "test:integration:ap-flows": "E2E_DEBUG=1 pnpm test:integration:base --grep @ap-flows", @@ -133,7 +129,8 @@ "json5": "2.2.3", "jsonwebtoken": "9.0.2", "lint-staged": "^14.0.1", - "pkglab": "^0.11.1", + "pkglab": "^0.13.3", + "pkglab-linux-x64": "^0.13.3", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-packagejson": "^2.5.15", @@ -156,7 +153,6 @@ "typescript": "catalog:repo", "typescript-eslint": "8.38.0", "uuid": "8.3.2", - "verdaccio": "6.1.6", "vitest": "3.2.4", "zx": "catalog:repo" }, diff --git a/packages/astro/package.json b/packages/astro/package.json index 629a0a770f5..0d5df0a8f0e 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -97,7 +97,7 @@ }, "devDependencies": { "@clerk/ui": "workspace:^", - "astro": "^5.17.1" + "astro": "^5.15.9" }, "peerDependencies": { "astro": "^4.15.0 || ^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ebfd5c54ac..e60ad434e8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -261,8 +261,11 @@ importers: specifier: ^14.0.1 version: 14.0.1(enquirer@2.4.1) pkglab: - specifier: ^0.11.1 - version: 0.11.1 + specifier: ^0.13.3 + version: 0.13.3 + pkglab-linux-x64: + specifier: ^0.13.3 + version: 0.13.3 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -329,9 +332,6 @@ importers: uuid: specifier: 8.3.2 version: 8.3.2 - verdaccio: - specifier: 6.1.6 - version: 6.1.6(typanion@3.14.0) vitest: specifier: 3.2.4 version: 3.2.4(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.19.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(msw@2.11.6(@types/node@22.19.0)(typescript@5.8.3))(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) @@ -386,7 +386,7 @@ importers: specifier: workspace:^ version: link:../ui astro: - specifier: ^5.17.1 + specifier: ^5.15.9 version: 5.17.1(@types/node@22.19.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.1)(terser@5.44.1)(tsx@4.20.6)(typescript@5.8.3)(yaml@2.8.1) packages/backend: @@ -2475,7 +2475,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.22.26': resolution: {integrity: sha512-I689wc8Fn/AX7aUGiwrh3HnssiORMJtR2fpksX+JIe8Cj/EDleblYMSwRPd0025wrwOV9UN1KM/RuEt/QjCS3Q==} @@ -5472,81 +5472,6 @@ packages: engines: {node: '>=18'} hasBin: true - '@verdaccio/auth@8.0.0-next-8.19': - resolution: {integrity: sha512-VEWhj9Zs6qY2vzVpwY0uViPGxCPhiVo+g2WTLPNGa8avYz6sC8eiHZOJv3E22TKm/PaeSzclvSbMXiXP1bYuMA==} - engines: {node: '>=18'} - - '@verdaccio/commons-api@10.2.0': - resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} - engines: {node: '>=8'} - - '@verdaccio/config@8.0.0-next-8.19': - resolution: {integrity: sha512-08Mizx0f88A11Wxpx8EiK+mju0KroiaIRGZhV5h5+jWEKG3qucwTFNqR+29vRlPaGw1VmCEQ0+Vuaqeh03MlAA==} - engines: {node: '>=18'} - - '@verdaccio/core@8.0.0-next-8.19': - resolution: {integrity: sha512-d/QzHToby2OTB5f4rw9koC0SidWvCkGPpvcQ/V8qh1ejoMtc/tO9OKe8lwUOxEvw31A2HaIBf0J4cFVIvrU31w==} - engines: {node: '>=18'} - - '@verdaccio/file-locking@10.3.1': - resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} - engines: {node: '>=12'} - - '@verdaccio/file-locking@13.0.0-next-8.4': - resolution: {integrity: sha512-LzW8V7O65ZGvBbeK43JfHBjoRch3vopBx/HDnOwpA++XrfDTFt/e9Omk28Gu7wY/4BSunJGHMCIrs2EzYc9IVQ==} - engines: {node: '>=18'} - - '@verdaccio/loaders@8.0.0-next-8.9': - resolution: {integrity: sha512-y0EIx+jiJGnln7to0ILUsUdAZvpsZTFPF7toJ/VPJlyRZmYYCbNE2j+VK9GLZu8jPZy+H+GdEBF89QdAv6P99A==} - engines: {node: '>=18'} - - '@verdaccio/local-storage-legacy@11.0.2': - resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} - engines: {node: '>=12'} - - '@verdaccio/logger-commons@8.0.0-next-8.19': - resolution: {integrity: sha512-4Zl5+JyPMC4Kiu9f93uzN9312vg3eh1BeOx0qGGXksJTPSebS+O8HG2530ApjamSkApOHvGs5x3GEsEKza9WOA==} - engines: {node: '>=18'} - - '@verdaccio/logger-prettify@8.0.0-next-8.3': - resolution: {integrity: sha512-mehQMpCtUbmW5dHpUwvi6hSYBdEXZjmDzI76hGacYKEKBwJk5aVXmrdYbYVyWtYlmegaxjLRMmA/iebXDEggYA==} - engines: {node: '>=18'} - - '@verdaccio/logger@8.0.0-next-8.19': - resolution: {integrity: sha512-rCZ4eUYJhCytezVeihYSs5Ct17UJvhCnQ4dAyuO/+JSeKY1Fpxgl+es8F6PU+o6iIVeN5qfFh55llJ2LwZ4gjg==} - engines: {node: '>=18'} - - '@verdaccio/middleware@8.0.0-next-8.19': - resolution: {integrity: sha512-KpfvMNvztaHK+6YrK3uhu6DbzwkQQnxtmNuesCwTQnMNmunwvMBCuwvNTvi1wip1GrmP8At4r3NSSz9ttPcHEQ==} - engines: {node: '>=18'} - - '@verdaccio/search-indexer@8.0.0-next-8.5': - resolution: {integrity: sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==} - engines: {node: '>=18'} - - '@verdaccio/signature@8.0.0-next-8.11': - resolution: {integrity: sha512-mq5ZHB8a7JRMrbLATCZFVSUo0EtnsD9k7OZwEgdYEjzRYx3dQm93lY1smBAfluPfrcTeHRJY4W76Fdy/Or5JmA==} - engines: {node: '>=18'} - - '@verdaccio/streams@10.2.1': - resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} - engines: {node: '>=12', npm: '>=5'} - - '@verdaccio/tarball@13.0.0-next-8.19': - resolution: {integrity: sha512-BVdPcZj2EtneRY0HKqQTG02gF4q1YdxUqw+ZbOMdWRRFqNkCG/5PaaNhP/xh3UFk/VpNqmv4/OwyTv68c9186g==} - engines: {node: '>=18'} - - '@verdaccio/ui-theme@8.0.0-next-8.19': - resolution: {integrity: sha512-grJ+8wqD+iE9cRHMQ9hYPj/IerW3pDELccoK6CLn1xYC+sunYVpnivkUv5HUmK6G0B64ptoYST1xFSjiiZXNKg==} - - '@verdaccio/url@13.0.0-next-8.19': - resolution: {integrity: sha512-QCtRu6gnE3FWh1CX11VdQfXDoNUYpiZm+767dUKkvo4LfEiKHrpIqq8ZeE37dOC5w9SBJdY1X6ddlIz8p4GTxA==} - engines: {node: '>=18'} - - '@verdaccio/utils@8.1.0-next-8.19': - resolution: {integrity: sha512-mQoe1yUlYR4ujR65xVNAr4and102UNvAjlx6+IYyVPa7h3CZ0w5e8sRjlbYIXXL/qDI4RPVzfJVpquiwPkUCGg==} - engines: {node: '>=18'} - '@vitejs/plugin-react@4.7.0': resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6051,10 +5976,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - apache-md5@1.1.8: - resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} - engines: {node: '>=8'} - appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} @@ -6208,9 +6129,6 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -6407,9 +6325,6 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - bcryptjs@2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} @@ -6498,9 +6413,6 @@ packages: browser-tabs-lock@1.3.0: resolution: {integrity: sha512-g6nHaobTiT0eMZ7jh16YpD2kcjAp+PInbiVq3M1x6KKaEIVhT4v9oURNIpZLOZ3LQbQ3XYfNhMAb/9hzNLIWrw==} - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.27.0: resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6825,11 +6737,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - clipanion@4.0.0-rc.4: - resolution: {integrity: sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==} - peerDependencies: - typanion: '*' - clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} @@ -7430,15 +7337,6 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -7736,9 +7634,6 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -8398,9 +8293,6 @@ packages: exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@5.5.1: - resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} - express-rate-limit@7.5.1: resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} engines: {node: '>= 16'} @@ -8469,10 +8361,6 @@ packages: fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -8946,10 +8834,6 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -8973,11 +8857,6 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -9190,12 +9069,6 @@ packages: resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} engines: {node: '>=0.10'} - http-status-codes@2.2.0: - resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} - - http-status-codes@2.3.0: - resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -9426,9 +9299,6 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} @@ -9479,10 +9349,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -9565,9 +9431,6 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -9947,10 +9810,6 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -10397,9 +10256,6 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lockfile@1.0.4: - resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -10499,10 +10355,6 @@ packages: loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lowdb@1.0.0: - resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} - engines: {node: '>=4'} - lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -10976,10 +10828,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@10.1.1: resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} @@ -10991,10 +10839,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -11223,15 +11067,6 @@ packages: node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -11639,9 +11474,6 @@ packages: package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -11780,9 +11612,6 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -11832,12 +11661,6 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pino-abstract-transport@1.2.0: - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} - - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-abstract-transport@3.0.0: resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} @@ -11848,10 +11671,6 @@ packages: resolution: {integrity: sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==} hasBin: true - pino@9.7.0: - resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==} - hasBin: true - pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -11874,36 +11693,32 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - pkginfo@0.4.1: - resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} - engines: {node: '>= 0.4.0'} - - pkglab-darwin-arm64@0.11.1: - resolution: {integrity: sha512-gy2qv+HWlB1y3jr0cT6wjYkVT/tLoFu2UvqE0oJcY3Ca3FqnsAPnwss8let+L1rb79hzqTSZycOuC+yc6dMiaw==} + pkglab-darwin-arm64@0.13.3: + resolution: {integrity: sha512-ZY6qFLWKvF+gQeZpw+gExv5tZ7fRGsakHG1tu/dxk8sz8VnMdvOn2qhKUZFyHDKCeUssa41hF8FhArist7lv+w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - pkglab-darwin-x64@0.11.1: - resolution: {integrity: sha512-cLXqfSZs2qkvNs4QIQOAICm7nM7p6DaVPz9Wj6RXa4ovkzd5KYD3EO+vQGFojACNKKlWpn28tpp9Z3zaEldvsQ==} + pkglab-darwin-x64@0.13.3: + resolution: {integrity: sha512-c6xwaplg/3OaQ+kfM4iMoUFTik2DOJUSap5hBFy46tx4km0/oIRcFHtAPuzJEhAQwgrRE3AfzHNrdGuTy2CKTQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - pkglab-linux-arm64@0.11.1: - resolution: {integrity: sha512-xfXHvwHi+tt4/nRJ4dQZXbiB212YqweJQzIGinwWdHtEAvWl57PBx0giYfpQF3oOHsoVCh65vRCYHmDouLg0BQ==} + pkglab-linux-arm64@0.13.3: + resolution: {integrity: sha512-QawvGM3KSsb6yjVQxq22TtI03P6FOtreST8HgeXbf2xODx54UH2VQdH9OU5RLAEAiL/z3lV0yrIGksEC0QQExQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - pkglab-linux-x64@0.11.1: - resolution: {integrity: sha512-JFICMlCTRBPi0s2zl8ZrDmh+biyK/c/DkuefdK8irfXPjAYTIq5obe7hrWYEz0v2rT/vDPrBRZ+wg6j1ThpB7Q==} + pkglab-linux-x64@0.13.3: + resolution: {integrity: sha512-7bHbSrfMgU1Mv+OJm8Fw3pNjArsWCrZmYTMnoBuhwDAqInxR3RF6PY8HyY90LPB2OXhBRQvcUFQBzWvqgN97oA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - pkglab@0.11.1: - resolution: {integrity: sha512-FdcO24fiY1DE9Y5ZHpQWfihB67x13KTZm56WNfRpsHgCRALjbSLsJRe7B7Q0OPhCN7Vrmzfg2QULZYHNT+FBIA==} + pkglab@0.13.3: + resolution: {integrity: sha512-TB77W1mh0BGnRzPQbLreR+/zMmnhzZF9zfqQujU/lSN/rOwdvMd5cn9Nn2DuwTXARKv+u5YygT4VKlaeyxJx/g==} engines: {node: '>=18'} hasBin: true @@ -12268,9 +12083,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - process-warning@4.0.1: resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} @@ -12328,15 +12140,9 @@ packages: engines: {node: '>=18'} hasBin: true - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -12921,11 +12727,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -13150,9 +12951,6 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - sonic-boom@3.8.1: - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} - sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} @@ -13299,9 +13097,6 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - steno@0.4.4: - resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} - stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -13316,9 +13111,6 @@ packages: stream-json@1.9.1: resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -13680,9 +13472,6 @@ packages: peerDependencies: tslib: ^2 - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - thread-stream@4.0.0: resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} engines: {node: '>=20'} @@ -13697,9 +13486,6 @@ packages: resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} engines: {node: '>=18'} - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -13974,9 +13760,6 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - typanion@3.14.0: - resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14105,11 +13888,6 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -14254,9 +14032,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unix-crypt-td-js@1.1.4: - resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -14443,27 +14218,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} - engines: {node: '>= 0.10'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.19: - resolution: {integrity: sha512-lF/5g4CwfhGzZIySeFYBCWXaBnIRQ02Q27gQ7OSS9KTQ9qnHXHbFrXjEAml2udQSNk6Z9jieNa5TufwgjR3Nyw==} - engines: {node: '>=18'} - - verdaccio-htpasswd@13.0.0-next-8.19: - resolution: {integrity: sha512-XVkkJJKfXLVXC8E+7CLklnndkagZaFWXhGbYIxFYRJ+0bCff0VgUfmyXpwWJ9ADdOnMSqvUPFwMsx4LAhGxFvg==} - engines: {node: '>=18'} - - verdaccio@6.1.6: - resolution: {integrity: sha512-zUMMKW0hjtOaLIm1cY9AqA0bMjvuGtKJVolzXQacIW9PHTnTjcsWF2+sbNLBhVrHwo+FJ1DzdNVaTWXOBWZgiQ==} - engines: {node: '>=18'} - hasBin: true - verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -14928,9 +14686,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -15047,10 +14802,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} @@ -21092,152 +20843,6 @@ snapshots: - rollup - supports-color - '@verdaccio/auth@8.0.0-next-8.19': - dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/loaders': 8.0.0-next-8.9 - '@verdaccio/signature': 8.0.0-next-8.11 - debug: 4.4.1 - lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.19 - transitivePeerDependencies: - - supports-color - - '@verdaccio/commons-api@10.2.0': - dependencies: - http-errors: 2.0.0 - http-status-codes: 2.2.0 - - '@verdaccio/config@8.0.0-next-8.19': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 - js-yaml: 4.1.0 - lodash: 4.17.21 - minimatch: 7.4.6 - transitivePeerDependencies: - - supports-color - - '@verdaccio/core@8.0.0-next-8.19': - dependencies: - ajv: 8.17.1 - http-errors: 2.0.0 - http-status-codes: 2.3.0 - minimatch: 10.0.1 - process-warning: 1.0.0 - semver: 7.7.2 - - '@verdaccio/file-locking@10.3.1': - dependencies: - lockfile: 1.0.4 - - '@verdaccio/file-locking@13.0.0-next-8.4': - dependencies: - lockfile: 1.0.4 - - '@verdaccio/loaders@8.0.0-next-8.9': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - '@verdaccio/local-storage-legacy@11.0.2': - dependencies: - '@verdaccio/commons-api': 10.2.0 - '@verdaccio/file-locking': 10.3.1 - '@verdaccio/streams': 10.2.1 - async: 3.2.4 - debug: 4.3.4 - lodash: 4.17.21 - lowdb: 1.0.0 - mkdirp: 1.0.4 - transitivePeerDependencies: - - supports-color - - '@verdaccio/logger-commons@8.0.0-next-8.19': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/logger-prettify': 8.0.0-next-8.3 - colorette: 2.0.20 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - - '@verdaccio/logger-prettify@8.0.0-next-8.3': - dependencies: - colorette: 2.0.20 - dayjs: 1.11.13 - lodash: 4.17.21 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.2.0 - sonic-boom: 3.8.1 - - '@verdaccio/logger@8.0.0-next-8.19': - dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.19 - pino: 9.7.0 - transitivePeerDependencies: - - supports-color - - '@verdaccio/middleware@8.0.0-next-8.19': - dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - debug: 4.4.1 - express: 4.21.2 - express-rate-limit: 5.5.1 - lodash: 4.17.21 - lru-cache: 7.18.3 - mime: 2.6.0 - transitivePeerDependencies: - - supports-color - - '@verdaccio/search-indexer@8.0.0-next-8.5': {} - - '@verdaccio/signature@8.0.0-next-8.11': - dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 - jsonwebtoken: 9.0.2 - transitivePeerDependencies: - - supports-color - - '@verdaccio/streams@10.2.1': {} - - '@verdaccio/tarball@13.0.0-next-8.19': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - debug: 4.4.1 - gunzip-maybe: 1.4.2 - tar-stream: 3.1.7 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - supports-color - - '@verdaccio/ui-theme@8.0.0-next-8.19': {} - - '@verdaccio/url@13.0.0-next-8.19': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 - lodash: 4.17.21 - validator: 13.12.0 - transitivePeerDependencies: - - supports-color - - '@verdaccio/utils@8.1.0-next-8.19': - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - lodash: 4.17.21 - minimatch: 7.4.6 - '@vitejs/plugin-react@4.7.0(vite@7.2.2(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.5 @@ -21866,8 +21471,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - apache-md5@1.1.8: {} - appdirsjs@1.2.7: optional: true @@ -22148,8 +21751,6 @@ snapshots: async-sema@3.1.1: {} - async@3.2.4: {} - async@3.2.6: {} asynckit@0.4.0: {} @@ -22403,8 +22004,6 @@ snapshots: dependencies: tweetnacl: 0.14.5 - bcryptjs@2.4.3: {} - before-after-hook@2.2.3: {} better-opn@3.0.2: @@ -22531,10 +22130,6 @@ snapshots: dependencies: lodash: 4.17.21 - browserify-zlib@0.1.4: - dependencies: - pako: 0.2.9 - browserslist@4.27.0: dependencies: baseline-browser-mapping: 2.8.25 @@ -22923,10 +22518,6 @@ snapshots: client-only@0.0.1: {} - clipanion@4.0.0-rc.4(typanion@3.14.0): - dependencies: - typanion: 3.14.0 - clipboardy@4.0.0: dependencies: execa: 8.0.1 @@ -23567,10 +23158,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.1: - dependencies: - ms: 2.1.3 - debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -23828,13 +23415,6 @@ snapshots: duplexer@0.1.2: {} - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.5 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: @@ -24760,8 +24340,6 @@ snapshots: exponential-backoff@3.1.3: {} - express-rate-limit@5.5.1: {} - express-rate-limit@7.5.1(express@5.1.0): dependencies: express: 5.1.0 @@ -24891,8 +24469,6 @@ snapshots: dependencies: fast-decode-uri-component: 1.0.1 - fast-redact@3.5.0: {} - fast-safe-stringify@2.1.1: {} fast-sha256@1.3.0: {} @@ -25435,15 +25011,6 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - gzip-size@6.0.0: dependencies: duplexer: 0.1.2 @@ -25471,15 +25038,6 @@ snapshots: handle-thing@2.0.1: {} - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.19.3 - hard-rejection@2.1.0: {} has-bigints@1.1.0: {} @@ -25770,10 +25328,6 @@ snapshots: jsprim: 2.0.2 sshpk: 1.18.0 - http-status-codes@2.2.0: {} - - http-status-codes@2.3.0: {} - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -25988,8 +25542,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-deflate@1.0.0: {} - is-directory@0.3.1: optional: true @@ -26026,8 +25578,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -26085,8 +25635,6 @@ snapshots: is-potential-custom-element-name@1.0.1: {} - is-promise@2.2.2: {} - is-promise@4.0.0: {} is-reference@1.2.1: @@ -26669,10 +26217,6 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -27186,10 +26730,6 @@ snapshots: dependencies: p-locate: 6.0.0 - lockfile@1.0.4: - dependencies: - signal-exit: 3.0.7 - lodash.camelcase@4.3.0: {} lodash.debounce@4.0.8: {} @@ -27275,14 +26815,6 @@ snapshots: loupe@3.2.1: {} - lowdb@1.0.0: - dependencies: - graceful-fs: 4.2.11 - is-promise: 2.2.2 - lodash: 4.17.21 - pify: 3.0.0 - steno: 0.4.4 - lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -28156,10 +27688,6 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.2 - minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -28172,10 +27700,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@7.4.6: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.1: dependencies: brace-expansion: 2.0.2 @@ -28499,10 +28023,6 @@ snapshots: node-fetch-native@1.6.7: {} - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -29107,8 +28627,6 @@ snapshots: package-manager-detector@1.6.0: {} - pako@0.2.9: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -29234,12 +28752,6 @@ snapshots: pathval@2.0.1: {} - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - pend@1.2.0: {} perfect-debounce@2.0.0: {} @@ -29266,15 +28778,6 @@ snapshots: pify@4.0.1: {} - pino-abstract-transport@1.2.0: - dependencies: - readable-stream: 4.7.0 - split2: 4.2.0 - - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 - pino-abstract-transport@3.0.0: dependencies: split2: 4.2.0 @@ -29295,20 +28798,6 @@ snapshots: sonic-boom: 4.2.0 thread-stream: 4.0.0 - pino@9.7.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 - process-warning: 5.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.0 - thread-stream: 3.1.0 - pirates@4.0.7: {} pkce-challenge@5.0.1: {} @@ -29333,26 +28822,23 @@ snapshots: exsolve: 1.0.7 pathe: 2.0.3 - pkginfo@0.4.1: {} - - pkglab-darwin-arm64@0.11.1: + pkglab-darwin-arm64@0.13.3: optional: true - pkglab-darwin-x64@0.11.1: + pkglab-darwin-x64@0.13.3: optional: true - pkglab-linux-arm64@0.11.1: + pkglab-linux-arm64@0.13.3: optional: true - pkglab-linux-x64@0.11.1: - optional: true + pkglab-linux-x64@0.13.3: {} - pkglab@0.11.1: + pkglab@0.13.3: optionalDependencies: - pkglab-darwin-arm64: 0.11.1 - pkglab-darwin-x64: 0.11.1 - pkglab-linux-arm64: 0.11.1 - pkglab-linux-x64: 0.11.1 + pkglab-darwin-arm64: 0.13.3 + pkglab-darwin-x64: 0.13.3 + pkglab-linux-arm64: 0.13.3 + pkglab-linux-x64: 0.13.3 playwright-core@1.56.1: {} @@ -29629,8 +29115,6 @@ snapshots: process-nextick-args@2.0.1: {} - process-warning@1.0.0: {} - process-warning@4.0.1: {} process-warning@5.0.0: {} @@ -29686,22 +29170,11 @@ snapshots: picocolors: 1.1.1 sade: 1.8.1 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - pump@3.0.3: dependencies: end-of-stream: 1.4.5 once: 1.4.0 - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - punycode.js@2.3.1: {} punycode@1.4.1: {} @@ -30440,8 +29913,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.2: {} - semver@7.7.3: {} send@0.19.0: @@ -30790,10 +30261,6 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 - sonic-boom@3.8.1: - dependencies: - atomic-sleep: 1.0.0 - sonic-boom@4.2.0: dependencies: atomic-sleep: 1.0.0 @@ -30942,10 +30409,6 @@ snapshots: std-env@3.10.0: {} - steno@0.4.4: - dependencies: - graceful-fs: 4.2.11 - stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -30959,8 +30422,6 @@ snapshots: dependencies: stream-chain: 2.2.5 - stream-shift@1.0.3: {} - streamsearch@1.1.0: {} streamx@2.23.0: @@ -31370,10 +30831,6 @@ snapshots: dependencies: tslib: 2.8.1 - thread-stream@3.1.0: - dependencies: - real-require: 0.2.0 - thread-stream@4.0.0: dependencies: real-require: 0.2.0 @@ -31384,11 +30841,6 @@ snapshots: throttleit@2.1.0: {} - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - through@2.3.8: {} thunky@1.1.0: {} @@ -31627,8 +31079,6 @@ snapshots: tweetnacl@0.14.5: {} - typanion@3.14.0: {} - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -31745,9 +31195,6 @@ snapshots: ufo@1.6.3: {} - uglify-js@3.19.3: - optional: true - ultrahtml@1.6.0: {} unbox-primitive@1.1.0: @@ -31919,8 +31366,6 @@ snapshots: universalify@2.0.1: {} - unix-crypt-td-js@1.1.4: {} - unpipe@1.0.0: {} unplugin-utils@0.2.5: @@ -32121,74 +31566,8 @@ snapshots: validate-npm-package-name@5.0.1: {} - validator@13.12.0: {} - vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.19: - dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - express: 4.21.2 - https-proxy-agent: 5.0.1 - node-fetch: 2.6.7 - transitivePeerDependencies: - - encoding - - supports-color - - verdaccio-htpasswd@13.0.0-next-8.19: - dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/file-locking': 13.0.0-next-8.4 - apache-md5: 1.1.8 - bcryptjs: 2.4.3 - debug: 4.4.1 - http-errors: 2.0.0 - unix-crypt-td-js: 1.1.4 - transitivePeerDependencies: - - supports-color - - verdaccio@6.1.6(typanion@3.14.0): - dependencies: - '@cypress/request': 3.0.9 - '@verdaccio/auth': 8.0.0-next-8.19 - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/loaders': 8.0.0-next-8.9 - '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.19 - '@verdaccio/middleware': 8.0.0-next-8.19 - '@verdaccio/search-indexer': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.11 - '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.19 - '@verdaccio/ui-theme': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - '@verdaccio/utils': 8.1.0-next-8.19 - JSONStream: 1.3.5 - async: 3.2.6 - clipanion: 4.0.0-rc.4(typanion@3.14.0) - compression: 1.8.1 - cors: 2.8.5 - debug: 4.4.1 - envinfo: 7.14.0 - express: 4.21.2 - handlebars: 4.7.8 - lodash: 4.17.21 - lru-cache: 7.18.3 - mime: 3.0.0 - mkdirp: 1.0.4 - pkginfo: 0.4.1 - semver: 7.7.2 - verdaccio-audit: 13.0.0-next-8.19 - verdaccio-htpasswd: 13.0.0-next-8.19 - transitivePeerDependencies: - - bare-abort-controller - - encoding - - react-native-b4a - - supports-color - - typanion - verror@1.10.0: dependencies: assert-plus: 1.0.0 @@ -32744,8 +32123,6 @@ snapshots: word-wrap@1.2.5: {} - wordwrap@1.0.0: {} - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -32843,8 +32220,6 @@ snapshots: xmlchars@2.2.0: {} - xtend@4.0.2: {} - xxhash-wasm@1.1.0: {} y18n@4.0.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index af97f92d05b..406b644ef0c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -35,3 +35,4 @@ minimumReleaseAge: 2880 minimumReleaseAgeExclude: - '@clerk/*' - 'pkglab' + - 'pkglab-*' diff --git a/scripts/install-site-in-isolation.mjs b/scripts/install-site-in-isolation.mjs deleted file mode 100644 index f2aa0707e76..00000000000 --- a/scripts/install-site-in-isolation.mjs +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env zx - -import { cp, mkdir, mkdtemp } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; - -import * as core from '@actions/core'; -import { $, argv, cd, chalk } from 'zx'; - -try { - // Setup variables and environment variables - const SITE_PATH = argv._[0]; - const ROOT_PATH = new URL('../', import.meta.url).pathname; - const FULL_SITE_PATH = join(ROOT_PATH, SITE_PATH); - const TMP_FOLDER = await mkdtemp(join(tmpdir(), 'clerk-site-')); - const FULL_TMP_FOLDER = join(TMP_FOLDER, SITE_PATH); - process.env.SECCO_SOURCE_PATH = ROOT_PATH; - process.env.FORCE_COLOR = '1'; - - core.debug(`Path variables: - -SITE_PATH: ${SITE_PATH} -ROOT_PATH: ${ROOT_PATH} -FULL_SITE_PATH: ${FULL_SITE_PATH} -TMP_FOLDER: ${TMP_FOLDER} -FULL_TMP_FOLDER: ${FULL_TMP_FOLDER}`); - - // Installing secco - await core.group('Installing secco (if not already installed)', async () => { - await $`command -v secco || (command -v sudo && sudo npm install -g secco@latest) || npm install -g secco@latest`; - }); - - // Create temporary folder setup - await mkdir(FULL_TMP_FOLDER, { recursive: true }); - - // Copy the site into the temporary location to isolate it - core.info(`Copying ${chalk.bold(SITE_PATH)} into ${chalk.bold(FULL_TMP_FOLDER)}`); - await cp(FULL_SITE_PATH, FULL_TMP_FOLDER, { recursive: true }); - - await core.group('Installing dependencies through secco', async () => { - cd(FULL_TMP_FOLDER); - await $`secco --force-verdaccio --scan-once`; - }); - - core.exportVariable('FULL_TMP_FOLDER', FULL_TMP_FOLDER); -} catch (e) { - // Bail on errors - core.setFailed(`Script failed with error: ${e}`); - process.exit(); -} diff --git a/scripts/local-registry.sh b/scripts/local-registry.sh deleted file mode 100755 index e07623012fd..00000000000 --- a/scripts/local-registry.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# Local Verdaccio Registry Script -# Usage: ./scripts/local-registry.sh [up|down|pub] - -set -e - -REGISTRY_URL="http://localhost:4873" - -case "$1" in - up) - echo "" - echo "📦 Local Verdaccio Registry" - echo "===========================" - echo "Registry running at: $REGISTRY_URL" - echo "" - echo "To install packages in your test app:" - echo " 1. Update package.json catalog: \"@clerk/backend\": \"local\"" - echo " 2. Run: bun install --registry $REGISTRY_URL" - echo "" - echo "To stop: pnpm local:registry:down" - echo "" - verdaccio --config verdaccio.install.yaml --listen 4873 - ;; - - down) - pkill -f 'verdaccio.*4873' && echo "Verdaccio stopped" || echo "Verdaccio not running" - ;; - - pub) - # Ensure git changes are restored on exit (success or failure) - cleanup() { - git checkout -- 'packages/*/package.json' '.changeset/' 2>/dev/null || true - } - trap cleanup EXIT - - # Restore any dirty package.json files first (from previous failed runs) - # so turbo cache can be used - cleanup - - # Build all packages FIRST (uses turbo cache) - # This must happen before versioning, otherwise the package.json - # changes invalidate the turbo cache (package.json is in globalDependencies) - pnpm build - - # Clear existing @clerk packages from Verdaccio storage to force republish - rm -rf .verdaccio/storage/@clerk - - # Version packages with snapshot (uses snapshot.mjs which pins workspace deps - # to exact versions, preventing semver issues with prereleases) - pnpm version-packages:snapshot local - - # Publish to Verdaccio using environment variable - npm_config_registry=$REGISTRY_URL pnpm changeset publish --no-git-tag --tag local - - echo "" - echo "✅ Published to local Verdaccio" - echo " Install with: bun install --registry $REGISTRY_URL" - ;; - - *) - echo "Usage: $0 [up|down|pub]" - echo "" - echo " up - Start Verdaccio registry" - echo " down - Stop Verdaccio registry" - echo " pub - Build and publish all packages" - echo "" - echo "Examples:" - echo " $0 up" - echo " $0 pub" - exit 1 - ;; -esac diff --git a/verdaccio.install.yaml b/verdaccio.install.yaml deleted file mode 100644 index 2b77595e6e5..00000000000 --- a/verdaccio.install.yaml +++ /dev/null @@ -1,18 +0,0 @@ -storage: ./.verdaccio/storage -auth: - htpasswd: - file: ./.verdaccio/htpasswd -uplinks: - npmjs: - url: https://registry.npmjs.org/ -packages: - '@clerk/*': - access: $all - publish: $all - proxy: npmjs - '**': - access: $all - publish: $all - proxy: npmjs -log: { type: stdout, format: pretty, level: http } -max_body_size: 200mb diff --git a/verdaccio.publish.yaml b/verdaccio.publish.yaml deleted file mode 100644 index 17a74001996..00000000000 --- a/verdaccio.publish.yaml +++ /dev/null @@ -1,17 +0,0 @@ -storage: ./.verdaccio/storage -auth: - htpasswd: - file: ./.verdaccio/htpasswd -uplinks: - npmjs: - url: https://registry.npmjs.org/ -packages: - '@clerk/*': - access: $all - publish: $all - '**': - access: $all - publish: $all - proxy: npmjs -log: { type: stdout, format: pretty, level: http } -max_body_size: 20mb