@agent-canvas/cli 0.8.1 → 0.9.0
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/commands/__tests__/add-arrow.test.d.ts +1 -0
- package/dist/commands/__tests__/add-arrow.test.js +186 -0
- package/dist/commands/__tests__/add-image.test.d.ts +1 -0
- package/dist/commands/__tests__/add-image.test.js +170 -0
- package/dist/commands/__tests__/add-line.test.d.ts +1 -0
- package/dist/commands/__tests__/add-line.test.js +138 -0
- package/dist/commands/__tests__/add-polygon.test.d.ts +1 -0
- package/dist/commands/__tests__/add-polygon.test.js +147 -0
- package/dist/commands/__tests__/add-shape.test.d.ts +1 -0
- package/dist/commands/__tests__/add-shape.test.js +193 -0
- package/dist/commands/__tests__/add-text.test.d.ts +1 -0
- package/dist/commands/__tests__/add-text.test.js +144 -0
- package/dist/commands/__tests__/clear.test.d.ts +1 -0
- package/dist/commands/__tests__/clear.test.js +65 -0
- package/dist/commands/__tests__/delete-elements.test.d.ts +1 -0
- package/dist/commands/__tests__/delete-elements.test.js +103 -0
- package/dist/commands/__tests__/export.test.d.ts +1 -0
- package/dist/commands/__tests__/export.test.js +187 -0
- package/dist/commands/__tests__/group-elements.test.d.ts +1 -0
- package/dist/commands/__tests__/group-elements.test.js +93 -0
- package/dist/commands/__tests__/list.test.d.ts +1 -0
- package/dist/commands/__tests__/list.test.js +134 -0
- package/dist/commands/__tests__/load.test.d.ts +1 -0
- package/dist/commands/__tests__/load.test.js +158 -0
- package/dist/commands/__tests__/move-elements.test.d.ts +1 -0
- package/dist/commands/__tests__/move-elements.test.js +117 -0
- package/dist/commands/__tests__/new-canvas.test.d.ts +1 -0
- package/dist/commands/__tests__/new-canvas.test.js +113 -0
- package/dist/commands/__tests__/read.test.d.ts +1 -0
- package/dist/commands/__tests__/read.test.js +247 -0
- package/dist/commands/__tests__/rename-canvas.test.d.ts +1 -0
- package/dist/commands/__tests__/rename-canvas.test.js +86 -0
- package/dist/commands/__tests__/resize-elements.test.d.ts +1 -0
- package/dist/commands/__tests__/resize-elements.test.js +150 -0
- package/dist/commands/__tests__/rotate-elements.test.d.ts +1 -0
- package/dist/commands/__tests__/rotate-elements.test.js +114 -0
- package/dist/commands/__tests__/save.test.d.ts +1 -0
- package/dist/commands/__tests__/save.test.js +105 -0
- package/dist/commands/__tests__/ungroup-element.test.d.ts +1 -0
- package/dist/commands/__tests__/ungroup-element.test.js +93 -0
- package/dist/commands/__tests__/use-canvas.test.d.ts +1 -0
- package/dist/commands/__tests__/use-canvas.test.js +86 -0
- package/dist/commands/add-arrow.d.ts +40 -0
- package/dist/commands/add-arrow.js +52 -0
- package/dist/commands/add-image.d.ts +26 -0
- package/dist/commands/add-image.js +66 -0
- package/dist/commands/add-line.d.ts +27 -0
- package/dist/commands/add-line.js +35 -0
- package/dist/commands/add-polygon.d.ts +26 -0
- package/dist/commands/add-polygon.js +44 -0
- package/dist/commands/add-shape.d.ts +32 -0
- package/dist/commands/add-shape.js +41 -0
- package/dist/commands/add-text.d.ts +28 -0
- package/dist/commands/add-text.js +35 -0
- package/dist/commands/clear.d.ts +17 -0
- package/dist/commands/clear.js +23 -0
- package/dist/commands/delete-elements.d.ts +20 -0
- package/dist/commands/delete-elements.js +26 -0
- package/dist/commands/export.d.ts +26 -0
- package/dist/commands/export.js +45 -0
- package/dist/commands/group-elements.d.ts +20 -0
- package/dist/commands/group-elements.js +28 -0
- package/dist/commands/list.d.ts +23 -0
- package/dist/commands/list.js +50 -0
- package/dist/commands/load.d.ts +20 -0
- package/dist/commands/load.js +67 -0
- package/dist/commands/move-elements.d.ts +22 -0
- package/dist/commands/move-elements.js +26 -0
- package/dist/commands/new-canvas.d.ts +21 -0
- package/dist/commands/new-canvas.js +29 -0
- package/dist/commands/read.d.ts +23 -0
- package/dist/commands/read.js +49 -0
- package/dist/commands/rename-canvas.d.ts +20 -0
- package/dist/commands/rename-canvas.js +27 -0
- package/dist/commands/resize-elements.d.ts +24 -0
- package/dist/commands/resize-elements.js +41 -0
- package/dist/commands/rotate-elements.d.ts +21 -0
- package/dist/commands/rotate-elements.js +26 -0
- package/dist/commands/save.d.ts +18 -0
- package/dist/commands/save.js +27 -0
- package/dist/commands/start.d.ts +0 -1
- package/dist/commands/start.js +0 -41
- package/dist/commands/ungroup-element.d.ts +20 -0
- package/dist/commands/ungroup-element.js +28 -0
- package/dist/commands/use-canvas.d.ts +20 -0
- package/dist/commands/use-canvas.js +27 -0
- package/dist/index.js +124 -518
- package/dist/lib/__tests__/image-utils.test.d.ts +1 -0
- package/dist/lib/__tests__/image-utils.test.js +123 -0
- package/dist/lib/__tests__/toon-converter.test.d.ts +1 -0
- package/dist/lib/__tests__/toon-converter.test.js +586 -0
- package/dist/lib/__tests__/ws-client.test.d.ts +1 -0
- package/dist/lib/__tests__/ws-client.test.js +22 -0
- package/dist/lib/image-utils.d.ts +3 -0
- package/dist/lib/image-utils.js +21 -0
- package/dist/lib/protocol.d.ts +24 -0
- package/dist/lib/toon-converter.d.ts +104 -0
- package/dist/lib/toon-converter.js +221 -0
- package/dist/static/assets/{ar-SA-G6X2FPQ2-BghRBqlz.js → ar-SA-G6X2FPQ2-DBOnFzSe.js} +1 -1
- package/dist/static/assets/{arc-BAce0Ut1.js → arc-bbUtBUEI.js} +1 -1
- package/dist/static/assets/{az-AZ-76LH7QW2-KWJgGR5j.js → az-AZ-76LH7QW2-Cc10aZ9u.js} +1 -1
- package/dist/static/assets/{bg-BG-XCXSNQG7-BR1q3b0y.js → bg-BG-XCXSNQG7-Ccf7m1dz.js} +1 -1
- package/dist/static/assets/{blockDiagram-38ab4fdb-Btt0ZzJn.js → blockDiagram-38ab4fdb-fpHXuuqC.js} +1 -1
- package/dist/static/assets/{bn-BD-2XOGV67Q-NMd2JSfE.js → bn-BD-2XOGV67Q-DUsn1OkS.js} +1 -1
- package/dist/static/assets/{c4Diagram-3d4e48cf-Z-Pe7XWi.js → c4Diagram-3d4e48cf-R8YUsP4D.js} +1 -1
- package/dist/static/assets/{ca-ES-6MX7JW3Y-CK3Gu_Vw.js → ca-ES-6MX7JW3Y-hu4EsJg6.js} +1 -1
- package/dist/static/assets/channel-DOejQ6Zr.js +1 -0
- package/dist/static/assets/{classDiagram-70f12bd4-EiSTrz_H.js → classDiagram-70f12bd4-Bd-nCoOe.js} +1 -1
- package/dist/static/assets/{classDiagram-v2-f2320105-B1McR9kH.js → classDiagram-v2-f2320105-BSqlF2Ya.js} +1 -1
- package/dist/static/assets/clone-BACvnIVb.js +1 -0
- package/dist/static/assets/{createText-2e5e7dd3-BQBy36k6.js → createText-2e5e7dd3-DDxcRLmM.js} +1 -1
- package/dist/static/assets/{cs-CZ-2BRQDIVT-DF6mA41r.js → cs-CZ-2BRQDIVT-CvZtKTE7.js} +1 -1
- package/dist/static/assets/{da-DK-5WZEPLOC-BQxspr3A.js → da-DK-5WZEPLOC-Bo6-ltfA.js} +1 -1
- package/dist/static/assets/{de-DE-XR44H4JA-D9E7YcnW.js → de-DE-XR44H4JA-Rki2qM_x.js} +1 -1
- package/dist/static/assets/{edges-e0da2a9e-C-C2iHXy.js → edges-e0da2a9e-DWJxCouB.js} +1 -1
- package/dist/static/assets/{el-GR-BZB4AONW-Bgv5eg1R.js → el-GR-BZB4AONW-BRy2rrt9.js} +1 -1
- package/dist/static/assets/{erDiagram-9861fffd-R9kTVhHm.js → erDiagram-9861fffd-DXldiM4J.js} +1 -1
- package/dist/static/assets/{es-ES-U4NZUMDT-CjXWWJ7K.js → es-ES-U4NZUMDT-hCKbxwHs.js} +1 -1
- package/dist/static/assets/{eu-ES-A7QVB2H4-BaBBwVk7.js → eu-ES-A7QVB2H4-CmZGwoa5.js} +1 -1
- package/dist/static/assets/{fa-IR-HGAKTJCU-CobpSNqw.js → fa-IR-HGAKTJCU-C6DRPcaF.js} +1 -1
- package/dist/static/assets/{fi-FI-Z5N7JZ37-C9VbkXdE.js → fi-FI-Z5N7JZ37-DBaspnIB.js} +1 -1
- package/dist/static/assets/{flowDb-956e92f1-DAytKtep.js → flowDb-956e92f1-C48Cmgvd.js} +1 -1
- package/dist/static/assets/{flowDiagram-66a62f08-hr4ccJC-.js → flowDiagram-66a62f08-DV7f8TtG.js} +1 -1
- package/dist/static/assets/flowDiagram-v2-96b9c2cf-MnAxlKb6.js +1 -0
- package/dist/static/assets/{flowchart-elk-definition-4a651766-DHdSZsGH.js → flowchart-elk-definition-4a651766-C2muEpzy.js} +1 -1
- package/dist/static/assets/{fr-FR-RHASNOE6-BnbTSuOS.js → fr-FR-RHASNOE6-D1dEEEfS.js} +1 -1
- package/dist/static/assets/{ganttDiagram-c361ad54-DfJ4YdrQ.js → ganttDiagram-c361ad54-CrooqCzc.js} +1 -1
- package/dist/static/assets/{gitGraphDiagram-72cf32ee-CZZ1f5B8.js → gitGraphDiagram-72cf32ee-x7BVIo_3.js} +1 -1
- package/dist/static/assets/{gl-ES-HMX3MZ6V-CxRK4Wl3.js → gl-ES-HMX3MZ6V-Czkw2ahx.js} +1 -1
- package/dist/static/assets/{graph-P0vjqQ_q.js → graph-Bv0C_szp.js} +1 -1
- package/dist/static/assets/{he-IL-6SHJWFNN-De1ifwpn.js → he-IL-6SHJWFNN-BLwbN3CV.js} +1 -1
- package/dist/static/assets/{hi-IN-IWLTKZ5I-DUjCaS-z.js → hi-IN-IWLTKZ5I-BJh3HrXc.js} +1 -1
- package/dist/static/assets/{hu-HU-A5ZG7DT2-kRbxQLDu.js → hu-HU-A5ZG7DT2-D00s-8EN.js} +1 -1
- package/dist/static/assets/{id-ID-SAP4L64H-D3qNFMA5.js → id-ID-SAP4L64H-BmyuzwXV.js} +1 -1
- package/dist/static/assets/{index-3862675e-C6Y3GGXL.js → index-3862675e-mZlepZqF.js} +1 -1
- package/dist/static/assets/{index-C2EUDYsE.js → index-Bnmyv9TE.js} +4 -4
- package/dist/static/assets/index-jjzEa4oB.js +316 -0
- package/dist/static/assets/{infoDiagram-f8f76790-Bzz1cL3V.js → infoDiagram-f8f76790-w7FUTsVV.js} +1 -1
- package/dist/static/assets/{it-IT-JPQ66NNP-BTSOcgM2.js → it-IT-JPQ66NNP-CeVq0l8v.js} +1 -1
- package/dist/static/assets/{ja-JP-DBVTYXUO-R5AkxKlX.js → ja-JP-DBVTYXUO-BUNKxxGA.js} +1 -1
- package/dist/static/assets/{journeyDiagram-49397b02-BzaeKV4P.js → journeyDiagram-49397b02-DYjDqkQG.js} +1 -1
- package/dist/static/assets/{kaa-6HZHGXH3-TpKFNLxf.js → kaa-6HZHGXH3-BIKwULqb.js} +1 -1
- package/dist/static/assets/{kab-KAB-ZGHBKWFO-BbPLfeaV.js → kab-KAB-ZGHBKWFO-BDpRo7IX.js} +1 -1
- package/dist/static/assets/{kk-KZ-P5N5QNE5-DcOwfzKm.js → kk-KZ-P5N5QNE5-bI2LN3W0.js} +1 -1
- package/dist/static/assets/{km-KH-HSX4SM5Z-DpDjUumQ.js → km-KH-HSX4SM5Z-gtwrLJn5.js} +1 -1
- package/dist/static/assets/{ko-KR-MTYHY66A-B6ZELq4q.js → ko-KR-MTYHY66A-BVcwVELq.js} +1 -1
- package/dist/static/assets/{ku-TR-6OUDTVRD-Bw5XN8B3.js → ku-TR-6OUDTVRD-COvDJH7d.js} +1 -1
- package/dist/static/assets/{layout-xn_13JdK.js → layout-HBWJ9_zM.js} +1 -1
- package/dist/static/assets/{line-OtB_9B6o.js → line-DxrK6d-_.js} +1 -1
- package/dist/static/assets/{linear-CglnwAad.js → linear-TwnxNDQ0.js} +1 -1
- package/dist/static/assets/{lt-LT-XHIRWOB4-B4P1_HMB.js → lt-LT-XHIRWOB4-BxYB7tM6.js} +1 -1
- package/dist/static/assets/{lv-LV-5QDEKY6T-CeahhdFr.js → lv-LV-5QDEKY6T-CGURbwyW.js} +1 -1
- package/dist/static/assets/{mindmap-definition-fc14e90a-B7krtWf6.js → mindmap-definition-fc14e90a-CWJfWF5a.js} +1 -1
- package/dist/static/assets/{mr-IN-CRQNXWMA-BKet5bjT.js → mr-IN-CRQNXWMA-65brZPyQ.js} +1 -1
- package/dist/static/assets/{my-MM-5M5IBNSE-B0RWOMGB.js → my-MM-5M5IBNSE-DaCAmQNv.js} +1 -1
- package/dist/static/assets/{nb-NO-T6EIAALU-CH0RHqKo.js → nb-NO-T6EIAALU-BiSJhu0W.js} +1 -1
- package/dist/static/assets/{nl-NL-IS3SIHDZ-OR0jupgw.js → nl-NL-IS3SIHDZ-D3rj4Vme.js} +1 -1
- package/dist/static/assets/{nn-NO-6E72VCQL-C_nwbVBJ.js → nn-NO-6E72VCQL-rxxP7Cwf.js} +1 -1
- package/dist/static/assets/{oc-FR-POXYY2M6-BkQ5_jwV.js → oc-FR-POXYY2M6-6emd2NQX.js} +1 -1
- package/dist/static/assets/{pa-IN-N4M65BXN-DVPoCEQf.js → pa-IN-N4M65BXN-CXwT_z_m.js} +1 -1
- package/dist/static/assets/{pica-DfKX2BtD.js → pica-CtyIOuSv.js} +1 -1
- package/dist/static/assets/{pieDiagram-8a3498a8-JeqvIFCn.js → pieDiagram-8a3498a8-Ccff4vHz.js} +1 -1
- package/dist/static/assets/{pl-PL-T2D74RX3-CSuyGES9.js → pl-PL-T2D74RX3-DMx_ZmIC.js} +1 -1
- package/dist/static/assets/{pt-BR-5N22H2LF-Dl5YX_DK.js → pt-BR-5N22H2LF-D9nz7afr.js} +1 -1
- package/dist/static/assets/{pt-PT-UZXXM6DQ-tdPflqgq.js → pt-PT-UZXXM6DQ-DeFH3geX.js} +1 -1
- package/dist/static/assets/{quadrantDiagram-120e2f19-BrP8m1hA.js → quadrantDiagram-120e2f19-RF2ZGF1U.js} +1 -1
- package/dist/static/assets/{requirementDiagram-deff3bca-DC6jgwHl.js → requirementDiagram-deff3bca-CvnD9QLg.js} +1 -1
- package/dist/static/assets/{ro-RO-JPDTUUEW-DjqtjYSi.js → ro-RO-JPDTUUEW-Cy22QAjW.js} +1 -1
- package/dist/static/assets/{ru-RU-B4JR7IUQ-C3Co-mTL.js → ru-RU-B4JR7IUQ-Cw2rH2nW.js} +1 -1
- package/dist/static/assets/{sankeyDiagram-04a897e0-CogkC2Ce.js → sankeyDiagram-04a897e0-CWfRjMv0.js} +1 -1
- package/dist/static/assets/{sequenceDiagram-704730f1-DQ7PWM4q.js → sequenceDiagram-704730f1-pAE8N_Ym.js} +1 -1
- package/dist/static/assets/{si-LK-N5RQ5JYF-Bk0ZwDuh.js → si-LK-N5RQ5JYF-DmXIZ3i0.js} +1 -1
- package/dist/static/assets/{sk-SK-C5VTKIMK-DqcglIkB.js → sk-SK-C5VTKIMK-CboHDpHd.js} +1 -1
- package/dist/static/assets/{sl-SI-NN7IZMDC-CN9eHX7v.js → sl-SI-NN7IZMDC-8XnCHmN4.js} +1 -1
- package/dist/static/assets/{stateDiagram-587899a1-BfmF4tRu.js → stateDiagram-587899a1-B4nuLay6.js} +1 -1
- package/dist/static/assets/{stateDiagram-v2-d93cdb3a-Fsz_mNjL.js → stateDiagram-v2-d93cdb3a-9cMNxr_8.js} +1 -1
- package/dist/static/assets/{styles-6aaf32cf-iOrM4Idh.js → styles-6aaf32cf-CynMMkPq.js} +1 -1
- package/dist/static/assets/{styles-9a916d00-BvjxcX3a.js → styles-9a916d00-BTmAnC2j.js} +1 -1
- package/dist/static/assets/{styles-c10674c1-Dhs0qTvS.js → styles-c10674c1-DQ_pTuGr.js} +1 -1
- package/dist/static/assets/{subset-shared.chunk-zGkIwnyc.js → subset-shared.chunk-DPGuz0R6.js} +1 -1
- package/dist/static/assets/{subset-worker.chunk-tKNK3Srw.js → subset-worker.chunk-CMiOYLER.js} +1 -1
- package/dist/static/assets/{sv-SE-XGPEYMSR-gIZ5ROCb.js → sv-SE-XGPEYMSR-ATPKfqXs.js} +1 -1
- package/dist/static/assets/{svgDrawCommon-08f97a94-eaaXRKRL.js → svgDrawCommon-08f97a94-qY4BnSWc.js} +1 -1
- package/dist/static/assets/{ta-IN-2NMHFXQM-J93drr6G.js → ta-IN-2NMHFXQM-Ct5-Fher.js} +1 -1
- package/dist/static/assets/{th-TH-HPSO5L25-DvMH3MeT.js → th-TH-HPSO5L25-5a6bUzcv.js} +1 -1
- package/dist/static/assets/{timeline-definition-85554ec2-2H612cly.js → timeline-definition-85554ec2-Bgexbl3C.js} +1 -1
- package/dist/static/assets/{tr-TR-DEFEU3FU-yaSV094c.js → tr-TR-DEFEU3FU-WsK7dnwA.js} +1 -1
- package/dist/static/assets/{uk-UA-QMV73CPH-D7efi_nG.js → uk-UA-QMV73CPH-B_P61mnc.js} +1 -1
- package/dist/static/assets/{vi-VN-M7AON7JQ-CwCUJKTu.js → vi-VN-M7AON7JQ-qdiQcney.js} +1 -1
- package/dist/static/assets/{xychartDiagram-e933f94c-D9bLCt0H.js → xychartDiagram-e933f94c-vkQjFADD.js} +1 -1
- package/dist/static/assets/{zh-CN-LNUGB5OW-BSP1R0gi.js → zh-CN-LNUGB5OW-DQ3BQjPe.js} +1 -1
- package/dist/static/assets/{zh-HK-E62DVLB3-CrnbIjL6.js → zh-HK-E62DVLB3-Ynj07W9J.js} +1 -1
- package/dist/static/assets/{zh-TW-RAJ6MFWO-qRdAErtD.js → zh-TW-RAJ6MFWO-DNkcasuo.js} +1 -1
- package/dist/static/index.html +1 -1
- package/package.json +5 -2
- package/dist/static/assets/channel-WIJ4i-mf.js +0 -1
- package/dist/static/assets/clone-CIwebUPs.js +0 -1
- package/dist/static/assets/flowDiagram-v2-96b9c2cf-Dv1rlQah.js +0 -1
- package/dist/static/assets/index-BlIy8DSv.js +0 -311
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { getMimeType, generateFileId, MAX_IMAGE_SIZE } from '../image-utils';
|
|
3
|
+
describe('getMimeType', () => {
|
|
4
|
+
describe('supported extensions', () => {
|
|
5
|
+
it('should return image/png for .png', () => {
|
|
6
|
+
expect(getMimeType('test.png')).toBe('image/png');
|
|
7
|
+
});
|
|
8
|
+
it('should return image/jpeg for .jpg', () => {
|
|
9
|
+
expect(getMimeType('test.jpg')).toBe('image/jpeg');
|
|
10
|
+
});
|
|
11
|
+
it('should return image/jpeg for .jpeg', () => {
|
|
12
|
+
expect(getMimeType('test.jpeg')).toBe('image/jpeg');
|
|
13
|
+
});
|
|
14
|
+
it('should return image/gif for .gif', () => {
|
|
15
|
+
expect(getMimeType('test.gif')).toBe('image/gif');
|
|
16
|
+
});
|
|
17
|
+
it('should return image/svg+xml for .svg', () => {
|
|
18
|
+
expect(getMimeType('test.svg')).toBe('image/svg+xml');
|
|
19
|
+
});
|
|
20
|
+
it('should return image/webp for .webp', () => {
|
|
21
|
+
expect(getMimeType('test.webp')).toBe('image/webp');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('case insensitivity', () => {
|
|
25
|
+
it('should handle uppercase .PNG', () => {
|
|
26
|
+
expect(getMimeType('test.PNG')).toBe('image/png');
|
|
27
|
+
});
|
|
28
|
+
it('should handle uppercase .JPG', () => {
|
|
29
|
+
expect(getMimeType('test.JPG')).toBe('image/jpeg');
|
|
30
|
+
});
|
|
31
|
+
it('should handle uppercase .JPEG', () => {
|
|
32
|
+
expect(getMimeType('test.JPEG')).toBe('image/jpeg');
|
|
33
|
+
});
|
|
34
|
+
it('should handle uppercase .GIF', () => {
|
|
35
|
+
expect(getMimeType('test.GIF')).toBe('image/gif');
|
|
36
|
+
});
|
|
37
|
+
it('should handle uppercase .SVG', () => {
|
|
38
|
+
expect(getMimeType('test.SVG')).toBe('image/svg+xml');
|
|
39
|
+
});
|
|
40
|
+
it('should handle uppercase .WEBP', () => {
|
|
41
|
+
expect(getMimeType('test.WEBP')).toBe('image/webp');
|
|
42
|
+
});
|
|
43
|
+
it('should handle mixed case .Png', () => {
|
|
44
|
+
expect(getMimeType('test.Png')).toBe('image/png');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('unsupported extensions', () => {
|
|
48
|
+
it('should return null for .txt', () => {
|
|
49
|
+
expect(getMimeType('test.txt')).toBeNull();
|
|
50
|
+
});
|
|
51
|
+
it('should return null for .bmp', () => {
|
|
52
|
+
expect(getMimeType('test.bmp')).toBeNull();
|
|
53
|
+
});
|
|
54
|
+
it('should return null for .pdf', () => {
|
|
55
|
+
expect(getMimeType('test.pdf')).toBeNull();
|
|
56
|
+
});
|
|
57
|
+
it('should return null for .doc', () => {
|
|
58
|
+
expect(getMimeType('test.doc')).toBeNull();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('no extension', () => {
|
|
62
|
+
it('should return null for files without extension', () => {
|
|
63
|
+
expect(getMimeType('testfile')).toBeNull();
|
|
64
|
+
});
|
|
65
|
+
it('should return null for empty string', () => {
|
|
66
|
+
expect(getMimeType('')).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
it('should return null for path ending with dot', () => {
|
|
69
|
+
expect(getMimeType('test.')).toBeNull();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('paths with directories', () => {
|
|
73
|
+
it('should handle full paths', () => {
|
|
74
|
+
expect(getMimeType('/path/to/image.png')).toBe('image/png');
|
|
75
|
+
});
|
|
76
|
+
it('should handle relative paths', () => {
|
|
77
|
+
expect(getMimeType('./images/photo.jpg')).toBe('image/jpeg');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('generateFileId', () => {
|
|
82
|
+
it('should return a 40 character string (SHA-1 hex)', () => {
|
|
83
|
+
const buffer = Buffer.from('test content');
|
|
84
|
+
const fileId = generateFileId(buffer);
|
|
85
|
+
expect(fileId.length).toBe(40);
|
|
86
|
+
});
|
|
87
|
+
it('should produce the same ID for the same content', () => {
|
|
88
|
+
const content = 'identical content';
|
|
89
|
+
const buffer1 = Buffer.from(content);
|
|
90
|
+
const buffer2 = Buffer.from(content);
|
|
91
|
+
expect(generateFileId(buffer1)).toBe(generateFileId(buffer2));
|
|
92
|
+
});
|
|
93
|
+
it('should produce different IDs for different content', () => {
|
|
94
|
+
const buffer1 = Buffer.from('content A');
|
|
95
|
+
const buffer2 = Buffer.from('content B');
|
|
96
|
+
expect(generateFileId(buffer1)).not.toBe(generateFileId(buffer2));
|
|
97
|
+
});
|
|
98
|
+
it('should only contain hexadecimal characters [0-9a-f]', () => {
|
|
99
|
+
const buffer = Buffer.from('any content here');
|
|
100
|
+
const fileId = generateFileId(buffer);
|
|
101
|
+
expect(fileId).toMatch(/^[0-9a-f]+$/);
|
|
102
|
+
});
|
|
103
|
+
it('should handle empty buffer', () => {
|
|
104
|
+
const buffer = Buffer.from('');
|
|
105
|
+
const fileId = generateFileId(buffer);
|
|
106
|
+
expect(fileId.length).toBe(40);
|
|
107
|
+
expect(fileId).toMatch(/^[0-9a-f]+$/);
|
|
108
|
+
});
|
|
109
|
+
it('should handle binary content', () => {
|
|
110
|
+
const buffer = Buffer.from([0x00, 0xff, 0x80, 0x7f]);
|
|
111
|
+
const fileId = generateFileId(buffer);
|
|
112
|
+
expect(fileId.length).toBe(40);
|
|
113
|
+
expect(fileId).toMatch(/^[0-9a-f]+$/);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe('MAX_IMAGE_SIZE', () => {
|
|
117
|
+
it('should be 2MB (2 * 1024 * 1024)', () => {
|
|
118
|
+
expect(MAX_IMAGE_SIZE).toBe(2 * 1024 * 1024);
|
|
119
|
+
});
|
|
120
|
+
it('should equal 2097152 bytes', () => {
|
|
121
|
+
expect(MAX_IMAGE_SIZE).toBe(2097152);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|