@tscircuit/fake-snippets 0.0.109 → 0.0.111

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.
Files changed (185) hide show
  1. package/.github/workflows/bun-formatcheck.yml +2 -2
  2. package/.github/workflows/bun-pver-release.yml +3 -3
  3. package/.github/workflows/bun-test.yml +1 -1
  4. package/.github/workflows/bun-typecheck.yml +2 -2
  5. package/.github/workflows/update-snapshots.yml +1 -1
  6. package/README.md +4 -0
  7. package/api/generated-index.js +37 -3
  8. package/biome.json +2 -1
  9. package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +32 -3
  10. package/bun-tests/fake-snippets-api/fixtures/preload.ts +18 -0
  11. package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +26 -0
  12. package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +37 -0
  13. package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +52 -0
  14. package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +17 -0
  15. package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +23 -0
  16. package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +81 -0
  17. package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +151 -0
  18. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +1 -1
  19. package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +15 -13
  20. package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +26 -24
  21. package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +9 -9
  22. package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +4 -4
  23. package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +38 -28
  24. package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +23 -15
  25. package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +33 -0
  26. package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +4 -4
  27. package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +38 -0
  28. package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +19 -0
  29. package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +3 -4
  30. package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +30 -0
  31. package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +4 -2
  32. package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +34 -0
  33. package/bun.lock +361 -453
  34. package/bunfig.toml +2 -1
  35. package/dist/bundle.js +1313 -639
  36. package/dist/index.d.ts +313 -6
  37. package/dist/index.js +328 -24
  38. package/dist/schema.d.ts +290 -1
  39. package/dist/schema.js +54 -1
  40. package/fake-snippets-api/lib/db/autoload-dev-packages.ts +31 -20
  41. package/fake-snippets-api/lib/db/db-client.ts +219 -4
  42. package/fake-snippets-api/lib/db/schema.ts +63 -1
  43. package/fake-snippets-api/lib/db/seed.ts +100 -0
  44. package/fake-snippets-api/lib/middleware/with-session-auth.ts +60 -8
  45. package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +2 -2
  46. package/fake-snippets-api/lib/public-mapping/public-map-org.ts +33 -0
  47. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +10 -0
  48. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +17 -0
  49. package/fake-snippets-api/routes/api/orgs/add_member.ts +52 -0
  50. package/fake-snippets-api/routes/api/orgs/create.ts +48 -0
  51. package/fake-snippets-api/routes/api/orgs/get.ts +39 -0
  52. package/fake-snippets-api/routes/api/orgs/list.ts +31 -0
  53. package/fake-snippets-api/routes/api/orgs/list_members.ts +60 -0
  54. package/fake-snippets-api/routes/api/orgs/remove_member.ts +46 -0
  55. package/fake-snippets-api/routes/api/orgs/update.ts +118 -0
  56. package/fake-snippets-api/routes/api/package_files/get.ts +3 -6
  57. package/fake-snippets-api/routes/api/package_files/list.ts +7 -4
  58. package/fake-snippets-api/routes/api/packages/create.ts +57 -10
  59. package/fake-snippets-api/routes/api/packages/get.ts +23 -0
  60. package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +13 -11
  61. package/fake-snippets-api/routes/api/packages/list.ts +29 -2
  62. package/fake-snippets-api/routes/api/packages/update_ai_description.ts +37 -0
  63. package/package.json +25 -19
  64. package/renovate.json +1 -1
  65. package/scripts/generate-sitemap.ts +1 -1
  66. package/src/App.tsx +27 -8
  67. package/src/ContextProviders.tsx +25 -2
  68. package/src/components/CircuitJsonImportDialog.tsx +1 -1
  69. package/src/components/CmdKMenu.tsx +281 -247
  70. package/src/components/DownloadButtonAndMenu.tsx +17 -5
  71. package/src/components/FileSidebar.tsx +11 -17
  72. package/src/components/Footer.tsx +8 -9
  73. package/src/components/Header.tsx +19 -32
  74. package/src/components/Header2.tsx +16 -32
  75. package/src/components/HeaderDropdown.tsx +13 -8
  76. package/src/components/HeaderLogin.tsx +43 -15
  77. package/src/components/NotFound.tsx +5 -5
  78. package/src/components/PackageBreadcrumb.tsx +6 -12
  79. package/src/components/PackageSearchResults.tsx +1 -1
  80. package/src/components/PrefetchPageLink.tsx +7 -1
  81. package/src/components/ProfileRouter.tsx +32 -0
  82. package/src/components/SearchComponent.tsx +12 -8
  83. package/src/components/SentryNotFoundReporter.tsx +44 -0
  84. package/src/components/UserCard.tsx +80 -0
  85. package/src/components/ViewPackagePage/components/build-status.tsx +1 -1
  86. package/src/components/ViewPackagePage/components/important-files-view.tsx +105 -34
  87. package/src/components/ViewPackagePage/components/main-content-header.tsx +10 -6
  88. package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +1 -1
  89. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +54 -19
  90. package/src/components/ViewPackagePage/components/package-header.tsx +25 -33
  91. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +11 -18
  92. package/src/components/ViewPackagePage/components/repo-page-content.tsx +12 -5
  93. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +16 -10
  94. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +11 -11
  95. package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +1 -2
  96. package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +2 -1
  97. package/src/components/dialogs/GitHubRepositorySelector.tsx +56 -49
  98. package/src/components/dialogs/edit-package-details-dialog.tsx +5 -6
  99. package/src/components/dialogs/import-component-dialog.tsx +16 -9
  100. package/src/components/dialogs/import-package-dialog.tsx +3 -2
  101. package/src/components/dialogs/new-package-save-prompt-dialog.tsx +190 -0
  102. package/src/components/organization/OrganizationCard.tsx +206 -0
  103. package/src/components/organization/OrganizationCardSkeleton.tsx +55 -0
  104. package/src/components/organization/OrganizationHeader.tsx +154 -0
  105. package/src/components/organization/OrganizationMembers.tsx +146 -0
  106. package/src/components/package-port/CodeAndPreview.tsx +15 -12
  107. package/src/components/package-port/CodeEditor.tsx +4 -30
  108. package/src/components/package-port/CodeEditorHeader.tsx +123 -61
  109. package/src/components/package-port/EditorNav.tsx +32 -49
  110. package/src/components/preview/ConnectedPackagesList.tsx +8 -8
  111. package/src/components/preview/ConnectedRepoOverview.tsx +102 -2
  112. package/src/components/preview/PackageReleasesDashboard.tsx +23 -11
  113. package/src/components/ui/tree-view.tsx +6 -3
  114. package/src/hooks/use-add-org-member-mutation.ts +51 -0
  115. package/src/hooks/use-create-org-mutation.ts +38 -0
  116. package/src/hooks/use-create-package-mutation.ts +3 -0
  117. package/src/hooks/use-current-package-release.ts +4 -3
  118. package/src/hooks/use-download-zip.ts +2 -2
  119. package/src/hooks/use-global-store.ts +6 -4
  120. package/src/hooks/use-hydration.ts +30 -0
  121. package/src/hooks/use-jlcpcb-component-import.tsx +164 -0
  122. package/src/hooks/use-list-org-members.ts +27 -0
  123. package/src/hooks/use-list-user-orgs.ts +25 -0
  124. package/src/hooks/use-org-by-github-handle.ts +26 -0
  125. package/src/hooks/use-org.ts +24 -0
  126. package/src/hooks/use-organization.ts +42 -0
  127. package/src/hooks/use-package-as-snippet.ts +4 -2
  128. package/src/hooks/use-package-builds.ts +6 -2
  129. package/src/hooks/use-package-files.ts +5 -3
  130. package/src/hooks/use-package-release-by-id-or-version.ts +29 -20
  131. package/src/hooks/use-package-release-images.ts +105 -0
  132. package/src/hooks/use-package-release.ts +2 -2
  133. package/src/hooks/use-package-stars.ts +80 -4
  134. package/src/hooks/use-preview-images.ts +6 -3
  135. package/src/hooks/use-remove-org-member-mutation.ts +32 -0
  136. package/src/hooks/use-update-ai-description-mutation.ts +42 -0
  137. package/src/hooks/use-update-org-mutation.ts +41 -0
  138. package/src/hooks/use-warn-user-on-page-change.ts +71 -4
  139. package/src/hooks/useFileManagement.ts +51 -22
  140. package/src/hooks/useOptimizedPackageFilesLoader.ts +11 -24
  141. package/src/hooks/usePackageFilesLoader.ts +2 -2
  142. package/src/hooks/useUpdatePackageFilesMutation.ts +13 -1
  143. package/src/lib/download-fns/download-gltf-from-circuit-json.ts +1 -1
  144. package/src/lib/download-fns/download-kicad-files.ts +22 -11
  145. package/src/lib/download-fns/download-step.ts +12 -0
  146. package/src/lib/normalize-svg-for-tile.ts +50 -0
  147. package/src/lib/posthog.ts +11 -9
  148. package/src/lib/react-query-api-failure-tracking.ts +148 -0
  149. package/src/lib/sentry.ts +14 -0
  150. package/src/lib/templates/blank-circuit-board-template.ts +0 -4
  151. package/src/lib/ts-lib-cache.ts +122 -7
  152. package/src/lib/utils/checkIfManualEditsImported.ts +4 -4
  153. package/src/lib/utils/findTargetFile.ts +45 -10
  154. package/src/lib/utils/isComponentExported.ts +2 -1
  155. package/src/main.tsx +2 -1
  156. package/src/pages/create-organization.tsx +169 -0
  157. package/src/pages/dashboard.tsx +38 -6
  158. package/src/pages/datasheet.tsx +1 -1
  159. package/src/pages/datasheets.tsx +3 -3
  160. package/src/pages/editor.tsx +4 -6
  161. package/src/pages/landing.tsx +6 -6
  162. package/src/pages/latest.tsx +3 -0
  163. package/src/pages/organization-profile.tsx +199 -0
  164. package/src/pages/organization-settings.tsx +569 -0
  165. package/src/pages/package-editor.tsx +21 -21
  166. package/src/pages/preview-release.tsx +75 -145
  167. package/src/pages/quickstart.tsx +159 -123
  168. package/src/pages/release-detail.tsx +119 -31
  169. package/src/pages/search.tsx +197 -57
  170. package/src/pages/settings-redirect.tsx +44 -0
  171. package/src/pages/trending.tsx +29 -20
  172. package/src/pages/user-profile.tsx +58 -7
  173. package/src/pages/user-settings.tsx +161 -0
  174. package/src/pages/view-package.tsx +30 -16
  175. package/vite.config.ts +9 -0
  176. package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -133
  177. package/src/components/JLCPCBImportDialog.tsx +0 -280
  178. package/src/components/PackageBuildsPage/LogContent.tsx +0 -72
  179. package/src/components/PackageBuildsPage/PackageBuildDetailsPage.tsx +0 -113
  180. package/src/components/PackageBuildsPage/build-preview-content.tsx +0 -56
  181. package/src/components/PackageBuildsPage/collapsible-section.tsx +0 -63
  182. package/src/components/PackageBuildsPage/package-build-details-panel.tsx +0 -166
  183. package/src/components/PackageBuildsPage/package-build-header.tsx +0 -79
  184. package/src/components/PageSearchComponent.tsx +0 -148
  185. package/src/pages/package-builds.tsx +0 -33
