Compare commits

..

1 Commits

Author SHA1 Message Date
6e2274a6c4 Bump @tweenjs/tween.js from 23.1.2 to 25.0.0
Bumps [@tweenjs/tween.js](https://github.com/tweenjs/tween.js) from 23.1.2 to 25.0.0.
- [Release notes](https://github.com/tweenjs/tween.js/releases)
- [Commits](https://github.com/tweenjs/tween.js/compare/v23.1.2...v25.0.0)

---
updated-dependencies:
- dependency-name: "@tweenjs/tween.js"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 03:47:59 +00:00
20 changed files with 113 additions and 475 deletions

View File

@ -35,7 +35,7 @@ jobs:
playwright-ubuntu: playwright-ubuntu:
timeout-minutes: 30 timeout-minutes: 30
runs-on: ubuntu-latest runs-on: ubuntu-latest-8-cores
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:

View File

@ -151,12 +151,11 @@ test.describe('Sketch tests', () => {
await page.mouse.click(700, 200) await page.mouse.click(700, 200)
await expect.poll(u.normalisedEditorCode) await expect(page.locator('.cm-content')).toHaveText(
.toBe(`const sketch001 = startSketchOn('XZ') `const sketch001 = startSketchOn('XZ')
|> startProfileAt([12.34, -12.34], %) |> startProfileAt([4.61, -14.01], %)
|> line([-12.34, 12.34], %) |> line([0.31, 16.47], %)`
)
`)
}) })
test('Can exit selection of face', async ({ page }) => { test('Can exit selection of face', async ({ page }) => {
// Load the app with the code panes // Load the app with the code panes

View File

@ -204,24 +204,19 @@ test.describe('Test network and connection issues', () => {
// Ensure we can continue sketching // Ensure we can continue sketching
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20)
await expect.poll(u.normalisedEditorCode) await expect(page.locator('.cm-content'))
.toBe(`const sketch001 = startSketchOn('XZ') .toHaveText(`const sketch001 = startSketchOn('XZ')
|> startProfileAt([12.34, -12.34], %) |> startProfileAt(${commonPoints.startAt}, %)
|> line([12.34, 0], %) |> line([${commonPoints.num1}, 0], %)
|> line([-12.34, 12.34], %) |> line([-8.84, 8.75], %)`)
`)
await page.waitForTimeout(100) await page.waitForTimeout(100)
await page.mouse.click(startXPx, 500 - PUR * 20) await page.mouse.click(startXPx, 500 - PUR * 20)
await expect(page.locator('.cm-content'))
await expect.poll(u.normalisedEditorCode) .toHaveText(`const sketch001 = startSketchOn('XZ')
.toBe(`const sketch001 = startSketchOn('XZ') |> startProfileAt(${commonPoints.startAt}, %)
|> startProfileAt([12.34, -12.34], %) |> line([${commonPoints.num1}, 0], %)
|> line([12.34, 0], %) |> line([-8.84, 8.75], %)
|> line([-12.34, 12.34], %) |> line([-5.6, 0], %)`)
|> line([-12.34, 0], %)
`)
// Unequip line tool // Unequip line tool
await page.keyboard.press('Escape') await page.keyboard.press('Escape')

View File

@ -268,18 +268,6 @@ async function waitForAuthAndLsp(page: Page) {
return waitForLspPromise return waitForLspPromise
} }
export function normaliseKclNumbers(code: string, ignoreZero = true): string {
const numberRegexp = /(?<!\w)-?\b\d+(\.\d+)?\b(?!\w)/g
const replaceNumber = (number: string) => {
if (ignoreZero && (number === '0' || number === '-0')) return number
const sign = number.startsWith('-') ? '-' : ''
return `${sign}12.34`
}
const replaceNumbers = (text: string) =>
text.replace(numberRegexp, replaceNumber)
return replaceNumbers(code)
}
export async function getUtils(page: Page) { export async function getUtils(page: Page) {
// Chrome devtools protocol session only works in Chromium // Chrome devtools protocol session only works in Chromium
const browserType = page.context().browser()?.browserType().name() const browserType = page.context().browser()?.browserType().name()
@ -342,11 +330,6 @@ export async function getUtils(page: Page) {
.boundingBox() .boundingBox()
.then((box) => ({ ...box, x: box?.x || 0, y: box?.y || 0 })), .then((box) => ({ ...box, x: box?.x || 0, y: box?.y || 0 })),
codeLocator: page.locator('.cm-content'), codeLocator: page.locator('.cm-content'),
normalisedEditorCode: async () => {
const code = await page.locator('.cm-content').innerText()
return normaliseKclNumbers(code)
},
normalisedCode: (code: string) => normaliseKclNumbers(code),
canvasLocator: page.getByTestId('client-side-scene'), canvasLocator: page.getByTestId('client-side-scene'),
doAndWaitForCmd: async ( doAndWaitForCmd: async (
fn: () => Promise<void>, fn: () => Promise<void>,

View File

@ -80,11 +80,11 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %, $seg01) |> line([74.36, 130.4], %, $seg01)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> angledLine([segAng(seg01), yo], %) |> angledLine([segAng(seg01), yo], %)
|> line([41.19, 58.97 + 5], %) |> line([41.19, 28.97 + 5], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 120], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-385.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
|> yLine(-170.06, %) |> yLine(-264.06, %)
|> xLine(segLen(seg_what), %) |> xLine(segLen(seg_what), %)
|> lineTo([profileStartX(%), profileStartY(%)], %)` |> lineTo([profileStartX(%), profileStartY(%)], %)`
) )
@ -138,7 +138,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %, $seg01) |> line([74.36, 130.4], %, $seg01)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> angledLine([segAng(seg01), 78.33], %) |> angledLine([segAng(seg01), 78.33], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
@ -237,7 +237,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %) |> line([74.36, 130.4], %)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> line([9.16, 77.79], %) |> line([9.16, 77.79], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
@ -343,7 +343,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %) |> line([74.36, 130.4], %)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> line([9.16, 77.79], %) |> line([9.16, 77.79], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
@ -450,7 +450,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %) |> line([74.36, 130.4], %)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> line([9.16, 77.79], %) |> line([9.16, 77.79], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
@ -560,7 +560,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %) |> line([74.36, 130.4], %)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> line([9.16, 77.79], %) |> line([9.16, 77.79], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)
@ -613,14 +613,14 @@ const part002 = startSketchOn('XZ')
codeAfter: [ codeAfter: [
`|> yLine(130.4, %)`, `|> yLine(130.4, %)`,
`|> yLine(77.79, %)`, `|> yLine(77.79, %)`,
`|> yLine(48.97, %)`, `|> yLine(28.97, %)`,
], ],
}, },
{ {
codeAfter: [ codeAfter: [
`|> xLine(74.36, %)`, `|> xLine(74.36, %)`,
`|> xLine(9.16, %)`, `|> xLine(9.16, %)`,
`|> xLine(51.19, %)`, `|> xLine(41.19, %)`,
], ],
constraintName: 'Horizontal', constraintName: 'Horizontal',
}, },
@ -636,7 +636,7 @@ const part001 = startSketchOn('XZ')
|> line([74.36, 130.4], %) |> line([74.36, 130.4], %)
|> line([78.92, -120.11], %) |> line([78.92, -120.11], %)
|> line([9.16, 77.79], %) |> line([9.16, 77.79], %)
|> line([51.19, 48.97], %) |> line([41.19, 28.97], %)
const part002 = startSketchOn('XZ') const part002 = startSketchOn('XZ')
|> startProfileAt([299.05, 231.45], %) |> startProfileAt([299.05, 231.45], %)
|> xLine(-425.34, %, $seg_what) |> xLine(-425.34, %, $seg_what)

View File

@ -468,7 +468,7 @@ test('Sketch on face', async ({ page }) => {
await u.openAndClearDebugPanel() await u.openAndClearDebugPanel()
await u.doAndWaitForCmd( await u.doAndWaitForCmd(
() => page.mouse.click(625, 165), () => page.mouse.click(625, 133),
'default_camera_get_settings', 'default_camera_get_settings',
true true
) )
@ -498,14 +498,13 @@ test('Sketch on face', async ({ page }) => {
await expect(page.locator('.cm-content')).not.toHaveText(previousCodeContent) await expect(page.locator('.cm-content')).not.toHaveText(previousCodeContent)
previousCodeContent = await page.locator('.cm-content').innerText() previousCodeContent = await page.locator('.cm-content').innerText()
await expect.poll(u.normalisedEditorCode).toContain( await expect(page.locator('.cm-content'))
u.normalisedCode(`const sketch002 = startSketchOn(extrude001, seg01) .toContainText(`const sketch002 = startSketchOn(extrude001, seg01)
|> startProfileAt([-12.94, 6.6], %) |> startProfileAt([-12.94, 6.6], %)
|> line([2.45, -0.2], %) |> line([2.45, -0.2], %)
|> line([-2.6, -1.25], %) |> line([-2.6, -1.25], %)
|> lineTo([profileStartX(%), profileStartY(%)], %) |> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)`) |> close(%)`)
)
await u.openAndClearDebugPanel() await u.openAndClearDebugPanel()
await page.getByRole('button', { name: 'Exit Sketch' }).click() await page.getByRole('button', { name: 'Exit Sketch' }).click()
@ -514,7 +513,7 @@ test('Sketch on face', async ({ page }) => {
await u.updateCamPosition([1049, 239, 686]) await u.updateCamPosition([1049, 239, 686])
await u.closeDebugPanel() await u.closeDebugPanel()
await page.getByText('startProfileAt([-12').click() await page.getByText('startProfileAt([-12.94, 6.6], %)').click()
await expect(page.getByRole('button', { name: 'Edit Sketch' })).toBeVisible() await expect(page.getByRole('button', { name: 'Edit Sketch' })).toBeVisible()
await page.getByRole('button', { name: 'Edit Sketch' }).click() await page.getByRole('button', { name: 'Edit Sketch' }).click()
await page.waitForTimeout(400) await page.waitForTimeout(400)
@ -550,7 +549,7 @@ test('Sketch on face', async ({ page }) => {
await page.getByRole('button', { name: 'Exit Sketch' }).click() await page.getByRole('button', { name: 'Exit Sketch' }).click()
await u.expectCmdLog('[data-message-type="execution-done"]') await u.expectCmdLog('[data-message-type="execution-done"]')
await page.getByText('startProfileAt([-12').click() await page.getByText('startProfileAt([-12.94, 6.6], %)').click()
await expect(page.getByRole('button', { name: 'Extrude' })).not.toBeDisabled() await expect(page.getByRole('button', { name: 'Extrude' })).not.toBeDisabled()
await page.waitForTimeout(100) await page.waitForTimeout(100)

View File

@ -31,7 +31,7 @@
"@tauri-apps/plugin-shell": "^2.0.0-beta.7", "@tauri-apps/plugin-shell": "^2.0.0-beta.7",
"@tauri-apps/plugin-updater": "^2.0.0-beta.6", "@tauri-apps/plugin-updater": "^2.0.0-beta.6",
"@ts-stack/markdown": "^1.5.0", "@ts-stack/markdown": "^1.5.0",
"@tweenjs/tween.js": "^23.1.1", "@tweenjs/tween.js": "^25.0.0",
"@xstate/inspect": "^0.8.0", "@xstate/inspect": "^0.8.0",
"@xstate/react": "^3.2.2", "@xstate/react": "^3.2.2",
"codemirror": "^6.0.1", "codemirror": "^6.0.1",

View File

@ -9,7 +9,6 @@ import { useModelingContext } from './useModelingContext'
import { getEventForSelectWithPoint } from 'lib/selections' import { getEventForSelectWithPoint } from 'lib/selections'
import { import {
getCapCodeRef, getCapCodeRef,
getExtrudeEdgeCodeRef,
getExtrusionFromSuspectedExtrudeSurface, getExtrusionFromSuspectedExtrudeSurface,
getSolid2dCodeRef, getSolid2dCodeRef,
getWallCodeRef, getWallCodeRef,
@ -61,13 +60,6 @@ export function useEngineConnectionSubscriptions() {
? [codeRef.range] ? [codeRef.range]
: [codeRef.range, extrusion.codeRef.range] : [codeRef.range, extrusion.codeRef.range]
) )
} else if (artifact?.type === 'extrudeEdge') {
const codeRef = getExtrudeEdgeCodeRef(
artifact,
engineCommandManager.artifactGraph
)
if (err(codeRef)) return
editorManager.setHighlightRange([codeRef.range])
} else if (artifact?.type === 'segment') { } else if (artifact?.type === 'segment') {
editorManager.setHighlightRange([ editorManager.setHighlightRange([
artifact?.codeRef?.range || [0, 0], artifact?.codeRef?.range || [0, 0],

View File

@ -35,7 +35,6 @@ export function addFillet(
node: Program, node: Program,
pathToSegmentNode: PathToNode, pathToSegmentNode: PathToNode,
pathToExtrudeNode: PathToNode, pathToExtrudeNode: PathToNode,
edgeType: 'oppositeEdge' | 'adjacentEdge' | 'default',
radius = createLiteral(5) as Value radius = createLiteral(5) as Value
// shouldPipe = false, // TODO: Implement this feature // shouldPipe = false, // TODO: Implement this feature
): { modifiedAst: Program; pathToFilletNode: PathToNode } | Error { ): { modifiedAst: Program; pathToFilletNode: PathToNode } | Error {
@ -85,18 +84,10 @@ export function addFillet(
*/ */
// Create the fillet call expression in one line // Create the fillet call expression in one line
let tagCall: Value = createIdentifier(tag)
if (edgeType === 'oppositeEdge') {
tagCall = createCallExpressionStdLib('getOppositeEdge', [tagCall])
} else if (edgeType === 'adjacentEdge') {
tagCall = createCallExpressionStdLib('getNextAdjacentEdge', [tagCall])
}
const filletCall = createCallExpressionStdLib('fillet', [ const filletCall = createCallExpressionStdLib('fillet', [
createObjectExpression({ createObjectExpression({
radius: radius, radius: radius,
tags: createArrayExpression([tagCall]), tags: createArrayExpression([createIdentifier(tag)]),
}), }),
createPipeSubstitution(), createPipeSubstitution(),
]) ])
@ -187,13 +178,11 @@ export function addFillet(
extrudeDeclarator.init = createPipeExpression([extrudeInit, filletCall]) extrudeDeclarator.init = createPipeExpression([extrudeInit, filletCall])
return { return {
modifiedAst: _node, modifiedAst: _node,
pathToFilletNode: [], pathToFilletNode: getPathToNodeOfFilletLiteral(
// TODO fix and re-enable this pathToExtrudeNode,
// pathToFilletNode: getPathToNodeOfFilletLiteral( extrudeDeclarator,
// pathToExtrudeNode, tag
// extrudeDeclarator, ),
// tag
// ),
} }
} else if (extrudeInit.type === 'PipeExpression') { } else if (extrudeInit.type === 'PipeExpression') {
// 2. fillet case // 2. fillet case

View File

@ -58,10 +58,7 @@ Map {
92, 92,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
@ -80,10 +77,7 @@ Map {
], ],
}, },
"edgeCutId": "UUID", "edgeCutId": "UUID",
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
@ -101,10 +95,7 @@ Map {
156, 156,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
@ -122,10 +113,7 @@ Map {
209, 209,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
@ -164,16 +152,7 @@ Map {
266, 266,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceIds": [ "surfaceIds": [
"UUID", "UUID",
@ -230,54 +209,6 @@ Map {
"type": "cap", "type": "cap",
}, },
"UUID-15" => { "UUID-15" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-16" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-17" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-18" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-19" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-20" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-21" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-22" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-23" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -295,7 +226,7 @@ Map {
"subType": "fillet", "subType": "fillet",
"type": "edgeCut", "type": "edgeCut",
}, },
"UUID-24" => { "UUID-16" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -319,7 +250,7 @@ Map {
"solid2dId": "UUID", "solid2dId": "UUID",
"type": "path", "type": "path",
}, },
"UUID-25" => { "UUID-17" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -332,15 +263,12 @@ Map {
416, 416,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
}, },
"UUID-26" => { "UUID-18" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -353,15 +281,12 @@ Map {
438, 438,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
}, },
"UUID-27" => { "UUID-19" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -374,15 +299,12 @@ Map {
491, 491,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceId": "UUID", "surfaceId": "UUID",
"type": "segment", "type": "segment",
}, },
"UUID-28" => { "UUID-20" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -399,11 +321,11 @@ Map {
"pathId": "UUID", "pathId": "UUID",
"type": "segment", "type": "segment",
}, },
"UUID-29" => { "UUID-21" => {
"pathId": "UUID", "pathId": "UUID",
"type": "solid2D", "type": "solid2D",
}, },
"UUID-30" => { "UUID-22" => {
"codeRef": { "codeRef": {
"pathToNode": [ "pathToNode": [
[ [
@ -416,14 +338,7 @@ Map {
546, 546,
], ],
}, },
"edgeIds": [ "edgeIds": [],
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
"UUID",
],
"pathId": "UUID", "pathId": "UUID",
"surfaceIds": [ "surfaceIds": [
"UUID", "UUID",
@ -434,76 +349,40 @@ Map {
], ],
"type": "extrusion", "type": "extrusion",
}, },
"UUID-31" => { "UUID-23" => {
"edgeCutEdgeIds": [], "edgeCutEdgeIds": [],
"extrusionId": "UUID", "extrusionId": "UUID",
"pathIds": [], "pathIds": [],
"segId": "UUID", "segId": "UUID",
"type": "wall", "type": "wall",
}, },
"UUID-32" => { "UUID-24" => {
"edgeCutEdgeIds": [], "edgeCutEdgeIds": [],
"extrusionId": "UUID", "extrusionId": "UUID",
"pathIds": [], "pathIds": [],
"segId": "UUID", "segId": "UUID",
"type": "wall", "type": "wall",
}, },
"UUID-33" => { "UUID-25" => {
"edgeCutEdgeIds": [], "edgeCutEdgeIds": [],
"extrusionId": "UUID", "extrusionId": "UUID",
"pathIds": [], "pathIds": [],
"segId": "UUID", "segId": "UUID",
"type": "wall", "type": "wall",
}, },
"UUID-34" => { "UUID-26" => {
"edgeCutEdgeIds": [], "edgeCutEdgeIds": [],
"extrusionId": "UUID", "extrusionId": "UUID",
"pathIds": [], "pathIds": [],
"subType": "start", "subType": "start",
"type": "cap", "type": "cap",
}, },
"UUID-35" => { "UUID-27" => {
"edgeCutEdgeIds": [], "edgeCutEdgeIds": [],
"extrusionId": "UUID", "extrusionId": "UUID",
"pathIds": [], "pathIds": [],
"subType": "end", "subType": "end",
"type": "cap", "type": "cap",
}, },
"UUID-36" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-37" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-38" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-39" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
"UUID-40" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "opposite",
"type": "extrudeEdge",
},
"UUID-41" => {
"extrusionId": "UUID",
"segId": "UUID",
"subType": "adjacent",
"type": "extrudeEdge",
},
} }
`; `;

View File

@ -251,7 +251,7 @@ describe('testing createArtifactGraph', () => {
// of the edges refers to a non-existent node, the graph will throw. // of the edges refers to a non-existent node, the graph will throw.
// further more we can check that each edge is bi-directional, if it's not // further more we can check that each edge is bi-directional, if it's not
// by checking the arrow heads going both ways, on the graph. // by checking the arrow heads going both ways, on the graph.
await GraphTheGraph(theMap, 2000, 2000, 'exampleCode1.png') await GraphTheGraph(theMap, 1400, 1400, 'exampleCode1.png')
}, 20000) }, 20000)
}) })
}) })
@ -275,7 +275,7 @@ describe('capture graph of sketchOnFaceOnFace...', () => {
// of the edges refers to a non-existent node, the graph will throw. // of the edges refers to a non-existent node, the graph will throw.
// further more we can check that each edge is bi-directional, if it's not // further more we can check that each edge is bi-directional, if it's not
// by checking the arrow heads going both ways, on the graph. // by checking the arrow heads going both ways, on the graph.
await GraphTheGraph(theMap, 3000, 3000, 'sketchOnFaceOnFaceEtc.png') await GraphTheGraph(theMap, 2500, 2500, 'sketchOnFaceOnFaceEtc.png')
}, 20000) }, 20000)
}) })
}) })
@ -607,7 +607,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'segment', type: 'segment',
pathId: expect.any(String), pathId: expect.any(String),
surfaceId: expect.any(String), surfaceId: expect.any(String),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [98, 125], range: [98, 125],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -627,7 +627,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'segment', type: 'segment',
pathId: expect.any(String), pathId: expect.any(String),
surfaceId: expect.any(String), surfaceId: expect.any(String),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [162, 209], range: [162, 209],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -637,7 +637,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -654,7 +654,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'segment', type: 'segment',
pathId: expect.any(String), pathId: expect.any(String),
surfaceId: expect.any(String), surfaceId: expect.any(String),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [131, 156], range: [131, 156],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -664,7 +664,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -681,7 +681,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'segment', type: 'segment',
pathId: expect.any(String), pathId: expect.any(String),
surfaceId: expect.any(String), surfaceId: expect.any(String),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [98, 125], range: [98, 125],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -692,7 +692,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -709,7 +709,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'segment', type: 'segment',
pathId: expect.any(String), pathId: expect.any(String),
surfaceId: expect.any(String), surfaceId: expect.any(String),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [76, 92], range: [76, 92],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -719,7 +719,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -736,7 +736,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],
@ -753,7 +753,7 @@ describe('testing getArtifactsToUpdate', () => {
type: 'extrusion', type: 'extrusion',
pathId: expect.any(String), pathId: expect.any(String),
surfaceIds: expect.any(Array), surfaceIds: expect.any(Array),
edgeIds: expect.any(Array), edgeIds: [],
codeRef: { codeRef: {
range: [243, 266], range: [243, 266],
pathToNode: [['body', '']], pathToNode: [['body', '']],

View File

@ -86,11 +86,12 @@ interface CapArtifact {
extrusionId: string extrusionId: string
pathIds: Array<string> pathIds: Array<string>
} }
export interface ExtrudeEdge {
interface ExtrudeEdge {
type: 'extrudeEdge' type: 'extrudeEdge'
segId: string segId: string
extrusionId: string extrusionId: string
subType: 'opposite' | 'adjacent' edgeId: string
} }
/** A edgeCut is a more generic term for both fillet or chamfer */ /** A edgeCut is a more generic term for both fillet or chamfer */
@ -421,54 +422,6 @@ export function getArtifactsToUpdate({
} }
}) })
return returnArr return returnArr
} else if (
(cmd.type === 'solid3d_get_opposite_edge' &&
response.type === 'modeling' &&
response.data.modeling_response.type === 'solid3d_get_opposite_edge' &&
response.data.modeling_response.data.edge) ||
(cmd.type === 'solid3d_get_prev_adjacent_edge' &&
response.type === 'modeling' &&
response.data.modeling_response.type ===
'solid3d_get_prev_adjacent_edge' &&
response.data.modeling_response.data.edge)
) {
const wall = getArtifact(cmd.face_id)
if (wall?.type !== 'wall') return returnArr
const extrusion = getArtifact(wall.extrusionId)
if (extrusion?.type !== 'extrusion') return returnArr
const path = getArtifact(extrusion.pathId)
if (path?.type !== 'path') return returnArr
const segment = getArtifact(cmd.edge_id)
if (segment?.type !== 'segment') return returnArr
return [
{
id: response.data.modeling_response.data.edge,
artifact: {
type: 'extrudeEdge',
subType:
cmd.type === 'solid3d_get_prev_adjacent_edge'
? 'adjacent'
: 'opposite',
segId: cmd.edge_id,
extrusionId: path.extrusionId,
},
},
{
id: cmd.edge_id,
artifact: {
...segment,
edgeIds: [response.data.modeling_response.data.edge],
},
},
{
id: path.extrusionId,
artifact: {
...extrusion,
edgeIds: [response.data.modeling_response.data.edge],
},
},
]
} else if (cmd.type === 'solid3d_fillet_edge') { } else if (cmd.type === 'solid3d_fillet_edge') {
returnArr.push({ returnArr.push({
id, id,
@ -702,18 +655,6 @@ export function getWallCodeRef(
return seg.codeRef return seg.codeRef
} }
export function getExtrudeEdgeCodeRef(
edge: ExtrudeEdge,
artifactGraph: ArtifactGraph
): CommonCommandProperties | Error {
const seg = getArtifactOfTypes(
{ key: edge.segId, types: ['segment'] },
artifactGraph
)
if (err(seg)) return seg
return seg.codeRef
}
export function getExtrusionFromSuspectedExtrudeSurface( export function getExtrusionFromSuspectedExtrudeSurface(
id: string, id: string,
artifactGraph: ArtifactGraph artifactGraph: ArtifactGraph

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 KiB

After

Width:  |  Height:  |  Size: 371 KiB

View File

@ -30,11 +30,9 @@ import { AXIS_GROUP, X_AXIS } from 'clientSideScene/sceneInfra'
import { PathToNodeMap } from 'lang/std/sketchcombos' import { PathToNodeMap } from 'lang/std/sketchcombos'
import { err } from 'lib/trap' import { err } from 'lib/trap'
import { import {
ExtrudeEdge,
getArtifactOfTypes, getArtifactOfTypes,
getArtifactsOfTypes, getArtifactsOfTypes,
getCapCodeRef, getCapCodeRef,
getExtrudeEdgeCodeRef,
getSolid2dCodeRef, getSolid2dCodeRef,
getWallCodeRef, getWallCodeRef,
} from 'lang/std/artifactGraph' } from 'lang/std/artifactGraph'
@ -58,8 +56,6 @@ export type Selection = {
| 'line' | 'line'
| 'arc' | 'arc'
| 'all' | 'all'
| 'opposite-edge'
| 'adjacent-edge'
range: SourceRange range: SourceRange
} }
export type Selections = { export type Selections = {
@ -89,7 +85,6 @@ export async function getEventForSelectWithPoint({
} }
} }
let _artifact = engineCommandManager.artifactGraph.get(data.entity_id) let _artifact = engineCommandManager.artifactGraph.get(data.entity_id)
console.log('entity id', data.entity_id)
if (!_artifact) if (!_artifact)
return { return {
type: 'Set selection', type: 'Set selection',
@ -146,27 +141,6 @@ export async function getEventForSelectWithPoint({
}, },
} }
} }
if (_artifact.type === 'extrudeEdge') {
const codeRef = getExtrudeEdgeCodeRef(
_artifact,
engineCommandManager.artifactGraph
)
console.log('codeRef', codeRef)
if (err(codeRef)) return null
return {
type: 'Set selection',
data: {
selectionType: 'singleCodeCursor',
selection: {
range: codeRef.range,
type:
_artifact.subType === 'adjacent'
? 'adjacent-edge'
: 'opposite-edge',
},
},
}
}
return null return null
} }
@ -557,25 +531,6 @@ function codeToIdSelections(
bestCandidate = entry bestCandidate = entry
return return
} }
if (
(type === 'opposite-edge' || type === 'adjacent-edge') &&
entry.artifact.type === 'segment'
) {
const tweakedType: ExtrudeEdge['subType'] =
type === 'opposite-edge' ? 'opposite' : 'adjacent'
const edgeArtifact = [
...getArtifactsOfTypes(
{ keys: entry.artifact.edgeIds, types: ['extrudeEdge'] },
engineCommandManager.artifactGraph
),
].find(([_, edge]) => edge.subType === tweakedType)
if (!edgeArtifact) return
bestCandidate = {
artifact: edgeArtifact[1],
selection: { type, range, ...rest },
id: edgeArtifact[0],
}
}
if (type === 'solid2D' && entry.artifact.type === 'path') { if (type === 'solid2D' && entry.artifact.type === 'path') {
const solid = engineCommandManager.artifactGraph.get( const solid = engineCommandManager.artifactGraph.get(
entry.artifact.solid2dId || '' entry.artifact.solid2dId || ''

View File

@ -51,39 +51,4 @@ if (typeof window !== 'undefined') {
padding: 0.2, // padding around the objects padding: 0.2, // padding around the objects
}, },
}) })
;(window as any).getEdgesForAndAskEngineForType = async (faceId: string) => {
// Kurt - Debugging tool used help to show edges aren't stable after further 3d operations
// if this was added more than a few months ago, it probably can be removed.
const face = engineCommandManager.artifactGraph.get(faceId)
if (face?.type !== 'wall') {
console.log('was expecting a wall, you gave me a ', face?.type)
return
}
const extrusion = engineCommandManager.artifactGraph.get(face.extrusionId)
if (extrusion?.type !== 'extrusion') {
console.log('was expecting an extrusion, but got ', extrusion?.type)
return
}
extrusion.edgeIds.forEach(async (edgeId) => {
const result = await engineCommandManager
.sendSceneCommand({
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'get_entity_type',
entity_id: edgeId,
},
})
.catch((a) => console.log('error:', a))
if (!result?.success) return
if (result.resp.type !== 'modeling') return
if (result.resp.data.modeling_response.type !== 'get_entity_type') return
console.log(
'result edge is: ',
result.resp.data.modeling_response.data.entity_type,
' id: ',
edgeId
)
})
}
} }

