diff --git a/package.json b/package.json index af72d9b..3f6de92 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dependencies": { "@dicebear/avatars": "^4.10.8", "@dicebear/avatars-bottts-sprites": "^4.10.8", - "@kittycad/lib": "^0.0.20", + "@kittycad/lib": "^0.0.34", "@octokit/openapi-types": "^18.0.0", "@octokit/rest": "^20.0.1", "@octokit/types": "^11.1.0", @@ -17,7 +17,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", - "@types/chrome": "^0.0.241", + "@types/chrome": "^0.0.244", "@types/jest": "^29.5.3", "@types/node": "^20.4.2", "@types/react": "^18.2.15", @@ -80,7 +80,7 @@ "prettier": "^3.0.0", "vite": "^4.4.4", "vite-plugin-node-polyfills": "^0.9.0", - "vitest": "^0.33.0" + "vitest": "^0.34.3" }, "packageManager": "yarn@3.6.0", "engines": { diff --git a/src/chrome/diff.ts b/src/chrome/diff.ts index 3bee2f0..8c436ca 100644 --- a/src/chrome/diff.ts +++ b/src/chrome/diff.ts @@ -8,16 +8,20 @@ import { import { Buffer } from 'buffer' export const extensionToSrcFormat: { - [extension: string]: FileImportFormat_type + [extension: string]: FileImportFormat_type | 'fbx' | 'sldprt' } = { - dae: 'dae', - dxf: 'dxf', + // expected one of `fbx`, `gltf`, `obj`, `ply`, `sldprt`, `step`, `stl` fbx: 'fbx', + gltf: 'gltf', obj: 'obj', - stl: 'stl', + ply: 'ply', + sldprt: 'sldprt', stp: 'step', step: 'step', - svg: 'svg', + stl: 'stl', + + // Disabled in new format api + // dae: 'dae', } export function isFilenameSupported(filename: string): boolean { @@ -71,11 +75,11 @@ async function convert( src_format: extensionToSrcFormat[extension], output_format: outputFormat as FileExportFormat_type, }) - if ('error_code' in response) throw response - const { status, id, output } = response - console.log(`File conversion id: ${id}`) - console.log(`File conversion status: ${status}`) - return output + const key = `source.${outputFormat}` + if ('error_code' in response || !response.outputs[key]) throw response + const { status, id, outputs } = response + console.log(`File conversion: ${id}, ${status}`) + return outputs[key] } export async function getFileDiff( diff --git a/tests/extension.spec.ts b/tests/extension.spec.ts index 6000fb8..b1bf92c 100644 --- a/tests/extension.spec.ts +++ b/tests/extension.spec.ts @@ -108,31 +108,33 @@ test('commit diff with an added .step file', async ({ expect(screenshot).toMatchSnapshot() }) -test('commit diff with a modified .dae file as LFS', async ({ - page, - authorizedBackground, -}) => { - const url = - 'https://github.com/KittyCAD/diff-samples/commit/b009cfd6dd1eb2d0c3ec0d31a21360766ad084e4' - const element = await getFirstDiffElement(page, url, 'dae') - const screenshot = await element.screenshot() - expect(screenshot).toMatchSnapshot() +// TODO: re-enable when .dae are supported +// test('commit diff with a modified .dae file as LFS', async ({ +// page, +// authorizedBackground, +// }) => { +// const url = +// 'https://github.com/KittyCAD/diff-samples/commit/b009cfd6dd1eb2d0c3ec0d31a21360766ad084e4' +// const element = await getFirstDiffElement(page, url, 'dae') +// const screenshot = await element.screenshot() +// expect(screenshot).toMatchSnapshot() - await enableCombined(page, element) - const screenshot2 = await element.screenshot() - expect(screenshot2).toMatchSnapshot() -}) +// await enableCombined(page, element) +// const screenshot2 = await element.screenshot() +// expect(screenshot2).toMatchSnapshot() +// }) -test('blob preview with an .obj file', async ({ - page, - authorizedBackground, -}) => { - const url = - 'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.obj' - const element = await getBlobPreviewElement(page, url) - const screenshot = await element.screenshot() - expect(screenshot).toMatchSnapshot() -}) +// TODO: re-enable when new blob page is fixed +// test('blob preview with an .obj file', async ({ +// page, +// authorizedBackground, +// }) => { +// const url = +// 'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.obj' +// const element = await getBlobPreviewElement(page, url) +// const screenshot = await element.screenshot() +// expect(screenshot).toMatchSnapshot() +// }) test('blob preview with an .stl file', async ({ page, diff --git a/tests/extension.spec.ts-snapshots/blob-preview-with-an-stl-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/blob-preview-with-an-stl-file-1-chromium-linux.png index 4feb9cb..aea64d1 100644 Binary files a/tests/extension.spec.ts-snapshots/blob-preview-with-an-stl-file-1-chromium-linux.png and b/tests/extension.spec.ts-snapshots/blob-preview-with-an-stl-file-1-chromium-linux.png differ diff --git a/tests/extension.spec.ts-snapshots/commit-diff-with-an-added-step-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/commit-diff-with-an-added-step-file-1-chromium-linux.png index f315b89..7b1feee 100644 Binary files a/tests/extension.spec.ts-snapshots/commit-diff-with-an-added-step-file-1-chromium-linux.png and b/tests/extension.spec.ts-snapshots/commit-diff-with-an-added-step-file-1-chromium-linux.png differ diff --git a/tests/extension.spec.ts-snapshots/commit-diff-within-pull-request-with-a-modified-stl-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/commit-diff-within-pull-request-with-a-modified-stl-file-1-chromium-linux.png index b6644f4..43b97eb 100644 Binary files a/tests/extension.spec.ts-snapshots/commit-diff-within-pull-request-with-a-modified-stl-file-1-chromium-linux.png and b/tests/extension.spec.ts-snapshots/commit-diff-within-pull-request-with-a-modified-stl-file-1-chromium-linux.png differ diff --git a/tests/extension.spec.ts-snapshots/pull-request-diff-with-a-modified-step-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/pull-request-diff-with-a-modified-step-file-1-chromium-linux.png index f38b49b..541b477 100644 Binary files a/tests/extension.spec.ts-snapshots/pull-request-diff-with-a-modified-step-file-1-chromium-linux.png and b/tests/extension.spec.ts-snapshots/pull-request-diff-with-a-modified-step-file-1-chromium-linux.png differ diff --git a/yarn.lock b/yarn.lock index 0a5dc37..02efc56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1443,15 +1443,15 @@ __metadata: languageName: node linkType: hard -"@kittycad/lib@npm:^0.0.20": - version: 0.0.20 - resolution: "@kittycad/lib@npm:0.0.20" +"@kittycad/lib@npm:^0.0.34": + version: 0.0.34 + resolution: "@kittycad/lib@npm:0.0.34" dependencies: - node-fetch: 2.6.7 + node-fetch: 3.3.2 openapi-types: ^12.0.0 ts-node: ^10.9.1 tslib: ~2.4 - checksum: 14be882b5dfd8016b37dd22f15701759edd0f78292f09a421fd5416f115eea70ab10d668520ca7dad5bebf9669a9f28d137f2327623191ddb703f167cce706ec + checksum: 63ed11c534f2d6faa69c521554a5eb3f0b3cd2c327d991d3f40b4ff5f7eb3a95c8f871e0c014468a791607070b8ace76bb84ded3cded315484599bc6c9c8db55 languageName: node linkType: hard @@ -2223,13 +2223,13 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:^0.0.241": - version: 0.0.241 - resolution: "@types/chrome@npm:0.0.241" +"@types/chrome@npm:^0.0.244": + version: 0.0.244 + resolution: "@types/chrome@npm:0.0.244" dependencies: "@types/filesystem": "*" "@types/har-format": "*" - checksum: af6cf474ed120b046001c0edf50bb752191369d5205d0b2d1ebcb7548db6b87183a098ee7ab77db1a441eacbf36fbfc3cd5b04a9642a99180a13018ced400984 + checksum: 45f3ba21b558fb9de18b443cfe24864ccd6ae5e90d648deab3f3ae3a3240e11933e8091a1301bbe9136ec72617acc450f31a1362719c3d381f4042e90f8c79be languageName: node linkType: hard @@ -2628,56 +2628,56 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:0.33.0": - version: 0.33.0 - resolution: "@vitest/expect@npm:0.33.0" +"@vitest/expect@npm:0.34.3": + version: 0.34.3 + resolution: "@vitest/expect@npm:0.34.3" dependencies: - "@vitest/spy": 0.33.0 - "@vitest/utils": 0.33.0 + "@vitest/spy": 0.34.3 + "@vitest/utils": 0.34.3 chai: ^4.3.7 - checksum: da6bf8e4a4f23218088b4e7dcdf6eb9f8d92e82a98a674edf8be2f333625179da6802936a948e7a60e0918da53e7ec548183d1d9d42f0e1c4e2d3f66fd63e11f + checksum: 79afaa37d2efb7bb5503332caf389860b2261f198dbe61557e8061262b628d18658e59eb51d1808ecd35fc59f4bb4d04c0e0f97a27c7db02584ab5b424147b8d languageName: node linkType: hard -"@vitest/runner@npm:0.33.0": - version: 0.33.0 - resolution: "@vitest/runner@npm:0.33.0" +"@vitest/runner@npm:0.34.3": + version: 0.34.3 + resolution: "@vitest/runner@npm:0.34.3" dependencies: - "@vitest/utils": 0.33.0 + "@vitest/utils": 0.34.3 p-limit: ^4.0.0 pathe: ^1.1.1 - checksum: de731aa0687cf15f141e81fb11027ff52860292f6d8957678c9fcd307502e4f9fd679bcaff93b53d29eeeb694d403d6aa52d49d341f998ec2b794e7abe061572 + checksum: 945580eaa58e8edbe29a64059bc2a524a9e85117b6d600fdb457cfe84cbfb81bf6d7e98e1227e7cb4e7399992c8fe8d83d0791d0385ff005dc1a4d9da125443b languageName: node linkType: hard -"@vitest/snapshot@npm:0.33.0": - version: 0.33.0 - resolution: "@vitest/snapshot@npm:0.33.0" +"@vitest/snapshot@npm:0.34.3": + version: 0.34.3 + resolution: "@vitest/snapshot@npm:0.34.3" dependencies: magic-string: ^0.30.1 pathe: ^1.1.1 pretty-format: ^29.5.0 - checksum: ff2604d5bf09342eab45109df06f4e2e9e78698bf26b0eed1f4871d7757312e43de90ead938698be3e03e9873d4081ebeb69c94928b8065c53d1e9f28742185e + checksum: 234893e91a1efd4bdbbde047a68de40975e02ead8407724ce8ca4a24edf0fb2d725f8a3efceb104965388407b598faf22407aadfbf4164cc74b3cf1e0e9f4543 languageName: node linkType: hard -"@vitest/spy@npm:0.33.0": - version: 0.33.0 - resolution: "@vitest/spy@npm:0.33.0" +"@vitest/spy@npm:0.34.3": + version: 0.34.3 + resolution: "@vitest/spy@npm:0.34.3" dependencies: tinyspy: ^2.1.1 - checksum: 501a704a10b411f407fbcedeaf1f469e6fcac4894af11fa89c74e6f64bf3eebbcd006cf86377ae379708c0b8c860243db504f5d4e90d382419aa666458b76800 + checksum: a2b64b9c357a56ad2f2340ecd225ffe787e61afba4ffb24a6670aad3fc90ea2606ed48daa188ed62b3ef67d55c0259fda6b101143d6c91b58c9ac4298d8be4f9 languageName: node linkType: hard -"@vitest/utils@npm:0.33.0": - version: 0.33.0 - resolution: "@vitest/utils@npm:0.33.0" +"@vitest/utils@npm:0.34.3": + version: 0.34.3 + resolution: "@vitest/utils@npm:0.34.3" dependencies: diff-sequences: ^29.4.3 loupe: ^2.3.6 pretty-format: ^29.5.0 - checksum: 8c5b381f5599ca517bedd0e46805e91b1150564473d37b2b80ef45aa9c16cb59d296513dd34bc2171904beb28be73b89e5333056539d49a0ba9d513ae7672a0a + checksum: aeb8ef7fd98b32cb6c403796880d0aa8f5411bbdb249bb23b3301a70e1b7d1ee025ddb204aae8c1db5756f6ac428c49ebbb8e2ed23ce185c8a659b67413efa85 languageName: node linkType: hard @@ -3785,6 +3785,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^4.0.0": + version: 4.0.1 + resolution: "data-uri-to-buffer@npm:4.0.1" + checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c + languageName: node + linkType: hard + "data-urls@npm:^4.0.0": version: 4.0.0 resolution: "data-urls@npm:4.0.0" @@ -3995,7 +4002,7 @@ __metadata: "@crxjs/vite-plugin": ^1.0.14 "@dicebear/avatars": ^4.10.8 "@dicebear/avatars-bottts-sprites": ^4.10.8 - "@kittycad/lib": ^0.0.20 + "@kittycad/lib": ^0.0.34 "@octokit/openapi-types": ^18.0.0 "@octokit/rest": ^20.0.1 "@octokit/types": ^11.1.0 @@ -4008,7 +4015,7 @@ __metadata: "@testing-library/jest-dom": ^5.17.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.4.3 - "@types/chrome": ^0.0.241 + "@types/chrome": ^0.0.244 "@types/jest": ^29.5.3 "@types/node": ^20.4.2 "@types/react": ^18.2.15 @@ -4035,7 +4042,7 @@ __metadata: typescript: ^4.9.5 vite: ^4.4.4 vite-plugin-node-polyfills: ^0.9.0 - vitest: ^0.33.0 + vitest: ^0.34.3 languageName: unknown linkType: soft @@ -4801,6 +4808,16 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": + version: 3.2.0 + resolution: "fetch-blob@npm:3.2.0" + dependencies: + node-domexception: ^1.0.0 + web-streams-polyfill: ^3.0.3 + checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf + languageName: node + linkType: hard + "fflate@npm:^0.6.9, fflate@npm:~0.6.9": version: 0.6.10 resolution: "fflate@npm:0.6.10" @@ -4900,6 +4917,15 @@ __metadata: languageName: node linkType: hard +"formdata-polyfill@npm:^4.0.10": + version: 4.0.10 + resolution: "formdata-polyfill@npm:4.0.10" + dependencies: + fetch-blob: ^3.1.2 + checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db + languageName: node + linkType: hard + "fs-extra@npm:^10.0.1": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -6698,17 +6724,21 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f + languageName: node + linkType: hard + +"node-fetch@npm:3.3.2": + version: 3.3.2 + resolution: "node-fetch@npm:3.3.2" dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92 languageName: node linkType: hard @@ -8619,10 +8649,10 @@ __metadata: languageName: node linkType: hard -"tinypool@npm:^0.6.0": - version: 0.6.0 - resolution: "tinypool@npm:0.6.0" - checksum: 996bf3a922993cec568d6b6ddc72531700b2a8aea24623ed6946a8929557b0f17629955d20defda09cb3b12fc94087159f14cb8e06570adce7d1b7d2eef00a91 +"tinypool@npm:^0.7.0": + version: 0.7.0 + resolution: "tinypool@npm:0.7.0" + checksum: fdcccd5c750574fce51f8801a877f8284e145d12b79cd5f2d72bfbddfe20c895e915555bc848e122bb6aa968098e7ac4fe1e8e88104904d518dc01cccd18a510 languageName: node linkType: hard @@ -9043,9 +9073,9 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:0.33.0": - version: 0.33.0 - resolution: "vite-node@npm:0.33.0" +"vite-node@npm:0.34.3": + version: 0.34.3 + resolution: "vite-node@npm:0.34.3" dependencies: cac: ^6.7.14 debug: ^4.3.4 @@ -9055,7 +9085,7 @@ __metadata: vite: ^3.0.0 || ^4.0.0 bin: vite-node: vite-node.mjs - checksum: 7c37911251d3e318fe4ad6b4093207498336ce190a58afb43a9ae701eee7f110ef80920b79061710cf6abcc6335ce58f6ca412ee6b268f25fe10f278c94cc264 + checksum: 366c4f3fb7c038e2180abc6b18cfbac3b8684cd878eaf7ebf1ffb07d95d2ea325713fc575a7949a13bb00cfe264acbc28c02e2836b8647e1f443fe631c17805a languageName: node linkType: hard @@ -9148,18 +9178,18 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^0.33.0": - version: 0.33.0 - resolution: "vitest@npm:0.33.0" +"vitest@npm:^0.34.3": + version: 0.34.3 + resolution: "vitest@npm:0.34.3" dependencies: "@types/chai": ^4.3.5 "@types/chai-subset": ^1.3.3 "@types/node": "*" - "@vitest/expect": 0.33.0 - "@vitest/runner": 0.33.0 - "@vitest/snapshot": 0.33.0 - "@vitest/spy": 0.33.0 - "@vitest/utils": 0.33.0 + "@vitest/expect": 0.34.3 + "@vitest/runner": 0.34.3 + "@vitest/snapshot": 0.34.3 + "@vitest/spy": 0.34.3 + "@vitest/utils": 0.34.3 acorn: ^8.9.0 acorn-walk: ^8.2.0 cac: ^6.7.14 @@ -9172,9 +9202,9 @@ __metadata: std-env: ^3.3.3 strip-literal: ^1.0.1 tinybench: ^2.5.0 - tinypool: ^0.6.0 + tinypool: ^0.7.0 vite: ^3.0.0 || ^4.0.0 - vite-node: 0.33.0 + vite-node: 0.34.3 why-is-node-running: ^2.2.2 peerDependencies: "@edge-runtime/vm": "*" @@ -9204,7 +9234,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: c1884b2a1a41af81ee54c86a986a32b6a4c69ec3b3f7d2322f92c8fad5532d6a12160e7efb7927e4c53d95806ef4ede9549bdd82c66604e281c71056212f56e7 + checksum: 4535d080feede94db5015eb60c6ed5f7b0d8cd67f12072de5ae1faded133cc640043c0c2646ef51ab9b61c2f885589da57458a65e82cf91a25cf954470018a40 languageName: node linkType: hard @@ -9233,6 +9263,13 @@ __metadata: languageName: node linkType: hard +"web-streams-polyfill@npm:^3.0.3": + version: 3.2.1 + resolution: "web-streams-polyfill@npm:3.2.1" + checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 + languageName: node + linkType: hard + "webgl-constants@npm:^1.1.1": version: 1.1.1 resolution: "webgl-constants@npm:1.1.1"