heic-d-code 0.0.1
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/Heic-D-Code.d.ts +13 -0
- package/Heic-D-Code.js +40 -0
- package/Heic-D-Code.wasm +0 -0
- package/LICENSE +21 -0
- package/README.md +37 -0
- package/package.json +31 -0
package/Heic-D-Code.d.ts
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
// An ImageData-like object because ImageData isn't transferrable
|
3
|
+
export type DecodeOutput = {
|
4
|
+
data: Uint8ClampedArray;
|
5
|
+
width: number;
|
6
|
+
height: number;
|
7
|
+
};
|
8
|
+
|
9
|
+
export type Module = {
|
10
|
+
decode(inData: Uint8Array): DecodeOutput;
|
11
|
+
};
|
12
|
+
|
13
|
+
export default function ModuleFactory(options?: unknown): Promise<Module>;
|
package/Heic-D-Code.js
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
var Module = (() => {
|
2
|
+
|
3
|
+
return (
|
4
|
+
async function(moduleArg = {}) {
|
5
|
+
var moduleRtn;
|
6
|
+
|
7
|
+
var p=moduleArg,aa="object"==typeof window,q="undefined"!=typeof WorkerGlobalScope;p={decode(a){try{const b=r(a.length);if(0===b)throw"Memory allocation error";u.set(a,b);const [c,d,e,f]=p._decode(b,a.length);if(0!==e)throw`libheif error code ${e}`;return{data:new Uint8ClampedArray(u.subarray(f,f+c*d*4)),width:c,height:d}}finally{ba()}}};var ca=import.meta.url,da="",ea,w;
|
8
|
+
if(aa||q){try{da=(new URL(".",ca)).href}catch{}q&&(w=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ea=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var fa=console.log.bind(console),y=console.error.bind(console),A=!1,ha,ia,B,C,u,D,E,F,G,ja,ka,la,ma,na=!1;
|
9
|
+
function oa(){var a=B.buffer;C=new Int8Array(a);D=new Int16Array(a);u=new Uint8Array(a);E=new Uint16Array(a);F=new Int32Array(a);G=new Uint32Array(a);ja=new Float32Array(a);ka=new Float64Array(a);la=new BigInt64Array(a);ma=new BigUint64Array(a)}var H=0,I=null;function pa(a){a="Aborted("+a+")";y(a);A=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ia?.(a);throw a;}var qa;
|
10
|
+
async function ra(a){try{var b=await ea(a);return new Uint8Array(b)}catch{}if(w)a=w(a);else throw"both async and sync fetching of the wasm failed";return a}async function sa(a,b){try{var c=await ra(a);return await WebAssembly.instantiate(c,b)}catch(d){y(`failed to asynchronously prepare wasm: ${d}`),pa(d)}}
|
11
|
+
async function ta(a){var b=qa;if("function"==typeof WebAssembly.instantiateStreaming)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){y(`wasm streaming compile failed: ${d}`),y("falling back to ArrayBuffer instantiation")}return sa(b,a)}class J{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}var K={},ua=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};
|
12
|
+
function L(a){return this.fromWireType(G[a>>2])}
|
13
|
+
var M={},N={},O={},va=class extends Error{constructor(a){super(a);this.name="InternalError"}},wa=(a,b,c)=>{function d(g){g=c(g);if(g.length!==a.length)throw new va("Mismatched type converter count");for(var h=0;h<a.length;++h)P(a[h],g[h])}a.forEach(g=>O[g]=b);var e=Array(b.length),f=[],l=0;b.forEach((g,h)=>{N.hasOwnProperty(g)?e[h]=N[g]:(f.push(g),M.hasOwnProperty(g)||(M[g]=[]),M[g].push(()=>{e[h]=N[g];++l;l===f.length&&d(e)}))});0===f.length&&d(e)},Q=a=>{for(var b="";;){var c=u[a++];if(!c)return b;
|
14
|
+
b+=String.fromCharCode(c)}},R=class extends Error{constructor(a){super(a);this.name="BindingError"}},xa=a=>{throw new R(a);};function ya(a,b,c={}){var d=b.name;if(!a)throw new R(`type "${d}" must have a positive integer typeid pointer`);if(N.hasOwnProperty(a)){if(c.O)return;throw new R(`Cannot register type '${d}' twice`);}N[a]=b;delete O[a];M.hasOwnProperty(a)&&(b=M[a],delete M[a],b.forEach(e=>e()))}function P(a,b,c={}){return ya(a,b,c)}
|
15
|
+
var Aa=(a,b,c)=>{switch(b){case 1:return c?d=>C[d]:d=>u[d];case 2:return c?d=>D[d>>1]:d=>E[d>>1];case 4:return c?d=>F[d>>2]:d=>G[d>>2];case 8:return c?d=>la[d>>3]:d=>ma[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},Ba=[],S=[0,1,,1,null,1,!0,1,!1,1],Ca=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Ba.pop()||S.length;S[b]=a;S[b+1]=1;return b}},Da={name:"emscripten::val",fromWireType:a=>{if(!a)throw new R(`Cannot use deleted val. handle = ${a}`);
|
16
|
+
var b=S[a];9<a&&0===--S[a+1]&&(S[a]=void 0,Ba.push(a));return b},toWireType:(a,b)=>Ca(b),J:8,readValueFromPointer:L,H:null},Ea=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(ja[c>>2])};case 8:return function(c){return this.fromWireType(ka[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},Fa={ftfnn:function(a,b,c,d,e,f,l,g,h){return function(m,k){m=g.toWireType(null,m);k=h.toWireType(null,k);k=c(d,m,k);return f.fromWireType(k)}}},Ga=(a,b)=>{var c=p;if(void 0===
|
17
|
+
c[a].I){var d=c[a];c[a]=function(...e){if(!c[a].I.hasOwnProperty(e.length))throw new R(`Function '${b}' called with an invalid number of arguments (${e.length}) - expects one of (${c[a].I})!`);return c[a].I[e.length].apply(this,e)};c[a].I=[];c[a].I[d.K]=d}},Ha=(a,b,c)=>{if(p.hasOwnProperty(a)){if(void 0===c||void 0!==p[a].I&&void 0!==p[a].I[c])throw new R(`Cannot register public name '${a}' twice`);Ga(a,a);if(p[a].I.hasOwnProperty(c))throw new R(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);
|
18
|
+
p[a].I[c]=b}else p[a]=b,p[a].K=c},Ia=(a,b)=>{for(var c=[],d=0;d<a;d++)c.push(G[b+4*d>>2]);return c},Ja,T=(a,b)=>{a=Q(a);var c=Ja.get(b);if("function"!=typeof c)throw new R(`unknown function pointer with signature ${a}: ${b}`);return c};class Ka extends Error{}
|
19
|
+
var Ma=a=>{a=La(a);var b=Q(a);U(a);return b},Na=(a,b)=>{function c(f){e[f]||N[f]||(O[f]?O[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Ka(`${a}: `+d.map(Ma).join([", "]));},Oa=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},V=(a,b,c)=>{var d=u;if(0<c){c=b+c-1;for(var e=0;e<a.length;++e){var f=a.codePointAt(e);if(127>=f){if(b>=c)break;d[b++]=f}else if(2047>=f){if(b+1>=c)break;d[b++]=192|f>>6;d[b++]=128|f&63}else if(65535>=f){if(b+2>=c)break;d[b++]=224|
|
20
|
+
f>>12;d[b++]=128|f>>6&63;d[b++]=128|f&63}else{if(b+3>=c)break;d[b++]=240|f>>18;d[b++]=128|f>>12&63;d[b++]=128|f>>6&63;d[b++]=128|f&63;e++}}d[b]=0}},Pa=new TextDecoder,Qa=new TextDecoder("utf-16le"),Ra=(a,b)=>{a>>=1;b=a+b/2;for(var c=a;!(c>=b)&&E[c];)++c;return Qa.decode(E.subarray(a,c))},Sa=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)D[b>>1]=a.charCodeAt(e),b+=2;D[b>>1]=0;return b-d},Ta=a=>2*a.length,Ua=(a,b)=>{for(var c="",d=0;!(d>=b/4);d++){var e=
|
21
|
+
F[a+4*d>>2];if(!e)break;c+=String.fromCodePoint(e)}return c},Va=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.codePointAt(e);65535<f&&e++;F[b>>2]=f;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d},Wa=a=>{for(var b=0,c=0;c<a.length;++c)65535<a.codePointAt(c)&&c++,b+=4;return b},W={},Xa=a=>{if(!(a instanceof J||"unwind"==a))throw a;},Ya=a=>{if(!A)try{a()}catch(b){Xa(b)}},Za=[null,[],[]],La,ba,U,$a,r,ab,cb={q:()=>{},v:()=>pa(""),o:a=>{var b=K[a];delete K[a];var c=
|
22
|
+
b.elements,d=c.length,e=c.map(g=>g.N).concat(c.map(g=>g.T)),f=b.P,l=b.R;wa([a],e,g=>{c.forEach((h,m)=>{var k=g[m],n=h.L,x=h.M,z=g[m+d],t=h.S,X=h.U;h.read=v=>k.fromWireType(n(x,v));h.write=(v,bb)=>{var za=[];t(X,v,z.toWireType(za,bb));ua(za)}});return[{name:b.name,fromWireType:h=>{for(var m=Array(d),k=0;k<d;++k)m[k]=c[k].read(h);l(h);return m},toWireType:(h,m)=>{if(d!==m.length)throw new TypeError(`Incorrect number of tuple elements for ${b.name}: expected=${d}, actual=${m.length}`);for(var k=f(),
|
23
|
+
n=0;n<d;++n)c[n].write(k,m[n]);null!==h&&h.push(l,k);return k},J:8,readValueFromPointer:L,H:l}]})},e:(a,b,c,d,e)=>{b=Q(b);d=0n===d;let f=l=>l;if(d){const l=8*c;f=g=>BigInt.asUintN(l,g);e=f(e)}P(a,{name:b,fromWireType:f,toWireType:(l,g)=>{"number"==typeof g&&(g=BigInt(g));return g},J:8,readValueFromPointer:Aa(b,c,!d),H:null})},h:(a,b,c,d)=>{b=Q(b);P(a,{name:b,fromWireType:function(e){return!!e},toWireType:function(e,f){return f?c:d},J:8,readValueFromPointer:function(e){return this.fromWireType(u[e])},
|
24
|
+
H:null})},f:a=>P(a,Da),d:(a,b,c)=>{b=Q(b);P(a,{name:b,fromWireType:d=>d,toWireType:(d,e)=>e,J:8,readValueFromPointer:Ea(b,c),H:null})},j:(a,b,c,d,e,f,l)=>{var g=Ia(b,c);a=Q(a);a=Oa(a);e=T(d,e);Ha(a,function(){Na(`Cannot call ${a} due to unbound types`,g)},b-1);wa([],g,h=>{var m=a;var k=a;h=[h[0],null].concat(h.slice(1));var n=e,x=h.length;if(2>x)throw new R("argTypes array size mismatch! Must at least get return value and 'this' types!");var z=null!==h[1]&&!1,t;a:{for(t=1;t<h.length;++t)if(null!==
|
25
|
+
h[t]&&void 0===h[t].H){t=!0;break a}t=!1}var X="void"!==h[0].name;n=[k,xa,n,f,ua,h[0],h[1]];for(var v=0;v<x-2;++v)n.push(h[v+2]);if(!t)for(v=z?1:2;v<h.length;++v)null!==h[v].H&&n.push(h[v].H);x=[z?"t":"f",X?"t":"f",l?"t":"f"];for(z=z?1:2;z<h.length;++z)t=h[z],x.push(void 0===t.H?"u":null===t.H?"n":"t");h=Fa[x.join("")](...n);k=Object.defineProperty(h,"name",{value:k});h=b-1;if(!p.hasOwnProperty(m))throw new va("Replacing nonexistent public symbol");void 0!==p[m].I&&void 0!==h?p[m].I[h]=k:(p[m]=k,
|
26
|
+
p[m].K=h);return[]})},b:(a,b,c,d,e)=>{b=Q(b);let f=g=>g;if(0===d){var l=32-8*c;f=g=>g<<l>>>l;e=f(e)}P(a,{name:b,fromWireType:f,toWireType:(g,h)=>h,J:8,readValueFromPointer:Aa(b,c,0!==d),H:null})},a:(a,b,c)=>{function d(f){return new e(C.buffer,G[f+4>>2],G[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=Q(c);P(a,{name:c,fromWireType:d,J:8,readValueFromPointer:d},{O:!0})},g:(a,b)=>{b=Q(b);P(a,{name:b,fromWireType:function(c){for(var d=
|
27
|
+
G[c>>2],e=c+4,f,l=e,g=0;g<=d;++g){var h=e+g;if(g==d||0==u[h]){if(l){for(var m=l+(h-l),k=l;!(k>=m)&&u[k];)++k;l=Pa.decode(u.subarray(l,k))}else l="";void 0===f?f=l:(f+=String.fromCharCode(0),f+=l);l=h+1}}U(c);return f},toWireType:function(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e,f="string"==typeof d;if(!(f||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new R("Cannot pass non-string to std::string");if(f)for(var l=e=0;l<d.length;++l){var g=d.charCodeAt(l);127>=g?e++:2047>=g?
|
28
|
+
e+=2:55296<=g&&57343>=g?(e+=4,++l):e+=3}else e=d.length;l=r(4+e+1);g=l+4;G[l>>2]=e;f?V(d,g,e+1):u.set(d,g);null!==c&&c.push(U,l);return l},J:8,readValueFromPointer:L,H(c){U(c)}})},c:(a,b,c)=>{c=Q(c);if(2===b){var d=Ra;var e=Sa;var f=Ta;var l=g=>E[g>>1]}else 4===b&&(d=Ua,e=Va,f=Wa,l=g=>G[g>>2]);P(a,{name:c,fromWireType:g=>{for(var h=G[g>>2],m,k=g+4,n=0;n<=h;++n){var x=g+4+n*b;if(n==h||0==l(x))k=d(k,x-k),void 0===m?m=k:(m+=String.fromCharCode(0),m+=k),k=x+b}U(g);return m},toWireType:(g,h)=>{if("string"!=
|
29
|
+
typeof h)throw new R(`Cannot pass non-string to C++ string type ${c}`);var m=f(h),k=r(4+m+b);G[k>>2]=m/b;e(h,k+4,m+b);null!==g&&g.push(U,k);return k},J:8,readValueFromPointer:L,H(g){U(g)}})},x:(a,b,c,d,e,f)=>{K[a]={name:Q(b),P:T(c,d),R:T(e,f),elements:[]}},w:(a,b,c,d,e,f,l,g,h)=>{K[a].elements.push({N:b,L:T(c,d),M:e,T:f,S:T(l,g),U:h})},i:(a,b)=>{b=Q(b);P(a,{V:!0,name:b,J:0,fromWireType:()=>{},toWireType:()=>{}})},l:()=>{},m:(a,b)=>{W[a]&&(clearTimeout(W[a].id),delete W[a]);if(!b)return 0;var c=setTimeout(()=>
|
30
|
+
{delete W[a];Ya(()=>ab(a,performance.now()))},b);W[a]={id:c,W:b};return 0},n:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();G[a>>2]=60*Math.max(f,e);F[b>>2]=Number(f!=e);b=l=>{var g=Math.abs(l);return`UTC${0<=l?"-":"+"}${String(Math.floor(g/60)).padStart(2,"0")}${String(g%60).padStart(2,"0")}`};a=b(f);b=b(e);e<f?(V(a,c,17),V(b,d,17)):(V(a,d,17),V(b,c,17))},p:a=>{var b=u.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=
|
31
|
+
c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-B.buffer.byteLength+65535)/65536|0;try{B.grow(d);oa();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},s:()=>52,t:()=>52,u:function(){return 70},r:(a,b,c,d)=>{for(var e=0,f=0;f<c;f++){var l=G[b>>2],g=G[b+4>>2];b+=8;for(var h=0;h<g;h++){var m=a,k=u[l+h],n=Za[m];if(0===k||10===k){m=1===m?fa:y;for(k=0;n[k]&&!(NaN<=k);)++k;k=Pa.decode(n.buffer?n.subarray(0,k):new Uint8Array(n.slice(0,
|
32
|
+
k)));m(k);n.length=0}else n.push(k)}e+=g}G[d>>2]=e;return 0},k:a=>{throw new J(a);}},Y=await (async function(){H++;var a={a:cb};qa??=p.locateFile?da+"Heic-D-Code.wasm":(new URL("Heic-D-Code.wasm",import.meta.url)).href;Y=(await ta(a)).instance.exports;B=Y.y;oa();Ja=Y.F;a=Y;La=a.A;ba=a.B;U=a.C;$a=a.D;r=a.E;ab=a.G;H--;0==H&&I&&(a=I,I=null,a());return Y}());
|
33
|
+
function Z(){if(0<H)I=Z;else if(0<H)I=Z;else if(p.calledRun=!0,!A){na=!0;Y.z();ha?.(p);var a=$a;try{var b=a(0,0);throw new J(b);}catch(c){Xa(c)}}}Z();na?moduleRtn=p:moduleRtn=new Promise((a,b)=>{ha=a;ia=b});
|
34
|
+
|
35
|
+
|
36
|
+
return moduleRtn;
|
37
|
+
}
|
38
|
+
);
|
39
|
+
})();
|
40
|
+
export default Module;
|
package/Heic-D-Code.wasm
ADDED
Binary file
|
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 Rylex
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Heic-D-Code
|
2
|
+
- A wasm build of libheif whose only purpose is to decode `.heif` image or the first image of a `.heic` for use in a browser. Its size is half of other libraries like `heic2any` or `heic-to`.
|
3
|
+
- Used in [SnapFridge](https://github.com/msqr1/SnapFridge)
|
4
|
+
- Version: libde265 1.0.16, libheif 1.19.8
|
5
|
+
|
6
|
+
# Building instruction (from scratch)
|
7
|
+
```bash
|
8
|
+
git clone --depth 1 https://github.com/msqr1/Heic-D-Code &&
|
9
|
+
cd Heic-D-Code &&
|
10
|
+
cmake -P Setup.cmake &&
|
11
|
+
source emsdk/emsdk_env.sh &&
|
12
|
+
mkdir build &&
|
13
|
+
cd build &&
|
14
|
+
emcmake cmake .. -DCMAKE_BUILD_TYPE=Release &&
|
15
|
+
cmake --build . --config Release -j$(nproc)
|
16
|
+
```
|
17
|
+
|
18
|
+
# Usage
|
19
|
+
```mjs
|
20
|
+
import initDecoder from "./Heic-D-Code.js";
|
21
|
+
|
22
|
+
const decoder = await initDecoder();
|
23
|
+
const canvas = document.createElement("canvas");
|
24
|
+
const context = canvas.getContext("2d");
|
25
|
+
|
26
|
+
try {
|
27
|
+
const heic = await fetch("example.heic");
|
28
|
+
const inData = await heic.bytes();
|
29
|
+
const { data, width, height } = decoder.decode(inData);
|
30
|
+
canvas.width = width;
|
31
|
+
canvas.height = height;
|
32
|
+
ctx.putImageData(new ImageData(data, width, height), 0, 0);
|
33
|
+
}
|
34
|
+
catch(e) {
|
35
|
+
console.log(e);
|
36
|
+
}
|
37
|
+
```
|
package/package.json
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
{
|
2
|
+
"name": "heic-d-code",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "A wasm build of libheif whose only purpose is to decode `.heif` image or the first image of a `.heic` for use in a browser.",
|
5
|
+
"keywords": [
|
6
|
+
"libheif",
|
7
|
+
"wasm",
|
8
|
+
"heic"
|
9
|
+
],
|
10
|
+
"homepage": "https://github.com/msqr1/Heic-D-Code#readme",
|
11
|
+
"bugs": {
|
12
|
+
"url": "https://github.com/msqr1/Heic-D-Code/issues"
|
13
|
+
},
|
14
|
+
"repository": {
|
15
|
+
"type": "git",
|
16
|
+
"url": "git+https://github.com/msqr1/Heic-D-Code.git"
|
17
|
+
},
|
18
|
+
"license": "MIT",
|
19
|
+
"author": "msqr1",
|
20
|
+
"type": "module",
|
21
|
+
"files": [
|
22
|
+
"Heic-D-Code.js",
|
23
|
+
"Heic-D-Code.d.ts",
|
24
|
+
"Heic-D-Code.wasm"
|
25
|
+
],
|
26
|
+
"main": "Heic-D-Code.js",
|
27
|
+
"types": "./Heic-D-Code.d.ts",
|
28
|
+
"scripts": {
|
29
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
30
|
+
}
|
31
|
+
}
|