@agent-canvas/cli 0.8.0 → 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-DrFZc17I.js → ar-SA-G6X2FPQ2-DBOnFzSe.js} +1 -1
- package/dist/static/assets/{arc-BE4RRWho.js → arc-bbUtBUEI.js} +1 -1
- package/dist/static/assets/{az-AZ-76LH7QW2-DgHo0c8x.js → az-AZ-76LH7QW2-Cc10aZ9u.js} +1 -1
- package/dist/static/assets/{bg-BG-XCXSNQG7-D6Qfq7sN.js → bg-BG-XCXSNQG7-Ccf7m1dz.js} +1 -1
- package/dist/static/assets/{blockDiagram-38ab4fdb-j4QCKNBJ.js → blockDiagram-38ab4fdb-fpHXuuqC.js} +1 -1
- package/dist/static/assets/{bn-BD-2XOGV67Q-DtD_GeTA.js → bn-BD-2XOGV67Q-DUsn1OkS.js} +1 -1
- package/dist/static/assets/{c4Diagram-3d4e48cf-BmQ9mE4L.js → c4Diagram-3d4e48cf-R8YUsP4D.js} +1 -1
- package/dist/static/assets/{ca-ES-6MX7JW3Y-pqblEVH2.js → ca-ES-6MX7JW3Y-hu4EsJg6.js} +1 -1
- package/dist/static/assets/channel-DOejQ6Zr.js +1 -0
- package/dist/static/assets/{classDiagram-70f12bd4-CUF5vm_X.js → classDiagram-70f12bd4-Bd-nCoOe.js} +1 -1
- package/dist/static/assets/{classDiagram-v2-f2320105-Cpj_A_lB.js → classDiagram-v2-f2320105-BSqlF2Ya.js} +1 -1
- package/dist/static/assets/clone-BACvnIVb.js +1 -0
- package/dist/static/assets/{createText-2e5e7dd3-pnM7Sebc.js → createText-2e5e7dd3-DDxcRLmM.js} +1 -1
- package/dist/static/assets/{cs-CZ-2BRQDIVT-CybzkHZt.js → cs-CZ-2BRQDIVT-CvZtKTE7.js} +1 -1
- package/dist/static/assets/{da-DK-5WZEPLOC-pqELhXiQ.js → da-DK-5WZEPLOC-Bo6-ltfA.js} +1 -1
- package/dist/static/assets/{de-DE-XR44H4JA-ZL76WiIL.js → de-DE-XR44H4JA-Rki2qM_x.js} +1 -1
- package/dist/static/assets/{edges-e0da2a9e-B9extNmC.js → edges-e0da2a9e-DWJxCouB.js} +1 -1
- package/dist/static/assets/{el-GR-BZB4AONW-rKEdKItN.js → el-GR-BZB4AONW-BRy2rrt9.js} +1 -1
- package/dist/static/assets/{erDiagram-9861fffd-Bf-1lr9-.js → erDiagram-9861fffd-DXldiM4J.js} +1 -1
- package/dist/static/assets/{es-ES-U4NZUMDT-BB6riLIk.js → es-ES-U4NZUMDT-hCKbxwHs.js} +1 -1
- package/dist/static/assets/{eu-ES-A7QVB2H4-ChqJNrpA.js → eu-ES-A7QVB2H4-CmZGwoa5.js} +1 -1
- package/dist/static/assets/{fa-IR-HGAKTJCU--KEd62Xu.js → fa-IR-HGAKTJCU-C6DRPcaF.js} +1 -1
- package/dist/static/assets/{fi-FI-Z5N7JZ37-CdB0adCJ.js → fi-FI-Z5N7JZ37-DBaspnIB.js} +1 -1
- package/dist/static/assets/{flowDb-956e92f1-Dbca38tY.js → flowDb-956e92f1-C48Cmgvd.js} +1 -1
- package/dist/static/assets/{flowDiagram-66a62f08-DpQc0ZQB.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-CAxl2EAj.js → flowchart-elk-definition-4a651766-C2muEpzy.js} +1 -1
- package/dist/static/assets/{fr-FR-RHASNOE6-LEJbMD3b.js → fr-FR-RHASNOE6-D1dEEEfS.js} +1 -1
- package/dist/static/assets/{ganttDiagram-c361ad54-BsKueDb1.js → ganttDiagram-c361ad54-CrooqCzc.js} +1 -1
- package/dist/static/assets/{gitGraphDiagram-72cf32ee-BySoTKcT.js → gitGraphDiagram-72cf32ee-x7BVIo_3.js} +1 -1
- package/dist/static/assets/{gl-ES-HMX3MZ6V-Bi3P3M7W.js → gl-ES-HMX3MZ6V-Czkw2ahx.js} +1 -1
- package/dist/static/assets/{graph-B_0qOa-k.js → graph-Bv0C_szp.js} +1 -1
- package/dist/static/assets/{he-IL-6SHJWFNN-DE7_aRwg.js → he-IL-6SHJWFNN-BLwbN3CV.js} +1 -1
- package/dist/static/assets/{hi-IN-IWLTKZ5I-CjARmJ8i.js → hi-IN-IWLTKZ5I-BJh3HrXc.js} +1 -1
- package/dist/static/assets/{hu-HU-A5ZG7DT2-d79urL5L.js → hu-HU-A5ZG7DT2-D00s-8EN.js} +1 -1
- package/dist/static/assets/{id-ID-SAP4L64H-bxo8Q0Jv.js → id-ID-SAP4L64H-BmyuzwXV.js} +1 -1
- package/dist/static/assets/{index-3862675e-BLm8h60G.js → index-3862675e-mZlepZqF.js} +1 -1
- package/dist/static/assets/{index-BkW4NM9R.js → index-Bnmyv9TE.js} +4 -4
- package/dist/static/assets/index-jjzEa4oB.js +316 -0
- package/dist/static/assets/{infoDiagram-f8f76790-CZ4J5sjk.js → infoDiagram-f8f76790-w7FUTsVV.js} +1 -1
- package/dist/static/assets/{it-IT-JPQ66NNP-D41R3uEK.js → it-IT-JPQ66NNP-CeVq0l8v.js} +1 -1
- package/dist/static/assets/{ja-JP-DBVTYXUO-zK8NUJnS.js → ja-JP-DBVTYXUO-BUNKxxGA.js} +1 -1
- package/dist/static/assets/{journeyDiagram-49397b02-DtFcZaIk.js → journeyDiagram-49397b02-DYjDqkQG.js} +1 -1
- package/dist/static/assets/{kaa-6HZHGXH3-CbGIc6V6.js → kaa-6HZHGXH3-BIKwULqb.js} +1 -1
- package/dist/static/assets/{kab-KAB-ZGHBKWFO-BweHPuX1.js → kab-KAB-ZGHBKWFO-BDpRo7IX.js} +1 -1
- package/dist/static/assets/{kk-KZ-P5N5QNE5-DSokMm7h.js → kk-KZ-P5N5QNE5-bI2LN3W0.js} +1 -1
- package/dist/static/assets/{km-KH-HSX4SM5Z-LYiEs3ge.js → km-KH-HSX4SM5Z-gtwrLJn5.js} +1 -1
- package/dist/static/assets/{ko-KR-MTYHY66A-BzgMEtcU.js → ko-KR-MTYHY66A-BVcwVELq.js} +1 -1
- package/dist/static/assets/{ku-TR-6OUDTVRD-D1FtjbSs.js → ku-TR-6OUDTVRD-COvDJH7d.js} +1 -1
- package/dist/static/assets/{layout-CQWIZrii.js → layout-HBWJ9_zM.js} +1 -1
- package/dist/static/assets/{line-BryEd-Ku.js → line-DxrK6d-_.js} +1 -1
- package/dist/static/assets/{linear-SXhM57Mz.js → linear-TwnxNDQ0.js} +1 -1
- package/dist/static/assets/{lt-LT-XHIRWOB4-BPrhIUrC.js → lt-LT-XHIRWOB4-BxYB7tM6.js} +1 -1
- package/dist/static/assets/{lv-LV-5QDEKY6T-CXJse_rs.js → lv-LV-5QDEKY6T-CGURbwyW.js} +1 -1
- package/dist/static/assets/{mindmap-definition-fc14e90a-C8giDsiX.js → mindmap-definition-fc14e90a-CWJfWF5a.js} +1 -1
- package/dist/static/assets/{mr-IN-CRQNXWMA-Clab-bAO.js → mr-IN-CRQNXWMA-65brZPyQ.js} +1 -1
- package/dist/static/assets/{my-MM-5M5IBNSE-Dp08JzEw.js → my-MM-5M5IBNSE-DaCAmQNv.js} +1 -1
- package/dist/static/assets/{nb-NO-T6EIAALU-CiaXJA-W.js → nb-NO-T6EIAALU-BiSJhu0W.js} +1 -1
- package/dist/static/assets/{nl-NL-IS3SIHDZ-D-9KUTnx.js → nl-NL-IS3SIHDZ-D3rj4Vme.js} +1 -1
- package/dist/static/assets/{nn-NO-6E72VCQL-Bg5gsQ4h.js → nn-NO-6E72VCQL-rxxP7Cwf.js} +1 -1
- package/dist/static/assets/{oc-FR-POXYY2M6-G4iqllhL.js → oc-FR-POXYY2M6-6emd2NQX.js} +1 -1
- package/dist/static/assets/{pa-IN-N4M65BXN-l6Lk41uX.js → pa-IN-N4M65BXN-CXwT_z_m.js} +1 -1
- package/dist/static/assets/{pica-CtkejCRD.js → pica-CtyIOuSv.js} +1 -1
- package/dist/static/assets/{pieDiagram-8a3498a8-CG6gQ14H.js → pieDiagram-8a3498a8-Ccff4vHz.js} +1 -1
- package/dist/static/assets/{pl-PL-T2D74RX3-BZPbB8S3.js → pl-PL-T2D74RX3-DMx_ZmIC.js} +1 -1
- package/dist/static/assets/{pt-BR-5N22H2LF-CIC4vRyd.js → pt-BR-5N22H2LF-D9nz7afr.js} +1 -1
- package/dist/static/assets/{pt-PT-UZXXM6DQ-rkGTBEI0.js → pt-PT-UZXXM6DQ-DeFH3geX.js} +1 -1
- package/dist/static/assets/{quadrantDiagram-120e2f19-BL9eFu4M.js → quadrantDiagram-120e2f19-RF2ZGF1U.js} +1 -1
- package/dist/static/assets/{requirementDiagram-deff3bca-crxdUpVK.js → requirementDiagram-deff3bca-CvnD9QLg.js} +1 -1
- package/dist/static/assets/{ro-RO-JPDTUUEW-GDhpTKBO.js → ro-RO-JPDTUUEW-Cy22QAjW.js} +1 -1
- package/dist/static/assets/{ru-RU-B4JR7IUQ-BzHvMwjC.js → ru-RU-B4JR7IUQ-Cw2rH2nW.js} +1 -1
- package/dist/static/assets/{sankeyDiagram-04a897e0-bM05WQw3.js → sankeyDiagram-04a897e0-CWfRjMv0.js} +1 -1
- package/dist/static/assets/{sequenceDiagram-704730f1-DjknV0Qp.js → sequenceDiagram-704730f1-pAE8N_Ym.js} +1 -1
- package/dist/static/assets/{si-LK-N5RQ5JYF-D3P3TNDH.js → si-LK-N5RQ5JYF-DmXIZ3i0.js} +1 -1
- package/dist/static/assets/{sk-SK-C5VTKIMK-CM8yTXlZ.js → sk-SK-C5VTKIMK-CboHDpHd.js} +1 -1
- package/dist/static/assets/{sl-SI-NN7IZMDC-CxoGm3aM.js → sl-SI-NN7IZMDC-8XnCHmN4.js} +1 -1
- package/dist/static/assets/{stateDiagram-587899a1-CmWqIdF5.js → stateDiagram-587899a1-B4nuLay6.js} +1 -1
- package/dist/static/assets/{stateDiagram-v2-d93cdb3a-CgzNTiHW.js → stateDiagram-v2-d93cdb3a-9cMNxr_8.js} +1 -1
- package/dist/static/assets/{styles-6aaf32cf-CI4s6NIA.js → styles-6aaf32cf-CynMMkPq.js} +1 -1
- package/dist/static/assets/{styles-9a916d00-ZcdN6rtW.js → styles-9a916d00-BTmAnC2j.js} +1 -1
- package/dist/static/assets/{styles-c10674c1-ZFkD6ta7.js → styles-c10674c1-DQ_pTuGr.js} +1 -1
- package/dist/static/assets/{subset-shared.chunk-B4F4dEPr.js → subset-shared.chunk-DPGuz0R6.js} +1 -1
- package/dist/static/assets/{subset-worker.chunk-CmgaOgn3.js → subset-worker.chunk-CMiOYLER.js} +1 -1
- package/dist/static/assets/{sv-SE-XGPEYMSR-CnVZlafq.js → sv-SE-XGPEYMSR-ATPKfqXs.js} +1 -1
- package/dist/static/assets/{svgDrawCommon-08f97a94-DbN3OiBf.js → svgDrawCommon-08f97a94-qY4BnSWc.js} +1 -1
- package/dist/static/assets/{ta-IN-2NMHFXQM-Bl-eCjzL.js → ta-IN-2NMHFXQM-Ct5-Fher.js} +1 -1
- package/dist/static/assets/{th-TH-HPSO5L25-CNIGPjSR.js → th-TH-HPSO5L25-5a6bUzcv.js} +1 -1
- package/dist/static/assets/{timeline-definition-85554ec2-Cmr82Iq1.js → timeline-definition-85554ec2-Bgexbl3C.js} +1 -1
- package/dist/static/assets/{tr-TR-DEFEU3FU-Cx7HbGIA.js → tr-TR-DEFEU3FU-WsK7dnwA.js} +1 -1
- package/dist/static/assets/{uk-UA-QMV73CPH-BxcA50Ze.js → uk-UA-QMV73CPH-B_P61mnc.js} +1 -1
- package/dist/static/assets/{vi-VN-M7AON7JQ-BvGuRh0c.js → vi-VN-M7AON7JQ-qdiQcney.js} +1 -1
- package/dist/static/assets/{xychartDiagram-e933f94c-BcWLDEHu.js → xychartDiagram-e933f94c-vkQjFADD.js} +1 -1
- package/dist/static/assets/{zh-CN-LNUGB5OW-SQH8i3l5.js → zh-CN-LNUGB5OW-DQ3BQjPe.js} +1 -1
- package/dist/static/assets/{zh-HK-E62DVLB3-COWoLNur.js → zh-HK-E62DVLB3-Ynj07W9J.js} +1 -1
- package/dist/static/assets/{zh-TW-RAJ6MFWO-Cm5B69ig.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-DjiT9qJ0.js +0 -1
- package/dist/static/assets/clone-nkJpLn4s.js +0 -1
- package/dist/static/assets/flowDiagram-v2-96b9c2cf-Dlfh8z7R.js +0 -1
- package/dist/static/assets/index-B6CTdFKu.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 {};
|