Compare commits
2 Commits
nightly-v2
...
franknoiro
Author | SHA1 | Date | |
---|---|---|---|
d453110768 | |||
c2e1b50bde |
@ -1,3 +1,3 @@
|
|||||||
[codespell]
|
[codespell]
|
||||||
ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,atleast,ue,afterall,ser,fromM,FromM
|
ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,atleast,ue,afterall,ser,fromM,FromM
|
||||||
skip: **/target,node_modules,build,dist,./out,**/Cargo.lock,./docs/kcl/*.md,.package-lock.json,**/package-lock.json,./openapi/*.json,./packages/codemirror-lang-kcl/test/all.test.ts,./public/kcl-samples,./rust/kcl-lib/tests/kcl_samples,tsconfig.tsbuildinfo,./src/lib/machine-api.d.ts
|
skip: **/target,node_modules,build,dist,./out,**/Cargo.lock,./docs/kcl/*.md,.yarn.lock,**/yarn.lock,./openapi/*.json,./packages/codemirror-lang-kcl/test/all.test.ts,./public/kcl-samples,./rust/kcl-lib/tests/kcl_samples,tsconfig.tsbuildinfo
|
||||||
|
12
.github/ci-cd-scripts/playwright-electron.sh
vendored
12
.github/ci-cd-scripts/playwright-electron.sh
vendored
@ -7,11 +7,11 @@ if [[ ! -f "test-results/.last-run.json" ]]; then
|
|||||||
# If no last run artifact, than run Playwright normally
|
# If no last run artifact, than run Playwright normally
|
||||||
echo "run playwright normally"
|
echo "run playwright normally"
|
||||||
if [[ "$3" == *ubuntu* ]]; then
|
if [[ "$3" == *ubuntu* ]]; then
|
||||||
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:playwright:electron:ubuntu -- --shard=$1/$2 || true
|
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --shard=$1/$2 || true
|
||||||
elif [[ "$3" == *windows* ]]; then
|
elif [[ "$3" == *windows* ]]; then
|
||||||
npm run test:playwright:electron:windows -- --shard=$1/$2 || true
|
yarn test:playwright:electron:windows -- --shard=$1/$2 || true
|
||||||
elif [[ "$3" == *macos* ]]; then
|
elif [[ "$3" == *macos* ]]; then
|
||||||
npm run test:playwright:electron:macos -- --shard=$1/$2 || true
|
yarn test:playwright:electron:macos -- --shard=$1/$2 || true
|
||||||
else
|
else
|
||||||
echo "Do not run Playwright. Unable to detect os runtime."
|
echo "Do not run Playwright. Unable to detect os runtime."
|
||||||
exit 1
|
exit 1
|
||||||
@ -31,11 +31,11 @@ while [[ $retry -le $max_retries ]]; do
|
|||||||
echo "retried=true" >>$GITHUB_OUTPUT
|
echo "retried=true" >>$GITHUB_OUTPUT
|
||||||
echo "run playwright with last failed tests and retry $retry"
|
echo "run playwright with last failed tests and retry $retry"
|
||||||
if [[ "$3" == *ubuntu* ]]; then
|
if [[ "$3" == *ubuntu* ]]; then
|
||||||
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:playwright:electron:ubuntu -- --last-failed || true
|
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --last-failed || true
|
||||||
elif [[ "$3" == *windows* ]]; then
|
elif [[ "$3" == *windows* ]]; then
|
||||||
npm run test:playwright:electron:windows -- --last-failed || true
|
yarn test:playwright:electron:windows -- --last-failed || true
|
||||||
elif [[ "$3" == *macos* ]]; then
|
elif [[ "$3" == *macos* ]]; then
|
||||||
npm run test:playwright:electron:macos -- --last-failed || true
|
yarn test:playwright:electron:macos -- --last-failed || true
|
||||||
else
|
else
|
||||||
echo "Do not run playwright. Unable to detect os runtime."
|
echo "Do not run playwright. Unable to detect os runtime."
|
||||||
exit 1
|
exit 1
|
||||||
|
6
.github/workflows/build-and-store-wasm.yml
vendored
6
.github/workflows/build-and-store-wasm.yml
vendored
@ -13,9 +13,9 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install
|
run: yarn
|
||||||
- name: Use correct Rust toolchain
|
- name: Use correct Rust toolchain
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@ -32,7 +32,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
workspaces: rust
|
workspaces: rust
|
||||||
- name: build wasm
|
- name: build wasm
|
||||||
run: npm run build:wasm
|
run: yarn build:wasm
|
||||||
|
|
||||||
|
|
||||||
# Upload the WASM bundle as an artifact
|
# Upload the WASM bundle as an artifact
|
||||||
|
37
.github/workflows/build-apps.yml
vendored
37
.github/workflows/build-apps.yml
vendored
@ -29,9 +29,9 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
|
||||||
- id: filter
|
- id: filter
|
||||||
name: Check for Rust changes
|
name: Check for Rust changes
|
||||||
@ -90,20 +90,20 @@ jobs:
|
|||||||
|
|
||||||
- name: Run build:wasm
|
- name: Run build:wasm
|
||||||
if: ${{ steps.wasm.outputs.should-build-wasm == 'true' }}
|
if: ${{ steps.wasm.outputs.should-build-wasm == 'true' }}
|
||||||
run: "npm run build:wasm"
|
run: "yarn build:wasm"
|
||||||
|
|
||||||
- name: Set nightly version, product name, release notes, and icons
|
- name: Set nightly version, product name, release notes, and icons
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
run: |
|
run: |
|
||||||
export VERSION=${GITHUB_REF_NAME#nightly-v}
|
export VERSION=${GITHUB_REF_NAME#nightly-v}
|
||||||
npm run files:set-version
|
yarn files:set-version
|
||||||
npm run files:flip-to-nightly
|
yarn files:flip-to-nightly
|
||||||
|
|
||||||
- name: Set release version
|
- name: Set release version
|
||||||
if: ${{ env.IS_RELEASE == 'true' }}
|
if: ${{ env.IS_RELEASE == 'true' }}
|
||||||
run: |
|
run: |
|
||||||
export VERSION=${GITHUB_REF_NAME#v}
|
export VERSION=${GITHUB_REF_NAME#v}
|
||||||
npm run files:set-version
|
yarn files:set-version
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
@ -172,16 +172,16 @@ jobs:
|
|||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm' # Set this to npm, npm or pnpm.
|
cache: 'yarn' # Set this to npm, yarn or pnpm.
|
||||||
|
|
||||||
- name: npm install
|
- name: yarn install
|
||||||
# Windows is picky sometimes and fails on fetch. Step takes about ~30s
|
# Windows is picky sometimes and fails on fetch. Step takes about ~30s
|
||||||
uses: nick-fields/retry@v3.0.2
|
uses: nick-fields/retry@v3.0.2
|
||||||
with:
|
with:
|
||||||
shell: bash
|
shell: bash
|
||||||
timeout_minutes: 2
|
timeout_minutes: 2
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: npm install
|
command: yarn install
|
||||||
|
|
||||||
- name: Prepare certificate and variables (Windows only)
|
- name: Prepare certificate and variables (Windows only)
|
||||||
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
|
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
|
||||||
@ -207,20 +207,13 @@ jobs:
|
|||||||
smctl.exe keypair ls
|
smctl.exe keypair ls
|
||||||
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
|
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
|
||||||
smksp_cert_sync.exe
|
smksp_cert_sync.exe
|
||||||
smctl windows certsync
|
|
||||||
# This last line `smctl windows certsync` was added after windows codesign failures started happening
|
|
||||||
# with nightly-v25.4.10. It looks like `smksp_cert_sync.exe` used to do the sync to the local cert store,
|
|
||||||
# but stopped doing it overnight. This extra call that I randomly got from this azure-related doc page
|
|
||||||
# https://docs.digicert.com/en/digicert-keylocker/code-signing/sign-with-third-party-signing-tools/windows-applications/sign-azure-apps-with-signtool-using-ksp-library.html#sync-certificates--windows-only--618365
|
|
||||||
# seems to be doing that extra sync that we need for scripts/sign-win.js to work.
|
|
||||||
# TODO: we still need to make sign-win.js errors fail the workflow, see issue #6276
|
|
||||||
shell: cmd
|
shell: cmd
|
||||||
|
|
||||||
- name: Build the app (debug)
|
- name: Build the app (debug)
|
||||||
if: ${{ env.IS_RELEASE == 'false' && env.IS_NIGHTLY == 'false' }}
|
if: ${{ env.IS_RELEASE == 'false' && env.IS_NIGHTLY == 'false' }}
|
||||||
# electron-builder doesn't have a concept of release vs debug,
|
# electron-builder doesn't have a concept of release vs debug,
|
||||||
# this is just not doing any codesign or release yml generation, and points to dev infra
|
# this is just not doing any codesign or release yml generation, and points to dev infra
|
||||||
run: npm run tronb:package:dev
|
run: yarn tronb:package:dev
|
||||||
|
|
||||||
- name: Build the app (release)
|
- name: Build the app (release)
|
||||||
if: ${{ env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true' }}
|
||||||
@ -240,7 +233,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
timeout_minutes: 10
|
timeout_minutes: 10
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: npm run tronb:package:prod
|
command: yarn tronb:package:prod
|
||||||
|
|
||||||
- name: List artifacts in out/
|
- name: List artifacts in out/
|
||||||
run: ls -R out
|
run: ls -R out
|
||||||
@ -302,7 +295,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
timeout_minutes: 10
|
timeout_minutes: 10
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: npm run tronb:package:prod
|
command: yarn tronb:package:prod
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ env.IS_RELEASE == 'true' }}
|
if: ${{ env.IS_RELEASE == 'true' }}
|
||||||
@ -385,7 +378,7 @@ jobs:
|
|||||||
NOTES: ${{ needs.prepare-files.outputs.notes }}
|
NOTES: ${{ needs.prepare-files.outputs.notes }}
|
||||||
PUB_DATE: ${{ github.event.repository.updated_at }}
|
PUB_DATE: ${{ github.event.repository.updated_at }}
|
||||||
WEBSITE_DIR: ${{ env.IS_NIGHTLY == 'true' && 'dl.zoo.dev/releases/modeling-app/nightly' || 'dl.zoo.dev/releases/modeling-app' }}
|
WEBSITE_DIR: ${{ env.IS_NIGHTLY == 'true' && 'dl.zoo.dev/releases/modeling-app/nightly' || 'dl.zoo.dev/releases/modeling-app' }}
|
||||||
URL_CODED_NAME: ${{ env.IS_NIGHTLY == 'true' && 'Zoo%20Design%20Studio%20%28Nightly%29' || 'Zoo%20Design%20Studio' }}
|
URL_CODED_NAME: ${{ env.IS_NIGHTLY == 'true' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }}
|
||||||
run: |
|
run: |
|
||||||
RELEASE_DIR=https://${WEBSITE_DIR}
|
RELEASE_DIR=https://${WEBSITE_DIR}
|
||||||
jq --null-input \
|
jq --null-input \
|
||||||
@ -442,7 +435,7 @@ jobs:
|
|||||||
export TAG="nightly-${VERSION}"
|
export TAG="nightly-${VERSION}"
|
||||||
export PREVIOUS_TAG=$(git tag --list --sort=-committerdate "nightly-v[0-9]*" | head -n2 | tail -n1)
|
export PREVIOUS_TAG=$(git tag --list --sort=-committerdate "nightly-v[0-9]*" | head -n2 | tail -n1)
|
||||||
export NOTES=$(./scripts/get-nightly-changelog.sh)
|
export NOTES=$(./scripts/get-nightly-changelog.sh)
|
||||||
npm run files:set-notes
|
yarn files:set-notes
|
||||||
|
|
||||||
- name: Authenticate to Google Cloud
|
- name: Authenticate to Google Cloud
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
@ -467,4 +460,4 @@ jobs:
|
|||||||
|
|
||||||
- name: Invalidate bucket cache on latest*.yml and last_download.json files
|
- name: Invalidate bucket cache on latest*.yml and last_download.json files
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
run: npm run files:invalidate-bucket:nightly
|
run: yarn files:invalidate-bucket:nightly
|
||||||
|
7
.github/workflows/check-exampleKcl.yml
vendored
7
.github/workflows/check-exampleKcl.yml
vendored
@ -5,7 +5,6 @@ on:
|
|||||||
types: [opened, synchronize]
|
types: [opened, synchronize]
|
||||||
paths:
|
paths:
|
||||||
- 'src/lib/exampleKcl.ts'
|
- 'src/lib/exampleKcl.ts'
|
||||||
- 'public/kcl-samples/bracket/main.kcl'
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -23,11 +22,11 @@ jobs:
|
|||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const message = '`public/kcl-samples/bracket/main.kcl` or `src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.';
|
const message = '`src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.';
|
||||||
const issue_number = context.payload.pull_request.number;
|
const issue_number = context.payload.pull_request.number;
|
||||||
const owner = context.repo.owner;
|
const owner = context.repo.owner;
|
||||||
const repo = context.repo.repo;
|
const repo = context.repo.repo;
|
||||||
|
|
||||||
const { data: comments } = await github.rest.issues.listComments({
|
const { data: comments } = await github.rest.issues.listComments({
|
||||||
owner,
|
owner,
|
||||||
repo,
|
repo,
|
||||||
@ -44,4 +43,4 @@ jobs:
|
|||||||
issue_number,
|
issue_number,
|
||||||
body: message,
|
body: message,
|
||||||
});
|
});
|
||||||
}
|
}
|
13
.github/workflows/codemirror-lang-kcl.yml
vendored
13
.github/workflows/codemirror-lang-kcl.yml
vendored
@ -11,7 +11,7 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
npm-unit-test:
|
yarn-unit-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@ -19,11 +19,14 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
working-directory: packages/codemirror-lang-kcl
|
||||||
|
|
||||||
- run: npm run tsc --workspace=packages/codemirror-lang-kcl
|
- run: yarn tsc
|
||||||
|
working-directory: packages/codemirror-lang-kcl
|
||||||
|
|
||||||
- name: run unit tests
|
- name: run unit tests
|
||||||
run: npm run test --workspace=packages/codemirror-lang-kcl
|
run: yarn test
|
||||||
|
working-directory: packages/codemirror-lang-kcl
|
||||||
|
38
.github/workflows/e2e-tests.yml
vendored
38
.github/workflows/e2e-tests.yml
vendored
@ -97,11 +97,11 @@ jobs:
|
|||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm install
|
run: yarn
|
||||||
|
|
||||||
- name: Download Wasm Cache
|
- name: Download Wasm Cache
|
||||||
id: download-wasm
|
id: download-wasm
|
||||||
@ -154,7 +154,7 @@ jobs:
|
|||||||
- name: Build Wasm
|
- name: Build Wasm
|
||||||
if: ${{ needs.conditions.outputs.should-run == 'true' && steps.wasm.outputs.should-build-wasm == 'true' }}
|
if: ${{ needs.conditions.outputs.should-run == 'true' && steps.wasm.outputs.should-build-wasm == 'true' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: npm run build:wasm
|
run: yarn build:wasm
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
@ -197,12 +197,12 @@ jobs:
|
|||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
id: deps-install
|
id: deps-install
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm install
|
run: yarn
|
||||||
|
|
||||||
- name: Cache Playwright Browsers
|
- name: Cache Playwright Browsers
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
@ -210,32 +210,27 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.cache/ms-playwright/
|
~/.cache/ms-playwright/
|
||||||
key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }}
|
key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }}
|
||||||
|
|
||||||
- name: Install Playwright Browsers
|
- name: Install Playwright Browsers
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm run playwright install --with-deps
|
run: yarn playwright install --with-deps
|
||||||
|
|
||||||
- name: build web
|
- name: build web
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm run tronb:vite:dev
|
run: yarn tronb:vite:dev
|
||||||
|
|
||||||
- name: Run ubuntu/chrome snapshots
|
- name: Run ubuntu/chrome snapshots
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
uses: nick-fields/retry@v3.0.2
|
uses: nick-fields/retry@v3.0.2
|
||||||
with:
|
with:
|
||||||
shell: bash
|
shell: bash
|
||||||
command: npm run test:snapshots
|
command: yarn test:snapshots
|
||||||
timeout_minutes: 30
|
timeout_minutes: 30
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
env:
|
env:
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }}
|
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }}
|
||||||
TAB_API_URL: ${{ secrets.TAB_API_URL }}
|
|
||||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
|
||||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
|
||||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
TARGET: web
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ needs.conditions.outputs.should-run == 'true' && !cancelled() && (success() || failure()) }}
|
if: ${{ needs.conditions.outputs.should-run == 'true' && !cancelled() && (success() || failure()) }}
|
||||||
@ -321,12 +316,12 @@ jobs:
|
|||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
id: deps-install
|
id: deps-install
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm install
|
run: yarn
|
||||||
|
|
||||||
- name: Cache Playwright Browsers
|
- name: Cache Playwright Browsers
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
@ -334,15 +329,15 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.cache/ms-playwright/
|
~/.cache/ms-playwright/
|
||||||
key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }}
|
key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }}
|
||||||
|
|
||||||
- name: Install Playwright Browsers
|
- name: Install Playwright Browsers
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm run playwright install --with-deps
|
run: yarn playwright install --with-deps
|
||||||
|
|
||||||
- name: Build web
|
- name: Build web
|
||||||
if: needs.conditions.outputs.should-run == 'true'
|
if: needs.conditions.outputs.should-run == 'true'
|
||||||
run: npm run tronb:vite:dev
|
run: yarn tronb:vite:dev
|
||||||
|
|
||||||
- name: Start Vector
|
- name: Start Vector
|
||||||
if: ${{ needs.conditions.outputs.should-run == 'true' && !contains(matrix.os, 'windows') }}
|
if: ${{ needs.conditions.outputs.should-run == 'true' && !contains(matrix.os, 'windows') }}
|
||||||
@ -370,11 +365,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
FAIL_ON_CONSOLE_ERRORS: true
|
FAIL_ON_CONSOLE_ERRORS: true
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
TAB_API_URL: ${{ secrets.TAB_API_URL }}
|
|
||||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
|
||||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
|
||||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
TARGET: desktop
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ needs.conditions.outputs.should-run == 'true' && always() }}
|
if: ${{ needs.conditions.outputs.should-run == 'true' && always() }}
|
||||||
|
@ -21,10 +21,10 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
- run: npm run generate:machine-api
|
- run: yarn generate:machine-api
|
||||||
- run: npm run fmt || true
|
- run: yarn fmt
|
||||||
- name: check for changes
|
- name: check for changes
|
||||||
id: git-check
|
id: git-check
|
||||||
run: |
|
run: |
|
||||||
|
30
.github/workflows/kcl-language-server.yml
vendored
30
.github/workflows/kcl-language-server.yml
vendored
@ -56,19 +56,21 @@ jobs:
|
|||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
npm install
|
yarn install
|
||||||
|
cd rust/kcl-language-server
|
||||||
|
yarn install
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npm run build
|
yarn build
|
||||||
npm run test-compile
|
yarn test-compile
|
||||||
ls -la dist
|
ls -la dist
|
||||||
xvfb-run -a npm run test
|
xvfb-run -a yarn test
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npm run test
|
yarn test
|
||||||
if: runner.os != 'Linux'
|
if: runner.os != 'Linux'
|
||||||
build-release:
|
build-release:
|
||||||
strategy:
|
strategy:
|
||||||
@ -181,20 +183,19 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
# npm will symlink which will cause issues w tarballing later
|
|
||||||
yarn install
|
yarn install
|
||||||
|
|
||||||
- name: Package Extension (release)
|
- name: Package Extension (release)
|
||||||
if: startsWith(github.event.ref, 'refs/tags/')
|
if: startsWith(github.event.ref, 'refs/tags/')
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }}
|
npx vsce package -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }}
|
||||||
|
|
||||||
- name: Package Extension (nightly)
|
- name: Package Extension (nightly)
|
||||||
if: startsWith(github.event.ref, 'refs/tags/') == false
|
if: startsWith(github.event.ref, 'refs/tags/') == false
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} --pre-release
|
npx vsce package -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} --pre-release
|
||||||
|
|
||||||
- name: remove server
|
- name: remove server
|
||||||
if: matrix.target == 'x86_64-unknown-linux-gnu'
|
if: matrix.target == 'x86_64-unknown-linux-gnu'
|
||||||
@ -206,13 +207,13 @@ jobs:
|
|||||||
if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/')
|
if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/')
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o ../build/kcl-language-server-no-server.vsix
|
npx vsce package -o ../build/kcl-language-server-no-server.vsix
|
||||||
|
|
||||||
- name: Package Extension (no server, nightly)
|
- name: Package Extension (no server, nightly)
|
||||||
if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/') == false
|
if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/') == false
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o ../build/kcl-language-server-no-server.vsix --pre-release
|
npx vsce package -o ../build/kcl-language-server-no-server.vsix --pre-release
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@ -243,8 +244,8 @@ jobs:
|
|||||||
lld \
|
lld \
|
||||||
musl-dev \
|
musl-dev \
|
||||||
nodejs \
|
nodejs \
|
||||||
npm \
|
yarn \
|
||||||
yarn
|
npm
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -271,20 +272,19 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
# npm will symlink which will cause issues w tarballing later
|
|
||||||
yarn install
|
yarn install
|
||||||
|
|
||||||
- name: Package Extension (release)
|
- name: Package Extension (release)
|
||||||
if: startsWith(github.event.ref, 'refs/tags/')
|
if: startsWith(github.event.ref, 'refs/tags/')
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64
|
npx vsce package -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64
|
||||||
|
|
||||||
- name: Package Extension (release)
|
- name: Package Extension (release)
|
||||||
if: startsWith(github.event.ref, 'refs/tags/') == false
|
if: startsWith(github.event.ref, 'refs/tags/') == false
|
||||||
run: |
|
run: |
|
||||||
cd rust/kcl-language-server
|
cd rust/kcl-language-server
|
||||||
npx vsce package --yarn -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 --pre-release
|
npx vsce package -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 --pre-release
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
55
.github/workflows/nix.yml
vendored
55
.github/workflows/nix.yml
vendored
@ -1,55 +0,0 @@
|
|||||||
name: Test Nix Flake
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
jobs:
|
|
||||||
nix-flake-check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- uses: cachix/install-nix-action@v31
|
|
||||||
with:
|
|
||||||
nix_path: nixpkgs=channel:nixos-unstable
|
|
||||||
|
|
||||||
- name: nix flake check for all platforms
|
|
||||||
run: |
|
|
||||||
nix flake check --all-systems
|
|
||||||
|
|
||||||
nix-build-linux:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- uses: cachix/install-nix-action@v31
|
|
||||||
with:
|
|
||||||
nix_path: nixpkgs=channel:nixos-unstable
|
|
||||||
|
|
||||||
- name: nix build . for x86_64-linux
|
|
||||||
run: nix build .
|
|
||||||
|
|
||||||
nix-build-macos:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- uses: cachix/install-nix-action@v31
|
|
||||||
with:
|
|
||||||
nix_path: nixpkgs=channel:nixos-unstable
|
|
||||||
|
|
||||||
- name: nix build . for x86_64-darwin
|
|
||||||
run: nix build .
|
|
||||||
|
|
6
.github/workflows/publish-apps-release.yml
vendored
6
.github/workflows/publish-apps-release.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- name: Find tag workflow id
|
- name: Find tag workflow id
|
||||||
id: tag_workflow_id
|
id: tag_workflow_id
|
||||||
@ -105,7 +105,7 @@ jobs:
|
|||||||
- name: Override release notes
|
- name: Override release notes
|
||||||
env:
|
env:
|
||||||
NOTES: ${{ github.event.release.body }}
|
NOTES: ${{ github.event.release.body }}
|
||||||
run: npm run files:set-notes
|
run: yarn files:set-notes
|
||||||
|
|
||||||
- name: Authenticate to Google Cloud
|
- name: Authenticate to Google Cloud
|
||||||
uses: 'google-github-actions/auth@v2.1.8'
|
uses: 'google-github-actions/auth@v2.1.8'
|
||||||
@ -126,7 +126,7 @@ jobs:
|
|||||||
destination: 'dl.kittycad.io/releases/modeling-app'
|
destination: 'dl.kittycad.io/releases/modeling-app'
|
||||||
|
|
||||||
- name: Invalidate bucket cache on latest*.yml and last_download.json files
|
- name: Invalidate bucket cache on latest*.yml and last_download.json files
|
||||||
run: npm run files:invalidate-bucket
|
run: yarn files:invalidate-bucket
|
||||||
|
|
||||||
- name: Upload release files to Github
|
- name: Upload release files to Github
|
||||||
if: ${{ github.event_name == 'release' }}
|
if: ${{ github.event_name == 'release' }}
|
||||||
|
74
.github/workflows/static-analysis.yml
vendored
74
.github/workflows/static-analysis.yml
vendored
@ -16,18 +16,18 @@ permissions:
|
|||||||
actions: read
|
actions: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
npm-fmt-check:
|
yarn-fmt-check:
|
||||||
runs-on: 'ubuntu-22.04'
|
runs-on: 'ubuntu-22.04'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
- run: npm run fmt-check
|
- run: yarn fmt-check
|
||||||
|
|
||||||
npm-build-wasm:
|
yarn-build-wasm:
|
||||||
# Build the wasm blob once on the fastest runner.
|
# Build the wasm blob once on the fastest runner.
|
||||||
runs-on: runs-on=${{ github.run_id }}/family=i7ie.2xlarge/image=ubuntu22-full-x64
|
runs-on: runs-on=${{ github.run_id }}/family=i7ie.2xlarge/image=ubuntu22-full-x64
|
||||||
steps:
|
steps:
|
||||||
@ -36,10 +36,10 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install
|
run: yarn install
|
||||||
|
|
||||||
- name: Use correct Rust toolchain
|
- name: Use correct Rust toolchain
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -62,7 +62,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build Wasm
|
- name: Build Wasm
|
||||||
shell: bash
|
shell: bash
|
||||||
run: npm run build:wasm
|
run: yarn build:wasm
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
@ -76,17 +76,17 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
rust/kcl-lib/bindings/*
|
rust/kcl-lib/bindings/*
|
||||||
|
|
||||||
npm-tsc:
|
yarn-tsc:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: npm-build-wasm
|
needs: yarn-build-wasm
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
@ -104,19 +104,19 @@ jobs:
|
|||||||
mkdir rust/kcl-lib/bindings
|
mkdir rust/kcl-lib/bindings
|
||||||
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
||||||
|
|
||||||
- run: npm run tsc
|
- run: yarn tsc
|
||||||
|
|
||||||
npm-lint:
|
yarn-lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: npm-build-wasm
|
needs: yarn-build-wasm
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
@ -134,19 +134,19 @@ jobs:
|
|||||||
mkdir rust/kcl-lib/bindings
|
mkdir rust/kcl-lib/bindings
|
||||||
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
||||||
|
|
||||||
- run: npm run lint
|
- run: yarn lint
|
||||||
|
|
||||||
npm-circular-dependencies:
|
yarn-circular-dependencies:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: npm-build-wasm
|
needs: yarn-build-wasm
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
@ -164,7 +164,7 @@ jobs:
|
|||||||
mkdir rust/kcl-lib/bindings
|
mkdir rust/kcl-lib/bindings
|
||||||
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
||||||
|
|
||||||
- run: npm run circular-deps:diff
|
- run: yarn circular-deps:diff
|
||||||
|
|
||||||
python-codespell:
|
python-codespell:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
@ -179,18 +179,18 @@ jobs:
|
|||||||
- name: Run codespell
|
- name: Run codespell
|
||||||
run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration.
|
run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration.
|
||||||
|
|
||||||
npm-unit-test-kcl-samples:
|
yarn-unit-test-kcl-samples:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: npm-build-wasm
|
needs: yarn-build-wasm
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
- uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc
|
- uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc
|
||||||
with:
|
with:
|
||||||
tool: wasm-pack
|
tool: wasm-pack
|
||||||
@ -211,31 +211,31 @@ jobs:
|
|||||||
mkdir rust/kcl-lib/bindings
|
mkdir rust/kcl-lib/bindings
|
||||||
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
||||||
|
|
||||||
- run: npm run simpleserver:bg
|
- run: yarn simpleserver:bg
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
|
|
||||||
- name: Install Chromium Browser
|
- name: Install Chromium Browser
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
run: npm run playwright install chromium --with-deps
|
run: yarn playwright install chromium --with-deps
|
||||||
|
|
||||||
- name: run unit tests for kcl samples
|
- name: run unit tests for kcl samples
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
run: npm run test:unit:kcl-samples
|
run: yarn test:unit:kcl-samples
|
||||||
env:
|
env:
|
||||||
VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
|
|
||||||
npm-unit-test:
|
yarn-unit-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: npm-build-wasm
|
needs: yarn-build-wasm
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'yarn'
|
||||||
|
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
- uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc
|
- uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc
|
||||||
with:
|
with:
|
||||||
tool: wasm-pack
|
tool: wasm-pack
|
||||||
@ -256,16 +256,16 @@ jobs:
|
|||||||
mkdir rust/kcl-lib/bindings
|
mkdir rust/kcl-lib/bindings
|
||||||
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/
|
||||||
|
|
||||||
- run: npm run simpleserver:bg
|
- run: yarn simpleserver:bg
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
|
|
||||||
- name: Install Chromium Browser
|
- name: Install Chromium Browser
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
run: npm run playwright install chromium --with-deps
|
run: yarn playwright install chromium --with-deps
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
|
||||||
run: xvfb-run -a npm run test:unit
|
run: xvfb-run -a yarn test:unit
|
||||||
env:
|
env:
|
||||||
VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
|
|
||||||
|
2
.github/workflows/tag-nightly.yml
vendored
2
.github/workflows/tag-nightly.yml
vendored
@ -27,7 +27,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
|
|
||||||
- run: npm install
|
- run: yarn install
|
||||||
|
|
||||||
- name: Push tag
|
- name: Push tag
|
||||||
run: |
|
run: |
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -26,12 +26,10 @@ yarn-error.log*
|
|||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
.helix
|
.helix
|
||||||
result
|
|
||||||
|
|
||||||
# rust
|
# rust
|
||||||
rust/target
|
rust/target
|
||||||
rust/kcl-lib/bindings
|
rust/kcl-lib/bindings
|
||||||
rust/kcl-language-server/server
|
|
||||||
public/kcl_wasm_lib_bg.wasm
|
public/kcl_wasm_lib_bg.wasm
|
||||||
rust/lcov.info
|
rust/lcov.info
|
||||||
rust/kcl-wasm-lib/pkg
|
rust/kcl-wasm-lib/pkg
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
|
|
||||||
npm run fmt-check
|
yarn fmt-check
|
||||||
|
51
Makefile
51
Makefile
@ -17,26 +17,31 @@ WASM_PACK ?= $(USERPROFILE)/.cargo/bin/wasm-pack.exe
|
|||||||
else
|
else
|
||||||
CARGO ?= ~/.cargo/bin/cargo
|
CARGO ?= ~/.cargo/bin/cargo
|
||||||
WASM_PACK ?= ~/.cargo/bin/wasm-pack
|
WASM_PACK ?= ~/.cargo/bin/wasm-pack
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install: node_modules/.package-lock.json $(CARGO) $(WASM_PACK) ## Install dependencies
|
install: node_modules/.yarn-integrity $(CARGO) $(WASM_PACK) ## Install dependencies
|
||||||
|
|
||||||
node_modules/.package-lock.json: package.json package-lock.json
|
node_modules/.yarn-integrity: package.json yarn.lock
|
||||||
npm install
|
yarn install
|
||||||
|
ifdef POWERSHELL
|
||||||
|
@ type nul > $@
|
||||||
|
else
|
||||||
|
@ touch $@
|
||||||
|
endif
|
||||||
|
|
||||||
$(CARGO):
|
$(CARGO):
|
||||||
ifdef WINDOWS
|
ifdef WINDOWS
|
||||||
npm run install:rust:windows
|
yarn install:rust:windows
|
||||||
else
|
else
|
||||||
npm run install:rust
|
yarn install:rust
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(WASM_PACK):
|
$(WASM_PACK):
|
||||||
ifdef WINDOWS
|
ifdef WINDOWS
|
||||||
npm run install:wasm-pack:cargo
|
yarn install:wasm-pack:cargo
|
||||||
else
|
else
|
||||||
npm run install:wasm-pack:sh
|
yarn install:wasm-pack:sh
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -60,16 +65,16 @@ build-desktop: install public/kcl_wasm_lib_bg.wasm .vite/build/main.js
|
|||||||
|
|
||||||
public/kcl_wasm_lib_bg.wasm: $(CARGO_SOURCES) $(RUST_SOURCES)
|
public/kcl_wasm_lib_bg.wasm: $(CARGO_SOURCES) $(RUST_SOURCES)
|
||||||
ifdef WINDOWS
|
ifdef WINDOWS
|
||||||
npm run build:wasm:dev:windows
|
yarn build:wasm:dev:windows
|
||||||
else
|
else
|
||||||
npm run build:wasm:dev
|
yarn build:wasm:dev
|
||||||
endif
|
endif
|
||||||
|
|
||||||
build/index.html: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES)
|
build/index.html: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES)
|
||||||
npm run build:local
|
yarn build:local
|
||||||
|
|
||||||
.vite/build/main.js: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES)
|
.vite/build/main.js: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES)
|
||||||
npm run tronb:vite:dev
|
yarn tronb:vite:dev
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# CHECK
|
# CHECK
|
||||||
@ -79,12 +84,12 @@ check: format lint
|
|||||||
|
|
||||||
.PHONY: format
|
.PHONY: format
|
||||||
format: install ## Format the code
|
format: install ## Format the code
|
||||||
npm run fmt
|
yarn fmt
|
||||||
|
|
||||||
.PHONY: lint
|
.PHONY: lint
|
||||||
lint: install ## Lint the code
|
lint: install ## Lint the code
|
||||||
npm run tsc
|
yarn tsc
|
||||||
npm run lint
|
yarn lint
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# RUN
|
# RUN
|
||||||
@ -96,11 +101,11 @@ run: run-$(TARGET)
|
|||||||
|
|
||||||
.PHONY: run-web
|
.PHONY: run-web
|
||||||
run-web: install build-web ## Start the web app
|
run-web: install build-web ## Start the web app
|
||||||
npm run start
|
yarn start
|
||||||
|
|
||||||
.PHONY: run-desktop
|
.PHONY: run-desktop
|
||||||
run-desktop: install build-desktop ## Start the desktop app
|
run-desktop: install build-desktop ## Start the desktop app
|
||||||
npm run tron:start
|
yarn tron:start
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# TEST
|
# TEST
|
||||||
@ -115,7 +120,7 @@ test: test-unit test-e2e
|
|||||||
.PHONY: test-unit
|
.PHONY: test-unit
|
||||||
test-unit: install ## Run the unit tests
|
test-unit: install ## Run the unit tests
|
||||||
@ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 )
|
@ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 )
|
||||||
npm run test:unit
|
yarn test:unit
|
||||||
|
|
||||||
.PHONY: test-e2e
|
.PHONY: test-e2e
|
||||||
test-e2e: test-e2e-$(TARGET)
|
test-e2e: test-e2e-$(TARGET)
|
||||||
@ -124,17 +129,17 @@ test-e2e: test-e2e-$(TARGET)
|
|||||||
test-e2e-web: install build-web ## Run the web e2e tests
|
test-e2e-web: install build-web ## Run the web e2e tests
|
||||||
@ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 )
|
@ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 )
|
||||||
ifdef E2E_GREP
|
ifdef E2E_GREP
|
||||||
npm run chrome:test -- --headed --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES)
|
yarn chrome:test --headed --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES)
|
||||||
else
|
else
|
||||||
npm run chrome:test -- --headed --workers='100%'
|
yarn chrome:test --headed --workers='100%'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: test-e2e-desktop
|
.PHONY: test-e2e-desktop
|
||||||
test-e2e-desktop: install build-desktop ## Run the desktop e2e tests
|
test-e2e-desktop: install build-desktop ## Run the desktop e2e tests
|
||||||
ifdef E2E_GREP
|
ifdef E2E_GREP
|
||||||
npm run test:playwright:electron -- --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES)
|
yarn test:playwright:electron --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES)
|
||||||
else
|
else
|
||||||
npm run test:playwright:electron -- --workers='100%'
|
yarn test:playwright:electron --workers='100%'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -169,5 +174,5 @@ endif
|
|||||||
# It should work for you other Linux users.
|
# It should work for you other Linux users.
|
||||||
lee-electron-test:
|
lee-electron-test:
|
||||||
Xephyr -br -ac -noreset -screen 1200x500 :2 &
|
Xephyr -br -ac -noreset -screen 1200x500 :2 &
|
||||||
DISPLAY=:2 NODE_ENV=development PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run tron:test -g "when using the file tree"
|
DISPLAY=:2 NODE_ENV=development PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn tron:test -g "when using the file tree"
|
||||||
killall Xephyr
|
killall Xephyr
|
||||||
|
80
README.md
80
README.md
@ -62,39 +62,39 @@ fnm use
|
|||||||
Install the NPM dependencies with:
|
Install the NPM dependencies with:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm install
|
yarn install
|
||||||
```
|
```
|
||||||
|
|
||||||
This project uses a lot of Rust compiled to [WASM](https://webassembly.org/) within it. We have package scripts to run rustup, see `package.json` for reference:
|
This project uses a lot of Rust compiled to [WASM](https://webassembly.org/) within it. We have package scripts to run rustup, see `package.json` for reference:
|
||||||
|
|
||||||
```
|
```
|
||||||
# macOS/Linux
|
# macOS/Linux
|
||||||
npm run install:rust
|
yarn install:rust
|
||||||
npm run install:wasm-pack:sh
|
yarn install:wasm-pack:sh
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
npm run install:rust:windows
|
yarn install:rust:windows
|
||||||
npm run install:wasm-pack:cargo
|
yarn install:wasm-pack:cargo
|
||||||
```
|
```
|
||||||
|
|
||||||
Then to build the WASM layer, run:
|
Then to build the WASM layer, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
# macOS/Linux
|
# macOS/Linux
|
||||||
npm run build:wasm
|
yarn build:wasm
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
npm run build:wasm:windows
|
yarn build:wasm:windows
|
||||||
```
|
```
|
||||||
|
|
||||||
Or if you have the `gh` cli installed and want to download the latest main wasm bundle. Note that on Windows, you need to associate .ps1 files with PowerShell, which can be done via the right click menu, selecting `C:\Program Files\PowerShell\7\pwsh.exe`, and you can install tools like `gh` via `npm run install:tools:windows`.
|
Or if you have the `gh` cli installed and want to download the latest main wasm bundle. Note that on Windows, you need to associate .ps1 files with PowerShell, which can be done via the right click menu, selecting `C:\Program Files\PowerShell\7\pwsh.exe`, and you can install tools like `gh` via `yarn install:tools:windows`.
|
||||||
|
|
||||||
```
|
```
|
||||||
# macOS/Linux
|
# macOS/Linux
|
||||||
npm run fetch:wasm
|
yarn fetch:wasm
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
npm run fetch:wasm:windows
|
yarn fetch:wasm:windows
|
||||||
```
|
```
|
||||||
|
|
||||||
That will build the WASM binary and put in the `public` dir (though gitignored).
|
That will build the WASM binary and put in the `public` dir (though gitignored).
|
||||||
@ -102,7 +102,7 @@ That will build the WASM binary and put in the `public` dir (though gitignored).
|
|||||||
Finally, to run the web app only, run:
|
Finally, to run the web app only, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm start
|
yarn start
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're not a Zoo employee you won't be able to access the dev environment, you should copy everything from `.env.production` to `.env.development.local` to make it point to production instead, then when you navigate to `localhost:3000` the easiest way to sign in is to paste `localStorage.setItem('TOKEN_PERSIST_KEY', "your-token-from-https://zoo.dev/account/api-tokens")` replacing the with a real token from https://zoo.dev/account/api-tokens of course, then navigate to `localhost:3000` again. Note that navigating to `localhost:3000/signin` removes your token so you will need to set the token again.
|
If you're not a Zoo employee you won't be able to access the dev environment, you should copy everything from `.env.production` to `.env.development.local` to make it point to production instead, then when you navigate to `localhost:3000` the easiest way to sign in is to paste `localStorage.setItem('TOKEN_PERSIST_KEY', "your-token-from-https://zoo.dev/account/api-tokens")` replacing the with a real token from https://zoo.dev/account/api-tokens of course, then navigate to `localhost:3000` again. Note that navigating to `localhost:3000/signin` removes your token so you will need to set the token again.
|
||||||
@ -122,17 +122,17 @@ Third-Party Cookies".
|
|||||||
|
|
||||||
## Desktop
|
## Desktop
|
||||||
|
|
||||||
To spin up the desktop app, `npm install` and `npm run build:wasm` need to have been done before hand then:
|
To spin up the desktop app, `yarn install` and `yarn build:wasm` need to have been done before hand then:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run tron:start
|
yarn tron:start
|
||||||
```
|
```
|
||||||
|
|
||||||
This will start the application and hot-reload on changes.
|
This will start the application and hot-reload on changes.
|
||||||
|
|
||||||
Devtools can be opened with the usual Command-Option-I (macOS) or Ctrl-Shift-I (Linux and Windows).
|
Devtools can be opened with the usual Command-Option-I (macOS) or Ctrl-Shift-I (Linux and Windows).
|
||||||
|
|
||||||
To package the app for your platform with electron-builder, run `npm run tronb:package:dev` (or `npm run tronb:package:prod` to point to the .env.production variables).
|
To package the app for your platform with electron-builder, run `yarn tronb:package:dev` (or `yarn tronb:package:prod` to point to the .env.production variables).
|
||||||
|
|
||||||
## Checking out commits / Bisecting
|
## Checking out commits / Bisecting
|
||||||
|
|
||||||
@ -141,9 +141,9 @@ Which commands from setup are one off vs. need to be run every time?
|
|||||||
The following will need to be run when checking out a new commit and guarantees the build is not stale:
|
The following will need to be run when checking out a new commit and guarantees the build is not stale:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install
|
yarn install
|
||||||
npm run build:wasm
|
yarn build:wasm
|
||||||
npm start # or npm run build:local && npm run serve for slower but more production-like build
|
yarn start # or yarn build:local && yarn serve for slower but more production-like build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Before submitting a PR
|
## Before submitting a PR
|
||||||
@ -153,10 +153,10 @@ Before you submit a contribution PR to this repo, please ensure that:
|
|||||||
- There is a corresponding issue for the changes you want to make, so that discussion of approach can be had before work begins.
|
- There is a corresponding issue for the changes you want to make, so that discussion of approach can be had before work begins.
|
||||||
- You have separated out refactoring commits from feature commits as much as possible
|
- You have separated out refactoring commits from feature commits as much as possible
|
||||||
- You have run all of the following commands locally:
|
- You have run all of the following commands locally:
|
||||||
- `npm run fmt`
|
- `yarn fmt`
|
||||||
- `npm run tsc`
|
- `yarn tsc`
|
||||||
- `npm run test`
|
- `yarn test`
|
||||||
- Here they are all together: `npm run fmt && npm run tsc && npm run test`
|
- Here they are all together: `yarn fmt && yarn tsc && yarn test`
|
||||||
|
|
||||||
## Release a new version
|
## Release a new version
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ docker run --network host --rm --init -it playwright/chrome:playwright-x.xx.x
|
|||||||
and in another terminal, run:
|
and in another terminal, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run playwright test --project="Google Chrome" <test suite>
|
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn playwright test --project="Google Chrome" <test suite>
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Specific example
|
#### Specific example
|
||||||
@ -280,7 +280,7 @@ docker run --network host --rm --init -it playwright/chrome:playwright-1.46.0
|
|||||||
and in another terminal, run:
|
and in another terminal, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run playwright test --project="Google Chrome" e2e/playwright/command-bar-tests.spec.ts
|
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn playwright test --project="Google Chrome" e2e/playwright/command-bar-tests.spec.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
run a specific test change the test from `test('...` to `test.only('...`
|
run a specific test change the test from `test('...` to `test.only('...`
|
||||||
@ -291,13 +291,13 @@ run a specific test change the test from `test('...` to `test.only('...`
|
|||||||
run headed
|
run headed
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run playwright test --headed
|
yarn playwright test --headed
|
||||||
```
|
```
|
||||||
|
|
||||||
run with step through debugger
|
run with step through debugger
|
||||||
|
|
||||||
```
|
```
|
||||||
PWDEBUG=1 npm run playwright test
|
PWDEBUG=1 yarn playwright test
|
||||||
```
|
```
|
||||||
|
|
||||||
However, if you want a debugger I recommend using VSCode and the `playwright` extension, as the above command is a cruder debugger that steps into every function call which is annoying.
|
However, if you want a debugger I recommend using VSCode and the `playwright` extension, as the above command is a cruder debugger that steps into every function call which is annoying.
|
||||||
@ -308,7 +308,7 @@ Or comment out browsers in `playwright.config.ts`.
|
|||||||
|
|
||||||
note chromium has encoder compat issues which is why were testing against the branded 'Google Chrome'
|
note chromium has encoder compat issues which is why were testing against the branded 'Google Chrome'
|
||||||
|
|
||||||
You may consider using the VSCode extension, it's useful for running individual threads, but some some reason the "record a test" is locked to chromium with we can't use. A work around is to us the CI `npm run playwright codegen -b wk --load-storage ./store localhost:3000`
|
You may consider using the VSCode extension, it's useful for running individual threads, but some some reason the "record a test" is locked to chromium with we can't use. A work around is to us the CI `yarn playwright codegen -b wk --load-storage ./store localhost:3000`
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
@ -351,21 +351,21 @@ However because much of our tests involve clicking in the stream at specific loc
|
|||||||
If you already haven't, run the following:
|
If you already haven't, run the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm
|
yarn
|
||||||
npm run build:wasm
|
yarn build:wasm
|
||||||
npm start
|
yarn start
|
||||||
```
|
```
|
||||||
|
|
||||||
and finally:
|
and finally:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test:unit
|
yarn test:unit
|
||||||
```
|
```
|
||||||
|
|
||||||
For individual testing:
|
For individual testing:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test abstractSyntaxTree -t "unexpected closed curly brace" --silent=false
|
yarn test abstractSyntaxTree -t "unexpected closed curly brace" --silent=false
|
||||||
```
|
```
|
||||||
|
|
||||||
Which will run our suite of [Vitest unit](https://vitest.dev/) and [React Testing Library E2E](https://testing-library.com/docs/react-testing-library/intro) tests, in interactive mode by default.
|
Which will run our suite of [Vitest unit](https://vitest.dev/) and [React Testing Library E2E](https://testing-library.com/docs/react-testing-library/intro) tests, in interactive mode by default.
|
||||||
@ -439,16 +439,16 @@ Part of the CI CD pipeline performs static analysis on the code. Use the followi
|
|||||||
The following set of commands should get us closer to one and done commands to instantly retest issues.
|
The following set of commands should get us closer to one and done commands to instantly retest issues.
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test-setup
|
yarn test-setup
|
||||||
```
|
```
|
||||||
|
|
||||||
> Gotcha, are packages up to date and is the wasm built?
|
> Gotcha, are packages up to date and is the wasm built?
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run tsc
|
yarn tsc
|
||||||
npm run fmt-check
|
yarn fmt-check
|
||||||
npm run lint
|
yarn lint
|
||||||
npm run test:unit:local
|
yarn test:unit:local
|
||||||
```
|
```
|
||||||
|
|
||||||
> Gotcha: Our unit tests have integration tests in them. You need to run a localhost server to run the unit tests.
|
> Gotcha: Our unit tests have integration tests in them. You need to run a localhost server to run the unit tests.
|
||||||
@ -460,10 +460,10 @@ npm run test:unit:local
|
|||||||
These E2E tests run in electron. There are tests that are skipped if they are ran in a windows, linux, or macos environment. We can use playwright tags to implement test skipping.
|
These E2E tests run in electron. There are tests that are skipped if they are ran in a windows, linux, or macos environment. We can use playwright tags to implement test skipping.
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test:playwright:electron:local
|
yarn test:playwright:electron:local
|
||||||
npm run test:playwright:electron:windows:local
|
yarn test:playwright:electron:windows:local
|
||||||
npm run test:playwright:electron:macos:local
|
yarn test:playwright:electron:macos:local
|
||||||
npm run test:playwright:electron:ubuntu:local
|
yarn test:playwright:electron:ubuntu:local
|
||||||
```
|
```
|
||||||
|
|
||||||
> Why does it say local? The CI CD commands that run in the pipeline cannot be ran locally. A single command will not properly setup the testing environment locally.
|
> Why does it say local? The CI CD commands that run in the pipeline cannot be ran locally. A single command will not properly setup the testing environment locally.
|
||||||
|
@ -28,11 +28,11 @@ angledLine(
|
|||||||
|----------|------|-------------|----------|
|
|----------|------|-------------|----------|
|
||||||
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
|
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
|
||||||
| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes |
|
| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes |
|
||||||
| `length` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
|
| `length` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `lengthAbsoluteEndX`, `lengthAbsoluteEndY` can be given. | No |
|
||||||
| `lengthX` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
|
| `lengthX` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `lengthAbsoluteEndX`, `lengthAbsoluteEndY` can be given. | No |
|
||||||
| `lengthY` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
|
| `lengthY` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `lengthAbsoluteEndX`, `lengthAbsoluteEndY` can be given. | No |
|
||||||
| `endAbsoluteX` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
|
| `endAbsoluteX` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `lengthAbsoluteEndX`, `lengthAbsoluteEndY` can be given. | No |
|
||||||
| `endAbsoluteY` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
|
| `endAbsoluteY` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `lengthAbsoluteEndX`, `lengthAbsoluteEndY` can be given. | No |
|
||||||
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
|
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
|
||||||
|
|
||||||
### Returns
|
### Returns
|
||||||
|
File diff suppressed because one or more lines are too long
@ -65,7 +65,7 @@ case = startSketchOn(-XZ)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
|
80
docs/kcl/import.md
Normal file
80
docs/kcl/import.md
Normal file
File diff suppressed because one or more lines are too long
@ -77,8 +77,6 @@ layout: manual
|
|||||||
* [`helix`](kcl/std-helix)
|
* [`helix`](kcl/std-helix)
|
||||||
* [`hole`](kcl/hole)
|
* [`hole`](kcl/hole)
|
||||||
* [`hollow`](kcl/hollow)
|
* [`hollow`](kcl/hollow)
|
||||||
* [`intersect`](kcl/intersect)
|
|
||||||
* [`involuteCircular`](kcl/involuteCircular)
|
|
||||||
* [`lastSegX`](kcl/lastSegX)
|
* [`lastSegX`](kcl/lastSegX)
|
||||||
* [`lastSegY`](kcl/lastSegY)
|
* [`lastSegY`](kcl/lastSegY)
|
||||||
* [`legAngX`](kcl/legAngX)
|
* [`legAngX`](kcl/legAngX)
|
||||||
@ -125,14 +123,14 @@ layout: manual
|
|||||||
* [`sqrt`](kcl/sqrt)
|
* [`sqrt`](kcl/sqrt)
|
||||||
* [`startProfileAt`](kcl/startProfileAt)
|
* [`startProfileAt`](kcl/startProfileAt)
|
||||||
* [`startSketchOn`](kcl/startSketchOn)
|
* [`startSketchOn`](kcl/startSketchOn)
|
||||||
* [`subtract`](kcl/subtract)
|
|
||||||
* [`sweep`](kcl/sweep)
|
* [`sweep`](kcl/sweep)
|
||||||
* [`tangentToEnd`](kcl/tangentToEnd)
|
* [`tangentToEnd`](kcl/tangentToEnd)
|
||||||
* [`tangentialArc`](kcl/tangentialArc)
|
* [`tangentialArc`](kcl/tangentialArc)
|
||||||
|
* [`tangentialArcTo`](kcl/tangentialArcTo)
|
||||||
|
* [`tangentialArcToRelative`](kcl/tangentialArcToRelative)
|
||||||
* [`toDegrees`](kcl/toDegrees)
|
* [`toDegrees`](kcl/toDegrees)
|
||||||
* [`toRadians`](kcl/toRadians)
|
* [`toRadians`](kcl/toRadians)
|
||||||
* [`translate`](kcl/translate)
|
* [`translate`](kcl/translate)
|
||||||
* [`union`](kcl/union)
|
|
||||||
* [`xLine`](kcl/xLine)
|
* [`xLine`](kcl/xLine)
|
||||||
* [`yLine`](kcl/yLine)
|
* [`yLine`](kcl/yLine)
|
||||||
* **std::math**
|
* **std::math**
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -57,7 +57,7 @@ case = startSketchOn(XY)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ case = startSketchOn(XY)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -30,7 +30,7 @@ segLen(tag: TagIdentifier): number
|
|||||||
exampleSketch = startSketchOn(XZ)
|
exampleSketch = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> angledLine(angle = 60, length = 10, tag = $thing)
|
|> angledLine(angle = 60, length = 10, tag = $thing)
|
||||||
|> tangentialArc(angle = -120, radius = 5)
|
|> tangentialArc({ offset = -120, radius = 5 }, %)
|
||||||
|> angledLine(angle = -60, length = segLen(thing))
|
|> angledLine(angle = -60, length = segLen(thing))
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ case = startSketchOn(-XZ)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ case = startSketchOn(XY)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ case = startSketchOn(XY)
|
|||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line(end = [2 * size, 0])
|
||||||
|> line(end = [0, 2 * size])
|
|> line(end = [0, 2 * size])
|
||||||
|> tangentialArc(endAbsolute = [-size, size])
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 65)
|
|> extrude(length = 65)
|
||||||
|
|
||||||
|
@ -103,9 +103,9 @@ example = extrude(sketch001, length = 10)
|
|||||||
sketch0011 = startSketchOn(XY)
|
sketch0011 = startSketchOn(XY)
|
||||||
|> startProfileAt([6.77, 0], %)
|
|> startProfileAt([6.77, 0], %)
|
||||||
|> yLine(length = 1.27)
|
|> yLine(length = 1.27)
|
||||||
|> tangentialArc(endAbsolute = [5.96, 2.37])
|
|> tangentialArcTo([5.96, 2.37], %)
|
||||||
|> tangentialArc(endAbsolute = [-6.2, 2.44])
|
|> tangentialArcTo([-6.2, 2.44], %)
|
||||||
|> tangentialArc(endAbsolute = [-6.6, 1.82])
|
|> tangentialArcTo([-6.6, 1.82], %)
|
||||||
|> yLine(length = -1.82)
|
|> yLine(length = -1.82)
|
||||||
|> mirror2d( axis = X )
|
|> mirror2d( axis = X )
|
||||||
|> extrude(length = 10)
|
|> extrude(length = 10)
|
||||||
|
32888
docs/kcl/std.json
32888
docs/kcl/std.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -31,9 +31,9 @@ tangentToEnd(tag: TagIdentifier): number
|
|||||||
pillSketch = startSketchOn(XZ)
|
pillSketch = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [20, 0])
|
|> line(end = [20, 0])
|
||||||
|> tangentialArc(end = [0, 10], tag = $arc1)
|
|> tangentialArcToRelative([0, 10], %, $arc1)
|
||||||
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
||||||
|> tangentialArc(end = [0, -10])
|
|> tangentialArcToRelative([0, -10], %)
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
pillExtrude = extrude(pillSketch, length = 10)
|
pillExtrude = extrude(pillSketch, length = 10)
|
||||||
@ -46,9 +46,9 @@ pillExtrude = extrude(pillSketch, length = 10)
|
|||||||
pillSketch = startSketchOn(XZ)
|
pillSketch = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [0, 20])
|
|> line(end = [0, 20])
|
||||||
|> tangentialArc(endAbsolute = [10, 20], tag = $arc1)
|
|> tangentialArcTo([10, 20], %, $arc1)
|
||||||
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
||||||
|> tangentialArc(end = [-10, 0])
|
|> tangentialArcToRelative([-10, 0], %)
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
pillExtrude = extrude(pillSketch, length = 10)
|
pillExtrude = extrude(pillSketch, length = 10)
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -252,7 +252,7 @@ Data for an imported geometry.
|
|||||||
|
|
||||||
| Property | Type | Description | Required |
|
| Property | Type | Description | Required |
|
||||||
|----------|------|-------------|----------|
|
|----------|------|-------------|----------|
|
||||||
| `type` |enum: `ImportedGeometry`| | No |
|
| `type` |enum: [`ImportedGeometry`](/docs/kcl/types/ImportedGeometry)| | No |
|
||||||
| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
|
| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
|
||||||
| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
|
| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
|||||||
import { bracket } from '@e2e/playwright/fixtures/bracket'
|
import { bracket } from '@src/lib/exampleKcl'
|
||||||
import fsp from 'fs/promises'
|
import fsp from 'fs/promises'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
|
||||||
|
@ -920,7 +920,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -14.01], %)
|
|> startProfileAt([4.61, -14.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> close()`
|
|> close()`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@ -969,7 +969,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
|
|
||||||
// expect the code to have changed
|
// expect the code to have changed
|
||||||
await expect(page.locator('.cm-content')).toHaveText(
|
await expect(page.locator('.cm-content')).toHaveText(
|
||||||
`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close()extrude001 = extrude(sketch001, length = 5)`
|
`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArcTo([24.95, -5.38], %) |> close()extrude001 = extrude(sketch001, length = 5)`
|
||||||
)
|
)
|
||||||
|
|
||||||
// Now hit undo
|
// Now hit undo
|
||||||
@ -982,7 +982,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
.toHaveText(`sketch001 = startSketchOn(XZ)
|
.toHaveText(`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -14.01], %)
|
|> startProfileAt([4.61, -14.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> close()`)
|
|> close()`)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -998,7 +998,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
sketch001 = startSketchOn(XZ)
|
sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -10.01], %)
|
|> startProfileAt([4.61, -10.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
|> tangentialArcTo([24.95, -0.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`
|
|> extrude(length = 5)`
|
||||||
)
|
)
|
||||||
@ -1072,7 +1072,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
// we wait so it saves the code
|
// we wait so it saves the code
|
||||||
await page.waitForTimeout(800)
|
await page.waitForTimeout(800)
|
||||||
|
|
||||||
// drag tangentialArc handle
|
// drag tangentialArcTo handle
|
||||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||||
await page.dragAndDrop('#stream', '#stream', {
|
await page.dragAndDrop('#stream', '#stream', {
|
||||||
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
||||||
@ -1089,7 +1089,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([2.71, -2.71], %)
|
|> startProfileAt([2.71, -2.71], %)
|
||||||
|> line(end = [15.4, -2.78])
|
|> line(end = [15.4, -2.78])
|
||||||
|> tangentialArc(endAbsolute = [27.6, -3.05])
|
|> tangentialArcTo([27.6, -3.05], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`,
|
|> extrude(length = 5)`,
|
||||||
{ shouldNormalise: true }
|
{ shouldNormalise: true }
|
||||||
@ -1104,7 +1104,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([2.71, -2.71], %)
|
|> startProfileAt([2.71, -2.71], %)
|
||||||
|> line(end = [15.4, -2.78])
|
|> line(end = [15.4, -2.78])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
|> tangentialArcTo([24.95, -0.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`,
|
|> extrude(length = 5)`,
|
||||||
{ shouldNormalise: true }
|
{ shouldNormalise: true }
|
||||||
@ -1119,7 +1119,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([2.71, -2.71], %)
|
|> startProfileAt([2.71, -2.71], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
|> tangentialArcTo([24.95, -0.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`,
|
|> extrude(length = 5)`,
|
||||||
{ shouldNormalise: true }
|
{ shouldNormalise: true }
|
||||||
@ -1135,7 +1135,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -10.01], %)
|
|> startProfileAt([4.61, -10.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
|> tangentialArcTo([24.95, -0.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`,
|
|> extrude(length = 5)`,
|
||||||
{ shouldNormalise: true }
|
{ shouldNormalise: true }
|
||||||
@ -1144,7 +1144,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
`Can import a local OBJ file`,
|
`Can use the import stdlib function on a local OBJ file`,
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ page, context }, testInfo) => {
|
async ({ page, context }, testInfo) => {
|
||||||
test.fixme(orRunWhenFullSuiteEnabled())
|
test.fixme(orRunWhenFullSuiteEnabled())
|
||||||
@ -1194,7 +1194,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
.toBeLessThan(15)
|
.toBeLessThan(15)
|
||||||
})
|
})
|
||||||
await test.step(`Write the import function line`, async () => {
|
await test.step(`Write the import function line`, async () => {
|
||||||
await u.codeLocator.fill(`import 'cube.obj'\ncube`)
|
await u.codeLocator.fill(`import('cube.obj')`)
|
||||||
await page.waitForTimeout(800)
|
await page.waitForTimeout(800)
|
||||||
})
|
})
|
||||||
await test.step(`Reset the camera before checking`, async () => {
|
await test.step(`Reset the camera before checking`, async () => {
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
import fs from 'fs'
|
|
||||||
import path from 'path'
|
|
||||||
|
|
||||||
export const bracket = fs.readFileSync(
|
|
||||||
path.resolve(
|
|
||||||
__dirname,
|
|
||||||
'..',
|
|
||||||
'..',
|
|
||||||
'..',
|
|
||||||
'public',
|
|
||||||
'kcl-samples',
|
|
||||||
'bracket',
|
|
||||||
'main.kcl'
|
|
||||||
),
|
|
||||||
'utf8'
|
|
||||||
)
|
|
@ -99,6 +99,7 @@ export class HomePageFixture {
|
|||||||
createAndGoToProject = async (projectTitle = 'untitled') => {
|
createAndGoToProject = async (projectTitle = 'untitled') => {
|
||||||
await this.projectsLoaded()
|
await this.projectsLoaded()
|
||||||
await this.projectButtonNew.click()
|
await this.projectButtonNew.click()
|
||||||
|
await this.projectTextName.click()
|
||||||
await this.projectTextName.fill(projectTitle)
|
await this.projectTextName.fill(projectTitle)
|
||||||
await this.projectButtonContinue.click()
|
await this.projectButtonContinue.click()
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ export class SceneFixture {
|
|||||||
settled = async (cmdBar: CmdBarFixture) => {
|
settled = async (cmdBar: CmdBarFixture) => {
|
||||||
const u = await getUtils(this.page)
|
const u = await getUtils(this.page)
|
||||||
|
|
||||||
await expect(this.startEditSketchBtn).not.toBeDisabled({ timeout: 15_000 })
|
await expect(this.startEditSketchBtn).not.toBeDisabled()
|
||||||
await expect(this.startEditSketchBtn).toBeVisible()
|
await expect(this.startEditSketchBtn).toBeVisible()
|
||||||
|
|
||||||
await cmdBar.openCmdBar()
|
await cmdBar.openCmdBar()
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
import type { Reporter, TestCase, TestResult } from '@playwright/test/reporter'
|
|
||||||
|
|
||||||
class MyAPIReporter implements Reporter {
|
|
||||||
onTestEnd(test: TestCase, result: TestResult): void {
|
|
||||||
if (!process.env.TAB_API_URL || !process.env.TAB_API_KEY) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const payload = {
|
|
||||||
// Required information
|
|
||||||
project: 'https://github.com/KittyCAD/modeling-app',
|
|
||||||
branch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || '',
|
|
||||||
commit: process.env.CI_COMMIT_SHA || process.env.GITHUB_SHA || '',
|
|
||||||
test: test.titlePath().slice(2).join(' › '),
|
|
||||||
status: result.status,
|
|
||||||
// Optional information
|
|
||||||
duration: result.duration / 1000,
|
|
||||||
message: result.error?.stack,
|
|
||||||
target: process.env.TARGET || null,
|
|
||||||
platform: process.env.RUNNER_OS || process.platform,
|
|
||||||
// Extra test and result data
|
|
||||||
annotations: test.annotations.map((a) => a.type),
|
|
||||||
retries: result.retry,
|
|
||||||
// Extra environment variables
|
|
||||||
CI_COMMIT_SHA: process.env.CI_COMMIT_SHA || null,
|
|
||||||
CI_PR_NUMBER: process.env.CI_PR_NUMBER || null,
|
|
||||||
GITHUB_BASE_REF: process.env.GITHUB_BASE_REF || null,
|
|
||||||
GITHUB_EVENT_NAME: process.env.GITHUB_EVENT_NAME || null,
|
|
||||||
GITHUB_HEAD_REF: process.env.GITHUB_HEAD_REF || null,
|
|
||||||
GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || null,
|
|
||||||
GITHUB_REF: process.env.GITHUB_REF || null,
|
|
||||||
GITHUB_SHA: process.env.GITHUB_SHA || null,
|
|
||||||
GITHUB_WORKFLOW: process.env.GITHUB_WORKFLOW || null,
|
|
||||||
RUNNER_ARCH: process.env.RUNNER_ARCH || null,
|
|
||||||
}
|
|
||||||
|
|
||||||
void (async () => {
|
|
||||||
try {
|
|
||||||
const response = await fetch(`${process.env.TAB_API_URL}/api/results`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: new Headers({
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-API-Key': process.env.TAB_API_KEY || '',
|
|
||||||
}),
|
|
||||||
body: JSON.stringify(payload),
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!response.ok && !process.env.CI) {
|
|
||||||
console.error(
|
|
||||||
'TAB API - Failed to send test result:',
|
|
||||||
await response.text()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
if (!process.env.CI) {
|
|
||||||
console.error('TAB API - Unable to send test result')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default MyAPIReporter
|
|
@ -6,9 +6,7 @@ import type { NamedView } from '@rust/kcl-lib/bindings/NamedView'
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
createProject,
|
createProject,
|
||||||
orRunWhenFullSuiteEnabled,
|
perProjectsettingsToToml,
|
||||||
perProjectSettingsToToml,
|
|
||||||
runningOnMac,
|
|
||||||
tomlToPerProjectSettings,
|
tomlToPerProjectSettings,
|
||||||
} from '@e2e/playwright/test-utils'
|
} from '@e2e/playwright/test-utils'
|
||||||
import { expect, test } from '@e2e/playwright/zoo-test'
|
import { expect, test } from '@e2e/playwright/zoo-test'
|
||||||
@ -59,13 +57,11 @@ function tomlStringOverWriteNamedViewUuids(toml: string): string {
|
|||||||
settings.settings.app.named_views = remappedNamedViews
|
settings.settings.app.named_views = remappedNamedViews
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return perProjectSettingsToToml(settings)
|
return perProjectsettingsToToml(settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
test.describe('Named view tests', () => {
|
test.describe('Named view tests', () => {
|
||||||
if (runningOnMac()) {
|
test.skip() // TODO: Jace is working on these
|
||||||
test.fixme(orRunWhenFullSuiteEnabled())
|
|
||||||
}
|
|
||||||
test('Verify project.toml is not created', async ({ page }, testInfo) => {
|
test('Verify project.toml is not created', async ({ page }, testInfo) => {
|
||||||
// Create project and load it
|
// Create project and load it
|
||||||
const projectName = 'named-views'
|
const projectName = 'named-views'
|
||||||
@ -109,9 +105,6 @@ test.describe('Named view tests', () => {
|
|||||||
PROJECT_SETTINGS_FILE_NAME
|
PROJECT_SETTINGS_FILE_NAME
|
||||||
)
|
)
|
||||||
|
|
||||||
const toastMessage = page.getByText('Named view uuid1 created.')
|
|
||||||
await expect(toastMessage).toBeInViewport()
|
|
||||||
|
|
||||||
// Expect project.toml to be generated on disk since a named view was created
|
// Expect project.toml to be generated on disk since a named view was created
|
||||||
await expect(async () => {
|
await expect(async () => {
|
||||||
let exists = await fileExists(tempProjectSettingsFilePath)
|
let exists = await fileExists(tempProjectSettingsFilePath)
|
||||||
@ -137,6 +130,7 @@ test.describe('Named view tests', () => {
|
|||||||
}, testInfo) => {
|
}, testInfo) => {
|
||||||
const projectName = 'named-views'
|
const projectName = 'named-views'
|
||||||
const myNamedView1 = 'uuid1'
|
const myNamedView1 = 'uuid1'
|
||||||
|
const myNamedView2 = 'uuid2'
|
||||||
|
|
||||||
// Create project and go into the project
|
// Create project and go into the project
|
||||||
await createProject({ name: projectName, page })
|
await createProject({ name: projectName, page })
|
||||||
@ -148,9 +142,6 @@ test.describe('Named view tests', () => {
|
|||||||
await cmdBar.argumentInput.fill(myNamedView1)
|
await cmdBar.argumentInput.fill(myNamedView1)
|
||||||
await cmdBar.progressCmdBar(false)
|
await cmdBar.progressCmdBar(false)
|
||||||
|
|
||||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
|
||||||
await expect(toastMessage).toBeInViewport()
|
|
||||||
|
|
||||||
// Generate file paths for project.toml
|
// Generate file paths for project.toml
|
||||||
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
||||||
const tempProjectSettingsFilePath = join(
|
const tempProjectSettingsFilePath = join(
|
||||||
@ -179,20 +170,17 @@ test.describe('Named view tests', () => {
|
|||||||
// Delete a named view
|
// Delete a named view
|
||||||
await cmdBar.openCmdBar()
|
await cmdBar.openCmdBar()
|
||||||
await cmdBar.chooseCommand('delete named view')
|
await cmdBar.chooseCommand('delete named view')
|
||||||
cmdBar.selectOption({ name: myNamedView1 })
|
cmdBar.selectOption({ name: myNamedView2 })
|
||||||
await cmdBar.progressCmdBar(false)
|
await cmdBar.progressCmdBar(false)
|
||||||
|
|
||||||
toastMessage = page.getByText('Named view uuid1 removed.')
|
|
||||||
await expect(toastMessage).toBeInViewport()
|
|
||||||
|
|
||||||
await expect(async () => {
|
await expect(async () => {
|
||||||
// Read project.toml into memory again since we deleted a named view
|
// Read project.toml into memory again since we deleted a named view
|
||||||
let tomlString = await fsp.readFile(tempProjectSettingsFilePath, 'utf-8')
|
let tomlString = await fsp.readFile(tempProjectSettingsFilePath, 'utf-8')
|
||||||
// Rewrite the uuids in the named views to match snapshot otherwise they will be randomly generated from rust and break
|
// Rewrite the uuids in the named views to match snapshot otherwise they will be randomly generated from rust and break
|
||||||
tomlString = tomlStringOverWriteNamedViewUuids(tomlString)
|
tomlString = tomlStringOverWriteNamedViewUuids(tomlString)
|
||||||
|
|
||||||
// Write the entire tomlString to a snapshot.
|
// // Write the entire tomlString to a snapshot.
|
||||||
// There are many key/value pairs to check this is a safer match.
|
// // There are many key/value pairs to check this is a safer match.
|
||||||
expect(tomlString).toMatchSnapshot('verify-named-view-gets-deleted')
|
expect(tomlString).toMatchSnapshot('verify-named-view-gets-deleted')
|
||||||
}).toPass()
|
}).toPass()
|
||||||
})
|
})
|
||||||
@ -214,9 +202,6 @@ test.describe('Named view tests', () => {
|
|||||||
await cmdBar.argumentInput.fill(myNamedView)
|
await cmdBar.argumentInput.fill(myNamedView)
|
||||||
await cmdBar.progressCmdBar(false)
|
await cmdBar.progressCmdBar(false)
|
||||||
|
|
||||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
|
||||||
await expect(toastMessage).toBeInViewport()
|
|
||||||
|
|
||||||
// Generate file paths for project.toml
|
// Generate file paths for project.toml
|
||||||
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
||||||
const tempProjectSettingsFilePath = join(
|
const tempProjectSettingsFilePath = join(
|
||||||
@ -273,19 +258,26 @@ test.describe('Named view tests', () => {
|
|||||||
await cmdBar.argumentInput.fill(myNamedView1)
|
await cmdBar.argumentInput.fill(myNamedView1)
|
||||||
await cmdBar.progressCmdBar(false)
|
await cmdBar.progressCmdBar(false)
|
||||||
|
|
||||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
await page.waitForTimeout(1000)
|
||||||
await expect(toastMessage).toBeInViewport()
|
|
||||||
|
|
||||||
await scene.moveCameraTo({ x: 608, y: 0, z: 0 }, { x: 0, y: 0, z: 0 })
|
const orbitMouseStart = { x: 800, y: 130 }
|
||||||
await page.waitForTimeout(2500)
|
const orbitMouseEnd = { x: 0, y: 130 }
|
||||||
|
await page.mouse.move(orbitMouseStart.x, orbitMouseStart.y)
|
||||||
|
await page.mouse.down({ button: 'middle' })
|
||||||
|
await page.mouse.move(orbitMouseEnd.x, orbitMouseEnd.y, {
|
||||||
|
steps: 3,
|
||||||
|
})
|
||||||
|
await page.mouse.up({ button: 'middle' })
|
||||||
|
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
|
||||||
await cmdBar.openCmdBar()
|
await cmdBar.openCmdBar()
|
||||||
await cmdBar.chooseCommand('create named view')
|
await cmdBar.chooseCommand('create named view')
|
||||||
await cmdBar.argumentInput.fill(myNamedView2)
|
await cmdBar.argumentInput.fill(myNamedView2)
|
||||||
await cmdBar.progressCmdBar(false)
|
await cmdBar.progressCmdBar(false)
|
||||||
|
|
||||||
toastMessage = page.getByText('Named view uuid2 created.')
|
// Wait a moment for the project.toml to get written to disk with the new view point
|
||||||
await expect(toastMessage).toBeInViewport()
|
await page.waitForTimeout(1000)
|
||||||
|
|
||||||
// Generate paths for the project.toml
|
// Generate paths for the project.toml
|
||||||
const tempProjectSettingsFilePath = join(
|
const tempProjectSettingsFilePath = join(
|
||||||
|
@ -1,5 +1,16 @@
|
|||||||
[settings]
|
[settings]
|
||||||
app = { }
|
|
||||||
modeling = { }
|
modeling = { }
|
||||||
text_editor = { }
|
text_editor = { }
|
||||||
command_bar = { }
|
command_bar = { }
|
||||||
|
|
||||||
|
[settings.app.named_views.0656fb1a-9640-473e-b334-591dc70c0138]
|
||||||
|
name = "uuid1"
|
||||||
|
eye_offset = 1_378.0059
|
||||||
|
fov_y = 45
|
||||||
|
is_ortho = false
|
||||||
|
ortho_scale_enabled = true
|
||||||
|
ortho_scale_factor = 1.6
|
||||||
|
pivot_position = [ 0, 0, 0 ]
|
||||||
|
pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ]
|
||||||
|
world_coord_system = "right_handed_up_z"
|
||||||
|
version = 1
|
||||||
|
@ -17,12 +17,12 @@ version = 1
|
|||||||
|
|
||||||
[settings.app.named_views.c810cf04-c6cc-4a4a-8b11-17bf445dcab7]
|
[settings.app.named_views.c810cf04-c6cc-4a4a-8b11-17bf445dcab7]
|
||||||
name = "uuid2"
|
name = "uuid2"
|
||||||
eye_offset = 608
|
eye_offset = 1_378.0059
|
||||||
fov_y = 45
|
fov_y = 45
|
||||||
is_ortho = false
|
is_ortho = false
|
||||||
ortho_scale_enabled = true
|
ortho_scale_enabled = true
|
||||||
ortho_scale_factor = 1.6
|
ortho_scale_factor = 1.6
|
||||||
pivot_position = [ 0, 0, 0 ]
|
pivot_position = [ 1_826.5239, 0.0, 0.0 ]
|
||||||
pivot_rotation = [ 0.5, 0.5, 0.5, 0.5 ]
|
pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ]
|
||||||
world_coord_system = "right_handed_up_z"
|
world_coord_system = "right_handed_up_z"
|
||||||
version = 1
|
version = 1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { bracket } from '@e2e/playwright/fixtures/bracket'
|
import { bracket } from '@src/lib/exampleKcl'
|
||||||
import { onboardingPaths } from '@src/routes/Onboarding/paths'
|
import { onboardingPaths } from '@src/routes/Onboarding/paths'
|
||||||
import fsp from 'fs/promises'
|
import fsp from 'fs/promises'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
@ -15,7 +15,6 @@ import {
|
|||||||
executorInputPath,
|
executorInputPath,
|
||||||
getUtils,
|
getUtils,
|
||||||
orRunWhenFullSuiteEnabled,
|
orRunWhenFullSuiteEnabled,
|
||||||
runningOnWindows,
|
|
||||||
settingsToToml,
|
settingsToToml,
|
||||||
} from '@e2e/playwright/test-utils'
|
} from '@e2e/playwright/test-utils'
|
||||||
import { expect, test } from '@e2e/playwright/zoo-test'
|
import { expect, test } from '@e2e/playwright/zoo-test'
|
||||||
@ -49,7 +48,10 @@ test.describe('Onboarding tests', () => {
|
|||||||
await expect(page.getByText('Welcome to Design Studio! This')).toBeVisible()
|
await expect(page.getByText('Welcome to Design Studio! This')).toBeVisible()
|
||||||
|
|
||||||
// *and* that the code is shown in the editor
|
// *and* that the code is shown in the editor
|
||||||
await expect(page.locator('.cm-content')).toContainText('// Shelf Bracket')
|
await expect(page.locator('.cm-content')).toContainText(
|
||||||
|
'// Shelf Bracket',
|
||||||
|
{ timeout: 10_000 }
|
||||||
|
)
|
||||||
|
|
||||||
// Make sure the model loaded
|
// Make sure the model loaded
|
||||||
const XYPlanePoint = { x: 774, y: 116 } as const
|
const XYPlanePoint = { x: 774, y: 116 } as const
|
||||||
@ -92,7 +94,8 @@ test.describe('Onboarding tests', () => {
|
|||||||
|
|
||||||
// *and* that the code is shown in the editor
|
// *and* that the code is shown in the editor
|
||||||
await expect(page.locator('.cm-content')).toContainText(
|
await expect(page.locator('.cm-content')).toContainText(
|
||||||
'// Shelf Bracket'
|
'// Shelf Bracket',
|
||||||
|
{ timeout: 10_000 }
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: jess make less shit
|
// TODO: jess make less shit
|
||||||
@ -280,9 +283,6 @@ test.describe('Onboarding tests', () => {
|
|||||||
if (!tronApp) {
|
if (!tronApp) {
|
||||||
fail()
|
fail()
|
||||||
}
|
}
|
||||||
if (runningOnWindows()) {
|
|
||||||
test.fixme(orRunWhenFullSuiteEnabled())
|
|
||||||
}
|
|
||||||
await tronApp.cleanProjectDir({
|
await tronApp.cleanProjectDir({
|
||||||
app: {
|
app: {
|
||||||
onboarding_status: '/parametric-modeling',
|
onboarding_status: '/parametric-modeling',
|
||||||
|
@ -550,7 +550,7 @@ openSketch = startSketchOn(XY)
|
|||||||
|> startProfileAt([-5, 0], %)
|
|> startProfileAt([-5, 0], %)
|
||||||
|> line(endAbsolute = [0, 5])
|
|> line(endAbsolute = [0, 5])
|
||||||
|> xLine(length = 5)
|
|> xLine(length = 5)
|
||||||
|> tangentialArc(endAbsolute = [10, 0])
|
|> tangentialArcTo([10, 0], %)
|
||||||
`
|
`
|
||||||
const viewPortSize = { width: 1000, height: 500 }
|
const viewPortSize = { width: 1000, height: 500 }
|
||||||
await page.setBodyDimensions(viewPortSize)
|
await page.setBodyDimensions(viewPortSize)
|
||||||
@ -634,8 +634,8 @@ openSketch = startSketchOn(XY)
|
|||||||
// Wait for enter sketch mode to complete
|
// Wait for enter sketch mode to complete
|
||||||
await page.waitForTimeout(500)
|
await page.waitForTimeout(500)
|
||||||
await editor.expectState({
|
await editor.expectState({
|
||||||
activeLines: [`|>tangentialArc(endAbsolute=[10,0])`],
|
activeLines: [`|>tangentialArcTo([10,0],%)`],
|
||||||
highlightedCode: 'tangentialArc(endAbsolute=[10,0])',
|
highlightedCode: 'tangentialArcTo([10,0],%)',
|
||||||
diagnostics: [],
|
diagnostics: [],
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -1624,7 +1624,7 @@ profile001 = circle(sketch001, center = [0, 0], radius = 500)
|
|||||||
sketch002 = startSketchOn(XZ)
|
sketch002 = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> xLine(length = -500)
|
|> xLine(length = -500)
|
||||||
|> tangentialArc(endAbsolute = [-2000, 500])`,
|
|> tangentialArcTo([-2000, 500], %)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
targetType: 'rectangle',
|
targetType: 'rectangle',
|
||||||
@ -1640,7 +1640,7 @@ profile001 = startProfileAt([-400, -400], sketch001)
|
|||||||
sketch002 = startSketchOn(XZ)
|
sketch002 = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> xLine(length = -500)
|
|> xLine(length = -500)
|
||||||
|> tangentialArc(endAbsolute = [-2000, 500])`,
|
|> tangentialArcTo([-2000, 500], %)`,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
sweepCases.map(({ initialCode, targetType, testPoint }) => {
|
sweepCases.map(({ initialCode, targetType, testPoint }) => {
|
||||||
|
@ -68,10 +68,12 @@ test.describe('edit with AI example snapshots', () => {
|
|||||||
body1CapCoords.x,
|
body1CapCoords.x,
|
||||||
body1CapCoords.y
|
body1CapCoords.y
|
||||||
)
|
)
|
||||||
|
const yellow: [number, number, number] = [179, 179, 131]
|
||||||
const submittingToast = page.getByText('Submitting to Text-to-CAD API...')
|
const submittingToast = page.getByText('Submitting to Text-to-CAD API...')
|
||||||
|
|
||||||
await test.step('wait for scene to load select body and check selection came through', async () => {
|
await test.step('wait for scene to load select body and check selection came through', async () => {
|
||||||
await clickBody1Cap()
|
await clickBody1Cap()
|
||||||
|
await scene.expectPixelColor(yellow, body1CapCoords, 20)
|
||||||
await editor.expectState({
|
await editor.expectState({
|
||||||
highlightedCode: '',
|
highlightedCode: '',
|
||||||
activeLines: ['|>startProfileAt([-73.64,-42.89],%)'],
|
activeLines: ['|>startProfileAt([-73.64,-42.89],%)'],
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { bracket } from '@e2e/playwright/fixtures/bracket'
|
|
||||||
import type { Page } from '@playwright/test'
|
import type { Page } from '@playwright/test'
|
||||||
|
import { bracket } from '@src/lib/exampleKcl'
|
||||||
import { reportRejection } from '@src/lib/trap'
|
import { reportRejection } from '@src/lib/trap'
|
||||||
import * as fsp from 'fs/promises'
|
import * as fsp from 'fs/promises'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
@ -63,7 +63,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => {
|
|||||||
part002 = startSketchOn(-XZ)
|
part002 = startSketchOn(-XZ)
|
||||||
${startProfileAt3}
|
${startProfileAt3}
|
||||||
|> xLine(length = width / 4)
|
|> xLine(length = width / 4)
|
||||||
|> tangentialArc(endAbsolute = [width / 2, 0])
|
|> tangentialArcTo([width / 2, 0], %)
|
||||||
|> xLine(length = -width / 4 + wireRadius)
|
|> xLine(length = -width / 4 + wireRadius)
|
||||||
|> yLine(length = wireOffset)
|
|> yLine(length = wireOffset)
|
||||||
|> arc({
|
|> arc({
|
||||||
@ -119,7 +119,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => {
|
|||||||
sketch001 = startSketchOn(XZ)
|
sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([2.61, -4.01], %)
|
|> startProfileAt([2.61, -4.01], %)
|
||||||
|> xLine(length = 8.73)
|
|> xLine(length = 8.73)
|
||||||
|> tangentialArc(endAbsolute = [8.33, -1.31])`
|
|> tangentialArcTo([8.33, -1.31], %)`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
|
|
||||||
await expect(async () => {
|
await expect(async () => {
|
||||||
await page.mouse.click(700, 200)
|
await page.mouse.click(700, 200)
|
||||||
await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click()
|
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByRole('button', { name: 'Edit Sketch' })
|
page.getByRole('button', { name: 'Edit Sketch' })
|
||||||
).toBeEnabled({ timeout: 2000 })
|
).toBeEnabled({ timeout: 2000 })
|
||||||
@ -139,7 +139,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
|
|
||||||
await page.waitForTimeout(600) // wait for animation
|
await page.waitForTimeout(600) // wait for animation
|
||||||
|
|
||||||
await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click()
|
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
||||||
await page.keyboard.press('End')
|
await page.keyboard.press('End')
|
||||||
await page.keyboard.down('Shift')
|
await page.keyboard.down('Shift')
|
||||||
await page.keyboard.press('ArrowUp')
|
await page.keyboard.press('ArrowUp')
|
||||||
@ -212,7 +212,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -14.01], %)
|
|> startProfileAt([4.61, -14.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> arcTo({
|
|> arcTo({
|
||||||
interior = [20.18, -1.7],
|
interior = [20.18, -1.7],
|
||||||
end = [11.82, -1.16]
|
end = [11.82, -1.16]
|
||||||
@ -262,7 +262,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
|||||||
await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn(XZ)
|
await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -14.01], %)
|
|> startProfileAt([4.61, -14.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> arcTo({
|
|> arcTo({
|
||||||
interior = [20.18, -1.7],
|
interior = [20.18, -1.7],
|
||||||
end = [11.82, -1.16]
|
end = [11.82, -1.16]
|
||||||
@ -326,7 +326,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
|||||||
prevContent = await page.locator('.cm-content').innerText()
|
prevContent = await page.locator('.cm-content').innerText()
|
||||||
}
|
}
|
||||||
|
|
||||||
// drag tangentialArc handle
|
// drag tangentialArcTo handle
|
||||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||||
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
||||||
await page.mouse.down()
|
await page.mouse.down()
|
||||||
@ -407,7 +407,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
|||||||
.toHaveText(`sketch001 = startSketchOn(XZ)
|
.toHaveText(`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([6.44, -12.07], %)
|
|> startProfileAt([6.44, -12.07], %)
|
||||||
|> line(end = [14.72, 1.97])
|
|> line(end = [14.72, 1.97])
|
||||||
|> tangentialArc(endAbsolute = [26.92, -3.32])
|
|> tangentialArcTo([26.92, -3.32], %)
|
||||||
|> arcTo({
|
|> arcTo({
|
||||||
interior = [18.11, -3.73],
|
interior = [18.11, -3.73],
|
||||||
end = [9.77, -3.19]
|
end = [9.77, -3.19]
|
||||||
@ -577,7 +577,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
sketch001 = startSketchOn(XZ)
|
sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -10.01], %)
|
|> startProfileAt([4.61, -10.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
|> tangentialArcTo([24.95, -0.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`
|
|> extrude(length = 5)`
|
||||||
)
|
)
|
||||||
@ -646,7 +646,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
||||||
prevContent = await page.locator('.cm-content').innerText()
|
prevContent = await page.locator('.cm-content').innerText()
|
||||||
|
|
||||||
// drag tangentialArc handle
|
// drag tangentialArcTo handle
|
||||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||||
await page.dragAndDrop('#stream', '#stream', {
|
await page.dragAndDrop('#stream', '#stream', {
|
||||||
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
||||||
@ -663,7 +663,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([7.12, -12.68], %)
|
|> startProfileAt([7.12, -12.68], %)
|
||||||
|> line(end = [12.68, -1.09])
|
|> line(end = [12.68, -1.09])
|
||||||
|> tangentialArc(endAbsolute = [24.89, 0.68])
|
|> tangentialArcTo([24.89, 0.68], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5)`,
|
|> extrude(length = 5)`,
|
||||||
{ shouldNormalise: true }
|
{ shouldNormalise: true }
|
||||||
@ -685,7 +685,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
sketch001 = startSketchOn(XZ)
|
sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([4.61, -14.01], %)
|
|> startProfileAt([4.61, -14.01], %)
|
||||||
|> line(end = [12.73, -0.09])
|
|> line(end = [12.73, -0.09])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> revolve(axis = X)`
|
|> revolve(axis = X)`
|
||||||
)
|
)
|
||||||
@ -757,7 +757,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
||||||
prevContent = await page.locator('.cm-content').innerText()
|
prevContent = await page.locator('.cm-content').innerText()
|
||||||
|
|
||||||
// drag tangentialArc handle
|
// drag tangentialArcTo handle
|
||||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||||
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
||||||
await page.mouse.down()
|
await page.mouse.down()
|
||||||
@ -771,7 +771,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
`sketch001 = startSketchOn(XZ)
|
`sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([6.44, -12.07], %)
|
|> startProfileAt([6.44, -12.07], %)
|
||||||
|> line(end = [14.72, 1.97])
|
|> line(end = [14.72, 1.97])
|
||||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
|> tangentialArcTo([24.95, -5.38], %)
|
||||||
|> line(end = [1.97, 2.06])
|
|> line(end = [1.97, 2.06])
|
||||||
|> close()
|
|> close()
|
||||||
|> revolve(axis = X)`,
|
|> revolve(axis = X)`,
|
||||||
@ -1653,7 +1653,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
|||||||
await page.waitForTimeout(600)
|
await page.waitForTimeout(600)
|
||||||
})
|
})
|
||||||
|
|
||||||
const codeFromTangentialArc = ` |> tangentialArc(endAbsolute = [39.49, 88.22])`
|
const codeFromTangentialArc = ` |> tangentialArcTo([39.49, 88.22], %)`
|
||||||
await test.step('check that tangential tool does not snap to other profile starts', async () => {
|
await test.step('check that tangential tool does not snap to other profile starts', async () => {
|
||||||
await toolbar.tangentialArcBtn.click()
|
await toolbar.tangentialArcBtn.click()
|
||||||
await page.waitForTimeout(1000)
|
await page.waitForTimeout(1000)
|
||||||
@ -1675,7 +1675,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
|||||||
// check pixel is now gray at tanArcLocation to verify code has executed
|
// check pixel is now gray at tanArcLocation to verify code has executed
|
||||||
await scene.expectPixelColor([26, 26, 26], tanArcLocation, 15)
|
await scene.expectPixelColor([26, 26, 26], tanArcLocation, 15)
|
||||||
await editor.expectEditor.not.toContain(
|
await editor.expectEditor.not.toContain(
|
||||||
`tangentialArc(endAbsolute = [39.49, 88.22])`
|
`tangentialArcTo([39.49, 88.22], %)`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1876,7 +1876,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
|||||||
|
|
||||||
await endArcStartLine()
|
await endArcStartLine()
|
||||||
await editor.expectEditor.toContain(
|
await editor.expectEditor.toContain(
|
||||||
`|> tangentialArc(endAbsolute = [16.61, 4.14])`
|
`|> tangentialArcTo([16.61, 4.14], %)`
|
||||||
)
|
)
|
||||||
|
|
||||||
// Add a three-point arc segment
|
// Add a three-point arc segment
|
||||||
@ -2416,7 +2416,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
profile001 = startProfileAt([-63.43, 193.08], sketch001)
|
profile001 = startProfileAt([-63.43, 193.08], sketch001)
|
||||||
|> line(end = [168.52, 149.87])
|
|> line(end = [168.52, 149.87])
|
||||||
|> line(end = [190.29, -39.18])
|
|> line(end = [190.29, -39.18])
|
||||||
|> tangentialArc(endAbsolute = [319.63, 129.65])
|
|> tangentialArcTo([319.63, 129.65], %)
|
||||||
|> line(end = [-217.65, -21.76])
|
|> line(end = [-217.65, -21.76])
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
@ -588,7 +588,6 @@ test(
|
|||||||
'Draft circle should look right',
|
'Draft circle should look right',
|
||||||
{ tag: '@snapshot' },
|
{ tag: '@snapshot' },
|
||||||
async ({ page, context, cmdBar, scene }) => {
|
async ({ page, context, cmdBar, scene }) => {
|
||||||
test.fixme(orRunWhenFullSuiteEnabled())
|
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
||||||
@ -684,7 +683,7 @@ test.describe(
|
|||||||
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
||||||
|
|
||||||
code += `
|
code += `
|
||||||
|> tangentialArc(endAbsolute = [551.2, -62.01])`
|
|> tangentialArcTo([551.2, -62.01], %)`
|
||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
// click tangential arc tool again to unequip it
|
// click tangential arc tool again to unequip it
|
||||||
@ -778,7 +777,7 @@ test.describe(
|
|||||||
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
||||||
|
|
||||||
code += `
|
code += `
|
||||||
|> tangentialArc(endAbsolute = [551.2, -62.01])`
|
|> tangentialArcTo([551.2, -62.01], %)`
|
||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
await page
|
await page
|
||||||
|
@ -98,7 +98,7 @@ part001 = startSketchOn(XZ)
|
|||||||
intersectTag: a,
|
intersectTag: a,
|
||||||
offset: 0
|
offset: 0
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [13.14 + 0, 13.14])
|
|> tangentialArcTo([13.14 + 0, 13.14], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5 + 7)
|
|> extrude(length = 5 + 7)
|
||||||
`
|
`
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
import { createProject } from '@e2e/playwright/test-utils'
|
|
||||||
import { test } from '@e2e/playwright/zoo-test'
|
|
||||||
|
|
||||||
test.describe('Stress test', () => {
|
|
||||||
test('Create project and load stress test', async ({
|
|
||||||
cmdBar,
|
|
||||||
scene,
|
|
||||||
page,
|
|
||||||
}, testInfo) => {
|
|
||||||
const projectName = 'stress-test-project'
|
|
||||||
// Create and load project
|
|
||||||
await createProject({ name: projectName, page })
|
|
||||||
await scene.settled(cmdBar)
|
|
||||||
})
|
|
||||||
})
|
|
@ -1140,7 +1140,7 @@ export function tomlToPerProjectSettings(
|
|||||||
return TOML.parse(toml)
|
return TOML.parse(toml)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function perProjectSettingsToToml(
|
export function perProjectsettingsToToml(
|
||||||
settings: DeepPartial<ProjectConfiguration>
|
settings: DeepPartial<ProjectConfiguration>
|
||||||
) {
|
) {
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
import { bracket } from '@e2e/playwright/fixtures/bracket'
|
|
||||||
import { FILE_EXT } from '@src/lib/constants'
|
import { FILE_EXT } from '@src/lib/constants'
|
||||||
|
import { bracket } from '@src/lib/exampleKcl'
|
||||||
import * as fsp from 'fs/promises'
|
import * as fsp from 'fs/promises'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
|
||||||
import {
|
import { getUtils } from '@e2e/playwright/test-utils'
|
||||||
getUtils,
|
|
||||||
orRunWhenFullSuiteEnabled,
|
|
||||||
runningOnWindows,
|
|
||||||
} from '@e2e/playwright/test-utils'
|
|
||||||
import { expect, test } from '@e2e/playwright/zoo-test'
|
import { expect, test } from '@e2e/playwright/zoo-test'
|
||||||
|
|
||||||
test.describe('Testing in-app sample loading', () => {
|
test.describe('Testing in-app sample loading', () => {
|
||||||
@ -84,9 +80,6 @@ test.describe('Testing in-app sample loading', () => {
|
|||||||
'Desktop: should create new file by default, optionally overwrite',
|
'Desktop: should create new file by default, optionally overwrite',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ editor, context, page, scene, cmdBar }, testInfo) => {
|
async ({ editor, context, page, scene, cmdBar }, testInfo) => {
|
||||||
if (runningOnWindows()) {
|
|
||||||
test.fixme(orRunWhenFullSuiteEnabled())
|
|
||||||
}
|
|
||||||
const { dir } = await context.folderSetupFn(async (dir) => {
|
const { dir } = await context.folderSetupFn(async (dir) => {
|
||||||
const bracketDir = join(dir, 'bracket')
|
const bracketDir = join(dir, 'bracket')
|
||||||
await fsp.mkdir(bracketDir, { recursive: true })
|
await fsp.mkdir(bracketDir, { recursive: true })
|
||||||
|
@ -229,7 +229,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 9
|
offset = 9
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [5 + 3.14 + 13, 20 + 3.14])
|
|> tangentialArcTo([5 + 3.14 + 13, 20 + 3.14], %)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@ -477,7 +477,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 9
|
offset = 9
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [3.14 + 13, 3.14])
|
|> tangentialArcTo([3.14 + 13, 3.14], %)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
localStorage.setItem('disableAxis', 'true')
|
localStorage.setItem('disableAxis', 'true')
|
||||||
@ -602,7 +602,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 9
|
offset = 9
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [3.14 + 13, 1.14])
|
|> tangentialArcTo([3.14 + 13, 1.14], %)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
localStorage.setItem('disableAxis', 'true')
|
localStorage.setItem('disableAxis', 'true')
|
||||||
@ -735,7 +735,11 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
locator: '[data-overlay-toolbar-index="11"]',
|
locator: '[data-overlay-toolbar-index="11"]',
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
test('for segment [tangentialArc]', async ({ page, editor, homePage }) => {
|
test('for segment [tangentialArcTo]', async ({
|
||||||
|
page,
|
||||||
|
editor,
|
||||||
|
homePage,
|
||||||
|
}) => {
|
||||||
await page.addInitScript(async () => {
|
await page.addInitScript(async () => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
'persistCode',
|
'persistCode',
|
||||||
@ -758,7 +762,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 9
|
offset = 9
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [3.14 + 13, -3.14])
|
|> tangentialArcTo([3.14 + 13, -3.14], %)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
localStorage.setItem('disableAxis', 'true')
|
localStorage.setItem('disableAxis', 'true')
|
||||||
@ -783,29 +787,28 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
|||||||
const clickUnconstrained = _clickUnconstrained(page, editor)
|
const clickUnconstrained = _clickUnconstrained(page, editor)
|
||||||
const clickConstrained = _clickConstrained(page, editor)
|
const clickConstrained = _clickConstrained(page, editor)
|
||||||
|
|
||||||
const tangentialArc = await u.getBoundingBox('[data-overlay-index="12"]')
|
const tangentialArcTo = await u.getBoundingBox(
|
||||||
|
'[data-overlay-index="12"]'
|
||||||
|
)
|
||||||
let ang = await u.getAngle('[data-overlay-index="12"]')
|
let ang = await u.getAngle('[data-overlay-index="12"]')
|
||||||
console.log('tangentialArc')
|
console.log('tangentialArcTo')
|
||||||
await clickConstrained({
|
await clickConstrained({
|
||||||
hoverPos: { x: tangentialArc.x, y: tangentialArc.y },
|
hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y },
|
||||||
constraintType: 'xAbsolute',
|
constraintType: 'xAbsolute',
|
||||||
expectBeforeUnconstrained:
|
expectBeforeUnconstrained: 'tangentialArcTo([3.14 + 13, -3.14], %)',
|
||||||
'tangentialArc(endAbsolute = [3.14 + 13, -3.14])',
|
expectAfterUnconstrained: 'tangentialArcTo([16.14, -3.14], %)',
|
||||||
expectAfterUnconstrained: 'tangentialArc(endAbsolute = [16.14, -3.14])',
|
expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||||
expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
|
||||||
ang: ang + 180,
|
ang: ang + 180,
|
||||||
steps: 6,
|
steps: 6,
|
||||||
locator: '[data-overlay-toolbar-index="12"]',
|
locator: '[data-overlay-toolbar-index="12"]',
|
||||||
})
|
})
|
||||||
console.log('tangentialArc2')
|
console.log('tangentialArcTo2')
|
||||||
await clickUnconstrained({
|
await clickUnconstrained({
|
||||||
hoverPos: { x: tangentialArc.x, y: tangentialArc.y },
|
hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y },
|
||||||
constraintType: 'yAbsolute',
|
constraintType: 'yAbsolute',
|
||||||
expectBeforeUnconstrained:
|
expectBeforeUnconstrained: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||||
'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
expectAfterUnconstrained: 'tangentialArcTo([xAbs001, yAbs001], %)',
|
||||||
expectAfterUnconstrained:
|
expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||||
'tangentialArc(endAbsolute = [xAbs001, yAbs001])',
|
|
||||||
expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
|
||||||
ang: ang + 180,
|
ang: ang + 180,
|
||||||
steps: 10,
|
steps: 10,
|
||||||
locator: '[data-overlay-toolbar-index="12"]',
|
locator: '[data-overlay-toolbar-index="12"]',
|
||||||
@ -1088,7 +1091,7 @@ part001 = startSketchOn(XZ)
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 9
|
offset = 9
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [3.14 + 13, 1.14])
|
|> tangentialArcTo([3.14 + 13, 1.14], %)
|
||||||
|> arcTo({
|
|> arcTo({
|
||||||
interior = [16.25, 5.12],
|
interior = [16.25, 5.12],
|
||||||
end = [21.61, 4.15]
|
end = [21.61, 4.15]
|
||||||
@ -1158,8 +1161,8 @@ part001 = startSketchOn(XZ)
|
|||||||
ang = await u.getAngle('[data-overlay-index="12"]')
|
ang = await u.getAngle('[data-overlay-index="12"]')
|
||||||
await deleteSegmentSequence({
|
await deleteSegmentSequence({
|
||||||
hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y },
|
hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y },
|
||||||
codeToBeDeleted: 'tangentialArc(endAbsolute = [3.14 + 13, 1.14])',
|
codeToBeDeleted: 'tangentialArcTo([3.14 + 13, 1.14], %)',
|
||||||
stdLibFnName: 'tangentialArc',
|
stdLibFnName: 'tangentialArcTo',
|
||||||
ang: ang + 180,
|
ang: ang + 180,
|
||||||
steps: 6,
|
steps: 6,
|
||||||
locator: '[data-overlay-toolbar-index="12"]',
|
locator: '[data-overlay-toolbar-index="12"]',
|
||||||
|
@ -535,7 +535,7 @@ part001 = startSketchOn(XZ)
|
|||||||
intersectTag = a,
|
intersectTag = a,
|
||||||
offset = 0
|
offset = 0
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [13.14 + 0, 13.14])
|
|> tangentialArcTo([13.14 + 0, 13.14], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = 5 + 7)
|
|> extrude(length = 5 + 7)
|
||||||
`
|
`
|
||||||
@ -574,7 +574,7 @@ part001 = startSketchOn(XZ)
|
|||||||
|
|
||||||
const extrusionTopCap: Coords2d = [800, 240]
|
const extrusionTopCap: Coords2d = [800, 240]
|
||||||
const flatExtrusionFace: Coords2d = [960, 160]
|
const flatExtrusionFace: Coords2d = [960, 160]
|
||||||
const tangentialArc: Coords2d = [840, 160]
|
const tangentialArcTo: Coords2d = [840, 160]
|
||||||
const close: Coords2d = [720, 200]
|
const close: Coords2d = [720, 200]
|
||||||
const nothing: Coords2d = [600, 200]
|
const nothing: Coords2d = [600, 200]
|
||||||
const closeEdge: Coords2d = [744, 233]
|
const closeEdge: Coords2d = [744, 233]
|
||||||
@ -671,28 +671,28 @@ part001 = startSketchOn(XZ)
|
|||||||
)
|
)
|
||||||
|
|
||||||
await checkCodeAtHoverPosition(
|
await checkCodeAtHoverPosition(
|
||||||
'tangentialArc',
|
'tangentialArcTo',
|
||||||
tangentialArc,
|
tangentialArcTo,
|
||||||
'tangentialArc(endAbsolute=[13.14+0,13.14])extrude(length=5+7)',
|
'tangentialArcTo([13.14+0,13.14],%)extrude(length=5+7)',
|
||||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||||
)
|
)
|
||||||
await checkCodeAtHoverPosition(
|
await checkCodeAtHoverPosition(
|
||||||
'tangentialArcEdge',
|
'tangentialArcEdge',
|
||||||
tangentialArcEdge,
|
tangentialArcEdge,
|
||||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||||
)
|
)
|
||||||
await checkCodeAtHoverPosition(
|
await checkCodeAtHoverPosition(
|
||||||
'tangentialArcOppositeEdge',
|
'tangentialArcOppositeEdge',
|
||||||
tangentialArcOppositeEdge,
|
tangentialArcOppositeEdge,
|
||||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||||
)
|
)
|
||||||
await checkCodeAtHoverPosition(
|
await checkCodeAtHoverPosition(
|
||||||
'tangentialArcAdjacentEdge',
|
'tangentialArcAdjacentEdge',
|
||||||
tangentialArcAdjacentEdge,
|
tangentialArcAdjacentEdge,
|
||||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||||
)
|
)
|
||||||
|
|
||||||
await checkCodeAtHoverPosition(
|
await checkCodeAtHoverPosition(
|
||||||
@ -940,7 +940,7 @@ part001 = startSketchOn(XZ)
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
pos: [1107, 161],
|
pos: [1107, 161],
|
||||||
expectedCode: 'tangentialArc(endAbsolute = [167.95, -28.85])',
|
expectedCode: 'tangentialArcTo([167.95, -28.85], %)',
|
||||||
},
|
},
|
||||||
] as const
|
] as const
|
||||||
await page.addInitScript(
|
await page.addInitScript(
|
||||||
|
@ -37,18 +37,18 @@ test.describe('Text-to-CAD tests', { tag: ['@skipWin'] }, () => {
|
|||||||
await expect(successToastMessage).toBeVisible({ timeout: 15000 })
|
await expect(successToastMessage).toBeVisible({ timeout: 15000 })
|
||||||
|
|
||||||
// Hit accept.
|
// Hit accept.
|
||||||
const acceptButton = page.getByRole('button', {
|
const copyToClipboardButton = page.getByRole('button', {
|
||||||
name: 'Accept',
|
name: 'Accept',
|
||||||
})
|
})
|
||||||
await expect(acceptButton).toBeVisible()
|
await expect(copyToClipboardButton).toBeVisible()
|
||||||
|
|
||||||
await acceptButton.click()
|
await copyToClipboardButton.click()
|
||||||
|
|
||||||
// Click in the code editor.
|
// Click in the code editor.
|
||||||
await page.locator('.cm-content').click()
|
await page.locator('.cm-content').click()
|
||||||
|
|
||||||
// Expect the code to be pasted.
|
// Expect the code to be pasted.
|
||||||
await expect(page.locator('.cm-content')).toContainText(`startSketchOn`)
|
await expect(page.locator('.cm-content')).toContainText(`const`)
|
||||||
|
|
||||||
// make sure a model renders.
|
// make sure a model renders.
|
||||||
// wait for execution done
|
// wait for execution done
|
||||||
|
77
flake.lock
generated
77
flake.lock
generated
@ -1,56 +1,6 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"naersk": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1743800763,
|
|
||||||
"narHash": "sha256-YFKV+fxEpMgP5VsUcM6Il28lI0NlpM7+oB1XxbBAYCw=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"rev": "ed0232117731a4c19d3ee93aa0c382a8fe754b01",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744316434,
|
|
||||||
"narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d19cf9dfc633816a437204555afeb9e722386b76",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744316434,
|
|
||||||
"narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d19cf9dfc633816a437204555afeb9e722386b76",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736320768,
|
"lastModified": 1736320768,
|
||||||
"narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
|
"narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
|
||||||
@ -66,23 +16,38 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728538411,
|
||||||
|
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"naersk": "naersk",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744338850,
|
"lastModified": 1736476219,
|
||||||
"narHash": "sha256-pwMIVmsb8fjjT92n5XFDqCsplcX70qVMMT7NulumPXs=",
|
"narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "5e64aecc018e6f775572609e7d7485fdba6985a7",
|
"rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
137
flake.nix
137
flake.nix
@ -1,95 +1,84 @@
|
|||||||
{
|
{
|
||||||
description = "zoo.dev modeling-app";
|
description = "modeling-app development environment";
|
||||||
|
|
||||||
|
# Flake inputs
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix
|
||||||
naersk.url = "github:nix-community/naersk";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
# Flake outputs
|
||||||
self,
|
outputs = { self, nixpkgs, rust-overlay }:
|
||||||
nixpkgs,
|
let
|
||||||
rust-overlay,
|
# Overlays enable you to customize the Nixpkgs attribute set
|
||||||
naersk,
|
overlays = [
|
||||||
}: let
|
# Makes a `rust-bin` attribute available in Nixpkgs
|
||||||
overlays = [
|
(import rust-overlay)
|
||||||
(import rust-overlay)
|
# Provides a `rustToolchain` attribute for Nixpkgs that we can use to
|
||||||
(self: super: {
|
# create a Rust environment
|
||||||
rustToolchain = super.rust-bin.stable.latest.default.override {
|
(self: super: {
|
||||||
targets = ["wasm32-unknown-unknown"];
|
rustToolchain = super. rust-bin.stable.latest.default.override {
|
||||||
extensions = ["rustfmt" "llvm-tools-preview" "rust-src"];
|
targets = [ "wasm32-unknown-unknown" ];
|
||||||
};
|
extensions = [ "rustfmt" "llvm-tools-preview" "rust-src" ];
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
allSystems = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
"x86_64-darwin"
|
|
||||||
"aarch64-darwin"
|
|
||||||
];
|
|
||||||
|
|
||||||
forAllSystems = f:
|
|
||||||
nixpkgs.lib.genAttrs allSystems (system:
|
|
||||||
f {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit overlays system;
|
|
||||||
};
|
};
|
||||||
system = system;
|
})
|
||||||
});
|
(self: super: {
|
||||||
in {
|
cargo-llvm-cov = super.cargo-llvm-cov.overrideAttrs(oa: {
|
||||||
devShells = forAllSystems ({pkgs, ...}: {
|
doCheck = false; doInstallCheck = false;
|
||||||
default = pkgs.mkShell {
|
});
|
||||||
packages =
|
})
|
||||||
(with pkgs; [
|
];
|
||||||
|
|
||||||
|
# Systems supported
|
||||||
|
allSystems = [
|
||||||
|
"x86_64-linux" # 64-bit Intel/AMD Linux
|
||||||
|
"aarch64-linux" # 64-bit ARM Linux
|
||||||
|
"x86_64-darwin" # 64-bit Intel macOS
|
||||||
|
"aarch64-darwin" # 64-bit ARM macOS
|
||||||
|
];
|
||||||
|
|
||||||
|
# Helper to provide system-specific attributes
|
||||||
|
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
|
||||||
|
pkgs = import nixpkgs { inherit overlays system; config.allowBroken = true; };
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Development environment output
|
||||||
|
devShells = forAllSystems ({ pkgs }: {
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
# The Nix packages provided in the environment
|
||||||
|
packages = (with pkgs; [
|
||||||
|
# The package provided by our custom overlay. Includes cargo, Clippy, cargo-fmt,
|
||||||
|
# rustdoc, rustfmt, and other tools.
|
||||||
rustToolchain
|
rustToolchain
|
||||||
|
|
||||||
|
cargo-llvm-cov
|
||||||
cargo-nextest
|
cargo-nextest
|
||||||
|
|
||||||
just
|
just
|
||||||
postgresql.lib
|
postgresql.lib
|
||||||
openssl
|
openssl
|
||||||
pkg-config
|
pkg-config
|
||||||
|
|
||||||
nodejs_22
|
nodejs_22
|
||||||
|
yarn
|
||||||
|
|
||||||
electron
|
electron
|
||||||
playwright-driver.browsers
|
playwright-driver.browsers
|
||||||
wasm-pack
|
]) ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
|
||||||
python3Full
|
|
||||||
])
|
|
||||||
++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
|
|
||||||
libiconv
|
libiconv
|
||||||
darwin.apple_sdk.frameworks.Security
|
darwin.apple_sdk.frameworks.Security
|
||||||
]);
|
]);
|
||||||
|
|
||||||
TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc";
|
TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc";
|
||||||
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
||||||
ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/";
|
ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/";
|
||||||
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true;
|
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true;
|
||||||
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome";
|
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome";
|
||||||
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
|
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
|
||||||
NODE_ENV = "development";
|
NODE_ENV = "development";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
};
|
||||||
packages = forAllSystems ({
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
}: let
|
|
||||||
naersk-lib = pkgs.callPackage naersk {
|
|
||||||
cargo = pkgs.rustToolchain;
|
|
||||||
rustc = pkgs.rustToolchain;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
kcl-language-server = naersk-lib.buildPackage {
|
|
||||||
pname = "kcl-language-server";
|
|
||||||
version = "0.1.0";
|
|
||||||
release = true;
|
|
||||||
|
|
||||||
src = ./rust;
|
|
||||||
|
|
||||||
cargoBuildOptions = opt: opt ++ ["-p" "kcl-language-server"];
|
|
||||||
buildInputs = [pkgs.openssl pkgs.pkg-config];
|
|
||||||
};
|
|
||||||
default = self.packages.${system}.kcl-language-server;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
|
$ dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx
|
||||||
> zoo-modeling-app@0.0.0 circular-deps
|
|
||||||
> dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx
|
|
||||||
|
|
||||||
• Circular Dependencies
|
• Circular Dependencies
|
||||||
01) src/lang/std/sketch.ts -> src/lang/modifyAst.ts -> src/lang/modifyAst/addEdgeTreatment.ts
|
01) src/lang/std/sketch.ts -> src/lang/modifyAst.ts -> src/lang/modifyAst/addEdgeTreatment.ts
|
||||||
02) src/lang/std/sketch.ts -> src/lang/modifyAst.ts
|
02) src/lang/std/sketch.ts -> src/lang/modifyAst.ts
|
||||||
|
21986
package-lock.json
generated
21986
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
59
package.json
59
package.json
@ -11,11 +11,6 @@
|
|||||||
"description": "Zoo Design Studio",
|
"description": "Zoo Design Studio",
|
||||||
"main": ".vite/build/main.js",
|
"main": ".vite/build/main.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"workspaces": [
|
|
||||||
"packages/codemirror-lang-kcl",
|
|
||||||
"packages/codemirror-lsp-client",
|
|
||||||
"rust/kcl-language-server"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/autocomplete": "^6.18.6",
|
"@codemirror/autocomplete": "^6.18.6",
|
||||||
"@codemirror/commands": "^6.8.1",
|
"@codemirror/commands": "^6.8.1",
|
||||||
@ -84,18 +79,16 @@
|
|||||||
"start": "vite --port=3000 --host=0.0.0.0",
|
"start": "vite --port=3000 --host=0.0.0.0",
|
||||||
"start:prod": "vite preview --port=3000",
|
"start:prod": "vite preview --port=3000",
|
||||||
"serve": "vite serve --port=3000",
|
"serve": "vite serve --port=3000",
|
||||||
"build": "npm run install:rust && . $HOME/.cargo/env && npm run install:wasm-pack:sh && npm run build:wasm && vite build",
|
"build": "yarn install:rust && . $HOME/.cargo/env && yarn install:wasm-pack:sh && yarn build:wasm && vite build",
|
||||||
"build:local": "vite build",
|
"build:local": "vite build",
|
||||||
"build:both": "vite build",
|
"build:both": "vite build",
|
||||||
"build:both:local": "npm run build:wasm && vite build",
|
"build:both:local": "yarn build:wasm && vite build",
|
||||||
"pretest": "npm run remove-importmeta",
|
"pretest": "yarn remove-importmeta",
|
||||||
"test:rust": "(cd rust && just test && just lint)",
|
"test:rust": "(cd rust && just test && just lint)",
|
||||||
"simpleserver": "npm run pretest && http-server ./public --cors -p 3000",
|
"simpleserver": "yarn pretest && http-server ./public --cors -p 3000",
|
||||||
"simpleserver:ci": "npm run pretest && http-server ./public --cors -p 3000 &",
|
"simpleserver:ci": "yarn pretest && http-server ./public --cors -p 3000 &",
|
||||||
"simpleserver:bg": "npm run pretest && http-server ./public --cors -p 3000 &",
|
"simpleserver:bg": "yarn pretest && http-server ./public --cors -p 3000 &",
|
||||||
"simpleserver:stop": "kill-port 3000",
|
"simpleserver:stop": "kill-port 3000",
|
||||||
"tsc": "tsc",
|
|
||||||
"playwright": "playwright",
|
|
||||||
"fmt": "prettier --write .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg",
|
"fmt": "prettier --write .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg",
|
||||||
"fmt:generated": "prettier --write .eslintrc.json *.ts *.json *.js ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg",
|
"fmt:generated": "prettier --write .eslintrc.json *.ts *.json *.js ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg",
|
||||||
"fmt-check": "prettier --check .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server",
|
"fmt-check": "prettier --check .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server",
|
||||||
@ -104,14 +97,14 @@
|
|||||||
"fetch:samples": "rm -rf public/kcl-samples* && curl -L -o public/kcl-samples.zip https://github.com/KittyCAD/kcl-samples/archive/refs/heads/achalmers/kw-args-xylineto.zip && unzip -o public/kcl-samples.zip -d public && mv public/kcl-samples-* public/kcl-samples",
|
"fetch:samples": "rm -rf public/kcl-samples* && curl -L -o public/kcl-samples.zip https://github.com/KittyCAD/kcl-samples/archive/refs/heads/achalmers/kw-args-xylineto.zip && unzip -o public/kcl-samples.zip -d public && mv public/kcl-samples-* public/kcl-samples",
|
||||||
"build:wasm": "./scripts/build-wasm.sh",
|
"build:wasm": "./scripts/build-wasm.sh",
|
||||||
"build:wasm:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm.ps1",
|
"build:wasm:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm.ps1",
|
||||||
"build:wasm-dev": "npm run build:wasm:dev",
|
"build:wasm-dev": "yarn build:wasm:dev",
|
||||||
"build:wasm:dev": "./scripts/build-wasm-dev.sh",
|
"build:wasm:dev": "./scripts/build-wasm-dev.sh",
|
||||||
"build:wasm:dev:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm-dev.ps1",
|
"build:wasm:dev:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm-dev.ps1",
|
||||||
"remove-importmeta": "sed -i 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\"; sed -i '' 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\" || echo \"sed for both mac and linux\"",
|
"remove-importmeta": "sed -i 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\"; sed -i '' 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\" || echo \"sed for both mac and linux\"",
|
||||||
"lint-fix": "eslint --fix --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src",
|
"lint-fix": "eslint --fix --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src",
|
||||||
"lint": "eslint --max-warnings 0 --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src",
|
"lint": "eslint --max-warnings 0 --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src",
|
||||||
"circular-deps": "dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx",
|
"circular-deps": "dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx",
|
||||||
"circular-deps:overwrite": "npm run circular-deps | sed '$d' | grep -v '^npm run' > known-circular.txt",
|
"circular-deps:overwrite": "yarn circular-deps | sed '$d' | grep -v '^yarn run' > known-circular.txt",
|
||||||
"circular-deps:diff": "./scripts/diff-circular-deps.sh",
|
"circular-deps:diff": "./scripts/diff-circular-deps.sh",
|
||||||
"files:set-version": "echo \"$(jq --arg v \"$VERSION\" '.version=$v' package.json --indent 2)\" > package.json",
|
"files:set-version": "echo \"$(jq --arg v \"$VERSION\" '.version=$v' package.json --indent 2)\" > package.json",
|
||||||
"files:set-notes": "./scripts/set-files-notes.sh",
|
"files:set-notes": "./scripts/set-files-notes.sh",
|
||||||
@ -119,32 +112,32 @@
|
|||||||
"files:flip-to-nightly:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/flip-files-to-nightly.ps1",
|
"files:flip-to-nightly:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/flip-files-to-nightly.ps1",
|
||||||
"files:invalidate-bucket": "./scripts/invalidate-files-bucket.sh",
|
"files:invalidate-bucket": "./scripts/invalidate-files-bucket.sh",
|
||||||
"files:invalidate-bucket:nightly": "./scripts/invalidate-files-bucket.sh --nightly",
|
"files:invalidate-bucket:nightly": "./scripts/invalidate-files-bucket.sh --nightly",
|
||||||
"postinstall": "electron-rebuild",
|
"postinstall": "yarn --cwd ./rust/kcl-language-server --modules-folder node_modules install && ./node_modules/.bin/electron-rebuild",
|
||||||
"make:dev": "make dev",
|
"make:dev": "make dev",
|
||||||
"generate:machine-api": "npx openapi-typescript ./openapi/machine-api.json -o src/lib/machine-api.d.ts",
|
"generate:machine-api": "npx openapi-typescript ./openapi/machine-api.json -o src/lib/machine-api.d.ts",
|
||||||
"generate:samples-manifest": "cd public/kcl-samples && node generate-manifest.js",
|
"generate:samples-manifest": "cd public/kcl-samples && node generate-manifest.js",
|
||||||
"tron:start": "electron-forge start",
|
"tron:start": "electron-forge start",
|
||||||
"chrome:test": "PLATFORM=web NODE_ENV=development playwright test --config=playwright.config.ts --project='Google Chrome' --grep-invert='@snapshot'",
|
"chrome:test": "PLATFORM=web NODE_ENV=development yarn playwright test --config=playwright.config.ts --project='Google Chrome' --grep-invert='@snapshot'",
|
||||||
"tronb:vite:dev": "vite build -c vite.main.config.ts -m development && vite build -c vite.preload.config.ts -m development && vite build -c vite.renderer.config.ts -m development",
|
"tronb:vite:dev": "vite build -c vite.main.config.ts -m development && vite build -c vite.preload.config.ts -m development && vite build -c vite.renderer.config.ts -m development",
|
||||||
"tronb:vite:prod": "vite build -c vite.main.config.ts && vite build -c vite.preload.config.ts && vite build -c vite.renderer.config.ts",
|
"tronb:vite:prod": "vite build -c vite.main.config.ts && vite build -c vite.preload.config.ts && vite build -c vite.renderer.config.ts",
|
||||||
"tronb:package:dev": "npm run tronb:vite:dev && electron-builder --config electron-builder.yml",
|
"tronb:package:dev": "yarn tronb:vite:dev && electron-builder --config electron-builder.yml",
|
||||||
"tronb:package:prod": "npm run tronb:vite:prod && electron-builder --config electron-builder.yml --publish always",
|
"tronb:package:prod": "yarn tronb:vite:prod && electron-builder --config electron-builder.yml --publish always",
|
||||||
"test-setup": "npm install && npm run build:wasm",
|
"test-setup": "yarn install && yarn build:wasm",
|
||||||
"test": "vitest --mode development",
|
"test": "vitest --mode development",
|
||||||
"test:snapshots": "PLATFORM=web NODE_ENV=development playwright test --config=playwright.config.ts --update-snapshots --grep=@snapshot --trace=on --shard=1/1",
|
"test:snapshots": "PLATFORM=web NODE_ENV=development yarn playwright test --config=playwright.config.ts --update-snapshots --grep=@snapshot --trace=on --shard=1/1",
|
||||||
"test:unit": "vitest run --mode development --exclude **/kclSamples.test.ts",
|
"test:unit": "vitest run --mode development --exclude **/kclSamples.test.ts",
|
||||||
"test:unit:kcl-samples": "vitest run --mode development ./src/lang/kclSamples.test.ts",
|
"test:unit:kcl-samples": "vitest run --mode development ./src/lang/kclSamples.test.ts",
|
||||||
"test:playwright:electron": "playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
|
"test:playwright:electron": "playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
|
||||||
"test:playwright:electron:windows": "playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\" --quiet",
|
"test:playwright:electron:windows": "playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\" --quiet",
|
||||||
"test:playwright:electron:macos": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot' --quiet",
|
"test:playwright:electron:macos": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot' --quiet",
|
||||||
"test:playwright:electron:ubuntu": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot' --quiet",
|
"test:playwright:electron:ubuntu": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot' --quiet",
|
||||||
"test:playwright:electron:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
|
"test:playwright:electron:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
|
||||||
"test:playwright:electron:windows:local": "npm run tronb:vite:dev && set NODE_ENV='development' && playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\"",
|
"test:playwright:electron:windows:local": "yarn tronb:vite:dev && set NODE_ENV='development' && playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\"",
|
||||||
"test:playwright:electron:macos:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'",
|
"test:playwright:electron:macos:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'",
|
||||||
"test:playwright:electron:ubuntu:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
|
"test:playwright:electron:ubuntu:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
|
||||||
"test:playwright:electron:ubuntu:engine:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot|@skipLocalEngine'",
|
"test:playwright:electron:ubuntu:engine:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot|@skipLocalEngine'",
|
||||||
"test:unit:local": "npm run simpleserver:bg && npm run test:unit; kill-port 3000",
|
"test:unit:local": "yarn simpleserver:bg && yarn test:unit; kill-port 3000",
|
||||||
"test:unit:kcl-samples:local": "npm run simpleserver:bg && npm run test:unit:kcl-samples; kill-port 3000"
|
"test:unit:kcl-samples:local": "yarn simpleserver:bg && yarn test:unit:kcl-samples; kill-port 3000"
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"trailingComma": "es5",
|
"trailingComma": "es5",
|
||||||
@ -154,7 +147,6 @@
|
|||||||
"importOrder": [
|
"importOrder": [
|
||||||
"<THIRD_PARTY_MODULES>",
|
"<THIRD_PARTY_MODULES>",
|
||||||
"^@rust/(.*)$",
|
"^@rust/(.*)$",
|
||||||
"^@public/(.*)$",
|
|
||||||
"^@e2e/(.*)$",
|
"^@e2e/(.*)$",
|
||||||
"^@src/(.*)$",
|
"^@src/(.*)$",
|
||||||
"^[./]"
|
"^[./]"
|
||||||
@ -231,7 +223,6 @@
|
|||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"kill-port": "^2.0.1",
|
"kill-port": "^2.0.1",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
"openapi-typescript": "^7.6.1",
|
|
||||||
"pixelmatch": "^5.3.0",
|
"pixelmatch": "^5.3.0",
|
||||||
"pngjs": "^7.0.0",
|
"pngjs": "^7.0.0",
|
||||||
"postcss": "^8.4.43",
|
"postcss": "^8.4.43",
|
||||||
@ -243,12 +234,14 @@
|
|||||||
"ts-node": "^10.0.0",
|
"ts-node": "^10.0.0",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.3",
|
||||||
"typescript-eslint": "^8.29.0",
|
"typescript-eslint": "^8.29.0",
|
||||||
"vite": "^5.4.18",
|
"vite": "^5.4.17",
|
||||||
"vite-plugin-package-version": "^1.1.0",
|
"vite-plugin-package-version": "^1.1.0",
|
||||||
"vite-plugin-top-level-await": "^1.5.0",
|
"vite-plugin-top-level-await": "^1.5.0",
|
||||||
"vite-tsconfig-paths": "^4.3.2",
|
"vite-tsconfig-paths": "^4.3.2",
|
||||||
"vitest": "^1.6.1",
|
"vitest": "^1.6.1",
|
||||||
"vitest-webgl-canvas-mock": "^1.1.0",
|
"vitest-webgl-canvas-mock": "^1.1.0",
|
||||||
"ws": "^8.18.1"
|
"ws": "^8.18.1",
|
||||||
}
|
"yarn": "^1.22.22"
|
||||||
|
},
|
||||||
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rollup -c",
|
"build": "rollup -c",
|
||||||
"tsc": "tsc",
|
|
||||||
"test": "vitest --config vitest.main.config.ts run"
|
"test": "vitest --config vitest.main.config.ts run"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
884
packages/codemirror-lang-kcl/yarn.lock
Normal file
884
packages/codemirror-lang-kcl/yarn.lock
Normal file
@ -0,0 +1,884 @@
|
|||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/code-frame@^7.24.2":
|
||||||
|
version "7.26.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
|
||||||
|
integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-validator-identifier" "^7.25.9"
|
||||||
|
js-tokens "^4.0.0"
|
||||||
|
picocolors "^1.0.0"
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.25.9":
|
||||||
|
version "7.25.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
|
||||||
|
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
|
||||||
|
|
||||||
|
"@codemirror/language@^6.10.3":
|
||||||
|
version "6.10.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.8.tgz#3e3a346a2b0a8cf63ee1cfe03349eb1965dce5f9"
|
||||||
|
integrity sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.23.0"
|
||||||
|
"@lezer/common" "^1.1.0"
|
||||||
|
"@lezer/highlight" "^1.0.0"
|
||||||
|
"@lezer/lr" "^1.0.0"
|
||||||
|
style-mod "^4.0.0"
|
||||||
|
|
||||||
|
"@codemirror/state@^6.0.0", "@codemirror/state@^6.5.0", "@codemirror/state@^6.5.2":
|
||||||
|
version "6.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.2.tgz#8eca3a64212a83367dc85475b7d78d5c9b7076c6"
|
||||||
|
integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==
|
||||||
|
dependencies:
|
||||||
|
"@marijn/find-cluster-break" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/view@^6.23.0":
|
||||||
|
version "6.36.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.36.1.tgz#3c543b8fd72c96b30c4b2b1464d1ebce7e0c5c4b"
|
||||||
|
integrity sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.5.0"
|
||||||
|
style-mod "^4.1.0"
|
||||||
|
w3c-keyname "^2.2.4"
|
||||||
|
|
||||||
|
"@esbuild/aix-ppc64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
|
||||||
|
integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
|
||||||
|
|
||||||
|
"@esbuild/android-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
|
||||||
|
integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
|
||||||
|
|
||||||
|
"@esbuild/android-arm@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
|
||||||
|
integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
|
||||||
|
|
||||||
|
"@esbuild/android-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
|
||||||
|
integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
|
||||||
|
|
||||||
|
"@esbuild/darwin-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
|
||||||
|
integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
|
||||||
|
|
||||||
|
"@esbuild/darwin-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
|
||||||
|
integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
|
||||||
|
integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
|
||||||
|
integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
|
||||||
|
integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
|
||||||
|
integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
|
||||||
|
|
||||||
|
"@esbuild/linux-ia32@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
|
||||||
|
integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-loong64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
|
||||||
|
integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
|
||||||
|
|
||||||
|
"@esbuild/linux-mips64el@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
|
||||||
|
integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
|
||||||
|
|
||||||
|
"@esbuild/linux-ppc64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
|
||||||
|
integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
|
||||||
|
|
||||||
|
"@esbuild/linux-riscv64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
|
||||||
|
integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
|
||||||
|
|
||||||
|
"@esbuild/linux-s390x@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
|
||||||
|
integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
|
||||||
|
|
||||||
|
"@esbuild/linux-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
|
||||||
|
integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
|
||||||
|
|
||||||
|
"@esbuild/netbsd-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
|
||||||
|
integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
|
||||||
|
|
||||||
|
"@esbuild/netbsd-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
|
||||||
|
integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
|
||||||
|
|
||||||
|
"@esbuild/openbsd-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
|
||||||
|
integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
|
||||||
|
|
||||||
|
"@esbuild/openbsd-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
|
||||||
|
integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
|
||||||
|
|
||||||
|
"@esbuild/sunos-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
|
||||||
|
integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
|
||||||
|
|
||||||
|
"@esbuild/win32-arm64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
|
||||||
|
integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
|
||||||
|
|
||||||
|
"@esbuild/win32-ia32@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
|
||||||
|
integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
|
||||||
|
|
||||||
|
"@esbuild/win32-x64@0.25.2":
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
|
||||||
|
integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
|
||||||
|
|
||||||
|
"@jridgewell/sourcemap-codec@^1.5.0":
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
|
||||||
|
integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
|
||||||
|
|
||||||
|
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0":
|
||||||
|
version "1.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd"
|
||||||
|
integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
|
||||||
|
|
||||||
|
"@lezer/generator@^1.7.3":
|
||||||
|
version "1.7.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/generator/-/generator-1.7.3.tgz#8bf9e99c7690dd31327425ca46706a380413f54d"
|
||||||
|
integrity sha512-vAI2O1tPF8QMMgp+bdUeeJCneJNkOZvqsrtyb4ohnFVFdboSqPwBEacnt0HH4E+5h+qsIwTHUSAhffU4hzKl1A==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.1.0"
|
||||||
|
"@lezer/lr" "^1.3.0"
|
||||||
|
|
||||||
|
"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.2.1":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b"
|
||||||
|
integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
|
||||||
|
version "1.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727"
|
||||||
|
integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@marijn/find-cluster-break@^1.0.0":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
|
||||||
|
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
|
||||||
|
|
||||||
|
"@rollup/plugin-typescript@^12.1.2":
|
||||||
|
version "12.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz#ebaeec2e7376faa889030ccd7cb485a649e63118"
|
||||||
|
integrity sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==
|
||||||
|
dependencies:
|
||||||
|
"@rollup/pluginutils" "^5.1.0"
|
||||||
|
resolve "^1.22.1"
|
||||||
|
|
||||||
|
"@rollup/pluginutils@^5.1.0":
|
||||||
|
version "5.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a"
|
||||||
|
integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "^1.0.0"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
picomatch "^4.0.2"
|
||||||
|
|
||||||
|
"@rollup/rollup-android-arm-eabi@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz#9bd38df6a29afb7f0336d988bc8112af0c8816c0"
|
||||||
|
integrity sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==
|
||||||
|
|
||||||
|
"@rollup/rollup-android-arm-eabi@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz#1d8cc5dd3d8ffe569d8f7f67a45c7909828a0f66"
|
||||||
|
integrity sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==
|
||||||
|
|
||||||
|
"@rollup/rollup-android-arm64@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz#bd1a98390e15b76eeef907175a37c5f0f9e4d214"
|
||||||
|
integrity sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==
|
||||||
|
|
||||||
|
"@rollup/rollup-android-arm64@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz#9c136034d3d9ed29d0b138c74dd63c5744507fca"
|
||||||
|
integrity sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-darwin-arm64@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz#bc6fa8a2cc77b5f367424e5e994e3537524e6879"
|
||||||
|
integrity sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==
|
||||||
|
|
||||||
|
"@rollup/rollup-darwin-arm64@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz#830d07794d6a407c12b484b8cf71affd4d3800a6"
|
||||||
|
integrity sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==
|
||||||
|
|
||||||
|
"@rollup/rollup-darwin-x64@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz#76059c91f06b17406347b127df10f065283b2e61"
|
||||||
|
integrity sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==
|
||||||
|
|
||||||
|
"@rollup/rollup-darwin-x64@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz#b26f0f47005c1fa5419a880f323ed509dc8d885c"
|
||||||
|
integrity sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-freebsd-arm64@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz#83178315c0be4b4c8c1fd835e1952d2dc1eb4e6e"
|
||||||
|
integrity sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==
|
||||||
|
|
||||||
|
"@rollup/rollup-freebsd-arm64@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz#2b60c81ac01ff7d1bc8df66aee7808b6690c6d19"
|
||||||
|
integrity sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-freebsd-x64@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz#1ef24fa0576bf7899a0a0a649156606dbd7a0d46"
|
||||||
|
integrity sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==
|
||||||
|
|
||||||
|
"@rollup/rollup-freebsd-x64@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz#4826af30f4d933d82221289068846c9629cc628c"
|
||||||
|
integrity sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz#443a6f5681bf4611caae42988994a6d8ee676216"
|
||||||
|
integrity sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz#a1f4f963d5dcc9e5575c7acf9911824806436bf7"
|
||||||
|
integrity sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz#9738b27184102228637a683e5f35b22ea352394f"
|
||||||
|
integrity sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz#e924b0a8b7c400089146f6278446e6b398b75a06"
|
||||||
|
integrity sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm64-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz#b5e9d5e30ff36a19bedd29c715ba18a1889ff269"
|
||||||
|
integrity sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm64-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz#cb43303274ec9a716f4440b01ab4e20c23aebe20"
|
||||||
|
integrity sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm64-musl@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz#1d8f68f0829b57f746ec03432ad046f1af014a98"
|
||||||
|
integrity sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-arm64-musl@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz#531c92533ce3d167f2111bfcd2aa1a2041266987"
|
||||||
|
integrity sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-loongarch64-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz#07027feb883408e74a3002c8e50caaedd288ae38"
|
||||||
|
integrity sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-loongarch64-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz#53403889755d0c37c92650aad016d5b06c1b061a"
|
||||||
|
integrity sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-powerpc64le-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz#544ce1b0847a9c1240425e86f33daceac7ec4e12"
|
||||||
|
integrity sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-powerpc64le-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz#f669f162e29094c819c509e99dbeced58fc708f9"
|
||||||
|
integrity sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz#64be13d51852ec1e2dfbd25d997ed5f42f35ea6d"
|
||||||
|
integrity sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz#4bab37353b11bcda5a74ca11b99dea929657fd5f"
|
||||||
|
integrity sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-riscv64-musl@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz#4d66be1ce3cfd40a7910eb34dddc7cbd4c2dd2a5"
|
||||||
|
integrity sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-s390x-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz#31f51e1e05c6264552d03875d9e2e673f0fd86e3"
|
||||||
|
integrity sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-s390x-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz#7181c329395ed53340a0c59678ad304a99627f6d"
|
||||||
|
integrity sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-x64-gnu@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz#f4c95b26f4ad69ebdb64b42f0ae4da2a0f617958"
|
||||||
|
integrity sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-x64-gnu@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz#00825b3458094d5c27cb4ed66e88bfe9f1e65f90"
|
||||||
|
integrity sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-x64-musl@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz#ab7be89192f72beb9ea6e2386186fefde4f69d82"
|
||||||
|
integrity sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==
|
||||||
|
|
||||||
|
"@rollup/rollup-linux-x64-musl@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz#81caac2a31b8754186f3acc142953a178fcd6fba"
|
||||||
|
integrity sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-arm64-msvc@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz#7f12efb8240b238346951559998802722944421e"
|
||||||
|
integrity sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-arm64-msvc@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz#3a3f421f5ce9bd99ed20ce1660cce7cee3e9f199"
|
||||||
|
integrity sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-ia32-msvc@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz#353d14d6eee943004d129796e4feddd3aa260921"
|
||||||
|
integrity sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-ia32-msvc@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz#a44972d5cdd484dfd9cf3705a884bf0c2b7785a7"
|
||||||
|
integrity sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-x64-msvc@4.29.1":
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz#c82f04a09ba481e13857d6f2516e072aaa51b7f4"
|
||||||
|
integrity sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==
|
||||||
|
|
||||||
|
"@rollup/rollup-win32-x64-msvc@4.39.0":
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz#bfe0214e163f70c4fec1c8f7bb8ce266f4c05b7e"
|
||||||
|
integrity sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==
|
||||||
|
|
||||||
|
"@types/estree@1.0.6", "@types/estree@^1.0.0":
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
|
||||||
|
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
||||||
|
|
||||||
|
"@types/estree@1.0.7":
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8"
|
||||||
|
integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
|
||||||
|
|
||||||
|
"@vitest/expect@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.1.1.tgz#d64ddfdcf9e877d805e1eee67bd845bf0708c6c2"
|
||||||
|
integrity sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/spy" "3.1.1"
|
||||||
|
"@vitest/utils" "3.1.1"
|
||||||
|
chai "^5.2.0"
|
||||||
|
tinyrainbow "^2.0.0"
|
||||||
|
|
||||||
|
"@vitest/mocker@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.1.1.tgz#7689d99f87498684c71e9fe9defdbd13ffb7f1ac"
|
||||||
|
integrity sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/spy" "3.1.1"
|
||||||
|
estree-walker "^3.0.3"
|
||||||
|
magic-string "^0.30.17"
|
||||||
|
|
||||||
|
"@vitest/pretty-format@3.1.1", "@vitest/pretty-format@^3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.1.1.tgz#5b4d577771daccfced47baf3bf026ad59b52c283"
|
||||||
|
integrity sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==
|
||||||
|
dependencies:
|
||||||
|
tinyrainbow "^2.0.0"
|
||||||
|
|
||||||
|
"@vitest/runner@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.1.1.tgz#76b598700737089d66c74272b2e1c94ca2891a49"
|
||||||
|
integrity sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/utils" "3.1.1"
|
||||||
|
pathe "^2.0.3"
|
||||||
|
|
||||||
|
"@vitest/snapshot@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.1.1.tgz#42b6aa0d0e2b3b48b95a5c76efdcc66a44cb11f3"
|
||||||
|
integrity sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/pretty-format" "3.1.1"
|
||||||
|
magic-string "^0.30.17"
|
||||||
|
pathe "^2.0.3"
|
||||||
|
|
||||||
|
"@vitest/spy@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.1.1.tgz#deca0b025e151302ab514f38390fd7777e294837"
|
||||||
|
integrity sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==
|
||||||
|
dependencies:
|
||||||
|
tinyspy "^3.0.2"
|
||||||
|
|
||||||
|
"@vitest/utils@3.1.1":
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.1.1.tgz#2893c30219ab6bdf109f07ce5cd287fe8058438d"
|
||||||
|
integrity sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/pretty-format" "3.1.1"
|
||||||
|
loupe "^3.1.3"
|
||||||
|
tinyrainbow "^2.0.0"
|
||||||
|
|
||||||
|
assertion-error@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7"
|
||||||
|
integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==
|
||||||
|
|
||||||
|
cac@^6.7.14:
|
||||||
|
version "6.7.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
|
||||||
|
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
|
||||||
|
|
||||||
|
chai@^5.2.0:
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05"
|
||||||
|
integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==
|
||||||
|
dependencies:
|
||||||
|
assertion-error "^2.0.1"
|
||||||
|
check-error "^2.1.1"
|
||||||
|
deep-eql "^5.0.1"
|
||||||
|
loupe "^3.1.0"
|
||||||
|
pathval "^2.0.0"
|
||||||
|
|
||||||
|
check-error@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
|
||||||
|
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
|
||||||
|
|
||||||
|
debug@^4.1.1, debug@^4.4.0:
|
||||||
|
version "4.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
|
||||||
|
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
||||||
|
dependencies:
|
||||||
|
ms "^2.1.3"
|
||||||
|
|
||||||
|
deep-eql@^5.0.1:
|
||||||
|
version "5.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341"
|
||||||
|
integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==
|
||||||
|
|
||||||
|
es-module-lexer@^1.6.0:
|
||||||
|
version "1.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21"
|
||||||
|
integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==
|
||||||
|
|
||||||
|
esbuild@^0.25.0:
|
||||||
|
version "0.25.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
|
||||||
|
integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
|
||||||
|
optionalDependencies:
|
||||||
|
"@esbuild/aix-ppc64" "0.25.2"
|
||||||
|
"@esbuild/android-arm" "0.25.2"
|
||||||
|
"@esbuild/android-arm64" "0.25.2"
|
||||||
|
"@esbuild/android-x64" "0.25.2"
|
||||||
|
"@esbuild/darwin-arm64" "0.25.2"
|
||||||
|
"@esbuild/darwin-x64" "0.25.2"
|
||||||
|
"@esbuild/freebsd-arm64" "0.25.2"
|
||||||
|
"@esbuild/freebsd-x64" "0.25.2"
|
||||||
|
"@esbuild/linux-arm" "0.25.2"
|
||||||
|
"@esbuild/linux-arm64" "0.25.2"
|
||||||
|
"@esbuild/linux-ia32" "0.25.2"
|
||||||
|
"@esbuild/linux-loong64" "0.25.2"
|
||||||
|
"@esbuild/linux-mips64el" "0.25.2"
|
||||||
|
"@esbuild/linux-ppc64" "0.25.2"
|
||||||
|
"@esbuild/linux-riscv64" "0.25.2"
|
||||||
|
"@esbuild/linux-s390x" "0.25.2"
|
||||||
|
"@esbuild/linux-x64" "0.25.2"
|
||||||
|
"@esbuild/netbsd-arm64" "0.25.2"
|
||||||
|
"@esbuild/netbsd-x64" "0.25.2"
|
||||||
|
"@esbuild/openbsd-arm64" "0.25.2"
|
||||||
|
"@esbuild/openbsd-x64" "0.25.2"
|
||||||
|
"@esbuild/sunos-x64" "0.25.2"
|
||||||
|
"@esbuild/win32-arm64" "0.25.2"
|
||||||
|
"@esbuild/win32-ia32" "0.25.2"
|
||||||
|
"@esbuild/win32-x64" "0.25.2"
|
||||||
|
|
||||||
|
estree-walker@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
|
estree-walker@^3.0.3:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
|
||||||
|
integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "^1.0.0"
|
||||||
|
|
||||||
|
expect-type@^1.2.0:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.1.tgz#af76d8b357cf5fa76c41c09dafb79c549e75f71f"
|
||||||
|
integrity sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==
|
||||||
|
|
||||||
|
fsevents@~2.3.2, fsevents@~2.3.3:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||||
|
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||||
|
|
||||||
|
function-bind@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||||
|
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||||
|
|
||||||
|
globrex@^0.1.2:
|
||||||
|
version "0.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
|
||||||
|
integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
|
||||||
|
|
||||||
|
hasown@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||||
|
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||||
|
dependencies:
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
|
||||||
|
is-core-module@^2.16.0:
|
||||||
|
version "2.16.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
|
||||||
|
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
|
||||||
|
dependencies:
|
||||||
|
hasown "^2.0.2"
|
||||||
|
|
||||||
|
js-tokens@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
|
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||||
|
|
||||||
|
loupe@^3.1.0:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240"
|
||||||
|
integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==
|
||||||
|
|
||||||
|
loupe@^3.1.3:
|
||||||
|
version "3.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2"
|
||||||
|
integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==
|
||||||
|
|
||||||
|
magic-string@^0.30.10, magic-string@^0.30.17:
|
||||||
|
version "0.30.17"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
||||||
|
integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.5.0"
|
||||||
|
|
||||||
|
ms@^2.1.3:
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
|
nanoid@^3.3.8:
|
||||||
|
version "3.3.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
|
||||||
|
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
|
||||||
|
|
||||||
|
path-parse@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||||
|
|
||||||
|
pathe@^2.0.3:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
|
||||||
|
integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
|
||||||
|
|
||||||
|
pathval@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
|
||||||
|
integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
|
||||||
|
|
||||||
|
picocolors@^1.0.0, picocolors@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
||||||
|
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
||||||
|
|
||||||
|
picomatch@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
||||||
|
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
||||||
|
|
||||||
|
postcss@^8.5.3:
|
||||||
|
version "8.5.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
|
||||||
|
integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
|
||||||
|
dependencies:
|
||||||
|
nanoid "^3.3.8"
|
||||||
|
picocolors "^1.1.1"
|
||||||
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
|
resolve@^1.22.1:
|
||||||
|
version "1.22.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
|
||||||
|
integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
|
||||||
|
dependencies:
|
||||||
|
is-core-module "^2.16.0"
|
||||||
|
path-parse "^1.0.7"
|
||||||
|
supports-preserve-symlinks-flag "^1.0.0"
|
||||||
|
|
||||||
|
rollup-plugin-dts@^6.1.1:
|
||||||
|
version "6.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz#46b33f4d1d7f4e66f1171ced9b282ac11a15a254"
|
||||||
|
integrity sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==
|
||||||
|
dependencies:
|
||||||
|
magic-string "^0.30.10"
|
||||||
|
optionalDependencies:
|
||||||
|
"@babel/code-frame" "^7.24.2"
|
||||||
|
|
||||||
|
rollup@^4.29.1:
|
||||||
|
version "4.29.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.29.1.tgz#a9aaaece817e5f778489e5bf82e379cc8a5c05bc"
|
||||||
|
integrity sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "1.0.6"
|
||||||
|
optionalDependencies:
|
||||||
|
"@rollup/rollup-android-arm-eabi" "4.29.1"
|
||||||
|
"@rollup/rollup-android-arm64" "4.29.1"
|
||||||
|
"@rollup/rollup-darwin-arm64" "4.29.1"
|
||||||
|
"@rollup/rollup-darwin-x64" "4.29.1"
|
||||||
|
"@rollup/rollup-freebsd-arm64" "4.29.1"
|
||||||
|
"@rollup/rollup-freebsd-x64" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-arm64-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-arm64-musl" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-loongarch64-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-powerpc64le-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-s390x-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-x64-gnu" "4.29.1"
|
||||||
|
"@rollup/rollup-linux-x64-musl" "4.29.1"
|
||||||
|
"@rollup/rollup-win32-arm64-msvc" "4.29.1"
|
||||||
|
"@rollup/rollup-win32-ia32-msvc" "4.29.1"
|
||||||
|
"@rollup/rollup-win32-x64-msvc" "4.29.1"
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
rollup@^4.30.1:
|
||||||
|
version "4.39.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.39.0.tgz#9dc1013b70c0e2cb70ef28350142e9b81b3f640c"
|
||||||
|
integrity sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==
|
||||||
|
dependencies:
|
||||||
|
"@types/estree" "1.0.7"
|
||||||
|
optionalDependencies:
|
||||||
|
"@rollup/rollup-android-arm-eabi" "4.39.0"
|
||||||
|
"@rollup/rollup-android-arm64" "4.39.0"
|
||||||
|
"@rollup/rollup-darwin-arm64" "4.39.0"
|
||||||
|
"@rollup/rollup-darwin-x64" "4.39.0"
|
||||||
|
"@rollup/rollup-freebsd-arm64" "4.39.0"
|
||||||
|
"@rollup/rollup-freebsd-x64" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-arm64-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-arm64-musl" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-loongarch64-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-powerpc64le-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-riscv64-musl" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-s390x-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-x64-gnu" "4.39.0"
|
||||||
|
"@rollup/rollup-linux-x64-musl" "4.39.0"
|
||||||
|
"@rollup/rollup-win32-arm64-msvc" "4.39.0"
|
||||||
|
"@rollup/rollup-win32-ia32-msvc" "4.39.0"
|
||||||
|
"@rollup/rollup-win32-x64-msvc" "4.39.0"
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
siginfo@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
|
||||||
|
integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
|
||||||
|
|
||||||
|
source-map-js@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||||
|
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||||
|
|
||||||
|
stackback@0.0.2:
|
||||||
|
version "0.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
|
||||||
|
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
|
||||||
|
|
||||||
|
std-env@^3.8.1:
|
||||||
|
version "3.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1"
|
||||||
|
integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==
|
||||||
|
|
||||||
|
style-mod@^4.0.0, style-mod@^4.1.0:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67"
|
||||||
|
integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==
|
||||||
|
|
||||||
|
supports-preserve-symlinks-flag@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||||
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||||
|
|
||||||
|
tinybench@^2.9.0:
|
||||||
|
version "2.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b"
|
||||||
|
integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==
|
||||||
|
|
||||||
|
tinyexec@^0.3.2:
|
||||||
|
version "0.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2"
|
||||||
|
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
|
||||||
|
|
||||||
|
tinypool@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2"
|
||||||
|
integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==
|
||||||
|
|
||||||
|
tinyrainbow@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294"
|
||||||
|
integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==
|
||||||
|
|
||||||
|
tinyspy@^3.0.2:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a"
|
||||||
|
integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==
|
||||||
|
|
||||||
|
tsconfck@^3.0.3:
|
||||||
|
version "3.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.4.tgz#de01a15334962e2feb526824339b51be26712229"
|
||||||
|
integrity sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==
|
||||||
|
|
||||||
|
typescript@^5.7.2:
|
||||||
|
version "5.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6"
|
||||||
|
integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==
|
||||||
|
|
||||||
|
vite-node@3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.1.1.tgz#ad186c07859a6e5fca7c7f563e55fb11b16557bc"
|
||||||
|
integrity sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==
|
||||||
|
dependencies:
|
||||||
|
cac "^6.7.14"
|
||||||
|
debug "^4.4.0"
|
||||||
|
es-module-lexer "^1.6.0"
|
||||||
|
pathe "^2.0.3"
|
||||||
|
vite "^5.0.0 || ^6.0.0"
|
||||||
|
|
||||||
|
vite-tsconfig-paths@^5.1.4:
|
||||||
|
version "5.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz#d9a71106a7ff2c1c840c6f1708042f76a9212ed4"
|
||||||
|
integrity sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==
|
||||||
|
dependencies:
|
||||||
|
debug "^4.1.1"
|
||||||
|
globrex "^0.1.2"
|
||||||
|
tsconfck "^3.0.3"
|
||||||
|
|
||||||
|
"vite@^5.0.0 || ^6.0.0":
|
||||||
|
version "6.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.5.tgz#d093b5fe8eb96e594761584a966ab13f24457820"
|
||||||
|
integrity sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==
|
||||||
|
dependencies:
|
||||||
|
esbuild "^0.25.0"
|
||||||
|
postcss "^8.5.3"
|
||||||
|
rollup "^4.30.1"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.3"
|
||||||
|
|
||||||
|
vitest@^3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.1.1.tgz#39fa2356e510513fccdc5d16465a9fc066ef1fc6"
|
||||||
|
integrity sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==
|
||||||
|
dependencies:
|
||||||
|
"@vitest/expect" "3.1.1"
|
||||||
|
"@vitest/mocker" "3.1.1"
|
||||||
|
"@vitest/pretty-format" "^3.1.1"
|
||||||
|
"@vitest/runner" "3.1.1"
|
||||||
|
"@vitest/snapshot" "3.1.1"
|
||||||
|
"@vitest/spy" "3.1.1"
|
||||||
|
"@vitest/utils" "3.1.1"
|
||||||
|
chai "^5.2.0"
|
||||||
|
debug "^4.4.0"
|
||||||
|
expect-type "^1.2.0"
|
||||||
|
magic-string "^0.30.17"
|
||||||
|
pathe "^2.0.3"
|
||||||
|
std-env "^3.8.1"
|
||||||
|
tinybench "^2.9.0"
|
||||||
|
tinyexec "^0.3.2"
|
||||||
|
tinypool "^1.0.2"
|
||||||
|
tinyrainbow "^2.0.0"
|
||||||
|
vite "^5.0.0 || ^6.0.0"
|
||||||
|
vite-node "3.1.1"
|
||||||
|
why-is-node-running "^2.3.0"
|
||||||
|
|
||||||
|
w3c-keyname@^2.2.4:
|
||||||
|
version "2.2.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
|
||||||
|
integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
|
||||||
|
|
||||||
|
why-is-node-running@^2.3.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04"
|
||||||
|
integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==
|
||||||
|
dependencies:
|
||||||
|
siginfo "^2.0.0"
|
||||||
|
stackback "0.0.2"
|
@ -389,13 +389,6 @@ export class LanguageServerPlugin implements PluginValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (insertText && insertTextFormat === 2) {
|
if (insertText && insertTextFormat === 2) {
|
||||||
// We end with ${} so you can jump to the end of the snippet.
|
|
||||||
// After the last argument.
|
|
||||||
// This is not standard from the lsp so we add it here.
|
|
||||||
if (insertText.endsWith(')')) {
|
|
||||||
// We have a function its safe to insert the ${} at the end.
|
|
||||||
insertText = insertText + '${}'
|
|
||||||
}
|
|
||||||
return snippetCompletion(insertText, completion)
|
return snippetCompletion(insertText, completion)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
238
packages/codemirror-lsp-client/yarn.lock
Normal file
238
packages/codemirror-lsp-client/yarn.lock
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@codemirror/autocomplete@6.18.6":
|
||||||
|
version "6.18.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz#de26e864a1ec8192a1b241eb86addbb612964ddb"
|
||||||
|
integrity sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.17.0"
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/language@^6.0.0", "@codemirror/language@^6.11.0":
|
||||||
|
version "6.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.11.0.tgz#5ae90972601497f4575f30811519d720bf7232c9"
|
||||||
|
integrity sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.23.0"
|
||||||
|
"@lezer/common" "^1.1.0"
|
||||||
|
"@lezer/highlight" "^1.0.0"
|
||||||
|
"@lezer/lr" "^1.0.0"
|
||||||
|
style-mod "^4.0.0"
|
||||||
|
|
||||||
|
"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.2":
|
||||||
|
version "6.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.2.tgz#8eca3a64212a83367dc85475b7d78d5c9b7076c6"
|
||||||
|
integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==
|
||||||
|
dependencies:
|
||||||
|
"@marijn/find-cluster-break" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0":
|
||||||
|
version "6.28.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.28.2.tgz#026d5d2bd315aa015c1a1573b6358eeba7acd004"
|
||||||
|
integrity sha512-A3DmyVfjgPsGIjiJqM/zvODUAPQdQl3ci0ghehYNnbt5x+o76xq+dL5+mMBuysDXnI3kapgOkoeJ0sbtL/3qPw==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.4.0"
|
||||||
|
style-mod "^4.1.0"
|
||||||
|
w3c-keyname "^2.2.4"
|
||||||
|
|
||||||
|
"@cspotcode/source-map-support@^0.8.0":
|
||||||
|
version "0.8.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||||
|
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/trace-mapping" "0.3.9"
|
||||||
|
|
||||||
|
"@jridgewell/resolve-uri@^3.0.3":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
|
||||||
|
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
|
||||||
|
|
||||||
|
"@jridgewell/sourcemap-codec@^1.4.10":
|
||||||
|
version "1.4.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||||
|
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||||
|
|
||||||
|
"@jridgewell/trace-mapping@0.3.9":
|
||||||
|
version "0.3.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||||
|
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/resolve-uri" "^3.0.3"
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||||
|
|
||||||
|
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049"
|
||||||
|
integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==
|
||||||
|
|
||||||
|
"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.2.1":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b"
|
||||||
|
integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@lezer/lr@^1.0.0":
|
||||||
|
version "1.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.1.tgz#fe25f051880a754e820b28148d90aa2a96b8bdd2"
|
||||||
|
integrity sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@marijn/find-cluster-break@^1.0.0":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
|
||||||
|
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
|
||||||
|
|
||||||
|
"@ts-stack/markdown@^1.5.0":
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ts-stack/markdown/-/markdown-1.5.0.tgz#5dc298a20dc3dc040143c5a5948201eb6bf5419d"
|
||||||
|
integrity sha512-ntVX2Kmb2jyTdH94plJohokvDVPvp6CwXHqsa9NVZTK8cOmHDCYNW0j6thIadUVRTStJhxhfdeovLd0owqDxLw==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.3.0"
|
||||||
|
|
||||||
|
"@tsconfig/node10@^1.0.7":
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
|
||||||
|
integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==
|
||||||
|
|
||||||
|
"@tsconfig/node12@^1.0.7":
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
|
||||||
|
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
|
||||||
|
|
||||||
|
"@tsconfig/node14@^1.0.0":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
|
||||||
|
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
|
||||||
|
|
||||||
|
"@tsconfig/node16@^1.0.2":
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
|
||||||
|
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
|
||||||
|
|
||||||
|
"@types/node@^22.14.0":
|
||||||
|
version "22.14.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.14.0.tgz#d3bfa3936fef0dbacd79ea3eb17d521c628bb47e"
|
||||||
|
integrity sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==
|
||||||
|
dependencies:
|
||||||
|
undici-types "~6.21.0"
|
||||||
|
|
||||||
|
acorn-walk@^8.1.1:
|
||||||
|
version "8.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e"
|
||||||
|
integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==
|
||||||
|
dependencies:
|
||||||
|
acorn "^8.11.0"
|
||||||
|
|
||||||
|
acorn@^8.11.0, acorn@^8.4.1:
|
||||||
|
version "8.12.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c"
|
||||||
|
integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==
|
||||||
|
|
||||||
|
arg@^4.1.0:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||||
|
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||||
|
|
||||||
|
create-require@^1.1.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||||
|
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||||
|
|
||||||
|
diff@^4.0.1:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||||
|
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||||
|
|
||||||
|
json-rpc-2.0@^1.7.0:
|
||||||
|
version "1.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/json-rpc-2.0/-/json-rpc-2.0-1.7.0.tgz#840deb0bc168463e12bceb462f7fe225e793fc17"
|
||||||
|
integrity sha512-asnLgC1qD5ytP+fvBP8uL0rvj+l8P6iYICbzZ8dVxCpESffVjzA7KkYkbKCIbavs7cllwH1ZUaNtJwphdeRqpg==
|
||||||
|
|
||||||
|
make-error@^1.1.1:
|
||||||
|
version "1.3.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||||
|
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||||
|
|
||||||
|
style-mod@^4.0.0, style-mod@^4.1.0:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67"
|
||||||
|
integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==
|
||||||
|
|
||||||
|
ts-node@^10.9.2:
|
||||||
|
version "10.9.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
|
||||||
|
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
|
||||||
|
dependencies:
|
||||||
|
"@cspotcode/source-map-support" "^0.8.0"
|
||||||
|
"@tsconfig/node10" "^1.0.7"
|
||||||
|
"@tsconfig/node12" "^1.0.7"
|
||||||
|
"@tsconfig/node14" "^1.0.0"
|
||||||
|
"@tsconfig/node16" "^1.0.2"
|
||||||
|
acorn "^8.4.1"
|
||||||
|
acorn-walk "^8.1.1"
|
||||||
|
arg "^4.1.0"
|
||||||
|
create-require "^1.1.0"
|
||||||
|
diff "^4.0.1"
|
||||||
|
make-error "^1.1.1"
|
||||||
|
v8-compile-cache-lib "^3.0.1"
|
||||||
|
yn "3.1.1"
|
||||||
|
|
||||||
|
tslib@^2.3.0:
|
||||||
|
version "2.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
|
||||||
|
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
|
||||||
|
|
||||||
|
typescript@^5.8.3:
|
||||||
|
version "5.8.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
|
||||||
|
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
|
||||||
|
|
||||||
|
undici-types@~6.21.0:
|
||||||
|
version "6.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
|
||||||
|
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
|
||||||
|
|
||||||
|
v8-compile-cache-lib@^3.0.1:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
|
||||||
|
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
||||||
|
|
||||||
|
vscode-jsonrpc@8.2.0:
|
||||||
|
version "8.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9"
|
||||||
|
integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==
|
||||||
|
|
||||||
|
vscode-languageserver-protocol@^3.17.5:
|
||||||
|
version "3.17.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea"
|
||||||
|
integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==
|
||||||
|
dependencies:
|
||||||
|
vscode-jsonrpc "8.2.0"
|
||||||
|
vscode-languageserver-types "3.17.5"
|
||||||
|
|
||||||
|
vscode-languageserver-types@3.17.5:
|
||||||
|
version "3.17.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a"
|
||||||
|
integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==
|
||||||
|
|
||||||
|
vscode-uri@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.1.0.tgz#dd09ec5a66a38b5c3fffc774015713496d14e09c"
|
||||||
|
integrity sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==
|
||||||
|
|
||||||
|
w3c-keyname@^2.2.4:
|
||||||
|
version "2.2.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
|
||||||
|
integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
|
||||||
|
|
||||||
|
yn@3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||||
|
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
@ -45,7 +45,6 @@ export default defineConfig({
|
|||||||
[process.env.CI ? 'dot' : 'list'],
|
[process.env.CI ? 'dot' : 'list'],
|
||||||
['json', { outputFile: './test-results/report.json' }],
|
['json', { outputFile: './test-results/report.json' }],
|
||||||
['html'],
|
['html'],
|
||||||
['./e2e/playwright/lib/api-reporter.ts'],
|
|
||||||
],
|
],
|
||||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
use: {
|
use: {
|
||||||
@ -114,7 +113,7 @@ export default defineConfig({
|
|||||||
|
|
||||||
/* Run your local dev server before starting the tests */
|
/* Run your local dev server before starting the tests */
|
||||||
webServer: {
|
webServer: {
|
||||||
command: 'npm start',
|
command: 'yarn start',
|
||||||
// url: 'http://127.0.0.1:3000',
|
// url: 'http://127.0.0.1:3000',
|
||||||
reuseExistingServer: !process.env.CI,
|
reuseExistingServer: !process.env.CI,
|
||||||
},
|
},
|
||||||
|
@ -45,7 +45,6 @@ export default defineConfig({
|
|||||||
['dot'],
|
['dot'],
|
||||||
['json', { outputFile: './test-results/report.json' }],
|
['json', { outputFile: './test-results/report.json' }],
|
||||||
['html'],
|
['html'],
|
||||||
['./e2e/playwright/lib/api-reporter.ts'],
|
|
||||||
],
|
],
|
||||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
use: {
|
use: {
|
||||||
|
@ -10,25 +10,25 @@ fn dividerSketch(plane) {
|
|||||||
sketch000 = startSketchOn(plane)
|
sketch000 = startSketchOn(plane)
|
||||||
|> startProfileAt([-16.82, 21.2], %)
|
|> startProfileAt([-16.82, 21.2], %)
|
||||||
|> line(end = [-0.13, -1.27])
|
|> line(end = [-0.13, -1.27])
|
||||||
|> tangentialArc(endAbsolute = [-15.94, profileStartY(%) - 7.73])
|
|> tangentialArcTo([-15.94, profileStartY(%) - 7.73], %)
|
||||||
|> tangentialArc(endAbsolute = [-16.6, profileStartY(%) - 15.52])
|
|> tangentialArcTo([-16.6, profileStartY(%) - 15.52], %)
|
||||||
|> tangentialArc(endAbsolute = [-18.38, profileStartY(%) - 18.63])
|
|> tangentialArcTo([-18.38, profileStartY(%) - 18.63], %)
|
||||||
|> line(end = [-1.25, -2.6])
|
|> line(end = [-1.25, -2.6])
|
||||||
|> xLine(length = 6.04)
|
|> xLine(length = 6.04)
|
||||||
|> line(end = [6.68, 7.87])
|
|> line(end = [6.68, 7.87])
|
||||||
|> tangentialArc(endAbsolute = [10.06, profileStartY(%) - 12.69])
|
|> tangentialArcTo([10.06, profileStartY(%) - 12.69], %)
|
||||||
|> line(end = [7.28, -8.47])
|
|> line(end = [7.28, -8.47])
|
||||||
|> xLine(length = 5.98)
|
|> xLine(length = 5.98)
|
||||||
|> line(end = [-1.3, 3.01])
|
|> line(end = [-1.3, 3.01])
|
||||||
|> tangentialArc(endAbsolute = [22.45, profileStartY(%) - 2.84])
|
|> tangentialArcTo([22.45, profileStartY(%) - 2.84], %)
|
||||||
|> tangentialArc(endAbsolute = [25.08, profileStartY(%) + 6.42])
|
|> tangentialArcTo([25.08, profileStartY(%) + 6.42], %)
|
||||||
|> line(end = [2.35, 16.36])
|
|> line(end = [2.35, 16.36])
|
||||||
|> line(end = [1.78, 1.15])
|
|> line(end = [1.78, 1.15])
|
||||||
|> tangentialArc(endAbsolute = [23.93, profileStartY(%) + 27.29])
|
|> tangentialArcTo([23.93, profileStartY(%) + 27.29], %)
|
||||||
|> line(end = [-1.92, 0.21])
|
|> line(end = [-1.92, 0.21])
|
||||||
|> line(end = [-3.74, -26.54])
|
|> line(end = [-3.74, -26.54])
|
||||||
|> tangentialArc(endAbsolute = [15.13, profileStartY(%) - 1.72])
|
|> tangentialArcTo([15.13, profileStartY(%) - 1.72], %)
|
||||||
|> tangentialArc(endAbsolute = profileStart(%))
|
|> tangentialArcTo(profileStart(%), %)
|
||||||
|> close()
|
|> close()
|
||||||
return sketch000
|
return sketch000
|
||||||
}
|
}
|
||||||
|
@ -1,84 +1,47 @@
|
|||||||
// Shelf Bracket
|
// Shelf Bracket
|
||||||
// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.
|
// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.
|
||||||
|
|
||||||
// Set units
|
// Define constants
|
||||||
@settings(defaultLengthUnit = in)
|
|
||||||
|
|
||||||
// Define parameters
|
|
||||||
sigmaAllow = 35000 // psi (6061-T6 aluminum)
|
sigmaAllow = 35000 // psi (6061-T6 aluminum)
|
||||||
width = 5.0
|
width = 6 // inch
|
||||||
p = 300 // Force on shelf - lbs
|
p = 300 // Force on shelf - lbs
|
||||||
fos = 1.2 // Factor of safety of 1.2
|
factorOfSafety = 1.2 // FOS of 1.2
|
||||||
shelfMountLength = 5.0
|
shelfMountL = 5 // inches
|
||||||
wallMountLength = 2.25
|
wallMountL = 2 // inches
|
||||||
shelfDepth = 12 // Shelf is 12 inches deep from the wall
|
shelfDepth = 12 // Shelf is 12 inches in depth from the wall
|
||||||
shelfMountingHoleDiameter = .50
|
moment = shelfDepth * p // assume the force is applied at the end of the shelf to be conservative (lb-in)
|
||||||
wallMountingHoleDiameter = .625
|
|
||||||
|
|
||||||
// Calculated parameters
|
|
||||||
moment = shelfDepth * p // assume the force is applied at the end of the shelf
|
|
||||||
thickness = sqrt(moment * fos * 6 / (sigmaAllow * width)) // required thickness for two brackets to hold up the shelf
|
|
||||||
bendRadius = 0.25
|
|
||||||
extBendRadius = bendRadius + thickness
|
|
||||||
filletRadius = .5
|
|
||||||
shelfMountingHolePlacementOffset = shelfMountingHoleDiameter * 1.5
|
|
||||||
wallMountingHolePlacementOffset = wallMountingHoleDiameter * 1.5
|
|
||||||
|
|
||||||
// Add checks to ensure bracket is possible. These make sure that there is adequate distance between holes and edges.
|
// Calculate required thickness of bracket
|
||||||
assertGreaterThanOrEq(wallMountLength, wallMountingHoleDiameter * 3, "Holes not possible. Either decrease hole diameter or increase wallMountLength")
|
thickness = sqrt(moment * factorOfSafety * 6 / (sigmaAllow * width)) // this is the calculation of two brackets holding up the shelf (inches)
|
||||||
assertGreaterThanOrEq(shelfMountLength, shelfMountingHoleDiameter * 5.5, "wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength")
|
|
||||||
assertGreaterThanOrEq(width, shelfMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width")
|
|
||||||
assertGreaterThanOrEq(width, wallMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width")
|
|
||||||
|
|
||||||
// Create the body of the bracket
|
|
||||||
bracketBody = startSketchOn(XZ)
|
filletRadius = .25
|
||||||
|
extFilletRadius = filletRadius + thickness
|
||||||
|
mountingHoleDiameter = 0.5
|
||||||
|
|
||||||
|
sketch001 = startSketchOn(XZ)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> xLine(length = shelfMountLength - thickness, tag = $seg01)
|
|> xLine(length = shelfMountL - thickness, tag = $seg01)
|
||||||
|> yLine(length = thickness, tag = $seg02)
|
|> yLine(length = thickness, tag = $seg02)
|
||||||
|> xLine(length = -shelfMountLength, tag = $seg03)
|
|> xLine(length = -shelfMountL, tag = $seg03)
|
||||||
|> yLine(length = -wallMountLength, tag = $seg04)
|
|> yLine(length = -wallMountL, tag = $seg04)
|
||||||
|> xLine(length = thickness, tag = $seg05)
|
|> xLine(length = thickness, tag = $seg05)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06)
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(%, length = width)
|
|> extrude(%, length = width)
|
||||||
|
|> fillet(radius = extFilletRadius, tags = [getNextAdjacentEdge(seg03)])
|
||||||
|
|> fillet(radius = filletRadius, tags = [getNextAdjacentEdge(seg06)])
|
||||||
|
|> fillet(radius = filletRadius, tags = [seg02, getOppositeEdge(seg02)])
|
||||||
|
|> fillet(radius = filletRadius, tags = [seg05, getOppositeEdge(seg05)])
|
||||||
|
|
||||||
// Add mounting holes to mount to the shelf
|
sketch002 = startSketchOn(sketch001, seg03)
|
||||||
shelfMountingHoles = startSketchOn(bracketBody, seg03)
|
|> circle(center = [-1.25, 1], radius = mountingHoleDiameter / 2)
|
||||||
|> circle(
|
|> patternLinear2d(instances = 2, distance = 2.5, axis = [-1, 0])
|
||||||
center = [
|
|> patternLinear2d(instances = 2, distance = 4, axis = [0, 1])
|
||||||
-(bendRadius + shelfMountingHolePlacementOffset),
|
|
||||||
shelfMountingHolePlacementOffset
|
|
||||||
],
|
|
||||||
radius = shelfMountingHoleDiameter / 2,
|
|
||||||
)
|
|
||||||
|> patternLinear2d(instances = 2, distance = -(extBendRadius + shelfMountingHolePlacementOffset) + shelfMountLength - shelfMountingHolePlacementOffset, axis = [-1, 0])
|
|
||||||
|> patternLinear2d(instances = 2, distance = width - (shelfMountingHolePlacementOffset * 2), axis = [0, 1])
|
|
||||||
|> extrude(%, length = -thickness - .01)
|
|> extrude(%, length = -thickness - .01)
|
||||||
|
|
||||||
// Add mounting holes to mount to the wall
|
sketch003 = startSketchOn(sketch001, seg04)
|
||||||
wallMountingHoles = startSketchOn(bracketBody, seg04)
|
|> circle(center = [1, -1], radius = mountingHoleDiameter / 2)
|
||||||
|> circle(
|
|> patternLinear2d(instances = 2, distance = 4, axis = [1, 0])
|
||||||
center = [
|
|
||||||
wallMountLength - wallMountingHolePlacementOffset - bendRadius,
|
|
||||||
wallMountingHolePlacementOffset
|
|
||||||
],
|
|
||||||
radius = wallMountingHoleDiameter / 2,
|
|
||||||
)
|
|
||||||
|> patternLinear2d(instances = 2, distance = width - (wallMountingHolePlacementOffset * 2), axis = [0, 1])
|
|
||||||
|> extrude(%, length = -thickness - 0.1)
|
|> extrude(%, length = -thickness - 0.1)
|
||||||
|
|
||||||
// Apply bends
|
|
||||||
fillet(bracketBody, radius = extBendRadius, tags = [getNextAdjacentEdge(seg03)])
|
|
||||||
fillet(bracketBody, radius = bendRadius, tags = [getNextAdjacentEdge(seg06)])
|
|
||||||
|
|
||||||
// Apply corner fillets
|
|
||||||
fillet(
|
|
||||||
bracketBody,
|
|
||||||
radius = filletRadius,
|
|
||||||
tags = [
|
|
||||||
seg02,
|
|
||||||
getOppositeEdge(seg02),
|
|
||||||
seg05,
|
|
||||||
getOppositeEdge(seg05)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
@ -17,42 +17,66 @@ brakeCaliperSketch = startSketchOn(XY)
|
|||||||
0,
|
0,
|
||||||
rotorTotalThickness + caliperTolerance - caliperInnerEdgeRadius
|
rotorTotalThickness + caliperTolerance - caliperInnerEdgeRadius
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = 90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
-caliperPadLength + 2 * caliperInnerEdgeRadius,
|
-caliperPadLength + 2 * caliperInnerEdgeRadius,
|
||||||
0
|
0
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
0,
|
0,
|
||||||
caliperThickness - (caliperInnerEdgeRadius * 2)
|
caliperThickness - (caliperInnerEdgeRadius * 2)
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
caliperPadLength + caliperThickness - caliperOuterEdgeRadius - caliperInnerEdgeRadius,
|
caliperPadLength + caliperThickness - caliperOuterEdgeRadius - caliperInnerEdgeRadius,
|
||||||
0
|
0
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperOuterEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
0,
|
0,
|
||||||
-2 * caliperTolerance - (2 * caliperThickness) - rotorTotalThickness + 2 * caliperOuterEdgeRadius
|
-2 * caliperTolerance - (2 * caliperThickness) - rotorTotalThickness + 2 * caliperOuterEdgeRadius
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperOuterEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
-caliperPadLength - caliperThickness + caliperOuterEdgeRadius + caliperInnerEdgeRadius,
|
-caliperPadLength - caliperThickness + caliperOuterEdgeRadius + caliperInnerEdgeRadius,
|
||||||
0
|
0
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
0,
|
0,
|
||||||
caliperThickness - (2 * caliperInnerEdgeRadius)
|
caliperThickness - (2 * caliperInnerEdgeRadius)
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = -90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> line(end = [
|
|> line(end = [
|
||||||
caliperPadLength - (2 * caliperInnerEdgeRadius),
|
caliperPadLength - (2 * caliperInnerEdgeRadius),
|
||||||
0
|
0
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius)
|
|> tangentialArc({
|
||||||
|
offset = 90,
|
||||||
|
radius = caliperInnerEdgeRadius
|
||||||
|
}, %)
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
// Revolve the brake caliper sketch
|
// Revolve the brake caliper sketch
|
||||||
|
@ -17,7 +17,7 @@ tireSketch = startSketchOn(XY)
|
|||||||
],
|
],
|
||||||
tag = $edge1,
|
tag = $edge1,
|
||||||
)
|
)
|
||||||
|> tangentialArc(angle = -90, radius = bendRadius)
|
|> tangentialArc({ offset = -90, radius = bendRadius }, %)
|
||||||
|> line(endAbsolute = [
|
|> line(endAbsolute = [
|
||||||
tireOuterDiameter / 2,
|
tireOuterDiameter / 2,
|
||||||
tireDepth / 2 - tireTreadOffset
|
tireDepth / 2 - tireTreadOffset
|
||||||
@ -36,7 +36,7 @@ tireSketch = startSketchOn(XY)
|
|||||||
tireOuterDiameter / 2,
|
tireOuterDiameter / 2,
|
||||||
-tireDepth / 2 + bendRadius
|
-tireDepth / 2 + bendRadius
|
||||||
])
|
])
|
||||||
|> tangentialArc(angle = -90, radius = bendRadius)
|
|> tangentialArc({ offset = -90, radius = bendRadius }, %)
|
||||||
|> line(endAbsolute = [tireInnerDiameter / 2, -tireDepth / 2], tag = $edge2)
|
|> line(endAbsolute = [tireInnerDiameter / 2, -tireDepth / 2], tag = $edge2)
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ fn lug(plane, length, diameter) {
|
|||||||
|> angledLine(angle = 70, lengthY = lugHeadLength)
|
|> angledLine(angle = 70, lengthY = lugHeadLength)
|
||||||
|> xLine(endAbsolute = lugDiameter / 2)
|
|> xLine(endAbsolute = lugDiameter / 2)
|
||||||
|> yLine(endAbsolute = lugLength)
|
|> yLine(endAbsolute = lugLength)
|
||||||
|> tangentialArc(angle = 90, radius = fromMm(3))
|
|> tangentialArc({ offset = 90, radius = fromMm(3) }, %)
|
||||||
|> xLine(endAbsolute = 0 + .001, tag = $c1)
|
|> xLine(endAbsolute = 0 + .001, tag = $c1)
|
||||||
|> yLine(endAbsolute = lugThreadDepth)
|
|> yLine(endAbsolute = lugThreadDepth)
|
||||||
|> xLine(endAbsolute = lugThreadDiameter)
|
|> xLine(endAbsolute = lugThreadDiameter)
|
||||||
|
@ -19,11 +19,17 @@ fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle) {
|
|||||||
angleEnd = -90 + helixAngleP,
|
angleEnd = -90 + helixAngleP,
|
||||||
radius = gearPitch
|
radius = gearPitch
|
||||||
}, %)
|
}, %)
|
||||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
|> tangentialArc({
|
||||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
radius = gearPitch * 1.67,
|
||||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
offset = 60
|
||||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
}, %)
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArc({ radius = gearPitch, offset = -180 }, %)
|
||||||
|
|> tangentialArc({
|
||||||
|
radius = gearPitch * 1.67,
|
||||||
|
offset = 60
|
||||||
|
}, %)
|
||||||
|
|> tangentialArc({ radius = gearPitch, offset = -180 }, %)
|
||||||
|
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> hole(circle(center = [0, 0], radius = holeDiameter / 2), %)
|
|> hole(circle(center = [0, 0], radius = holeDiameter / 2), %)
|
||||||
return gearProfile
|
return gearProfile
|
||||||
|
@ -184,15 +184,15 @@ handlePlane = startSketchOn(offsetPlane(XY, offset = handleHeightAboveTheFloor))
|
|||||||
|
|
||||||
handleProfilePath = startProfileAt([0 + handleOffset, 0], handlePlane)
|
handleProfilePath = startProfileAt([0 + handleOffset, 0], handlePlane)
|
||||||
|> yLine(length = -handleLengthSegmentA)
|
|> yLine(length = -handleLengthSegmentA)
|
||||||
|> tangentialArc(endAbsolute = [
|
|> tangentialArcTo([
|
||||||
handleFillet + handleOffset,
|
handleFillet + handleOffset,
|
||||||
-handleDepth
|
-handleDepth
|
||||||
])
|
], %)
|
||||||
|> xLine(length = handleLengthSegmentB)
|
|> xLine(length = handleLengthSegmentB)
|
||||||
|> tangentialArc(endAbsolute = [
|
|> tangentialArcTo([
|
||||||
handleOffset + handleWidth,
|
handleOffset + handleWidth,
|
||||||
-handleLengthSegmentA
|
-handleLengthSegmentA
|
||||||
])
|
], %)
|
||||||
|> yLine(length = handleLengthSegmentA)
|
|> yLine(length = handleLengthSegmentA)
|
||||||
handleSectionPlane = startSketchOn(XZ)
|
handleSectionPlane = startSketchOn(XZ)
|
||||||
handleProfileSection = circle(
|
handleProfileSection = circle(
|
||||||
|
@ -33,9 +33,9 @@ fn primaryTube(n, angle001, length001, length002, length003) {
|
|||||||
sweepPath = startSketchOn(sweepPlane)
|
sweepPath = startSketchOn(sweepPlane)
|
||||||
|> startProfileAt([0, plateHeight], %)
|
|> startProfileAt([0, plateHeight], %)
|
||||||
|> line(end = [0, length001])
|
|> line(end = [0, length001])
|
||||||
|> tangentialArc(angle = -80, radius = bendRadius, tag = $arc01)
|
|> tangentialArc({ offset = -80, radius = bendRadius }, %, $arc01)
|
||||||
|> angledLine(angle = tangentToEnd(arc01), length = length002)
|
|> angledLine(angle = tangentToEnd(arc01), length = length002)
|
||||||
|> tangentialArc(angle = 85, radius = bendRadius, tag = $arc02)
|
|> tangentialArc({ offset = 85, radius = bendRadius }, %, $arc02)
|
||||||
|> angledLine(angle = tangentToEnd(arc02), length = length003)
|
|> angledLine(angle = tangentToEnd(arc02), length = length003)
|
||||||
|
|
||||||
// Create the cross section of each tube and sweep them
|
// Create the cross section of each tube and sweep them
|
||||||
@ -57,21 +57,21 @@ primaryTube(3, 25.2, 5, 5, 3)
|
|||||||
flangeSketch = startSketchOn(XY)
|
flangeSketch = startSketchOn(XY)
|
||||||
|> startProfileAt([3 + 1.3, -1.25], %)
|
|> startProfileAt([3 + 1.3, -1.25], %)
|
||||||
|> xLine(length = -2.6, tag = $seg01)
|
|> xLine(length = -2.6, tag = $seg01)
|
||||||
|> tangentialArc(radius = .3, angle = -40)
|
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||||
|> tangentialArc(radius = .9, angle = 80)
|
|> tangentialArc({ radius = .9, offset = 80 }, %)
|
||||||
|> tangentialArc(radius = .3, angle = -40)
|
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||||
|> xLine(length = -1.4, tag = $seg03)
|
|> xLine(length = -1.4, tag = $seg03)
|
||||||
|> yLine(length = segLen(seg01), tag = $seg04)
|
|> yLine(length = segLen(seg01), tag = $seg04)
|
||||||
|> xLine(length = 3.1, tag = $seg05)
|
|> xLine(length = 3.1, tag = $seg05)
|
||||||
|> tangentialArc(radius = .3, angle = -40)
|
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||||
|> tangentialArc(radius = 1.5, angle = 80)
|
|> tangentialArc({ radius = 1.5, offset = 80 }, %)
|
||||||
|> tangentialArc(radius = .3, angle = -40)
|
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||||
|> xLine(length = segLen(seg05), tag = $seg07)
|
|> xLine(length = segLen(seg05), tag = $seg07)
|
||||||
|> yLine(endAbsolute = profileStartY(%), tag = $seg08)
|
|> yLine(endAbsolute = profileStartY(%), tag = $seg08)
|
||||||
|> xLine(length = -segLen(seg03), tag = $seg09)
|
|> xLine(length = -segLen(seg03), tag = $seg09)
|
||||||
|> tangentialArc(radius = .3, angle = -40)
|
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||||
|> tangentialArc(radius = .9, angle = 80)
|
|> tangentialArc({ radius = .9, offset = 80 }, %)
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close()
|
||||||
|
|
||||||
// Create openings in the flange to accommodate each tube
|
// Create openings in the flange to accommodate each tube
|
||||||
|
@ -36,9 +36,9 @@ fn slot(sketch1, start, end, width) {
|
|||||||
ystart = width / 2 * sin(toRadians(angle - 90)) + start[1]
|
ystart = width / 2 * sin(toRadians(angle - 90)) + start[1]
|
||||||
slotSketch = startProfileAt([xstart, ystart], sketch1)
|
slotSketch = startProfileAt([xstart, ystart], sketch1)
|
||||||
|> angledLine(angle = angle, length = dist)
|
|> angledLine(angle = angle, length = dist)
|
||||||
|> tangentialArc(radius = width / 2, angle = 180)
|
|> tangentialArc({ radius = width / 2, offset = 180 }, %)
|
||||||
|> angledLine(angle = angle, length = -dist)
|
|> angledLine(angle = angle, length = -dist)
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close()
|
||||||
return slotSketch
|
return slotSketch
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ sketch006 = startSketchOn(XZ)
|
|||||||
|> yLine(length = 10)
|
|> yLine(length = 10)
|
||||||
|> line(end = [0.6, 0])
|
|> line(end = [0.6, 0])
|
||||||
|> yLine(length = -.05)
|
|> yLine(length = -.05)
|
||||||
|> tangentialArc(radius = 0.6, angle = -90)
|
|> tangentialArc({ radius = 0.6, offset = -90 }, %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|> revolve(axis = Y)
|
|> revolve(axis = Y)
|
||||||
@ -192,15 +192,15 @@ sketch011 = startSketchOn(XZ)
|
|||||||
sketch012 = startSketchOn(offsetPlane(XZ, offset = handleThickness / 2))
|
sketch012 = startSketchOn(offsetPlane(XZ, offset = handleThickness / 2))
|
||||||
|> startProfileAt([2.3, 6.4], %)
|
|> startProfileAt([2.3, 6.4], %)
|
||||||
|> line(end = [0.56, 0])
|
|> line(end = [0.56, 0])
|
||||||
|> tangentialArc(endAbsolute = [4.1, 5.26])
|
|> tangentialArcTo([4.1, 5.26], %)
|
||||||
|> tangentialArc(endAbsolute = [4.17, 1.6])
|
|> tangentialArcTo([4.17, 1.6], %)
|
||||||
|> tangentialArc(endAbsolute = [3.13, 0.61])
|
|> tangentialArcTo([3.13, 0.61], %)
|
||||||
|> line(end = [-1.09, 0])
|
|> line(end = [-1.09, 0])
|
||||||
|> line(end = [0, 0.43])
|
|> line(end = [0, 0.43])
|
||||||
|> line(end = [0.99, -0.02])
|
|> line(end = [0.99, -0.02])
|
||||||
|> tangentialArc(endAbsolute = [3.63, 1.6])
|
|> tangentialArcTo([3.63, 1.6], %)
|
||||||
|> tangentialArc(endAbsolute = [3.56, 5.15])
|
|> tangentialArcTo([3.56, 5.15], %)
|
||||||
|> tangentialArc(endAbsolute = [2.72, 5.88])
|
|> tangentialArcTo([2.72, 5.88], %)
|
||||||
|> line(end = [-0.4, 0])
|
|> line(end = [-0.4, 0])
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
@ -24,13 +24,13 @@ rackBody = startSketchOn(XY)
|
|||||||
fn tooth() {
|
fn tooth() {
|
||||||
toothSketch = startSketchOn(XY)
|
toothSketch = startSketchOn(XY)
|
||||||
|> startProfileAt([-length / 2 + 0.567672, minHeight], %)
|
|> startProfileAt([-length / 2 + 0.567672, minHeight], %)
|
||||||
|> tangentialArc(end = [0.157636, 0.110378])
|
|> tangentialArcToRelative([0.157636, 0.110378], %)
|
||||||
|> line(end = [0.329118, 0.904244])
|
|> line(end = [0.329118, 0.904244])
|
||||||
|> tangentialArc(end = [0.157636, 0.110378])
|
|> tangentialArcToRelative([0.157636, 0.110378], %)
|
||||||
|> line(end = [0.186505, 0])
|
|> line(end = [0.186505, 0])
|
||||||
|> tangentialArc(end = [0.157636, -0.110378])
|
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||||
|> line(end = [0.329118, -0.904244])
|
|> line(end = [0.329118, -0.904244])
|
||||||
|> tangentialArc(end = [0.157636, -0.110378])
|
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = width)
|
|> extrude(length = width)
|
||||||
return toothSketch
|
return toothSketch
|
||||||
@ -44,7 +44,7 @@ teeth = tooth()
|
|||||||
endCapTooth = startSketchOn(XY)
|
endCapTooth = startSketchOn(XY)
|
||||||
|> startProfileAt([-length / 2, 11.849525], %)
|
|> startProfileAt([-length / 2, 11.849525], %)
|
||||||
|> line(end = [0.314524, -0.864147])
|
|> line(end = [0.314524, -0.864147])
|
||||||
|> tangentialArc(end = [0.157636, -0.110378])
|
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||||
|> line(endAbsolute = [-length / 2, minHeight])
|
|> line(endAbsolute = [-length / 2, minHeight])
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = width)
|
|> extrude(length = width)
|
||||||
@ -53,7 +53,7 @@ endCapTooth = startSketchOn(XY)
|
|||||||
endCapTooth2 = startSketchOn(XY)
|
endCapTooth2 = startSketchOn(XY)
|
||||||
|> startProfileAt([length / 2, 11.849525], %)
|
|> startProfileAt([length / 2, 11.849525], %)
|
||||||
|> line(end = [-0.314524, -0.864147])
|
|> line(end = [-0.314524, -0.864147])
|
||||||
|> tangentialArc(end = [-0.157636, -0.110378])
|
|> tangentialArcToRelative([-0.157636, -0.110378], %)
|
||||||
|> line(endAbsolute = [length / 2, minHeight])
|
|> line(endAbsolute = [length / 2, minHeight])
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = width)
|
|> extrude(length = width)
|
||||||
|
@ -18,7 +18,7 @@ iBeam = startSketchOn(-XZ)
|
|||||||
|> xLine(length = flangeWidth / 2)
|
|> xLine(length = flangeWidth / 2)
|
||||||
|> yLine(length = -flangeThickness)
|
|> yLine(length = -flangeThickness)
|
||||||
|> xLine(endAbsolute = webThickness / 2 + rootRadius)
|
|> xLine(endAbsolute = webThickness / 2 + rootRadius)
|
||||||
|> tangentialArc(radius = rootRadius, angle = 90)
|
|> tangentialArc({ radius = rootRadius, offset = 90 }, %)
|
||||||
|> yLine(endAbsolute = 0)
|
|> yLine(endAbsolute = 0)
|
||||||
|> mirror2d(axis = X)
|
|> mirror2d(axis = X)
|
||||||
|> mirror2d(axis = Y)
|
|> mirror2d(axis = Y)
|
||||||
|
@ -74,11 +74,11 @@ fn keyFn(originStart, keyWidth, keyHeight, repeats, color) {
|
|||||||
radius = 0.1
|
radius = 0.1
|
||||||
}, %)
|
}, %)
|
||||||
|> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001)
|
|> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001)
|
||||||
|> tangentialArc(radius = 0.1, angle = 90)
|
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001)
|
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001)
|
||||||
|> tangentialArc(radius = 0.1, angle = 90)
|
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||||
|> tangentialArc(radius = 0.1, angle = 90)
|
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = keyDepth)
|
|> extrude(length = keyDepth)
|
||||||
|
@ -69,7 +69,7 @@ customPlane = {
|
|||||||
}
|
}
|
||||||
sketch003 = startSketchOn(customPlane)
|
sketch003 = startSketchOn(customPlane)
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> tangentialArc(angle = 60, radius = height)
|
|> tangentialArc({ offset = 60, radius = height }, %)
|
||||||
|> angledLine(angle = 60, endAbsoluteY = 0)
|
|> angledLine(angle = 60, endAbsoluteY = 0)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = wallThickness)
|
|> extrude(length = wallThickness)
|
||||||
@ -85,11 +85,11 @@ sketch004 = startSketchOn(sketch002, 'END')
|
|||||||
|> angledLine(angle = 60, endAbsoluteY = segEndY(seg01))
|
|> angledLine(angle = 60, endAbsoluteY = segEndY(seg01))
|
||||||
|> yLine(endAbsolute = height)
|
|> yLine(endAbsolute = height)
|
||||||
|> xLine(length = wallThickness)
|
|> xLine(length = wallThickness)
|
||||||
|> tangentialArc(endAbsolute = [
|
|> tangentialArcTo([
|
||||||
(frontLength - wallsWidth) / 2 + wallsWidth,
|
(frontLength - wallsWidth) / 2 + wallsWidth,
|
||||||
height - ((height - exitHeight) / 2)
|
height - ((height - exitHeight) / 2)
|
||||||
])
|
], %)
|
||||||
|> tangentialArc(endAbsolute = [frontLength, exitHeight])
|
|> tangentialArcTo([frontLength, exitHeight], %)
|
||||||
|> yLine(endAbsolute = 0)
|
|> yLine(endAbsolute = 0)
|
||||||
|> close(tag = $seg04)
|
|> close(tag = $seg04)
|
||||||
|> extrude(length = wallThickness)
|
|> extrude(length = wallThickness)
|
||||||
@ -110,11 +110,11 @@ sketch005 = startSketchOn(customPlane2)
|
|||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> yLine(endAbsolute = height)
|
|> yLine(endAbsolute = height)
|
||||||
|> xLine(endAbsolute = wallsWidth)
|
|> xLine(endAbsolute = wallsWidth)
|
||||||
|> tangentialArc(endAbsolute = [
|
|> tangentialArcTo([
|
||||||
(frontLength - wallsWidth) / 2 + wallsWidth,
|
(frontLength - wallsWidth) / 2 + wallsWidth,
|
||||||
height - ((height - exitHeight) / 2)
|
height - ((height - exitHeight) / 2)
|
||||||
])
|
], %)
|
||||||
|> tangentialArc(endAbsolute = [frontLength, exitHeight])
|
|> tangentialArcTo([frontLength, exitHeight], %)
|
||||||
|> yLine(endAbsolute = 0, tag = $seg03)
|
|> yLine(endAbsolute = 0, tag = $seg03)
|
||||||
|> close()
|
|> close()
|
||||||
|> extrude(length = wallThickness)
|
|> extrude(length = wallThickness)
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 58 KiB |
@ -37,25 +37,49 @@ bracketProfile = startSketchOn(XZ)
|
|||||||
0
|
0
|
||||||
], %)
|
], %)
|
||||||
|> xLine(length = flangeLength)
|
|> xLine(length = flangeLength)
|
||||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = exteriorBendRadius,
|
||||||
|
offset = bendAngle
|
||||||
|
}, %)
|
||||||
|> angledLine(angle = bendAngle, endAbsoluteY = hatHeight - thickness, tag = $seg01)
|
|> angledLine(angle = bendAngle, endAbsoluteY = hatHeight - thickness, tag = $seg01)
|
||||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = interiorBendRadius,
|
||||||
|
offset = -bendAngle
|
||||||
|
}, %)
|
||||||
|> xLine(endAbsolute = 0, tag = $seg02)
|
|> xLine(endAbsolute = 0, tag = $seg02)
|
||||||
|> xLine(length = segLen(seg02))
|
|> xLine(length = segLen(seg02))
|
||||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = interiorBendRadius,
|
||||||
|
offset = -bendAngle
|
||||||
|
}, %)
|
||||||
|> angledLine(angle = -bendAngle, length = segLen(seg01))
|
|> angledLine(angle = -bendAngle, length = segLen(seg01))
|
||||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = exteriorBendRadius,
|
||||||
|
offset = bendAngle
|
||||||
|
}, %)
|
||||||
|> xLine(length = flangeLength)
|
|> xLine(length = flangeLength)
|
||||||
|> yLine(length = thickness, tag = $seg03)
|
|> yLine(length = thickness, tag = $seg03)
|
||||||
|> xLine(length = -flangeLength, tag = $seg04)
|
|> xLine(length = -flangeLength, tag = $seg04)
|
||||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = interiorBendRadius,
|
||||||
|
offset = -bendAngle
|
||||||
|
}, %)
|
||||||
|> angledLine(angle = 180 - bendAngle, length = segLen(seg01))
|
|> angledLine(angle = 180 - bendAngle, length = segLen(seg01))
|
||||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = exteriorBendRadius,
|
||||||
|
offset = bendAngle
|
||||||
|
}, %)
|
||||||
|> xLine(endAbsolute = 0, tag = $seg05)
|
|> xLine(endAbsolute = 0, tag = $seg05)
|
||||||
|> xLine(length = -segLen(seg05))
|
|> xLine(length = -segLen(seg05))
|
||||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = exteriorBendRadius,
|
||||||
|
offset = bendAngle
|
||||||
|
}, %)
|
||||||
|> angledLine(angle = bendAngle - 180, length = segLen(seg01))
|
|> angledLine(angle = bendAngle - 180, length = segLen(seg01))
|
||||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
|> tangentialArc({
|
||||||
|
radius = interiorBendRadius,
|
||||||
|
offset = -bendAngle
|
||||||
|
}, %)
|
||||||
|> xLine(length = -flangeLength, tag = $seg06)
|
|> xLine(length = -flangeLength, tag = $seg06)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|
||||||
|> close()
|
|> close()
|
||||||
|
48
rust/Cargo.lock
generated
48
rust/Cargo.lock
generated
@ -1780,7 +1780,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1791,7 +1791,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -1810,7 +1810,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@ -1819,7 +1819,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
version = "0.2.61"
|
version = "0.2.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1840,7 +1840,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1860,7 +1860,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-lib"
|
name = "kcl-lib"
|
||||||
version = "0.2.61"
|
version = "0.2.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"approx 0.5.1",
|
"approx 0.5.1",
|
||||||
@ -1928,7 +1928,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-python-bindings"
|
name = "kcl-python-bindings"
|
||||||
version = "0.3.61"
|
version = "0.3.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"kcl-lib",
|
"kcl-lib",
|
||||||
@ -1943,7 +1943,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-test-server"
|
name = "kcl-test-server"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"hyper 0.14.32",
|
"hyper 0.14.32",
|
||||||
@ -1956,7 +1956,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-to-core"
|
name = "kcl-to-core"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -1970,7 +1970,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-wasm-lib"
|
name = "kcl-wasm-lib"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bson",
|
"bson",
|
||||||
"console_error_panic_hook",
|
"console_error_panic_hook",
|
||||||
@ -2033,9 +2033,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kittycad-modeling-cmds"
|
name = "kittycad-modeling-cmds"
|
||||||
version = "0.2.113"
|
version = "0.2.110"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fa1c927569925425a1b03711617c384a30cb7554394e8a6a01266910b22421de"
|
checksum = "bdfd16800a12a2eaefff53958bd871875c246e669274269f7caefc25d19641ad"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -2762,9 +2762,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyo3"
|
name = "pyo3"
|
||||||
version = "0.24.1"
|
version = "0.24.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "17da310086b068fbdcefbba30aeb3721d5bb9af8db4987d6735b2183ca567229"
|
checksum = "7f1c6c3591120564d64db2261bec5f910ae454f01def849b9c22835a84695e86"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"indoc",
|
"indoc",
|
||||||
@ -2781,9 +2781,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyo3-build-config"
|
name = "pyo3-build-config"
|
||||||
version = "0.24.1"
|
version = "0.24.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e27165889bd793000a098bb966adc4300c312497ea25cf7a690a9f0ac5aa5fc1"
|
checksum = "e9b6c2b34cf71427ea37c7001aefbaeb85886a074795e35f161f5aecc7620a7a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"target-lexicon",
|
"target-lexicon",
|
||||||
@ -2791,9 +2791,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyo3-ffi"
|
name = "pyo3-ffi"
|
||||||
version = "0.24.1"
|
version = "0.24.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "05280526e1dbf6b420062f3ef228b78c0c54ba94e157f5cb724a609d0f2faabc"
|
checksum = "5507651906a46432cdda02cd02dd0319f6064f1374c9147c45b978621d2c3a9c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"pyo3-build-config",
|
"pyo3-build-config",
|
||||||
@ -2801,9 +2801,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyo3-macros"
|
name = "pyo3-macros"
|
||||||
version = "0.24.1"
|
version = "0.24.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5c3ce5686aa4d3f63359a5100c62a127c9f15e8398e5fdeb5deef1fed5cd5f44"
|
checksum = "b0d394b5b4fd8d97d48336bb0dd2aebabad39f1d294edd6bcd2cccf2eefe6f42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"pyo3-macros-backend",
|
"pyo3-macros-backend",
|
||||||
@ -2813,9 +2813,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyo3-macros-backend"
|
name = "pyo3-macros-backend"
|
||||||
version = "0.24.1"
|
version = "0.24.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f4cf6faa0cbfb0ed08e89beb8103ae9724eb4750e3a78084ba4017cbe94f3855"
|
checksum = "fd72da09cfa943b1080f621f024d2ef7e2773df7badd51aa30a2be1f8caa7c8e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@ -3956,9 +3956,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.44.2"
|
version = "1.44.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
|
checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
@ -36,10 +36,10 @@ dashmap = { version = "6.1.0" }
|
|||||||
http = "1"
|
http = "1"
|
||||||
indexmap = "2.7.0"
|
indexmap = "2.7.0"
|
||||||
kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] }
|
kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] }
|
||||||
kittycad-modeling-cmds = { version = "0.2.113", features = ["ts-rs", "websocket"] }
|
kittycad-modeling-cmds = { version = "0.2.110", features = ["ts-rs", "websocket"] }
|
||||||
lazy_static = "1.5.0"
|
lazy_static = "1.5.0"
|
||||||
miette = "7.5.0"
|
miette = "7.5.0"
|
||||||
pyo3 = { version = "0.24.1" }
|
pyo3 = { version = "0.24.0" }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_json = { version = "1" }
|
serde_json = { version = "1" }
|
||||||
slog = "2.7.0"
|
slog = "2.7.0"
|
||||||
|
@ -15,7 +15,6 @@ redo-kcl-stdlib-docs:
|
|||||||
TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- kcl_test_example
|
TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- kcl_test_example
|
||||||
TWENTY_TWENTY=overwrite {{cnr}} --workspace --no-fail-fast docs::kcl_doc::test::test_examples
|
TWENTY_TWENTY=overwrite {{cnr}} --workspace --no-fail-fast docs::kcl_doc::test::test_examples
|
||||||
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib
|
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib
|
||||||
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- generate_settings_docs
|
|
||||||
|
|
||||||
# Copy a test KCL file from executor tests into a new simulation test.
|
# Copy a test KCL file from executor tests into a new simulation test.
|
||||||
copy-exec-test-into-sim-test test_name:
|
copy-exec-test-into-sim-test test_name:
|
||||||
@ -51,7 +50,7 @@ bump-kcl-crate-versions bump='patch':
|
|||||||
./target/debug/kcl-bumper --bump {{bump}}
|
./target/debug/kcl-bumper --bump {{bump}}
|
||||||
|
|
||||||
publish-kcl version:
|
publish-kcl version:
|
||||||
git tag kcl-{{version}} -m "Release kcl-{{version}}"
|
git tag kcl-{{version}}
|
||||||
cargo publish -p kcl-derive-docs
|
cargo publish -p kcl-derive-docs
|
||||||
cargo publish -p kcl-directory-test-macro
|
cargo publish -p kcl-directory-test-macro
|
||||||
cargo publish -p kcl-lib
|
cargo publish -p kcl-lib
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/KittyCAD/modeling-api"
|
repository = "https://github.com/KittyCAD/modeling-api"
|
||||||
rust-version = "1.76"
|
rust-version = "1.76"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
description = "A tool for generating documentation from Rust derive macros"
|
description = "A tool for generating documentation from Rust derive macros"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
description = "A tool for generating tests from a directory of kcl files"
|
description = "A tool for generating tests from a directory of kcl files"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.61"
|
version = "0.1.58"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
publish = false
|
publish = false
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
description = "A language server for KCL."
|
description = "A language server for KCL."
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
version = "0.2.61"
|
version = "0.2.58"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
@ -32,7 +32,7 @@ tracing-subscriber = { workspace = true }
|
|||||||
|
|
||||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||||
signal-hook = "0.3.17"
|
signal-hook = "0.3.17"
|
||||||
tokio = { version = "1.44.2", features = ["full"] }
|
tokio = { version = "1.43.0", features = ["full"] }
|
||||||
tower-lsp = { version = "0.20.0", features = ["proposed"] }
|
tower-lsp = { version = "0.20.0", features = ["proposed"] }
|
||||||
|
|
||||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||||
|
@ -85,7 +85,7 @@ args = ["server", "--stdio"]
|
|||||||
## Development
|
## Development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ npm install
|
$ yarn install
|
||||||
$ cargo build
|
$ cargo build
|
||||||
$ code .
|
$ code .
|
||||||
```
|
```
|
||||||
|
@ -9,10 +9,7 @@ export async function createClient(
|
|||||||
serverOptions: lc.ServerOptions
|
serverOptions: lc.ServerOptions
|
||||||
): Promise<lc.LanguageClient> {
|
): Promise<lc.LanguageClient> {
|
||||||
const clientOptions: lc.LanguageClientOptions = {
|
const clientOptions: lc.LanguageClientOptions = {
|
||||||
documentSelector: [
|
documentSelector: [{ scheme: 'file', language: 'kcl' }],
|
||||||
{ scheme: 'file', language: 'kcl' },
|
|
||||||
{ scheme: 'untitled', language: 'kcl' },
|
|
||||||
],
|
|
||||||
initializationOptions,
|
initializationOptions,
|
||||||
traceOutputChannel,
|
traceOutputChannel,
|
||||||
outputChannel,
|
outputChannel,
|
||||||
|
@ -118,14 +118,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"vscode:prepublish": "npm run build-base -- --minify",
|
"vscode:prepublish": "yarn run build-base -- --minify",
|
||||||
"deploy": "vsce publish --npm",
|
"deploy": "vsce publish --yarn",
|
||||||
"build-base": "esbuild ./client/src/main.ts --bundle --outfile=dist/main.js --external:vscode --format=cjs --platform=node --target=node16",
|
"build-base": "esbuild ./client/src/main.ts --bundle --outfile=dist/main.js --external:vscode --format=cjs --platform=node --target=node16",
|
||||||
"test-compile": "tsc -p ./",
|
"test-compile": "tsc -p ./",
|
||||||
"compile": "cross-env NODE_ENV=production tsc -b",
|
"compile": "cross-env NODE_ENV=production tsc -b",
|
||||||
"build": "npm run build-base -- --sourcemap",
|
"build": "yarn run build-base -- --sourcemap",
|
||||||
"watch": "npm run build-base -- --sourcemap --watch",
|
"watch": "yarn run build-base -- --sourcemap --watch",
|
||||||
"pretest": "npm run build && npm run test-compile",
|
"pretest": "yarn run build && yarn test-compile",
|
||||||
"test": "node ./dist/client/src/test/runTest.js",
|
"test": "node ./dist/client/src/test/runTest.js",
|
||||||
"package": "vsce package -o kcl-language-server.vsix"
|
"package": "vsce package -o kcl-language-server.vsix"
|
||||||
},
|
},
|
||||||
|
2435
rust/kcl-language-server/yarn.lock
Normal file
2435
rust/kcl-language-server/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user