@zag-js/file-utils 1.18.2 → 1.18.4
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/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +21 -1
- package/dist/index.mjs +21 -2
- package/package.json +4 -3
package/dist/index.d.mts
CHANGED
|
@@ -57,4 +57,6 @@ declare function isValidFileSize(file: File, minSize?: number, maxSize?: number)
|
|
|
57
57
|
|
|
58
58
|
declare function isValidFileType(file: File, accept: string | undefined): [boolean, FileError | null];
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
declare function getFileMimeType(name: string): FileMimeType | null;
|
|
61
|
+
|
|
62
|
+
export { type ApplicationFileMimeType, type AudioFileMimeType, type DownloadFileOptions, type FileError, type FileMimeType, type FileMimeTypeGroup, type FontFileMimeType, type ImageFileMimeType, type TextFileMimeType, type VideoFileMimeType, dataURItoBlob, downloadFile, getAcceptAttrString, getFileDataUrl, getFileEntries, getFileMimeType, getTotalFileSize, isFileEqual, isValidFileSize, isValidFileType };
|
package/dist/index.d.ts
CHANGED
|
@@ -57,4 +57,6 @@ declare function isValidFileSize(file: File, minSize?: number, maxSize?: number)
|
|
|
57
57
|
|
|
58
58
|
declare function isValidFileType(file: File, accept: string | undefined): [boolean, FileError | null];
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
declare function getFileMimeType(name: string): FileMimeType | null;
|
|
61
|
+
|
|
62
|
+
export { type ApplicationFileMimeType, type AudioFileMimeType, type DownloadFileOptions, type FileError, type FileMimeType, type FileMimeTypeGroup, type FontFileMimeType, type ImageFileMimeType, type TextFileMimeType, type VideoFileMimeType, dataURItoBlob, downloadFile, getAcceptAttrString, getFileDataUrl, getFileEntries, getFileMimeType, getTotalFileSize, isFileEqual, isValidFileSize, isValidFileType };
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,10 @@ var getFileEntries = (items, traverseDirectories) => Promise.all(
|
|
|
15
15
|
if (isDirectoryEntry(entry) && traverseDirectories) {
|
|
16
16
|
return getDirectoryFiles(entry.createReader(), `${entry.name}`);
|
|
17
17
|
}
|
|
18
|
+
if (isFileEntry(entry) && typeof item.getAsFile === "function") {
|
|
19
|
+
const file = item.getAsFile();
|
|
20
|
+
return Promise.resolve(file ? addRelativePath(file, "") : null);
|
|
21
|
+
}
|
|
18
22
|
if (isFileEntry(entry)) {
|
|
19
23
|
return new Promise((resolve) => {
|
|
20
24
|
entry.file((file) => {
|
|
@@ -183,13 +187,28 @@ function isValidFileSize(file, minSize, maxSize) {
|
|
|
183
187
|
return [true, null];
|
|
184
188
|
}
|
|
185
189
|
|
|
190
|
+
// src/mime-types.ts
|
|
191
|
+
var mimeTypes = "3g2_video/3gpp2[3gp,3gpp_video/3gpp[3mf_model/3mf[7z_application/x-7z-compressed[aac_audio/aac[ac_application/pkix-attr-cert[adp_audio/adpcm[adts_audio/aac[ai_application/postscript[aml_application/automationml-aml+xml[amlx_application/automationml-amlx+zip[amr_audio/amr[apk_application/vnd.android.package-archive[apng_image/apng[appcache,manifest_text/cache-manifest[appinstaller_application/appinstaller[appx_application/appx[appxbundle_application/appxbundle[asc_application/pgp-keys[atom_application/atom+xml[atomcat_application/atomcat+xml[atomdeleted_application/atomdeleted+xml[atomsvc_application/atomsvc+xml[au,snd_audio/basic[avi_video/x-msvideo[avci_image/avci[avcs_image/avcs[avif_image/avif[aw_application/applixware[bdoc_application/bdoc[bin,bpk,buffer,deb,deploy,dist,distz,dll,dmg,dms,dump,elc,exe,img,iso,lrf,mar,msi,msm,msp,pkg,so_application/octet-stream[bmp,dib_image/bmp[btf,btif_image/prs.btif[bz2_application/x-bzip2[c_text/x-c[ccxml_application/ccxml+xml[cdfx_application/cdfx+xml[cdmia_application/cdmi-capability[cdmic_application/cdmi-container[cdmid_application/cdmi-domain[cdmio_application/cdmi-object[cdmiq_application/cdmi-queue[cer_application/pkix-cert[cgm_image/cgm[cjs_application/node[class_application/java-vm[coffee,litcoffee_text/coffeescript[conf,def,in,ini,list,log,text,txt_text/plain[cpp,cxx,cc_text/x-c++src[cpl_application/cpl+xml[cpt_application/mac-compactpro[crl_application/pkix-crl[css_text/css[csv_text/csv[cu_application/cu-seeme[cwl_application/cwl[cww_application/prs.cww[davmount_application/davmount+xml[dbk_application/docbook+xml[doc_application/msword[docx_application/vnd.openxmlformats-officedocument.wordprocessingml.document[dsc_text/prs.lines.tag[dssc_application/dssc+der[dtd_application/xml-dtd[dwd_application/atsc-dwd+xml[ear,jar,war_application/java-archive[ecma_application/ecmascript[emf_image/emf[eml,mime_message/rfc822[emma_application/emma+xml[emotionml_application/emotionml+xml[eot_application/vnd.ms-fontobject[eps,ps_application/postscript[epub_application/epub+zip[exi_application/exi[exp_application/express[exr_image/aces[ez_application/andrew-inset[fdf_application/fdf[fdt_application/fdt+xml[fits_image/fits[flac_audio/flac[flv_video/x-flv[g3_image/g3fax[geojson_application/geo+json[gif_image/gif[glb_model/gltf-binary[gltf_model/gltf+json[gml_application/gml+xml[go_text/x-go[gpx_application/gpx+xml[gz_application/gzip[h_text/x-h[h261_video/h261[h263_video/h263[h264_video/h264[heic_image/heic[heics_image/heic-sequence[heif_image/heif[heifs_image/heif-sequence[htm,html,shtml_text/html[ico_image/x-icon[icns_image/x-icns[ics,ifb_text/calendar[iges,igs_model/iges[ink,inkml_application/inkml+xml[ipa_application/octet-stream[java_text/x-java-source[jp2,jpg2_image/jp2[jpeg,jpe,jpg_image/jpeg[jpf,jpx_image/jpx[jpm,jpgm_image/jpm[jpgv_video/jpeg[jph_image/jph[js,mjs_text/javascript[json_application/json[json5_application/json5[jsonld_application/ld+json[jsx_text/jsx[jxl_image/jxl[jxr_image/jxr[ktx_image/ktx[ktx2_image/ktx2[less_text/less[m1v,m2v,mpe,mpeg,mpg_video/mpeg[m4a_audio/mp4[m4v_video/x-m4v[md,markdown_text/markdown[mid,midi,kar,rmi_audio/midi[mkv_video/x-matroska[mp2,mp2a,mp3,mpga,m3a,m2a_audio/mpeg[mp4,mp4v,mpg4_video/mp4[mp4a_audio/mp4[mp4s,m4p_application/mp4[odp_application/vnd.oasis.opendocument.presentation[oda_application/oda[ods_application/vnd.oasis.opendocument.spreadsheet[odt_application/vnd.oasis.opendocument.text[oga,ogg,opus,spx_audio/ogg[ogv_video/ogg[ogx_application/ogg[otf_font/otf[p12,pfx_application/x-pkcs12[pdf_application/pdf[pem_application/x-pem-file[php_text/x-php[png_image/png[ppt_application/vnd.ms-powerpoint[pptx_application/vnd.openxmlformats-officedocument.presentationml.presentation[pskcxml_application/pskc+xml[psd_image/vnd.adobe.photoshop[py_text/x-python[qt,mov_video/quicktime[rar_application/vnd.rar[rdf_application/rdf+xml[rtf_text/rtf[sass_text/x-sass[scss_text/x-scss[sgm,sgml_text/sgml[sh_application/x-sh[svg,svgz_image/svg+xml[swf_application/x-shockwave-flash[tar_application/x-tar[tif,tiff_image/tiff[toml_application/toml[ts_video/mp2t[tsx_text/tsx[tsv_text/tab-separated-values[ttc_font/collection[ttf_font/ttf[vtt_text/vtt[wasm_application/wasm[wav_audio/wav[weba_audio/webm[webm_video/webm[webmanifest_application/manifest+json[webp_image/webp[wma_audio/x-ms-wma[wmv_video/x-ms-wmv[woff_font/woff[woff2_font/woff2[xls_application/vnd.ms-excel[xlsx_application/vnd.openxmlformats-officedocument.spreadsheetml.sheet[xml_application/xml[xz_application/x-xz[yaml,yml_text/yaml[zip_application/zip";
|
|
192
|
+
var mimeTypesMap = new Map(
|
|
193
|
+
mimeTypes.split("[").flatMap((mime) => {
|
|
194
|
+
const [extensions, mimeType] = mime.split("_");
|
|
195
|
+
return extensions.split(",").map((ext) => [ext, mimeType]);
|
|
196
|
+
})
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
// src/get-file-mime-type.ts
|
|
200
|
+
function getFileMimeType(name) {
|
|
201
|
+
const extension = name.split(".").pop();
|
|
202
|
+
return extension ? mimeTypesMap.get(extension) || null : null;
|
|
203
|
+
}
|
|
204
|
+
|
|
186
205
|
// src/is-valid-file-type.ts
|
|
187
206
|
function isFileAccepted(file, accept) {
|
|
188
207
|
if (file && accept) {
|
|
189
208
|
const types = Array.isArray(accept) ? accept : typeof accept === "string" ? accept.split(",") : [];
|
|
190
209
|
if (types.length === 0) return true;
|
|
191
210
|
const fileName = file.name || "";
|
|
192
|
-
const mimeType = (file.type || "").toLowerCase();
|
|
211
|
+
const mimeType = (file.type || getFileMimeType(fileName) || "").toLowerCase();
|
|
193
212
|
const baseMimeType = mimeType.replace(/\/.*$/, "");
|
|
194
213
|
return types.some((type) => {
|
|
195
214
|
const validType = type.trim().toLowerCase();
|
|
@@ -214,6 +233,7 @@ exports.downloadFile = downloadFile;
|
|
|
214
233
|
exports.getAcceptAttrString = getAcceptAttrString;
|
|
215
234
|
exports.getFileDataUrl = getFileDataUrl;
|
|
216
235
|
exports.getFileEntries = getFileEntries;
|
|
236
|
+
exports.getFileMimeType = getFileMimeType;
|
|
217
237
|
exports.getTotalFileSize = getTotalFileSize;
|
|
218
238
|
exports.isFileEqual = isFileEqual;
|
|
219
239
|
exports.isValidFileSize = isValidFileSize;
|
package/dist/index.mjs
CHANGED
|
@@ -13,6 +13,10 @@ var getFileEntries = (items, traverseDirectories) => Promise.all(
|
|
|
13
13
|
if (isDirectoryEntry(entry) && traverseDirectories) {
|
|
14
14
|
return getDirectoryFiles(entry.createReader(), `${entry.name}`);
|
|
15
15
|
}
|
|
16
|
+
if (isFileEntry(entry) && typeof item.getAsFile === "function") {
|
|
17
|
+
const file = item.getAsFile();
|
|
18
|
+
return Promise.resolve(file ? addRelativePath(file, "") : null);
|
|
19
|
+
}
|
|
16
20
|
if (isFileEntry(entry)) {
|
|
17
21
|
return new Promise((resolve) => {
|
|
18
22
|
entry.file((file) => {
|
|
@@ -181,13 +185,28 @@ function isValidFileSize(file, minSize, maxSize) {
|
|
|
181
185
|
return [true, null];
|
|
182
186
|
}
|
|
183
187
|
|
|
188
|
+
// src/mime-types.ts
|
|
189
|
+
var mimeTypes = "3g2_video/3gpp2[3gp,3gpp_video/3gpp[3mf_model/3mf[7z_application/x-7z-compressed[aac_audio/aac[ac_application/pkix-attr-cert[adp_audio/adpcm[adts_audio/aac[ai_application/postscript[aml_application/automationml-aml+xml[amlx_application/automationml-amlx+zip[amr_audio/amr[apk_application/vnd.android.package-archive[apng_image/apng[appcache,manifest_text/cache-manifest[appinstaller_application/appinstaller[appx_application/appx[appxbundle_application/appxbundle[asc_application/pgp-keys[atom_application/atom+xml[atomcat_application/atomcat+xml[atomdeleted_application/atomdeleted+xml[atomsvc_application/atomsvc+xml[au,snd_audio/basic[avi_video/x-msvideo[avci_image/avci[avcs_image/avcs[avif_image/avif[aw_application/applixware[bdoc_application/bdoc[bin,bpk,buffer,deb,deploy,dist,distz,dll,dmg,dms,dump,elc,exe,img,iso,lrf,mar,msi,msm,msp,pkg,so_application/octet-stream[bmp,dib_image/bmp[btf,btif_image/prs.btif[bz2_application/x-bzip2[c_text/x-c[ccxml_application/ccxml+xml[cdfx_application/cdfx+xml[cdmia_application/cdmi-capability[cdmic_application/cdmi-container[cdmid_application/cdmi-domain[cdmio_application/cdmi-object[cdmiq_application/cdmi-queue[cer_application/pkix-cert[cgm_image/cgm[cjs_application/node[class_application/java-vm[coffee,litcoffee_text/coffeescript[conf,def,in,ini,list,log,text,txt_text/plain[cpp,cxx,cc_text/x-c++src[cpl_application/cpl+xml[cpt_application/mac-compactpro[crl_application/pkix-crl[css_text/css[csv_text/csv[cu_application/cu-seeme[cwl_application/cwl[cww_application/prs.cww[davmount_application/davmount+xml[dbk_application/docbook+xml[doc_application/msword[docx_application/vnd.openxmlformats-officedocument.wordprocessingml.document[dsc_text/prs.lines.tag[dssc_application/dssc+der[dtd_application/xml-dtd[dwd_application/atsc-dwd+xml[ear,jar,war_application/java-archive[ecma_application/ecmascript[emf_image/emf[eml,mime_message/rfc822[emma_application/emma+xml[emotionml_application/emotionml+xml[eot_application/vnd.ms-fontobject[eps,ps_application/postscript[epub_application/epub+zip[exi_application/exi[exp_application/express[exr_image/aces[ez_application/andrew-inset[fdf_application/fdf[fdt_application/fdt+xml[fits_image/fits[flac_audio/flac[flv_video/x-flv[g3_image/g3fax[geojson_application/geo+json[gif_image/gif[glb_model/gltf-binary[gltf_model/gltf+json[gml_application/gml+xml[go_text/x-go[gpx_application/gpx+xml[gz_application/gzip[h_text/x-h[h261_video/h261[h263_video/h263[h264_video/h264[heic_image/heic[heics_image/heic-sequence[heif_image/heif[heifs_image/heif-sequence[htm,html,shtml_text/html[ico_image/x-icon[icns_image/x-icns[ics,ifb_text/calendar[iges,igs_model/iges[ink,inkml_application/inkml+xml[ipa_application/octet-stream[java_text/x-java-source[jp2,jpg2_image/jp2[jpeg,jpe,jpg_image/jpeg[jpf,jpx_image/jpx[jpm,jpgm_image/jpm[jpgv_video/jpeg[jph_image/jph[js,mjs_text/javascript[json_application/json[json5_application/json5[jsonld_application/ld+json[jsx_text/jsx[jxl_image/jxl[jxr_image/jxr[ktx_image/ktx[ktx2_image/ktx2[less_text/less[m1v,m2v,mpe,mpeg,mpg_video/mpeg[m4a_audio/mp4[m4v_video/x-m4v[md,markdown_text/markdown[mid,midi,kar,rmi_audio/midi[mkv_video/x-matroska[mp2,mp2a,mp3,mpga,m3a,m2a_audio/mpeg[mp4,mp4v,mpg4_video/mp4[mp4a_audio/mp4[mp4s,m4p_application/mp4[odp_application/vnd.oasis.opendocument.presentation[oda_application/oda[ods_application/vnd.oasis.opendocument.spreadsheet[odt_application/vnd.oasis.opendocument.text[oga,ogg,opus,spx_audio/ogg[ogv_video/ogg[ogx_application/ogg[otf_font/otf[p12,pfx_application/x-pkcs12[pdf_application/pdf[pem_application/x-pem-file[php_text/x-php[png_image/png[ppt_application/vnd.ms-powerpoint[pptx_application/vnd.openxmlformats-officedocument.presentationml.presentation[pskcxml_application/pskc+xml[psd_image/vnd.adobe.photoshop[py_text/x-python[qt,mov_video/quicktime[rar_application/vnd.rar[rdf_application/rdf+xml[rtf_text/rtf[sass_text/x-sass[scss_text/x-scss[sgm,sgml_text/sgml[sh_application/x-sh[svg,svgz_image/svg+xml[swf_application/x-shockwave-flash[tar_application/x-tar[tif,tiff_image/tiff[toml_application/toml[ts_video/mp2t[tsx_text/tsx[tsv_text/tab-separated-values[ttc_font/collection[ttf_font/ttf[vtt_text/vtt[wasm_application/wasm[wav_audio/wav[weba_audio/webm[webm_video/webm[webmanifest_application/manifest+json[webp_image/webp[wma_audio/x-ms-wma[wmv_video/x-ms-wmv[woff_font/woff[woff2_font/woff2[xls_application/vnd.ms-excel[xlsx_application/vnd.openxmlformats-officedocument.spreadsheetml.sheet[xml_application/xml[xz_application/x-xz[yaml,yml_text/yaml[zip_application/zip";
|
|
190
|
+
var mimeTypesMap = new Map(
|
|
191
|
+
mimeTypes.split("[").flatMap((mime) => {
|
|
192
|
+
const [extensions, mimeType] = mime.split("_");
|
|
193
|
+
return extensions.split(",").map((ext) => [ext, mimeType]);
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
// src/get-file-mime-type.ts
|
|
198
|
+
function getFileMimeType(name) {
|
|
199
|
+
const extension = name.split(".").pop();
|
|
200
|
+
return extension ? mimeTypesMap.get(extension) || null : null;
|
|
201
|
+
}
|
|
202
|
+
|
|
184
203
|
// src/is-valid-file-type.ts
|
|
185
204
|
function isFileAccepted(file, accept) {
|
|
186
205
|
if (file && accept) {
|
|
187
206
|
const types = Array.isArray(accept) ? accept : typeof accept === "string" ? accept.split(",") : [];
|
|
188
207
|
if (types.length === 0) return true;
|
|
189
208
|
const fileName = file.name || "";
|
|
190
|
-
const mimeType = (file.type || "").toLowerCase();
|
|
209
|
+
const mimeType = (file.type || getFileMimeType(fileName) || "").toLowerCase();
|
|
191
210
|
const baseMimeType = mimeType.replace(/\/.*$/, "");
|
|
192
211
|
return types.some((type) => {
|
|
193
212
|
const validType = type.trim().toLowerCase();
|
|
@@ -207,4 +226,4 @@ function isValidFileType(file, accept) {
|
|
|
207
226
|
return [isAcceptable, isAcceptable ? null : "FILE_INVALID_TYPE"];
|
|
208
227
|
}
|
|
209
228
|
|
|
210
|
-
export { dataURItoBlob, downloadFile, getAcceptAttrString, getFileDataUrl, getFileEntries, getTotalFileSize, isFileEqual, isValidFileSize, isValidFileType };
|
|
229
|
+
export { dataURItoBlob, downloadFile, getAcceptAttrString, getFileDataUrl, getFileEntries, getFileMimeType, getTotalFileSize, isFileEqual, isValidFileSize, isValidFileType };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zag-js/file-utils",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.4",
|
|
4
4
|
"description": "JS File API utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"clean-package": "../../../clean-package.config.json",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@zag-js/i18n-utils": "1.18.
|
|
27
|
+
"@zag-js/i18n-utils": "1.18.4"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"clean-package": "2.2.0"
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"scripts": {
|
|
48
48
|
"build": "tsup",
|
|
49
49
|
"lint": "eslint src",
|
|
50
|
-
"typecheck": "tsc --noEmit"
|
|
50
|
+
"typecheck": "tsc --noEmit",
|
|
51
|
+
"mime": "node script/mime-types.mjs"
|
|
51
52
|
}
|
|
52
53
|
}
|