@tscircuit/fake-snippets 0.0.120 → 0.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +1 -2
- package/package.json +4 -1
- package/.github/CODEOWNERS +0 -1
- package/.github/workflows/bun-formatcheck.yml +0 -26
- package/.github/workflows/bun-pver-release.yml +0 -28
- package/.github/workflows/bun-test.yml +0 -28
- package/.github/workflows/bun-typecheck.yml +0 -26
- package/.github/workflows/bundle-size-analysis.yml +0 -79
- package/.github/workflows/stale.yml +0 -40
- package/.github/workflows/update-package.yml +0 -58
- package/.github/workflows/update-snapshots.yml +0 -49
- package/CLAUDE.md +0 -92
- package/CONTRIBUTING.md +0 -59
- package/api/generated-index.js +0 -456
- package/biome.json +0 -67
- package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +0 -141
- package/bun-tests/fake-snippets-api/fixtures/preload.ts +0 -18
- package/bun-tests/fake-snippets-api/fixtures/start-server.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/accounts/get.test.ts +0 -64
- package/bun-tests/fake-snippets-api/routes/accounts/get_account_balance.test.ts +0 -14
- package/bun-tests/fake-snippets-api/routes/ai_reviews/create.test.ts +0 -21
- package/bun-tests/fake-snippets-api/routes/ai_reviews/get.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/ai_reviews/list.test.ts +0 -14
- package/bun-tests/fake-snippets-api/routes/ai_reviews/process_review.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +0 -37
- package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +0 -89
- package/bun-tests/fake-snippets-api/routes/datasheets/create.test.ts +0 -16
- package/bun-tests/fake-snippets-api/routes/datasheets/get.test.ts +0 -54
- package/bun-tests/fake-snippets-api/routes/datasheets/list.test.ts +0 -49
- package/bun-tests/fake-snippets-api/routes/datasheets/process_all_datasheets.test.ts +0 -22
- package/bun-tests/fake-snippets-api/routes/datasheets/run_async_tasks.test.ts +0 -19
- package/bun-tests/fake-snippets-api/routes/health.test.ts +0 -9
- package/bun-tests/fake-snippets-api/routes/order_files/get.test.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/order_files/upload.test.ts +0 -77
- package/bun-tests/fake-snippets-api/routes/order_quotes/create.test.ts +0 -33
- package/bun-tests/fake-snippets-api/routes/orders/create.test.ts +0 -17
- package/bun-tests/fake-snippets-api/routes/orders/get.test.ts +0 -199
- package/bun-tests/fake-snippets-api/routes/orders/list.test.ts +0 -30
- package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +0 -26
- package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +0 -37
- package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +0 -53
- package/bun-tests/fake-snippets-api/routes/orgs/get_member.test.ts +0 -110
- package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +0 -17
- package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +0 -24
- package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +0 -81
- package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +0 -151
- package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -279
- package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -292
- package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +0 -320
- package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +0 -603
- package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +0 -233
- package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +0 -248
- package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +0 -230
- package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +0 -212
- package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +0 -171
- package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +0 -181
- package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +0 -38
- package/bun-tests/fake-snippets-api/routes/package_releases/list.test.ts +0 -149
- package/bun-tests/fake-snippets-api/routes/package_releases/update.test.ts +0 -160
- package/bun-tests/fake-snippets-api/routes/packages/add_star.test.ts +0 -129
- package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +0 -67
- package/bun-tests/fake-snippets-api/routes/packages/delete.test.ts +0 -74
- package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +0 -132
- package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +0 -112
- package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +0 -72
- package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +0 -145
- package/bun-tests/fake-snippets-api/routes/packages/list-2.test.ts +0 -48
- package/bun-tests/fake-snippets-api/routes/packages/list_latest.test.ts +0 -110
- package/bun-tests/fake-snippets-api/routes/packages/list_trending.test.ts +0 -103
- package/bun-tests/fake-snippets-api/routes/packages/remove_star.test.ts +0 -131
- package/bun-tests/fake-snippets-api/routes/packages/update.test.ts +0 -217
- package/bun-tests/fake-snippets-api/routes/proxy.test.ts +0 -42
- package/bun.lock +0 -2724
- package/bunfig.toml +0 -3
- package/components.json +0 -20
- package/docs/CIRCUIT_JSON_SOURCE_COMPONENT_OVERVIEW.md +0 -151
- package/fake-snippets-api/README.md +0 -6
- package/fake-snippets-api/biome.json +0 -47
- package/fake-snippets-api/bun.lockb +0 -0
- package/fake-snippets-api/lib/db/autoload-dev-packages.ts +0 -222
- package/fake-snippets-api/lib/db/autoload-packages.json +0 -8
- package/fake-snippets-api/lib/db/db-client.ts +0 -1857
- package/fake-snippets-api/lib/db/schema.ts +0 -502
- package/fake-snippets-api/lib/db/seed.ts +0 -1843
- package/fake-snippets-api/lib/index.ts +0 -3
- package/fake-snippets-api/lib/middleware/with-ctx-error.ts +0 -26
- package/fake-snippets-api/lib/middleware/with-db.ts +0 -15
- package/fake-snippets-api/lib/middleware/with-error-handling.ts +0 -24
- package/fake-snippets-api/lib/middleware/with-optional-session-auth.ts +0 -53
- package/fake-snippets-api/lib/middleware/with-request-logging.ts +0 -54
- package/fake-snippets-api/lib/middleware/with-session-auth.ts +0 -102
- package/fake-snippets-api/lib/middleware/with-winter-spec.ts +0 -24
- package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +0 -20
- package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +0 -173
- package/fake-snippets-api/lib/package_release/find-package-release-id.ts +0 -120
- package/fake-snippets-api/lib/public-mapping/public-map-org.ts +0 -34
- package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -48
- package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +0 -88
- package/fake-snippets-api/lib/public-mapping/public-map-package.ts +0 -60
- package/fake-snippets-api/lib/with-winter-spec.ts +0 -1
- package/fake-snippets-api/next-env.d.ts +0 -5
- package/fake-snippets-api/routes/api/_fake/ai_reviews/process_review.ts +0 -31
- package/fake-snippets-api/routes/api/_fake/datasheets/process_all_datasheets.ts +0 -38
- package/fake-snippets-api/routes/api/_fake/db.ts +0 -11
- package/fake-snippets-api/routes/api/_fake/move_orders_forward.ts +0 -65
- package/fake-snippets-api/routes/api/_fake/received_quotes.ts +0 -112
- package/fake-snippets-api/routes/api/_fake/run_async_tasks.ts +0 -12
- package/fake-snippets-api/routes/api/_fake/seed.ts +0 -13
- package/fake-snippets-api/routes/api/accounts/get.ts +0 -35
- package/fake-snippets-api/routes/api/accounts/get_account_balance.ts +0 -22
- package/fake-snippets-api/routes/api/accounts/search.ts +0 -20
- package/fake-snippets-api/routes/api/accounts/update.ts +0 -32
- package/fake-snippets-api/routes/api/ai/[...anyroute].ts +0 -31
- package/fake-snippets-api/routes/api/ai.ts +0 -2
- package/fake-snippets-api/routes/api/ai_reviews/create.ts +0 -44
- package/fake-snippets-api/routes/api/ai_reviews/get.ts +0 -24
- package/fake-snippets-api/routes/api/ai_reviews/list.ts +0 -14
- package/fake-snippets-api/routes/api/aistream/[...anyroute].ts +0 -65
- package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -16
- package/fake-snippets-api/routes/api/bug_reports/create.ts +0 -43
- package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +0 -113
- package/fake-snippets-api/routes/api/datasheets/create.ts +0 -18
- package/fake-snippets-api/routes/api/datasheets/get.ts +0 -35
- package/fake-snippets-api/routes/api/datasheets/list.ts +0 -29
- package/fake-snippets-api/routes/api/github/installations/create_new_installation_redirect.ts +0 -75
- package/fake-snippets-api/routes/api/github/repos/list_available.ts +0 -91
- package/fake-snippets-api/routes/api/github/repos/refresh.ts +0 -44
- package/fake-snippets-api/routes/api/health.ts +0 -9
- package/fake-snippets-api/routes/api/internal/sessions/create_without_auth.ts +0 -63
- package/fake-snippets-api/routes/api/order_files/get.ts +0 -28
- package/fake-snippets-api/routes/api/order_files/upload.ts +0 -46
- package/fake-snippets-api/routes/api/order_quotes/create.ts +0 -60
- package/fake-snippets-api/routes/api/order_quotes/create_all_vendor_quotes.ts +0 -30
- package/fake-snippets-api/routes/api/order_quotes/get.ts +0 -29
- package/fake-snippets-api/routes/api/orders/create.ts +0 -70
- package/fake-snippets-api/routes/api/orders/get.ts +0 -168
- package/fake-snippets-api/routes/api/orders/list.ts +0 -15
- package/fake-snippets-api/routes/api/orgs/add_member.ts +0 -52
- package/fake-snippets-api/routes/api/orgs/create.ts +0 -48
- package/fake-snippets-api/routes/api/orgs/get.ts +0 -39
- package/fake-snippets-api/routes/api/orgs/get_member.ts +0 -67
- package/fake-snippets-api/routes/api/orgs/list.ts +0 -31
- package/fake-snippets-api/routes/api/orgs/list_members.ts +0 -106
- package/fake-snippets-api/routes/api/orgs/remove_member.ts +0 -46
- package/fake-snippets-api/routes/api/orgs/update.ts +0 -118
- package/fake-snippets-api/routes/api/package_builds/get.ts +0 -70
- package/fake-snippets-api/routes/api/package_builds/list.ts +0 -97
- package/fake-snippets-api/routes/api/package_files/create.ts +0 -135
- package/fake-snippets-api/routes/api/package_files/create_or_update.ts +0 -194
- package/fake-snippets-api/routes/api/package_files/delete.ts +0 -109
- package/fake-snippets-api/routes/api/package_files/download.ts +0 -87
- package/fake-snippets-api/routes/api/package_files/get.ts +0 -68
- package/fake-snippets-api/routes/api/package_files/list.ts +0 -54
- package/fake-snippets-api/routes/api/package_releases/create.ts +0 -109
- package/fake-snippets-api/routes/api/package_releases/get.ts +0 -137
- package/fake-snippets-api/routes/api/package_releases/list.ts +0 -85
- package/fake-snippets-api/routes/api/package_releases/rebuild.ts +0 -66
- package/fake-snippets-api/routes/api/package_releases/update.ts +0 -122
- package/fake-snippets-api/routes/api/packages/add_star.ts +0 -84
- package/fake-snippets-api/routes/api/packages/create.ts +0 -136
- package/fake-snippets-api/routes/api/packages/delete.ts +0 -41
- package/fake-snippets-api/routes/api/packages/fork.ts +0 -165
- package/fake-snippets-api/routes/api/packages/generate_from_jlcpcb.ts +0 -111
- package/fake-snippets-api/routes/api/packages/get.ts +0 -81
- package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +0 -119
- package/fake-snippets-api/routes/api/packages/list.ts +0 -105
- package/fake-snippets-api/routes/api/packages/list_latest.ts +0 -29
- package/fake-snippets-api/routes/api/packages/list_trending.ts +0 -43
- package/fake-snippets-api/routes/api/packages/remove_star.ts +0 -70
- package/fake-snippets-api/routes/api/packages/search.ts +0 -19
- package/fake-snippets-api/routes/api/packages/update.ts +0 -112
- package/fake-snippets-api/routes/api/packages/update_ai_description.ts +0 -37
- package/fake-snippets-api/routes/api/proxy.ts +0 -128
- package/fake-snippets-api/routes/api/snippets/add_star.ts +0 -62
- package/fake-snippets-api/routes/api/snippets/create.ts +0 -184
- package/fake-snippets-api/routes/api/snippets/delete.ts +0 -41
- package/fake-snippets-api/routes/api/snippets/download.ts +0 -162
- package/fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts +0 -48
- package/fake-snippets-api/routes/api/snippets/get.ts +0 -83
- package/fake-snippets-api/routes/api/snippets/get_image.ts +0 -65
- package/fake-snippets-api/routes/api/snippets/images/[author]/[snippet_name]/[typeFormat].ts +0 -80
- package/fake-snippets-api/routes/api/snippets/list.ts +0 -151
- package/fake-snippets-api/routes/api/snippets/list_latest.ts +0 -13
- package/fake-snippets-api/routes/api/snippets/list_trending.ts +0 -38
- package/fake-snippets-api/routes/api/snippets/remove_star.ts +0 -42
- package/fake-snippets-api/routes/api/snippets/search.ts +0 -18
- package/fake-snippets-api/routes/api/snippets/update.ts +0 -114
- package/fake-snippets-api/utils/normalizeProjectFilePath.ts +0 -60
- package/fake-snippets-api/utils/order-steps.ts +0 -20
- package/favicon.ico +0 -0
- package/index.html +0 -125
- package/landing.html +0 -23
- package/playwright-tests/ai-page.spec.ts +0 -19
- package/playwright-tests/circuit-json-import.spec.ts +0 -133
- package/playwright-tests/cmd-click.spec.ts +0 -43
- package/playwright-tests/dashboard-page.spec.ts +0 -10
- package/playwright-tests/editor-page.spec.ts +0 -15
- package/playwright-tests/exampleCircuitJson.ts +0 -498
- package/playwright-tests/files-dialog.spec.ts +0 -19
- package/playwright-tests/footprint-dialog/footprint-dialog.spec.ts +0 -27
- package/playwright-tests/footprint-dialog/footprint-insertion.spec.ts +0 -38
- package/playwright-tests/footprint-dialog/footprint-preview.spec.ts +0 -34
- package/playwright-tests/footprint-dialog/footprint-selection.spec.ts +0 -29
- package/playwright-tests/handle-manual-edits.spec.ts +0 -55
- package/playwright-tests/home-page.spec.ts +0 -10
- package/playwright-tests/images.spec.ts +0 -17
- package/playwright-tests/manual-edits.spec.ts +0 -89
- package/playwright-tests/preview-page.spec.ts +0 -7
- package/playwright-tests/profile-page.spec.ts +0 -108
- package/playwright-tests/quickstart-page.spec.ts +0 -10
- package/playwright-tests/search-links.spec.ts +0 -21
- package/playwright-tests/search.spec.ts +0 -27
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-lg.png +0 -0
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-md.png +0 -0
- package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-xs.png +0 -0
- package/playwright-tests/snapshots/cmd-click.spec.ts-underlined-imports.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-lg.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-md.png +0 -0
- package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-xs.png +0 -0
- package/playwright-tests/snapshots/editor-page.spec.ts-editor-with-snippet.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-lg.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-md.png +0 -0
- package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-xs.png +0 -0
- package/playwright-tests/snapshots/files-dialog.spec.ts-view-snippet-files.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-lg.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-md.png +0 -0
- package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-xs.png +0 -0
- package/playwright-tests/snapshots/handle-manual-edits.spec.ts-handle-manual-edits.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-lg.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-md.png +0 -0
- package/playwright-tests/snapshots/home-page.spec.ts-Home-page-xs.png +0 -0
- package/playwright-tests/snapshots/images.spec.ts-pcb-image.png +0 -0
- package/playwright-tests/snapshots/images.spec.ts-schematic-image.png +0 -0
- package/playwright-tests/snapshots/manual-edits.spec.ts-editor-manual-edits.png +0 -0
- package/playwright-tests/snapshots/manual-edits.spec.ts-manual-edits-view.png +0 -0
- package/playwright-tests/snapshots/preview-page.spec.ts-preview-snippet-pcb.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-before-delete.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-delete-dialog.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-dropdown-open.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-snippets-tab.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-starred-tab.png +0 -0
- package/playwright-tests/snapshots/profile-page.spec.ts-snippet-page-open-after-star-click.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagelg.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagemd.png +0 -0
- package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagexs.png +0 -0
- package/playwright-tests/snapshots/search-links.spec.ts-search-links.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-lg.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-md.png +0 -0
- package/playwright-tests/snapshots/search.spec.ts-search-xs.png +0 -0
- package/playwright-tests/snapshots/star.spec.ts-remove-star-button.png +0 -0
- package/playwright-tests/snapshots/star.spec.ts-star-button.png +0 -0
- package/playwright-tests/snapshots/update-description.spec.ts-update-description.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-lg.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-md.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-xs.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-lg.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-md.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-xs.png +0 -0
- package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-files.png +0 -0
- package/playwright-tests/star.spec.ts +0 -40
- package/playwright-tests/update-description.spec.ts +0 -18
- package/playwright-tests/view-snippet.spec.ts +0 -35
- package/playwright-tests/viewports.ts +0 -5
- package/playwright.config.ts +0 -27
- package/postcss.config.js +0 -6
- package/public/robots.txt +0 -9
- package/renovate.json +0 -25
- package/scripts/generate-image-sizes.ts +0 -57
- package/scripts/generate-sitemap.ts +0 -103
- package/scripts/generate_bundle_stats.js +0 -208
- package/scripts/snapshot.ts +0 -35
- package/src/App.tsx +0 -314
- package/src/ContextProviders.tsx +0 -94
- package/src/assets/originals/editor_example_1.webp +0 -0
- package/src/assets/originals/editor_example_1_more_square.webp +0 -0
- package/src/assets/originals/editor_example_2.webp +0 -0
- package/src/assets/originals/example_schematic.webp +0 -0
- package/src/components/AiChatMessage.tsx +0 -86
- package/src/components/Analytics.tsx +0 -23
- package/src/components/BomTable.tsx +0 -69
- package/src/components/ChatInput.tsx +0 -53
- package/src/components/CircuitJsonImportDialog.tsx +0 -269
- package/src/components/CircuitToSvgWithMouseControl.tsx +0 -78
- package/src/components/CmdKMenu.tsx +0 -809
- package/src/components/CreateNewSnippetWithAiHero.tsx +0 -81
- package/src/components/CreateReleaseDialog.tsx +0 -124
- package/src/components/DownloadButtonAndMenu.tsx +0 -443
- package/src/components/ErrorFallback.tsx +0 -25
- package/src/components/ErrorOutline.tsx +0 -35
- package/src/components/ErrorTabContent.tsx +0 -122
- package/src/components/ExpandableText.tsx +0 -29
- package/src/components/FAQ.tsx +0 -189
- package/src/components/FileSidebar.tsx +0 -271
- package/src/components/Footer.tsx +0 -144
- package/src/components/GithubAvatarWithFallback.tsx +0 -35
- package/src/components/Header.tsx +0 -202
- package/src/components/Header2.tsx +0 -202
- package/src/components/HeaderDropdown.tsx +0 -88
- package/src/components/HeaderLogin.tsx +0 -105
- package/src/components/HiddenFilesDropdown.tsx +0 -42
- package/src/components/ImageWithFallback.tsx +0 -37
- package/src/components/LatestSnippets.tsx +0 -39
- package/src/components/NotFound.tsx +0 -37
- package/src/components/OptimizedImage.tsx +0 -100
- package/src/components/PackageBreadcrumb.tsx +0 -105
- package/src/components/PackageBuildsPage/ErrorObject.ts +0 -12
- package/src/components/PackageBuildsPage/capitalCase.ts +0 -4
- package/src/components/PackageBuildsPage/getColorForDisplayStatus.ts +0 -17
- package/src/components/PackageCard.tsx +0 -191
- package/src/components/PackageCardSkeleton.tsx +0 -17
- package/src/components/PackageLink.tsx +0 -29
- package/src/components/PackageSearchResults.tsx +0 -81
- package/src/components/PackagesList.tsx +0 -71
- package/src/components/PcbViewerWithContainerHeight.tsx +0 -47
- package/src/components/PrefetchPageLink.tsx +0 -114
- package/src/components/PreviewEmptyState.tsx +0 -16
- package/src/components/ProfileRouter.tsx +0 -30
- package/src/components/RunButton.tsx +0 -27
- package/src/components/SearchComponent.tsx +0 -282
- package/src/components/SentryNotFoundReporter.tsx +0 -44
- package/src/components/SnippetTypeIcon.tsx +0 -60
- package/src/components/StaticPreviewContent.tsx +0 -89
- package/src/components/StaticViewSnippetSidebar.tsx +0 -100
- package/src/components/SuspenseRunFrame.tsx +0 -28
- package/src/components/TableViewer/CircuitJsonTableViewer.tsx +0 -316
- package/src/components/TableViewer/ClickableText.tsx +0 -21
- package/src/components/TableViewer/HeaderCell.tsx +0 -27
- package/src/components/TableViewer/Modal.tsx +0 -39
- package/src/components/TrendingPackagesCarousel.tsx +0 -79
- package/src/components/TypeBadge.tsx +0 -31
- package/src/components/UserCard.tsx +0 -80
- package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +0 -49
- package/src/components/ViewPackagePage/components/build-status.tsx +0 -38
- package/src/components/ViewPackagePage/components/important-files-view.tsx +0 -611
- package/src/components/ViewPackagePage/components/main-content-header.tsx +0 -181
- package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -167
- package/src/components/ViewPackagePage/components/markdown-viewer.tsx +0 -88
- package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +0 -301
- package/src/components/ViewPackagePage/components/package-header.tsx +0 -264
- package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -47
- package/src/components/ViewPackagePage/components/repo-page-content.tsx +0 -266
- package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +0 -223
- package/src/components/ViewPackagePage/components/sidebar-packages-section.tsx +0 -16
- package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +0 -126
- package/src/components/ViewPackagePage/components/sidebar.tsx +0 -29
- package/src/components/ViewPackagePage/components/tab-views/3d-view.tsx +0 -43
- package/src/components/ViewPackagePage/components/tab-views/bom-view.tsx +0 -30
- package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +0 -295
- package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +0 -35
- package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +0 -38
- package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -40
- package/src/components/ViewPackagePage/hooks/use-current-package-circuit-json.ts +0 -46
- package/src/components/ViewPackagePage/hooks/use-mobile.tsx +0 -19
- package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -69
- package/src/components/ViewPackagePage/utils/fuzz-search.ts +0 -121
- package/src/components/ViewPackagePage/utils/get-license-content.ts +0 -119
- package/src/components/ViewPackagePage/utils/is-hidden-file.ts +0 -55
- package/src/components/ViewPackagePage/utils/is-package-file-important.ts +0 -35
- package/src/components/ViewPackagePage/utils/is-within-directory.ts +0 -32
- package/src/components/dialogs/GitHubRepositorySelector.tsx +0 -300
- package/src/components/dialogs/confirm-delete-package-dialog.tsx +0 -74
- package/src/components/dialogs/confirm-discard-changes-dialog.tsx +0 -73
- package/src/components/dialogs/create-use-dialog.tsx +0 -40
- package/src/components/dialogs/edit-description-dialog.tsx +0 -96
- package/src/components/dialogs/edit-package-details-dialog.tsx +0 -474
- package/src/components/dialogs/files-dialog.tsx +0 -70
- package/src/components/dialogs/import-component-dialog.tsx +0 -32
- package/src/components/dialogs/import-package-dialog.tsx +0 -90
- package/src/components/dialogs/new-package-save-prompt-dialog.tsx +0 -199
- package/src/components/dialogs/package-visibility-settings-dialog.tsx +0 -93
- package/src/components/dialogs/pcb-download-dialog.tsx +0 -113
- package/src/components/dialogs/rename-package-dialog.tsx +0 -86
- package/src/components/dialogs/rename-snippet-dialog.tsx +0 -81
- package/src/components/dialogs/update-package-description-dialog.tsx +0 -96
- package/src/components/dialogs/view-ts-files-dialog.tsx +0 -664
- package/src/components/organization/OrganizationCard.tsx +0 -202
- package/src/components/organization/OrganizationCardSkeleton.tsx +0 -55
- package/src/components/organization/OrganizationHeader.tsx +0 -140
- package/src/components/organization/OrganizationMembers.tsx +0 -117
- package/src/components/package-port/CodeAndPreview.tsx +0 -253
- package/src/components/package-port/CodeEditor.tsx +0 -866
- package/src/components/package-port/CodeEditorHeader.tsx +0 -427
- package/src/components/package-port/EditorNav.tsx +0 -606
- package/src/components/package-port/GlobalFindReplace.tsx +0 -681
- package/src/components/package-port/QuickOpen.tsx +0 -241
- package/src/components/preview/BuildsList.tsx +0 -237
- package/src/components/preview/ConnectedPackagesList.tsx +0 -229
- package/src/components/preview/ConnectedRepoOverview.tsx +0 -588
- package/src/components/preview/PackageReleasesDashboard.tsx +0 -228
- package/src/components/preview/index.tsx +0 -54
- package/src/components/ui/accordion.tsx +0 -55
- package/src/components/ui/alert-dialog.tsx +0 -139
- package/src/components/ui/alert.tsx +0 -59
- package/src/components/ui/aspect-ratio.tsx +0 -5
- package/src/components/ui/avatar.tsx +0 -48
- package/src/components/ui/badge.tsx +0 -36
- package/src/components/ui/breadcrumb.tsx +0 -118
- package/src/components/ui/button.tsx +0 -58
- package/src/components/ui/calendar.tsx +0 -73
- package/src/components/ui/card.tsx +0 -76
- package/src/components/ui/carousel.tsx +0 -260
- package/src/components/ui/chart.tsx +0 -363
- package/src/components/ui/checkbox.tsx +0 -28
- package/src/components/ui/collapsible.tsx +0 -9
- package/src/components/ui/combobox.tsx +0 -178
- package/src/components/ui/command.tsx +0 -151
- package/src/components/ui/context-menu.tsx +0 -202
- package/src/components/ui/dialog.tsx +0 -120
- package/src/components/ui/drawer.tsx +0 -116
- package/src/components/ui/dropdown-menu.tsx +0 -203
- package/src/components/ui/form.tsx +0 -182
- package/src/components/ui/hover-card.tsx +0 -27
- package/src/components/ui/input.tsx +0 -25
- package/src/components/ui/label.tsx +0 -24
- package/src/components/ui/menubar.tsx +0 -238
- package/src/components/ui/navigation-menu.tsx +0 -129
- package/src/components/ui/pagination.tsx +0 -121
- package/src/components/ui/popover.tsx +0 -31
- package/src/components/ui/progress.tsx +0 -26
- package/src/components/ui/radio-group.tsx +0 -42
- package/src/components/ui/resizable.tsx +0 -43
- package/src/components/ui/role-badge.tsx +0 -27
- package/src/components/ui/scroll-area.tsx +0 -46
- package/src/components/ui/searchable-select.tsx +0 -94
- package/src/components/ui/select.tsx +0 -162
- package/src/components/ui/separator.tsx +0 -29
- package/src/components/ui/sheet.tsx +0 -141
- package/src/components/ui/skeleton.tsx +0 -18
- package/src/components/ui/slider.tsx +0 -26
- package/src/components/ui/sonner.tsx +0 -30
- package/src/components/ui/switch.tsx +0 -27
- package/src/components/ui/table.tsx +0 -120
- package/src/components/ui/tabs.tsx +0 -53
- package/src/components/ui/textarea.tsx +0 -24
- package/src/components/ui/toast.tsx +0 -128
- package/src/components/ui/toaster.tsx +0 -1
- package/src/components/ui/toggle-group.tsx +0 -59
- package/src/components/ui/toggle.tsx +0 -43
- package/src/components/ui/tooltip.tsx +0 -28
- package/src/components/ui/tree-view.tsx +0 -563
- package/src/entry-server.tsx +0 -12
- package/src/hooks/use-account-balance.ts +0 -25
- package/src/hooks/use-add-org-member-mutation.ts +0 -51
- package/src/hooks/use-ai-api.ts +0 -35
- package/src/hooks/use-ai-review.ts +0 -31
- package/src/hooks/use-axios.ts +0 -20
- package/src/hooks/use-code-completion-ai-api.ts +0 -11
- package/src/hooks/use-copy-to-clipboard.ts +0 -26
- package/src/hooks/use-create-datasheet.ts +0 -30
- package/src/hooks/use-create-org-mutation.ts +0 -38
- package/src/hooks/use-create-package-files-mutation.ts +0 -76
- package/src/hooks/use-create-package-mutation.ts +0 -54
- package/src/hooks/use-create-package-release-mutation.ts +0 -107
- package/src/hooks/use-create-release-dialog.ts +0 -160
- package/src/hooks/use-create-snippet-mutation.ts +0 -65
- package/src/hooks/use-current-package-id.ts +0 -16
- package/src/hooks/use-current-package-info.ts +0 -32
- package/src/hooks/use-current-package-release.ts +0 -48
- package/src/hooks/use-current-snippet-id.ts +0 -78
- package/src/hooks/use-current-snippet.ts +0 -24
- package/src/hooks/use-datasheet.ts +0 -18
- package/src/hooks/use-debounce.ts +0 -17
- package/src/hooks/use-delete-package.ts +0 -45
- package/src/hooks/use-download-zip.ts +0 -50
- package/src/hooks/use-fork-package-mutation.ts +0 -61
- package/src/hooks/use-global-store.ts +0 -36
- package/src/hooks/use-hotkey.ts +0 -116
- package/src/hooks/use-hydration.ts +0 -30
- package/src/hooks/use-is-using-fake-api.ts +0 -3
- package/src/hooks/use-jlcpcb-component-import.tsx +0 -164
- package/src/hooks/use-list-org-members.ts +0 -32
- package/src/hooks/use-list-user-orgs.ts +0 -25
- package/src/hooks/use-now.ts +0 -12
- package/src/hooks/use-org-by-github-handle.ts +0 -24
- package/src/hooks/use-org.ts +0 -24
- package/src/hooks/use-organization.ts +0 -42
- package/src/hooks/use-package-as-snippet.ts +0 -81
- package/src/hooks/use-package-builds.ts +0 -91
- package/src/hooks/use-package-by-package-id.ts +0 -24
- package/src/hooks/use-package-by-package-name.ts +0 -29
- package/src/hooks/use-package-details-form.ts +0 -146
- package/src/hooks/use-package-files.ts +0 -122
- package/src/hooks/use-package-release-by-id-or-version.ts +0 -45
- package/src/hooks/use-package-release-images.ts +0 -105
- package/src/hooks/use-package-release.ts +0 -124
- package/src/hooks/use-package-stars.ts +0 -163
- package/src/hooks/use-package.ts +0 -24
- package/src/hooks/use-packages-base-api-url.ts +0 -3
- package/src/hooks/use-preview-images.ts +0 -78
- package/src/hooks/use-rebuild-package-release-mutation.ts +0 -41
- package/src/hooks/use-remove-org-member-mutation.ts +0 -32
- package/src/hooks/use-request-ai-review-mutation.ts +0 -54
- package/src/hooks/use-run-tsx/eval-compiled-js.ts +0 -9
- package/src/hooks/use-shiki-highlighter.ts +0 -33
- package/src/hooks/use-sign-in.ts +0 -24
- package/src/hooks/use-snippet-by-name.ts +0 -25
- package/src/hooks/use-snippet.ts +0 -24
- package/src/hooks/use-toast.tsx +0 -90
- package/src/hooks/use-update-ai-description-mutation.ts +0 -42
- package/src/hooks/use-update-org-mutation.ts +0 -41
- package/src/hooks/use-url-params.ts +0 -31
- package/src/hooks/use-warn-user-on-page-change.ts +0 -90
- package/src/hooks/useFileManagement.ts +0 -602
- package/src/hooks/useForkPackageMutation.ts +0 -50
- package/src/hooks/useForkSnippetMutation.ts +0 -53
- package/src/hooks/useOptimizedPackageFilesLoader.ts +0 -136
- package/src/hooks/usePackageFilesLoader.ts +0 -58
- package/src/hooks/useUpdatePackageFilesMutation.ts +0 -131
- package/src/hooks/useUpdatePackageMutation.ts +0 -63
- package/src/index.css +0 -108
- package/src/lib/__tests__/constants.test.ts +0 -66
- package/src/lib/base64ToBytes.ts +0 -5
- package/src/lib/bytesToBase64.ts +0 -4
- package/src/lib/codemirror/basic-setup.ts +0 -67
- package/src/lib/constants.ts +0 -23
- package/src/lib/decodeUrlHashToFsMap.ts +0 -17
- package/src/lib/decodeUrlHashToText.ts +0 -15
- package/src/lib/defaultCodeForBlankCode.tsx +0 -7
- package/src/lib/download-fns/createBlobURL.ts +0 -4
- package/src/lib/download-fns/download-assembly-svg.ts +0 -12
- package/src/lib/download-fns/download-circuit-json-fn.ts +0 -12
- package/src/lib/download-fns/download-circuit-png.ts +0 -96
- package/src/lib/download-fns/download-dsn-file-fn.ts +0 -12
- package/src/lib/download-fns/download-fabrication-files.ts +0 -233
- package/src/lib/download-fns/download-gltf-from-circuit-json.ts +0 -44
- package/src/lib/download-fns/download-gltf.ts +0 -43
- package/src/lib/download-fns/download-kicad-files.ts +0 -38
- package/src/lib/download-fns/download-pcb-svg.ts +0 -35
- package/src/lib/download-fns/download-png-utils.ts +0 -31
- package/src/lib/download-fns/download-readable-netlist.ts +0 -12
- package/src/lib/download-fns/download-schematic-svg.ts +0 -12
- package/src/lib/download-fns/download-simple-route-json.ts +0 -17
- package/src/lib/download-fns/download-spice-file.ts +0 -13
- package/src/lib/download-fns/download-step.ts +0 -12
- package/src/lib/encodeFsMapToUrlHash.ts +0 -13
- package/src/lib/encodeTextToUrlHash.ts +0 -17
- package/src/lib/get-snippet-template.ts +0 -26
- package/src/lib/getLicenseFromLicenseContent.ts +0 -67
- package/src/lib/handleManualEditsImport.tsx +0 -65
- package/src/lib/handleManualEditsImportWithSupportForMultipleFiles.ts +0 -67
- package/src/lib/normalize-svg-for-tile.ts +0 -50
- package/src/lib/populate-query-cache-with-ssr-data.ts +0 -53
- package/src/lib/posthog.ts +0 -17
- package/src/lib/react-query-api-failure-tracking.ts +0 -148
- package/src/lib/sentry.ts +0 -14
- package/src/lib/templates/blank-3d-model-template.ts +0 -12
- package/src/lib/templates/blank-circuit-board-template.ts +0 -20
- package/src/lib/templates/blank-footprint-template.ts +0 -29
- package/src/lib/templates/blank-package-template.ts +0 -21
- package/src/lib/templates/blinking-led-board-template.ts +0 -64
- package/src/lib/templates/usb-c-led-flashlight-template.ts +0 -22
- package/src/lib/ts-lib-cache.ts +0 -162
- package/src/lib/types.ts +0 -31
- package/src/lib/utils/checkIfManualEditsImported.ts +0 -20
- package/src/lib/utils/findTargetFile.ts +0 -97
- package/src/lib/utils/formatTimeAgo.ts +0 -10
- package/src/lib/utils/getPackagePreviewImageUrl.ts +0 -15
- package/src/lib/utils/index.ts +0 -6
- package/src/lib/utils/isComponentExported.ts +0 -10
- package/src/lib/utils/isUuid.ts +0 -5
- package/src/lib/utils/isValidFileName.ts +0 -17
- package/src/lib/utils/load-prettier.ts +0 -23
- package/src/lib/utils/member-role.tsx +0 -61
- package/src/lib/utils/package-utils.ts +0 -7
- package/src/lib/utils/parseJsonOrNull.ts +0 -8
- package/src/lib/utils/pcbManualEditEventHandler.ts +0 -156
- package/src/lib/utils/resolveRelativePath.ts +0 -40
- package/src/lib/utils/timeAgo.ts +0 -20
- package/src/lib/utils/toastManualEditConflicts.tsx +0 -39
- package/src/lib/utils/transformFilesToTreeData.tsx +0 -195
- package/src/main.tsx +0 -15
- package/src/pages/404.tsx +0 -23
- package/src/pages/authorize.tsx +0 -208
- package/src/pages/create-organization.tsx +0 -169
- package/src/pages/dashboard.tsx +0 -254
- package/src/pages/datasheet.tsx +0 -198
- package/src/pages/datasheets.tsx +0 -148
- package/src/pages/dev-login.tsx +0 -68
- package/src/pages/editor.tsx +0 -54
- package/src/pages/landing.tsx +0 -237
- package/src/pages/latest.tsx +0 -145
- package/src/pages/my-orders.tsx +0 -54
- package/src/pages/organization-profile.tsx +0 -197
- package/src/pages/organization-settings.tsx +0 -571
- package/src/pages/package-editor.tsx +0 -60
- package/src/pages/preview-release.tsx +0 -209
- package/src/pages/quickstart.tsx +0 -258
- package/src/pages/release-builds.tsx +0 -99
- package/src/pages/release-detail.tsx +0 -211
- package/src/pages/releases.tsx +0 -55
- package/src/pages/search.tsx +0 -288
- package/src/pages/settings-redirect.tsx +0 -44
- package/src/pages/trending.tsx +0 -201
- package/src/pages/user-profile.tsx +0 -330
- package/src/pages/user-settings.tsx +0 -161
- package/src/pages/view-package.tsx +0 -90
- package/src/types/package.ts +0 -4
- package/src/vite-env.d.ts +0 -1
- package/tailwind.config.js +0 -47
- package/tsconfig.json +0 -30
- package/vercel.json +0 -50
- package/vite.config.ts +0 -236
- package/winterspec.config.ts +0 -6
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { withRouteSpec } from "fake-snippets-api/lib/middleware/with-winter-spec"
|
|
2
|
-
import { z } from "zod"
|
|
3
|
-
import { snippetSchema } from "fake-snippets-api/lib/db/schema"
|
|
4
|
-
|
|
5
|
-
export default withRouteSpec({
|
|
6
|
-
methods: ["GET"],
|
|
7
|
-
auth: "none",
|
|
8
|
-
queryParams: z.object({
|
|
9
|
-
q: z.string(),
|
|
10
|
-
}),
|
|
11
|
-
jsonResponse: z.object({
|
|
12
|
-
snippets: z.array(snippetSchema),
|
|
13
|
-
}),
|
|
14
|
-
})(async (req, ctx) => {
|
|
15
|
-
const { q } = req.query
|
|
16
|
-
const snippets = ctx.db.searchSnippets(q)
|
|
17
|
-
return ctx.json({ snippets })
|
|
18
|
-
})
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { z } from "zod"
|
|
2
|
-
import { snippetSchema } from "../../../lib/db/schema"
|
|
3
|
-
import { withRouteSpec } from "../../../lib/middleware/with-winter-spec"
|
|
4
|
-
|
|
5
|
-
export default withRouteSpec({
|
|
6
|
-
methods: ["POST"],
|
|
7
|
-
auth: "session",
|
|
8
|
-
jsonBody: z.object({
|
|
9
|
-
snippet_id: z.string(),
|
|
10
|
-
code: z.string().optional(),
|
|
11
|
-
description: z.string().optional(),
|
|
12
|
-
unscoped_name: z.string().optional(),
|
|
13
|
-
dts: z.string().optional(),
|
|
14
|
-
compiled_js: z.string().optional().nullable(),
|
|
15
|
-
circuit_json: z.array(z.record(z.any())).optional().nullable(),
|
|
16
|
-
manual_edits_json_content: z.string().optional().nullable(),
|
|
17
|
-
snippet_type: z.enum(["board", "package", "model", "footprint"]).optional(),
|
|
18
|
-
is_private: z.boolean().optional(),
|
|
19
|
-
is_unlisted: z.boolean().optional(),
|
|
20
|
-
}),
|
|
21
|
-
jsonResponse: z.object({
|
|
22
|
-
ok: z.boolean(),
|
|
23
|
-
snippet: snippetSchema,
|
|
24
|
-
}),
|
|
25
|
-
})(async (req, ctx) => {
|
|
26
|
-
const {
|
|
27
|
-
snippet_id,
|
|
28
|
-
code,
|
|
29
|
-
description,
|
|
30
|
-
unscoped_name,
|
|
31
|
-
dts,
|
|
32
|
-
compiled_js,
|
|
33
|
-
circuit_json,
|
|
34
|
-
snippet_type,
|
|
35
|
-
manual_edits_json_content,
|
|
36
|
-
is_private,
|
|
37
|
-
is_unlisted,
|
|
38
|
-
} = req.jsonBody
|
|
39
|
-
|
|
40
|
-
const packageIndex = ctx.db.packages.findIndex(
|
|
41
|
-
(s) => s.package_id === snippet_id,
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
if (packageIndex === -1) {
|
|
45
|
-
return ctx.error(404, {
|
|
46
|
-
error_code: "snippet_not_found",
|
|
47
|
-
message: "Snippet not found",
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const _package = ctx.db.packages[packageIndex]
|
|
52
|
-
const packageRelease = ctx.db.packageReleases.find(
|
|
53
|
-
(r) => r.package_release_id === _package.latest_package_release_id,
|
|
54
|
-
)
|
|
55
|
-
const packageFiles = ctx.db.packageFiles.filter(
|
|
56
|
-
(f) => f.package_release_id === packageRelease?.package_release_id,
|
|
57
|
-
)
|
|
58
|
-
const codeFile = packageFiles.find(
|
|
59
|
-
(f) => f.file_path === "index.tsx" || f.file_path === "index.ts",
|
|
60
|
-
)
|
|
61
|
-
const dtsFile = packageFiles.find((f) => f.file_path === "/dist/index.d.ts")
|
|
62
|
-
const compiledJsFile = packageFiles.find(
|
|
63
|
-
(f) => f.file_path === "/dist/index.js",
|
|
64
|
-
)
|
|
65
|
-
const manualEditsJsonFile = packageFiles.find(
|
|
66
|
-
(f) => f.file_path === "manual-edits.json",
|
|
67
|
-
)
|
|
68
|
-
const circuitJsonFile = packageFiles.find(
|
|
69
|
-
(f) => f.file_path === "/dist/circuit.json",
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
if (_package.owner_github_username !== ctx.auth.github_username) {
|
|
73
|
-
return ctx.error(403, {
|
|
74
|
-
error_code: "forbidden",
|
|
75
|
-
message: "You don't have permission to update this snippet",
|
|
76
|
-
})
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const updatedSnippet = ctx.db.updateSnippet(snippet_id, {
|
|
80
|
-
code: code ?? codeFile?.content_text ?? "",
|
|
81
|
-
description: description ?? _package.description ?? "",
|
|
82
|
-
unscoped_name: unscoped_name ?? _package.unscoped_name,
|
|
83
|
-
name: unscoped_name
|
|
84
|
-
? `${ctx.auth.github_username}/${unscoped_name}`
|
|
85
|
-
: _package.name,
|
|
86
|
-
dts: dts ?? dtsFile?.content_text ?? "",
|
|
87
|
-
compiled_js: compiled_js ?? compiledJsFile?.content_text ?? "",
|
|
88
|
-
manual_edits_json_content:
|
|
89
|
-
manual_edits_json_content !== undefined
|
|
90
|
-
? manual_edits_json_content
|
|
91
|
-
: (manualEditsJsonFile?.content_text ?? ""),
|
|
92
|
-
circuit_json:
|
|
93
|
-
circuit_json ??
|
|
94
|
-
(circuitJsonFile?.content_text
|
|
95
|
-
? JSON.parse(circuitJsonFile.content_text)
|
|
96
|
-
: []),
|
|
97
|
-
snippet_type: snippet_type ?? _package.snippet_type,
|
|
98
|
-
is_private: is_private ?? _package.is_private ?? false,
|
|
99
|
-
is_unlisted: is_unlisted ?? _package.is_unlisted ?? false,
|
|
100
|
-
updated_at: new Date().toISOString(),
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
if (!updatedSnippet) {
|
|
104
|
-
return ctx.error(500, {
|
|
105
|
-
error_code: "update_failed",
|
|
106
|
-
message: "Failed to update snippet",
|
|
107
|
-
})
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return ctx.json({
|
|
111
|
-
ok: true,
|
|
112
|
-
snippet: updatedSnippet,
|
|
113
|
-
})
|
|
114
|
-
})
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
const RESTRICTED_DIRS = ["/node_modules/", "/dist/", "/.git/"]
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A normalized project path always starts with "./" and never ends with a slash.
|
|
5
|
-
* It has no backwards slashes and no double slashes. It does not go to parent
|
|
6
|
-
* directories. It is not a directory (must have a file extension)
|
|
7
|
-
*
|
|
8
|
-
* GOOD:
|
|
9
|
-
* - src/index.ts
|
|
10
|
-
* - README.md
|
|
11
|
-
*
|
|
12
|
-
* BAD:
|
|
13
|
-
* - ./README.md
|
|
14
|
-
* - ./src/index.ts
|
|
15
|
-
* - src\index.ts
|
|
16
|
-
* - ../README.md
|
|
17
|
-
* - ./src/
|
|
18
|
-
* - ./src
|
|
19
|
-
*
|
|
20
|
-
* Additionally, throw on directories that should never be included, e.g.
|
|
21
|
-
* - node_modules
|
|
22
|
-
* - dist
|
|
23
|
-
* - .git
|
|
24
|
-
*/
|
|
25
|
-
export const normalizeProjectFilePathAndValidate = (rawPath: string) => {
|
|
26
|
-
const normalizedPath = normalizeProjectFilePath(rawPath)
|
|
27
|
-
|
|
28
|
-
if (normalizedPath.includes("../")) {
|
|
29
|
-
throw new Error(
|
|
30
|
-
"Invalid project file path. Parent directories are not allowed.",
|
|
31
|
-
)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (RESTRICTED_DIRS.some((dir) => normalizedPath.includes(dir))) {
|
|
35
|
-
throw new Error(
|
|
36
|
-
`Invalid project file path. Restricted directories (${RESTRICTED_DIRS.map(
|
|
37
|
-
(rd) => rd.slice(1, -1),
|
|
38
|
-
).join(", ")}) are not allowed.`,
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (!normalizedPath.includes(".")) {
|
|
43
|
-
throw new Error(
|
|
44
|
-
`Invalid project file path. Must have a file extension. Given "${rawPath}"`,
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return normalizedPath
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export const normalizeProjectFilePath = (rawPath: string) => {
|
|
52
|
-
let normalizedPath = rawPath.trim() // Remove leading/trailing whitespace
|
|
53
|
-
normalizedPath = normalizedPath.replace(/\/+/g, "/") // Replace multiple consecutive slashes with a single slash
|
|
54
|
-
normalizedPath = normalizedPath.replace(/^\.\//, "") // Remove leading "./"
|
|
55
|
-
normalizedPath = normalizedPath.replace(/\/$/, "") // Remove trailing slash
|
|
56
|
-
normalizedPath = normalizedPath.replace(/\\/g, "/") // Replace backslashes with forward slashes
|
|
57
|
-
normalizedPath = normalizedPath.replace(/^\//, "") // Remove leading "/"
|
|
58
|
-
|
|
59
|
-
return normalizedPath
|
|
60
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export const orderSteps = [
|
|
2
|
-
"are_gerbers_generated",
|
|
3
|
-
"are_gerbers_uploaded",
|
|
4
|
-
"is_gerber_analyzed",
|
|
5
|
-
"are_initial_costs_calculated",
|
|
6
|
-
"is_pcb_added_to_cart",
|
|
7
|
-
"is_bom_uploaded",
|
|
8
|
-
"is_pnp_uploaded",
|
|
9
|
-
"is_bom_pnp_analyzed",
|
|
10
|
-
"is_bom_parsing_complete",
|
|
11
|
-
"are_components_available",
|
|
12
|
-
"is_patch_map_generated",
|
|
13
|
-
"is_json_merge_file_created",
|
|
14
|
-
"is_dfm_result_generated",
|
|
15
|
-
"are_files_downloaded",
|
|
16
|
-
"are_product_categories_fetched",
|
|
17
|
-
"are_final_costs_calculated",
|
|
18
|
-
"is_json_merge_file_updated",
|
|
19
|
-
"is_added_to_cart",
|
|
20
|
-
] as const
|
package/favicon.ico
DELETED
|
Binary file
|
package/index.html
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="robots" content="index, follow, NOODP" />
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
-
<link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16" />
|
|
9
|
-
<!-- SEO_START -->
|
|
10
|
-
<title>tscircuit - Code Electronics with React</title>
|
|
11
|
-
<meta name="description"
|
|
12
|
-
content="tscircuit is an open-source electronics design tool that lets you create circuits using React components. Design schematics, generate PCB layouts, export and manufacture PCBs online!" />
|
|
13
|
-
<meta name="keywords"
|
|
14
|
-
content="electronic design, PCB design, schematic capture, React components, circuit design, electronics CAD, open source EDA" />
|
|
15
|
-
<meta property="og:title" content="tscircuit - Design Electronics with React Components" />
|
|
16
|
-
<meta property="og:description"
|
|
17
|
-
content="Create electronic circuits using React components. Design schematics, generate PCB layouts, and manufacture custom PCBs with this free open-source tool." />
|
|
18
|
-
<meta property="og:type" content="website" />
|
|
19
|
-
<meta name="twitter:card" content="summary_large_image" />
|
|
20
|
-
<meta name="twitter:title" content="tscircuit - Design Electronics with React Components" />
|
|
21
|
-
<meta name="twitter:description"
|
|
22
|
-
content="Create electronic circuits using React components. Free open-source electronics design tool." />
|
|
23
|
-
<meta property="og:image" content="https://tscircuit.com/assets/editor_example_1_more_square-2000w.webp" />
|
|
24
|
-
<meta property="og:image:width" content="2000" />
|
|
25
|
-
<meta property="og:image:height" content="2000" />
|
|
26
|
-
<meta name="twitter:image" content="https://tscircuit.com/assets/editor_example_1_more_square-2000w.webp" />
|
|
27
|
-
<link rel="canonical" href="https://tscircuit.com" />
|
|
28
|
-
<!-- SEO_END -->
|
|
29
|
-
|
|
30
|
-
<!-- SSR_START -->
|
|
31
|
-
<!-- SSR_END -->
|
|
32
|
-
|
|
33
|
-
<style>
|
|
34
|
-
/* Loader Styles */
|
|
35
|
-
.loading-overlay {
|
|
36
|
-
position: fixed;
|
|
37
|
-
top: 0;
|
|
38
|
-
left: 0;
|
|
39
|
-
width: 100%;
|
|
40
|
-
height: 100%;
|
|
41
|
-
background: rgba(255, 255, 255, 0.7);
|
|
42
|
-
display: flex;
|
|
43
|
-
justify-content: center;
|
|
44
|
-
align-items: center;
|
|
45
|
-
z-index: 9999;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.loading-container {
|
|
49
|
-
display: flex;
|
|
50
|
-
flex-direction: column;
|
|
51
|
-
align-items: center;
|
|
52
|
-
gap: 1em;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.loading {
|
|
56
|
-
background-color: lightgrey;
|
|
57
|
-
height: 2px;
|
|
58
|
-
overflow: hidden;
|
|
59
|
-
position: relative;
|
|
60
|
-
width: 12em;
|
|
61
|
-
border-radius: 2px;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.loading-bar {
|
|
65
|
-
animation: side2side 2s ease-in-out infinite;
|
|
66
|
-
background-color: dodgerblue;
|
|
67
|
-
height: 100%;
|
|
68
|
-
position: absolute;
|
|
69
|
-
width: 45%;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
@keyframes side2side {
|
|
73
|
-
0%, 100% {
|
|
74
|
-
transform: translateX(-50%);
|
|
75
|
-
}
|
|
76
|
-
50% {
|
|
77
|
-
transform: translateX(150%);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
</style>
|
|
81
|
-
|
|
82
|
-
<script>
|
|
83
|
-
window.onload = function() {
|
|
84
|
-
const loader = document.getElementById("loader");
|
|
85
|
-
const root = document.getElementById("root");
|
|
86
|
-
|
|
87
|
-
// Hide the loader and show the root when the page has fully loaded
|
|
88
|
-
loader.style.transition = "opacity 0.3s ease";
|
|
89
|
-
loader.style.opacity = "0"; // Fade out the loader
|
|
90
|
-
setTimeout(function() {
|
|
91
|
-
loader.style.display = "none"; // Hide loader completely
|
|
92
|
-
root.style.visibility = "visible"; // Show the root content
|
|
93
|
-
}, 300); // Match the opacity transition duration
|
|
94
|
-
};
|
|
95
|
-
</script>
|
|
96
|
-
|
|
97
|
-
<!-- Google tag (gtag.js) -->
|
|
98
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-16607843883">
|
|
99
|
-
</script>
|
|
100
|
-
<script>
|
|
101
|
-
window.dataLayer = window.dataLayer || [];
|
|
102
|
-
function gtag(){dataLayer.push(arguments);}
|
|
103
|
-
gtag('js', new Date());
|
|
104
|
-
|
|
105
|
-
gtag('config', 'AW-16607843883');
|
|
106
|
-
</script>
|
|
107
|
-
</head>
|
|
108
|
-
|
|
109
|
-
<body>
|
|
110
|
-
<div class="loaderanimation">
|
|
111
|
-
<div id="loader" class="loading-overlay">
|
|
112
|
-
<div class="loading-container">
|
|
113
|
-
<div class="loading">
|
|
114
|
-
<div class="loading-bar"></div>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
|
|
120
|
-
<div id="root" class="loaderanimation" style="visibility: hidden;"></div> <!-- Initially hidden -->
|
|
121
|
-
|
|
122
|
-
<script type="module" src="./src/main.tsx"></script>
|
|
123
|
-
</body>
|
|
124
|
-
|
|
125
|
-
</html>
|
package/landing.html
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="robots" content="index, follow, NOODP" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16">
|
|
8
|
-
<title>tscircuit - Code Electronics with React</title>
|
|
9
|
-
<meta name="description" content="tscircuit is an open-source electronics design tool that lets you create circuits using React components. Design schematics, generate PCB layouts, export and manufacture PCBs online!" />
|
|
10
|
-
<meta name="keywords" content="electronic design, PCB design, schematic capture, React components, circuit design, electronics CAD, open source EDA" />
|
|
11
|
-
<meta property="og:title" content="tscircuit - Design Electronics with React Components" />
|
|
12
|
-
<meta property="og:description" content="Create electronic circuits using React components. Design schematics, generate PCB layouts, and manufacture custom PCBs with this free open-source tool." />
|
|
13
|
-
<meta property="og:type" content="website" />
|
|
14
|
-
<meta name="twitter:card" content="summary_large_image" />
|
|
15
|
-
<meta name="twitter:title" content="tscircuit - Design Electronics with React Components" />
|
|
16
|
-
<meta name="twitter:description" content="Create electronic circuits using React components. Free open-source electronics design tool." />
|
|
17
|
-
<link rel="canonical" href="https://tscircuit.com" />
|
|
18
|
-
</head>
|
|
19
|
-
<body>
|
|
20
|
-
<div id="root"></div>
|
|
21
|
-
<script type="module" src="/src/pages/landing.tsx"></script>
|
|
22
|
-
</body>
|
|
23
|
-
</html>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test"
|
|
2
|
-
import { viewports } from "./viewports"
|
|
3
|
-
|
|
4
|
-
for (const [size, viewport] of Object.entries(viewports)) {
|
|
5
|
-
test(`AI Page on ${size} screen`, async ({ page }) => {
|
|
6
|
-
await page.setViewportSize(viewport)
|
|
7
|
-
await page.goto("http://127.0.0.1:5177/ai")
|
|
8
|
-
|
|
9
|
-
// it is only working for desktop beacuse fake testuser login is not appearing for mobile
|
|
10
|
-
|
|
11
|
-
// await page.goto("http://127.0.0.1:5177");
|
|
12
|
-
// await page.click("text='Fake testuser Login'");
|
|
13
|
-
// await page.waitForSelector(".login-avatar");
|
|
14
|
-
// await page.click(".header-button[href='/ai']");
|
|
15
|
-
// await page.waitForSelector("text='Submit a prompt to get started!'");
|
|
16
|
-
|
|
17
|
-
await expect(page).toHaveScreenshot(`AI-Page-${size}.png`)
|
|
18
|
-
})
|
|
19
|
-
}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test"
|
|
2
|
-
import { exampleCircuitJson } from "./exampleCircuitJson"
|
|
3
|
-
|
|
4
|
-
async function loginToSite(page) {
|
|
5
|
-
const loginButton = page.getByRole("button", { name: "Log in" })
|
|
6
|
-
if (await loginButton.isVisible()) {
|
|
7
|
-
await loginButton.click()
|
|
8
|
-
await page.waitForLoadState("networkidle")
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
test.beforeEach(async ({ page }) => {
|
|
13
|
-
await page.goto("http://127.0.0.1:5177/quickstart")
|
|
14
|
-
await page.waitForTimeout(3000)
|
|
15
|
-
await loginToSite(page).catch(() => {})
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
test("should open and close the Circuit Json Import Dialog", async ({
|
|
19
|
-
page,
|
|
20
|
-
}) => {
|
|
21
|
-
const importButton = page.locator('button:has-text("Import Circuit JSON")')
|
|
22
|
-
await importButton.click()
|
|
23
|
-
|
|
24
|
-
const dialog = page.getByRole("dialog")
|
|
25
|
-
await expect(dialog).toBeVisible()
|
|
26
|
-
|
|
27
|
-
const closeButton = dialog.getByRole("button", { name: "Close" })
|
|
28
|
-
await closeButton.click()
|
|
29
|
-
|
|
30
|
-
await expect(dialog).not.toBeVisible()
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
test("should handle valid Circuit JSON input", async ({ page }) => {
|
|
34
|
-
const importButton = page.getByRole("button", { name: "Import Circuit JSON" })
|
|
35
|
-
await importButton.click()
|
|
36
|
-
const textarea = page.locator(
|
|
37
|
-
'textarea[placeholder="Paste the Circuit JSON."]',
|
|
38
|
-
)
|
|
39
|
-
await textarea.fill(JSON.stringify(exampleCircuitJson))
|
|
40
|
-
|
|
41
|
-
const importDialogButton = page.getByRole("button", { name: "Import" })
|
|
42
|
-
await importDialogButton.click()
|
|
43
|
-
|
|
44
|
-
const successToast = page.locator(
|
|
45
|
-
'div.text-sm.font-semibold:has-text("Import Successful")',
|
|
46
|
-
)
|
|
47
|
-
await successToast.waitFor({ state: "visible", timeout: 5000 })
|
|
48
|
-
await expect(successToast).toBeVisible()
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
test("should handle valid Circuit JSON file upload", async ({ page }) => {
|
|
52
|
-
const importButton = page.locator('button:has-text("Import Circuit JSON")')
|
|
53
|
-
await importButton.click()
|
|
54
|
-
|
|
55
|
-
const fileInput = page.locator('input[type="file"]')
|
|
56
|
-
|
|
57
|
-
await fileInput.setInputFiles({
|
|
58
|
-
name: "circuit.json",
|
|
59
|
-
mimeType: "application/json",
|
|
60
|
-
// @ts-expect-error didnt add node types to tsconfig
|
|
61
|
-
buffer: Buffer.from(JSON.stringify(exampleCircuitJson)),
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
const importDialogButton = page.getByRole("button", { name: "Import" })
|
|
65
|
-
await importDialogButton.click()
|
|
66
|
-
const successToast = page.locator(
|
|
67
|
-
'div.text-sm.font-semibold:has-text("Import Successful")',
|
|
68
|
-
)
|
|
69
|
-
await successToast.waitFor({ state: "visible", timeout: 5000 })
|
|
70
|
-
await expect(successToast).toBeVisible()
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
test("should handle invalid Circuit JSON input", async ({ page }) => {
|
|
74
|
-
const importButton = page.locator('button:has-text("Import Circuit JSON")')
|
|
75
|
-
await importButton.click()
|
|
76
|
-
|
|
77
|
-
const textarea = page.locator(
|
|
78
|
-
'textarea[placeholder="Paste the Circuit JSON."]',
|
|
79
|
-
)
|
|
80
|
-
await textarea.fill("invalid json content")
|
|
81
|
-
|
|
82
|
-
const importDialogButton = page.getByRole("button", { name: "Import" })
|
|
83
|
-
await importDialogButton.click()
|
|
84
|
-
|
|
85
|
-
const errorToast = page.locator(
|
|
86
|
-
'div.text-sm.font-semibold:has-text("Invalid Input")',
|
|
87
|
-
)
|
|
88
|
-
await errorToast.waitFor({ state: "visible", timeout: 5000 })
|
|
89
|
-
await expect(errorToast).toBeVisible()
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
test("should handle invalid Circuit JSON file upload", async ({ page }) => {
|
|
93
|
-
const importButton = page.locator('button:has-text("Import Circuit JSON")')
|
|
94
|
-
await importButton.click()
|
|
95
|
-
|
|
96
|
-
const fileInput = page.locator('input[type="file"]')
|
|
97
|
-
await fileInput.setInputFiles({
|
|
98
|
-
name: "circuit.json",
|
|
99
|
-
mimeType: "application/json",
|
|
100
|
-
// @ts-expect-error didnt add node types to tsconfig
|
|
101
|
-
buffer: Buffer.from(JSON.stringify({})),
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
const importDialogButton = page.getByRole("button", { name: "Import" })
|
|
105
|
-
await importDialogButton.click()
|
|
106
|
-
|
|
107
|
-
const errorToast = page.locator(
|
|
108
|
-
'div.text-sm.font-semibold:has-text("Import Failed")',
|
|
109
|
-
)
|
|
110
|
-
await errorToast.waitFor({ state: "visible", timeout: 5000 })
|
|
111
|
-
await expect(errorToast).toBeVisible()
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
test("should handle non-JSON file upload", async ({ page }) => {
|
|
115
|
-
const importButton = page.locator('button:has-text("Import Circuit JSON")')
|
|
116
|
-
await importButton.click()
|
|
117
|
-
|
|
118
|
-
const fileInput = page.locator('input[type="file"]')
|
|
119
|
-
await fileInput.setInputFiles({
|
|
120
|
-
name: "circuit.txt",
|
|
121
|
-
mimeType: "application/text",
|
|
122
|
-
// @ts-expect-error didnt add node types to tsconfig
|
|
123
|
-
buffer: Buffer.from(""),
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
const importDialogButton = page.getByRole("button", { name: "Import" })
|
|
127
|
-
await importDialogButton.click()
|
|
128
|
-
|
|
129
|
-
const errorToast = page.locator(
|
|
130
|
-
'div.pb-4 > p:has-text("Please select a valid JSON file.")',
|
|
131
|
-
)
|
|
132
|
-
await expect(errorToast).toBeVisible()
|
|
133
|
-
})
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test"
|
|
2
|
-
|
|
3
|
-
test("Editor handles imports with underlining and cmd+click", async ({
|
|
4
|
-
page,
|
|
5
|
-
}) => {
|
|
6
|
-
await page.goto("http://127.0.0.1:5177/editor?snippet_id=snippet_3")
|
|
7
|
-
|
|
8
|
-
await page.waitForLoadState("networkidle")
|
|
9
|
-
|
|
10
|
-
// Wait for and verify the underlined import
|
|
11
|
-
const underlinedText = await page.locator(".cm-underline")
|
|
12
|
-
await expect(underlinedText).toBeVisible()
|
|
13
|
-
|
|
14
|
-
// Verify the styling matches our expectations
|
|
15
|
-
const styles = await underlinedText.evaluate((el) => {
|
|
16
|
-
const computed = window.getComputedStyle(el)
|
|
17
|
-
return {
|
|
18
|
-
textDecoration: computed.textDecoration,
|
|
19
|
-
cursor: computed.cursor,
|
|
20
|
-
}
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
expect(styles.textDecoration).toContain("underline")
|
|
24
|
-
expect(styles.cursor).toBe("pointer")
|
|
25
|
-
|
|
26
|
-
// Test cmd+click behavior
|
|
27
|
-
const popupPromise = page.waitForEvent("popup")
|
|
28
|
-
await underlinedText.click({
|
|
29
|
-
modifiers: process.platform === "darwin" ? ["Meta"] : ["Control"],
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
// Verify new tab opens with correct URL
|
|
33
|
-
const popup = await popupPromise
|
|
34
|
-
const popupUrl = popup.url()
|
|
35
|
-
|
|
36
|
-
// URL validation
|
|
37
|
-
expect(popupUrl).toMatch(
|
|
38
|
-
/^http:\/\/127\.0\.0\.1:5177\/[a-zA-Z0-9-]+\/[a-zA-Z0-9-]+$/,
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
// Take a snapshot of the editor showing underlined imports
|
|
42
|
-
await expect(page).toHaveScreenshot("underlined-imports.png")
|
|
43
|
-
})
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test"
|
|
2
|
-
import { viewports } from "./viewports"
|
|
3
|
-
|
|
4
|
-
for (const [size, viewport] of Object.entries(viewports)) {
|
|
5
|
-
test(`Dashboard Page on ${size} screen`, async ({ page }) => {
|
|
6
|
-
await page.setViewportSize(viewport)
|
|
7
|
-
await page.goto("http://127.0.0.1:5177/dashboard")
|
|
8
|
-
await expect(page).toHaveScreenshot(`Dashboard-page-${size}.png`)
|
|
9
|
-
})
|
|
10
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test"
|
|
2
|
-
import { viewports } from "./viewports"
|
|
3
|
-
|
|
4
|
-
test("Editor loads snippet correctly", async ({ page }) => {
|
|
5
|
-
await page.goto("http://127.0.0.1:5177/editor?snippet_id=snippet_5")
|
|
6
|
-
|
|
7
|
-
// Wait for network requests to complete
|
|
8
|
-
// await page.waitForLoadState("networkidle")
|
|
9
|
-
|
|
10
|
-
// Check for specific text that should be present
|
|
11
|
-
await expect(page.getByText("A555Timer").first()).toBeVisible()
|
|
12
|
-
|
|
13
|
-
// Take a snapshot
|
|
14
|
-
await expect(page).toHaveScreenshot("editor-with-snippet.png")
|
|
15
|
-
})
|