Use bun package manager (#68170)
* Use bun in package.json * Update workflows * Update more workflows * Kick ci * Fix yaml * Fix type errors * Compat with snyk * Fix jest resolutions * Add another esm package * Fix aliases and next js missing deps * Update next js embed tests * Try fix embed test config * Fix * Fix requires in e2e support * Use bun not yarn in embed bin * Revert config changes * Use bun in more scripts and use prepare-release action * Replace more yarn usages * Remove overrides from bunfig move to package json * Revert e2e support changes * Add back comment * [ci skip] comment typo * Update bun lock * Update to reference bun * Update to reference bun * Update license disclaimer * Tidy tests * Update to use bun in workflows * Change aliases * Update codemirrort selector * Tidy license generation * Remove .only * Fix yarn references * Checkout .github for release scripts * Update lockfile * Re-add package * update release bunlock * fix checkout check --------- Co-authored-by: Ryan Laurie <iethree@gmail.com>
This commit is contained in:
@@ -1,21 +1,21 @@
|
|||||||
## Linting and Formatting
|
## Linting and Formatting
|
||||||
|
|
||||||
- **Lint:** `yarn lint-eslint-pure`
|
- **Lint:** `bun run lint-eslint-pure`
|
||||||
- Run ESLint on the codebase
|
- Run ESLint on the codebase
|
||||||
- **Format:** `yarn prettier`
|
- **Format:** `bun run prettier`
|
||||||
- Format code using Prettier
|
- Format code using Prettier
|
||||||
- **Type Check:** `yarn type-check-pure`
|
- **Type Check:** `bun run type-check-pure`
|
||||||
- Run TypeScript type checking
|
- Run TypeScript type checking
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
### JavaScript/TypeScript Tests
|
### JavaScript/TypeScript Tests
|
||||||
|
|
||||||
- **Test a specific file:** `yarn test-unit-keep-cljs path/to/file.unit.spec.js`
|
- **Test a specific file:** `bun run test-unit-keep-cljs path/to/file.unit.spec.js`
|
||||||
- **Test by pattern:** `yarn test-unit-keep-cljs -t "pattern"`
|
- **Test by pattern:** `bun run test-unit-keep-cljs -t "pattern"`
|
||||||
- Runs tests matching the given pattern
|
- Runs tests matching the given pattern
|
||||||
|
|
||||||
### ClojureScript Tests
|
### ClojureScript Tests
|
||||||
|
|
||||||
- **Test ClojureScript:** `yarn test-cljs`
|
- **Test ClojureScript:** `bun run test-cljs`
|
||||||
- Run ClojureScript tests
|
- Run ClojureScript tests
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ allowed-tools: Read, Write, Grep, Bash, Glob
|
|||||||
|
|
||||||
**Format:**
|
**Format:**
|
||||||
|
|
||||||
- Run prettier on the file after making edits: `yarn prettier --write <file-path>`
|
- Run prettier on the file after making edits: `bun run prettier --write <file-path>`
|
||||||
- This ensures consistent formatting across all documentation
|
- This ensures consistent formatting across all documentation
|
||||||
|
|
||||||
### Common patterns
|
### Common patterns
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
FROM mcr.microsoft.com/vscode/devcontainers/java:21
|
FROM mcr.microsoft.com/vscode/devcontainers/java:21
|
||||||
|
|
||||||
# Set up nodesource, install node, yarn, fontconfig for static viz, rlwrap for dev ergonomics
|
# Set up nodesource, install node, bun, fontconfig for static viz, rlwrap for dev ergonomics
|
||||||
|
|
||||||
RUN ( curl -fsSL https://deb.nodesource.com/setup_22.x | bash ) \
|
RUN ( curl -fsSL https://deb.nodesource.com/setup_22.x | bash ) \
|
||||||
&& export DEBIAN_FRONTEND=noninteractive \
|
&& export DEBIAN_FRONTEND=noninteractive \
|
||||||
&& apt-get update && apt-get -y install --no-install-recommends nodejs rlwrap fontconfig \
|
&& apt-get update && apt-get -y install --no-install-recommends nodejs rlwrap fontconfig \
|
||||||
&& npm install --global yarn
|
&& npm install -g bun
|
||||||
|
|
||||||
# install Clojure
|
# install Clojure
|
||||||
RUN curl https://download.clojure.org/install/linux-install-1.12.0.1488.sh | bash
|
RUN curl https://download.clojure.org/install/linux-install-1.12.0.1488.sh | bash
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ METASTORE_DEV_SERVER_URL="https://token-check.staging.metabase.com"
|
|||||||
#
|
#
|
||||||
# The whole environment is already orchestrated via deps.edn using :e2e alias.
|
# The whole environment is already orchestrated via deps.edn using :e2e alias.
|
||||||
# Treat it as a source of truth for JVM flags and ENVs whether you decide to run
|
# Treat it as a source of truth for JVM flags and ENVs whether you decide to run
|
||||||
# backend on your own, or using `yarn test-cypress` (local test runner).
|
# backend on your own, or using `bun run test-cypress` (local test runner).
|
||||||
#
|
#
|
||||||
# You don't _have to_ export any of these vars (except for the tokens below).
|
# You don't _have to_ export any of these vars (except for the tokens below).
|
||||||
# Things will still work.
|
# Things will still work.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PENDING CI / PENDING REVIEW / READY _(choose one and update accordingly)_
|
|||||||
- Reproduces #XXXXX
|
- Reproduces #XXXXX
|
||||||
|
|
||||||
### How to test this manually?
|
### How to test this manually?
|
||||||
- `yarn test-cypress`
|
- `bun run test-cypress`
|
||||||
- `relative/path/to/the/file`
|
- `relative/path/to/the/file`
|
||||||
> _(For still unfixed bug)_
|
> _(For still unfixed bug)_
|
||||||
- Replace `it.skip()` with `it.only()` to run the test in isolation
|
- Replace `it.skip()` with `it.only()` to run the test in isolation
|
||||||
|
|||||||
10
.github/actions/prepare-cypress/action.yml
vendored
10
.github/actions/prepare-cypress/action.yml
vendored
@@ -3,7 +3,7 @@ description: Cypress preparation steps
|
|||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
working-directory:
|
working-directory:
|
||||||
description: "Optional working directory for yarn commands"
|
description: "Optional working directory for bun commands"
|
||||||
required: false
|
required: false
|
||||||
default: "."
|
default: "."
|
||||||
|
|
||||||
@@ -34,9 +34,9 @@ runs:
|
|||||||
|
|
||||||
- name: Ensure that Cypress executable is ready
|
- name: Ensure that Cypress executable is ready
|
||||||
run: |
|
run: |
|
||||||
yarn cypress install
|
bun run cypress install
|
||||||
yarn cypress cache path
|
bun run cypress cache path
|
||||||
yarn cypress cache list
|
bun run cypress cache list
|
||||||
yarn cypress verify
|
bun run cypress verify
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ inputs.working-directory }}
|
working-directory: ${{ inputs.working-directory }}
|
||||||
|
|||||||
21
.github/actions/prepare-frontend/action.yml
vendored
21
.github/actions/prepare-frontend/action.yml
vendored
@@ -17,6 +17,11 @@ runs:
|
|||||||
node-version: ${{ inputs.node-version }} # this overrides, if present
|
node-version: ${{ inputs.node-version }} # this overrides, if present
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
|
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
|
|
||||||
- name: Get cache keys
|
- name: Get cache keys
|
||||||
uses: ./.github/actions/get-cache-keys
|
uses: ./.github/actions/get-cache-keys
|
||||||
id: get-cache-keys
|
id: get-cache-keys
|
||||||
@@ -29,12 +34,12 @@ runs:
|
|||||||
~/.gitlibs
|
~/.gitlibs
|
||||||
key: ${{ steps.get-cache-keys.outputs.m2-cache-key }}
|
key: ${{ steps.get-cache-keys.outputs.m2-cache-key }}
|
||||||
|
|
||||||
- name: Get yarn cache directory
|
- name: Get bun cache directory
|
||||||
id: yarn-cache-dir
|
id: bun-cache
|
||||||
run: |
|
run: |
|
||||||
YARN_CACHE_DIR=$(yarn cache dir)
|
BUN_CACHE_DIR=$(bun pm cache)
|
||||||
echo "Yarn cache directory: $YARN_CACHE_DIR"
|
echo "Bun cache directory: $BUN_CACHE_DIR"
|
||||||
echo "dir=$YARN_CACHE_DIR" >> $GITHUB_OUTPUT
|
echo "dir=$BUN_CACHE_DIR" >> $GITHUB_OUTPUT
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Restore node_modules cache
|
- name: Restore node_modules cache
|
||||||
@@ -42,7 +47,7 @@ runs:
|
|||||||
id: node-modules-cache
|
id: node-modules-cache
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
${{ steps.yarn-cache-dir.outputs.dir }}
|
${{ steps.bun-cache.outputs.dir }}
|
||||||
node_modules
|
node_modules
|
||||||
key: ${{ steps.get-cache-keys.outputs.node-cache-key }}
|
key: ${{ steps.get-cache-keys.outputs.node-cache-key }}
|
||||||
|
|
||||||
@@ -50,9 +55,9 @@ runs:
|
|||||||
# If a job wants to patch packages, it does so explicitly in the CI. This setting is opt-out.
|
# If a job wants to patch packages, it does so explicitly in the CI. This setting is opt-out.
|
||||||
# For example, we never want to cache node_modules with patches already applied so cache-generator.yml skips that step.
|
# For example, we never want to cache node_modules with patches already applied so cache-generator.yml skips that step.
|
||||||
- name: Clean install
|
- name: Clean install
|
||||||
run: yarn install --frozen-lockfile --prefer-offline
|
run: bun install --frozen-lockfile
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Patch frontend dependencies
|
- name: Patch frontend dependencies
|
||||||
if: inputs.apply-patches == 'true'
|
if: inputs.apply-patches == 'true'
|
||||||
run: yarn patch-package
|
run: bun run patch-package
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
13
.github/actions/prepare-release-scripts/action.yml
vendored
Normal file
13
.github/actions/prepare-release-scripts/action.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Prepare Release Scripts
|
||||||
|
description: Set up bun and build release scripts
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
|
|
||||||
|
- name: Build release scripts
|
||||||
|
shell: bash
|
||||||
|
run: cd ${{ github.workspace }}/release && bun install --frozen-lockfile && bun run build
|
||||||
2
.github/actions/test-driver/action.yml
vendored
2
.github/actions/test-driver/action.yml
vendored
@@ -27,7 +27,7 @@ runs:
|
|||||||
uses: ./.github/actions/prepare-frontend
|
uses: ./.github/actions/prepare-frontend
|
||||||
- name: Build static viz frontend
|
- name: Build static viz frontend
|
||||||
if: ${{ inputs.build-static-viz == 'true' }}
|
if: ${{ inputs.build-static-viz == 'true' }}
|
||||||
run: yarn build-static-viz
|
run: bun run build-static-viz
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
MB_EDITION: ee
|
MB_EDITION: ee
|
||||||
|
|||||||
2
.github/file-paths.yaml
vendored
2
.github/file-paths.yaml
vendored
@@ -26,7 +26,7 @@ frontend_ci: &frontend_ci
|
|||||||
- ".github/workflows/frontend.yml"
|
- ".github/workflows/frontend.yml"
|
||||||
|
|
||||||
frontend_configs: &frontend_configs
|
frontend_configs: &frontend_configs
|
||||||
- "yarn.lock"
|
- "bun.lock"
|
||||||
- "**/tsconfig*.json"
|
- "**/tsconfig*.json"
|
||||||
- "package.json"
|
- "package.json"
|
||||||
- "babel.config.json"
|
- "babel.config.json"
|
||||||
|
|||||||
4
.github/workflows/backend-cloverage.yml
vendored
4
.github/workflows/backend-cloverage.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Build static viz frontend
|
- name: Build static viz frontend
|
||||||
run: yarn build-static-viz
|
run: bun run build-static-viz
|
||||||
env:
|
env:
|
||||||
MB_EDITION: ee
|
MB_EDITION: ee
|
||||||
- name: Collect the test coverage
|
- name: Collect the test coverage
|
||||||
@@ -91,7 +91,7 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Build static viz frontend
|
- name: Build static viz frontend
|
||||||
run: yarn build-static-viz
|
run: bun run build-static-viz
|
||||||
env:
|
env:
|
||||||
MB_EDITION: ee
|
MB_EDITION: ee
|
||||||
- name: Collect the test coverage
|
- name: Collect the test coverage
|
||||||
|
|||||||
2
.github/workflows/backend.yml
vendored
2
.github/workflows/backend.yml
vendored
@@ -104,7 +104,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
java-version: "${{ matrix.java-version }}"
|
java-version: "${{ matrix.java-version }}"
|
||||||
- name: Build static-viz frontend
|
- name: Build static-viz frontend
|
||||||
run: yarn build-static-viz
|
run: bun run build-static-viz
|
||||||
env:
|
env:
|
||||||
MB_EDITION: ${{ matrix.job.edition }}
|
MB_EDITION: ${{ matrix.job.edition }}
|
||||||
|
|
||||||
|
|||||||
35
.github/workflows/build-for-release.yml
vendored
35
.github/workflows/build-for-release.yml
vendored
@@ -19,9 +19,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Send build start message
|
- name: Send build start message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
@@ -79,9 +81,11 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Version
|
- name: Get Release Version
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: canonical_version
|
id: canonical_version
|
||||||
@@ -121,9 +125,11 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # IMPORTANT! to get all the branches
|
fetch-depth: 0 # IMPORTANT! to get all the branches
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Branch
|
- name: Get Release Branch
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: release_branch
|
id: release_branch
|
||||||
@@ -135,12 +141,13 @@ jobs:
|
|||||||
const releaseBranch = getReleaseBranch(version);
|
const releaseBranch = getReleaseBranch(version);
|
||||||
return releaseBranch;
|
return releaseBranch;
|
||||||
- name: Ensure that the specified commit exists in the ${{ steps.release_branch.outputs.result }} release branch
|
- name: Ensure that the specified commit exists in the ${{ steps.release_branch.outputs.result }} release branch
|
||||||
run: |
|
run: | # bash
|
||||||
RELEASE_BRANCH=${{ steps.release_branch.outputs.result }}
|
RELEASE_BRANCH=${{ steps.release_branch.outputs.result }}
|
||||||
git checkout $RELEASE_BRANCH
|
git checkout $RELEASE_BRANCH
|
||||||
git branch --contains ${{ inputs.commit }} | grep -q $RELEASE_BRANCH \
|
git branch --contains ${{ inputs.commit }} | grep -q $RELEASE_BRANCH \
|
||||||
&& echo "Commit found in correct release branch" \
|
&& echo "Commit found in correct release branch" \
|
||||||
|| (echo "Commit not found in correct release branch" && exit 1)
|
|| (echo "Commit not found in correct release branch" && exit 1)
|
||||||
|
git checkout -
|
||||||
|
|
||||||
get-build-requirements:
|
get-build-requirements:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
@@ -152,9 +159,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get build dependencies
|
- name: Get build dependencies
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: dependencies
|
id: dependencies
|
||||||
|
|||||||
28
.github/workflows/cache-generator.yml
vendored
28
.github/workflows/cache-generator.yml
vendored
@@ -82,7 +82,7 @@ jobs:
|
|||||||
|
|
||||||
# Frontend preparation and caches
|
# Frontend preparation and caches
|
||||||
# `prepare-frontend` action (1) prepares Node.js and (2) fetches the node_modules cache if it exists.
|
# `prepare-frontend` action (1) prepares Node.js and (2) fetches the node_modules cache if it exists.
|
||||||
# It then (3) runs `yarn install --frozen-lockfile --prefer-offline` which ensures the local cache is fully populated.
|
# It then (3) runs `bun install --frozen-lockfile` which ensures the local cache is fully populated.
|
||||||
# IMPORTANT: Caching node_modules after patches are already applied will break any PR that attempts to either:
|
# IMPORTANT: Caching node_modules after patches are already applied will break any PR that attempts to either:
|
||||||
# - upgrade a patched library
|
# - upgrade a patched library
|
||||||
# - change a patch
|
# - change a patch
|
||||||
@@ -92,31 +92,31 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
apply-patches: "false"
|
apply-patches: "false"
|
||||||
|
|
||||||
- name: Get yarn cache directory
|
- name: Get bun cache directory
|
||||||
id: yarn-cache-dir
|
id: bun-cache
|
||||||
run: |
|
run: |
|
||||||
YARN_CACHE_DIR=$(yarn cache dir)
|
BUN_CACHE_DIR=$(bun pm cache)
|
||||||
echo "Yarn cache directory: $YARN_CACHE_DIR"
|
echo "Bun cache directory: $BUN_CACHE_DIR"
|
||||||
echo "dir=$YARN_CACHE_DIR" >> $GITHUB_OUTPUT
|
echo "dir=$BUN_CACHE_DIR" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Ensure that Cypress executable is ready
|
- name: Ensure that Cypress executable is ready
|
||||||
run: |
|
run: |
|
||||||
yarn cypress install
|
bun run cypress install
|
||||||
yarn cypress cache path
|
bun run cypress cache path
|
||||||
yarn cypress cache list
|
bun run cypress cache list
|
||||||
yarn cypress verify
|
bun run cypress verify
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
# Run Prettier to populate its cache (stored in node_modules/.cache/prettier)
|
# Run Prettier to populate its cache (stored in node_modules/.cache/prettier)
|
||||||
# so it gets saved as part of the node_modules cache below
|
# so it gets saved as part of the node_modules cache below
|
||||||
- name: Run Prettier to populate cache
|
- name: Run Prettier to populate cache
|
||||||
run: yarn lint-prettier-pure
|
run: bun run lint-prettier-pure
|
||||||
|
|
||||||
- name: Update node_modules cache
|
- name: Update node_modules cache
|
||||||
uses: ./.github/actions/update-cache
|
uses: ./.github/actions/update-cache
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
${{ steps.yarn-cache-dir.outputs.dir }}
|
${{ steps.bun-cache.outputs.dir }}
|
||||||
node_modules
|
node_modules
|
||||||
key: ${{ env.NODE_CACHE_KEY }}
|
key: ${{ env.NODE_CACHE_KEY }}
|
||||||
|
|
||||||
@@ -128,10 +128,10 @@ jobs:
|
|||||||
|
|
||||||
# ESLint cache (requires both backend and frontend)
|
# ESLint cache (requires both backend and frontend)
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: yarn build-pure:cljs
|
run: bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Run ESLint to populate cache
|
- name: Run ESLint to populate cache
|
||||||
run: yarn lint-eslint-pure
|
run: bun run lint-eslint-pure
|
||||||
|
|
||||||
- name: Update eslint cache
|
- name: Update eslint cache
|
||||||
uses: ./.github/actions/update-cache
|
uses: ./.github/actions/update-cache
|
||||||
|
|||||||
8
.github/workflows/check-milestone.yml
vendored
8
.github/workflows/check-milestone.yml
vendored
@@ -26,11 +26,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
|
release
|
||||||
|
.github
|
||||||
fetch-depth: ${{ env.isNewReleaseBranch == 'false' && 3 || 0 }} # we need the full history to get all the commit messages
|
fetch-depth: ${{ env.isNewReleaseBranch == 'false' && 3 || 0 }} # we need the full history to get all the commit messages
|
||||||
ref: master # we want the logic from master, even though we're triggering on a release branch
|
ref: master # we want the logic from master, even though we're triggering on a release branch
|
||||||
- name: Prepare build scripts
|
- name: Prepare release scripts
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- uses: actions/github-script@v7
|
- uses: actions/github-script@v7
|
||||||
if: ${{ env.isNewReleaseBranch == 'false' }}
|
if: ${{ env.isNewReleaseBranch == 'false' }}
|
||||||
name: Set milestone for single commit
|
name: Set milestone for single commit
|
||||||
|
|||||||
2
.github/workflows/chromatic.yml
vendored
2
.github/workflows/chromatic.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: NODE_ENV=development yarn build-pure:cljs
|
run: NODE_ENV=development bun run build-pure:cljs
|
||||||
- name: Publish to Chromatic
|
- name: Publish to Chromatic
|
||||||
uses: chromaui/action@v10.2.0
|
uses: chromaui/action@v10.2.0
|
||||||
env:
|
env:
|
||||||
|
|||||||
8
.github/workflows/claude-code-bug-fix.yml
vendored
8
.github/workflows/claude-code-bug-fix.yml
vendored
@@ -230,6 +230,12 @@ jobs:
|
|||||||
mkdir -p .claude-scratchpad
|
mkdir -p .claude-scratchpad
|
||||||
echo "Scratchpad directory created for Claude's temporary verification files"
|
echo "Scratchpad directory created for Claude's temporary verification files"
|
||||||
|
|
||||||
|
- name: Prepare front-end environment
|
||||||
|
uses: ./.github/actions/prepare-frontend
|
||||||
|
|
||||||
|
- name: Prepare back-end environment
|
||||||
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Generate GitHub App Token for Claude
|
- name: Generate GitHub App Token for Claude
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v1
|
||||||
id: claude-app-token
|
id: claude-app-token
|
||||||
@@ -244,7 +250,7 @@ jobs:
|
|||||||
github_token: ${{ steps.claude-app-token.outputs.token }}
|
github_token: ${{ steps.claude-app-token.outputs.token }}
|
||||||
prompt: ${{ env.BUG_FIX_PROMPT }}
|
prompt: ${{ env.BUG_FIX_PROMPT }}
|
||||||
claude_args: |
|
claude_args: |
|
||||||
--allowedTools "Bash(yarn test-unit*),Bash(yarn lint-eslint-pure),Bash(./bin/mage*),Bash(clojure*),Bash(find*),Bash(ls*),Bash(grep*),Write,Read,Glob,Grep,Edit,MultiEdit"
|
--allowedTools "Bash(bun run test-unit*),Bash(bun run lint-eslint-pure),Bash(./bin/mage*),Bash(clojure*),Bash(find*),Bash(ls*),Bash(grep*),Write,Read,Glob,Grep,Edit,MultiEdit"
|
||||||
--disallowedTools "Bash(git commit*),Bash(git push*),Bash(gh*)"
|
--disallowedTools "Bash(git commit*),Bash(git push*),Bash(gh*)"
|
||||||
|
|
||||||
- name: Clean up scratchpad directory
|
- name: Clean up scratchpad directory
|
||||||
|
|||||||
2
.github/workflows/cljs.yml
vendored
2
.github/workflows/cljs.yml
vendored
@@ -39,4 +39,4 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Run Cljs tests
|
- name: Run Cljs tests
|
||||||
run: yarn run test-cljs
|
run: bun run test-cljs
|
||||||
|
|||||||
4
.github/workflows/containerize-jar.yml
vendored
4
.github/workflows/containerize-jar.yml
vendored
@@ -64,8 +64,8 @@ jobs:
|
|||||||
commit: ${{ inputs.commit }}
|
commit: ${{ inputs.commit }}
|
||||||
edition: ${{ inputs.edition }}
|
edition: ${{ inputs.edition }}
|
||||||
release: ${{ inputs.release }}
|
release: ${{ inputs.release }}
|
||||||
- name: Prepare build scripts
|
- name: Prepare release scripts
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get platforms
|
- name: Get platforms
|
||||||
id: platforms
|
id: platforms
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
|
|||||||
2
.github/workflows/coverage.yml
vendored
2
.github/workflows/coverage.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Run frontend unit tests
|
- name: Run frontend unit tests
|
||||||
run: |
|
run: |
|
||||||
yarn run test-unit \
|
bun run test-unit \
|
||||||
--silent \
|
--silent \
|
||||||
--coverage \
|
--coverage \
|
||||||
--testTimeout=60000
|
--testTimeout=60000
|
||||||
|
|||||||
@@ -115,11 +115,15 @@ jobs:
|
|||||||
|
|
||||||
- name: Build Embedding SDK package
|
- name: Build Embedding SDK package
|
||||||
if: ${{ needs.determine-test-type.outputs.type == 'component' }}
|
if: ${{ needs.determine-test-type.outputs.type == 'component' }}
|
||||||
run: yarn build-embedding-sdk-package
|
run: bun run build-embedding-sdk-package
|
||||||
|
|
||||||
- name: Prepare Cypress environment
|
- name: Prepare Cypress environment
|
||||||
id: cypress-prep
|
id: cypress-prep
|
||||||
uses: ./.github/actions/prepare-cypress
|
uses: ./.github/actions/prepare-cypress
|
||||||
|
|
||||||
|
- name: Compile CLJS
|
||||||
|
run: bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Run Metabase
|
- name: Run Metabase
|
||||||
run: node e2e/runner/run_cypress_ci.js start
|
run: node e2e/runner/run_cypress_ci.js start
|
||||||
|
|
||||||
|
|||||||
3
.github/workflows/e2e-test.yml
vendored
3
.github/workflows/e2e-test.yml
vendored
@@ -105,6 +105,9 @@ jobs:
|
|||||||
if: github.run_attempt != '1'
|
if: github.run_attempt != '1'
|
||||||
run: echo "specs=$(cat failed-specs)" >> $GITHUB_ENV
|
run: echo "specs=$(cat failed-specs)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Compile CLJS
|
||||||
|
run: bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Run Metabase
|
- name: Run Metabase
|
||||||
run: node e2e/runner/run_cypress_ci.js start
|
run: node e2e/runner/run_cypress_ci.js start
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Prepare build scripts
|
- name: Prepare release scripts
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
|
|
||||||
- name: Build sample app compatibility data
|
- name: Build sample app compatibility data
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
# Remove the matchers to not report false positives on every PR
|
# Remove the matchers to not report false positives on every PR
|
||||||
# unrelated to embedding (EMB-765)
|
# unrelated to embedding (EMB-765)
|
||||||
echo "::remove-matcher owner=tsc::"
|
echo "::remove-matcher owner=tsc::"
|
||||||
yarn build-embedding-sdk-package
|
bun run build-embedding-sdk-package
|
||||||
- name: Prepare Embedding SDK artifact
|
- name: Prepare Embedding SDK artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
10
.github/workflows/embedding-sdk.yml
vendored
10
.github/workflows/embedding-sdk.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
|||||||
name: embedding-sdk-${{ github.event.pull_request.head.sha || github.sha }}
|
name: embedding-sdk-${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
path: ${{ github.workspace }}/resources/embedding-sdk
|
path: ${{ github.workspace }}/resources/embedding-sdk
|
||||||
- name: Run frontend embedding SDK snippets type check
|
- name: Run frontend embedding SDK snippets type check
|
||||||
run: yarn run embedding-sdk:cli-snippets:type-check
|
run: bun run embedding-sdk:cli-snippets:type-check
|
||||||
|
|
||||||
embedding-sdk-docs-snippets-type-check:
|
embedding-sdk-docs-snippets-type-check:
|
||||||
if: inputs.docs-snippets-type-check && !inputs.skip
|
if: inputs.docs-snippets-type-check && !inputs.skip
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
name: embedding-sdk-${{ github.event.pull_request.head.sha || github.sha }}
|
name: embedding-sdk-${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
path: ${{ github.workspace }}/resources/embedding-sdk
|
path: ${{ github.workspace }}/resources/embedding-sdk
|
||||||
- name: Run frontend embedding SDK snippets type check
|
- name: Run frontend embedding SDK snippets type check
|
||||||
run: yarn run embedding-sdk:docs-snippets:type-check
|
run: bun run embedding-sdk:docs-snippets:type-check
|
||||||
|
|
||||||
embedding-sdk-api-documentation-generation-validation:
|
embedding-sdk-api-documentation-generation-validation:
|
||||||
if: inputs.documentation-validation && !inputs.skip
|
if: inputs.documentation-validation && !inputs.skip
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
yarn embedding-sdk:docs:generate:pure --emit none 2>&1 \
|
bun run embedding-sdk:docs:generate:pure --emit none 2>&1 \
|
||||||
| tee /dev/stdout \
|
| tee /dev/stdout \
|
||||||
| tee >( tail -n 10 \
|
| tee >( tail -n 10 \
|
||||||
| sed '1s/^/output<<EOF\n/' \
|
| sed '1s/^/output<<EOF\n/' \
|
||||||
@@ -98,14 +98,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
remove-previous-comment: true
|
remove-previous-comment: true
|
||||||
add-new-comment: ${{ steps.docs-generation.outcome == 'failure' && contains(steps.docs-generation.outputs.output, 'not included in the documentation') }}
|
add-new-comment: ${{ steps.docs-generation.outcome == 'failure' && contains(steps.docs-generation.outputs.output, 'not included in the documentation') }}
|
||||||
message: "📝 Some exported types from `@metabase/embedding-sdk-react` reference other types that are not exported, i.e. internal types.<br><br>The internal type reference breaks API documentation generation for the SDK and also may unexpectedly increase the output size of the type declaration file.<br><br>Please check the CI logs to find the name of such type.<br><br>- If a type should be publicly available in the SDK, add a description to it or a TypeDoc annotation and export it from SDK.<br>- If a type is internal and should _not_ be publicly exposed, refactor types to prevent referencing other types that are not exported from SDK.<br><br>You can run `yarn embedding-sdk:docs:generate` locally to verify that the issue has been resolved."
|
message: "📝 Some exported types from `@metabase/embedding-sdk-react` reference other types that are not exported, i.e. internal types.<br><br>The internal type reference breaks API documentation generation for the SDK and also may unexpectedly increase the output size of the type declaration file.<br><br>Please check the CI logs to find the name of such type.<br><br>- If a type should be publicly available in the SDK, add a description to it or a TypeDoc annotation and export it from SDK.<br>- If a type is internal and should _not_ be publicly exposed, refactor types to prevent referencing other types that are not exported from SDK.<br><br>You can run `bun run embedding-sdk:docs:generate` locally to verify that the issue has been resolved."
|
||||||
include-log: true
|
include-log: true
|
||||||
- name: Comment on PR if 'Failed to resolve link' error happens
|
- name: Comment on PR if 'Failed to resolve link' error happens
|
||||||
uses: ./.github/actions/notify-pull-request
|
uses: ./.github/actions/notify-pull-request
|
||||||
with:
|
with:
|
||||||
remove-previous-comment: true
|
remove-previous-comment: true
|
||||||
add-new-comment: ${{ steps.docs-generation.outcome == 'failure' && contains(steps.docs-generation.outputs.output, 'Failed to resolve link') }}
|
add-new-comment: ${{ steps.docs-generation.outcome == 'failure' && contains(steps.docs-generation.outputs.output, 'Failed to resolve link') }}
|
||||||
message: "📝 A typedoc `{@link <TYPE_NAME>}` annotation is found that can't be resolved.<br><br>Most likely it happens when the referenced type is not exported. Please check the CI logs to find the name of such type.<br><br>- If a referenced in `{@link}` type should be publicly available in the SDK, add a description to it or a TypeDoc annotation and export it from SDK.<br>- If a type is internal and should _not_ be publicly exposed, change types to prevent unexported type reference in `{@link}` annotation.<br><br>You can run `yarn embedding-sdk:docs:generate` locally to verify that the issue has been resolved."
|
message: "📝 A typedoc `{@link <TYPE_NAME>}` annotation is found that can't be resolved.<br><br>Most likely it happens when the referenced type is not exported. Please check the CI logs to find the name of such type.<br><br>- If a referenced in `{@link}` type should be publicly available in the SDK, add a description to it or a TypeDoc annotation and export it from SDK.<br>- If a type is internal and should _not_ be publicly exposed, change types to prevent unexported type reference in `{@link}` annotation.<br><br>You can run `bun run embedding-sdk:docs:generate` locally to verify that the issue has been resolved."
|
||||||
include-log: true
|
include-log: true
|
||||||
- name: Fail Job
|
- name: Fail Job
|
||||||
if: ${{ steps.docs-generation.outcome == 'failure' }}
|
if: ${{ steps.docs-generation.outcome == 'failure' }}
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Build cljs
|
- name: Build cljs
|
||||||
run: yarn build:cljs
|
run: bun run build:cljs
|
||||||
- name: Stress-test ${{ github.event.inputs.spec }} ${{ github.event.inputs.burn_in }} times
|
- name: Stress-test ${{ github.event.inputs.spec }} ${{ github.event.inputs.burn_in }} times
|
||||||
run: |
|
run: |
|
||||||
for i in {1..${{ github.event.inputs.burn_in }}}; do
|
for i in {1..${{ github.event.inputs.burn_in }}}; do
|
||||||
yarn jest --runInBand --ci --silent --no-cache \
|
bun run jest --runInBand --ci --silent --no-cache \
|
||||||
--testPathPattern '${{ github.event.inputs.spec }}' \
|
--testPathPattern '${{ github.event.inputs.spec }}' \
|
||||||
--testNamePattern '${{ github.event.inputs.grep }}'
|
--testNamePattern '${{ github.event.inputs.grep }}'
|
||||||
if [[ "$?" != 0 ]]; then
|
if [[ "$?" != 0 ]]; then
|
||||||
|
|||||||
18
.github/workflows/frontend.yml
vendored
18
.github/workflows/frontend.yml
vendored
@@ -46,15 +46,15 @@ jobs:
|
|||||||
key: ${{ steps.get-cache-keys.outputs.eslint-cache-key }}
|
key: ${{ steps.get-cache-keys.outputs.eslint-cache-key }}
|
||||||
|
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: yarn build-pure:cljs
|
run: bun run build-pure:cljs
|
||||||
- name: Find CSS variables that are used but never defined
|
- name: Find CSS variables that are used but never defined
|
||||||
run: yarn find-never-defined-css-variables
|
run: bun run find-never-defined-css-variables
|
||||||
- name: Run Prettier formatting linter
|
- name: Run Prettier formatting linter
|
||||||
run: yarn run lint-prettier-pure
|
run: bun run lint-prettier-pure
|
||||||
- name: Run ESLint linter
|
- name: Run ESLint linter
|
||||||
run: yarn run lint-eslint-pure
|
run: bun run lint-eslint-pure
|
||||||
- name: Run CSS linter
|
- name: Run CSS linter
|
||||||
run: yarn run lint-css
|
run: bun run lint-css
|
||||||
|
|
||||||
fe-type-check:
|
fe-type-check:
|
||||||
if: ${{ !inputs.skip }}
|
if: ${{ !inputs.skip }}
|
||||||
@@ -66,9 +66,9 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-frontend
|
uses: ./.github/actions/prepare-frontend
|
||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- run: yarn build-pure:cljs
|
- run: bun run build-pure:cljs
|
||||||
name: Compile CLJS
|
name: Compile CLJS
|
||||||
- run: yarn type-check-pure
|
- run: bun run type-check-pure
|
||||||
name: Check types
|
name: Check types
|
||||||
|
|
||||||
fe-tests-unit:
|
fe-tests-unit:
|
||||||
@@ -90,7 +90,7 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Run frontend unit tests
|
- name: Run frontend unit tests
|
||||||
run: yarn run test-unit --silent --shard=${{ matrix.shard }}/${{ env.SHARDS }}
|
run: bun run test-unit --silent --shard=${{ matrix.shard }}/${{ env.SHARDS }}
|
||||||
# Trunk Quarantine controls the final state of the run in the CI!
|
# Trunk Quarantine controls the final state of the run in the CI!
|
||||||
# Even if this step fails we let it pass, and then `trunk-io/analytics-uploader` determines
|
# Even if this step fails we let it pass, and then `trunk-io/analytics-uploader` determines
|
||||||
# whether to fail or to pass the whole job, based on the quarantine list.
|
# whether to fail or to pass the whole job, based on the quarantine list.
|
||||||
@@ -118,7 +118,7 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Run frontend timezones tests
|
- name: Run frontend timezones tests
|
||||||
run: yarn run test-timezones
|
run: bun run test-timezones
|
||||||
|
|
||||||
fe-tests-result:
|
fe-tests-result:
|
||||||
needs:
|
needs:
|
||||||
|
|||||||
@@ -135,10 +135,10 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: NODE_ENV=development yarn build-pure:cljs
|
run: NODE_ENV=development bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Build Storybook
|
- name: Build Storybook
|
||||||
run: yarn build-storybook
|
run: bun run build-storybook
|
||||||
env:
|
env:
|
||||||
STORYBOOK_STORIES_FILTER: ${{ needs.detect-changed-stories.outputs.story_files }}
|
STORYBOOK_STORIES_FILTER: ${{ needs.detect-changed-stories.outputs.story_files }}
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ jobs:
|
|||||||
echo "Run $i of $BURN_IN"
|
echo "Run $i of $BURN_IN"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
|
|
||||||
if yarn test-visual:loki \
|
if bun run test-visual:loki \
|
||||||
--reactUri file:./storybook-static \
|
--reactUri file:./storybook-static \
|
||||||
--verboseRenderer; then
|
--verboseRenderer; then
|
||||||
echo "✅ Run $i passed"
|
echo "✅ Run $i passed"
|
||||||
@@ -182,7 +182,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate Visual Report on Failure
|
- name: Generate Visual Report on Failure
|
||||||
if: failure()
|
if: failure()
|
||||||
run: yarn test-visual:loki-report
|
run: bun run test-visual:loki-report
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
if: failure()
|
if: failure()
|
||||||
|
|||||||
4
.github/workflows/loki-update.yml
vendored
4
.github/workflows/loki-update.yml
vendored
@@ -22,10 +22,10 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: yarn build-pure:cljs
|
run: bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Update Loki Snapshots
|
- name: Update Loki Snapshots
|
||||||
run: yarn test-visual:loki:ci || yarn test-visual:loki-approve-diff && yarn test-visual:loki-prune
|
run: bun run test-visual:loki:ci || bun run test-visual:loki-approve-diff && bun run test-visual:loki-prune
|
||||||
|
|
||||||
- name: Check for changes
|
- name: Check for changes
|
||||||
id: check-changes
|
id: check-changes
|
||||||
|
|||||||
6
.github/workflows/loki.yml
vendored
6
.github/workflows/loki.yml
vendored
@@ -49,14 +49,14 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Compile CLJS
|
- name: Compile CLJS
|
||||||
run: NODE_ENV=development yarn build-pure:cljs
|
run: NODE_ENV=development bun run build-pure:cljs
|
||||||
|
|
||||||
- name: Run Loki Visual Tests
|
- name: Run Loki Visual Tests
|
||||||
run: yarn test-visual:loki:ci
|
run: bun run test-visual:loki:ci
|
||||||
|
|
||||||
- name: Generate Visual Report on Failure
|
- name: Generate Visual Report on Failure
|
||||||
if: failure()
|
if: failure()
|
||||||
run: yarn test-visual:loki-report
|
run: bun run test-visual:loki-report
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
id: artifact-upload-step
|
id: artifact-upload-step
|
||||||
|
|||||||
2
.github/workflows/minimal-tests.yml
vendored
2
.github/workflows/minimal-tests.yml
vendored
@@ -137,7 +137,7 @@ jobs:
|
|||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- name: Run frontend unit tests
|
- name: Run frontend unit tests
|
||||||
run: yarn run test-unit --silent
|
run: bun run test-unit --silent
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
- name: Upload Test Results
|
- name: Upload Test Results
|
||||||
uses: ./.github/actions/upload-test-results
|
uses: ./.github/actions/upload-test-results
|
||||||
|
|||||||
16
.github/workflows/pre-release.yml
vendored
16
.github/workflows/pre-release.yml
vendored
@@ -33,9 +33,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
# note: this block can be removed after we stop needing to be able to test versions before v55
|
# note: this block can be removed after we stop needing to be able to test versions before v55
|
||||||
- name: Get test mode config
|
- name: Get test mode config
|
||||||
id: config
|
id: config
|
||||||
@@ -255,9 +257,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Send tests complete message
|
- name: Send tests complete message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
|
|||||||
18
.github/workflows/release-embedding-sdk.yml
vendored
18
.github/workflows/release-embedding-sdk.yml
vendored
@@ -44,10 +44,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
|
release
|
||||||
|
.github
|
||||||
|
|
||||||
- name: Prepare build scripts
|
- name: Prepare release scripts
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
|
|
||||||
- name: Cache build scripts
|
- name: Cache build scripts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -178,8 +180,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: ${{ inputs.branch }}
|
ref: ${{ inputs.branch }}
|
||||||
|
|
||||||
- name: Prepare build scripts
|
- name: Prepare release scripts
|
||||||
run: yarn --cwd release --frozen-lockfile && yarn --cwd release build
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
|
|
||||||
- name: Get current SDK version
|
- name: Get current SDK version
|
||||||
id: current-sdk-version
|
id: current-sdk-version
|
||||||
@@ -256,7 +258,7 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: yarn embedding-sdk:test-unit
|
run: bun run embedding-sdk:test-unit
|
||||||
|
|
||||||
build-sdk:
|
build-sdk:
|
||||||
needs: [test, determine-sdk-version]
|
needs: [test, determine-sdk-version]
|
||||||
@@ -282,10 +284,10 @@ jobs:
|
|||||||
./bin/embedding-sdk/release_utils.bash update_package_json_template ${{ needs.determine-sdk-version.outputs.sdk_version }}
|
./bin/embedding-sdk/release_utils.bash update_package_json_template ${{ needs.determine-sdk-version.outputs.sdk_version }}
|
||||||
|
|
||||||
- name: Build SDK package
|
- name: Build SDK package
|
||||||
run: yarn run build-embedding-sdk-package
|
run: bun run build-embedding-sdk-package
|
||||||
|
|
||||||
- name: Generate SDK package.json in the build directory
|
- name: Generate SDK package.json in the build directory
|
||||||
run: yarn run embedding-sdk:generate-package
|
run: bun run embedding-sdk:generate-package
|
||||||
|
|
||||||
- name: Upload built SDK package as artifact
|
- name: Upload built SDK package as artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
8
.github/workflows/release-log.yml
vendored
8
.github/workflows/release-log.yml
vendored
@@ -38,10 +38,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: master # this only works on master
|
ref: master # this only works on master
|
||||||
fetch-depth: 0 # we want all branches and tags
|
fetch-depth: 0 # we want all branches and tags
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: yarn --cwd release --frozen-lockfile && npm i -g tsx
|
run: bun install --cwd release --frozen-lockfile && npm i -g tsx
|
||||||
- name: Build release scripts
|
- name: Build release scripts
|
||||||
run: yarn --cwd release build
|
run: bun run --cwd release build
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -21,8 +21,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: release
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: Prepare build scripts
|
- name: Prepare build scripts
|
||||||
run: yarn --cwd release --frozen-lockfile && yarn --cwd release build
|
run: bun install --cwd release --frozen-lockfile && bun run --cwd release build
|
||||||
- uses: actions/github-script@v7
|
- uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
|
||||||
|
|||||||
8
.github/workflows/release-notes-preview.yml
vendored
8
.github/workflows/release-notes-preview.yml
vendored
@@ -23,9 +23,11 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Version
|
- name: Get Release Version
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
|
|||||||
6
.github/workflows/release-patch.yml
vendored
6
.github/workflows/release-patch.yml
vendored
@@ -26,8 +26,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: release
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: Prepare build scripts
|
- name: Prepare build scripts
|
||||||
run: yarn --cwd release --frozen-lockfile && yarn --cwd release build
|
run: bun install --cwd release --frozen-lockfile && bun run --cwd release build
|
||||||
- name: Trigger auto-patch
|
- name: Trigger auto-patch
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
|
|||||||
16
.github/workflows/release-status.yml
vendored
16
.github/workflows/release-status.yml
vendored
@@ -14,9 +14,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn --frozen-lockfile && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Check release status and post to Slack
|
- name: Check release status and post to Slack
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
@@ -47,9 +49,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn --frozen-lockfile && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Check backport status and post to Slack
|
- name: Check backport status and post to Slack
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
|
|||||||
16
.github/workflows/release-tag.yml
vendored
16
.github/workflows/release-tag.yml
vendored
@@ -79,9 +79,11 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Version
|
- name: Get Release Version
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: canonical_version
|
id: canonical_version
|
||||||
@@ -304,9 +306,11 @@ jobs:
|
|||||||
aws-region: ${{ vars.AWS_REGION }}
|
aws-region: ${{ vars.AWS_REGION }}
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Generate new version info
|
- name: Generate new version info
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: new_version_info
|
id: new_version_info
|
||||||
|
|||||||
24
.github/workflows/release-tests.yml
vendored
24
.github/workflows/release-tests.yml
vendored
@@ -36,10 +36,14 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: "release"
|
sparse-checkout: "release"
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: prepare dependencies in release directory
|
- name: prepare dependencies in release directory
|
||||||
run: yarn --cwd release --frozen-lockfile
|
run: bun install --cwd release --frozen-lockfile
|
||||||
- name: Run frontend type-check
|
- name: Run frontend type-check
|
||||||
run: yarn --cwd release type-check
|
run: bun run --cwd release type-check
|
||||||
|
|
||||||
release-tests-unit:
|
release-tests-unit:
|
||||||
needs: files-changed
|
needs: files-changed
|
||||||
@@ -50,10 +54,14 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: "release"
|
sparse-checkout: "release"
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: prepare dependencies in release directory
|
- name: prepare dependencies in release directory
|
||||||
run: yarn --cwd release --frozen-lockfile
|
run: bun install --cwd release --frozen-lockfile
|
||||||
- name: Run release unit tests
|
- name: Run release unit tests
|
||||||
run: yarn --cwd release test:unit
|
run: bun run --cwd release test:unit
|
||||||
|
|
||||||
release-test-build:
|
release-test-build:
|
||||||
needs: files-changed
|
needs: files-changed
|
||||||
@@ -64,9 +72,13 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: "release"
|
sparse-checkout: "release"
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
- name: prepare dependencies in release directory
|
- name: prepare dependencies in release directory
|
||||||
run: yarn --cwd release --frozen-lockfile
|
run: bun install --cwd release --frozen-lockfile
|
||||||
- name: Build release bundle
|
- name: Build release bundle
|
||||||
run: yarn --cwd release build
|
run: bun run --cwd release build
|
||||||
- name: Smoke test release bundle
|
- name: Smoke test release bundle
|
||||||
run: node release/dist/index.cjs
|
run: node release/dist/index.cjs
|
||||||
|
|||||||
80
.github/workflows/release.yml
vendored
80
.github/workflows/release.yml
vendored
@@ -63,9 +63,11 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Version
|
- name: Get Release Version
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: canonical_version
|
id: canonical_version
|
||||||
@@ -108,9 +110,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Send publish start message
|
- name: Send publish start message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
@@ -189,9 +193,11 @@ jobs:
|
|||||||
aws-region: ${{ vars.AWS_REGION }}
|
aws-region: ${{ vars.AWS_REGION }}
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: prepare release scripts
|
release
|
||||||
run: cd release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
name: Retrieve uberjar artifact
|
name: Retrieve uberjar artifact
|
||||||
with:
|
with:
|
||||||
@@ -286,9 +292,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: prepare release scripts
|
release
|
||||||
run: cd release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Tag Release
|
- name: Tag Release
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
@@ -318,9 +326,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: prepare release scripts
|
release
|
||||||
run: cd release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get extra tags
|
- name: Get extra tags
|
||||||
id: taglist
|
id: taglist
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
@@ -366,9 +376,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Find milestone
|
- name: Find milestone
|
||||||
id: find-milestone
|
id: find-milestone
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
@@ -444,9 +456,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: prepare release scripts
|
release
|
||||||
run: cd release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Publish draft release notes to github
|
- name: Publish draft release notes to github
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
@@ -523,9 +537,11 @@ jobs:
|
|||||||
aws-region: ${{ vars.AWS_REGION }}
|
aws-region: ${{ vars.AWS_REGION }}
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Publish version info
|
- name: Publish version info
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: new_version_info
|
id: new_version_info
|
||||||
@@ -580,9 +596,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Send publish complete message
|
- name: Send publish complete message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
@@ -611,9 +629,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Update milestones
|
- name: Update milestones
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
|
|||||||
11
.github/workflows/snyk.yml
vendored
11
.github/workflows/snyk.yml
vendored
@@ -41,16 +41,23 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
project:
|
project:
|
||||||
- name: Main Frontend (yarn)
|
- name: Main Frontend (bun w/ yarn.lock)
|
||||||
file: yarn.lock
|
file: yarn.lock
|
||||||
package-manager: yarn
|
package-manager: yarn
|
||||||
category: main-frontend-yarn
|
category: main-frontend-bun
|
||||||
- name: Release Helper
|
- name: Release Helper
|
||||||
file: release/yarn.lock
|
file: release/yarn.lock
|
||||||
package-manager: yarn
|
package-manager: yarn
|
||||||
category: release-helper
|
category: release-helper
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- uses:
|
||||||
|
oven-sh/setup-bun@v2
|
||||||
|
# snyk doesn't support bun yet so we generate yarn.lock and scan that
|
||||||
|
- name: Generate yarn.lock for Snyk compatibility
|
||||||
|
run: |
|
||||||
|
bun install --yarn
|
||||||
|
cd release && bun install --yarn
|
||||||
- uses: snyk/actions/setup@0.4.0
|
- uses: snyk/actions/setup@0.4.0
|
||||||
- name: Run snyk test
|
- name: Run snyk test
|
||||||
env:
|
env:
|
||||||
|
|||||||
25
.github/workflows/tag-for-release.yml
vendored
25
.github/workflows/tag-for-release.yml
vendored
@@ -23,9 +23,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Send build start message
|
- name: Send build start message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
@@ -62,9 +64,11 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Version
|
- name: Get Release Version
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: canonical_version
|
id: canonical_version
|
||||||
@@ -104,9 +108,11 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # IMPORTANT! to get all the branches
|
fetch-depth: 0 # IMPORTANT! to get all the branches
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get Release Branch
|
- name: Get Release Branch
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: release_branch
|
id: release_branch
|
||||||
@@ -124,6 +130,7 @@ jobs:
|
|||||||
git branch --contains ${{ inputs.commit }} | grep -q $RELEASE_BRANCH \
|
git branch --contains ${{ inputs.commit }} | grep -q $RELEASE_BRANCH \
|
||||||
&& echo "Commit found in correct release branch" \
|
&& echo "Commit found in correct release branch" \
|
||||||
|| (echo "Commit not found in correct release branch" && exit 1)
|
|| (echo "Commit not found in correct release branch" && exit 1)
|
||||||
|
git checkout -
|
||||||
|
|
||||||
tag-uberjar-for-release:
|
tag-uberjar-for-release:
|
||||||
needs: [check-version, check-commit]
|
needs: [check-version, check-commit]
|
||||||
|
|||||||
4
.github/workflows/tusk-sanity-check.yml
vendored
4
.github/workflows/tusk-sanity-check.yml
vendored
@@ -46,7 +46,7 @@ jobs:
|
|||||||
uses: ./.github/actions/prepare-frontend
|
uses: ./.github/actions/prepare-frontend
|
||||||
- name: Prepare back-end environment
|
- name: Prepare back-end environment
|
||||||
uses: ./.github/actions/prepare-backend
|
uses: ./.github/actions/prepare-backend
|
||||||
- run: yarn build-pure:cljs
|
- run: bun run build-pure:cljs
|
||||||
name: Compile CLJS
|
name: Compile CLJS
|
||||||
|
|
||||||
- name: Run lint-staged
|
- name: Run lint-staged
|
||||||
@@ -67,4 +67,4 @@ jobs:
|
|||||||
|
|
||||||
- name: Check types
|
- name: Check types
|
||||||
if: steps.changes.outputs.frontend_all == 'true'
|
if: steps.changes.outputs.frontend_all == 'true'
|
||||||
run: yarn type-check-pure
|
run: bun run type-check-pure
|
||||||
|
|||||||
14
.github/workflows/uberjar.yml
vendored
14
.github/workflows/uberjar.yml
vendored
@@ -91,9 +91,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
sparse-checkout: release
|
sparse-checkout: |
|
||||||
- name: Prepare build scripts
|
release
|
||||||
run: cd ${{ github.workspace }}/release && yarn && yarn build
|
.github
|
||||||
|
- name: Prepare release scripts
|
||||||
|
uses: ./.github/actions/prepare-release-scripts
|
||||||
- name: Get build dependencies
|
- name: Get build dependencies
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
id: dependencies
|
id: dependencies
|
||||||
@@ -175,6 +177,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
commit: ${{ github.event.inputs.commit || github.event.pull_request.head.sha || github.sha }}
|
commit: ${{ github.event.inputs.commit || github.event.pull_request.head.sha || github.sha }}
|
||||||
edition: ${{ matrix.edition }}
|
edition: ${{ matrix.edition }}
|
||||||
|
- name: Verify license files are present in uberjar
|
||||||
|
run: |
|
||||||
|
echo "Checking for license files in uberjar..."
|
||||||
|
unzip -l ./metabase.jar | grep -q "license-backend-third-party.txt" || (echo "ERROR: license-backend-third-party.txt not found in uberjar" && exit 1)
|
||||||
|
unzip -l ./metabase.jar | grep -q "license-frontend-third-party.txt" || (echo "ERROR: license-frontend-third-party.txt not found in uberjar" && exit 1)
|
||||||
|
echo "Both license files found in uberjar"
|
||||||
- name: Launch uberjar
|
- name: Launch uberjar
|
||||||
run: >-
|
run: >-
|
||||||
java --add-opens java.base/java.nio=ALL-UNNAMED -jar ./metabase.jar &
|
java --add-opens java.base/java.nio=ALL-UNNAMED -jar ./metabase.jar &
|
||||||
|
|||||||
2
.github/workflows/yaml.yml
vendored
2
.github/workflows/yaml.yml
vendored
@@ -31,4 +31,4 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Prepare front-end environment
|
- name: Prepare front-end environment
|
||||||
uses: ./.github/actions/prepare-frontend
|
uses: ./.github/actions/prepare-frontend
|
||||||
- run: yarn run lint-yaml
|
- run: bun run lint-yaml
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -39,7 +39,7 @@
|
|||||||
/cypress
|
/cypress
|
||||||
cypress.env.json
|
cypress.env.json
|
||||||
/deploy/artifacts/*
|
/deploy/artifacts/*
|
||||||
/docs/**/node_modules
|
**/node_modules/
|
||||||
/docs/**/package.json
|
/docs/**/package.json
|
||||||
/docs/**/yarn.lock
|
/docs/**/yarn.lock
|
||||||
/docs/embedding/sdk/api/
|
/docs/embedding/sdk/api/
|
||||||
@@ -55,7 +55,6 @@ cypress.env.json
|
|||||||
/logs
|
/logs
|
||||||
/modules/drivers/*/resources/namespaces.edn
|
/modules/drivers/*/resources/namespaces.edn
|
||||||
/modules/drivers/*/target
|
/modules/drivers/*/target
|
||||||
/node_modules/
|
|
||||||
/plugins
|
/plugins
|
||||||
/process.yml
|
/process.yml
|
||||||
/reset-password-artifacts
|
/reset-password-artifacts
|
||||||
@@ -86,7 +85,6 @@ cypress.env.json
|
|||||||
/temp
|
/temp
|
||||||
**/cli-snippets-tmp/**
|
**/cli-snippets-tmp/**
|
||||||
\#*\#
|
\#*\#
|
||||||
bin/node_modules/
|
|
||||||
bin/release/aws-eb/metabase-aws-eb.zip
|
bin/release/aws-eb/metabase-aws-eb.zip
|
||||||
coverage-summary.json
|
coverage-summary.json
|
||||||
junit.xml
|
junit.xml
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
yarn precommit
|
bun run precommit
|
||||||
|
|
||||||
# Run the formatter
|
# Run the formatter
|
||||||
# Note that this is stubbed in for now until we can gobally resolve some formatting issues such as what is described
|
# Note that this is stubbed in for now until we can gobally resolve some formatting issues such as what is described
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ const config: StorybookConfig = {
|
|||||||
...appConfig.resolve.alias,
|
...appConfig.resolve.alias,
|
||||||
},
|
},
|
||||||
extensions: appConfig.resolve.extensions,
|
extensions: appConfig.resolve.extensions,
|
||||||
|
fallback: {
|
||||||
|
...config.resolve?.fallback,
|
||||||
|
...appConfig.resolve.fallback,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
...(config.plugins ?? []),
|
...(config.plugins ?? []),
|
||||||
|
|||||||
6
.vscode/tasks.json
vendored
6
.vscode/tasks.json
vendored
@@ -6,7 +6,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Run front-end and back-end",
|
"label": "Run front-end and back-end",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "yarn dev",
|
"command": "bun run dev",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"reveal": "always"
|
"reveal": "always"
|
||||||
},
|
},
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Format front-end code",
|
"label": "Format front-end code",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "yarn prettier",
|
"command": "bun run prettier",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"reveal": "always",
|
"reveal": "always",
|
||||||
"panel": "dedicated",
|
"panel": "dedicated",
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Run front-end linters",
|
"label": "Run front-end linters",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "yarn lint",
|
"command": "bun run lint",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"reveal": "always",
|
"reveal": "always",
|
||||||
"panel": "dedicated",
|
"panel": "dedicated",
|
||||||
|
|||||||
@@ -23,8 +23,11 @@ COPY . .
|
|||||||
# version is pulled from git, but git doesn't trust the directory due to different owners
|
# version is pulled from git, but git doesn't trust the directory due to different owners
|
||||||
RUN git config --global --add safe.directory /home/node
|
RUN git config --global --add safe.directory /home/node
|
||||||
|
|
||||||
|
# install bun for frontend dependencies
|
||||||
|
RUN npm install -g bun
|
||||||
|
|
||||||
# install frontend dependencies
|
# install frontend dependencies
|
||||||
RUN yarn --frozen-lockfile
|
RUN bun install --frozen-lockfile
|
||||||
|
|
||||||
RUN INTERACTIVE=false CI=true MB_EDITION=$MB_EDITION bin/build.sh :version ${VERSION}
|
RUN INTERACTIVE=false CI=true MB_EDITION=$MB_EDITION bin/build.sh :version ${VERSION}
|
||||||
|
|
||||||
|
|||||||
@@ -47,19 +47,19 @@ In order to spin up a development environment, you need to start the front end a
|
|||||||
The following command will install the JavaScript dependencies:
|
The following command will install the JavaScript dependencies:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yarn install
|
bun install
|
||||||
```
|
```
|
||||||
|
|
||||||
To build and run without watching changes:
|
To build and run without watching changes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yarn build
|
bun run build
|
||||||
```
|
```
|
||||||
|
|
||||||
To build and run with hot-reload:
|
To build and run with hot-reload:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yarn build-hot
|
bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
### Backend quick setup
|
### Backend quick setup
|
||||||
|
|||||||
@@ -28,22 +28,22 @@
|
|||||||
:oss "oss")]
|
:oss "oss")]
|
||||||
(u/step (format "Build frontend with MB_EDITION=%s" mb-edition)
|
(u/step (format "Build frontend with MB_EDITION=%s" mb-edition)
|
||||||
(when-not (env/env :ci)
|
(when-not (env/env :ci)
|
||||||
(u/step "Run 'yarn' to download JavaScript dependencies"
|
(u/step "Run 'bun install' to download JavaScript dependencies"
|
||||||
(u/sh {:dir u/project-root-directory} "yarn")))
|
(u/sh {:dir u/project-root-directory} "bun" "install")))
|
||||||
(u/step "Build frontend"
|
(u/step "Build frontend"
|
||||||
(u/sh {:dir u/project-root-directory
|
(u/sh {:dir u/project-root-directory
|
||||||
:env {"PATH" (env/env :path)
|
:env {"PATH" (env/env :path)
|
||||||
"HOME" (env/env :user-home)
|
"HOME" (env/env :user-home)
|
||||||
"WEBPACK_BUNDLE" "production"
|
"WEBPACK_BUNDLE" "production"
|
||||||
"MB_EDITION" mb-edition}}
|
"MB_EDITION" mb-edition}}
|
||||||
"yarn" "build-release"))
|
"bun" "run" "build-release"))
|
||||||
(u/step "Build static viz"
|
(u/step "Build static viz"
|
||||||
(u/sh {:dir u/project-root-directory
|
(u/sh {:dir u/project-root-directory
|
||||||
:env {"PATH" (env/env :path)
|
:env {"PATH" (env/env :path)
|
||||||
"HOME" (env/env :user-home)
|
"HOME" (env/env :user-home)
|
||||||
"WEBPACK_BUNDLE" "production"
|
"WEBPACK_BUNDLE" "production"
|
||||||
"MB_EDITION" mb-edition}}
|
"MB_EDITION" mb-edition}}
|
||||||
"yarn" "build-release:static-viz"))
|
"bun" "run" "build-release:static-viz"))
|
||||||
(u/announce "Frontend built successfully."))))
|
(u/announce "Frontend built successfully."))))
|
||||||
|
|
||||||
(defn- build-licenses!
|
(defn- build-licenses!
|
||||||
@@ -65,14 +65,9 @@
|
|||||||
without-license))
|
without-license))
|
||||||
(u/announce "License information generated at %s" output-filename)))
|
(u/announce "License information generated at %s" output-filename)))
|
||||||
|
|
||||||
(u/step "Run `yarn licenses generate-disclaimer`"
|
(u/step "Run `bun run generate-license-disclaimer`"
|
||||||
(let [license-text (str/join \newline
|
(u/sh {:dir u/project-root-directory}
|
||||||
(u/sh {:dir u/project-root-directory
|
"bun" "run" "generate-license-disclaimer"))))
|
||||||
:quiet? true}
|
|
||||||
"yarn" "licenses" "generate-disclaimer"))]
|
|
||||||
(spit (u/filename u/project-root-directory
|
|
||||||
"resources"
|
|
||||||
"license-frontend-third-party.txt") license-text)))))
|
|
||||||
|
|
||||||
(defn- build-uberjar! [edition]
|
(defn- build-uberjar! [edition]
|
||||||
{:pre [(#{:oss :ee} edition)]}
|
{:pre [(#{:oss :ee} edition)]}
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ fi
|
|||||||
|
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
claude --print "$(printf "%q " "$@")" --allowedTools "Bash(./bin/mage:*)" "Bash(clj-kondo:*)" "Bash(clojure:*)", "Bash(grep:*)" "Bash(ls:*)" "Bash(yarn lint:*)" "Bash(yarn test-unit:*)" "WebFetchTool(domain:github.com)" Edit
|
claude --print "$(printf "%q " "$@")" --allowedTools "Bash(./bin/mage:*)" "Bash(clj-kondo:*)" "Bash(clojure:*)", "Bash(grep:*)" "Bash(ls:*)" "Bash(bun run lint:*)" "Bash(bun run test-unit:*)" "WebFetchTool(domain:github.com)" Edit
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ check_required_tools() {
|
|||||||
missing+=("node")
|
missing+=("node")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! has_tool yarn; then
|
if ! has_tool bun; then
|
||||||
missing+=("yarn")
|
missing+=("bun")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! has_tool java; then
|
if ! has_tool java; then
|
||||||
@@ -60,7 +60,7 @@ check_required_tools() {
|
|||||||
install_frontend_deps() {
|
install_frontend_deps() {
|
||||||
print_step "Installing frontend dependencies"
|
print_step "Installing frontend dependencies"
|
||||||
|
|
||||||
if yarn install --frozen-lockfile --prefer-offline; then
|
if bun install --frozen-lockfile; then
|
||||||
print_success "Frontend dependencies installed"
|
print_success "Frontend dependencies installed"
|
||||||
else
|
else
|
||||||
print_error "Failed to install frontend dependencies"
|
print_error "Failed to install frontend dependencies"
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ main() {
|
|||||||
echo " 3. Configure shell integration (with your permission)"
|
echo " 3. Configure shell integration (with your permission)"
|
||||||
echo -e "${DIM} - Puts everything you need on your path when you cd into the project${NC}"
|
echo -e "${DIM} - Puts everything you need on your path when you cd into the project${NC}"
|
||||||
echo " 4. Install all required development tools"
|
echo " 4. Install all required development tools"
|
||||||
echo -e "${DIM} - Installs Node.js, Yarn, Clojure, etc.${NC}"
|
echo -e "${DIM} - Installs Node.js, Bun, Clojure, etc.${NC}"
|
||||||
echo " 5. Run dev-deps to download project dependencies"
|
echo " 5. Run dev-deps to download project dependencies"
|
||||||
echo -e "${DIM} - Downloads and caches JavaScript and Clojure libraries${NC}"
|
echo -e "${DIM} - Downloads and caches JavaScript and Clojure libraries${NC}"
|
||||||
echo -e "${DIM} and optionally builds a jar${NC}"
|
echo -e "${DIM} and optionally builds a jar${NC}"
|
||||||
@@ -560,7 +560,7 @@ main() {
|
|||||||
echo " java --add-opens java.base/java.nio=ALL-UNNAMED -jar target/uberjar/metabase.jar"
|
echo " java --add-opens java.base/java.nio=ALL-UNNAMED -jar target/uberjar/metabase.jar"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Frontend in another terminal:"
|
echo "Frontend in another terminal:"
|
||||||
echo " yarn build-hot"
|
echo " bun run build-hot"
|
||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function restore_package_files() {
|
function restore_package_files() {
|
||||||
git checkout -- yarn.lock package.json
|
git checkout -- bun.lock package.json
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_packages() {
|
function install_packages() {
|
||||||
@@ -16,7 +16,7 @@ function install_packages() {
|
|||||||
|
|
||||||
# Install React and Cypress React test harness
|
# Install React and Cypress React test harness
|
||||||
echo "Installing $dependencies"
|
echo "Installing $dependencies"
|
||||||
yarn add $dependencies
|
bun add $dependencies
|
||||||
}
|
}
|
||||||
|
|
||||||
function print_usage() {
|
function print_usage() {
|
||||||
|
|||||||
321
bin/embedding-sdk/templates/bun.lock
Normal file
321
bin/embedding-sdk/templates/bun.lock
Normal file
@@ -0,0 +1,321 @@
|
|||||||
|
{
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"configVersion": 1,
|
||||||
|
"workspaces": {
|
||||||
|
"": {
|
||||||
|
"name": "embedding-snippets",
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/cors": "^2.8.17",
|
||||||
|
"@types/express-session": "^1.18.1",
|
||||||
|
"cors": "^2.8.5",
|
||||||
|
"express": "^5.0.1",
|
||||||
|
"express-session": "^1.18.1",
|
||||||
|
"jsonwebtoken": "^9.0.3",
|
||||||
|
"next": "^15.5.9",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"packages": {
|
||||||
|
"@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="],
|
||||||
|
|
||||||
|
"@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="],
|
||||||
|
|
||||||
|
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
|
||||||
|
|
||||||
|
"@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
|
||||||
|
|
||||||
|
"@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
|
||||||
|
|
||||||
|
"@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
|
||||||
|
|
||||||
|
"@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
|
||||||
|
|
||||||
|
"@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
|
||||||
|
|
||||||
|
"@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
|
||||||
|
|
||||||
|
"@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
|
||||||
|
|
||||||
|
"@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
|
||||||
|
|
||||||
|
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
|
||||||
|
|
||||||
|
"@next/env": ["@next/env@15.5.9", "", {}, "sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg=="],
|
||||||
|
|
||||||
|
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.5.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw=="],
|
||||||
|
|
||||||
|
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.5.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg=="],
|
||||||
|
|
||||||
|
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.5.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA=="],
|
||||||
|
|
||||||
|
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.5.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw=="],
|
||||||
|
|
||||||
|
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.5.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw=="],
|
||||||
|
|
||||||
|
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.5.7", "", { "os": "linux", "cpu": "x64" }, "sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA=="],
|
||||||
|
|
||||||
|
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.5.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ=="],
|
||||||
|
|
||||||
|
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.5.7", "", { "os": "win32", "cpu": "x64" }, "sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw=="],
|
||||||
|
|
||||||
|
"@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
|
||||||
|
|
||||||
|
"@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="],
|
||||||
|
|
||||||
|
"@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="],
|
||||||
|
|
||||||
|
"@types/cors": ["@types/cors@2.8.19", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="],
|
||||||
|
|
||||||
|
"@types/express": ["@types/express@5.0.6", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "^2" } }, "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA=="],
|
||||||
|
|
||||||
|
"@types/express-serve-static-core": ["@types/express-serve-static-core@5.1.1", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A=="],
|
||||||
|
|
||||||
|
"@types/express-session": ["@types/express-session@1.18.2", "", { "dependencies": { "@types/express": "*" } }, "sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg=="],
|
||||||
|
|
||||||
|
"@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="],
|
||||||
|
|
||||||
|
"@types/node": ["@types/node@25.0.8", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg=="],
|
||||||
|
|
||||||
|
"@types/qs": ["@types/qs@6.14.0", "", {}, "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="],
|
||||||
|
|
||||||
|
"@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="],
|
||||||
|
|
||||||
|
"@types/send": ["@types/send@1.2.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ=="],
|
||||||
|
|
||||||
|
"@types/serve-static": ["@types/serve-static@2.2.0", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*" } }, "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ=="],
|
||||||
|
|
||||||
|
"accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
|
||||||
|
|
||||||
|
"body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
|
||||||
|
|
||||||
|
"buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
|
||||||
|
|
||||||
|
"bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
|
||||||
|
|
||||||
|
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
|
||||||
|
|
||||||
|
"call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
|
||||||
|
|
||||||
|
"caniuse-lite": ["caniuse-lite@1.0.30001764", "", {}, "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g=="],
|
||||||
|
|
||||||
|
"client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
|
||||||
|
|
||||||
|
"content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="],
|
||||||
|
|
||||||
|
"content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
|
||||||
|
|
||||||
|
"cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
|
||||||
|
|
||||||
|
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
|
||||||
|
|
||||||
|
"cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
|
||||||
|
|
||||||
|
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
||||||
|
|
||||||
|
"depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
|
||||||
|
|
||||||
|
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
|
||||||
|
|
||||||
|
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
||||||
|
|
||||||
|
"ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="],
|
||||||
|
|
||||||
|
"ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
|
||||||
|
|
||||||
|
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
|
||||||
|
|
||||||
|
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
|
||||||
|
|
||||||
|
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
|
||||||
|
|
||||||
|
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
|
||||||
|
|
||||||
|
"escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
|
||||||
|
|
||||||
|
"etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
|
||||||
|
|
||||||
|
"express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="],
|
||||||
|
|
||||||
|
"express-session": ["express-session@1.18.2", "", { "dependencies": { "cookie": "0.7.2", "cookie-signature": "1.0.7", "debug": "2.6.9", "depd": "~2.0.0", "on-headers": "~1.1.0", "parseurl": "~1.3.3", "safe-buffer": "5.2.1", "uid-safe": "~2.1.5" } }, "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A=="],
|
||||||
|
|
||||||
|
"finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="],
|
||||||
|
|
||||||
|
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
|
||||||
|
|
||||||
|
"fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
|
||||||
|
|
||||||
|
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
||||||
|
|
||||||
|
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
|
||||||
|
|
||||||
|
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
||||||
|
|
||||||
|
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
|
||||||
|
|
||||||
|
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
||||||
|
|
||||||
|
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
||||||
|
|
||||||
|
"http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="],
|
||||||
|
|
||||||
|
"iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="],
|
||||||
|
|
||||||
|
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
||||||
|
|
||||||
|
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
||||||
|
|
||||||
|
"is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
|
||||||
|
|
||||||
|
"jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="],
|
||||||
|
|
||||||
|
"jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="],
|
||||||
|
|
||||||
|
"jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="],
|
||||||
|
|
||||||
|
"lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="],
|
||||||
|
|
||||||
|
"lodash.isboolean": ["lodash.isboolean@3.0.3", "", {}, "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="],
|
||||||
|
|
||||||
|
"lodash.isinteger": ["lodash.isinteger@4.0.4", "", {}, "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="],
|
||||||
|
|
||||||
|
"lodash.isnumber": ["lodash.isnumber@3.0.3", "", {}, "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="],
|
||||||
|
|
||||||
|
"lodash.isplainobject": ["lodash.isplainobject@4.0.6", "", {}, "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="],
|
||||||
|
|
||||||
|
"lodash.isstring": ["lodash.isstring@4.0.1", "", {}, "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="],
|
||||||
|
|
||||||
|
"lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="],
|
||||||
|
|
||||||
|
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
||||||
|
|
||||||
|
"media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
|
||||||
|
|
||||||
|
"merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
|
||||||
|
|
||||||
|
"mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
|
||||||
|
|
||||||
|
"mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="],
|
||||||
|
|
||||||
|
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
||||||
|
|
||||||
|
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
|
||||||
|
|
||||||
|
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
|
||||||
|
|
||||||
|
"next": ["next@15.5.9", "", { "dependencies": { "@next/env": "15.5.9", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.5.7", "@next/swc-darwin-x64": "15.5.7", "@next/swc-linux-arm64-gnu": "15.5.7", "@next/swc-linux-arm64-musl": "15.5.7", "@next/swc-linux-x64-gnu": "15.5.7", "@next/swc-linux-x64-musl": "15.5.7", "@next/swc-win32-arm64-msvc": "15.5.7", "@next/swc-win32-x64-msvc": "15.5.7", "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg=="],
|
||||||
|
|
||||||
|
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
|
||||||
|
|
||||||
|
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
|
||||||
|
|
||||||
|
"on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
|
||||||
|
|
||||||
|
"on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="],
|
||||||
|
|
||||||
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
||||||
|
|
||||||
|
"parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
|
||||||
|
|
||||||
|
"path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="],
|
||||||
|
|
||||||
|
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
||||||
|
|
||||||
|
"postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
|
||||||
|
|
||||||
|
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
||||||
|
|
||||||
|
"qs": ["qs@6.14.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ=="],
|
||||||
|
|
||||||
|
"random-bytes": ["random-bytes@1.0.0", "", {}, "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ=="],
|
||||||
|
|
||||||
|
"range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
|
||||||
|
|
||||||
|
"raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="],
|
||||||
|
|
||||||
|
"react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
|
||||||
|
|
||||||
|
"react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="],
|
||||||
|
|
||||||
|
"router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
|
||||||
|
|
||||||
|
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
||||||
|
|
||||||
|
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
||||||
|
|
||||||
|
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
|
||||||
|
|
||||||
|
"semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
|
||||||
|
|
||||||
|
"send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="],
|
||||||
|
|
||||||
|
"serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="],
|
||||||
|
|
||||||
|
"setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
|
||||||
|
|
||||||
|
"sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
|
||||||
|
|
||||||
|
"side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
|
||||||
|
|
||||||
|
"side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
|
||||||
|
|
||||||
|
"side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
|
||||||
|
|
||||||
|
"side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
|
||||||
|
|
||||||
|
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
||||||
|
|
||||||
|
"statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="],
|
||||||
|
|
||||||
|
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
|
||||||
|
|
||||||
|
"toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
|
||||||
|
|
||||||
|
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
||||||
|
|
||||||
|
"type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
|
||||||
|
|
||||||
|
"uid-safe": ["uid-safe@2.1.5", "", { "dependencies": { "random-bytes": "~1.0.0" } }, "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA=="],
|
||||||
|
|
||||||
|
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
||||||
|
|
||||||
|
"unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
|
||||||
|
|
||||||
|
"vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
|
||||||
|
|
||||||
|
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||||
|
|
||||||
|
"express-session/cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="],
|
||||||
|
|
||||||
|
"express-session/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
||||||
|
|
||||||
|
"express-session/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@ function prepare_files() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function install_dependencies() {
|
function install_dependencies() {
|
||||||
yarn --cwd ./enterprise/frontend/src/embedding-sdk-package/cli-snippets-tmp/express-server install --frozen-lockfile
|
bun install --cwd ./enterprise/frontend/src/embedding-sdk-package/cli-snippets-tmp/express-server --frozen-lockfile
|
||||||
}
|
}
|
||||||
|
|
||||||
function type_check() {
|
function type_check() {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
function prepare_files() {
|
function prepare_files() {
|
||||||
cp ./bin/embedding-sdk/templates/package.json docs/embedding/
|
cp ./bin/embedding-sdk/templates/package.json docs/embedding/
|
||||||
cp ./bin/embedding-sdk/templates/yarn.lock docs/embedding/
|
cp ./bin/embedding-sdk/templates/bun.lock docs/embedding/
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_dependencies() {
|
function install_dependencies() {
|
||||||
yarn --cwd ./docs/embedding install --frozen-lockfile
|
bun install --cwd ./docs/embedding --frozen-lockfile
|
||||||
}
|
}
|
||||||
|
|
||||||
function type_check() {
|
function type_check() {
|
||||||
@@ -15,7 +15,7 @@ function type_check() {
|
|||||||
|
|
||||||
function cleanup_files() {
|
function cleanup_files() {
|
||||||
rm -f ./docs/embedding/package.json
|
rm -f ./docs/embedding/package.json
|
||||||
rm -f ./docs/embedding/yarn.lock
|
rm -f ./docs/embedding/bun.lock
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup_files
|
cleanup_files
|
||||||
|
|||||||
226
bin/generate-license-disclaimer.js
Normal file
226
bin/generate-license-disclaimer.js
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
// Usage: node bin/generate-license-disclaimer.js [output-path]
|
||||||
|
// If output-path is not provided, writes to resources/license-frontend-third-party.txt
|
||||||
|
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const OUTPUT_FILE = path.join(
|
||||||
|
__dirname,
|
||||||
|
"..",
|
||||||
|
"resources",
|
||||||
|
"license-frontend-third-party.txt",
|
||||||
|
);
|
||||||
|
|
||||||
|
const BUN_MODULES_DIR = path.join(__dirname, "..", "node_modules", ".bun");
|
||||||
|
|
||||||
|
const LICENSE_FILE_NAMES = [
|
||||||
|
"LICENSE",
|
||||||
|
"LICENSE.md",
|
||||||
|
"LICENSE.txt",
|
||||||
|
"license",
|
||||||
|
"license.md",
|
||||||
|
"license.txt",
|
||||||
|
"LICENCE",
|
||||||
|
"LICENCE.md",
|
||||||
|
"LICENCE.txt",
|
||||||
|
"COPYING",
|
||||||
|
"COPYING.md",
|
||||||
|
"COPYING.txt",
|
||||||
|
];
|
||||||
|
|
||||||
|
function normalizeRepoUrl(url) {
|
||||||
|
if (!url) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
return url
|
||||||
|
.replace(/^git\+/, "")
|
||||||
|
.replace(/\.git$/, "")
|
||||||
|
.replace(/^git:\/\//, "https://");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a bun package folder name like "@scope+pkg@1.0.0" or "lodash@4.17.21"
|
||||||
|
* Returns { name, version } or undefined if invalid.
|
||||||
|
*/
|
||||||
|
function parseBunFolderName(folderName) {
|
||||||
|
const lastAtIndex = folderName.lastIndexOf("@");
|
||||||
|
if (lastAtIndex <= 0) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const name = folderName.slice(0, lastAtIndex).replace(/\+/g, "/");
|
||||||
|
const version = folderName.slice(lastAtIndex + 1);
|
||||||
|
return { name, version };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scan node_modules/.bun/ and return array of packages with their paths.
|
||||||
|
*/
|
||||||
|
function scanBunPackages(bunModulesDir) {
|
||||||
|
if (!fs.existsSync(bunModulesDir)) {
|
||||||
|
throw new Error(`Bun modules directory not found: ${bunModulesDir}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const folders = fs.readdirSync(bunModulesDir);
|
||||||
|
const packages = [];
|
||||||
|
|
||||||
|
for (const folder of folders) {
|
||||||
|
const parsed = parseBunFolderName(folder);
|
||||||
|
if (!parsed) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const packagePath = path.join(
|
||||||
|
bunModulesDir,
|
||||||
|
folder,
|
||||||
|
"node_modules",
|
||||||
|
parsed.name,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!fs.existsSync(packagePath)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
packages.push({
|
||||||
|
name: parsed.name,
|
||||||
|
version: parsed.version,
|
||||||
|
path: packagePath,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return packages;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findLicenseFile(packagePath) {
|
||||||
|
for (const name of LICENSE_FILE_NAMES) {
|
||||||
|
const licensePath = path.join(packagePath, name);
|
||||||
|
if (fs.existsSync(licensePath)) {
|
||||||
|
return fs.readFileSync(licensePath, "utf-8").trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPackageInfo(packagePath) {
|
||||||
|
const pkgJsonPath = path.join(packagePath, "package.json");
|
||||||
|
if (!fs.existsSync(pkgJsonPath)) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
|
||||||
|
} catch {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate disclaimer text from package list.
|
||||||
|
*
|
||||||
|
* @param {Array} packages - Array of {name, version, path}
|
||||||
|
* @param {function} getPackageDetails - Callback (pkg) => {licenseText, repoUrl, homepage}
|
||||||
|
* @returns {string} The disclaimer text
|
||||||
|
*/
|
||||||
|
function generateDisclaimerText(packages, getPackageDetails) {
|
||||||
|
const enriched = packages.map((pkg) => {
|
||||||
|
const details = getPackageDetails(pkg);
|
||||||
|
return {
|
||||||
|
...pkg,
|
||||||
|
licenseText:
|
||||||
|
details.licenseText ||
|
||||||
|
`License: See ${details.homepage || pkg.name} package`,
|
||||||
|
repoUrl: details.repoUrl,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const groups = new Map();
|
||||||
|
for (const pkg of enriched) {
|
||||||
|
const normalizedRepo = normalizeRepoUrl(pkg.repoUrl);
|
||||||
|
const key = `${normalizedRepo || pkg.name}|||${pkg.licenseText}`;
|
||||||
|
|
||||||
|
if (!groups.has(key)) {
|
||||||
|
groups.set(key, {
|
||||||
|
packages: [],
|
||||||
|
licenseText: pkg.licenseText,
|
||||||
|
repoUrl: pkg.repoUrl,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
groups.get(key).packages.push(pkg);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sortedGroups = Array.from(groups.values()).sort((a, b) => {
|
||||||
|
const aName = a.packages[0].name.toLowerCase();
|
||||||
|
const bName = b.packages[0].name.toLowerCase();
|
||||||
|
return aName.localeCompare(bName);
|
||||||
|
});
|
||||||
|
|
||||||
|
const lines = [
|
||||||
|
"THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN PORTIONS OF THE METABASE PRODUCT.",
|
||||||
|
"",
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const group of sortedGroups) {
|
||||||
|
group.packages.sort((a, b) => a.name.localeCompare(b.name));
|
||||||
|
const uniqueNames = [...new Set(group.packages.map((p) => p.name))];
|
||||||
|
const packageList = uniqueNames.join(", ");
|
||||||
|
|
||||||
|
let sourceInfo = "";
|
||||||
|
if (group.repoUrl) {
|
||||||
|
if (uniqueNames.length > 1) {
|
||||||
|
const urlParts = uniqueNames.map(
|
||||||
|
(name) => `${group.repoUrl} (${name})`,
|
||||||
|
);
|
||||||
|
sourceInfo = `A copy of the source code may be downloaded from ${urlParts.join(", ")}.`;
|
||||||
|
} else {
|
||||||
|
sourceInfo = `A copy of the source code may be downloaded from ${group.repoUrl}.`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lines.push("-----");
|
||||||
|
lines.push("");
|
||||||
|
lines.push(
|
||||||
|
`The following software may be included in this product: ${packageList}.${sourceInfo ? " " + sourceInfo : ""} This software contains the following license and notice below:`,
|
||||||
|
);
|
||||||
|
lines.push("");
|
||||||
|
lines.push(group.licenseText);
|
||||||
|
lines.push("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines.join("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
// Allow overriding output path via command line argument (useful for tests)
|
||||||
|
const outputPath = process.argv[2] || OUTPUT_FILE;
|
||||||
|
|
||||||
|
console.log("Scanning bun packages...");
|
||||||
|
const packages = scanBunPackages(BUN_MODULES_DIR);
|
||||||
|
console.log(`Found ${packages.length} packages`);
|
||||||
|
|
||||||
|
const output = generateDisclaimerText(packages, (pkg) => {
|
||||||
|
const pkgJson = getPackageInfo(pkg.path) || {};
|
||||||
|
const licenseFile = findLicenseFile(pkg.path);
|
||||||
|
// Fall back to license field from package.json if no LICENSE file found
|
||||||
|
const licenseText = licenseFile || pkgJson.license || undefined;
|
||||||
|
|
||||||
|
const repo = pkgJson.repository;
|
||||||
|
const repoUrl =
|
||||||
|
(typeof repo === "string" ? repo : repo?.url) ||
|
||||||
|
pkgJson.homepage ||
|
||||||
|
undefined;
|
||||||
|
return {
|
||||||
|
licenseText,
|
||||||
|
repoUrl: repoUrl,
|
||||||
|
homepage: pkgJson.homepage,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.writeFileSync(outputPath, output);
|
||||||
|
console.log(`Generated ${outputPath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
generateDisclaimerText,
|
||||||
|
parseBunFolderName,
|
||||||
|
scanBunPackages,
|
||||||
|
};
|
||||||
292
bin/generate-license-disclaimer.unit.spec.js
Normal file
292
bin/generate-license-disclaimer.unit.spec.js
Normal file
@@ -0,0 +1,292 @@
|
|||||||
|
const {
|
||||||
|
generateDisclaimerText,
|
||||||
|
parseBunFolderName,
|
||||||
|
scanBunPackages,
|
||||||
|
} = require("./generate-license-disclaimer");
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const os = require("os");
|
||||||
|
|
||||||
|
describe("parseBunFolderName", () => {
|
||||||
|
it("parses simple package names", () => {
|
||||||
|
expect(parseBunFolderName("lodash@4.17.21")).toEqual({
|
||||||
|
name: "lodash",
|
||||||
|
version: "4.17.21",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("parses scoped package names", () => {
|
||||||
|
expect(parseBunFolderName("@babel+core@7.28.4")).toEqual({
|
||||||
|
name: "@babel/core",
|
||||||
|
version: "7.28.4",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("parses deeply scoped package names", () => {
|
||||||
|
expect(parseBunFolderName("@emotion+react@11.11.0")).toEqual({
|
||||||
|
name: "@emotion/react",
|
||||||
|
version: "11.11.0",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns undefined for invalid names", () => {
|
||||||
|
expect(parseBunFolderName("invalid")).toBeUndefined();
|
||||||
|
expect(parseBunFolderName("")).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("scanBunPackages", () => {
|
||||||
|
let tempDir;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "bun-test-"));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
fs.rmSync(tempDir, { recursive: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("scans packages from .bun directory", () => {
|
||||||
|
const pkgDir = path.join(
|
||||||
|
tempDir,
|
||||||
|
"lodash@4.17.21",
|
||||||
|
"node_modules",
|
||||||
|
"lodash",
|
||||||
|
);
|
||||||
|
fs.mkdirSync(pkgDir, { recursive: true });
|
||||||
|
fs.writeFileSync(path.join(pkgDir, "package.json"), "{}");
|
||||||
|
|
||||||
|
const packages = scanBunPackages(tempDir);
|
||||||
|
|
||||||
|
expect(packages).toHaveLength(1);
|
||||||
|
expect(packages[0].name).toBe("lodash");
|
||||||
|
expect(packages[0].version).toBe("4.17.21");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("scans scoped packages", () => {
|
||||||
|
const pkgDir = path.join(
|
||||||
|
tempDir,
|
||||||
|
"@babel+core@7.28.4",
|
||||||
|
"node_modules",
|
||||||
|
"@babel/core",
|
||||||
|
);
|
||||||
|
fs.mkdirSync(pkgDir, { recursive: true });
|
||||||
|
fs.writeFileSync(path.join(pkgDir, "package.json"), "{}");
|
||||||
|
|
||||||
|
const packages = scanBunPackages(tempDir);
|
||||||
|
|
||||||
|
expect(packages).toHaveLength(1);
|
||||||
|
expect(packages[0].name).toBe("@babel/core");
|
||||||
|
expect(packages[0].version).toBe("7.28.4");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips folders that don't match expected structure", () => {
|
||||||
|
fs.mkdirSync(path.join(tempDir, "invalid-folder"));
|
||||||
|
fs.mkdirSync(path.join(tempDir, "also-invalid@1.0.0"));
|
||||||
|
|
||||||
|
const packages = scanBunPackages(tempDir);
|
||||||
|
|
||||||
|
expect(packages).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("throws if directory doesn't exist", () => {
|
||||||
|
expect(() => scanBunPackages("/nonexistent")).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("generateDisclaimerText", () => {
|
||||||
|
const mockGetPackageDetails = (licenseText, repoUrl) => () => ({
|
||||||
|
licenseText,
|
||||||
|
repoUrl,
|
||||||
|
homepage: "https://example.com",
|
||||||
|
});
|
||||||
|
|
||||||
|
it("generates header", () => {
|
||||||
|
const result = generateDisclaimerText(
|
||||||
|
[],
|
||||||
|
mockGetPackageDetails("MIT", null),
|
||||||
|
);
|
||||||
|
expect(result).toMatch(
|
||||||
|
/^THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE/,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("generates entry for a single package", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "test-package", version: "1.0.0", path: "/path" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, () => ({
|
||||||
|
licenseText: "MIT License text here",
|
||||||
|
repoUrl: "https://github.com/test/test-package",
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain("-----");
|
||||||
|
expect(result).toContain(
|
||||||
|
"The following software may be included in this product: test-package.",
|
||||||
|
);
|
||||||
|
expect(result).toContain(
|
||||||
|
"A copy of the source code may be downloaded from https://github.com/test/test-package.",
|
||||||
|
);
|
||||||
|
expect(result).toContain("MIT License text here");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("groups packages with same repo and license", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "@scope/pkg-a", version: "1.0.0", path: "/path/a" },
|
||||||
|
{ name: "@scope/pkg-b", version: "1.0.0", path: "/path/b" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, () => ({
|
||||||
|
licenseText: "MIT License",
|
||||||
|
repoUrl: "https://github.com/scope/monorepo",
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain("@scope/pkg-a, @scope/pkg-b");
|
||||||
|
const licenseMatches = result.match(/MIT License/g);
|
||||||
|
expect(licenseMatches.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not group packages with different licenses", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "pkg-a", version: "1.0.0", path: "/path/a" },
|
||||||
|
{ name: "pkg-b", version: "1.0.0", path: "/path/b" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, (pkg) => ({
|
||||||
|
licenseText: pkg.name === "pkg-a" ? "MIT License" : "Apache License",
|
||||||
|
repoUrl: "https://github.com/test/repo",
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain(
|
||||||
|
"The following software may be included in this product: pkg-a.",
|
||||||
|
);
|
||||||
|
expect(result).toContain(
|
||||||
|
"The following software may be included in this product: pkg-b.",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("normalizes git URLs for grouping", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "pkg-a", version: "1.0.0", path: "/path/a" },
|
||||||
|
{ name: "pkg-b", version: "1.0.0", path: "/path/b" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, (pkg) => ({
|
||||||
|
licenseText: "MIT",
|
||||||
|
repoUrl:
|
||||||
|
pkg.name === "pkg-a"
|
||||||
|
? "git+https://github.com/test/repo.git"
|
||||||
|
: "https://github.com/test/repo",
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain("pkg-a, pkg-b");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles packages without repo URL", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "no-repo-package", version: "1.0.0", path: "/path" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, () => ({
|
||||||
|
licenseText: "Some License",
|
||||||
|
repoUrl: null,
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain(
|
||||||
|
"The following software may be included in this product: no-repo-package. This software contains the following license",
|
||||||
|
);
|
||||||
|
expect(result).not.toContain("A copy of the source code may be downloaded");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("uses fallback when no license text found", () => {
|
||||||
|
const packages = [{ name: "no-license", version: "1.0.0", path: "/path" }];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, () => ({
|
||||||
|
licenseText: null,
|
||||||
|
repoUrl: null,
|
||||||
|
homepage: "https://example.com",
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(result).toContain("License: See https://example.com package");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("sorts groups alphabetically", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "zebra", version: "1.0.0", path: "/z" },
|
||||||
|
{ name: "alpha", version: "1.0.0", path: "/a" },
|
||||||
|
{ name: "middle", version: "1.0.0", path: "/m" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, (pkg) => ({
|
||||||
|
licenseText: `License for ${pkg.name}`,
|
||||||
|
repoUrl: null,
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const alphaIndex = result.indexOf("alpha");
|
||||||
|
const middleIndex = result.indexOf("middle");
|
||||||
|
const zebraIndex = result.indexOf("zebra");
|
||||||
|
|
||||||
|
expect(alphaIndex).toBeLessThan(middleIndex);
|
||||||
|
expect(middleIndex).toBeLessThan(zebraIndex);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("dedupes multiple versions of same package", () => {
|
||||||
|
const packages = [
|
||||||
|
{ name: "lodash", version: "4.0.0", path: "/path/v1" },
|
||||||
|
{ name: "lodash", version: "4.1.0", path: "/path/v2" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const result = generateDisclaimerText(packages, () => ({
|
||||||
|
licenseText: "MIT",
|
||||||
|
repoUrl: "https://github.com/lodash/lodash",
|
||||||
|
homepage: null,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const matches = result.match(
|
||||||
|
/The following software may be included in this product: lodash\./g,
|
||||||
|
);
|
||||||
|
expect(matches.length).toBe(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("integration", () => {
|
||||||
|
let tempDir;
|
||||||
|
let tempOutputFile;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "license-test-"));
|
||||||
|
tempOutputFile = path.join(tempDir, "license-output.txt");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
if (fs.existsSync(tempDir)) {
|
||||||
|
fs.rmSync(tempDir, { recursive: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("runs successfully and generates valid output", () => {
|
||||||
|
const { execFileSync } = require("child_process");
|
||||||
|
const scriptPath = path.join(__dirname, "generate-license-disclaimer.js");
|
||||||
|
|
||||||
|
const result = execFileSync("node", [scriptPath, tempOutputFile], {
|
||||||
|
encoding: "utf-8",
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result).toMatch(/Found \d+ packages/);
|
||||||
|
|
||||||
|
const packageCount = parseInt(result.match(/Found (\d+) packages/)[1], 10);
|
||||||
|
expect(packageCount).toBeGreaterThan(1000); // ensure transitive deps are included
|
||||||
|
|
||||||
|
const content = fs.readFileSync(tempOutputFile, "utf-8");
|
||||||
|
expect(content).toMatch(/^THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES/);
|
||||||
|
expect(content).toContain("-----");
|
||||||
|
expect(content).toContain("This software contains the following license");
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -35,7 +35,7 @@ mkdir -p "locales"
|
|||||||
|
|
||||||
# NOTE: about twice as fast to call babel directly rather than a full webpack build
|
# NOTE: about twice as fast to call babel directly rather than a full webpack build
|
||||||
BABEL_ENV=extract ./node_modules/.bin/babel --quiet -x .js,.jsx,.ts,.tsx -o /dev/null {enterprise/,}frontend/src
|
BABEL_ENV=extract ./node_modules/.bin/babel --quiet -x .js,.jsx,.ts,.tsx -o /dev/null {enterprise/,}frontend/src
|
||||||
# BABEL_ENV=extract BABEL_DISABLE_CACHE=1 yarn run build
|
# BABEL_ENV=extract BABEL_DISABLE_CACHE=1 bun run build
|
||||||
|
|
||||||
# NOTE: replace ttag's "${ 0 }" style references with xgettext "{0}" style references for consistency
|
# NOTE: replace ttag's "${ 0 }" style references with xgettext "{0}" style references for consistency
|
||||||
sed -i".bak" -E 's/\$\{ *([0-9]+) *\}/{\1}/g' "$POT_FRONTEND_NAME"
|
sed -i".bak" -E 's/\$\{ *([0-9]+) *\}/{\1}/g' "$POT_FRONTEND_NAME"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ fi
|
|||||||
# Generate the current OpenAPI spec from Malli schemas using write-openapi-spec-to-file!
|
# Generate the current OpenAPI spec from Malli schemas using write-openapi-spec-to-file!
|
||||||
# This creates $OPENAPI_SPEC directly
|
# This creates $OPENAPI_SPEC directly
|
||||||
# Using the generate-openapi-spec command from metabase.cmd.core
|
# Using the generate-openapi-spec command from metabase.cmd.core
|
||||||
yarn generate-openapi
|
bun run generate-openapi
|
||||||
ret=$?
|
ret=$?
|
||||||
|
|
||||||
if [[ $ret -ne 0 ]]; then
|
if [[ $ret -ne 0 ]]; then
|
||||||
@@ -82,7 +82,7 @@ if ! git diff --exit-code "$OPENAPI_SPEC" >/dev/null 2>&1; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo "To fix this:"
|
echo "To fix this:"
|
||||||
echo " 1. Pull the latest changes from master: git pull origin master"
|
echo " 1. Pull the latest changes from master: git pull origin master"
|
||||||
echo " 2. Run 'yarn generate-openapi' to update $OPENAPI_SPEC"
|
echo " 2. Run 'bun run generate-openapi' to update $OPENAPI_SPEC"
|
||||||
echo " 3. Commit the updated openapi.json file"
|
echo " 3. Commit the updated openapi.json file"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Differences:"
|
echo "Differences:"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
1. Install Clojure CLI -- see [https://clojure.org/guides/getting_started]. Don't use `apt install clojure` as this
|
1. Install Clojure CLI -- see [https://clojure.org/guides/getting_started]. Don't use `apt install clojure` as this
|
||||||
installs a version that doesn't understand `deps.edn`.
|
installs a version that doesn't understand `deps.edn`.
|
||||||
|
|
||||||
1. Install `git`, `node`, `yarn`, `awscli`, `docker`, `java`, and `wget``
|
1. Install `git`, `node`, `bun`, `awscli`, `docker`, `java`, and `wget``
|
||||||
|
|
||||||
1. For installing Docker on macOS you should use [Docker Desktop](https://docs.docker.com/docker-for-mac/install/).
|
1. For installing Docker on macOS you should use [Docker Desktop](https://docs.docker.com/docker-for-mac/install/).
|
||||||
Make sure `docker ps` works from the terminal
|
Make sure `docker ps` works from the terminal
|
||||||
|
|||||||
@@ -37,28 +37,17 @@ get_node_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Yarn
|
# Bun
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
get_yarn_version() {
|
get_bun_version() {
|
||||||
if has_tool yarn; then
|
if has_tool bun; then
|
||||||
yarn --version
|
bun --version
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_yarn_classic() {
|
|
||||||
local version=$1
|
|
||||||
if [ -n "$version" ]; then
|
|
||||||
local major_version=$(echo "$version" | cut -d. -f1)
|
|
||||||
if [ "$major_version" = "1" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Java
|
# Java
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|||||||
8
bunfig.toml
Normal file
8
bunfig.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[install]
|
||||||
|
linker = "isolated"
|
||||||
|
|
||||||
|
timeout = 600000
|
||||||
|
|
||||||
|
# Only install package versions published at least 3 days ago
|
||||||
|
minimumReleaseAge = 259200
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ version: '3.1'
|
|||||||
# ;; when you connect to data warehouses, you'll use docker networking to
|
# ;; when you connect to data warehouses, you'll use docker networking to
|
||||||
# ;; connect (e.g. metabasedb_postgres_14_data:5432 vs. localhost:15432).
|
# ;; connect (e.g. metabasedb_postgres_14_data:5432 vs. localhost:15432).
|
||||||
# COMPOSE_PROFILES=postgresappdb,postgres14data,mysql57data,dev-app docker-compose --file dev/docker-compose.yml up
|
# COMPOSE_PROFILES=postgresappdb,postgres14data,mysql57data,dev-app docker-compose --file dev/docker-compose.yml up
|
||||||
# ;; All of the above, and builds the frontend, too. No need for `yarn build-hot` locally.
|
# ;; All of the above, and builds the frontend, too. No need for `bun run build-hot` locally.
|
||||||
# ;; NOTE: See comment below on fe-builder service. This isn't quite ready yet.
|
# ;; NOTE: See comment below on fe-builder service. This isn't quite ready yet.
|
||||||
# COMPOSE_PROFILES=postgresappdb,postgres14data,mysql57data,fe-builder,dev-app docker-compose --file dev/docker-compose.yml up
|
# COMPOSE_PROFILES=postgresappdb,postgres14data,mysql57data,fe-builder,dev-app docker-compose --file dev/docker-compose.yml up
|
||||||
#
|
#
|
||||||
@@ -80,13 +80,14 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ../:/dev/metabase
|
- ../:/dev/metabase
|
||||||
- ~/.npm:/root/.npm
|
- ~/.npm:/root/.npm
|
||||||
- ~/Library/Caches/Yarn/v6:/usr/local/share/.cache/yarn/v6
|
- ~/.bun/install/cache:/root/.bun/install/cache
|
||||||
command:
|
command:
|
||||||
- /bin/sh
|
- /bin/sh
|
||||||
- -c
|
- -c
|
||||||
- |
|
- |
|
||||||
yarn install
|
npm install -g bun
|
||||||
yarn build-hot
|
bun install
|
||||||
|
bun run build-hot
|
||||||
profiles:
|
profiles:
|
||||||
- fe-builder
|
- fe-builder
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ In this namespace, you can run `(help)` to get a bit of help. It's principle usa
|
|||||||
|
|
||||||
### NOTE!
|
### NOTE!
|
||||||
|
|
||||||
You must build the js bundle used to create the svgs with visx. Run `yarn build-static-viz` to ensure that this bundle is created and the file `resources/frontend_client/app/dist/lib-static-viz.bundle.js` exists
|
You must build the js bundle used to create the svgs with visx. Run `bun run build-static-viz` to ensure that this bundle is created and the file `resources/frontend_client/app/dist/lib-static-viz.bundle.js` exists
|
||||||
|
|
||||||
Example usage below:
|
Example usage below:
|
||||||
|
|
||||||
|
|||||||
@@ -22,16 +22,16 @@ To complete any build of the Metabase code, you'll need to install the following
|
|||||||
|
|
||||||
3. [Node.js (https://nodejs.org/)](https://nodejs.org/) - latest LTS release
|
3. [Node.js (https://nodejs.org/)](https://nodejs.org/) - latest LTS release
|
||||||
|
|
||||||
4. [Yarn package manager for Node.js](https://yarnpkg.com/) - latest release of version 1.x - you can install it in any OS by running:
|
4. [Bun package manager](https://bun.sh/) - you can install it by running:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm install --global yarn
|
curl -fsSL https://bun.sh/install | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
On a most recent stable Ubuntu/Debian, all the tools above, with the exception of Clojure, can be installed by using:
|
On a most recent stable Ubuntu/Debian, all the tools above, with the exception of Clojure and Bun, can be installed by using:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install openjdk-21-jdk nodejs && sudo npm install --global yarn
|
sudo apt install openjdk-21-jdk nodejs
|
||||||
```
|
```
|
||||||
|
|
||||||
If you have multiple JDK versions installed in your machine, be sure to switch your JDK before building with:
|
If you have multiple JDK versions installed in your machine, be sure to switch your JDK before building with:
|
||||||
@@ -138,7 +138,7 @@ When it’s done, you should see a message that says something like “Metabase
|
|||||||
10. Open up another tab or window of your terminal app, and then “build” the frontend (all the UI) with this command:
|
10. Open up another tab or window of your terminal app, and then “build” the frontend (all the UI) with this command:
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn build-hot
|
bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're having trouble with this step, make sure you are using the LTS version of [Node.js (https://nodejs.org/)](https://nodejs.org/).
|
If you're having trouble with this step, make sure you are using the LTS version of [Node.js (https://nodejs.org/)](https://nodejs.org/).
|
||||||
|
|||||||
@@ -19,14 +19,14 @@ Both components are built and assembled together into a single JAR file. In the
|
|||||||
./bin/dev-install
|
./bin/dev-install
|
||||||
```
|
```
|
||||||
|
|
||||||
This installs [mise](https://mise.jdx.dev) (a tool version manager), sets up your shell, and installs all required tools (Node.js, Java, Clojure, Yarn, Babashka) at the correct versions. Follow the prompts, then open a new terminal.
|
This installs [mise](https://mise.jdx.dev) (a tool version manager), sets up your shell, and installs all required tools (Node.js, Java, Clojure, Bun, Babashka) at the correct versions. Follow the prompts, then open a new terminal.
|
||||||
|
|
||||||
**Already have your own setup?** You can check that it meets the requirements with `./bin/mage doctor`.
|
**Already have your own setup?** You can check that it meets the requirements with `./bin/mage doctor`.
|
||||||
|
|
||||||
To spin up a development environment, run:
|
To spin up a development environment, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn dev
|
bun run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
This runs both the [frontend](#frontend) and [backend](#backend). Alternatively, you can run them separately in two terminal sessions below.
|
This runs both the [frontend](#frontend) and [backend](#backend). Alternatively, you can run them separately in two terminal sessions below.
|
||||||
@@ -41,13 +41,13 @@ Metabase depends on third-party libraries to run, so you'll need to keep those u
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
# javascript dependencies
|
# javascript dependencies
|
||||||
$ yarn
|
$ bun install
|
||||||
```
|
```
|
||||||
|
|
||||||
Start the frontend build process with
|
Start the frontend build process with
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn build-hot
|
bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
See [Frontend development](#frontend-development).
|
See [Frontend development](#frontend-development).
|
||||||
@@ -121,18 +121,18 @@ We use these technologies for our FE build process to allow us to use modules, e
|
|||||||
- babel
|
- babel
|
||||||
- cssnext
|
- cssnext
|
||||||
|
|
||||||
Frontend tasks are executed using `yarn`. All available tasks can be found in `package.json` under _scripts_.
|
Frontend tasks are executed using `bun`. All available tasks can be found in `package.json` under _scripts_.
|
||||||
|
|
||||||
To build the frontend client without watching for changes, you can use:
|
To build the frontend client without watching for changes, you can use:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ yarn build
|
$ bun run build
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're working on the frontend directly, you'll most likely want to reload changes on save, and in the case of React components, do so while maintaining state. To start a build with hot reloading, use:
|
If you're working on the frontend directly, you'll most likely want to reload changes on save, and in the case of React components, do so while maintaining state. To start a build with hot reloading, use:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ yarn build-hot
|
$ bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that at this time if you change CSS variables, those changes will only be picked up when a build is restarted.
|
Note that at this time if you change CSS variables, those changes will only be picked up when a build is restarted.
|
||||||
@@ -140,7 +140,7 @@ Note that at this time if you change CSS variables, those changes will only be p
|
|||||||
There is also an option to reload changes on save without hot reloading if you prefer that.
|
There is also an option to reload changes on save without hot reloading if you prefer that.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ yarn build-watch
|
$ bun run build-watch
|
||||||
```
|
```
|
||||||
|
|
||||||
Some systems may have trouble detecting changes to frontend files. You can enable filesystem polling by uncommenting the `watchOptions` clause in `rspack.main.config.js`. If you do this it may be worth making git ignore changes to webpack config, using `git update-index --assume-unchanged rspack.main.config.js`
|
Some systems may have trouble detecting changes to frontend files. You can enable filesystem polling by uncommenting the `watchOptions` clause in `rspack.main.config.js`. If you do this it may be worth making git ignore changes to webpack config, using `git update-index --assume-unchanged rspack.main.config.js`
|
||||||
@@ -148,7 +148,7 @@ Some systems may have trouble detecting changes to frontend files. You can enabl
|
|||||||
We exclude ESLint loader in dev mode for seven times quicker initial builds by default. You can enable it by exporting an environment variable:
|
We exclude ESLint loader in dev mode for seven times quicker initial builds by default. You can enable it by exporting an environment variable:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ USE_ESLINT=true yarn build-hot
|
$ USE_ESLINT=true bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
### Frontend testing
|
### Frontend testing
|
||||||
@@ -156,7 +156,7 @@ $ USE_ESLINT=true yarn build-hot
|
|||||||
Run all unit and Cypress end-to-end tests with
|
Run all unit and Cypress end-to-end tests with
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn test
|
bun run test
|
||||||
```
|
```
|
||||||
|
|
||||||
Cypress tests and some unit tests are located in `frontend/test` directory. New unit test files are added next to the files they test.
|
Cypress tests and some unit tests are located in `frontend/test` directory. New unit test files are added next to the files they test.
|
||||||
@@ -170,7 +170,7 @@ If you run into issues with breakpoints, especially inside jsx, please set env v
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
BETTER_SOURCE_MAPS=true yarn dev
|
BETTER_SOURCE_MAPS=true bun run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
### Cypress end-to-end tests
|
### Cypress end-to-end tests
|
||||||
@@ -186,8 +186,8 @@ Unit tests are focused around isolated parts of business logic.
|
|||||||
Unit tests use an enforced file naming convention `<test-suite-name>.unit.spec.js` to separate them from end-to-end tests.
|
Unit tests use an enforced file naming convention `<test-suite-name>.unit.spec.js` to separate them from end-to-end tests.
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn test-unit # Run all tests at once
|
bun run test-unit # Run all tests at once
|
||||||
yarn test-unit-watch # Watch for file changes
|
bun run test-unit-watch # Watch for file changes
|
||||||
```
|
```
|
||||||
|
|
||||||
## Backend development
|
## Backend development
|
||||||
@@ -207,7 +207,7 @@ You can also start a REPL another way (e.g., through your editor) and then call:
|
|||||||
```
|
```
|
||||||
|
|
||||||
To start the server (at `localhost:3000`). This will also set up or migrate your application database. To actually
|
To start the server (at `localhost:3000`). This will also set up or migrate your application database. To actually
|
||||||
use Metabase, don't forget to start the frontend as well (e.g. with `yarn build-hot`).
|
use Metabase, don't forget to start the frontend as well (e.g. with `bun run build-hot`).
|
||||||
|
|
||||||
### Multiple Instances
|
### Multiple Instances
|
||||||
|
|
||||||
@@ -215,8 +215,8 @@ By default Rspack runs the development server on port `8088`. You can run multip
|
|||||||
|
|
||||||
Frontend:
|
Frontend:
|
||||||
|
|
||||||
- If you are running the frontend with `yarn build-hot`, set the `MB_FRONTEND_DEV_PORT` environment variable: `MB_FRONTEND_DEV_PORT=8089 MB_EDITION=ee yarn build-hot`
|
- If you are running the frontend with `bun run build-hot`, set the `MB_FRONTEND_DEV_PORT` environment variable: `MB_FRONTEND_DEV_PORT=8089 MB_EDITION=ee bun run build-hot`
|
||||||
- If you are building the frontend statically with `yarn build`, there is nothing different to do
|
- If you are building the frontend statically with `bun run build`, there is nothing different to do
|
||||||
|
|
||||||
Backend:
|
Backend:
|
||||||
|
|
||||||
@@ -464,12 +464,12 @@ clojure -X:dev:ee:ee-dev:drivers:drivers-dev:test:namespace-checker
|
|||||||
All frontend and backend linters and tests can be executed with
|
All frontend and backend linters and tests can be executed with
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ yarn ci
|
$ bun run ci
|
||||||
```
|
```
|
||||||
|
|
||||||
It is also possible to execute front-end and back-end checks separately
|
It is also possible to execute front-end and back-end checks separately
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ yarn ci-frontend
|
$ bun run ci-frontend
|
||||||
$ yarn ci-backend
|
$ bun run ci-backend
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -11,19 +11,19 @@ Notes on writing docs for Metabase.
|
|||||||
You can check for broken links in the [docs](../) directory by running:
|
You can check for broken links in the [docs](../) directory by running:
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn run docs-lint-links
|
bun run docs-lint-links
|
||||||
```
|
```
|
||||||
|
|
||||||
This command uses [Markdown link check](https://github.com/tcort/markdown-link-check) to vet links in all of the markdown files in the [docs](../) directory. We recommend writing the command's output to a file. E.links.,
|
This command uses [Markdown link check](https://github.com/tcort/markdown-link-check) to vet links in all of the markdown files in the [docs](../) directory. We recommend writing the command's output to a file. E.links.,
|
||||||
|
|
||||||
```
|
```
|
||||||
touch ~/links-to-fix.txt && yarn run docs-lint-links > ~/links-to-fix.txt
|
touch ~/links-to-fix.txt && bun run docs-lint-links > ~/links-to-fix.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, if you just want to check the in-product links to make sure they link to actual documents:
|
Alternatively, if you just want to check the in-product links to make sure they link to actual documents:
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn run lint-docs-links
|
bun run lint-docs-links
|
||||||
```
|
```
|
||||||
|
|
||||||
You can view both commands in the [package.json](https://github.com/metabase/metabase/blob/master/package.json) file under `scripts`.
|
You can view both commands in the [package.json](https://github.com/metabase/metabase/blob/master/package.json) file under `scripts`.
|
||||||
|
|||||||
@@ -18,25 +18,25 @@ Our custom Cypress runner builds its own backend and creates a temporary H2 app
|
|||||||
|
|
||||||
1. Continuously build the frontend
|
1. Continuously build the frontend
|
||||||
|
|
||||||
a. If you need only the frontend, run `yarn build-hot`
|
a. If you need only the frontend, run `bun run build-hot`
|
||||||
|
|
||||||
b. If you want to run a local Metabase instance alongside Cypress, the easiest way to achieve this is by using `yarn dev` or `yarn dev-ee` (both rely on frontend hot reloading under the hood)
|
b. If you want to run a local Metabase instance alongside Cypress, the easiest way to achieve this is by using `bun run dev` or `bun run dev-ee` (both rely on frontend hot reloading under the hood)
|
||||||
|
|
||||||
2. In a separate terminal session (without killing the previous one) run `yarn test-cypress`. This will open a Cypress GUI that will let you choose which tests to run. Alternatively, take a look at `run_cypress_local.js` and `e2e/test/scenarios/docker-compose.yml` for all possible options.
|
2. In a separate terminal session (without killing the previous one) run `bun run test-cypress`. This will open a Cypress GUI that will let you choose which tests to run. Alternatively, take a look at `run_cypress_local.js` and `e2e/test/scenarios/docker-compose.yml` for all possible options.
|
||||||
|
|
||||||
### Running Options
|
### Running Options
|
||||||
|
|
||||||
To run all Cypress tests headlessly in the terminal:
|
To run all Cypress tests headlessly in the terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
CYPRESS_GUI=false yarn run test-cypress
|
CYPRESS_GUI=false bun run test-cypress
|
||||||
```
|
```
|
||||||
|
|
||||||
You can quickly test a single file only by using the official `--spec` flag.
|
You can quickly test a single file only by using the official `--spec` flag.
|
||||||
This flag can be used to run all specs within a folder, or to run multiple assorted specs. Consult [the official documentation](https://docs.cypress.io/app/references/command-line#cypress-run-spec-lt-spec-gt) for instructions.
|
This flag can be used to run all specs within a folder, or to run multiple assorted specs. Consult [the official documentation](https://docs.cypress.io/app/references/command-line#cypress-run-spec-lt-spec-gt) for instructions.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
CYPRESS_GUI=false yarn test-cypress --spec e2e/test/scenarios/question/new.cy.spec.js
|
CYPRESS_GUI=false bun run test-cypress --spec e2e/test/scenarios/question/new.cy.spec.js
|
||||||
```
|
```
|
||||||
|
|
||||||
You can specify a browser to execute Cypress tests in using the `--browser` flag. For more details, please consult [the official documentation](https://docs.cypress.io/guides/guides/launching-browsers).
|
You can specify a browser to execute Cypress tests in using the `--browser` flag. For more details, please consult [the official documentation](https://docs.cypress.io/guides/guides/launching-browsers).
|
||||||
@@ -112,7 +112,7 @@ it("bar", { viewportWidth: 1600, viewportHeight: 1200 }, () => {});
|
|||||||
|
|
||||||
### Code reloading vs test reloading
|
### Code reloading vs test reloading
|
||||||
|
|
||||||
When you edit a Cypress test file, the tests will refresh and run again. However, when you edit a code file, Cypress won’t detect that change. If you’re running `yarn build-hot`, the code will rebuild and update within Cypress. You’ll have to manually click rerun after the new code has loaded.
|
When you edit a Cypress test file, the tests will refresh and run again. However, when you edit a code file, Cypress won’t detect that change. If you’re running `bun run build-hot`, the code will rebuild and update within Cypress. You’ll have to manually click rerun after the new code has loaded.
|
||||||
|
|
||||||
### Inspecting while the “contains helper” is open
|
### Inspecting while the “contains helper” is open
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ One great feature of Cypress is that you can use the Chrome inspector after each
|
|||||||
|
|
||||||
### Putting the wrong HTML template in the Uberjar
|
### Putting the wrong HTML template in the Uberjar
|
||||||
|
|
||||||
`yarn build` and `yarn build-hot` each overwrite an HTML template to reference the correct JavaScript files. If you run `yarn build` before building an Uberjar for Cypress tests, you won’t see changes to your JavaScript reflected even if you then start `yarn build-hot`.
|
`bun run build` and `bun run build-hot` each overwrite an HTML template to reference the correct JavaScript files. If you run `bun run build` before building an Uberjar for Cypress tests, you won’t see changes to your JavaScript reflected even if you then start `bun run build-hot`.
|
||||||
|
|
||||||
### Running Cypress on Apple Silicon
|
### Running Cypress on Apple Silicon
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ If you navigate to the `/admin/settings/license` page, the license input field s
|
|||||||
|
|
||||||
## Tags
|
## Tags
|
||||||
|
|
||||||
Cypress allows us to [tag](https://github.com/cypress-io/cypress/tree/develop/npm/grep#tags-in-the-test-config-object) tests, to easily find certain categories of tags. For example, we can tag all tests that require an external database with `@external` and then run only those tests with `yarn test-cypress --env grepTags="@external"`. Tags should start with `@` just to make it easier to distinguish them from other strings in searches.
|
Cypress allows us to [tag](https://github.com/cypress-io/cypress/tree/develop/npm/grep#tags-in-the-test-config-object) tests, to easily find certain categories of tags. For example, we can tag all tests that require an external database with `@external` and then run only those tests with `bun run test-cypress --env grepTags="@external"`. Tags should start with `@` just to make it easier to distinguish them from other strings in searches.
|
||||||
|
|
||||||
These are the tags currently in use:
|
These are the tags currently in use:
|
||||||
|
|
||||||
@@ -281,4 +281,4 @@ Individual Mocha reports are automatically generated per spec. They are stored i
|
|||||||
|
|
||||||
When tests run _in CI_ we do some extra steps by merging these individual reports (using `mochawesome-merge`), formatting them, and then generating customized GitHub Actions job summaries.
|
When tests run _in CI_ we do some extra steps by merging these individual reports (using `mochawesome-merge`), formatting them, and then generating customized GitHub Actions job summaries.
|
||||||
|
|
||||||
On an off chance that you need a unified test report _while running tests locally_, you can achieve that by invoking `yarn generate-cypress-html-report`.
|
On an off chance that you need a unified test report _while running tests locally_, you can achieve that by invoking `bun run generate-cypress-html-report`.
|
||||||
|
|||||||
@@ -180,9 +180,9 @@ The first rule of frontend style, is we want to avoid talking about frontend sty
|
|||||||
|
|
||||||
### Prettier + Eslint
|
### Prettier + Eslint
|
||||||
|
|
||||||
We use [Prettier](https://prettier.io/) to format our JavaScript code, and it is enforced by CI. We recommend setting your editor to "format on save". You can also format code using `yarn prettier`, and verify it has been formatted correctly using `yarn lint-prettier`.
|
We use [Prettier](https://prettier.io/) to format our JavaScript code, and it is enforced by CI. We recommend setting your editor to "format on save". You can also format code using `bun run prettier`, and verify it has been formatted correctly using `bun run lint-prettier`.
|
||||||
|
|
||||||
We use ESLint to enforce additional rules. It is integrated into the Webpack build, or you can manually run `yarn lint-eslint` to check. Nitpicky things like import order, spacing, etc. are all enforced by eslint.
|
We use ESLint to enforce additional rules. It is integrated into the Webpack build, or you can manually run `bun run lint-eslint` to check. Nitpicky things like import order, spacing, etc. are all enforced by eslint.
|
||||||
|
|
||||||
### Miscellaneous notes on coding style
|
### Miscellaneous notes on coding style
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ Before running Loki tests locally, ensure that both Storybook and Docker are run
|
|||||||
|
|
||||||
### Commands
|
### Commands
|
||||||
|
|
||||||
- Run Visual Tests: `yarn test-visual:loki` (Note: do not commit screenshots from this, use the CI variant below, they will be more consistent)
|
- Run Visual Tests: `bun run test-visual:loki` (Note: do not commit screenshots from this, use the CI variant below, they will be more consistent)
|
||||||
- Run Visual Tests in CI: `yarn test-visual:loki:ci`
|
- Run Visual Tests in CI: `bun run test-visual:loki:ci`
|
||||||
- Update failing snapshots: `yarn test-visual:loki-approve-diff`
|
- Update failing snapshots: `bun run test-visual:loki-approve-diff`
|
||||||
- Generate an HTML Report: `yarn test-visual:loki-report`
|
- Generate an HTML Report: `bun run test-visual:loki-report`
|
||||||
- Generate and Open Report: `yarn test-visual:loki-report-open`
|
- Generate and Open Report: `bun run test-visual:loki-report-open`
|
||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ Scripts for generating docs.
|
|||||||
From this directory, run:
|
From this directory, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yarn install
|
bun install
|
||||||
```
|
```
|
||||||
|
|
||||||
Then:
|
Then:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yarn generate-shortcuts
|
bun run generate-shortcuts
|
||||||
```
|
```
|
||||||
Docs will be written to:
|
Docs will be written to:
|
||||||
|
|
||||||
|
|||||||
@@ -13,24 +13,21 @@
|
|||||||
"react-dom": "^18"
|
"react-dom": "^18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18"
|
"@types/react-dom": "^18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@emnapi/runtime": {
|
"node_modules/@img/colour": {
|
||||||
"version": "1.5.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz",
|
|
||||||
"integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"engines": {
|
||||||
"tslib": "^2.4.0"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-darwin-arm64": {
|
"node_modules/@img/sharp-darwin-arm64": {
|
||||||
"version": "0.34.3",
|
"version": "0.34.5",
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==",
|
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -46,35 +43,11 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@img/sharp-libvips-darwin-arm64": "1.2.0"
|
"@img/sharp-libvips-darwin-arm64": "1.2.4"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-darwin-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-darwin-x64": "1.2.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==",
|
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -87,364 +60,6 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-libvips-darwin-x64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-arm": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-arm64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-ppc64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==",
|
|
||||||
"cpu": [
|
|
||||||
"ppc64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-s390x": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==",
|
|
||||||
"cpu": [
|
|
||||||
"s390x"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-x64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-arm": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-arm": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-arm64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-ppc64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==",
|
|
||||||
"cpu": [
|
|
||||||
"ppc64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-ppc64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-s390x": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==",
|
|
||||||
"cpu": [
|
|
||||||
"s390x"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-s390x": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-x64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linuxmusl-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linuxmusl-arm64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linuxmusl-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linuxmusl-x64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-wasm32": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==",
|
|
||||||
"cpu": [
|
|
||||||
"wasm32"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@emnapi/runtime": "^1.4.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-ia32": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==",
|
|
||||||
"cpu": [
|
|
||||||
"ia32"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "15.5.9",
|
"version": "15.5.9",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.9.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.9.tgz",
|
||||||
@@ -581,45 +196,45 @@
|
|||||||
},
|
},
|
||||||
"node_modules/@swc/helpers": {
|
"node_modules/@swc/helpers": {
|
||||||
"version": "0.5.15",
|
"version": "0.5.15",
|
||||||
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
|
|
||||||
"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.8.0"
|
"tslib": "^2.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "20.19.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.29.tgz",
|
||||||
|
"integrity": "sha512-YrT9ArrGaHForBaCNwFjoqJWmn8G1Pr7+BH/vwyLHciA9qT/wSiuOhxGCT50JA5xLvFBd6PIiGkE3afxcPE1nw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.13",
|
"version": "15.7.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
|
|
||||||
"integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.3.12",
|
"version": "18.3.27",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
|
|
||||||
"integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
"csstype": "^3.0.2"
|
"csstype": "^3.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/react-dom": {
|
"node_modules/@types/react-dom": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "*"
|
"@types/react": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001680",
|
"version": "1.0.30001760",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
|
|
||||||
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -638,89 +253,27 @@
|
|||||||
},
|
},
|
||||||
"node_modules/client-only": {
|
"node_modules/client-only": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
|
||||||
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
|
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/color": {
|
|
||||||
"version": "4.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
|
|
||||||
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-convert": "^2.0.1",
|
|
||||||
"color-string": "^1.9.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-convert": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-name": "~1.1.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=7.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-name": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"node_modules/color-string": {
|
|
||||||
"version": "1.9.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
|
|
||||||
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-name": "^1.0.0",
|
|
||||||
"simple-swizzle": "^0.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/csstype": {
|
"node_modules/csstype": {
|
||||||
"version": "3.1.3",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/detect-libc": {
|
"node_modules/detect-libc": {
|
||||||
"version": "2.0.4",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
|
|
||||||
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-arrayish": {
|
|
||||||
"version": "0.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
|
|
||||||
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"node_modules/js-tokens": {
|
"node_modules/js-tokens": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/loose-envify": {
|
"node_modules/loose-envify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
@@ -731,8 +284,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.11",
|
"version": "3.3.11",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
|
||||||
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -799,10 +350,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/next/node_modules/postcss": {
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
|
||||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -827,16 +380,8 @@
|
|||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/picocolors": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/react": {
|
"node_modules/react": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0"
|
"loose-envify": "^1.1.0"
|
||||||
@@ -847,8 +392,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/react-dom": {
|
"node_modules/react-dom": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0",
|
"loose-envify": "^1.1.0",
|
||||||
@@ -860,17 +403,13 @@
|
|||||||
},
|
},
|
||||||
"node_modules/scheduler": {
|
"node_modules/scheduler": {
|
||||||
"version": "0.23.2",
|
"version": "0.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
|
|
||||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0"
|
"loose-envify": "^1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.7.2",
|
"version": "7.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
|
||||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -881,16 +420,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sharp": {
|
"node_modules/sharp": {
|
||||||
"version": "0.34.3",
|
"version": "0.34.5",
|
||||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==",
|
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color": "^4.2.3",
|
"@img/colour": "^1.0.0",
|
||||||
"detect-libc": "^2.0.4",
|
"detect-libc": "^2.1.2",
|
||||||
"semver": "^7.7.2"
|
"semver": "^7.7.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
@@ -899,44 +436,34 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@img/sharp-darwin-arm64": "0.34.3",
|
"@img/sharp-darwin-arm64": "0.34.5",
|
||||||
"@img/sharp-darwin-x64": "0.34.3",
|
"@img/sharp-darwin-x64": "0.34.5",
|
||||||
"@img/sharp-libvips-darwin-arm64": "1.2.0",
|
"@img/sharp-libvips-darwin-arm64": "1.2.4",
|
||||||
"@img/sharp-libvips-darwin-x64": "1.2.0",
|
"@img/sharp-libvips-darwin-x64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-arm": "1.2.0",
|
"@img/sharp-libvips-linux-arm": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-arm64": "1.2.0",
|
"@img/sharp-libvips-linux-arm64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-ppc64": "1.2.0",
|
"@img/sharp-libvips-linux-ppc64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-s390x": "1.2.0",
|
"@img/sharp-libvips-linux-riscv64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-x64": "1.2.0",
|
"@img/sharp-libvips-linux-s390x": "1.2.4",
|
||||||
"@img/sharp-libvips-linuxmusl-arm64": "1.2.0",
|
"@img/sharp-libvips-linux-x64": "1.2.4",
|
||||||
"@img/sharp-libvips-linuxmusl-x64": "1.2.0",
|
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
|
||||||
"@img/sharp-linux-arm": "0.34.3",
|
"@img/sharp-libvips-linuxmusl-x64": "1.2.4",
|
||||||
"@img/sharp-linux-arm64": "0.34.3",
|
"@img/sharp-linux-arm": "0.34.5",
|
||||||
"@img/sharp-linux-ppc64": "0.34.3",
|
"@img/sharp-linux-arm64": "0.34.5",
|
||||||
"@img/sharp-linux-s390x": "0.34.3",
|
"@img/sharp-linux-ppc64": "0.34.5",
|
||||||
"@img/sharp-linux-x64": "0.34.3",
|
"@img/sharp-linux-riscv64": "0.34.5",
|
||||||
"@img/sharp-linuxmusl-arm64": "0.34.3",
|
"@img/sharp-linux-s390x": "0.34.5",
|
||||||
"@img/sharp-linuxmusl-x64": "0.34.3",
|
"@img/sharp-linux-x64": "0.34.5",
|
||||||
"@img/sharp-wasm32": "0.34.3",
|
"@img/sharp-linuxmusl-arm64": "0.34.5",
|
||||||
"@img/sharp-win32-arm64": "0.34.3",
|
"@img/sharp-linuxmusl-x64": "0.34.5",
|
||||||
"@img/sharp-win32-ia32": "0.34.3",
|
"@img/sharp-wasm32": "0.34.5",
|
||||||
"@img/sharp-win32-x64": "0.34.3"
|
"@img/sharp-win32-arm64": "0.34.5",
|
||||||
}
|
"@img/sharp-win32-ia32": "0.34.5",
|
||||||
},
|
"@img/sharp-win32-x64": "0.34.5"
|
||||||
"node_modules/simple-swizzle": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"is-arrayish": "^0.3.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/source-map-js": {
|
"node_modules/source-map-js": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -944,8 +471,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/styled-jsx": {
|
"node_modules/styled-jsx": {
|
||||||
"version": "5.1.6",
|
"version": "5.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
|
|
||||||
"integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"client-only": "0.0.1"
|
"client-only": "0.0.1"
|
||||||
@@ -967,9 +492,14 @@
|
|||||||
},
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.8.1",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
|
||||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
|
||||||
"license": "0BSD"
|
"license": "0BSD"
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.21.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"react-dom": "^18"
|
"react-dom": "^18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18"
|
"@types/react-dom": "^18"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
"lib": [
|
"lib": [
|
||||||
"dom",
|
"dom",
|
||||||
"dom.iterable",
|
"dom.iterable",
|
||||||
@@ -24,6 +25,9 @@
|
|||||||
"paths": {
|
"paths": {
|
||||||
"@/*": [
|
"@/*": [
|
||||||
"./src/*"
|
"./src/*"
|
||||||
|
],
|
||||||
|
"@metabase/embedding-sdk-react": [
|
||||||
|
"./node_modules/@metabase/embedding-sdk-react"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"target": "ES2017"
|
"target": "ES2017"
|
||||||
|
|||||||
@@ -8,29 +8,27 @@
|
|||||||
"name": "next-15-pages-router-host-app",
|
"name": "next-15-pages-router-host-app",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@metabase/embedding-sdk-react": "^0.58.0",
|
||||||
"next": "15.5.9",
|
"next": "15.5.9",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"react-dom": "^18"
|
"react-dom": "^18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18"
|
"@types/react-dom": "^18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@emnapi/runtime": {
|
"node_modules/@img/colour": {
|
||||||
"version": "1.5.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz",
|
|
||||||
"integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"engines": {
|
||||||
"tslib": "^2.4.0"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-darwin-arm64": {
|
"node_modules/@img/sharp-darwin-arm64": {
|
||||||
"version": "0.34.3",
|
"version": "0.34.5",
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==",
|
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -46,35 +44,11 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@img/sharp-libvips-darwin-arm64": "1.2.0"
|
"@img/sharp-libvips-darwin-arm64": "1.2.4"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-darwin-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-darwin-x64": "1.2.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==",
|
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -87,362 +61,17 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@img/sharp-libvips-darwin-x64": {
|
"node_modules/@metabase/embedding-sdk-react": {
|
||||||
"version": "1.2.0",
|
"version": "0.58.0",
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@metabase/embedding-sdk-react/-/embedding-sdk-react-0.58.0.tgz",
|
||||||
"integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==",
|
"integrity": "sha512-JqXsx7OLa4u0gV/k2fOSEK9CgfFkAs1BbmYx1utVqQ0a1OUpq1T27OPuatdJa2pxB8Tz8jM4juGWPsoyQCezJA==",
|
||||||
"cpu": [
|
"license": "SEE LICENSE IN LICENSE.txt",
|
||||||
"x64"
|
"bin": {
|
||||||
],
|
"embedding-sdk-react": "dist/cli.js"
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-arm": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-arm64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-ppc64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==",
|
|
||||||
"cpu": [
|
|
||||||
"ppc64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-s390x": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==",
|
|
||||||
"cpu": [
|
|
||||||
"s390x"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linux-x64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-arm": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
},
|
||||||
"funding": {
|
"peerDependencies": {
|
||||||
"url": "https://opencollective.com/libvips"
|
"react": ">=18 <=19",
|
||||||
},
|
"react-dom": ">=18 <=19"
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-arm": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-arm64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-ppc64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==",
|
|
||||||
"cpu": [
|
|
||||||
"ppc64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-ppc64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-s390x": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==",
|
|
||||||
"cpu": [
|
|
||||||
"s390x"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-s390x": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linux-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linux-x64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linuxmusl-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linuxmusl-arm64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-linuxmusl-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"@img/sharp-libvips-linuxmusl-x64": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-wasm32": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==",
|
|
||||||
"cpu": [
|
|
||||||
"wasm32"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@emnapi/runtime": "^1.4.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-arm64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-ia32": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==",
|
|
||||||
"cpu": [
|
|
||||||
"ia32"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@img/sharp-win32-x64": {
|
|
||||||
"version": "0.34.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"license": "Apache-2.0 AND LGPL-3.0-or-later",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://opencollective.com/libvips"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
@@ -581,45 +210,45 @@
|
|||||||
},
|
},
|
||||||
"node_modules/@swc/helpers": {
|
"node_modules/@swc/helpers": {
|
||||||
"version": "0.5.15",
|
"version": "0.5.15",
|
||||||
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
|
|
||||||
"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.8.0"
|
"tslib": "^2.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "20.19.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.29.tgz",
|
||||||
|
"integrity": "sha512-YrT9ArrGaHForBaCNwFjoqJWmn8G1Pr7+BH/vwyLHciA9qT/wSiuOhxGCT50JA5xLvFBd6PIiGkE3afxcPE1nw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.13",
|
"version": "15.7.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
|
|
||||||
"integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.3.12",
|
"version": "18.3.27",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
|
|
||||||
"integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
"csstype": "^3.0.2"
|
"csstype": "^3.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/react-dom": {
|
"node_modules/@types/react-dom": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "*"
|
"@types/react": "^18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001680",
|
"version": "1.0.30001760",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
|
|
||||||
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -638,89 +267,27 @@
|
|||||||
},
|
},
|
||||||
"node_modules/client-only": {
|
"node_modules/client-only": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
|
||||||
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
|
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/color": {
|
|
||||||
"version": "4.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
|
|
||||||
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-convert": "^2.0.1",
|
|
||||||
"color-string": "^1.9.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-convert": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-name": "~1.1.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=7.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-name": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"node_modules/color-string": {
|
|
||||||
"version": "1.9.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
|
|
||||||
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"color-name": "^1.0.0",
|
|
||||||
"simple-swizzle": "^0.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/csstype": {
|
"node_modules/csstype": {
|
||||||
"version": "3.1.3",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/detect-libc": {
|
"node_modules/detect-libc": {
|
||||||
"version": "2.0.4",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
|
|
||||||
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-arrayish": {
|
|
||||||
"version": "0.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
|
|
||||||
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"node_modules/js-tokens": {
|
"node_modules/js-tokens": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/loose-envify": {
|
"node_modules/loose-envify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
@@ -731,8 +298,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.11",
|
"version": "3.3.11",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
|
||||||
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -799,10 +364,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/next/node_modules/postcss": {
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
|
||||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -827,16 +394,8 @@
|
|||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/picocolors": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/react": {
|
"node_modules/react": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0"
|
"loose-envify": "^1.1.0"
|
||||||
@@ -847,8 +406,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/react-dom": {
|
"node_modules/react-dom": {
|
||||||
"version": "18.3.1",
|
"version": "18.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
|
||||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0",
|
"loose-envify": "^1.1.0",
|
||||||
@@ -860,17 +417,13 @@
|
|||||||
},
|
},
|
||||||
"node_modules/scheduler": {
|
"node_modules/scheduler": {
|
||||||
"version": "0.23.2",
|
"version": "0.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
|
|
||||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.1.0"
|
"loose-envify": "^1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.7.2",
|
"version": "7.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
|
||||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -881,16 +434,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sharp": {
|
"node_modules/sharp": {
|
||||||
"version": "0.34.3",
|
"version": "0.34.5",
|
||||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz",
|
|
||||||
"integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==",
|
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color": "^4.2.3",
|
"@img/colour": "^1.0.0",
|
||||||
"detect-libc": "^2.0.4",
|
"detect-libc": "^2.1.2",
|
||||||
"semver": "^7.7.2"
|
"semver": "^7.7.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
||||||
@@ -899,44 +450,34 @@
|
|||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@img/sharp-darwin-arm64": "0.34.3",
|
"@img/sharp-darwin-arm64": "0.34.5",
|
||||||
"@img/sharp-darwin-x64": "0.34.3",
|
"@img/sharp-darwin-x64": "0.34.5",
|
||||||
"@img/sharp-libvips-darwin-arm64": "1.2.0",
|
"@img/sharp-libvips-darwin-arm64": "1.2.4",
|
||||||
"@img/sharp-libvips-darwin-x64": "1.2.0",
|
"@img/sharp-libvips-darwin-x64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-arm": "1.2.0",
|
"@img/sharp-libvips-linux-arm": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-arm64": "1.2.0",
|
"@img/sharp-libvips-linux-arm64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-ppc64": "1.2.0",
|
"@img/sharp-libvips-linux-ppc64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-s390x": "1.2.0",
|
"@img/sharp-libvips-linux-riscv64": "1.2.4",
|
||||||
"@img/sharp-libvips-linux-x64": "1.2.0",
|
"@img/sharp-libvips-linux-s390x": "1.2.4",
|
||||||
"@img/sharp-libvips-linuxmusl-arm64": "1.2.0",
|
"@img/sharp-libvips-linux-x64": "1.2.4",
|
||||||
"@img/sharp-libvips-linuxmusl-x64": "1.2.0",
|
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
|
||||||
"@img/sharp-linux-arm": "0.34.3",
|
"@img/sharp-libvips-linuxmusl-x64": "1.2.4",
|
||||||
"@img/sharp-linux-arm64": "0.34.3",
|
"@img/sharp-linux-arm": "0.34.5",
|
||||||
"@img/sharp-linux-ppc64": "0.34.3",
|
"@img/sharp-linux-arm64": "0.34.5",
|
||||||
"@img/sharp-linux-s390x": "0.34.3",
|
"@img/sharp-linux-ppc64": "0.34.5",
|
||||||
"@img/sharp-linux-x64": "0.34.3",
|
"@img/sharp-linux-riscv64": "0.34.5",
|
||||||
"@img/sharp-linuxmusl-arm64": "0.34.3",
|
"@img/sharp-linux-s390x": "0.34.5",
|
||||||
"@img/sharp-linuxmusl-x64": "0.34.3",
|
"@img/sharp-linux-x64": "0.34.5",
|
||||||
"@img/sharp-wasm32": "0.34.3",
|
"@img/sharp-linuxmusl-arm64": "0.34.5",
|
||||||
"@img/sharp-win32-arm64": "0.34.3",
|
"@img/sharp-linuxmusl-x64": "0.34.5",
|
||||||
"@img/sharp-win32-ia32": "0.34.3",
|
"@img/sharp-wasm32": "0.34.5",
|
||||||
"@img/sharp-win32-x64": "0.34.3"
|
"@img/sharp-win32-arm64": "0.34.5",
|
||||||
}
|
"@img/sharp-win32-ia32": "0.34.5",
|
||||||
},
|
"@img/sharp-win32-x64": "0.34.5"
|
||||||
"node_modules/simple-swizzle": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"is-arrayish": "^0.3.1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/source-map-js": {
|
"node_modules/source-map-js": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -944,8 +485,6 @@
|
|||||||
},
|
},
|
||||||
"node_modules/styled-jsx": {
|
"node_modules/styled-jsx": {
|
||||||
"version": "5.1.6",
|
"version": "5.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
|
|
||||||
"integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"client-only": "0.0.1"
|
"client-only": "0.0.1"
|
||||||
@@ -967,9 +506,14 @@
|
|||||||
},
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.8.1",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
|
||||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
|
||||||
"license": "0BSD"
|
"license": "0BSD"
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.21.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,13 @@
|
|||||||
"preview": "next start"
|
"preview": "next start"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@metabase/embedding-sdk-react": "^0.58.0",
|
||||||
"next": "15.5.9",
|
"next": "15.5.9",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"react-dom": "^18"
|
"react-dom": "^18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18"
|
"@types/react-dom": "^18"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
"lib": [
|
"lib": [
|
||||||
"dom",
|
"dom",
|
||||||
"dom.iterable",
|
"dom.iterable",
|
||||||
@@ -24,6 +25,9 @@
|
|||||||
"paths": {
|
"paths": {
|
||||||
"@/*": [
|
"@/*": [
|
||||||
"./src/*"
|
"./src/*"
|
||||||
|
],
|
||||||
|
"@metabase/embedding-sdk-react": [
|
||||||
|
"./node_modules/@metabase/embedding-sdk-react"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"target": "ES2017"
|
"target": "ES2017"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const BASE_ENV = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const BASE_SETUP_CONFIG = {
|
const BASE_SETUP_CONFIG = {
|
||||||
"app-run-command": "yarn start",
|
"app-run-command": "bun start",
|
||||||
"app-down-command": `kill -9 $(lsof -ti:"${BASE_ENV.CLIENT_PORT}");`,
|
"app-down-command": `kill -9 $(lsof -ti:"${BASE_ENV.CLIENT_PORT}");`,
|
||||||
env: BASE_ENV,
|
env: BASE_ENV,
|
||||||
cypressEnv: {
|
cypressEnv: {
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ if (!BASE_ENV.PREMIUM_EMBEDDING_TOKEN) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const BASE_SETUP_CONFIG = {
|
const BASE_SETUP_CONFIG = {
|
||||||
"docker-up-command": "yarn docker:local-dist:up",
|
"docker-up-command": "bun run docker:local-dist:up",
|
||||||
"docker-down-command": "yarn docker:rm",
|
"docker-down-command": "bun run docker:rm",
|
||||||
"docker-env-example-path": ".env.docker.example",
|
"docker-env-example-path": ".env.docker.example",
|
||||||
"docker-env-path": ".env.docker",
|
"docker-env-path": ".env.docker",
|
||||||
defaultBranch: BRANCH_NAME,
|
defaultBranch: BRANCH_NAME,
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ const init = async () => {
|
|||||||
printBold("⚠️ Your backend is already running");
|
printBold("⚠️ Your backend is already running");
|
||||||
console.log(`If tests fail or if something doesn't work:
|
console.log(`If tests fail or if something doesn't work:
|
||||||
- Kill the pid ${backendPid}
|
- Kill the pid ${backendPid}
|
||||||
- Run *yarn test-cypress* again
|
- Run *bun run test-cypress* again
|
||||||
- This will spin up the live backend with the correct settings for e2e tests
|
- This will spin up the live backend with the correct settings for e2e tests
|
||||||
`);
|
`);
|
||||||
} else {
|
} else {
|
||||||
@@ -113,7 +113,7 @@ const init = async () => {
|
|||||||
!runningFromJar
|
!runningFromJar
|
||||||
) {
|
) {
|
||||||
printBold(
|
printBold(
|
||||||
`⚠️⚠️ You don't have your frontend running on port ${frontendPort}. You should probably run yarn build-hot ⚠️⚠️`,
|
`⚠️⚠️ You don't have your frontend running on port ${frontendPort}. You should probably run bun run build-hot ⚠️⚠️`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,11 @@ module.exports = {
|
|||||||
...mainConfig.resolve.alias,
|
...mainConfig.resolve.alias,
|
||||||
...(embeddingSdkPath ? { [SDK_PACKAGE_NAME]: embeddingSdkPath } : null),
|
...(embeddingSdkPath ? { [SDK_PACKAGE_NAME]: embeddingSdkPath } : null),
|
||||||
},
|
},
|
||||||
fallback: { path: false, fs: false }, // FIXME: this might break file download tests, we might need to implement this properly
|
fallback: {
|
||||||
|
path: false,
|
||||||
|
fs: false,
|
||||||
|
querystring: require.resolve("querystring-es3"),
|
||||||
|
}, // FIXME: this might break file download tests, we might need to implement this properly
|
||||||
},
|
},
|
||||||
entry: [path.join(__dirname, "src", "index.js")],
|
entry: [path.join(__dirname, "src", "index.js")],
|
||||||
output: {
|
output: {
|
||||||
|
|||||||
@@ -88,10 +88,10 @@ describe("scenarios > embedding-sdk > interactive-question", () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
getSdkRoot().within(() => {
|
getSdkRoot().within(() => {
|
||||||
cy.findByTestId("native-query-editor").should("be.visible");
|
cy.findByTestId("native-query-editor")
|
||||||
cy.findByLabelText("placeholder SELECT * FROM TABLE_NAME").should(
|
.should("be.visible")
|
||||||
"be.visible",
|
.find(".cm-placeholder")
|
||||||
);
|
.should("be.visible");
|
||||||
|
|
||||||
cy.wait("@schema");
|
cy.wait("@schema");
|
||||||
|
|
||||||
|
|||||||
@@ -1338,7 +1338,7 @@ describe("issue 50373", () => {
|
|||||||
url: /^\/app\/dist\/(.*)\.js$/,
|
url: /^\/app\/dist\/(.*)\.js$/,
|
||||||
},
|
},
|
||||||
(req) => {
|
(req) => {
|
||||||
// When running in development (e.g. with `yarn dev`),
|
// When running in development (e.g. with `bun run dev`),
|
||||||
// the *.hot.bundle.js hot-reloaded file is served by the dev server.
|
// the *.hot.bundle.js hot-reloaded file is served by the dev server.
|
||||||
if (req.url.includes("hot.bundle.js")) {
|
if (req.url.includes("hot.bundle.js")) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"e2e/*": ["./*"],
|
"e2e/*": ["./*"],
|
||||||
"@metabase/embedding-sdk-react": ["../enterprise/frontend/src/embedding-sdk-package/index.ts"],
|
"@metabase/embedding-sdk-react": [
|
||||||
|
"../enterprise/frontend/src/embedding-sdk-package/index.ts"
|
||||||
|
],
|
||||||
"*": ["../frontend/src/*"]
|
"*": ["../frontend/src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ Unless otherwise noted, all files Copyright © 2024 Metabase, Inc.
|
|||||||
### Front-end
|
### Front-end
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
MB_EDITION=ee yarn build-hot
|
MB_EDITION=ee bun run build-hot
|
||||||
```
|
```
|
||||||
|
|
||||||
Clear the Webpack cache using `yarn remove-webpack-cache` if you previously ran OSS edition in dev mode to avoid unexpected application behavior.
|
Clear the Webpack cache using `bun run remove-webpack-cache` if you previously ran OSS edition in dev mode to avoid unexpected application behavior.
|
||||||
|
|
||||||
### Back-end
|
### Back-end
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ Code in this directory should carefully reference external code, including code
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
You can build the SDK NPM package with `yarn build-embedding-sdk-package`.
|
You can build the SDK NPM package with `bun run build-embedding-sdk-package`.
|
||||||
You can build the SDK bundle with `yarn build-release:embedding-sdk-bundle`
|
You can build the SDK bundle with `bun run build-release:embedding-sdk-bundle`
|
||||||
|
|
||||||
#### embedding-sdk:dev
|
#### embedding-sdk:dev
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Storybook expects an instance running on `localhost:3000` with some configuratio
|
|||||||
- on [/admin/embedding/modular](http://localhost:3000/admin/embedding/modular)
|
- on [/admin/embedding/modular](http://localhost:3000/admin/embedding/modular)
|
||||||
- Enable the "SDK for React" card
|
- Enable the "SDK for React" card
|
||||||
|
|
||||||
Then you can run `yarn storybook-embedding-sdk` to start storybook.
|
Then you can run `bun run storybook-embedding-sdk` to start storybook.
|
||||||
|
|
||||||
Storybook will use the source files and not the built package.
|
Storybook will use the source files and not the built package.
|
||||||
|
|
||||||
@@ -62,10 +62,10 @@ We recommend running either the dev or the watch command to have shorter a feedb
|
|||||||
To start the cypress for the e2e tests:
|
To start the cypress for the e2e tests:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CYPRESS_TESTING_TYPE="component" yarn test-cypress
|
CYPRESS_TESTING_TYPE="component" bun run test-cypress
|
||||||
```
|
```
|
||||||
|
|
||||||
Then in a separate terminal run `yarn embedding-sdk:dev` to build SDK NPM package and SDK bundle in the `watch` mode.
|
Then in a separate terminal run `bun run embedding-sdk:dev` to build SDK NPM package and SDK bundle in the `watch` mode.
|
||||||
|
|
||||||
### Sample Apps compatibility with Embedding SDK tests
|
### Sample Apps compatibility with Embedding SDK tests
|
||||||
|
|
||||||
@@ -78,13 +78,13 @@ Define one of the following environment variables with enterprise token: `CYPRES
|
|||||||
To run these tests locally, run:
|
To run these tests locally, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
SDK_TEST_SUITE=<sample_app_repo_name>-e2e yarn test-cypress-host-sample-apps
|
SDK_TEST_SUITE=<sample_app_repo_name>-e2e bun run test-cypress-host-sample-apps
|
||||||
```
|
```
|
||||||
|
|
||||||
For example for the `metabase-nodejs-react-sdk-embedding-sample`, run:
|
For example for the `metabase-nodejs-react-sdk-embedding-sample`, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
SDK_TEST_SUITE=metabase-nodejs-react-sdk-embedding-sample-e2e yarn test-cypress-host-sample-apps
|
SDK_TEST_SUITE=metabase-nodejs-react-sdk-embedding-sample-e2e bun run test-cypress-host-sample-apps
|
||||||
```
|
```
|
||||||
|
|
||||||
##### :warning: Obtaining the Shoppy's Metabase App DB Dump locally
|
##### :warning: Obtaining the Shoppy's Metabase App DB Dump locally
|
||||||
@@ -130,13 +130,13 @@ Tests a bit similar to Sample App tests, but:
|
|||||||
To run these tests locally, run:
|
To run these tests locally, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
ENTERPRISE_TOKEN=<token> SDK_TEST_SUITE=<host_app_name>-e2e HOST_APP_ENVIRONMENT=production yarn test-cypress-host-sample-apps
|
ENTERPRISE_TOKEN=<token> SDK_TEST_SUITE=<host_app_name>-e2e HOST_APP_ENVIRONMENT=production bun run test-cypress-host-sample-apps
|
||||||
```
|
```
|
||||||
|
|
||||||
For example for the `vite-6-host-app` Host App, run:
|
For example for the `vite-6-host-app` Host App, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
ENTERPRISE_TOKEN=<token> SDK_TEST_SUITE=vite-6-host-app-e2e HOST_APP_ENVIRONMENT=production yarn test-cypress-host-sample-apps
|
ENTERPRISE_TOKEN=<token> SDK_TEST_SUITE=vite-6-host-app-e2e HOST_APP_ENVIRONMENT=production bun run test-cypress-host-sample-apps
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CI runs
|
#### CI runs
|
||||||
|
|||||||
82
frontend/build/shared/rspack/resolve-aliases.js
Normal file
82
frontend/build/shared/rspack/resolve-aliases.js
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
// @ts-check
|
||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const { IS_DEV_MODE } = require("../constants");
|
||||||
|
|
||||||
|
const ROOT_PATH = path.resolve(__dirname, "../../../..");
|
||||||
|
const ASSETS_PATH = ROOT_PATH + "/resources/frontend_client/app/assets";
|
||||||
|
const FONTS_PATH = ROOT_PATH + "/resources/frontend_client/app/fonts";
|
||||||
|
const IMAGES_PATH = ROOT_PATH + "/resources/frontend_client/app/img";
|
||||||
|
const DOCS_PATH = ROOT_PATH + "/docs";
|
||||||
|
const FRONTEND_BUILD_CONFIGS_PATH = ROOT_PATH + "/frontend/build";
|
||||||
|
const SRC_PATH = ROOT_PATH + "/frontend/src/metabase";
|
||||||
|
const LIB_SRC_PATH = ROOT_PATH + "/frontend/src/metabase-lib";
|
||||||
|
const ENTERPRISE_SRC_PATH =
|
||||||
|
ROOT_PATH + "/enterprise/frontend/src/metabase-enterprise";
|
||||||
|
const EMBEDDING_SRC_PATH = ROOT_PATH + "/enterprise/frontend/src/embedding";
|
||||||
|
const SDK_PACKAGE_SRC_PATH =
|
||||||
|
ROOT_PATH + "/enterprise/frontend/src/embedding-sdk-package";
|
||||||
|
const SDK_BUNDLE_SRC_PATH = ROOT_PATH + "/frontend/src/embedding-sdk-bundle";
|
||||||
|
const SDK_SHARED_SRC_PATH = ROOT_PATH + "/frontend/src/embedding-sdk-shared";
|
||||||
|
const TYPES_SRC_PATH = ROOT_PATH + "/frontend/src/metabase-types";
|
||||||
|
const CLJS_SRC_PATH = ROOT_PATH + "/target/cljs_release";
|
||||||
|
const CLJS_SRC_PATH_DEV = ROOT_PATH + "/target/cljs_dev";
|
||||||
|
const TEST_SUPPORT_PATH = ROOT_PATH + "/frontend/test/__support__";
|
||||||
|
const E2E_PATH = ROOT_PATH + "/e2e";
|
||||||
|
|
||||||
|
const isDevMode = IS_DEV_MODE;
|
||||||
|
|
||||||
|
const resolveEnterprisePathOrNoop = (subpath) =>
|
||||||
|
process.env.MB_EDITION === "ee"
|
||||||
|
? ENTERPRISE_SRC_PATH + subpath
|
||||||
|
: SRC_PATH + "/lib/noop";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shared resolve aliases used by both rspack.main.config.js and
|
||||||
|
* e2e/support/component-webpack.config.js
|
||||||
|
*/
|
||||||
|
const RESOLVE_ALIASES = {
|
||||||
|
"build-configs": FRONTEND_BUILD_CONFIGS_PATH,
|
||||||
|
assets: ASSETS_PATH,
|
||||||
|
img: IMAGES_PATH,
|
||||||
|
fonts: FONTS_PATH,
|
||||||
|
docs: DOCS_PATH,
|
||||||
|
metabase: SRC_PATH,
|
||||||
|
"metabase-lib": LIB_SRC_PATH,
|
||||||
|
"metabase-enterprise": ENTERPRISE_SRC_PATH,
|
||||||
|
"metabase-types": TYPES_SRC_PATH,
|
||||||
|
"metabase-dev": `${SRC_PATH}/dev${isDevMode ? "" : "-noop"}.ts`,
|
||||||
|
cljs: isDevMode ? CLJS_SRC_PATH_DEV : CLJS_SRC_PATH,
|
||||||
|
__support__: TEST_SUPPORT_PATH,
|
||||||
|
e2e: E2E_PATH,
|
||||||
|
style: SRC_PATH + "/css/core/index",
|
||||||
|
// NOTE @kdoh - 7/24/18
|
||||||
|
// icepick 2.x is es6 by default, to maintain backwards compatibility
|
||||||
|
// with ie11 point to the minified version
|
||||||
|
icepick: ROOT_PATH + "/node_modules/icepick/icepick.min",
|
||||||
|
// conditionally load either the EE plugins file or a empty file in the CE code tree
|
||||||
|
"ee-plugins":
|
||||||
|
process.env.MB_EDITION === "ee"
|
||||||
|
? ENTERPRISE_SRC_PATH + "/plugins"
|
||||||
|
: SRC_PATH + "/plugins/noop",
|
||||||
|
"ee-overrides": resolveEnterprisePathOrNoop("/overrides"),
|
||||||
|
embedding: EMBEDDING_SRC_PATH,
|
||||||
|
"embedding-sdk-package": SDK_PACKAGE_SRC_PATH,
|
||||||
|
"embedding-sdk-bundle": SDK_BUNDLE_SRC_PATH,
|
||||||
|
"embedding-sdk-shared": SDK_SHARED_SRC_PATH,
|
||||||
|
"sdk-iframe-embedding-ee-plugins": resolveEnterprisePathOrNoop(
|
||||||
|
"/sdk-iframe-embedding-plugins",
|
||||||
|
),
|
||||||
|
"sdk-iframe-embedding-script-ee-plugins": resolveEnterprisePathOrNoop(
|
||||||
|
"/sdk-iframe-embedding-script-plugins",
|
||||||
|
),
|
||||||
|
"sdk-ee-plugins":
|
||||||
|
process.env.MB_EDITION === "ee"
|
||||||
|
? ENTERPRISE_SRC_PATH + "/sdk-plugins"
|
||||||
|
: SRC_PATH + "/plugins/noop",
|
||||||
|
"sdk-specific-imports": SRC_PATH + "/lib/noop",
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = { RESOLVE_ALIASES };
|
||||||
@@ -90,6 +90,10 @@ module.exports = {
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
extensions: appConfig.resolve.extensions,
|
extensions: appConfig.resolve.extensions,
|
||||||
|
fallback: {
|
||||||
|
...storybookConfig.resolve?.fallback,
|
||||||
|
...appConfig.resolve?.fallback,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// This runs in the Nashorn JavaScript engine and there are some limitations
|
// This runs in the Nashorn JavaScript engine and there are some limitations
|
||||||
//
|
//
|
||||||
// 1. This is not currently automatically built with the rest of the application, please run `yarn build-shared` after modifying
|
// 1. This is not currently automatically built with the rest of the application, please run `bun run build-shared` after modifying
|
||||||
// 2. Avoid including unnecessary libraries as the JS engine takes a long time to parse and execute them
|
// 2. Avoid including unnecessary libraries as the JS engine takes a long time to parse and execute them
|
||||||
// 3. Related to #2, we aren't currently including `core-js` so don't use features that require it, e.x. iterables / for-of
|
// 3. Related to #2, we aren't currently including `core-js` so don't use features that require it, e.x. iterables / for-of
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.Container {
|
.Container {
|
||||||
/*
|
/*
|
||||||
Because this variable is defined dynamically in `PreviewPane.tsx`, we need to define
|
Because this variable is defined dynamically in `PreviewPane.tsx`, we need to define
|
||||||
this variable here otherwise `yarn find-never-defined-css-variables` would fail.
|
this variable here otherwise `bun run find-never-defined-css-variables` would fail.
|
||||||
*/
|
*/
|
||||||
--background-url: ;
|
--background-url: ;
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,12 @@ export const CustomCodeBlock = CodeBlock.extend({
|
|||||||
language: {
|
language: {
|
||||||
default: this.options.defaultLanguage,
|
default: this.options.defaultLanguage,
|
||||||
parseHTML: (element: HTMLElement) => {
|
parseHTML: (element: HTMLElement) => {
|
||||||
const { languageClassPrefix } = this.options;
|
const prefix =
|
||||||
|
this.options.languageClassPrefix ?? languageClassPrefix;
|
||||||
const classNames = [...(element.firstElementChild?.classList || [])];
|
const classNames = [...(element.firstElementChild?.classList || [])];
|
||||||
const languages = classNames
|
const languages = classNames
|
||||||
.filter((className) => className.startsWith(languageClassPrefix))
|
.filter((className) => className.startsWith(prefix))
|
||||||
.map((className) => className.replace(languageClassPrefix, ""));
|
.map((className) => className.replace(prefix, ""));
|
||||||
const language = languages[0];
|
const language = languages[0];
|
||||||
|
|
||||||
if (!language) {
|
if (!language) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user