extension-develop 2.0.0-alpha.20 → 2.0.0-alpha.21
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/module.js +2 -2
- package/package.json +1 -1
package/dist/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Lp=Object.create;var Ye=Object.defineProperty;var Ip=Object.getOwnPropertyDescriptor;var Op=Object.getOwnPropertyNames;var Ap=Object.getPrototypeOf,Mp=Object.prototype.hasOwnProperty;var Rp=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Tp=(t,e)=>{for(var s in e)Ye(t,s,{get:e[s],enumerable:!0})},Nr=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Op(e))!Mp.call(t,i)&&i!==s&&Ye(t,i,{get:()=>e[i],enumerable:!(r=Ip(e,i))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?Lp(Ap(t)):{},Nr(e||!t||!t.__esModule?Ye(s,"default",{value:t,enumerable:!0}):s,t)),Np=t=>Nr(Ye({},"__esModule",{value:!0}),t);var Js=Rp((Rl,Up)=>{Up.exports={license:"MIT",repository:{type:"git",url:"https://github.com/cezaraugusto/extension.git",directory:"programs/develop"},engines:{node:">=18"},name:"extension-develop",version:"2.0.0-alpha.
|
|
1
|
+
"use strict";var Lp=Object.create;var Ye=Object.defineProperty;var Ip=Object.getOwnPropertyDescriptor;var Op=Object.getOwnPropertyNames;var Ap=Object.getPrototypeOf,Mp=Object.prototype.hasOwnProperty;var Rp=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Tp=(t,e)=>{for(var s in e)Ye(t,s,{get:e[s],enumerable:!0})},Nr=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Op(e))!Mp.call(t,i)&&i!==s&&Ye(t,i,{get:()=>e[i],enumerable:!(r=Ip(e,i))||r.enumerable});return t};var a=(t,e,s)=>(s=t!=null?Lp(Ap(t)):{},Nr(e||!t||!t.__esModule?Ye(s,"default",{value:t,enumerable:!0}):s,t)),Np=t=>Nr(Ye({},"__esModule",{value:!0}),t);var Js=Rp((Rl,Up)=>{Up.exports={license:"MIT",repository:{type:"git",url:"https://github.com/cezaraugusto/extension.git",directory:"programs/develop"},engines:{node:">=18"},name:"extension-develop",version:"2.0.0-alpha.21",description:"The develop step of Extension.js",main:"./dist/module.js",types:"./dist/module.d.ts",files:["dist"],author:{name:"Cezar Augusto",email:"boss@cezaraugusto.net",url:"https://cezaraugusto.com"},scripts:{clean:"rm -rf dist",watch:"tsup-node ./module.ts --format cjs --dts --target=node18 --watch",compile:"tsup-node ./module.ts --format cjs --dts --target=node18 --minify && bash install_scripts.sh",test:"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts'","test:coverage":"jest --no-cache --testPathPattern='webpack/.*/__spec__/.*\\.spec\\.ts' --coverage","test:build":"jest ./build.spec.ts --no-cache"},dependencies:{"@colors/colors":"^1.6.0","@swc/core":"^1.7.3","@types/firefox-webext-browser":"^120.0.4",acorn:"^8.12.1","acorn-walk":"^8.3.3","adm-zip":"^0.5.12",ajv:"^8.17.1",astring:"^1.8.6",axios:"^1.6.8","browser-extension-manifest-fields":"^1.0.6","case-sensitive-paths-webpack-plugin":"^2.4.0",chokidar:"^3.6.0","chrome-location":"^1.2.1","content-security-policy-parser":"^0.6.0","css-loader":"^6.10.0","csv-loader":"^3.0.5","detect-package-manager":"^3.0.2","dotenv-webpack":"^8.0.1","edge-location":"^1.0.0","firefox-profile":"^4.6.0","fx-runner":"^1.4.0","go-git-it":"2.0.4",ignore:"^5.3.1","loader-utils":"^3.3.1",micromatch:"^4.0.7","mini-css-extract-plugin":"^2.8.1",parse5:"^7.1.2","parse5-utils":"^2.0.0",postcss:"^8.4.45",progress:"^2.0.3","schema-utils":"^4.2.0",slugify:"^1.6.6","style-loader":"^3.3.4","swc-loader":"^0.2.6","tiny-glob":"^0.2.9","vue-template-compiler":"^2.7.16","webextension-polyfill":"^0.12.0",webpack:"~5.92.0","webpack-dev-server":"^5.0.2","webpack-merge":"^6.0.1","webpack-target-webextension":"^1.1.2"},devDependencies:{"@types/adm-zip":"^0.5.5","@types/case-sensitive-paths-webpack-plugin":"^2.1.9","@types/chrome":"^0.0.270","@types/cross-spawn":"^6.0.6","@types/dotenv-webpack":"^7.0.7","@types/jest":"^29.5.12","@types/loader-utils":"^2.0.6","@types/node":"^22.5.3","@types/webextension-polyfill":"^0.10.7",jest:"^29.7.0","ts-jest":"^29.1.2",tsup:"^8.0.1",typescript:"5.3.3"},optionalDependencies:{"@babel/core":"^7.24.9","@pmmmwh/react-refresh-webpack-plugin":"^0.5.15","@prefresh/webpack":"^4.0.1","@vue/compiler-sfc":"^3.4.34","babel-loader":"^9.1.3","babel-preset-modern-browser-extension":"^0.7.0",less:"^4.2.0","less-loader":"^12.2.0","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^8.1.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^9.6.0","postcss-scss":"^4.0.9","react-refresh":"^0.14.2","react-refresh-typescript":"^2.0.9","resolve-url-loader":"^5.0.0",sass:"^1.77.8","sass-loader":"^16.0.0",stylelint:"^16.7.0","stylelint-config-standard-scss":"^13.1.0","stylelint-webpack-plugin":"^5.0.1",tailwindcss:"^3.4.7","vue-loader":"^17.4.2","vue-style-loader":"^4.1.3","vue-template-compiler":"^2.7.16"}}});var Il={};Tp(Il,{extensionBuild:()=>lp,extensionDev:()=>vp,extensionPreview:()=>Ep,extensionStart:()=>Fp});module.exports=Np(Il);var op=a(require("fs")),ap=a(require("path")),cp=a(require("webpack")),pp=require("webpack-merge");var Ge=a(require("path"));var bi=a(require("case-sensitive-paths-webpack-plugin"));var V=a(require("fs")),M=a(require("path")),hi=a(require("dotenv-webpack"));var zs=a(require("path")),f=require("@colors/colors/safe");var qr=a(require("path")),Ke=qr.default.join(process.cwd(),"node_modules/extension-develop/dist/certs"),te=["chrome","edge"],qp=["firefox"],Al=[...te,...qp];function w(t,e){return e==="error"?`${(0,f.bold)((0,f.red)("ERROR"))}`:`${e==="warn"?(0,f.brightYellow)("\u25BA\u25BA\u25BA"):e==="info"?(0,f.cyan)("\u25BA\u25BA\u25BA"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} ${t}`}function Ur(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Wr(t,e,s){if(!!1)return`${s.hasErrors()?(0,f.red)("\u2716\uFE0E\u2716\uFE0E\u2716\uFE0E"):(0,f.brightGreen)("\u25BA\u25BA\u25BA")} ${(0,f.cyan)(t)} compiled ${s.hasErrors()?(0,f.red)("with errors"):(0,f.brightGreen)("successfully")} in ${e} ms.`}function Br(t,e,s){return`${w(t,"info")} ${(0,f.magenta)(e)} Integration Found
|
|
2
2
|
|
|
3
3
|
Installing required setup dependencies via ${(0,f.brightYellow)(s)}. This is a one time operation...`}function Jr(t){return`${w(t,"info")} loaded ${(0,f.brightYellow)("env")} file successfully.`}function v(t,e){return`${w(t,"info")} is using ${(0,f.magenta)(e)}.`}function E(t,e){return`${w(t,"success")} You Are All Set
|
|
4
4
|
|
|
@@ -175,7 +175,7 @@ ${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Oc(t,e,s,r){return`\u{1F4E
|
|
|
175
175
|
${(0,m.gray)("URL")} ${(0,m.underline)(t)}`}function Uc(t){return`${S("info")} Unpackaging browser extension...
|
|
176
176
|
${(0,m.gray)("PATH")} ${(0,m.underline)(t)}`}function Wc(){return`${S("info")} Browser extension unpackaged ${(0,m.brightGreen)("successfully")}. Compiling...`}function Bc(t){return`${S("error")} Failed to download or extract ZIP file. ${(0,m.red)(t)}`}function oe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Pc(t,e){let s=e.default_locale,r=Xe.default.join(t,"_locales");if(!Ns.default.existsSync(r))return{defaultLocale:"Browser defaults",otherLocales:[]};let i=Ns.default.readdirSync(r).filter(n=>n!==s);return{defaultLocale:s,otherLocales:i}}function Jc(t){return`${(t/1024).toFixed(2)}KB`}function wl(t){let e=0;return t?.forEach(s=>{e+=s.size}),Jc(e)}function zc(t,e=""){let s="";return Object.keys(t).forEach((r,i,n)=>{let o=i===n.length-1,c=o?"\u2514\u2500":"\u251C\u2500",p=t[r].size?` (${Jc(t[r].size)})`:"";s+=`${(0,m.gray)(e)}${(0,m.gray)(c)} ${r}${(0,m.gray)(p)}
|
|
177
177
|
`,typeof t[r]=="object"&&!t[r].size&&(s+=zc(t[r],`${e}${o?" ":(0,m.gray)("\u2502 ")}`))}),s}function xl(t){let e={};return t?.forEach(s=>{let r=s.name.split("/"),i=e;r.forEach((n,o)=>{i[n]||(i[n]={}),o===r.length-1?i[n]={size:s.size}:i=i[n]})}),`.
|
|
178
|
-
${zc(e)}`}function Hc(t){return`${S("info")} is using ${(0,m.magenta)(t)}. ${(0,m.brightYellow)("This is very experimental")}.`}function Vc(t){return`${S("info")} Installing ${(0,m.cyan)(t)} dependencies...`}function Gc(t,e,s){return`Command ${t} ${e.join(" ")} failed with exit code ${s}`}function Xc(t){return`${S("info")} Can't install project dependencies. ${t.message||t.toString()}`}var Ws=a(require("path")),Zc=a(require("axios")),Yc=a(require("adm-zip"));var Cr=a(require("stream")),Kc=require("util"),vl=(0,Kc.promisify)(Cr.default.pipeline);async function Qc(t,e){let s=t.split("?")[0];try{console.log(qc(s));let r=await(0,Zc.default)({url:t,method:"GET",responseType:"stream"}),i=Ws.default.extname(s),n=Ws.default.basename(s,i),o=Ws.default.join(e,n);console.log(Uc(o));let c=[];await vl(r.data,new Cr.default.Writable({write(u,d,g){c.push(u),g()}}));let p=Buffer.concat(c);return new Yc.default(p).extractAllTo(o,!0),console.log(Wc()),o}catch(r){throw console.error(Bc(r)),r}}var _l=t=>{try{return new URL(t),!0}catch{return!1}};async function Sl(t,e){return await(0,ep.default)(t,process.cwd(),e),Ze.default.resolve(process.cwd(),Ze.default.basename(t))}async function Pl(t){return await Qc(t,process.cwd())}async function Q(t){if(!t)return process.cwd();if(_l(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await Pl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],i=s.slice(1,3)[1];console.log($c(r,i));let n=Ze.default.basename(e.pathname),o=await Sl(t,Dc(n));return console.log(Cc(n)),o}}return Ze.default.resolve(process.cwd(),t)}var z=a(require("path")),tp=a(require("fs")),sp=a(require("ignore")),rp=a(require("tiny-glob")),Fr=a(require("adm-zip")),ip=a(require("slugify"));function kl(t){try{return tp.default.readFileSync(t,"utf8")}catch{return""}}function El(t){return(0,ip.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function jl(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function $l(t,e){let s=El(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function Dl(t){let e=z.default.join(t,".gitignore"),s=kl(e),r=(0,sp.default)();return s?r.add(s):console.log(Fc(t)),(await(0,rp.default)("**/*",{cwd:t,dot:!0})).filter(n=>!r.ignores(n))}async function np(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),i=z.default.join(r,e),n=s.zipSource?t:i,o=require(z.default.join(n,"manifest.json")),c=$l(o,s),p=jl(e),l=z.default.join(i,`${c}.${p}`),u=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log(Lc(e));let d=new Fr.default;(await Dl(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(u)}if(s.zip){console.log(""),console.log(Ic(l));let d=new Fr.default;d.addLocalFolder(i),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log(Oc(e,c,u,l))):s.zip?(console.log(""),console.log(Ac(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Mc(c,p,e,u)))}catch(r){throw console.error(Rc(r)),r}}var Lr=a(require("fs")),Ir=a(require("path"));function ee(t){let e=Ir.default.join(t,"extension.config.js");if(Lr.default.existsSync(e)&&Cl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function Cl(t){let e=Ir.default.join(t,"extension.config.js");return Lr.default.existsSync(e)?(console.log(Hc("extension.config.js")),!0):!1}async function lp(t,e){let s=await Q(t);!t?.startsWith("http")&&!op.default.existsSync(ap.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e?.browser||"chrome",i=J(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=ee(s)({...i,plugins:n}),p=(0,pp.merge)(c),l=(0,cp.default)(p);await new Promise((u,d)=>{l.run(async(g,y)=>{if(g)return console.error(g.stack||g),d(g);console.log(Ec(s,y,r)),(e?.zip||e?.zipSource)&&await np(s,{...e,browser:r}),y?.hasErrors()?(console.log(y.toString({colors:!0})),process.exit(1)):(console.log(jc()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var Mr=a(require("fs")),Rr=a(require("path"));var Ar=a(require("path")),fp=a(require("webpack")),up=a(require("webpack-dev-server")),mp=require("webpack-merge");function Or(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function dp(t,{...e}){let s=J(t,{...e,mode:"development"}),i=ee(t)(s),n=(0,mp.merge)(i),o=(0,fp.default)(n),c={host:"127.0.0.1",allowedHosts:"all",static:Ar.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:ot(t)?void 0:{paths:[Ar.default.join(t,"**/*.html")],options:{usePolling:!0,interval:1e3}},client:{logging:process.env.EXTENSION_ENV==="development"?"error":"none",progress:!1,overlay:!1},headers:{"Access-Control-Allow-Origin":"*"},port:"auto",hot:"only"},p=new up.default(c,o);p.startCallback(l=>{l!=null&&console.log(`Error in the Extension.js runner: ${l.stack||""}`)}),process.on("ERROR",()=>{Or(p)}),process.on("SIGINT",()=>{Or(p)}),process.on("SIGTERM",()=>{Or(p)})}var Bs=a(require("path")),ke=a(require("fs/promises"));async function gp(t){let e=Bs.default.join(t,"extension-env.d.ts"),s=process.env.EXTENSION_ENV==="development"?Bs.default.resolve(process.cwd(),"programs/cli/types"):"extension/dist/types",r=`// Required Extension.js types for TypeScript projects.
|
|
178
|
+
${zc(e)}`}function Hc(t){return`${S("info")} is using ${(0,m.magenta)(t)}. ${(0,m.brightYellow)("This is very experimental")}.`}function Vc(t){return`${S("info")} Installing ${(0,m.cyan)(t)} dependencies...`}function Gc(t,e,s){return`Command ${t} ${e.join(" ")} failed with exit code ${s}`}function Xc(t){return`${S("info")} Can't install project dependencies. ${t.message||t.toString()}`}var Ws=a(require("path")),Zc=a(require("axios")),Yc=a(require("adm-zip"));var Cr=a(require("stream")),Kc=require("util"),vl=(0,Kc.promisify)(Cr.default.pipeline);async function Qc(t,e){let s=t.split("?")[0];try{console.log(qc(s));let r=await(0,Zc.default)({url:t,method:"GET",responseType:"stream"}),i=Ws.default.extname(s),n=Ws.default.basename(s,i),o=Ws.default.join(e,n);console.log(Uc(o));let c=[];await vl(r.data,new Cr.default.Writable({write(u,d,g){c.push(u),g()}}));let p=Buffer.concat(c);return new Yc.default(p).extractAllTo(o,!0),console.log(Wc()),o}catch(r){throw console.error(Bc(r)),r}}var _l=t=>{try{return new URL(t),!0}catch{return!1}};async function Sl(t,e){return await(0,ep.default)(t,process.cwd(),e),Ze.default.resolve(process.cwd(),Ze.default.basename(t))}async function Pl(t){return await Qc(t,process.cwd())}async function Q(t){if(!t)return process.cwd();if(_l(t)){let e=new URL(t);if(e.protocol.startsWith("http")){if(e.origin!=="https://github.com")return await Pl(t);let s=e.pathname.split("/"),r=s.slice(1,3)[0],i=s.slice(1,3)[1];console.log($c(r,i));let n=Ze.default.basename(e.pathname),o=await Sl(t,Dc(n));return console.log(Cc(n)),o}}return Ze.default.resolve(process.cwd(),t)}var z=a(require("path")),tp=a(require("fs")),sp=a(require("ignore")),rp=a(require("tiny-glob")),Fr=a(require("adm-zip")),ip=a(require("slugify"));function kl(t){try{return tp.default.readFileSync(t,"utf8")}catch{return""}}function El(t){return(0,ip.default)(t,{replacement:"-",remove:/[^a-zA-Z0-9 ]/g,lower:!0})}function jl(t){switch(t){case"opera":return"crx";case"firefox":return"xpi";default:return"zip"}}function $l(t,e){let s=El(e.zipFilename||t.name);return e.zipFilename?s:`${s}-${t.version}`}async function Dl(t){let e=z.default.join(t,".gitignore"),s=kl(e),r=(0,sp.default)();return s?r.add(s):console.log(Fc(t)),(await(0,rp.default)("**/*",{cwd:t,dot:!0})).filter(n=>!r.ignores(n))}async function np(t,{browser:e="chrome",...s}){try{let r=z.default.join(t,"dist"),i=z.default.join(r,e),n=s.zipSource?t:i,o=require(z.default.join(n,"manifest.json")),c=$l(o,s),p=jl(e),l=z.default.join(i,`${c}.${p}`),u=z.default.join(r,`${c}-source.${p}`);if(s.zipSource){console.log(""),console.log(Lc(e));let d=new Fr.default;(await Dl(t)).forEach(y=>{d.addLocalFile(z.default.join(t,y),z.default.dirname(y))}),d.writeZip(u)}if(s.zip){console.log(""),console.log(Ic(l));let d=new Fr.default;d.addLocalFolder(i),d.writeZip(l)}s.zip&&s.zipSource?(console.log(""),console.log(Oc(e,c,u,l))):s.zip?(console.log(""),console.log(Ac(c,p,e,l))):s.zipSource&&(console.log(""),console.log(Mc(c,p,e,u)))}catch(r){throw console.error(Rc(r)),r}}var Lr=a(require("fs")),Ir=a(require("path"));function ee(t){let e=Ir.default.join(t,"extension.config.js");if(Lr.default.existsSync(e)&&Cl(t)){let s=require(e);if(s&&s!=null&&s&&typeof s.config=="function")return s.config}return s=>s}function Cl(t){let e=Ir.default.join(t,"extension.config.js");return Lr.default.existsSync(e)?(console.log(Hc("extension.config.js")),!0):!1}async function lp(t,e){let s=await Q(t);!t?.startsWith("http")&&!op.default.existsSync(ap.default.join(s,"manifest.json"))&&(console.log(K()),process.exit(1));try{let r=e?.browser||"chrome",i=J(s,{...e,browser:r,mode:"production"}),n=i.plugins?.filter(u=>u?.constructor.name!=="plugin-browsers"&&u?.constructor.name!=="plugin-reload"),c=ee(s)({...i,plugins:n}),p=(0,pp.merge)(c),l=(0,cp.default)(p);await new Promise((u,d)=>{l.run(async(g,y)=>{if(g)return console.error(g.stack||g),d(g);console.log(Ec(s,y,r)),(e?.zip||e?.zipSource)&&await np(s,{...e,browser:r}),y?.hasErrors()?(console.log(y.toString({colors:!0})),process.exit(1)):(console.log(jc()),u())})})}catch(r){process.env.EXTENSION_ENV==="development"&&console.error(r),process.exit(1)}}var Mr=a(require("fs")),Rr=a(require("path"));var Ar=a(require("path")),fp=a(require("webpack")),up=a(require("webpack-dev-server")),mp=require("webpack-merge");function Or(t){t.stop().then(()=>{process.exit()}).catch(e=>{console.log(`Error in the Extension.js runner: ${e.stack||""}`)})}async function dp(t,{...e}){let s=J(t,{...e,mode:"development"}),i=ee(t)(s),n=(0,mp.merge)(i),o=(0,fp.default)(n),c={host:"127.0.0.1",allowedHosts:"all",static:Ar.default.join(t,"public"),compress:!1,devMiddleware:{writeToDisk:!0},watchFiles:ot(t)?void 0:{paths:[Ar.default.join(t,"**/*.html")],options:{usePolling:!0,interval:1e3}},client:{logging:process.env.EXTENSION_ENV==="development"?"error":"none",progress:!1,overlay:!1},headers:{"Access-Control-Allow-Origin":"*"},port:"auto",hot:"only"},p=new up.default(c,o);p.startCallback(l=>{l!=null&&console.log(`Error in the Extension.js runner: ${l.stack||""}`)}),process.on("ERROR",()=>{Or(p)}),process.on("SIGINT",()=>{Or(p)}),process.on("SIGTERM",()=>{Or(p)})}var Bs=a(require("path")),ke=a(require("fs/promises"));async function gp(t){let e=Bs.default.join(t,"extension-env.d.ts"),s=process.env.EXTENSION_ENV==="development"?Bs.default.resolve(process.cwd(),"programs/cli/types"):"./node_modules/extension/dist/types",r=`// Required Extension.js types for TypeScript projects.
|
|
179
179
|
// This file is auto-generated and should not be excluded.
|
|
180
180
|
// If you need additional types, consider creating a new *.d.ts file and
|
|
181
181
|
// referencing it in the "include" array of your tsconfig.json file.
|
package/package.json
CHANGED