View File

@ -1197,11 +1197,6 @@ export const modelingMachine = createMachine(
ast, ast,
pathToSegmentNode, pathToSegmentNode,
pathToExtrudeNode, pathToExtrudeNode,
selection.codeBasedSelections[0].type === 'opposite-edge'
? 'oppositeEdge'
: selection.codeBasedSelections[0].type === 'adjacent-edge'
? 'adjacentEdge'
: 'default',
'variableName' in radius 'variableName' in radius
? radius.variableIdentifierAst ? radius.variableIdentifierAst
: radius.valueAst : radius.valueAst
@ -1211,8 +1206,7 @@ export const modelingMachine = createMachine(
const { modifiedAst, pathToFilletNode } = addFilletResult const { modifiedAst, pathToFilletNode } = addFilletResult
const updatedAst = await kclManager.updateAst(modifiedAst, true, { const updatedAst = await kclManager.updateAst(modifiedAst, true, {
// TODO fix and re-enable focusPath: pathToFilletNode,
// focusPath: pathToFilletNode,
}) })
if (updatedAst?.selections) { if (updatedAst?.selections) {
editorManager.selectRange(updatedAst?.selections) editorManager.selectRange(updatedAst?.selections)

View File

@ -1,41 +0,0 @@
import { normaliseKclNumbers } from '../e2e/playwright/test-utils'
test('normaliseKclNumbers', () => {
expect(
normaliseKclNumbers(`const sketch001 = startSketchOn('XY')
|> startProfileAt([-10, 10], %)
|> line([20, 0], %)
|> line([0, -20], %)
|> line([-20, 0], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
const extrude001 = extrude(-15, sketch001)`)
).toBe(`const sketch001 = startSketchOn('XY')
|> startProfileAt([-12.34, 12.34], %)
|> line([12.34, 0], %)
|> line([0, -12.34], %)
|> line([-12.34, 0], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
const extrude001 = extrude(-12.34, sketch001)`)
expect(
normaliseKclNumbers(
`const sketch001 = startSketchOn('XY')
|> startProfileAt([-10, 10], %)
|> line([20, 0], %)
|> line([0, -20], %)
|> line([-20, 0], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
const extrude001 = extrude(-15, sketch001)`,
false
)
).toBe(`const sketch001 = startSketchOn('XY')
|> startProfileAt([-12.34, 12.34], %)
|> line([12.34, 12.34], %)
|> line([12.34, -12.34], %)
|> line([-12.34, 12.34], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
const extrude001 = extrude(-12.34, sketch001)`)
})

View File

@ -181,48 +181,6 @@ pub(crate) async fn do_post_extrude(
vec![] vec![]
}; };
for face_info in face_infos.iter() {
if face_info.cap == kittycad::types::ExtrusionFaceCapType::None
&& face_info.face_id.is_some()
&& face_info.curve_id.is_some()
{
match args
.batch_modeling_cmd(
uuid::Uuid::new_v4(),
kittycad::types::ModelingCmd::Solid3DGetOppositeEdge {
edge_id: face_info.curve_id.unwrap(),
object_id: sketch_group.id,
face_id: face_info.face_id.unwrap_or_default(),
},
)
.await
{
Ok(info) => info,
Err(e) => {
eprintln!("Error fetching opposite edge: {:?}", e);
continue;
}
};
match args
.batch_modeling_cmd(
uuid::Uuid::new_v4(),
kittycad::types::ModelingCmd::Solid3DGetPrevAdjacentEdge {
edge_id: face_info.curve_id.unwrap(),
object_id: sketch_group.id,
face_id: face_info.face_id.unwrap(),
},
)
.await
{
Ok(info) => info,
Err(e) => {
eprintln!("Error fetching adjacent edge: {:?}", e);
continue;
}
};
}
}
// Create a hashmap for quick id lookup // Create a hashmap for quick id lookup
let mut face_id_map = std::collections::HashMap::new(); let mut face_id_map = std::collections::HashMap::new();
// creating fake ids for start and end caps is to make extrudes mock-execute safe // creating fake ids for start and end caps is to make extrudes mock-execute safe

View File

@ -2227,7 +2227,12 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@tweenjs/tween.js@^23.1.1", "@tweenjs/tween.js@~23.1.1": "@tweenjs/tween.js@^25.0.0":
version "25.0.0"
resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-25.0.0.tgz#7266baebcc3affe62a3a54318a3ea82d904cd0b9"
integrity sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==
"@tweenjs/tween.js@~23.1.1":
version "23.1.2" version "23.1.2"
resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-23.1.2.tgz#4e5357fd6742f5aa50447d3fa808aed4cda93ed7" resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-23.1.2.tgz#4e5357fd6742f5aa50447d3fa808aed4cda93ed7"
integrity sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ== integrity sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==
@ -7712,7 +7717,16 @@ string-natural-compare@^3.0.1:
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: "string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3" version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@ -7790,7 +7804,14 @@ string_decoder@~1.1.1:
dependencies: dependencies:
safe-buffer "~5.1.0" safe-buffer "~5.1.0"
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: "strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1" version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@ -8666,7 +8687,7 @@ workerpool@6.2.1:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0" version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@ -8684,6 +8705,15 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0" string-width "^4.1.0"
strip-ansi "^6.0.0" strip-ansi "^6.0.0"
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"
wrap-ansi@^8.1.0: wrap-ansi@^8.1.0:
version "8.1.0" version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"