@@ -6,7 +6,7 @@ test("create package file with content_text", async () => {
6
6
 
7
7
  // First create a package
8
8
  const packageResponse = await axios.post("/api/packages/create", {
9
- name: "@test/package-files-create",
9
+ name: "testuser/package-files-create",
10
10
  description: "A test package for creating files",
11
11
  })
12
12
  expect(packageResponse.status).toBe(200)
@@ -40,8 +40,8 @@ test("create package file with content_text", async () => {
40
40
  expect(responseBody.package_file.file_path).toBe(filePath)
41
41
 
42
42
  // Verify the file can be retrieved using the get endpoint
43
- const getResponse = await axios.post("/api/package_files/get", {
44
- package_file_id: responseBody.package_file.package_file_id,
43
+ const getResponse = await axios.get("/api/package_files/get", {
44
+ params: { package_file_id: responseBody.package_file.package_file_id },
45
45
  })
46
46
  expect(getResponse.status).toBe(200)
47
47
  expect(getResponse.data.package_file.file_path).toBe(filePath)
@@ -53,7 +53,7 @@ test("create package file with content_base64", async () => {
53
53
 
54
54
  // First create a package
55
55
  const packageResponse = await axios.post("/api/packages/create", {
56
- name: "@test/package-files-create-base64",
56
+ name: "testuser/package-files-create-base64",
57
57
  description: "A test package for creating files with base64",
58
58
  })
59
59
  expect(packageResponse.status).toBe(200)
@@ -86,8 +86,8 @@ test("create package file with content_base64", async () => {
86
86
  // Content is no longer returned from the create endpoint
87
87
 
88
88
  // Verify the file can be retrieved using the get endpoint with package_name_with_version
89
- const getResponse = await axios.post("/api/package_files/get", {
90
- package_file_id: responseBody.package_file.package_file_id,
89
+ const getResponse = await axios.get("/api/package_files/get", {
90
+ params: { package_file_id: responseBody.package_file.package_file_id },
91
91
  })
92
92
  expect(getResponse.status).toBe(200)
93
93
  // content_text is no longer returned by the get endpoint
@@ -97,7 +97,7 @@ test("create package file using package_name_with_version", async () => {
97
97
  const { axios } = await getTestServer()
98
98
 
99
99
  // First create a package
100
- const packageName = "@test/package-files-create-by-name"
100
+ const packageName = "testuser/package-files-create-by-name"
101
101
  const version = "2.0.0"
102
102
  const packageResponse = await axios.post("/api/packages/create", {
103
103
  name: packageName,
@@ -131,8 +131,10 @@ test("create package file using package_name_with_version", async () => {
131
131
  // Content is no longer returned from the create endpoint
132
132
 
133
133
  // Verify the file can be retrieved using the list endpoint
134
- const listResponse = await axios.post("/api/package_files/list", {
135
- package_name_with_version: `${packageName}@${version}`,
134
+ const listResponse = await axios.get("/api/package_files/list", {
135
+ params: {
136
+ package_name_with_version: `${packageName}@${version}`,
137
+ },
136
138
  })
137
139
  expect(listResponse.status).toBe(200)
138
140
  expect(listResponse.data.ok).toBe(true)
@@ -183,7 +185,7 @@ test("create package file - 400 for missing content", async () => {
183
185
 
184
186
  // First create a package and release
185
187
  const packageResponse = await axios.post("/api/packages/create", {
186
- name: "@test/package-files-create-error",
188
+ name: "testuser/package-files-create-error",
187
189
  description: "A test package for error cases",
188
190
  })
189
191
  const createdPackage = packageResponse.data.package
@@ -212,7 +214,7 @@ test("create package file - 400 for both content_text and content_base64", async
212
214
 
213
215
  // First create a package and release
214
216
  const packageResponse = await axios.post("/api/packages/create", {
215
- name: "@test/package-files-create-error-2",
217
+ name: "testuser/package-files-create-error-2",
216
218
  description: "Another test package for error cases",
217
219
  })
218
220
  const createdPackage = packageResponse.data.package
@@ -242,7 +244,7 @@ test("create release tarball package file", async () => {
242
244
 
243
245
  // First create a package
244
246
  const packageResponse = await axios.post("/api/packages/create", {
245
- name: "@test/package-files-create-tarball",
247
+ name: "testuser/package-files-create-tarball",
246
248
  description: "A test package for creating tarball files",
247
249
  })
248
250
  expect(packageResponse.status).toBe(200)
@@ -288,7 +290,7 @@ test("create package file - 400 for release tarball without npm_pack_output", as
288
290
 
289
291
  // First create a package and release
290
292
  const packageResponse = await axios.post("/api/packages/create", {
291
- name: "@test/package-files-create-tarball-error",
293
+ name: "testuser/package-files-create-tarball-error",
292
294
  description: "Test package for tarball error cases",
293
295
  })
294
296
  const createdPackage = packageResponse.data.package
@@ -5,7 +5,7 @@ test("create new package file with content_text", async () => {
5
5
  const { axios } = await getTestServer()
6
6
 
7
7
  const packageResponse = await axios.post("/api/packages/create", {
8
- name: "@test/package-files-create-or-update",
8
+ name: "testuser/package-files-create-or-update",
9
9
  description: "A test package for creating or updating files",
10
10
  })
11
11
  expect(packageResponse.status).toBe(200)
@@ -40,8 +40,8 @@ test("create new package file with content_text", async () => {
40
40
  expect(responseBody.package_file.file_path).toBe(filePath)
41
41
  expect(responseBody.package_file.content_text).toBe(fileContent)
42
42
 
43
- const getResponse = await axios.post("/api/package_files/get", {
44
- package_file_id: responseBody.package_file.package_file_id,
43
+ const getResponse = await axios.get("/api/package_files/get", {
44
+ params: { package_file_id: responseBody.package_file.package_file_id },
45
45
  })
46
46
  expect(getResponse.status).toBe(200)
47
47
  expect(getResponse.data.package_file.file_path).toBe(filePath)
@@ -51,7 +51,7 @@ test("update existing package file with content_text", async () => {
51
51
  const { axios } = await getTestServer()
52
52
 
53
53
  const packageResponse = await axios.post("/api/packages/create", {
54
- name: "@test/package-files-update",
54
+ name: "testuser/package-files-update",
55
55
  description: "A test package for updating files",
56
56
  })
57
57
  expect(packageResponse.status).toBe(200)
@@ -101,8 +101,8 @@ test("update existing package file with content_text", async () => {
101
101
  expect(responseBody.package_file.file_path).toBe(filePath)
102
102
  expect(responseBody.package_file.content_text).toBe(updatedContent)
103
103
 
104
- const getResponse = await axios.post("/api/package_files/get", {
105
- package_file_id: responseBody.package_file.package_file_id,
104
+ const getResponse = await axios.get("/api/package_files/get", {
105
+ params: { package_file_id: responseBody.package_file.package_file_id },
106
106
  })
107
107
  expect(getResponse.status).toBe(200)
108
108
  expect(getResponse.data.package_file.file_path).toBe(filePath)
@@ -112,7 +112,7 @@ test("create package file with content_base64", async () => {
112
112
  const { axios } = await getTestServer()
113
113
 
114
114
  const packageResponse = await axios.post("/api/packages/create", {
115
- name: "@test/package-files-create-or-update-base64",
115
+ name: "testuser/package-files-create-or-update-base64",
116
116
  description: "A test package for creating files with base64",
117
117
  })
118
118
  expect(packageResponse.status).toBe(200)
@@ -145,8 +145,8 @@ test("create package file with content_base64", async () => {
145
145
  expect(responseBody.package_file.file_path).toBe(filePath)
146
146
  expect(responseBody.package_file.content_text).toBe(fileContent)
147
147
 
148
- const getResponse = await axios.post("/api/package_files/get", {
149
- package_file_id: responseBody.package_file.package_file_id,
148
+ const getResponse = await axios.get("/api/package_files/get", {
149
+ params: { package_file_id: responseBody.package_file.package_file_id },
150
150
  })
151
151
  expect(getResponse.status).toBe(200)
152
152
  expect(getResponse.data.package_file.file_path).toBe(filePath)
@@ -155,7 +155,7 @@ test("create package file with content_base64", async () => {
155
155
  test("create package file using package_name_with_version", async () => {
156
156
  const { axios } = await getTestServer()
157
157
 
158
- const packageName = "@test/package-files-create-or-update-by-name"
158
+ const packageName = "testuser/package-files-create-or-update-by-name"
159
159
  const version = "2.0.0"
160
160
  const packageResponse = await axios.post("/api/packages/create", {
161
161
  name: packageName,
@@ -189,8 +189,10 @@ test("create package file using package_name_with_version", async () => {
189
189
  expect(responseBody.package_file.file_path).toBe(filePath)
190
190
  expect(responseBody.package_file.content_text).toBe(fileContent)
191
191
 
192
- const listResponse = await axios.post("/api/package_files/list", {
193
- package_name_with_version: `${packageName}@${version}`,
192
+ const listResponse = await axios.get("/api/package_files/list", {
193
+ params: {
194
+ package_name_with_version: `${packageName}@${version}`,
195
+ },
194
196
  })
195
197
  expect(listResponse.status).toBe(200)
196
198
  expect(listResponse.data.ok).toBe(true)
@@ -205,7 +207,7 @@ test("create release tarball package file", async () => {
205
207
  const { axios } = await getTestServer()
206
208
 
207
209
  const packageResponse = await axios.post("/api/packages/create", {
208
- name: "@test/package-files-create-or-update-tarball",
210
+ name: "testuser/package-files-create-or-update-tarball",
209
211
  description: "A test package for creating tarball files",
210
212
  })
211
213
  expect(packageResponse.status).toBe(200)
@@ -282,7 +284,7 @@ test("create_or_update - allow empty content_text", async () => {
282
284
  const { axios } = await getTestServer()
283
285
 
284
286
  const packageResponse = await axios.post("/api/packages/create", {
285
- name: "@test/package-files-create-or-update-error",
287
+ name: "testuser/package-files-create-or-update-error",
286
288
  description: "A test package for error cases",
287
289
  })
288
290
  const createdPackage = packageResponse.data.package
@@ -308,7 +310,7 @@ test("create_or_update - 400 for missing content", async () => {
308
310
  const { axios } = await getTestServer()
309
311
 
310
312
  const packageResponse = await axios.post("/api/packages/create", {
311
- name: "@test/package-files-create-or-update-error",
313
+ name: "testuser/package-files-create-or-update-error",
312
314
  description: "A test package for error cases",
313
315
  })
314
316
  const createdPackage = packageResponse.data.package
@@ -335,7 +337,7 @@ test("create_or_update - 400 for both content_text and content_base64", async ()
335
337
  const { axios } = await getTestServer()
336
338
 
337
339
  const packageResponse = await axios.post("/api/packages/create", {
338
- name: "@test/package-files-create-or-update-error-2",
340
+ name: "testuser/package-files-create-or-update-error-2",
339
341
  description: "Another test package for error cases",
340
342
  })
341
343
  const createdPackage = packageResponse.data.package
@@ -364,7 +366,7 @@ test("create_or_update - 400 for release tarball without npm_pack_output", async
364
366
  const { axios } = await getTestServer()
365
367
 
366
368
  const packageResponse = await axios.post("/api/packages/create", {
367
- name: "@test/package-files-create-or-update-tarball-error",
369
+ name: "testuser/package-files-create-or-update-tarball-error",
368
370
  description: "Test package for tarball error cases",
369
371
  })
370
372
  const createdPackage = packageResponse.data.package
@@ -396,7 +398,7 @@ test("create_or_update - 404 for npm_pack_output without is_release_tarball", as
396
398
  const { axios } = await getTestServer()
397
399
 
398
400
  const packageResponse = await axios.post("/api/packages/create", {
399
- name: "@test/package-files-create-or-update-tarball-error-2",
401
+ name: "testuser/package-files-create-or-update-tarball-error-2",
400
402
  description: "Test package for tarball error cases",
401
403
  })
402
404
  const createdPackage = packageResponse.data.package
@@ -428,7 +430,7 @@ test.skip("update package file with content_base64", async () => {
428
430
  const { axios } = await getTestServer()
429
431
 
430
432
  const packageResponse = await axios.post("/api/packages/create", {
431
- name: "@test/package-files-update-base64",
433
+ name: "testuser/package-files-update-base64",
432
434
  description: "A test package for updating files with base64",
433
435
  })
434
436
  expect(packageResponse.status).toBe(200)
@@ -475,8 +477,8 @@ test.skip("update package file with content_base64", async () => {
475
477
  )
476
478
  expect(responseBody.package_file.content_text).toBe(updatedContent)
477
479
 
478
- const getResponse = await axios.post("/api/package_files/get", {
479
- package_file_id: responseBody.package_file.package_file_id,
480
+ const getResponse = await axios.get("/api/package_files/get", {
481
+ params: { package_file_id: responseBody.package_file.package_file_id },
480
482
  })
481
483
  expect(getResponse.status).toBe(200)
482
484
  expect(getResponse.data.package_file.file_path).toBe(filePath)
@@ -486,7 +488,7 @@ test("create_or_update detects correct content mimetype", async () => {
486
488
  const { axios } = await getTestServer()
487
489
 
488
490
  const packageResponse = await axios.post("/api/packages/create", {
489
- name: "@test/package-files-mimetype",
491
+ name: "testuser/package-files-mimetype",
490
492
  description: "A test package for testing mimetypes",
491
493
  })
492
494
  expect(packageResponse.status).toBe(200)
@@ -536,7 +538,7 @@ test.skip("create_or_update respects provided content_mimetype", async () => {
536
538
  const { axios } = await getTestServer()
537
539
 
538
540
  const packageResponse = await axios.post("/api/packages/create", {
539
- name: "@test/package-files-custom-mimetype",
541
+ name: "testuser/package-files-custom-mimetype",
540
542
  description: "A test package for custom mimetypes",
541
543
  })
542
544
  expect(packageResponse.status).toBe(200)
@@ -569,7 +571,7 @@ test.skip("create_or_update - 403 for unauthorized user", async () => {
569
571
  const { axios, db } = await getTestServer()
570
572
 
571
573
  const pkg = {
572
- name: "@test/package-files-create-or-update-unauthorized",
574
+ name: "testuser/package-files-create-or-update-unauthorized",
573
575
  owner_org_id: "different-org",
574
576
  created_at: "2023-01-01T00:00:00Z",
575
577
  updated_at: "2023-01-01T00:00:00Z",
@@ -5,7 +5,7 @@ test("delete package file using package_release_id", async () => {
5
5
  const { axios } = await getTestServer()
6
6
 
7
7
  const packageResponse = await axios.post("/api/packages/create", {
8
- name: "@test/package-files-delete",
8
+ name: "testuser/package-files-delete",
9
9
  description: "A test package for deleting files",
10
10
  })
11
11
  expect(packageResponse.status).toBe(200)
@@ -37,8 +37,8 @@ test("delete package file using package_release_id", async () => {
37
37
  expect(deleteResponse.data.ok).toBe(true)
38
38
 
39
39
  try {
40
- await axios.post("/api/package_files/get", {
41
- package_file_id: createdFile.package_file_id,
40
+ await axios.get("/api/package_files/get", {
41
+ params: { package_file_id: createdFile.package_file_id },
42
42
  })
43
43
  throw new Error("Expected request to fail")
44
44
  } catch (error: any) {
@@ -50,7 +50,7 @@ test("delete package file using package_release_id", async () => {
50
50
  test("delete package file using package_name_with_version", async () => {
51
51
  const { axios } = await getTestServer()
52
52
 
53
- const packageName = "@test/package-files-delete-by-name"
53
+ const packageName = "testuser/package-files-delete-by-name"
54
54
  const version = "2.0.0"
55
55
  const packageResponse = await axios.post("/api/packages/create", {
56
56
  name: packageName,
@@ -84,8 +84,8 @@ test("delete package file using package_name_with_version", async () => {
84
84
  expect(deleteResponse.data.ok).toBe(true)
85
85
 
86
86
  try {
87
- await axios.post("/api/package_files/get", {
88
- package_file_id: createdFile.package_file_id,
87
+ await axios.get("/api/package_files/get", {
88
+ params: { package_file_id: createdFile.package_file_id },
89
89
  })
90
90
  throw new Error("Expected request to fail")
91
91
  } catch (error: any) {
@@ -129,7 +129,7 @@ test("delete package file - 404 for non-existent file", async () => {
129
129
  const { axios } = await getTestServer()
130
130
 
131
131
  const packageResponse = await axios.post("/api/packages/create", {
132
- name: "@test/package-files-delete-error",
132
+ name: "testuser/package-files-delete-error",
133
133
  description: "A test package for delete error cases",
134
134
  })
135
135
  expect(packageResponse.status).toBe(200)
@@ -159,7 +159,7 @@ test.skip("delete package file - 403 for unauthorized user", async () => {
159
159
  const { axios, db } = await getTestServer()
160
160
 
161
161
  const pkg = {
162
- name: "@test/package-files-delete-unauthorized",
162
+ name: "testuser/package-files-delete-unauthorized",
163
163
  owner_org_id: "different-org",
164
164
  created_at: "2023-01-01T00:00:00Z",
165
165
  updated_at: "2023-01-01T00:00:00Z",
@@ -220,7 +220,7 @@ test("delete package file - 400 when both package_release_id and package_name_wi
220
220
  try {
221
221
  await axios.post("/api/package_files/delete", {
222
222
  package_release_id: "some-id",
223
- package_name_with_version: "@test/package@1.0.0",
223
+ package_name_with_version: "testuser/package@1.0.0",
224
224
  file_path: "/test.js",
225
225
  })
226
226
  throw new Error("Expected request to fail")
@@ -6,7 +6,7 @@ test("download package file by package_file_id", async () => {
6
6
 
7
7
  // First create a package
8
8
  const packageResponse = await axios.post("/api/packages/create", {
9
- name: "@test/package-download",
9
+ name: "testuser/package-download",
10
10
  description: "A test package for downloading files",
11
11
  })
12
12
  expect(packageResponse.status).toBe(200)
@@ -54,7 +54,7 @@ test("download package file by package_name_with_version and file_path", async (
54
54
  const { axios, db } = await getTestServer()
55
55
 
56
56
  // First create a package
57
- const packageName = "@test/package-download-2"
57
+ const packageName = "testuser/package-download-2"
58
58
  const version = "2.0.0"
59
59
  const packageResponse = await axios.post("/api/packages/create", {
60
60
  name: packageName,
@@ -142,7 +142,7 @@ test("download package file - 404 for non-existent file path", async () => {
142
142
  const { axios, db } = await getTestServer()
143
143
 
144
144
  // First create a package
145
- const packageName = "@test/package-download-3"
145
+ const packageName = "testuser/package-download-3"
146
146
  const packageResponse = await axios.post("/api/packages/create", {
147
147
  name: packageName,
148
148
  description: "Test package for non-existent file path",
@@ -206,7 +206,7 @@ test("download package file with POST method", async () => {
206
206
 
207
207
  // First create a package
208
208
  const packageResponse = await axios.post("/api/packages/create", {
209
- name: "@test/package-download-post",
209
+ name: "testuser/package-download-post",
210
210
  description: "Test package for POST download",
211
211
  })
212
212
  expect(packageResponse.status).toBe(200)
@@ -2,12 +2,12 @@ import { getTestServer } from "bun-tests/fake-snippets-api/fixtures/get-test-ser
2
2
  import { expect, test } from "bun:test"
3
3
  import { packageFileSchema } from "fake-snippets-api/lib/db/schema"
4
4
 
5
- test("POST /api/package_files/get - should return package file by package_file_id", async () => {
5
+ test("GET /api/package_files/get - should return package file by package_file_id", async () => {
6
6
  const { axios, db } = await getTestServer()
7
7
 
8
8
  // First create a package
9
9
  const packageResponse = await axios.post("/api/packages/create", {
10
- name: "@test/package-files",
10
+ name: "testuser/package-files",
11
11
  description: "A test package for files",
12
12
  })
13
13
  expect(packageResponse.status).toBe(200)
@@ -34,8 +34,8 @@ test("POST /api/package_files/get - should return package file by package_file_i
34
34
  const addedFile = db.addPackageFile(packageFile)
35
35
 
36
36
  // Get the file by package_file_id
37
- const getResponse = await axios.post("/api/package_files/get", {
38
- package_file_id: addedFile.package_file_id,
37
+ const getResponse = await axios.get("/api/package_files/get", {
38
+ params: { package_file_id: addedFile.package_file_id },
39
39
  })
40
40
 
41
41
  expect(getResponse.status).toBe(200)
@@ -44,12 +44,12 @@ test("POST /api/package_files/get - should return package file by package_file_i
44
44
  expect(responseBody.package_file).toEqual(packageFileSchema.parse(addedFile))
45
45
  })
46
46
 
47
- test("POST /api/package_files/get - should return package file by package_release_id and file_path", async () => {
47
+ test("GET /api/package_files/get - should return package file by package_release_id and file_path", async () => {
48
48
  const { axios, db } = await getTestServer()
49
49
 
50
50
  // First create a package
51
51
  const packageResponse = await axios.post("/api/packages/create", {
52
- name: "@test/package-files-2",
52
+ name: "testuser/package-files-2",
53
53
  description: "Another test package for files",
54
54
  })
55
55
  expect(packageResponse.status).toBe(200)
@@ -77,9 +77,11 @@ test("POST /api/package_files/get - should return package file by package_releas
77
77
  db.addPackageFile(packageFile)
78
78
 
79
79
  // Get the file by package_release_id and file_path
80
- const getResponse = await axios.post("/api/package_files/get", {
81
- package_release_id: createdRelease.package_release_id,
82
- file_path: filePath,
80
+ const getResponse = await axios.get("/api/package_files/get", {
81
+ params: {
82
+ package_release_id: createdRelease.package_release_id,
83
+ file_path: filePath,
84
+ },
83
85
  })
84
86
 
85
87
  expect(getResponse.status).toBe(200)
@@ -91,11 +93,11 @@ test("POST /api/package_files/get - should return package file by package_releas
91
93
  )
92
94
  })
93
95
 
94
- test("POST /api/package_files/get - should return package file by package_name_with_version and file_path", async () => {
96
+ test("GET /api/package_files/get - should return package file by package_name_with_version and file_path", async () => {
95
97
  const { axios, db } = await getTestServer()
96
98
 
97
99
  // First create a package
98
- const packageName = "@test/package-files-3"
100
+ const packageName = "testuser/package-files-3"
99
101
  const packageResponse = await axios.post("/api/packages/create", {
100
102
  name: packageName,
101
103
  description: "Package for name_with_version test",
@@ -126,9 +128,11 @@ test("POST /api/package_files/get - should return package file by package_name_w
126
128
  db.addPackageFile(packageFile)
127
129
 
128
130
  // Get the file by package_name_with_version and file_path
129
- const getResponse = await axios.post("/api/package_files/get", {
130
- package_name_with_version: `${packageName}@${version}`,
131
- file_path: filePath,
131
+ const getResponse = await axios.get("/api/package_files/get", {
132
+ params: {
133
+ package_name_with_version: `${packageName}@${version}`,
134
+ file_path: filePath,
135
+ },
132
136
  })
133
137
 
134
138
  expect(getResponse.status).toBe(200)
@@ -140,12 +144,14 @@ test("POST /api/package_files/get - should return package file by package_name_w
140
144
  )
141
145
  })
142
146
 
143
- test("POST /api/package_files/get - should return 404 if package file not found", async () => {
147
+ test("GET /api/package_files/get - should return 404 if package file not found", async () => {
144
148
  const { axios } = await getTestServer()
145
149
 
146
150
  try {
147
- await axios.post("/api/package_files/get", {
148
- package_file_id: "123e4567-e89b-12d3-a456-426614174000", // valid UUID format
151
+ await axios.get("/api/package_files/get", {
152
+ params: {
153
+ package_file_id: "123e4567-e89b-12d3-a456-426614174000", // valid UUID format
154
+ },
149
155
  })
150
156
  throw new Error("Expected request to fail")
151
157
  } catch (error: any) {
@@ -154,14 +160,16 @@ test("POST /api/package_files/get - should return 404 if package file not found"
154
160
  }
155
161
  })
156
162
 
157
- test("POST /api/package_files/get - should return 404 if package not found with package_name", async () => {
163
+ test("GET /api/package_files/get - should return 404 if package not found with package_name", async () => {
158
164
  const { axios } = await getTestServer()
159
165
 
160
166
  try {
161
- await axios.post("/api/package_files/get", {
162
- package_name: "non-existent-package",
163
- version: "1.0.0",
164
- file_path: "/index.js",
167
+ await axios.get("/api/package_files/get", {
168
+ params: {
169
+ package_name: "non-existent-package",
170
+ version: "1.0.0",
171
+ file_path: "/index.js",
172
+ },
165
173
  })
166
174
  throw new Error("Expected request to fail")
167
175
  } catch (error: any) {
@@ -170,12 +178,12 @@ test("POST /api/package_files/get - should return 404 if package not found with
170
178
  }
171
179
  })
172
180
 
173
- test("POST /api/package_files/get - should return file using package_id and version", async () => {
181
+ test("GET /api/package_files/get - should return file using package_id and version", async () => {
174
182
  const { axios, db } = await getTestServer()
175
183
 
176
184
  // First create a package
177
185
  const packageResponse = await axios.post("/api/packages/create", {
178
- name: "@test/package-files-4",
186
+ name: "testuser/package-files-4",
179
187
  description: "Package for package_id and version test",
180
188
  })
181
189
  expect(packageResponse.status).toBe(200)
@@ -204,10 +212,12 @@ test("POST /api/package_files/get - should return file using package_id and vers
204
212
  db.addPackageFile(packageFile)
205
213
 
206
214
  // Get the file by package_id and version
207
- const getResponse = await axios.post("/api/package_files/get", {
208
- package_id: createdPackage.package_id,
209
- version,
210
- file_path: filePath,
215
+ const getResponse = await axios.get("/api/package_files/get", {
216
+ params: {
217
+ package_id: createdPackage.package_id,
218
+ version,
219
+ file_path: filePath,
220
+ },
211
221
  })
212
222
 
213
223
  expect(getResponse.status).toBe(200)
@@ -6,7 +6,7 @@ test("list package files by package_release_id", async () => {
6
6
 
7
7
  // First create a package
8
8
  const packageResponse = await axios.post("/api/packages/create", {
9
- name: "@test/package-files-list",
9
+ name: "testuser/package-files-list",
10
10
  description: "A test package for listing files",
11
11
  })
12
12
  expect(packageResponse.status).toBe(200)
@@ -51,8 +51,8 @@ test("list package files by package_release_id", async () => {
51
51
  }
52
52
 
53
53
  // List files by package_release_id
54
- const listResponse = await axios.post("/api/package_files/list", {
55
- package_release_id: createdRelease.package_release_id,
54
+ const listResponse = await axios.get("/api/package_files/list", {
55
+ params: { package_release_id: createdRelease.package_release_id },
56
56
  })
57
57
 
58
58
  expect(listResponse.status).toBe(200)
@@ -74,7 +74,7 @@ test("list package files by package_name with latest version", async () => {
74
74
  const { axios, db } = await getTestServer()
75
75
 
76
76
  // First create a package
77
- const packageName = "@test/package-files-list-2"
77
+ const packageName = "testuser/package-files-list-2"
78
78
  const packageResponse = await axios.post("/api/packages/create", {
79
79
  name: packageName,
80
80
  description: "Another test package for listing files",
@@ -114,9 +114,11 @@ test("list package files by package_name with latest version", async () => {
114
114
  }
115
115
 
116
116
  // List files by package_name with use_latest_version
117
- const listResponse = await axios.post("/api/package_files/list", {
118
- package_name: packageName.replace(/^@/, ""),
119
- use_latest_version: true,
117
+ const listResponse = await axios.get("/api/package_files/list", {
118
+ params: {
119
+ package_name: packageName.replace(/^@/, ""),
120
+ use_latest_version: true,
121
+ },
120
122
  })
121
123
 
122
124
  expect(listResponse.status).toBe(200)
@@ -129,7 +131,7 @@ test("list package files by package_name_with_version", async () => {
129
131
  const { axios, db } = await getTestServer()
130
132
 
131
133
  // First create a package
132
- const packageName = "@test/package-files-list-3"
134
+ const packageName = "testuser/package-files-list-3"
133
135
  const version = "2.0.0"
134
136
  const packageResponse = await axios.post("/api/packages/create", {
135
137
  name: packageName,
@@ -163,8 +165,10 @@ test("list package files by package_name_with_version", async () => {
163
165
  }
164
166
 
165
167
  // List files by package_name_with_version
166
- const listResponse = await axios.post("/api/package_files/list", {
167
- package_name_with_version: `${packageName}@${version}`,
168
+ const listResponse = await axios.get("/api/package_files/list", {
169
+ params: {
170
+ package_name_with_version: `${packageName}@${version}`,
171
+ },
168
172
  })
169
173
 
170
174
  expect(listResponse.status).toBe(200)
@@ -178,8 +182,10 @@ test("list package files - 404 for non-existent package release", async () => {
178
182
  const { axios } = await getTestServer()
179
183
 
180
184
  try {
181
- await axios.post("/api/package_files/list", {
182
- package_release_id: "00000000-0000-0000-0000-000000000000",
185
+ await axios.get("/api/package_files/list", {
186
+ params: {
187
+ package_release_id: "00000000-0000-0000-0000-000000000000",
188
+ },
183
189
  })
184
190
  throw new Error("Expected request to fail")
185
191
  } catch (error: any) {
@@ -192,9 +198,11 @@ test("list package files - 404 for non-existent package", async () => {
192
198
  const { axios } = await getTestServer()
193
199
 
194
200
  try {
195
- await axios.post("/api/package_files/list", {
196
- package_name: "non-existent-package",
197
- use_latest_version: true,
201
+ await axios.get("/api/package_files/list", {
202
+ params: {
203
+ package_name: "non-existent-package",
204
+ use_latest_version: true,
205
+ },
198
206
  })
199
207
  throw new Error("Expected request to fail")
200
208
  } catch (error: any) {
@@ -136,3 +136,36 @@ test("create package release - package not found", async () => {
136
136
  )
137
137
  }
138
138
  })
139
+
140
+ // test
141
+ test("create package release under org", async () => {
142
+ const { axios } = await getTestServer()
143
+
144
+ const orgResponse = await axios.post("/api/orgs/create", {
145
+ name: "testorg",
146
+ })
147
+ expect(orgResponse.status).toBe(200)
148
+
149
+ const packageResponse = await axios.post("/api/packages/create", {
150
+ name: "testorg/test-package",
151
+ description: "Test Description",
152
+ })
153
+ expect(packageResponse.status).toBe(200)
154
+ const createdPackage = packageResponse.data.package
155
+
156
+ const releaseResponse = await axios.post("/api/package_releases/create", {
157
+ package_id: createdPackage.package_id,
158
+ version: "1.0.0",
159
+ is_latest: true,
160
+ })
161
+ expect(releaseResponse.status).toBe(200)
162
+ expect(releaseResponse.data.ok).toBe(true)
163
+ expect(releaseResponse.data.package_release).toBeDefined()
164
+ expect(releaseResponse.data.package_release.package_id).toBe(
165
+ createdPackage.package_id,
166
+ )
167
+ expect(releaseResponse.data.package_release.version).toBe("1.0.0")
168
+ expect(releaseResponse.data.package_release.is_latest).toBe(true)
169
+ expect(releaseResponse.data.package_release.ai_review_requested).toBe(false)
170
+ expect(releaseResponse.data.package_release.ai_review_text).toBeFalsy()
171
+ })