diff --git a/aftership-woocommerce-tracking.php b/aftership-woocommerce-tracking.php index 1b20ecb..5f7730b 100644 --- a/aftership-woocommerce-tracking.php +++ b/aftership-woocommerce-tracking.php @@ -3,7 +3,7 @@ * Plugin Name: AfterShip Tracking - All-In-One WooCommerce Order Tracking (Free plan available) * Plugin URI: http://aftership.com/ * Description: Track orders in one place. shipment tracking, automated notifications, order lookup, branded tracking page, delivery day prediction - * Version: 1.17.14 + * Version: 1.17.15 * Author: AfterShip * Author URI: http://aftership.com * @@ -20,7 +20,7 @@ require_once( 'woo-includes/woo-functions.php' ); -define( 'AFTERSHIP_VERSION', '1.17.14' ); +define( 'AFTERSHIP_VERSION', '1.17.15' ); define( 'AFTERSHIP_PATH', dirname( __FILE__ ) ); define( 'AFTERSHIP_ASSETS_URL', plugins_url() . '/' . basename( AFTERSHIP_PATH ) ); define( 'AFTERSHIP_SCRIPT_TAGS', 'aftership_script_tags' ); @@ -46,6 +46,11 @@ class AfterShip { */ public $actions; + /*** + * @var AfterShip_Fulfillment + */ + public $fulfillment_actions; + /** * Instance of AfterShip_Protection. * @@ -145,21 +150,29 @@ public function __construct() { $this->includes(); // Check if woocommerce active. + // Add afterShip API to woocommerce REST API if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true ) ) { add_filter( 'woocommerce_rest_api_get_rest_namespaces', array( $this, 'add_rest_api' ) ); } + // CSS add_action( 'admin_print_styles', array( $this->actions, 'admin_styles' ) ); - add_action( 'admin_enqueue_scripts', array( $this->actions, 'load_orders_page_script' ) ); - add_action( 'admin_enqueue_scripts', array( $this, 'automizely_aftership_add_admin_css' ) ); - // Remove other plugins notice message for setting and landing page - add_action( 'admin_enqueue_scripts', array( $this, 'as_admin_remove_notice_style' ) ); - - // Enqueue js on frontend. - add_action( 'wp_enqueue_scripts', array( $this, 'as_enqueue_frontend_js' ) ); - - add_action( 'add_meta_boxes', array( $this->actions, 'add_meta_box' ) ); + // FE Order Page Delete Tracking Button & Add Tracking Button + add_action( 'admin_enqueue_scripts', array( $this->actions, 'load_orders_page_script' ) ); + // FE Metabox + add_action( 'add_meta_boxes', array( $this->actions, 'add_meta_box' ) ); + // CSS + add_action( 'admin_enqueue_scripts', array( $this, 'automizely_aftership_add_admin_css' ) ); + + // Remove other plugins notice message for setting and landing page + // Old Version Plugin + add_action( 'admin_enqueue_scripts', array( $this, 'as_admin_remove_notice_style' ) ); + // Enqueue js on frontend. + // Old Version Plugin + add_action( 'wp_enqueue_scripts', array( $this, 'as_enqueue_frontend_js' ) ); + // Old Version Plugin add_action( 'woocommerce_process_shop_order_meta', array( $this->actions, 'save_meta_box' ), 0, 2 ); + // register admin pages for the plugin add_action( 'admin_menu', array( $this, 'automizely_aftership_admin_menu' ) ); add_action( 'admin_menu', array( $this, 'automizely_aftership_connect_page' ) ); @@ -168,29 +181,43 @@ public function __construct() { * Admin Initialization calls registration * We need this to send user to plugin's Admin page on activation */ + // init configs & options add_action( 'admin_init', array( $this, 'automizely_aftership_plugin_active' ) ); + // UNKNOWN add_action( 'admin_footer', array( $this, 'deactivate_modal' ) ); // View Order Page. + // Display tracking with templates add_action( 'woocommerce_view_order', array( $this->actions, 'display_tracking_info' ) ); + // Display email with templates add_action( 'woocommerce_email_before_order_table', array( $this->actions, 'email_display' ), 0, 4 ); // Order page metabox actions. + // Old Version Plugin API add_action( 'wp_ajax_aftership_get_item', array( $this->actions, 'get_meta_box_item_ajax' ) ); add_action( 'wp_ajax_aftership_delete_item', array( $this->actions, 'meta_box_delete_tracking' ) ); add_action( 'wp_ajax_aftership_save_form', array( $this->actions, 'save_meta_box_ajax' ) ); add_action( 'wp_ajax_aftership_get_items', array( $this->actions, 'get_meta_box_items_ajax' ) ); + // API for FE + // Tracking API add_action( 'wp_ajax_aftership_delete_order_tracking', array( $this->actions, 'delete_order_tracking' ) ); add_action( 'wp_ajax_aftership_save_order_tracking', array( $this->actions, 'save_order_tracking' ) ); add_action( 'wp_ajax_aftership_get_order_trackings', array( $this->actions, 'get_order_detail' ) ); add_action( 'wp_ajax_aftership_get_settings', array( $this->actions, 'get_settings' ) ); + // Fulfillment API + add_action( 'wp_ajax_aftership_save_order_fulfillments', array( $this->fulfillment_actions, 'save_order_fulfillments_controller') ); + add_action( 'wp_ajax_aftership_get_order_fulfillments', array( $this->fulfillment_actions, 'get_order_fulfillments_controller') ); + add_action( 'wp_ajax_aftership_delete_order_fulfillments', array( $this->fulfillment_actions, 'delete_order_fulfillments_controller') ); + add_action( 'wp_ajax_aftership_delete_order_fulfillment_tracking', array( $this->fulfillment_actions, 'delete_order_fulfillment_tracking_controller' ) ); // Register Add Tracking Action for AfterShip + // A button to update tracking status add_filter( 'woocommerce_admin_order_actions', array( $this->actions, 'add_aftership_tracking_actions_button' ), 100, 2 ); // Custom AfterShip Tracking column in admin orders list. add_filter( 'manage_shop_order_posts_columns', array( $this->actions, 'shop_order_columns' ), 99 ); add_action( 'manage_shop_order_posts_custom_column', array( $this->actions, 'render_shop_order_columns' ) ); + // Custom AfterShip Tracking column in admin orders list(Woocommerce High-Performance Order Storage Support) add_filter( 'manage_woocommerce_page_wc-orders_columns', array( $this->actions, 'shop_order_columns' ), 99 ); add_action( 'manage_woocommerce_page_wc-orders_custom_column', array( $this->actions, 'render_wc_orders_list_columns' ), 10, 2 ); @@ -226,9 +253,11 @@ public function __construct() { add_filter( 'woocommerce_rest_shop_coupon_object_query', array( $this->actions, 'add_query' ), 10, 2 ); add_filter( 'woocommerce_rest_customer_query', array( $this->actions, 'add_customer_query' ), 10, 2 ); + // install or uninstall register_activation_hook( __FILE__, array( 'AfterShip', 'install' ) ); register_deactivation_hook( __FILE__, array( 'AfterShip', 'deactivation' ) ); register_uninstall_hook( __FILE__, array( 'AfterShip', 'deactivation' ) ); + // string cache for AFTERSHIP_VERSION set_transient( 'wc-aftership-plugin' . AFTERSHIP_VERSION, 'alive', 7 * 24 * 3600 ); } @@ -450,6 +479,8 @@ private function includes() { require_once( $this->plugin_dir . '/includes/define.php' ); require_once( $this->plugin_dir . '/includes/class-aftership-import-csv.php' ); $this->import_csv = new AfterShip_Import_Csv($this->actions, $this->couriers); + require( $this->plugin_dir . '/includes/class-aftership-fulfillment.php' ); + $this->fulfillment_actions = AfterShip_Fulfillment::get_instance(); } /** diff --git a/assets/frontendv2/.gitignore b/assets/frontendv2/.gitignore new file mode 100644 index 0000000..719e05f --- /dev/null +++ b/assets/frontendv2/.gitignore @@ -0,0 +1,4 @@ +!package.json +!yarn.lock +node_modules +# dist/ diff --git a/assets/frontendv2/.prettierrc.json b/assets/frontendv2/.prettierrc.json new file mode 100644 index 0000000..12bf428 --- /dev/null +++ b/assets/frontendv2/.prettierrc.json @@ -0,0 +1,9 @@ +{ + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 100, + "semi": true, + "useTabs": false, + "tabWidth": 2, + "jsxBracketSameLine": true +} diff --git a/assets/frontendv2/README.md b/assets/frontendv2/README.md new file mode 100644 index 0000000..377400a --- /dev/null +++ b/assets/frontendv2/README.md @@ -0,0 +1,33 @@ +## Usage + +Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`. + +This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template. + +```bash +$ npm install # or pnpm install or yarn install +``` +### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) + +## Available Scripts + +In the project directory, you can run: + +### `npm dev` or `npm start` + +Runs the app in the development mode. +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits. + +### `npm run build` + +Builds the app for production to the `dist` folder. +It correctly bundles Solid in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes. +Your app is ready to be deployed! + +## Deployment + +You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) diff --git a/assets/frontendv2/dist/metabox/index.js b/assets/frontendv2/dist/metabox/index.js new file mode 100644 index 0000000..fa9aef4 --- /dev/null +++ b/assets/frontendv2/dist/metabox/index.js @@ -0,0 +1 @@ +var js=Object.defineProperty,Ns=Object.defineProperties;var ks=Object.getOwnPropertyDescriptors;var er=Object.getOwnPropertySymbols;var Ts=Object.prototype.hasOwnProperty,Is=Object.prototype.propertyIsEnumerable;var it=(V,B,M)=>B in V?js(V,B,{enumerable:!0,configurable:!0,writable:!0,value:M}):V[B]=M,he=(V,B)=>{for(var M in B||(B={}))Ts.call(B,M)&&it(V,M,B[M]);if(er)for(var M of er(B))Is.call(B,M)&&it(V,M,B[M]);return V},tr=(V,B)=>Ns(V,ks(B));var rr=(V,B,M)=>(it(V,typeof B!="symbol"?B+"":B,M),M);var ae=(V,B,M)=>new Promise((Ce,ee)=>{var te=E=>{try{ue(M.next(E))}catch(Q){ee(Q)}},me=E=>{try{ue(M.throw(E))}catch(Q){ee(Q)}},ue=E=>E.done?Ce(E.value):Promise.resolve(E.value).then(te,me);ue((M=M.apply(V,B)).next())});(function(){"use strict";const V=(e,t)=>e===t,B=Symbol("solid-proxy"),M={equals:V};let Ce=at;const ee={},te=1,me=2,ue={owned:null,cleanups:null,context:null,owner:null};var E=null;let Q=null,P=null,ye=null,Y=null,re=null,Le=0;function je(e,t){t&&(E=t);const r=P,i=E,o=e.length===0?ue:{owned:null,cleanups:null,context:null,owner:i};E=o,P=null;let c;try{Re(()=>c=e(()=>He(o)),!0)}finally{P=r,E=i}return c}function X(e,t){t=t?Object.assign({},M,t):M;const r={value:e,observers:null,observerSlots:null,pending:ee,comparator:t.equals||void 0};return[ot.bind(r),i=>(typeof i=="function"&&(Q&&Q.running&&Q.sources.has(r)?i=i(r.pending!==ee?r.pending:r.tValue):i=i(r.pending!==ee?r.pending:r.value)),Pe(r,i))]}function R(e,t,r){const i=Ue(e,t,!1,te);Ne(i)}function st(e,t,r){Ce=cr;const i=Ue(e,t,!1,te);i.user=!0,re&&re.push(i)}function Z(e,t,r){r=r?Object.assign({},M,r):M;const i=Ue(e,t,!0,0);return i.pending=ee,i.observers=null,i.observerSlots=null,i.comparator=r.equals||void 0,Ne(i),ot.bind(i)}function nr(e){if(ye)return e();let t;const r=ye=[];try{t=e()}finally{ye=null}return Re(()=>{for(let i=0;ife(e))}function sr(e){return E===null||(E.cleanups===null?E.cleanups=[e]:E.cleanups.push(e)),e}function or(e){const t=Z(e);return Z(()=>ze(t()))}function ot(){const e=Q;if(this.sources&&(this.state||e)){const t=Y;Y=null,this.state===te||e?Ne(this):qe(this),Y=t}if(P){const t=this.observers?this.observers.length:0;P.sources?(P.sources.push(this),P.sourceSlots.push(t)):(P.sources=[this],P.sourceSlots=[t]),this.observers?(this.observers.push(P),this.observerSlots.push(P.sources.length-1)):(this.observers=[P],this.observerSlots=[P.sources.length-1])}return this.value}function Pe(e,t,r){if(e.comparator&&e.comparator(e.value,t))return t;if(ye)return e.pending===ee&&ye.push(e),e.pending=t,t;let i=!1;return e.value=t,e.observers&&e.observers.length&&Re(()=>{for(let o=0;o1e6)throw Y=[],new Error},!1),t}function Ne(e){if(!e.fn)return;He(e);const t=E,r=P,i=Le;P=E=e,ar(e,e.value,i),P=r,E=t}function ar(e,t,r){let i;try{i=e.fn(t)}catch(o){ct(o)}(!e.updatedAt||e.updatedAt<=r)&&(e.observers&&e.observers.length?Pe(e,i):e.value=i,e.updatedAt=r)}function Ue(e,t,r,i=te,o){const c={fn:e,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:E,context:null,pure:r};return E===null||E!==ue&&(E.owned?E.owned.push(c):E.owned=[c]),c}function be(e){const t=Q;if(e.state!==te)return e.state=0;if(e.suspense&&fe(e.suspense.inFallback))return e.suspense.effects.push(e);const r=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;i--)if(e=r[i],e.state===te||t)Ne(e);else if(e.state===me||t){const o=Y;Y=null,qe(e),Y=o}}function Re(e,t){if(Y)return e();let r=!1;t||(Y=[]),re?r=!0:re=[],Le++;try{e()}catch(i){ct(i)}finally{lr(r)}}function lr(e){Y&&(at(Y),Y=null),!e&&(re.length?nr(()=>{Ce(re),re=null}):re=null)}function at(e){for(let t=0;t1?[]:null;return sr(()=>ut(c)),()=>{let p=e()||[],f,d;return fe(()=>{let C=p.length,j,k,A,$,x,n,s,a,l;if(C===0)h!==0&&(ut(c),c=[],i=[],o=[],h=0,g&&(g=[])),r.fallback&&(i=[ur],o[0]=je(u=>(c[0]=u,r.fallback())),h=1);else if(h===0){for(o=new Array(C),d=0;d=n&&a>=n&&i[s]===p[a];s--,a--)A[a]=o[s],$[a]=c[s],g&&(x[a]=g[s]);for(j=new Map,k=new Array(a+1),d=a;d>=n;d--)l=p[d],f=j.get(l),k[d]=f===void 0?-1:f,j.set(l,d);for(f=n;f<=s;f++)l=i[f],d=j.get(l),d!==void 0&&d!==-1?(A[d]=o[f],$[d]=c[f],g&&(x[d]=g[f]),d=k[d],j.set(l,d)):c[f]();for(d=n;de(t))}function ke(){return!0}const dr={get(e,t,r){return t===B?r:e.get(t)},has(e,t){return e.has(t)},set:ke,deleteProperty:ke,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:ke,deleteProperty:ke}},ownKeys(e){return e.keys()}};function Ve(e){return typeof e=="function"?e():e}function gr(...e){return new Proxy({get(t){for(let r=e.length-1;r>=0;r--){const i=Ve(e[r])[t];if(i!==void 0)return i}},has(t){for(let r=e.length-1;r>=0;r--)if(t in Ve(e[r]))return!0;return!1},keys(){const t=[];for(let r=0;re.fallback};return Z(fr(()=>e.each,e.children,t||void 0))}function Ye(e){let t=!1;const r=Z(()=>e.when,void 0,{equals:(i,o)=>t?i===o:!i==!o});return Z(()=>{const i=r();if(i){const o=e.children;return(t=typeof o=="function"&&o.length>0)?fe(()=>o(i)):o}return e.fallback})}function hr(e){let t=!1;const r=or(()=>e.children),i=Z(()=>{let o=r();Array.isArray(o)||(o=[o]);for(let c=0;co&&o[0]===c[0]&&(t?o[1]===c[1]:!o[1]==!c[1])&&o[2]===c[2]});return Z(()=>{const[o,c,h]=i();if(o<0)return e.fallback;const g=h.children;return(t=typeof g=="function"&&g.length>0)?fe(()=>g(c)):g})}function mr(e){return e}function ft(e,t,r){let i=r.length,o=t.length,c=i,h=0,g=0,p=t[o-1].nextSibling,f=null;for(;hd-g){const k=t[h];for(;g{i=o,F(t,e(),t.firstChild?null:void 0,r)}),()=>{i(),t.textContent=""}}function q(e,t,r){const i=document.createElement("template");i.innerHTML=e;let o=i.content.firstChild;return r&&(o=o.firstChild),o}function ve(e,t=window.document){const r=t[dt]||(t[dt]=new Set);for(let i=0,o=e.length;ir[0](r[1],o)):e.addEventListener(t,r)}function br(e,t,r={}){const i=Object.keys(t||{}),o=Object.keys(r);let c,h;for(c=0,h=o.length;cIe(e,t(),o,r),i)}function gt(e,t,r){const i=t.trim().split(/\s+/);for(let o=0,c=i.length;o{let g=t();for(;typeof g=="function";)g=g();r=Ie(e,g,r,i)}),()=>r;if(Array.isArray(t)){const g=[];if(Ze(g,t,o))return R(()=>r=Ie(e,g,r,i,!0)),()=>r;if(g.length===0){if(r=_e(e,r,i),h)return r}else Array.isArray(r)?r.length===0?ht(e,g,i):ft(e,r,g):r==null||r===""?ht(e,g):ft(e,h&&r||[e.firstChild],g);r=g}else if(t instanceof Node){if(Array.isArray(r)){if(h)return r=_e(e,r,i,t);_e(e,r,null,t)}else r==null||r===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);r=t}}return r}function Ze(e,t,r){let i=!1;for(let o=0,c=t.length;o=0;h--){const g=t[h];if(o!==g){const p=g.parentNode===e;!c&&!h?p?e.replaceChild(o,g):e.insertBefore(o,r):p&&e.removeChild(g)}else c=!0}}else e.insertBefore(o,r);return[o]}var mt={button:"_button_1dv9o_1",primary:"_primary_1dv9o_18"};const pr=q(""),yt=e=>(()=>{const t=pr.cloneNode(!0);return Ge(t,"click",e.onClick,!0),F(t,()=>e.children),R(r=>{const i={[mt.button]:!0,[mt.primary]:e.type==="primary"},o=e.disabled,c=e.style;return r._v$=br(t,i,r._v$),o!==r._v$2&&(t.disabled=r._v$2=o),r._v$3=vr(t,c,r._v$3),r},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})();ve(["click"]);var de={root:"_root_nkd9j_1",loading:"_loading_nkd9j_5",tracking:"_tracking_nkd9j_19",title:"_title_nkd9j_23",content:"_content_nkd9j_38",number:"_number_nkd9j_45",item:"_item_nkd9j_65"},pe=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function $r(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var $e={},wr=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),bt="%[a-f0-9]{2}",vt=new RegExp(bt,"gi"),_t=new RegExp("("+bt+")+","gi");function We(e,t){try{return decodeURIComponent(e.join(""))}catch(o){}if(e.length===1)return e;t=t||1;var r=e.slice(0,t),i=e.slice(t);return Array.prototype.concat.call([],We(r),We(i))}function xr(e){try{return decodeURIComponent(e)}catch(i){for(var t=e.match(vt),r=1;r{if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(t==="")return[e];const r=e.indexOf(t);return r===-1?[e]:[e.slice(0,r),e.slice(r+t.length)]},jr=function(e,t){for(var r={},i=Object.keys(e),o=Array.isArray(t),c=0;cn==null,h=Symbol("encodeFragmentIdentifier");function g(n){switch(n.arrayFormat){case"index":return s=>(a,l)=>{const u=a.length;return l===void 0||n.skipNull&&l===null||n.skipEmptyString&&l===""?a:l===null?[...a,[d(s,n),"[",u,"]"].join("")]:[...a,[d(s,n),"[",d(u,n),"]=",d(l,n)].join("")]};case"bracket":return s=>(a,l)=>l===void 0||n.skipNull&&l===null||n.skipEmptyString&&l===""?a:l===null?[...a,[d(s,n),"[]"].join("")]:[...a,[d(s,n),"[]=",d(l,n)].join("")];case"colon-list-separator":return s=>(a,l)=>l===void 0||n.skipNull&&l===null||n.skipEmptyString&&l===""?a:l===null?[...a,[d(s,n),":list="].join("")]:[...a,[d(s,n),":list=",d(l,n)].join("")];case"comma":case"separator":case"bracket-separator":{const s=n.arrayFormat==="bracket-separator"?"[]=":"=";return a=>(l,u)=>u===void 0||n.skipNull&&u===null||n.skipEmptyString&&u===""?l:(u=u===null?"":u,l.length===0?[[d(a,n),s,d(u,n)].join("")]:[[l,d(u,n)].join(n.arrayFormatSeparator)])}default:return s=>(a,l)=>l===void 0||n.skipNull&&l===null||n.skipEmptyString&&l===""?a:l===null?[...a,d(s,n)]:[...a,[d(s,n),"=",d(l,n)].join("")]}}function p(n){let s;switch(n.arrayFormat){case"index":return(a,l,u)=>{if(s=/\[(\d*)\]$/.exec(a),a=a.replace(/\[\d*\]$/,""),!s){u[a]=l;return}u[a]===void 0&&(u[a]={}),u[a][s[1]]=l};case"bracket":return(a,l,u)=>{if(s=/(\[\])$/.exec(a),a=a.replace(/\[\]$/,""),!s){u[a]=l;return}if(u[a]===void 0){u[a]=[l];return}u[a]=[].concat(u[a],l)};case"colon-list-separator":return(a,l,u)=>{if(s=/(:list)$/.exec(a),a=a.replace(/:list$/,""),!s){u[a]=l;return}if(u[a]===void 0){u[a]=[l];return}u[a]=[].concat(u[a],l)};case"comma":case"separator":return(a,l,u)=>{const _=typeof l=="string"&&l.includes(n.arrayFormatSeparator),w=typeof l=="string"&&!_&&S(l,n).includes(n.arrayFormatSeparator);l=w?S(l,n):l;const N=_||w?l.split(n.arrayFormatSeparator).map(I=>S(I,n)):l===null?l:S(l,n);u[a]=N};case"bracket-separator":return(a,l,u)=>{const _=/(\[\])$/.test(a);if(a=a.replace(/\[\]$/,""),!_){u[a]=l&&S(l,n);return}const w=l===null?[]:l.split(n.arrayFormatSeparator).map(N=>S(N,n));if(u[a]===void 0){u[a]=w;return}u[a]=[].concat(u[a],w)};default:return(a,l,u)=>{if(u[a]===void 0){u[a]=l;return}u[a]=[].concat(u[a],l)}}}function f(n){if(typeof n!="string"||n.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function d(n,s){return s.encode?s.strict?t(n):encodeURIComponent(n):n}function S(n,s){return s.decode?r(n):n}function C(n){return Array.isArray(n)?n.sort():typeof n=="object"?C(Object.keys(n)).sort((s,a)=>Number(s)-Number(a)).map(s=>n[s]):n}function j(n){const s=n.indexOf("#");return s!==-1&&(n=n.slice(0,s)),n}function k(n){let s="";const a=n.indexOf("#");return a!==-1&&(s=n.slice(a)),s}function A(n){n=j(n);const s=n.indexOf("?");return s===-1?"":n.slice(s+1)}function $(n,s){return s.parseNumbers&&!Number.isNaN(Number(n))&&typeof n=="string"&&n.trim()!==""?n=Number(n):s.parseBooleans&&n!==null&&(n.toLowerCase()==="true"||n.toLowerCase()==="false")&&(n=n.toLowerCase()==="true"),n}function x(n,s){s=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},s),f(s.arrayFormatSeparator);const a=p(s),l=Object.create(null);if(typeof n!="string"||(n=n.trim().replace(/^[?#&]/,""),!n))return l;for(const u of n.split("&")){if(u==="")continue;let[_,w]=i(s.decode?u.replace(/\+/g," "):u,"=");w=w===void 0?null:["comma","separator","bracket-separator"].includes(s.arrayFormat)?w:S(w,s),a(S(_,s),w,l)}for(const u of Object.keys(l)){const _=l[u];if(typeof _=="object"&&_!==null)for(const w of Object.keys(_))_[w]=$(_[w],s);else l[u]=$(_,s)}return s.sort===!1?l:(s.sort===!0?Object.keys(l).sort():Object.keys(l).sort(s.sort)).reduce((u,_)=>{const w=l[_];return Boolean(w)&&typeof w=="object"&&!Array.isArray(w)?u[_]=C(w):u[_]=w,u},Object.create(null))}e.extract=A,e.parse=x,e.stringify=(n,s)=>{if(!n)return"";s=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},s),f(s.arrayFormatSeparator);const a=w=>s.skipNull&&c(n[w])||s.skipEmptyString&&n[w]==="",l=g(s),u={};for(const w of Object.keys(n))a(w)||(u[w]=n[w]);const _=Object.keys(u);return s.sort!==!1&&_.sort(s.sort),_.map(w=>{const N=n[w];return N===void 0?"":N===null?d(w,s):Array.isArray(N)?N.length===0&&s.arrayFormat==="bracket-separator"?d(w,s)+"[]":N.reduce(l(w),[]).join("&"):d(w,s)+"="+d(N,s)}).filter(w=>w.length>0).join("&")},e.parseUrl=(n,s)=>{s=Object.assign({decode:!0},s);const[a,l]=i(n,"#");return Object.assign({url:a.split("?")[0]||"",query:x(A(n),s)},s&&s.parseFragmentIdentifier&&l?{fragmentIdentifier:S(l,s)}:{})},e.stringifyUrl=(n,s)=>{s=Object.assign({encode:!0,strict:!0,[h]:!0},s);const a=j(n.url).split("?")[0]||"",l=e.extract(n.url),u=e.parse(l,{sort:!1}),_=Object.assign(u,n.query);let w=e.stringify(_,s);w&&(w=`?${w}`);let N=k(n.url);return n.fragmentIdentifier&&(N=`#${s[h]?d(n.fragmentIdentifier,s):n.fragmentIdentifier}`),`${a}${w}${N}`},e.pick=(n,s,a)=>{a=Object.assign({parseFragmentIdentifier:!0,[h]:!1},a);const{url:l,query:u,fragmentIdentifier:_}=e.parseUrl(n,a);return e.stringifyUrl({url:l,query:o(u,s),fragmentIdentifier:_},a)},e.exclude=(n,s,a)=>{const l=Array.isArray(s)?u=>!s.includes(u):(u,_)=>!s(u,_);return e.pick(n,l,a)}})($e);const[ce,Nr]=X([]),[kr,Tr]=X([]),[Fe,pt]=X(new Map),[$t,Ir]=X([]),[Qe,Fr]=X(""),[Er,Or]=X(""),Ee=window.woocommerce_admin_meta_boxes.ajax_url;function Mr(){return ae(this,null,function*(){yield fetch($e.stringifyUrl({url:Ee,query:{action:"aftership_get_settings",t:Date.now()}})).then(e=>e.json()).then(e=>{const t=e.data.couriers,r=new Map(Fe());t.forEach(i=>{r.set(i.slug,i)}),pt(i=>new Map([...i,...r])),Tr(t),Fr(e.data.custom_domain)})})}function we(e){return ae(this,null,function*(){var r;const t=((r=document.querySelector("#aftership_get_nonce"))==null?void 0:r.value)||"";yield fetch($e.stringifyUrl({url:Ee,query:{action:"aftership_get_order_fulfillments",security:t,order_id:e,t:Date.now()}})).then(i=>i.json()).then(i=>{const o=i.data,c=window.get_aftership_couriers(),h=new Map;o.fulfillments.forEach((g,p)=>{g.trackings.forEach(f=>{if(h.has(f.slug))return;const d=c.find(S=>S.slug===f.slug);d&&h.set(f.slug,d)})}),pt(g=>new Map([...g,...h])),Nr(o.fulfillments),Ir(o.line_items),Or(o.number)})})}function Dr(e,t){return ae(this,null,function*(){var h;const r=ce().find(g=>g.id===t.id),i=ce().findIndex(g=>g.id===t.id);let o=[...ce()];r?o.splice(i,1,t):o.push(t);const c=((h=document.querySelector("#aftership_create_nonce"))==null?void 0:h.value)||"";yield fetch($e.stringifyUrl({url:Ee,query:{action:"aftership_save_order_fulfillments",security:c}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,fulfillments:o})})})}function Br(e,t){return ae(this,null,function*(){var i;const r=((i=document.querySelector("#aftership_delete_nonce"))==null?void 0:i.value)||"";yield fetch($e.stringifyUrl({url:Ee,query:{action:"aftership_delete_order_fulfillments",security:r}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,fulfillment_id:t})})})}class wt{static createDefault(){return{tracking_id:"",tracking_number:"",slug:"",additional_fields:{account_number:"",key:"",postal_code:"",ship_date:"",destination_country:"",state:""}}}}class Ke{static createDefault(){return{id:"",trackings:[wt.createDefault()],items:[],created_at:"",updated_at:"",from_tracking:!1}}}var Lr=typeof global=="object"&&global&&global.Object===Object&&global,xt=Lr,Pr=typeof self=="object"&&self&&self.Object===Object&&self,Ur=xt||Pr||Function("return this")(),St=Ur,Rr=St.Symbol,ge=Rr,At=Object.prototype,qr=At.hasOwnProperty,Hr=At.toString,xe=ge?ge.toStringTag:void 0;function zr(e){var t=qr.call(e,xe),r=e[xe];try{e[xe]=void 0;var i=!0}catch(c){}var o=Hr.call(e);return i&&(t?e[xe]=r:delete e[xe]),o}var Vr=Object.prototype,Yr=Vr.toString;function Gr(e){return Yr.call(e)}var Zr="[object Null]",Wr="[object Undefined]",Ct=ge?ge.toStringTag:void 0;function Oe(e){return e==null?e===void 0?Wr:Zr:Ct&&Ct in Object(e)?zr(e):Gr(e)}function Me(e){return e!=null&&typeof e=="object"}var Qr="[object Symbol]";function Kr(e){return typeof e=="symbol"||Me(e)&&Oe(e)==Qr}function Jr(e,t){for(var r=-1,i=e==null?0:e.length,o=Array(i);++r-1&&e%1==0&&e-1&&e%1==0&&e<=gn}function It(e){return e!=null&&Tt(e.length)&&!ln(e)}var hn=Object.prototype;function mn(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||hn;return e===r}function yn(e,t){for(var r=-1,i=Array(e);++ro?0:o+t),r=r>o?o:r,r<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var c=Array(o);++i=i?e:gi(e,t,r)}var mi="\\ud800-\\udfff",yi="\\u0300-\\u036f",bi="\\ufe20-\\ufe2f",vi="\\u20d0-\\u20ff",_i=yi+bi+vi,pi="\\ufe0e\\ufe0f",$i="\\u200d",wi=RegExp("["+$i+mi+_i+pi+"]");function Rt(e){return wi.test(e)}function xi(e){return e.split("")}var qt="\\ud800-\\udfff",Si="\\u0300-\\u036f",Ai="\\ufe20-\\ufe2f",Ci="\\u20d0-\\u20ff",ji=Si+Ai+Ci,Ni="\\ufe0e\\ufe0f",ki="["+qt+"]",et="["+ji+"]",tt="\\ud83c[\\udffb-\\udfff]",Ti="(?:"+et+"|"+tt+")",Ht="[^"+qt+"]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Vt="[\\ud800-\\udbff][\\udc00-\\udfff]",Ii="\\u200d",Yt=Ti+"?",Gt="["+Ni+"]?",Fi="(?:"+Ii+"(?:"+[Ht,zt,Vt].join("|")+")"+Gt+Yt+")*",Ei=Gt+Yt+Fi,Oi="(?:"+[Ht+et+"?",et,zt,Vt,ki].join("|")+")",Mi=RegExp(tt+"(?="+tt+")|"+Oi+Ei,"g");function Di(e){return e.match(Mi)||[]}function Bi(e){return Rt(e)?Di(e):xi(e)}function Li(e){return function(t){t=Ut(t);var r=Rt(t)?Bi(t):void 0,i=r?r[0]:t.charAt(0),o=r?hi(r,1).join(""):t.slice(1);return i[e]()+o}}var Pi=Li("toUpperCase"),Ui=Pi;function Ri(e){return Ui(Ut(e).toLowerCase())}function qi(e){return function(t,r,i){for(var o=-1,c=Object(t),h=i(t),g=h.length;g--;){var p=h[e?g:++o];if(r(c[p],p,c)===!1)break}return t}}var Hi=qi(),zi=Hi;function Vi(e,t){return e&&zi(e,t,di)}function Yi(e,t){return function(r,i){if(r==null)return r;if(!It(r))return e(r,i);for(var o=r.length,c=t?o:-1,h=Object(r);(t?c--:++c');function Xi(e){return st(()=>{e.visible?document.body.style.overflowY="hidden":document.body.style.overflowY="auto"}),G(Ye,{get when(){return e.visible},get children(){const t=Ji.cloneNode(!0),r=t.firstChild,i=r.nextSibling,o=i.firstChild,c=o.firstChild,h=c.nextSibling,g=h.firstChild,p=o.nextSibling,f=p.nextSibling;return Ge(r,"click",e.onCancel,!0),F(c,()=>e.title),Ge(h,"click",e.onCancel,!0),se(g,"src",Ki),F(p,()=>e.children),F(f,G(yt,{get disabled(){return e.disabled},onClick:()=>e.onOk&&e.onOk(),type:"primary",get children(){return e.okText||"Ok"}})),R(d=>{const S=De.container,C=De.backdrop,j=De.modal,k=De.header;return S!==d._v$&&(t.className=d._v$=S),C!==d._v$2&&(r.className=d._v$2=C),j!==d._v$3&&(i.className=d._v$3=j),k!==d._v$4&&(o.className=d._v$4=k),d},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),t}})}ve(["click"]);var rt={root:"_root_b92ih_1",suffix:"_suffix_b92ih_25",action:"_action_b92ih_30"},es="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtdXAtZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNWM1ZjYyIiBkPSJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==",ts="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtZG93bi1maWxsIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGw9IiM1YzVmNjIiIGQ9Ik03LjI0NyAxMS4xNCAyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==";const rs=q("of "),ns=q('');function is(e){let t;const r=gr({step:1},e);function i(p){return r.min!==void 0&&Number(p)r.max}function c(p){!p||i(p)||o(p)||r.onChange(Number(p))}function h(p){if(p)if(i(p)){r.onChange(r.min),t.value=String(r.min);return}else if(o(p)){r.onChange(r.max),t.value=String(r.max);return}else r.onChange(Number(p));else t.value="",r.onChange(void 0)}function g(p){const f=r.value;let d;if(f===void 0)d=p>0?r.min:r.max,r.onChange(d||0);else{d=f+p*r.step;const S=String(d);if(i(S)||o(S))return}r.onChange(d)}return(()=>{const p=ns.cloneNode(!0),f=p.firstChild,d=f.firstChild,S=f.nextSibling,C=S.firstChild,j=C.firstChild,k=C.nextSibling,A=k.firstChild;return d.addEventListener("blur",$=>h($.currentTarget.value)),d.$$input=$=>c($.currentTarget.value),($=>t=$)(d),F(p,G(Ye,{get when(){return r.max!==void 0},get children(){const $=rs.cloneNode(!0);return $.firstChild,$.$$click=()=>t.focus(),F($,()=>r.max,null),R(()=>$.className=rt.suffix),$}}),S),C.$$click=()=>g(1),se(j,"src",es),k.$$click=()=>g(-1),se(A,"src",ts),R($=>{const x=rt.root,n=r.min,s=r.max,a=r.value,l=rt.action;return x!==$._v$&&(p.className=$._v$=x),n!==$._v$2&&se(d,"min",$._v$2=n),s!==$._v$3&&se(d,"max",$._v$3=s),a!==$._v$4&&(d.value=$._v$4=a),l!==$._v$5&&(S.className=$._v$5=l),$},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),p})()}ve(["input","click"]);var Ae={modal:"_modal_1c3qk_1",empty:"_empty_1c3qk_7",items:"_items_1c3qk_13",input:"_input_1c3qk_34"};function ss(e){const t=new Map;return e.forEach(i=>{var o;(o=i.items)==null||o.forEach(c=>{t.has(Number(c.id))?t.set(Number(c.id),(t.get(Number(c.id))||0)+Number(c.quantity)):t.set(Number(c.id),Number(c.quantity))})}),$t().map(i=>{const o=t.get(i.id)||0;return{id:i.id,name:i.name,quantity:i.quantity-o}}).filter(i=>i.quantity>0)}const os=q("ItemsQty."),as=q(""),ls=q(''),cs=q('Update carrier listAdd Tracking Number'),us=q("All items have been fulfilled"),fs=q(""),ds=q("Courier:Tracking number:x"),gs=q(""),hs=q(":"),[Zt,Wt]=X(""),[K,le]=X(Ke.createDefault());function ms(e){const t=20,[r,i]=X(new Map);function o(x,n,s){le(a=>{const l=he({},a);switch(n){case"tracking_number":l.trackings[x()].tracking_number=s;break;case"slug":l.trackings[x()].slug=s,i(u=>{const _=new Map(Object.assign([],u));return _.set(x(),s),_});break}return l})}function c(x,n,s){le(a=>{const l=he({},a);switch(n){case"account_number":l.trackings[x()].additional_fields.account_number=s;break;case"postal_code":l.trackings[x()].additional_fields.postal_code=s;break;case"key":l.trackings[x()].additional_fields.key=s;break;case"destination_country":l.trackings[x()].additional_fields.destination_country=s;break;case"state":l.trackings[x()].additional_fields.state=s;break;case"ship_date":l.trackings[x()].additional_fields.ship_date=s;break}return l})}function h(){le(x=>{const n=he({},x);return n.trackings.push(wt.createDefault()),n})}function g(x){const n=[...K().trackings];n.splice(x(),1),le(tr(he({},K()),{trackings:n}))}function p(x){var s;return(((s=Fe().get(x))==null?void 0:s.required_fields)||[]).map(a=>({key:a.replace(/^tracking_/,""),name:a.replace(/^tracking_/,"").split("_").map(Ri).join(" ")}))}const f=Z(()=>K()?ce().filter(x=>x.id!==K().id):ce()),d=Z(()=>{let x=new Map;for(const n of f())for(let s of n.trackings)x.get(s.slug+s.tracking_number)===void 0&&x.set(s.slug+s.tracking_number,!0);return x}),S=Z(()=>ss(f())),C=Z(()=>{var l;let x=!0,n="";const s=K().items;if(!s||s.length===0)return{isValid:!1,errors:"Required items"};if(x=!1,s.forEach(u=>{u.quantity>0&&(x=!0)}),!x)return{isValid:!1,errors:"Required items"};let a=new Map;for(const u of K().trackings){if(u.slug==="")return{isValid:!1,errors:"Required tracking slug"};if(u.tracking_number==="")return{isValid:!1,errors:"Required tracking number"};if(u.tracking_number.length>256)return{isValid:!1,errors:"Tracking number invalid"};let _=d().get(u.slug+u.tracking_number);if(_)return{isValid:!1,errors:"Tracking number has already been added"};if(_=a.get(u.slug+u.tracking_number),_)return{isValid:!1,errors:"Tracking number has already been added"};_===void 0&&a.set(u.slug+u.tracking_number,!0);let w=((l=Fe().get(u.slug))==null?void 0:l.required_fields)||[];w.length>0&&w.forEach(N=>{let I=N.replace(/^tracking_/,""),L=I.split("_").join(" ");u.additional_fields[I]===""&&(x=!1,n=`Required ${L}`),u.additional_fields[I].length>256&&(x=!1,n=`${L} invalid`)})}return(K().trackings.length>t||K().trackings.length==0)&&(x=!1,n="Tracking number limit exceeded"),{isValid:x,errors:n}}),j=(x,n)=>{le(s=>{var u,_;const a=he({},s);let l=(u=a.items)==null?void 0:u.find(w=>w.id===x);return l!==void 0?l.quantity=n:(_=a.items)==null||_.push({id:x,quantity:n}),a})},k=()=>{e.onOk(K())},A=Z(()=>Zt().toString()+` tracking - order - #${e.orderId}`),$=Z(()=>Zt().toString()=="Edit"?"Save":"Add");return G(Xi,{get title(){return A()},get visible(){return e.visible},get okText(){return $().toString()},onOk:k,get onCancel(){return e.onCancel},get disabled(){return!C().isValid},get children(){const x=cs.cloneNode(!0),n=x.firstChild,s=n.nextSibling,a=s.nextSibling,l=a.nextSibling;return F(x,G(hr,{get fallback(){return(()=>{const u=us.cloneNode(!0);return R(()=>u.className=Ae.empty),u})()},get children(){return G(mr,{get when(){return S().length>0},get children(){const u=os.cloneNode(!0),_=u.firstChild,w=_.nextSibling;return F(w,G(Te,{get each(){return S()},children:N=>(()=>{const I=fs.cloneNode(!0),L=I.firstChild,U=L.nextSibling;return F(L,()=>N.name),F(U,G(is,{min:0,get max(){return N.quantity},step:1,get value(){var z,D;return((D=(z=K().items)==null?void 0:z.find(J=>J.id===N.id))==null?void 0:D.quantity)||0},onChange:z=>j(N.id,z||0)})),I})()})),R(()=>u.className=Ae.items),u}})}}),n),F(x,G(Ye,{get when(){return!C().isValid},get children(){return[(()=>{const u=as.cloneNode(!0);return u.style.setProperty("margin","20px 0"),u})(),(()=>{const u=ls.cloneNode(!0);return F(u,()=>C().errors),u})()]}}),n),n.style.setProperty("margin","20px 0"),s.style.setProperty("margin","10px 0"),F(x,G(Te,{get each(){return K().trackings},children:(u,_)=>(()=>{const w=ds.cloneNode(!0),N=w.firstChild,I=N.firstChild,L=I.firstChild,U=L.nextSibling,z=I.nextSibling,D=z.firstChild,J=D.nextSibling,oe=z.nextSibling,ne=N.nextSibling;return I.style.setProperty("marginLeft","10px"),U.addEventListener("change",T=>{o(_,"slug",T.currentTarget.value)}),F(U,G(Te,{get each(){return kr()},children:T=>(()=>{const W=gs.cloneNode(!0);return F(W,()=>T.name||T.other_name),R(()=>W.value=T.slug),W})()})),J.$$input=T=>o(_,"tracking_number",T.currentTarget.value),oe.$$click=()=>g(_),F(ne,G(Te,{get each(){var T;return p((T=r().get(_()))!=null?T:"")},children:T=>(()=>{const W=hs.cloneNode(!0),ie=W.firstChild,b=ie.firstChild,y=b.nextSibling;return F(ie,()=>T.name,b),y.$$input=m=>c(_,T.key,m.currentTarget.value),R(m=>{const v=T.key==="ship_date"?"date":"text",Xt=u.additional_fields[T.key];return v!==m._v$7&&se(y,"type",m._v$7=v),Xt!==m._v$8&&(y.value=m._v$8=Xt),m},{_v$7:void 0,_v$8:void 0}),W})()})),R(T=>{const W=Ae.input,ie=u==null?void 0:u.slug,b=u.tracking_number,y=Ae.input;return W!==T._v$3&&(N.className=T._v$3=W),ie!==T._v$4&&(U.value=T._v$4=ie),b!==T._v$5&&(J.value=T._v$5=b),y!==T._v$6&&(ne.className=T._v$6=y),T},{_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),w})()}),a),l.$$click=h,R(u=>{const _=Ae.modal,w=K().trackings.length>=t;return _!==u._v$&&(x.className=u._v$=_),w!==u._v$2&&(l.disabled=u._v$2=w),u},{_v$:void 0,_v$2:void 0}),x}})}ve(["click","input"]);var Qt={exports:{}},Kt={exports:{}};(function(e,t){(function(r,i){e.exports=i()})(pe,function(){var r=r||function(i,o){var c;if(typeof window!="undefined"&&window.crypto&&(c=window.crypto),typeof self!="undefined"&&self.crypto&&(c=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(c=globalThis.crypto),!c&&typeof window!="undefined"&&window.msCrypto&&(c=window.msCrypto),!c&&typeof pe!="undefined"&&pe.crypto&&(c=pe.crypto),!c&&typeof $r=="function")try{c=require("crypto")}catch(n){}var h=function(){if(c){if(typeof c.getRandomValues=="function")try{return c.getRandomValues(new Uint32Array(1))[0]}catch(n){}if(typeof c.randomBytes=="function")try{return c.randomBytes(4).readInt32LE()}catch(n){}}throw new Error("Native crypto module could not be used to get secure random number.")},g=Object.create||function(){function n(){}return function(s){var a;return n.prototype=s,a=new n,n.prototype=null,a}}(),p={},f=p.lib={},d=f.Base=function(){return{extend:function(n){var s=g(this);return n&&s.mixIn(n),(!s.hasOwnProperty("init")||this.init===s.init)&&(s.init=function(){s.$super.init.apply(this,arguments)}),s.init.prototype=s,s.$super=this,s},create:function(){var n=this.extend();return n.init.apply(n,arguments),n},init:function(){},mixIn:function(n){for(var s in n)n.hasOwnProperty(s)&&(this[s]=n[s]);n.hasOwnProperty("toString")&&(this.toString=n.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),S=f.WordArray=d.extend({init:function(n,s){n=this.words=n||[],s!=o?this.sigBytes=s:this.sigBytes=n.length*4},toString:function(n){return(n||j).stringify(this)},concat:function(n){var s=this.words,a=n.words,l=this.sigBytes,u=n.sigBytes;if(this.clamp(),l%4)for(var _=0;_>>2]>>>24-_%4*8&255;s[l+_>>>2]|=w<<24-(l+_)%4*8}else for(var N=0;N>>2]=a[N>>>2];return this.sigBytes+=u,this},clamp:function(){var n=this.words,s=this.sigBytes;n[s>>>2]&=4294967295<<32-s%4*8,n.length=i.ceil(s/4)},clone:function(){var n=d.clone.call(this);return n.words=this.words.slice(0),n},random:function(n){for(var s=[],a=0;a>>2]>>>24-u%4*8&255;l.push((_>>>4).toString(16)),l.push((_&15).toString(16))}return l.join("")},parse:function(n){for(var s=n.length,a=[],l=0;l>>3]|=parseInt(n.substr(l,2),16)<<24-l%8*4;return new S.init(a,s/2)}},k=C.Latin1={stringify:function(n){for(var s=n.words,a=n.sigBytes,l=[],u=0;u>>2]>>>24-u%4*8&255;l.push(String.fromCharCode(_))}return l.join("")},parse:function(n){for(var s=n.length,a=[],l=0;l>>2]|=(n.charCodeAt(l)&255)<<24-l%4*8;return new S.init(a,s)}},A=C.Utf8={stringify:function(n){try{return decodeURIComponent(escape(k.stringify(n)))}catch(s){throw new Error("Malformed UTF-8 data")}},parse:function(n){return k.parse(unescape(encodeURIComponent(n)))}},$=f.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new S.init,this._nDataBytes=0},_append:function(n){typeof n=="string"&&(n=A.parse(n)),this._data.concat(n),this._nDataBytes+=n.sigBytes},_process:function(n){var s,a=this._data,l=a.words,u=a.sigBytes,_=this.blockSize,w=_*4,N=u/w;n?N=i.ceil(N):N=i.max((N|0)-this._minBufferSize,0);var I=N*_,L=i.min(I*4,u);if(I){for(var U=0;U>>24)&16711935|(s<<24|s>>>8)&4278255360}var a=this._hash.words,l=A[$+0],u=A[$+1],_=A[$+2],w=A[$+3],N=A[$+4],I=A[$+5],L=A[$+6],U=A[$+7],z=A[$+8],D=A[$+9],J=A[$+10],oe=A[$+11],ne=A[$+12],T=A[$+13],W=A[$+14],ie=A[$+15],b=a[0],y=a[1],m=a[2],v=a[3];b=S(b,y,m,v,l,7,f[0]),v=S(v,b,y,m,u,12,f[1]),m=S(m,v,b,y,_,17,f[2]),y=S(y,m,v,b,w,22,f[3]),b=S(b,y,m,v,N,7,f[4]),v=S(v,b,y,m,I,12,f[5]),m=S(m,v,b,y,L,17,f[6]),y=S(y,m,v,b,U,22,f[7]),b=S(b,y,m,v,z,7,f[8]),v=S(v,b,y,m,D,12,f[9]),m=S(m,v,b,y,J,17,f[10]),y=S(y,m,v,b,oe,22,f[11]),b=S(b,y,m,v,ne,7,f[12]),v=S(v,b,y,m,T,12,f[13]),m=S(m,v,b,y,W,17,f[14]),y=S(y,m,v,b,ie,22,f[15]),b=C(b,y,m,v,u,5,f[16]),v=C(v,b,y,m,L,9,f[17]),m=C(m,v,b,y,oe,14,f[18]),y=C(y,m,v,b,l,20,f[19]),b=C(b,y,m,v,I,5,f[20]),v=C(v,b,y,m,J,9,f[21]),m=C(m,v,b,y,ie,14,f[22]),y=C(y,m,v,b,N,20,f[23]),b=C(b,y,m,v,D,5,f[24]),v=C(v,b,y,m,W,9,f[25]),m=C(m,v,b,y,w,14,f[26]),y=C(y,m,v,b,z,20,f[27]),b=C(b,y,m,v,T,5,f[28]),v=C(v,b,y,m,_,9,f[29]),m=C(m,v,b,y,U,14,f[30]),y=C(y,m,v,b,ne,20,f[31]),b=j(b,y,m,v,I,4,f[32]),v=j(v,b,y,m,z,11,f[33]),m=j(m,v,b,y,oe,16,f[34]),y=j(y,m,v,b,W,23,f[35]),b=j(b,y,m,v,u,4,f[36]),v=j(v,b,y,m,N,11,f[37]),m=j(m,v,b,y,U,16,f[38]),y=j(y,m,v,b,J,23,f[39]),b=j(b,y,m,v,T,4,f[40]),v=j(v,b,y,m,l,11,f[41]),m=j(m,v,b,y,w,16,f[42]),y=j(y,m,v,b,L,23,f[43]),b=j(b,y,m,v,D,4,f[44]),v=j(v,b,y,m,ne,11,f[45]),m=j(m,v,b,y,ie,16,f[46]),y=j(y,m,v,b,_,23,f[47]),b=k(b,y,m,v,l,6,f[48]),v=k(v,b,y,m,U,10,f[49]),m=k(m,v,b,y,W,15,f[50]),y=k(y,m,v,b,I,21,f[51]),b=k(b,y,m,v,ne,6,f[52]),v=k(v,b,y,m,w,10,f[53]),m=k(m,v,b,y,J,15,f[54]),y=k(y,m,v,b,u,21,f[55]),b=k(b,y,m,v,z,6,f[56]),v=k(v,b,y,m,ie,10,f[57]),m=k(m,v,b,y,L,15,f[58]),y=k(y,m,v,b,T,21,f[59]),b=k(b,y,m,v,N,6,f[60]),v=k(v,b,y,m,oe,10,f[61]),m=k(m,v,b,y,_,15,f[62]),y=k(y,m,v,b,D,21,f[63]),a[0]=a[0]+b|0,a[1]=a[1]+y|0,a[2]=a[2]+m|0,a[3]=a[3]+v|0},_doFinalize:function(){var A=this._data,$=A.words,x=this._nDataBytes*8,n=A.sigBytes*8;$[n>>>5]|=128<<24-n%32;var s=i.floor(x/4294967296),a=x;$[(n+64>>>9<<4)+15]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,$[(n+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,A.sigBytes=($.length+1)*4,this._process();for(var l=this._hash,u=l.words,_=0;_<4;_++){var w=u[_];u[_]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}return l},clone:function(){var A=g.clone.call(this);return A._hash=this._hash.clone(),A}});function S(A,$,x,n,s,a,l){var u=A+($&x|~$&n)+s+l;return(u<>>32-a)+$}function C(A,$,x,n,s,a,l){var u=A+($&n|x&~n)+s+l;return(u<>>32-a)+$}function j(A,$,x,n,s,a,l){var u=A+($^x^n)+s+l;return(u<>>32-a)+$}function k(A,$,x,n,s,a,l){var u=A+(x^($|~n))+s+l;return(u<>>32-a)+$}o.MD5=g._createHelper(d),o.HmacMD5=g._createHmacHelper(d)}(Math),r.MD5})}(Qt);for(var ys=Qt.exports,H=[],nt=0;nt<256;++nt)H.push((nt+256).toString(16).slice(1));function bs(e,t=0){return(H[e[t+0]]+H[e[t+1]]+H[e[t+2]]+H[e[t+3]]+"-"+H[e[t+4]]+H[e[t+5]]+"-"+H[e[t+6]]+H[e[t+7]]+"-"+H[e[t+8]]+H[e[t+9]]+"-"+H[e[t+10]]+H[e[t+11]]+H[e[t+12]]+H[e[t+13]]+H[e[t+14]]+H[e[t+15]]).toLowerCase()}var Be,vs=new Uint8Array(16);function _s(){if(!Be&&(Be=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Be))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Be(vs)}var ps=typeof crypto!="undefined"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Jt={randomUUID:ps};function $s(e,t,r){if(Jt.randomUUID&&!t&&!e)return Jt.randomUUID();e=e||{};var i=e.random||(e.rng||_s)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=i[o];return t}return bs(i)}const ws=q(""),xs=q("Shipment EditDelete"),Ss=q(" x "),As=q('Tracking '),Cs=()=>{const[e,t]=X(!1),r=window.woocommerce_admin_meta_boxes.post_id;ir(()=>{we(r),Mr()});const i=p=>ae(this,null,function*(){const f=new Date().toISOString().replace(/\.\d+(?=Z$)/,"");p.id===""?(p.created_at=f,p.updated_at=f,p.id=$s()):p.updated_at=f,Qi(p.trackings||[],d=>{d.tracking_id===""&&(d.tracking_id=ys(`${d.slug}-${d.tracking_number}`).toString())}),yield Dr(r,p),t(!1),le(Ke.createDefault()),yield we(r)}),o=()=>{t(!1),le(Ke.createDefault())},c=p=>ae(this,null,function*(){yield Br(r,p),yield we(r)}),h=Z(()=>{const p=new Map;return ce().forEach(f=>{const S=(f.items||[]).map((C,j)=>{const k=Number(C.id),A=$t().find($=>k===$.id);return{name:(A==null?void 0:A.name)||String(C.id),quantity:C.quantity}});p.set(String(f.id),S)}),p}),g=(p,f)=>/^https?:\/\//.test(Qe())?`${Qe()}/${f}/${p}`:`https://${Qe()}/${f}/${p}`;return(()=>{const p=ws.cloneNode(!0),f=p.firstChild,d=f.nextSibling;return F(f,()=>ce().map((S,C)=>(()=>{const j=xs.cloneNode(!0),k=j.firstChild,A=k.firstChild;A.firstChild;const $=A.nextSibling,x=$.firstChild,n=x.nextSibling,s=k.nextSibling;return F(A,C+1,null),x.$$click=()=>ae(this,null,function*(){yield we(r),le(S),Wt("Edit"),t(!0)}),n.$$click=()=>c(S.id),F(j,()=>(h().get(S.id)||[]).map((a,l)=>(()=>{const u=Ss.cloneNode(!0),_=u.firstChild,w=_.firstChild,N=w.nextSibling;return N.nextSibling,F(_,()=>a.name,w),F(_,()=>a.quantity,N),R(I=>{const L=de.item,U=a.name;return L!==I._v$3&&(u.className=I._v$3=L),U!==I._v$4&&se(_,"title",I._v$4=U),I},{_v$3:void 0,_v$4:void 0}),u})()),s),F(j,()=>S.trackings.map((a,l)=>(()=>{const u=As.cloneNode(!0),_=u.firstChild;_.firstChild;const w=_.nextSibling,N=w.firstChild,I=N.firstChild,L=I.firstChild,U=N.nextSibling,z=U.firstChild;return F(_,l+1,null),F(I,()=>{var D;return((D=Fe().get(a.slug))==null?void 0:D.name)||a.slug},L),F(z,()=>a.tracking_number),R(D=>{const J=de.content,oe=de.number,ne=a.tracking_number,T=g(a.tracking_number,a.slug);return J!==D._v$5&&(u.className=D._v$5=J),oe!==D._v$6&&(w.className=D._v$6=oe),ne!==D._v$7&&se(z,"title",D._v$7=ne),T!==D._v$8&&se(z,"href",D._v$8=T),D},{_v$5:void 0,_v$6:void 0,_v$7:void 0,_v$8:void 0}),u})()),null),R(a=>{const l=de.tracking,u=de.title;return l!==a._v$&&(j.className=a._v$=l),u!==a._v$2&&(k.className=a._v$2=u),a},{_v$:void 0,_v$2:void 0}),j})())),d.style.setProperty("padding","12px"),F(d,G(yt,{onClick:()=>ae(this,null,function*(){yield we(r),Wt("Add"),t(!0)}),style:{width:"100%"},children:"Add Tracking Number"})),F(p,G(ms,{get visible(){return e()},onCancel:o,onOk:i,get orderId(){return Er()}}),null),R(()=>p.className=de.root),p})()};ve(["click"]);var Ks="";customElements.define("aftership-meta-box",class extends HTMLElement{constructor(){super();rr(this,"initialized",!1);this.attachShadow({mode:"open"})}connectedCallback(){if(!!this.shadowRoot&&!this.initialized){this.initialized=!0;{const t=document.currentScript,r=document.createElement("link");r.rel="stylesheet",r.href=t.src.replace(/\/index\.js\?/,"/style.css?"),this.shadowRoot.appendChild(r)}yr(()=>G(Cs,{}),this.shadowRoot)}}})})(); diff --git a/assets/frontendv2/dist/metabox/style.css b/assets/frontendv2/dist/metabox/style.css new file mode 100644 index 0000000..404fe0a --- /dev/null +++ b/assets/frontendv2/dist/metabox/style.css @@ -0,0 +1 @@ +._button_1dv9o_1{border:1px solid #ccc;border-radius:3px;background-color:#f7f7f7;color:#555;font-size:13px;min-height:30px;padding:0 10px;cursor:pointer}._button_1dv9o_1[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;cursor:not-allowed}._primary_1dv9o_18{border-color:#2271b1;background:#2271b1;color:#fff}._primary_1dv9o_18:hover{background:#135e96;border-color:#135e96}._root_nkd9j_1{position:relative}._loading_nkd9j_5{position:absolute;height:100%;width:100%;top:0;left:0;background:#fff;opacity:.6;pointer-events:none;display:flex;align-items:center;justify-content:center}._tracking_nkd9j_19{padding:16px 12px;border-bottom:1px solid #eeeeee}._tracking_nkd9j_19 ._title_nkd9j_23{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:#5f5f5f}._tracking_nkd9j_19 ._title_nkd9j_23 a{font-size:12px}._tracking_nkd9j_19 ._title_nkd9j_23 a:nth-child(2){color:#a00;margin-left:12px}._content_nkd9j_38{background-color:#f6f6f6;padding:12px;font-size:14px;line-height:1.43}._number_nkd9j_45{margin-bottom:2px}._number_nkd9j_45>div:nth-child(1){flex-shrink:0;word-break:break-all}._number_nkd9j_45>div:nth-child(1) strong{font-weight:600;color:#3c434a}._number_nkd9j_45>div:nth-child(2){text-overflow:ellipsis;overflow:hidden;word-break:keep-all}._number_nkd9j_45>div:nth-child(2) a{text-decoration:none}._item_nkd9j_65{display:flex;flex-wrap:nowrap;color:#404040}._item_nkd9j_65 div:nth-child(1){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._item_nkd9j_65 div:nth-child(2){flex-shrink:0}._container_1s8av_1{position:fixed;top:0;right:0;z-index:99999}._backdrop_1s8av_8{width:100vw;height:100vh;background-color:#000;opacity:.7}._modal_1s8av_15{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;width:500px}._modal_1s8av_15 header{background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}._modal_1s8av_15 header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}._modal_1s8av_15 header div{position:absolute;top:0;right:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-left:1px solid #ddd;color:#666}._modal_1s8av_15 header div:hover{background:#ddd;border-color:#ccc}._modal_1s8av_15 header img{height:32px;width:32px}._modal_1s8av_15 footer{padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px #0000001a;display:flex;justify-content:flex-end}._root_b92ih_1{display:flex;align-items:center;justify-content:space-between;border:1px solid #8c8f94;border-radius:4px;height:30px;overflow:hidden}._root_b92ih_1 input{line-height:26px;border:0;padding-left:8px}._root_b92ih_1 input:focus{outline:0}._root_b92ih_1 input[type=number]::-webkit-outer-spin-button,._root_b92ih_1 input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}._root_b92ih_1 input[type=number]{appearance:textfield}._root_b92ih_1 ._suffix_b92ih_25{color:#6c7075;margin-right:8px;cursor:default}._root_b92ih_1 ._action_b92ih_30{width:22px;padding:2px;height:100%;display:grid;row-gap:2px}._root_b92ih_1 ._action_b92ih_30 div{border-radius:2px;background-color:#e4e5e7;display:flex;align-items:center;justify-content:center;cursor:pointer}._root_b92ih_1 ._action_b92ih_30 div:hover{background-color:#c9cbcf}._root_b92ih_1 ._action_b92ih_30 div:active{background-color:#b3b5b9}._root_b92ih_1 ._action_b92ih_30 div img{width:10px;height:10px;user-select:none}._modal_1c3qk_1{padding:20px;max-height:70vh;overflow:auto}._empty_1c3qk_7{text-align:center;font-size:16px;color:#999c9f}._items_1c3qk_13{display:grid;text-align:left;grid-template-columns:1fr auto;column-gap:10px;row-gap:6px;align-items:center}._items_1c3qk_13 thead,._items_1c3qk_13 tbody,._items_1c3qk_13 tr{display:contents}._items_1c3qk_13 th:last-child,._items_1c3qk_13 td:last-child{text-align:right}._items_1c3qk_13 th{margin-bottom:8px}._input_1c3qk_34{color:#3c434a;display:flex;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:10px}._input_1c3qk_34 label{display:flex;flex-direction:column}._input_1c3qk_34 a{font-size:12px;text-decoration-line:underline;margin-left:2px;width:fit-content}._input_1c3qk_34 label{margin-left:2px}._input_1c3qk_34 select{border:1px solid #8c8f94;border-radius:4px;min-height:30px;font-size:14px;line-height:28px;padding:0 8px}._input_1c3qk_34 input{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0 8px}._input_1c3qk_34 button{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0;min-height:30px;width:25px;align-items:center;justify-content:center;margin-top:14px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:host{all:initial;font-family:inherit;font-size:inherit}*{box-sizing:border-box}a{cursor:pointer;color:#2271b1;transition:color .5s ease-in-out}a:hover{color:#135e96} diff --git a/assets/frontendv2/dist/orders/index.js b/assets/frontendv2/dist/orders/index.js new file mode 100644 index 0000000..951f79d --- /dev/null +++ b/assets/frontendv2/dist/orders/index.js @@ -0,0 +1 @@ +var _s=Object.defineProperty,ws=Object.defineProperties;var $s=Object.getOwnPropertyDescriptors;var Yt=Object.getOwnPropertySymbols;var xs=Object.prototype.hasOwnProperty,Ss=Object.prototype.propertyIsEnumerable;var et=(P,O,F)=>O in P?_s(P,O,{enumerable:!0,configurable:!0,writable:!0,value:F}):P[O]=F,fe=(P,O)=>{for(var F in O||(O={}))xs.call(O,F)&&et(P,F,O[F]);if(Yt)for(var F of Yt(O))Ss.call(O,F)&&et(P,F,O[F]);return P},Gt=(P,O)=>ws(P,$s(O));var Zt=(P,O,F)=>(et(P,typeof O!="symbol"?O+"":O,F),F);var ie=(P,O,F)=>new Promise((xe,X)=>{var ee=I=>{try{ae(F.next(I))}catch(G){X(G)}},de=I=>{try{ae(F.throw(I))}catch(G){X(G)}},ae=I=>I.done?xe(I.value):Promise.resolve(I.value).then(ee,de);ae((F=F.apply(P,O)).next())});(function(){"use strict";const P=(e,t)=>e===t,O=Symbol("solid-proxy"),F={equals:P};let xe=it;const X={},ee=1,de=2,ae={owned:null,cleanups:null,context:null,owner:null};var I=null;let G=null,M=null,ge=null,U=null,te=null,Me=0;function Se(e,t){t&&(I=t);const r=M,i=I,a=e.length===0?ae:{owned:null,cleanups:null,context:null,owner:i};I=a,M=null;let l;try{Be(()=>l=e(()=>Ue(a)),!0)}finally{M=r,I=i}return l}function J(e,t){t=t?Object.assign({},F,t):F;const r={value:e,observers:null,observerSlots:null,pending:X,comparator:t.equals||void 0};return[nt.bind(r),i=>(typeof i=="function"&&(G&&G.running&&G.sources.has(r)?i=i(r.pending!==X?r.pending:r.tValue):i=i(r.pending!==X?r.pending:r.value)),De(r,i))]}function H(e,t,r){const i=Le(e,t,!1,ee);Ae(i)}function tt(e,t,r){xe=er;const i=Le(e,t,!1,ee);i.user=!0,te&&te.push(i)}function V(e,t,r){r=r?Object.assign({},F,r):F;const i=Le(e,t,!0,0);return i.pending=X,i.observers=null,i.observerSlots=null,i.comparator=r.equals||void 0,Ae(i),nt.bind(i)}function Wt(e){if(ge)return e();let t;const r=ge=[];try{t=e()}finally{ge=null}return Be(()=>{for(let i=0;ioe(e))}function rt(e){return I===null||(I.cleanups===null?I.cleanups=[e]:I.cleanups.push(e)),e}function Jt(e){const t=V(e);return V(()=>Re(t()))}function nt(){const e=G;if(this.sources&&(this.state||e)){const t=U;U=null,this.state===ee||e?Ae(this):Pe(this),U=t}if(M){const t=this.observers?this.observers.length:0;M.sources?(M.sources.push(this),M.sourceSlots.push(t)):(M.sources=[this],M.sourceSlots=[t]),this.observers?(this.observers.push(M),this.observerSlots.push(M.sources.length-1)):(this.observers=[M],this.observerSlots=[M.sources.length-1])}return this.value}function De(e,t,r){if(e.comparator&&e.comparator(e.value,t))return t;if(ge)return e.pending===X&&ge.push(e),e.pending=t,t;let i=!1;return e.value=t,e.observers&&e.observers.length&&Be(()=>{for(let a=0;a1e6)throw U=[],new Error},!1),t}function Ae(e){if(!e.fn)return;Ue(e);const t=I,r=M,i=Me;M=I=e,Kt(e,e.value,i),M=r,I=t}function Kt(e,t,r){let i;try{i=e.fn(t)}catch(a){at(a)}(!e.updatedAt||e.updatedAt<=r)&&(e.observers&&e.observers.length?De(e,i):e.value=i,e.updatedAt=r)}function Le(e,t,r,i=ee,a){const l={fn:e,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:I,context:null,pure:r};return I===null||I!==ae&&(I.owned?I.owned.push(l):I.owned=[l]),l}function he(e){const t=G;if(e.state!==ee)return e.state=0;if(e.suspense&&oe(e.suspense.inFallback))return e.suspense.effects.push(e);const r=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;i--)if(e=r[i],e.state===ee||t)Ae(e);else if(e.state===de||t){const a=U;U=null,Pe(e),U=a}}function Be(e,t){if(U)return e();let r=!1;t||(U=[]),te?r=!0:te=[],Me++;try{e()}catch(i){at(i)}finally{Xt(r)}}function Xt(e){U&&(it(U),U=null),!e&&(te.length?Wt(()=>{xe(te),te=null}):te=null)}function it(e){for(let t=0;t1?[]:null;return rt(()=>ot(l)),()=>{let $=e()||[],u,f;return oe(()=>{let C=$.length,k,w,p,y,T,n,s,o,c;if(C===0)h!==0&&(ot(l),l=[],i=[],a=[],h=0,g&&(g=[])),r.fallback&&(i=[tr],a[0]=Se(d=>(l[0]=d,r.fallback())),h=1);else if(h===0){for(a=new Array(C),f=0;f=n&&o>=n&&i[s]===$[o];s--,o--)p[o]=a[s],y[o]=l[s],g&&(T[o]=g[s]);for(k=new Map,w=new Array(o+1),f=o;f>=n;f--)c=$[f],u=k.get(c),w[f]=u===void 0?-1:u,k.set(c,f);for(u=n;u<=s;u++)c=i[u],f=k.get(c),f!==void 0&&f!==-1?(p[f]=a[u],y[f]=l[u],g&&(T[f]=g[u]),f=w[f],k.set(c,f)):l[u]();for(f=n;fe(t))}function Ce(){return!0}const nr={get(e,t,r){return t===O?r:e.get(t)},has(e,t){return e.has(t)},set:Ce,deleteProperty:Ce,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Ce,deleteProperty:Ce}},ownKeys(e){return e.keys()}};function qe(e){return typeof e=="function"?e():e}function ir(...e){return new Proxy({get(t){for(let r=e.length-1;r>=0;r--){const i=qe(e[r])[t];if(i!==void 0)return i}},has(t){for(let r=e.length-1;r>=0;r--)if(t in qe(e[r]))return!0;return!1},keys(){const t=[];for(let r=0;re.fallback};return V(rr(()=>e.each,e.children,t||void 0))}function He(e){let t=!1;const r=V(()=>e.when,void 0,{equals:(i,a)=>t?i===a:!i==!a});return V(()=>{const i=r();if(i){const a=e.children;return(t=typeof a=="function"&&a.length>0)?oe(()=>a(i)):a}return e.fallback})}function sr(e){let t=!1;const r=Jt(()=>e.children),i=V(()=>{let a=r();Array.isArray(a)||(a=[a]);for(let l=0;la&&a[0]===l[0]&&(t?a[1]===l[1]:!a[1]==!l[1])&&a[2]===l[2]});return V(()=>{const[a,l,h]=i();if(a<0)return e.fallback;const g=h.children;return(t=typeof g=="function"&&g.length>0)?oe(()=>g(l)):g})}function ar(e){return e}function lt(e,t,r){let i=r.length,a=t.length,l=i,h=0,g=0,$=t[a-1].nextSibling,u=null;for(;hf-g){const w=t[h];for(;g{i=a,L(t,e(),t.firstChild?null:void 0,r)}),()=>{i(),t.textContent=""}}function z(e,t,r){const i=document.createElement("template");i.innerHTML=e;let a=i.content.firstChild;return r&&(a=a.firstChild),a}function ke(e,t=window.document){const r=t[ct]||(t[ct]=new Set);for(let i=0,a=e.length;ir[0](r[1],a)):e.addEventListener(t,r)}function lr(e,t,r={}){const i=Object.keys(t||{}),a=Object.keys(r);let l,h;for(l=0,h=a.length;lje(e,t(),a,r),i)}function ut(e,t,r){const i=t.trim().split(/\s+/);for(let a=0,l=i.length;a{let g=t();for(;typeof g=="function";)g=g();r=je(e,g,r,i)}),()=>r;if(Array.isArray(t)){const g=[];if(ze(g,t,a))return H(()=>r=je(e,g,r,i,!0)),()=>r;if(g.length===0){if(r=ye(e,r,i),h)return r}else Array.isArray(r)?r.length===0?ft(e,g,i):lt(e,r,g):r==null||r===""?ft(e,g):lt(e,h&&r||[e.firstChild],g);r=g}else if(t instanceof Node){if(Array.isArray(r)){if(h)return r=ye(e,r,i,t);ye(e,r,null,t)}else r==null||r===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);r=t}}return r}function ze(e,t,r){let i=!1;for(let a=0,l=t.length;a=0;h--){const g=t[h];if(a!==g){const $=g.parentNode===e;!l&&!h?$?e.replaceChild(a,g):e.insertBefore(a,r):$&&e.removeChild(g)}else l=!0}}else e.insertBefore(a,r);return[a]}var As="",me=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function fr(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var be={},dr=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),dt="%[a-f0-9]{2}",gt=new RegExp(dt,"gi"),ht=new RegExp("("+dt+")+","gi");function Ye(e,t){try{return decodeURIComponent(e.join(""))}catch(a){}if(e.length===1)return e;t=t||1;var r=e.slice(0,t),i=e.slice(t);return Array.prototype.concat.call([],Ye(r),Ye(i))}function gr(e){try{return decodeURIComponent(e)}catch(i){for(var t=e.match(gt),r=1;r{if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(t==="")return[e];const r=e.indexOf(t);return r===-1?[e]:[e.slice(0,r),e.slice(r+t.length)]},br=function(e,t){for(var r={},i=Object.keys(e),a=Array.isArray(t),l=0;ln==null,h=Symbol("encodeFragmentIdentifier");function g(n){switch(n.arrayFormat){case"index":return s=>(o,c)=>{const d=o.length;return c===void 0||n.skipNull&&c===null||n.skipEmptyString&&c===""?o:c===null?[...o,[f(s,n),"[",d,"]"].join("")]:[...o,[f(s,n),"[",f(d,n),"]=",f(c,n)].join("")]};case"bracket":return s=>(o,c)=>c===void 0||n.skipNull&&c===null||n.skipEmptyString&&c===""?o:c===null?[...o,[f(s,n),"[]"].join("")]:[...o,[f(s,n),"[]=",f(c,n)].join("")];case"colon-list-separator":return s=>(o,c)=>c===void 0||n.skipNull&&c===null||n.skipEmptyString&&c===""?o:c===null?[...o,[f(s,n),":list="].join("")]:[...o,[f(s,n),":list=",f(c,n)].join("")];case"comma":case"separator":case"bracket-separator":{const s=n.arrayFormat==="bracket-separator"?"[]=":"=";return o=>(c,d)=>d===void 0||n.skipNull&&d===null||n.skipEmptyString&&d===""?c:(d=d===null?"":d,c.length===0?[[f(o,n),s,f(d,n)].join("")]:[[c,f(d,n)].join(n.arrayFormatSeparator)])}default:return s=>(o,c)=>c===void 0||n.skipNull&&c===null||n.skipEmptyString&&c===""?o:c===null?[...o,f(s,n)]:[...o,[f(s,n),"=",f(c,n)].join("")]}}function $(n){let s;switch(n.arrayFormat){case"index":return(o,c,d)=>{if(s=/\[(\d*)\]$/.exec(o),o=o.replace(/\[\d*\]$/,""),!s){d[o]=c;return}d[o]===void 0&&(d[o]={}),d[o][s[1]]=c};case"bracket":return(o,c,d)=>{if(s=/(\[\])$/.exec(o),o=o.replace(/\[\]$/,""),!s){d[o]=c;return}if(d[o]===void 0){d[o]=[c];return}d[o]=[].concat(d[o],c)};case"colon-list-separator":return(o,c,d)=>{if(s=/(:list)$/.exec(o),o=o.replace(/:list$/,""),!s){d[o]=c;return}if(d[o]===void 0){d[o]=[c];return}d[o]=[].concat(d[o],c)};case"comma":case"separator":return(o,c,d)=>{const x=typeof c=="string"&&c.includes(n.arrayFormatSeparator),S=typeof c=="string"&&!x&&A(c,n).includes(n.arrayFormatSeparator);c=S?A(c,n):c;const j=x||S?c.split(n.arrayFormatSeparator).map(D=>A(D,n)):c===null?c:A(c,n);d[o]=j};case"bracket-separator":return(o,c,d)=>{const x=/(\[\])$/.test(o);if(o=o.replace(/\[\]$/,""),!x){d[o]=c&&A(c,n);return}const S=c===null?[]:c.split(n.arrayFormatSeparator).map(j=>A(j,n));if(d[o]===void 0){d[o]=S;return}d[o]=[].concat(d[o],S)};default:return(o,c,d)=>{if(d[o]===void 0){d[o]=c;return}d[o]=[].concat(d[o],c)}}}function u(n){if(typeof n!="string"||n.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function f(n,s){return s.encode?s.strict?t(n):encodeURIComponent(n):n}function A(n,s){return s.decode?r(n):n}function C(n){return Array.isArray(n)?n.sort():typeof n=="object"?C(Object.keys(n)).sort((s,o)=>Number(s)-Number(o)).map(s=>n[s]):n}function k(n){const s=n.indexOf("#");return s!==-1&&(n=n.slice(0,s)),n}function w(n){let s="";const o=n.indexOf("#");return o!==-1&&(s=n.slice(o)),s}function p(n){n=k(n);const s=n.indexOf("?");return s===-1?"":n.slice(s+1)}function y(n,s){return s.parseNumbers&&!Number.isNaN(Number(n))&&typeof n=="string"&&n.trim()!==""?n=Number(n):s.parseBooleans&&n!==null&&(n.toLowerCase()==="true"||n.toLowerCase()==="false")&&(n=n.toLowerCase()==="true"),n}function T(n,s){s=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},s),u(s.arrayFormatSeparator);const o=$(s),c=Object.create(null);if(typeof n!="string"||(n=n.trim().replace(/^[?#&]/,""),!n))return c;for(const d of n.split("&")){if(d==="")continue;let[x,S]=i(s.decode?d.replace(/\+/g," "):d,"=");S=S===void 0?null:["comma","separator","bracket-separator"].includes(s.arrayFormat)?S:A(S,s),o(A(x,s),S,c)}for(const d of Object.keys(c)){const x=c[d];if(typeof x=="object"&&x!==null)for(const S of Object.keys(x))x[S]=y(x[S],s);else c[d]=y(x,s)}return s.sort===!1?c:(s.sort===!0?Object.keys(c).sort():Object.keys(c).sort(s.sort)).reduce((d,x)=>{const S=c[x];return Boolean(S)&&typeof S=="object"&&!Array.isArray(S)?d[x]=C(S):d[x]=S,d},Object.create(null))}e.extract=p,e.parse=T,e.stringify=(n,s)=>{if(!n)return"";s=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},s),u(s.arrayFormatSeparator);const o=S=>s.skipNull&&l(n[S])||s.skipEmptyString&&n[S]==="",c=g(s),d={};for(const S of Object.keys(n))o(S)||(d[S]=n[S]);const x=Object.keys(d);return s.sort!==!1&&x.sort(s.sort),x.map(S=>{const j=n[S];return j===void 0?"":j===null?f(S,s):Array.isArray(j)?j.length===0&&s.arrayFormat==="bracket-separator"?f(S,s)+"[]":j.reduce(c(S),[]).join("&"):f(S,s)+"="+f(j,s)}).filter(S=>S.length>0).join("&")},e.parseUrl=(n,s)=>{s=Object.assign({decode:!0},s);const[o,c]=i(n,"#");return Object.assign({url:o.split("?")[0]||"",query:T(p(n),s)},s&&s.parseFragmentIdentifier&&c?{fragmentIdentifier:A(c,s)}:{})},e.stringifyUrl=(n,s)=>{s=Object.assign({encode:!0,strict:!0,[h]:!0},s);const o=k(n.url).split("?")[0]||"",c=e.extract(n.url),d=e.parse(c,{sort:!1}),x=Object.assign(d,n.query);let S=e.stringify(x,s);S&&(S=`?${S}`);let j=w(n.url);return n.fragmentIdentifier&&(j=`#${s[h]?f(n.fragmentIdentifier,s):n.fragmentIdentifier}`),`${o}${S}${j}`},e.pick=(n,s,o)=>{o=Object.assign({parseFragmentIdentifier:!0,[h]:!1},o);const{url:c,query:d,fragmentIdentifier:x}=e.parseUrl(n,o);return e.stringifyUrl({url:c,query:a(d,s),fragmentIdentifier:x},o)},e.exclude=(n,s,o)=>{const c=Array.isArray(s)?d=>!s.includes(d):(d,x)=>!s(d,x);return e.pick(n,c,o)}})(be);const[pe,pr]=J([]),[vr,_r]=J([]),[Ge,yt]=J(new Map),[wr,$r]=J([]),[Cs,xr]=J(""),[Sr,Ar]=J(""),Ne=window.woocommerce_admin_meta_boxes.ajax_url;function Cr(){return ie(this,null,function*(){yield fetch(be.stringifyUrl({url:Ne,query:{action:"aftership_get_settings",t:Date.now()}})).then(e=>e.json()).then(e=>{const t=e.data.couriers,r=new Map(Ge());t.forEach(i=>{r.set(i.slug,i)}),yt(i=>new Map([...i,...r])),_r(t),xr(e.data.custom_domain)})})}function Tr(e){return ie(this,null,function*(){var r;const t=((r=document.querySelector("#aftership_get_nonce"))==null?void 0:r.value)||"";yield fetch(be.stringifyUrl({url:Ne,query:{action:"aftership_get_order_fulfillments",security:t,order_id:e,t:Date.now()}})).then(i=>i.json()).then(i=>{const a=i.data,l=window.get_aftership_couriers(),h=new Map;a.fulfillments.forEach((g,$)=>{g.trackings.forEach(u=>{if(h.has(u.slug))return;const f=l.find(A=>A.slug===u.slug);f&&h.set(u.slug,f)})}),yt(g=>new Map([...g,...h])),pr(a.fulfillments),$r(a.line_items),Ar(a.number)})})}function kr(e,t){return ie(this,null,function*(){var h;const r=pe().find(g=>g.id===t.id),i=pe().findIndex(g=>g.id===t.id);let a=[...pe()];r?a.splice(i,1,t):a.push(t);const l=((h=document.querySelector("#aftership_create_nonce"))==null?void 0:h.value)||"";yield fetch(be.stringifyUrl({url:Ne,query:{action:"aftership_save_order_fulfillments",security:l}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,fulfillments:a})})})}function jr(e,t){return ie(this,null,function*(){var i;const r=((i=document.querySelector("#aftership_delete_nonce"))==null?void 0:i.value)||"";yield fetch(be.stringifyUrl({url:Ne,query:{action:"aftership_delete_order_fulfillment_tracking",security:r}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,tracking_id:t})})})}class mt{static createDefault(){return{tracking_id:"",tracking_number:"",slug:"",additional_fields:{account_number:"",key:"",postal_code:"",ship_date:"",destination_country:"",state:""}}}}class Nr{static createDefault(){return{id:"",trackings:[mt.createDefault()],items:[],created_at:"",updated_at:"",from_tracking:!1}}}var Ir=typeof global=="object"&&global&&global.Object===Object&&global,bt=Ir,Er=typeof self=="object"&&self&&self.Object===Object&&self,Fr=bt||Er||Function("return this")(),pt=Fr,Or=pt.Symbol,ce=Or,vt=Object.prototype,Mr=vt.hasOwnProperty,Dr=vt.toString,ve=ce?ce.toStringTag:void 0;function Lr(e){var t=Mr.call(e,ve),r=e[ve];try{e[ve]=void 0;var i=!0}catch(l){}var a=Dr.call(e);return i&&(t?e[ve]=r:delete e[ve]),a}var Br=Object.prototype,Pr=Br.toString;function Ur(e){return Pr.call(e)}var Rr="[object Null]",qr="[object Undefined]",_t=ce?ce.toStringTag:void 0;function Ie(e){return e==null?e===void 0?qr:Rr:_t&&_t in Object(e)?Lr(e):Ur(e)}function Ee(e){return e!=null&&typeof e=="object"}var Hr="[object Symbol]";function Vr(e){return typeof e=="symbol"||Ee(e)&&Ie(e)==Hr}function zr(e,t){for(var r=-1,i=e==null?0:e.length,a=Array(i);++r-1&&e%1==0&&e-1&&e%1==0&&e<=an}function At(e){return e!=null&&St(e.length)&&!en(e)}var on=Object.prototype;function ln(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||on;return e===r}function cn(e,t){for(var r=-1,i=Array(e);++ra?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var l=Array(a);++i=i?e:ai(e,t,r)}var li="\\ud800-\\udfff",ci="\\u0300-\\u036f",ui="\\ufe20-\\ufe2f",fi="\\u20d0-\\u20ff",di=ci+ui+fi,gi="\\ufe0e\\ufe0f",hi="\\u200d",yi=RegExp("["+hi+li+di+gi+"]");function Mt(e){return yi.test(e)}function mi(e){return e.split("")}var Dt="\\ud800-\\udfff",bi="\\u0300-\\u036f",pi="\\ufe20-\\ufe2f",vi="\\u20d0-\\u20ff",_i=bi+pi+vi,wi="\\ufe0e\\ufe0f",$i="["+Dt+"]",Qe="["+_i+"]",Je="\\ud83c[\\udffb-\\udfff]",xi="(?:"+Qe+"|"+Je+")",Lt="[^"+Dt+"]",Bt="(?:\\ud83c[\\udde6-\\uddff]){2}",Pt="[\\ud800-\\udbff][\\udc00-\\udfff]",Si="\\u200d",Ut=xi+"?",Rt="["+wi+"]?",Ai="(?:"+Si+"(?:"+[Lt,Bt,Pt].join("|")+")"+Rt+Ut+")*",Ci=Rt+Ut+Ai,Ti="(?:"+[Lt+Qe+"?",Qe,Bt,Pt,$i].join("|")+")",ki=RegExp(Je+"(?="+Je+")|"+Ti+Ci,"g");function ji(e){return e.match(ki)||[]}function Ni(e){return Mt(e)?ji(e):mi(e)}function Ii(e){return function(t){t=Ot(t);var r=Mt(t)?Ni(t):void 0,i=r?r[0]:t.charAt(0),a=r?oi(r,1).join(""):t.slice(1);return i[e]()+a}}var Ei=Ii("toUpperCase"),Fi=Ei;function Oi(e){return Fi(Ot(e).toLowerCase())}function Mi(e){return function(t,r,i){for(var a=-1,l=Object(t),h=i(t),g=h.length;g--;){var $=h[e?g:++a];if(r(l[$],$,l)===!1)break}return t}}var Di=Mi(),Li=Di;function Bi(e,t){return e&&Li(e,t,si)}function Pi(e,t){return function(r,i){if(r==null)return r;if(!At(r))return e(r,i);for(var a=r.length,l=t?a:-1,h=Object(r);(t?l--:++l"),zi=e=>(()=>{const t=Vi.cloneNode(!0);return Ve(t,"click",e.onClick,!0),L(t,()=>e.children),H(r=>{const i={[qt.button]:!0,[qt.primary]:e.type==="primary"},a=e.disabled,l=e.style;return r._v$=lr(t,i,r._v$),a!==r._v$2&&(t.disabled=r._v$2=a),r._v$3=cr(t,l,r._v$3),r},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})();ke(["click"]);var Fe={container:"_container_1s8av_1",backdrop:"_backdrop_1s8av_8",modal:"_modal_1s8av_15"},Yi="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmkteCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNjY2IiBkPSJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4eiIvPgo8L3N2Zz4=";const Gi=z('');function Zi(e){return tt(()=>{e.visible?document.body.style.overflowY="hidden":document.body.style.overflowY="auto"}),R(He,{get when(){return e.visible},get children(){const t=Gi.cloneNode(!0),r=t.firstChild,i=r.nextSibling,a=i.firstChild,l=a.firstChild,h=l.nextSibling,g=h.firstChild,$=a.nextSibling,u=$.nextSibling;return Ve(r,"click",e.onCancel,!0),L(l,()=>e.title),Ve(h,"click",e.onCancel,!0),le(g,"src",Yi),L($,()=>e.children),L(u,R(zi,{get disabled(){return e.disabled},onClick:()=>e.onOk&&e.onOk(),type:"primary",get children(){return e.okText||"Ok"}})),H(f=>{const A=Fe.container,C=Fe.backdrop,k=Fe.modal,w=Fe.header;return A!==f._v$&&(t.className=f._v$=A),C!==f._v$2&&(r.className=f._v$2=C),k!==f._v$3&&(i.className=f._v$3=k),w!==f._v$4&&(a.className=f._v$4=w),f},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),t}})}ke(["click"]);var Ke={root:"_root_b92ih_1",suffix:"_suffix_b92ih_25",action:"_action_b92ih_30"},Wi="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtdXAtZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNWM1ZjYyIiBkPSJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==",Qi="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtZG93bi1maWxsIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGw9IiM1YzVmNjIiIGQ9Ik03LjI0NyAxMS4xNCAyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==";const Ji=z("of "),Ki=z('');function Xi(e){let t;const r=ir({step:1},e);function i($){return r.min!==void 0&&Number($)r.max}function l($){!$||i($)||a($)||r.onChange(Number($))}function h($){if($)if(i($)){r.onChange(r.min),t.value=String(r.min);return}else if(a($)){r.onChange(r.max),t.value=String(r.max);return}else r.onChange(Number($));else t.value="",r.onChange(void 0)}function g($){const u=r.value;let f;if(u===void 0)f=$>0?r.min:r.max,r.onChange(f||0);else{f=u+$*r.step;const A=String(f);if(i(A)||a(A))return}r.onChange(f)}return(()=>{const $=Ki.cloneNode(!0),u=$.firstChild,f=u.firstChild,A=u.nextSibling,C=A.firstChild,k=C.firstChild,w=C.nextSibling,p=w.firstChild;return f.addEventListener("blur",y=>h(y.currentTarget.value)),f.$$input=y=>l(y.currentTarget.value),(y=>t=y)(f),L($,R(He,{get when(){return r.max!==void 0},get children(){const y=Ji.cloneNode(!0);return y.firstChild,y.$$click=()=>t.focus(),L(y,()=>r.max,null),H(()=>y.className=Ke.suffix),y}}),A),C.$$click=()=>g(1),le(k,"src",Wi),w.$$click=()=>g(-1),le(p,"src",Qi),H(y=>{const T=Ke.root,n=r.min,s=r.max,o=r.value,c=Ke.action;return T!==y._v$&&($.className=y._v$=T),n!==y._v$2&&le(f,"min",y._v$2=n),s!==y._v$3&&le(f,"max",y._v$3=s),o!==y._v$4&&(f.value=y._v$4=o),c!==y._v$5&&(A.className=y._v$5=c),y},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),$})()}ke(["input","click"]);var we={modal:"_modal_1c3qk_1",empty:"_empty_1c3qk_7",items:"_items_1c3qk_13",input:"_input_1c3qk_34"};function es(e){const t=new Map;return e.forEach(i=>{var a;(a=i.items)==null||a.forEach(l=>{t.has(Number(l.id))?t.set(Number(l.id),(t.get(Number(l.id))||0)+Number(l.quantity)):t.set(Number(l.id),Number(l.quantity))})}),wr().map(i=>{const a=t.get(i.id)||0;return{id:i.id,name:i.name,quantity:i.quantity-a}}).filter(i=>i.quantity>0)}const ts=z("ItemsQty."),rs=z(""),ns=z(''),is=z('Update carrier listAdd Tracking Number'),ss=z("All items have been fulfilled"),as=z(""),os=z("Courier:Tracking number:x"),ls=z(""),cs=z(":"),[us,fs]=J(""),[Z,$e]=J(Nr.createDefault());function ds(e){function t(w,p,y){$e(T=>{const n=fe({},T);switch(p){case"tracking_number":n.trackings[w()].tracking_number=y;break;case"slug":n.trackings[w()].slug=y;break}return n})}function r(w,p,y){$e(T=>{const n=fe({},T);switch(p){case"account_number":n.trackings[w()].additional_fields.account_number=y;break;case"postal_code":n.trackings[w()].additional_fields.postal_code=y;break;case"key":n.trackings[w()].additional_fields.key=y;break;case"destination_country":n.trackings[w()].additional_fields.destination_country=y;break;case"state":n.trackings[w()].additional_fields.state=y;break;case"ship_date":n.trackings[w()].additional_fields.ship_date=y;break}return n})}function i(){$e(w=>{const p=fe({},w);return p.trackings.push(mt.createDefault()),p})}function a(w){const p=[...Z().trackings];p.splice(w(),1),$e(Gt(fe({},Z()),{trackings:p}))}function l(w){var y;return(((y=Ge().get(Z().trackings[w()].slug))==null?void 0:y.required_fields)||[]).map(T=>({key:T.replace(/^tracking_/,""),name:T.replace(/^tracking_/,"").split("_").map(Oi).join(" ")}))}const h=V(()=>Z()?pe().filter(w=>w.id!==Z().id):pe()),g=V(()=>{let w=new Map;for(const p of h())for(let y of p.trackings)w.get(y.slug+y.tracking_number)===void 0&&w.set(y.slug+y.tracking_number,!0);return w}),$=V(()=>es(h())),u=V(()=>{var n;let w=!0,p="";const y=Z().items;if(!y||y.length===0)return{isValid:!1,errors:"Required items"};if(w=!1,y.forEach(s=>{s.quantity>0&&(w=!0)}),!w)return{isValid:!1,errors:"Required items"};let T=new Map;for(const s of Z().trackings){if(s.slug==="")return{isValid:!1,errors:"Required tracking slug"};if(s.tracking_number==="")return{isValid:!1,errors:"Required tracking number"};if(s.tracking_number.length>256)return{isValid:!1,errors:"Tracking number invalid"};let o=g().get(s.slug+s.tracking_number);if(o)return{isValid:!1,errors:"Tracking number has already been added"};if(o=T.get(s.slug+s.tracking_number),o)return{isValid:!1,errors:"Tracking number has already been added"};o===void 0&&T.set(s.slug+s.tracking_number,!0);let c=((n=Ge().get(s.slug))==null?void 0:n.required_fields)||[];c.length>0&&c.forEach(d=>{let x=d.replace(/^tracking_/,""),S=x.split("_").join(" ");s.additional_fields[x]===""&&(w=!1,p=`Required ${S}`),s.additional_fields[x].length>256&&(w=!1,p=`${S} invalid`)})}return Z().trackings.length>20&&(w=!1,p="Tracking number limit exceeded"),{isValid:w,errors:p}}),f=(w,p)=>{$e(y=>{var s,o;const T=fe({},y);let n=(s=T.items)==null?void 0:s.find(c=>c.id===w);return n!==void 0?n.quantity=p:(o=T.items)==null||o.push({id:w,quantity:p}),T})},A=()=>{e.onOk(Z())},C=V(()=>us().toString()+` tracking - order - #${e.orderId}`),k=V(()=>{let w=Z().trackings;return w===void 0?"Add":w.length>0?"Save":"Add"});return R(Zi,{get title(){return C()},get visible(){return e.visible},get okText(){return k().toString()},onOk:A,get onCancel(){return e.onCancel},get disabled(){return!u().isValid},get children(){const w=is.cloneNode(!0),p=w.firstChild,y=p.nextSibling,T=y.nextSibling,n=T.nextSibling;return L(w,R(sr,{get fallback(){return(()=>{const s=ss.cloneNode(!0);return H(()=>s.className=we.empty),s})()},get children(){return R(ar,{get when(){return $().length>0},get children(){const s=ts.cloneNode(!0),o=s.firstChild,c=o.nextSibling;return L(c,R(Te,{get each(){return $()},children:d=>(()=>{const x=as.cloneNode(!0),S=x.firstChild,j=S.nextSibling;return L(S,()=>d.name),L(j,R(Xi,{min:0,get max(){return d.quantity},step:1,get value(){var D,W;return((W=(D=Z().items)==null?void 0:D.find(Y=>Y.id===d.id))==null?void 0:W.quantity)||0},onChange:D=>f(d.id,D||0)})),x})()})),H(()=>s.className=we.items),s}})}}),p),L(w,R(He,{get when(){return!u().isValid},get children(){return[(()=>{const s=rs.cloneNode(!0);return s.style.setProperty("margin","20px 0"),s})(),(()=>{const s=ns.cloneNode(!0);return L(s,()=>u().errors),s})()]}}),p),p.style.setProperty("margin","20px 0"),y.style.setProperty("margin","10px 0"),L(w,R(Te,{get each(){return Z().trackings},children:(s,o)=>(()=>{const c=os.cloneNode(!0),d=c.firstChild,x=d.firstChild,S=x.firstChild,j=S.nextSibling,D=x.nextSibling,W=D.firstChild,Y=W.nextSibling,ue=D.nextSibling,se=d.nextSibling;return x.style.setProperty("marginLeft","10px"),j.addEventListener("change",N=>{t(o,"slug",N.currentTarget.value)}),L(j,R(Te,{get each(){return vr()},children:N=>(()=>{const q=ls.cloneNode(!0);return L(q,()=>N.name||N.other_name),H(()=>q.value=N.slug),q})()})),Y.$$input=N=>t(o,"tracking_number",N.currentTarget.value),ue.$$click=()=>a(o),L(se,R(Te,{get each(){return l(o)},children:N=>(()=>{const q=cs.cloneNode(!0),re=q.firstChild,ne=re.firstChild,K=ne.nextSibling;return L(re,()=>N.name,ne),K.$$input=Q=>r(o,N.key,Q.currentTarget.value),H(Q=>{const m=N.key==="ship_date"?"date":"text",b=s.additional_fields[N.key];return m!==Q._v$5&&le(K,"type",Q._v$5=m),b!==Q._v$6&&(K.value=Q._v$6=b),Q},{_v$5:void 0,_v$6:void 0}),q})()})),H(N=>{const q=we.input,re=s==null?void 0:s.slug,ne=s.tracking_number,K=we.input;return q!==N._v$&&(d.className=N._v$=q),re!==N._v$2&&(j.value=N._v$2=re),ne!==N._v$3&&(Y.value=N._v$3=ne),K!==N._v$4&&(se.className=N._v$4=K),N},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),c})()}),T),n.$$click=i,H(()=>w.className=we.modal),w}})}ke(["click","input"]);var Ht={exports:{}},Vt={exports:{}};(function(e,t){(function(r,i){e.exports=i()})(me,function(){var r=r||function(i,a){var l;if(typeof window!="undefined"&&window.crypto&&(l=window.crypto),typeof self!="undefined"&&self.crypto&&(l=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(l=globalThis.crypto),!l&&typeof window!="undefined"&&window.msCrypto&&(l=window.msCrypto),!l&&typeof me!="undefined"&&me.crypto&&(l=me.crypto),!l&&typeof fr=="function")try{l=require("crypto")}catch(n){}var h=function(){if(l){if(typeof l.getRandomValues=="function")try{return l.getRandomValues(new Uint32Array(1))[0]}catch(n){}if(typeof l.randomBytes=="function")try{return l.randomBytes(4).readInt32LE()}catch(n){}}throw new Error("Native crypto module could not be used to get secure random number.")},g=Object.create||function(){function n(){}return function(s){var o;return n.prototype=s,o=new n,n.prototype=null,o}}(),$={},u=$.lib={},f=u.Base=function(){return{extend:function(n){var s=g(this);return n&&s.mixIn(n),(!s.hasOwnProperty("init")||this.init===s.init)&&(s.init=function(){s.$super.init.apply(this,arguments)}),s.init.prototype=s,s.$super=this,s},create:function(){var n=this.extend();return n.init.apply(n,arguments),n},init:function(){},mixIn:function(n){for(var s in n)n.hasOwnProperty(s)&&(this[s]=n[s]);n.hasOwnProperty("toString")&&(this.toString=n.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),A=u.WordArray=f.extend({init:function(n,s){n=this.words=n||[],s!=a?this.sigBytes=s:this.sigBytes=n.length*4},toString:function(n){return(n||k).stringify(this)},concat:function(n){var s=this.words,o=n.words,c=this.sigBytes,d=n.sigBytes;if(this.clamp(),c%4)for(var x=0;x>>2]>>>24-x%4*8&255;s[c+x>>>2]|=S<<24-(c+x)%4*8}else for(var j=0;j>>2]=o[j>>>2];return this.sigBytes+=d,this},clamp:function(){var n=this.words,s=this.sigBytes;n[s>>>2]&=4294967295<<32-s%4*8,n.length=i.ceil(s/4)},clone:function(){var n=f.clone.call(this);return n.words=this.words.slice(0),n},random:function(n){for(var s=[],o=0;o>>2]>>>24-d%4*8&255;c.push((x>>>4).toString(16)),c.push((x&15).toString(16))}return c.join("")},parse:function(n){for(var s=n.length,o=[],c=0;c>>3]|=parseInt(n.substr(c,2),16)<<24-c%8*4;return new A.init(o,s/2)}},w=C.Latin1={stringify:function(n){for(var s=n.words,o=n.sigBytes,c=[],d=0;d>>2]>>>24-d%4*8&255;c.push(String.fromCharCode(x))}return c.join("")},parse:function(n){for(var s=n.length,o=[],c=0;c>>2]|=(n.charCodeAt(c)&255)<<24-c%4*8;return new A.init(o,s)}},p=C.Utf8={stringify:function(n){try{return decodeURIComponent(escape(w.stringify(n)))}catch(s){throw new Error("Malformed UTF-8 data")}},parse:function(n){return w.parse(unescape(encodeURIComponent(n)))}},y=u.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new A.init,this._nDataBytes=0},_append:function(n){typeof n=="string"&&(n=p.parse(n)),this._data.concat(n),this._nDataBytes+=n.sigBytes},_process:function(n){var s,o=this._data,c=o.words,d=o.sigBytes,x=this.blockSize,S=x*4,j=d/S;n?j=i.ceil(j):j=i.max((j|0)-this._minBufferSize,0);var D=j*x,W=i.min(D*4,d);if(D){for(var Y=0;Y>>24)&16711935|(s<<24|s>>>8)&4278255360}var o=this._hash.words,c=p[y+0],d=p[y+1],x=p[y+2],S=p[y+3],j=p[y+4],D=p[y+5],W=p[y+6],Y=p[y+7],ue=p[y+8],se=p[y+9],N=p[y+10],q=p[y+11],re=p[y+12],ne=p[y+13],K=p[y+14],Q=p[y+15],m=o[0],b=o[1],v=o[2],_=o[3];m=A(m,b,v,_,c,7,u[0]),_=A(_,m,b,v,d,12,u[1]),v=A(v,_,m,b,x,17,u[2]),b=A(b,v,_,m,S,22,u[3]),m=A(m,b,v,_,j,7,u[4]),_=A(_,m,b,v,D,12,u[5]),v=A(v,_,m,b,W,17,u[6]),b=A(b,v,_,m,Y,22,u[7]),m=A(m,b,v,_,ue,7,u[8]),_=A(_,m,b,v,se,12,u[9]),v=A(v,_,m,b,N,17,u[10]),b=A(b,v,_,m,q,22,u[11]),m=A(m,b,v,_,re,7,u[12]),_=A(_,m,b,v,ne,12,u[13]),v=A(v,_,m,b,K,17,u[14]),b=A(b,v,_,m,Q,22,u[15]),m=C(m,b,v,_,d,5,u[16]),_=C(_,m,b,v,W,9,u[17]),v=C(v,_,m,b,q,14,u[18]),b=C(b,v,_,m,c,20,u[19]),m=C(m,b,v,_,D,5,u[20]),_=C(_,m,b,v,N,9,u[21]),v=C(v,_,m,b,Q,14,u[22]),b=C(b,v,_,m,j,20,u[23]),m=C(m,b,v,_,se,5,u[24]),_=C(_,m,b,v,K,9,u[25]),v=C(v,_,m,b,S,14,u[26]),b=C(b,v,_,m,ue,20,u[27]),m=C(m,b,v,_,ne,5,u[28]),_=C(_,m,b,v,x,9,u[29]),v=C(v,_,m,b,Y,14,u[30]),b=C(b,v,_,m,re,20,u[31]),m=k(m,b,v,_,D,4,u[32]),_=k(_,m,b,v,ue,11,u[33]),v=k(v,_,m,b,q,16,u[34]),b=k(b,v,_,m,K,23,u[35]),m=k(m,b,v,_,d,4,u[36]),_=k(_,m,b,v,j,11,u[37]),v=k(v,_,m,b,Y,16,u[38]),b=k(b,v,_,m,N,23,u[39]),m=k(m,b,v,_,ne,4,u[40]),_=k(_,m,b,v,c,11,u[41]),v=k(v,_,m,b,S,16,u[42]),b=k(b,v,_,m,W,23,u[43]),m=k(m,b,v,_,se,4,u[44]),_=k(_,m,b,v,re,11,u[45]),v=k(v,_,m,b,Q,16,u[46]),b=k(b,v,_,m,x,23,u[47]),m=w(m,b,v,_,c,6,u[48]),_=w(_,m,b,v,Y,10,u[49]),v=w(v,_,m,b,K,15,u[50]),b=w(b,v,_,m,D,21,u[51]),m=w(m,b,v,_,re,6,u[52]),_=w(_,m,b,v,S,10,u[53]),v=w(v,_,m,b,N,15,u[54]),b=w(b,v,_,m,d,21,u[55]),m=w(m,b,v,_,ue,6,u[56]),_=w(_,m,b,v,Q,10,u[57]),v=w(v,_,m,b,W,15,u[58]),b=w(b,v,_,m,ne,21,u[59]),m=w(m,b,v,_,j,6,u[60]),_=w(_,m,b,v,q,10,u[61]),v=w(v,_,m,b,x,15,u[62]),b=w(b,v,_,m,se,21,u[63]),o[0]=o[0]+m|0,o[1]=o[1]+b|0,o[2]=o[2]+v|0,o[3]=o[3]+_|0},_doFinalize:function(){var p=this._data,y=p.words,T=this._nDataBytes*8,n=p.sigBytes*8;y[n>>>5]|=128<<24-n%32;var s=i.floor(T/4294967296),o=T;y[(n+64>>>9<<4)+15]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,y[(n+64>>>9<<4)+14]=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,p.sigBytes=(y.length+1)*4,this._process();for(var c=this._hash,d=c.words,x=0;x<4;x++){var S=d[x];d[x]=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360}return c},clone:function(){var p=g.clone.call(this);return p._hash=this._hash.clone(),p}});function A(p,y,T,n,s,o,c){var d=p+(y&T|~y&n)+s+c;return(d<>>32-o)+y}function C(p,y,T,n,s,o,c){var d=p+(y&n|T&~n)+s+c;return(d<>>32-o)+y}function k(p,y,T,n,s,o,c){var d=p+(y^T^n)+s+c;return(d<>>32-o)+y}function w(p,y,T,n,s,o,c){var d=p+(T^(y|~n))+s+c;return(d<>>32-o)+y}a.MD5=g._createHelper(f),a.HmacMD5=g._createHmacHelper(f)}(Math),r.MD5})}(Ht);for(var gs=Ht.exports,B=[],Xe=0;Xe<256;++Xe)B.push((Xe+256).toString(16).slice(1));function hs(e,t=0){return(B[e[t+0]]+B[e[t+1]]+B[e[t+2]]+B[e[t+3]]+"-"+B[e[t+4]]+B[e[t+5]]+"-"+B[e[t+6]]+B[e[t+7]]+"-"+B[e[t+8]]+B[e[t+9]]+"-"+B[e[t+10]]+B[e[t+11]]+B[e[t+12]]+B[e[t+13]]+B[e[t+14]]+B[e[t+15]]).toLowerCase()}var Oe,ys=new Uint8Array(16);function ms(){if(!Oe&&(Oe=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Oe))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Oe(ys)}var bs=typeof crypto!="undefined"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),zt={randomUUID:bs};function ps(e,t,r){if(zt.randomUUID&&!t&&!e)return zt.randomUUID();e=e||{};var i=e.random||(e.rng||ms)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){r=r||0;for(var a=0;a<16;++a)t[r+a]=i[a];return t}return hs(i)}const vs=()=>{const[e,t]=J(!1),[r,i]=J(""),a=$=>ie(this,null,function*(){const u=$.target;if(!u||u.tagName!=="A"||!u.className.includes("aftership_add_inline_tracking"))return;$.preventDefault();const f=u.href.match(/#order-id-(\S+)$/);f&&(yield i(f[1]),yield Tr(f[1]),fs("Add"),t(!0))}),l=$=>ie(this,null,function*(){var A,C;const u=(A=$.target)==null?void 0:A.parentElement;if(!u||u.tagName!=="A"||!u.className.includes("aftership_inline_tracking_delete"))return;if($.preventDefault(),window.confirm("Do you really want to delete tracking number?")){const k=u.dataset,w=$.composedPath();yield jr(k.orderId,k.trackingId);for(let p of w)if(p instanceof HTMLElement&&p.tagName==="LI"&&((C=p.parentElement)==null?void 0:C.className.includes("wcas-tracking-number-list"))){p.remove();return}}window.location.reload()});return Qt(()=>{Cr(),window.addEventListener("click",a,!0),window.addEventListener("click",l)}),rt(()=>{window.removeEventListener("click",a),window.removeEventListener("click",l)}),R(ds,{get visible(){return e()},onCancel:()=>{t(!1)},onOk:$=>ie(this,null,function*(){const u=new Date().toISOString().replace(/\.\d+(?=Z$)/,"");$.id===""?($.created_at=u,$.updated_at=u,$.id=ps()):$.updated_at=u,Hi($.trackings||[],f=>{f.tracking_id===""&&(f.tracking_id=gs(`${f.slug}-${f.tracking_number}`).toString())}),console.log("handleOk"+$),yield kr(r(),$),window.location.reload()}),get orderId(){return Sr()}})};customElements.define("aftership-orders-modal",class extends HTMLElement{constructor(){super();Zt(this,"initialized",!1);this.attachShadow({mode:"open"})}connectedCallback(){if(!!this.shadowRoot&&!this.initialized){this.initialized=!0;{const t=document.currentScript,r=document.createElement("link");r.rel="stylesheet",r.href=t.src.replace(/\/index\.js\?/,"/style.css?"),this.shadowRoot.appendChild(r)}or(()=>R(vs,{}),this.shadowRoot)}}})})(); diff --git a/assets/frontendv2/dist/orders/style.css b/assets/frontendv2/dist/orders/style.css new file mode 100644 index 0000000..700bc1c --- /dev/null +++ b/assets/frontendv2/dist/orders/style.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:host{all:initial;font-family:inherit;font-size:inherit}*{box-sizing:border-box}a{cursor:pointer;color:#2271b1;transition:color .5s ease-in-out}a:hover{color:#135e96}._button_1dv9o_1{border:1px solid #ccc;border-radius:3px;background-color:#f7f7f7;color:#555;font-size:13px;min-height:30px;padding:0 10px;cursor:pointer}._button_1dv9o_1[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;cursor:not-allowed}._primary_1dv9o_18{border-color:#2271b1;background:#2271b1;color:#fff}._primary_1dv9o_18:hover{background:#135e96;border-color:#135e96}._container_1s8av_1{position:fixed;top:0;right:0;z-index:99999}._backdrop_1s8av_8{width:100vw;height:100vh;background-color:#000;opacity:.7}._modal_1s8av_15{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;width:500px}._modal_1s8av_15 header{background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}._modal_1s8av_15 header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}._modal_1s8av_15 header div{position:absolute;top:0;right:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-left:1px solid #ddd;color:#666}._modal_1s8av_15 header div:hover{background:#ddd;border-color:#ccc}._modal_1s8av_15 header img{height:32px;width:32px}._modal_1s8av_15 footer{padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px #0000001a;display:flex;justify-content:flex-end}._root_b92ih_1{display:flex;align-items:center;justify-content:space-between;border:1px solid #8c8f94;border-radius:4px;height:30px;overflow:hidden}._root_b92ih_1 input{line-height:26px;border:0;padding-left:8px}._root_b92ih_1 input:focus{outline:0}._root_b92ih_1 input[type=number]::-webkit-outer-spin-button,._root_b92ih_1 input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}._root_b92ih_1 input[type=number]{appearance:textfield}._root_b92ih_1 ._suffix_b92ih_25{color:#6c7075;margin-right:8px;cursor:default}._root_b92ih_1 ._action_b92ih_30{width:22px;padding:2px;height:100%;display:grid;row-gap:2px}._root_b92ih_1 ._action_b92ih_30 div{border-radius:2px;background-color:#e4e5e7;display:flex;align-items:center;justify-content:center;cursor:pointer}._root_b92ih_1 ._action_b92ih_30 div:hover{background-color:#c9cbcf}._root_b92ih_1 ._action_b92ih_30 div:active{background-color:#b3b5b9}._root_b92ih_1 ._action_b92ih_30 div img{width:10px;height:10px;user-select:none}._modal_1c3qk_1{padding:20px;max-height:70vh;overflow:auto}._empty_1c3qk_7{text-align:center;font-size:16px;color:#999c9f}._items_1c3qk_13{display:grid;text-align:left;grid-template-columns:1fr auto;column-gap:10px;row-gap:6px;align-items:center}._items_1c3qk_13 thead,._items_1c3qk_13 tbody,._items_1c3qk_13 tr{display:contents}._items_1c3qk_13 th:last-child,._items_1c3qk_13 td:last-child{text-align:right}._items_1c3qk_13 th{margin-bottom:8px}._input_1c3qk_34{color:#3c434a;display:flex;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:10px}._input_1c3qk_34 label{display:flex;flex-direction:column}._input_1c3qk_34 a{font-size:12px;text-decoration-line:underline;margin-left:2px;width:fit-content}._input_1c3qk_34 label{margin-left:2px}._input_1c3qk_34 select{border:1px solid #8c8f94;border-radius:4px;min-height:30px;font-size:14px;line-height:28px;padding:0 8px}._input_1c3qk_34 input{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0 8px}._input_1c3qk_34 button{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0;min-height:30px;width:25px;align-items:center;justify-content:center;margin-top:14px} diff --git a/assets/frontendv2/index.html b/assets/frontendv2/index.html new file mode 100644 index 0000000..0595dea --- /dev/null +++ b/assets/frontendv2/index.html @@ -0,0 +1,16 @@ + + + + + + + Solid App + + + You need to enable JavaScript to run this app. + + + + + + diff --git a/assets/frontendv2/inject.js b/assets/frontendv2/inject.js new file mode 100644 index 0000000..5f0c466 --- /dev/null +++ b/assets/frontendv2/inject.js @@ -0,0 +1,6 @@ +console.log('inject.js'); +const scriptElm = document.createElement('script'); +scriptElm.src = 'http://localhost:3000/src/index.tsx'; +scriptElm.type = 'module'; + +document.body.appendChild(scriptElm); diff --git a/assets/frontendv2/package-lock.json b/assets/frontendv2/package-lock.json new file mode 100644 index 0000000..b93d7fd --- /dev/null +++ b/assets/frontendv2/package-lock.json @@ -0,0 +1,3757 @@ +{ + "name": "vite-template-solid", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "vite-template-solid", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "crypto-js": "^4.1.1", + "lodash-es": "^4.17.21", + "normalize.css": "^8.0.1", + "query-string": "^7.1.0", + "solid-js": "1.2.6", + "uuid": "^10.0.0" + }, + "devDependencies": { + "@types/crypto-js": "^4.1.0", + "@types/lodash-es": "^4.17.5", + "@types/node": "^17.0.7", + "lint-staged": "^12.1.2", + "prettier": "^2.5.1", + "sass": "^1.44.0", + "typescript": "^4.4.3", + "vite": "2.7.10", + "vite-plugin-solid": "2.1.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", + "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", + "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz", + "integrity": "sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@types/crypto-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", + "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.14.178", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", + "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-SHBoI8/0aoMQWAgUHMQ599VM6ZiSKg8sh/0cFqqlQQMyY9uEplc0ULU5yQNzcvdR4ZKa0ey8+vFmahuRbOCT1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", + "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jsx-dom-expressions": { + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.30.9.tgz", + "integrity": "sha512-FdfgH5IgB5vUCHGQtj65uZ4uiW42VPN2h2KgRwRkINL9/vHRPw0bsGKL+2CaI/LmLKvot9IXhqjSV/HhD0KDWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4", + "@babel/types": "^7.11.5", + "html-entities": "2.3.2" + } + }, + "node_modules/babel-preset-solid": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.2.6.tgz", + "integrity": "sha512-rFl9Sv/llx5fbE1zfx9QlQMsJz3q/nQZds2xq5Atnayop1NOyK9l/ychF2g3DWXoN9MbAR+ZxZqxzsPnOXAV+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jsx-dom-expressions": "^0.30.9" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "dev": true, + "license": "CC-BY-4.0", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true, + "license": "MIT" + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz", + "integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/esbuild": { + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", + "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "optionalDependencies": { + "esbuild-android-arm64": "0.13.15", + "esbuild-darwin-64": "0.13.15", + "esbuild-darwin-arm64": "0.13.15", + "esbuild-freebsd-64": "0.13.15", + "esbuild-freebsd-arm64": "0.13.15", + "esbuild-linux-32": "0.13.15", + "esbuild-linux-64": "0.13.15", + "esbuild-linux-arm": "0.13.15", + "esbuild-linux-arm64": "0.13.15", + "esbuild-linux-mips64le": "0.13.15", + "esbuild-linux-ppc64le": "0.13.15", + "esbuild-netbsd-64": "0.13.15", + "esbuild-openbsd-64": "0.13.15", + "esbuild-sunos-64": "0.13.15", + "esbuild-windows-32": "0.13.15", + "esbuild-windows-64": "0.13.15", + "esbuild-windows-arm64": "0.13.15" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", + "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz", + "integrity": "sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^3.13.3", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.11.0", + "string-argv": "^0.3.1", + "supports-color": "^9.0.2", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz", + "integrity": "sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.4.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-anything": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-4.0.2.tgz", + "integrity": "sha512-YxLHKgX8jN5xfKIxcwVNzQ2HpS0r9eUSqifgGhVARoZEW31Jwu95OQzX7qlFPBPQdCmNBhCYaqJzOcwAKi2Elg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1", + "ts-toolbelt": "^9.6.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/query-string": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.0.tgz", + "integrity": "sha512-wnJ8covk+S9isYR5JIXPt93kFUmI2fQ4R/8130fuq+qwLiGVTurg7Klodgfw4NSz/oe7xnyi09y3lSrogUeM3g==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "2.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", + "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rxjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "~2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/solid-js": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.2.6.tgz", + "integrity": "sha512-NvPHJ5Vj5f+ZJWIioickrC55seovSkDtm5NzSpnoUk3z4tATv0STpy5iuGNEn51ZORUcwpZzrMAtOCGziXU1XA==", + "license": "MIT" + }, + "node_modules/solid-refresh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.3.2.tgz", + "integrity": "sha512-7lg3EjenGoxQvGoZnTD3d480wBxbpAiAsyk0dhoGq6hjcaAQ3vnsBGxvXV0LBTzeQcGmIRz1GeSsw/64YyNr+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "peerDependencies": { + "solid-js": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true, + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", + "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.10.tgz", + "integrity": "sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.13.12", + "postcss": "^8.4.5", + "resolve": "^1.20.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/vite-plugin-solid": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.1.4.tgz", + "integrity": "sha512-lhEPlDf4PB+KKu5ExaT3zaENqC8shpJ4H74a2R0qbr1MCiFvhE/AooWvIlclpHzBtDK6MmUKv25qSFoSC1EaXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "babel-preset-solid": "^1.2.6", + "merge-anything": "^4.0.1", + "solid-js": "^1.2.6", + "solid-refresh": "^0.3.2", + "vite": "^2.7.1" + } + }, + "node_modules/vite-plugin-solid/node_modules/vite": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.1.tgz", + "integrity": "sha512-TDXXhcu5lyQ6uosK4ZWaOyB4VzOiizk0biitRzDzaEtgSUi8rVYPc4k1xgOjLSf0OuceDJmojFKXHOX9DB1WuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.13.12", + "postcss": "^8.3.11", + "resolve": "^1.20.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "dev": true + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", + "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", + "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.16.0" + } + }, + "@babel/preset-typescript": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz", + "integrity": "sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.0" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@types/crypto-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz", + "integrity": "sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.178", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", + "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "dev": true + }, + "@types/lodash-es": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-SHBoI8/0aoMQWAgUHMQ599VM6ZiSKg8sh/0cFqqlQQMyY9uEplc0ULU5yQNzcvdR4ZKa0ey8+vFmahuRbOCT1A==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/node": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", + "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "babel-plugin-jsx-dom-expressions": { + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.30.9.tgz", + "integrity": "sha512-FdfgH5IgB5vUCHGQtj65uZ4uiW42VPN2h2KgRwRkINL9/vHRPw0bsGKL+2CaI/LmLKvot9IXhqjSV/HhD0KDWA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4", + "@babel/types": "^7.11.5", + "html-entities": "2.3.2" + } + }, + "babel-preset-solid": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.2.6.tgz", + "integrity": "sha512-rFl9Sv/llx5fbE1zfx9QlQMsJz3q/nQZds2xq5Atnayop1NOyK9l/ychF2g3DWXoN9MbAR+ZxZqxzsPnOXAV+A==", + "dev": true, + "requires": { + "babel-plugin-jsx-dom-expressions": "^0.30.9" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "string-width": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", + "dev": true, + "requires": { + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "electron-to-chromium": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz", + "integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "esbuild": { + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", + "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.13.15", + "esbuild-darwin-64": "0.13.15", + "esbuild-darwin-arm64": "0.13.15", + "esbuild-freebsd-64": "0.13.15", + "esbuild-freebsd-arm64": "0.13.15", + "esbuild-linux-32": "0.13.15", + "esbuild-linux-64": "0.13.15", + "esbuild-linux-arm": "0.13.15", + "esbuild-linux-arm64": "0.13.15", + "esbuild-linux-mips64le": "0.13.15", + "esbuild-linux-ppc64le": "0.13.15", + "esbuild-netbsd-64": "0.13.15", + "esbuild-openbsd-64": "0.13.15", + "esbuild-sunos-64": "0.13.15", + "esbuild-windows-32": "0.13.15", + "esbuild-windows-64": "0.13.15", + "esbuild-windows-arm64": "0.13.15" + } + }, + "esbuild-darwin-arm64": { + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", + "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lint-staged": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz", + "integrity": "sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^3.13.3", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.11.0", + "string-argv": "^0.3.1", + "supports-color": "^9.0.2", + "yaml": "^1.10.2" + } + }, + "listr2": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz", + "integrity": "sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.4.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "merge-anything": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-4.0.2.tgz", + "integrity": "sha512-YxLHKgX8jN5xfKIxcwVNzQ2HpS0r9eUSqifgGhVARoZEW31Jwu95OQzX7qlFPBPQdCmNBhCYaqJzOcwAKi2Elg==", + "dev": true, + "requires": { + "is-what": "^3.14.1", + "ts-toolbelt": "^9.6.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true + }, + "query-string": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.0.tgz", + "integrity": "sha512-wnJ8covk+S9isYR5JIXPt93kFUmI2fQ4R/8130fuq+qwLiGVTurg7Klodgfw4NSz/oe7xnyi09y3lSrogUeM3g==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rollup": { + "version": "2.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", + "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rxjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "dev": true, + "requires": { + "tslib": "~2.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "sass": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + } + } + }, + "solid-js": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.2.6.tgz", + "integrity": "sha512-NvPHJ5Vj5f+ZJWIioickrC55seovSkDtm5NzSpnoUk3z4tATv0STpy5iuGNEn51ZORUcwpZzrMAtOCGziXU1XA==" + }, + "solid-refresh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.3.2.tgz", + "integrity": "sha512-7lg3EjenGoxQvGoZnTD3d480wBxbpAiAsyk0dhoGq6hjcaAQ3vnsBGxvXV0LBTzeQcGmIRz1GeSsw/64YyNr+g==", + "dev": true, + "requires": { + "@babel/generator": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typescript": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", + "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", + "dev": true + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + }, + "vite": { + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.10.tgz", + "integrity": "sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==", + "dev": true, + "requires": { + "esbuild": "^0.13.12", + "fsevents": "~2.3.2", + "postcss": "^8.4.5", + "resolve": "^1.20.0", + "rollup": "^2.59.0" + } + }, + "vite-plugin-solid": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.1.4.tgz", + "integrity": "sha512-lhEPlDf4PB+KKu5ExaT3zaENqC8shpJ4H74a2R0qbr1MCiFvhE/AooWvIlclpHzBtDK6MmUKv25qSFoSC1EaXQ==", + "dev": true, + "requires": { + "@babel/core": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "babel-preset-solid": "^1.2.6", + "merge-anything": "^4.0.1", + "solid-js": "^1.2.6", + "solid-refresh": "^0.3.2", + "vite": "^2.7.1" + }, + "dependencies": { + "vite": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.1.tgz", + "integrity": "sha512-TDXXhcu5lyQ6uosK4ZWaOyB4VzOiizk0biitRzDzaEtgSUi8rVYPc4k1xgOjLSf0OuceDJmojFKXHOX9DB1WuQ==", + "dev": true, + "requires": { + "esbuild": "^0.13.12", + "fsevents": "~2.3.2", + "postcss": "^8.3.11", + "resolve": "^1.20.0", + "rollup": "^2.59.0" + } + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } +} diff --git a/assets/frontendv2/package.json b/assets/frontendv2/package.json new file mode 100644 index 0000000..6ec801e --- /dev/null +++ b/assets/frontendv2/package.json @@ -0,0 +1,32 @@ +{ + "name": "vite-template-solid", + "version": "0.0.0", + "description": "", + "scripts": { + "dev:metabox": "vite -c vite.config.metabox.ts", + "dev:orders": "vite -c vite.config.orders.ts", + "build:metabox": "vite build -c vite.config.metabox.ts", + "build:orders": "vite build -c vite.config.orders.ts", + "serve": "vite preview" + }, + "license": "MIT", + "devDependencies": { + "@types/crypto-js": "^4.1.0", + "@types/lodash-es": "^4.17.5", + "@types/node": "^17.0.7", + "lint-staged": "^12.1.2", + "prettier": "^2.5.1", + "sass": "^1.44.0", + "typescript": "^4.4.3", + "vite": "2.7.10", + "vite-plugin-solid": "2.1.4" + }, + "dependencies": { + "crypto-js": "^4.1.1", + "lodash-es": "^4.17.21", + "normalize.css": "^8.0.1", + "query-string": "^7.1.0", + "solid-js": "1.2.6", + "uuid": "^10.0.0" + } +} diff --git a/assets/frontendv2/plugins/hotReloadShadowDomCss.js b/assets/frontendv2/plugins/hotReloadShadowDomCss.js new file mode 100644 index 0000000..da3dd1b --- /dev/null +++ b/assets/frontendv2/plugins/hotReloadShadowDomCss.js @@ -0,0 +1,58 @@ +const sheetsMap = new Map(); + +export async function updateStyle(id, content, elName) { + const shadowRoot = document.querySelector(elName).shadowRoot; + if (!shadowRoot) { + await new Promise((resolve) => { + window.addEventListener('load', () => { + resolve(); + }); + }); + } + let style = sheetsMap.get(id); + if (style && !(style instanceof HTMLStyleElement)) { + removeStyle(id); + style = undefined; + } + if (!style) { + style = document.createElement('style'); + style.setAttribute('type', 'text/css'); + style.innerHTML = content; + document.querySelector(elName).shadowRoot.appendChild(style); + // document.head.appendChild(style); + } else { + style.innerHTML = content; + } + sheetsMap.set(id, style); +} + +export function removeStyle(id, elName) { + const style = sheetsMap.get(id); + document.querySelector(elName).shadowRoot.removeChild(style); + // document.head.removeChild(style); + sheetsMap.delete(id); +} + +export default function myExample(elName) { + return { + name: 'inject-css-to-shadowRoot', + apply: 'serve', + enforce: 'post', + async transform(code, id, _options) { + if (/(\.module)?\.s?css$/.test(id)) { + if (process.env.MODE === 'production') return code; + return ( + `const elName = '${elName}';\n` + + code + .replace( + /(?<=import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from )"[^"]+@vite\/client"/, + `"${__filename}"` + ) + .replace(/__vite__(?:update|remove)Style\([^)]+/, '$&, elName') + ); + } else { + return code; + } + }, + }; +} diff --git a/assets/frontendv2/src/components/Button/Button.module.scss b/assets/frontendv2/src/components/Button/Button.module.scss new file mode 100644 index 0000000..b4f13a3 --- /dev/null +++ b/assets/frontendv2/src/components/Button/Button.module.scss @@ -0,0 +1,26 @@ +.button { + border: 1px solid #ccc; + border-radius: 3px; + background-color: #f7f7f7; + color: #555; + font-size: 13px; + min-height: 30px; + padding: 0 10px; + cursor: pointer; + &[disabled] { + color: #a7aaad !important; + background: #f6f7f7 !important; + border-color: #dcdcde !important; + cursor: not-allowed; + } +} + +.primary { + border-color: #2271b1; + background: #2271b1; + color: #fff; + &:hover { + background: #135e96; + border-color: #135e96; + } +} diff --git a/assets/frontendv2/src/components/Button/Button.tsx b/assets/frontendv2/src/components/Button/Button.tsx new file mode 100644 index 0000000..f61bf24 --- /dev/null +++ b/assets/frontendv2/src/components/Button/Button.tsx @@ -0,0 +1,23 @@ +import { Component, JSX } from 'solid-js'; +import styles from './Button.module.scss'; + +interface Props { + type?: 'primary'; + style?: JSX.CSSProperties; + onClick?(e: MouseEvent): void; + disabled?: boolean; +} + +const Button: Component = (props) => { + return ( + + {props.children} + + ); +}; + +export default Button; diff --git a/assets/frontendv2/src/components/Button/index.ts b/assets/frontendv2/src/components/Button/index.ts new file mode 100644 index 0000000..efe8c80 --- /dev/null +++ b/assets/frontendv2/src/components/Button/index.ts @@ -0,0 +1 @@ +export { default } from './Button'; diff --git a/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.module.scss b/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.module.scss new file mode 100644 index 0000000..cb5e44a --- /dev/null +++ b/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.module.scss @@ -0,0 +1,83 @@ +.modal { + padding: 20px; + max-height: 70vh; + overflow: auto; +} + +.empty { + text-align: center; + font-size: 16px; + color: #999c9f; +} +.items { + thead, + tbody, + tr { + display: contents; + } + th, + td { + &:last-child { + text-align: right; + } + } + th { + margin-bottom: 8px; + } + display: grid; + text-align: left; + grid-template-columns: 1fr auto; + column-gap: 10px; + row-gap: 6px; + align-items: center; +} + +.input { + color: #3c434a; + display: flex; + grid-template-columns: 1fr 1fr; + column-gap: 20px; + row-gap: 10px; + label { + display: flex; + flex-direction: column; + } + a { + font-size: 12px; + text-decoration-line: underline; + margin-left: 2px; + width: fit-content; + } + label { + margin-left: 2px; + } + + select { + border: 1px solid #8c8f94; + border-radius: 4px; + min-height: 30px; + font-size: 14px; + line-height: 28px; + padding: 0 8px; + } + input { + border: 1px solid #8c8f94; + border-radius: 4px; + font-size: 14px; + line-height: 28px; + padding: 0 8px; + } + button { + border: 1px solid #8c8f94; + border-radius: 4px; + font-size: 14px; + line-height: 28px; + padding: 0; + min-height: 30px; + width: 25px; + align-items: center; + justify-content: center; + margin-top: 14px; + } +} + diff --git a/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.tsx b/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.tsx new file mode 100644 index 0000000..5be9681 --- /dev/null +++ b/assets/frontendv2/src/components/EditTrackingModal/EditTrackingModal.tsx @@ -0,0 +1,328 @@ +import {selectedCouriers, courierMap, fulfillments} from '@src/storages/tracking'; +import { + AdditionalFields, + Fulfillment, FulfillmentFactory, + FulfillmentTrackingFactory, +} from '@src/typings/trackings'; +import {createMemo, For, Show, Switch, Match, Accessor, createSignal} from 'solid-js'; +import {capitalize} from 'lodash-es'; + +import Modal from '../Modal'; +import NumberInput from '../NumberInput'; + +import styles from './EditTrackingModal.module.scss'; +import { calcUnfulfilledItems } from '@src/utils/common'; + +interface Props { + visible: boolean; + onOk(v: Fulfillment): void; + onCancel(): void; + orderId: string; +} + +export const [title, setTitle] = createSignal(''); +export const [editingFulfillment, setEditingFulfillment] = createSignal(FulfillmentFactory.createDefault()); +export default function EditTrackingModal(props: Props) { + const MAX_TRACKING_NUMBER = 20; + const [trackingIndexCourierMap, setTrackingIndexCourierMap] = createSignal(new Map()); + + function updateFormValueAtIndex(index: Accessor, field: string, newValue: string) { + setEditingFulfillment(f => { + const newFulfillments = {...f}; + switch (field){ + case "tracking_number": + newFulfillments.trackings[index()].tracking_number = newValue + break; + case "slug": + newFulfillments.trackings[index()].slug = newValue + setTrackingIndexCourierMap(prev => { + const m = new Map(Object.assign([], prev)); + m.set(index(), newValue); + return m; + }); + break; + } + return newFulfillments; + }); + } + + function updateAdditionalFieldsAtIndex(index: Accessor, field: string, newValue: string) { + setEditingFulfillment(f => { + const newFulfillments = {...f}; + switch (field){ + case "account_number": + newFulfillments.trackings[index()].additional_fields.account_number = newValue + break; + case "postal_code": + newFulfillments.trackings[index()].additional_fields.postal_code = newValue + break; + case "key": + newFulfillments.trackings[index()].additional_fields.key = newValue + break; + case "destination_country": + newFulfillments.trackings[index()].additional_fields.destination_country = newValue + break; + case "state": + newFulfillments.trackings[index()].additional_fields.state = newValue + break; + case "ship_date": + newFulfillments.trackings[index()].additional_fields.ship_date = newValue + break; + } + return newFulfillments; + }); + } + + function addTracking() { + setEditingFulfillment(f => { + const newFulfillments = {...f}; + newFulfillments.trackings.push(FulfillmentTrackingFactory.createDefault()); + return newFulfillments; + }); + } + + function removeTracking(index: Accessor) { + const newTrackings = [...editingFulfillment().trackings]; + newTrackings.splice(index(), 1); + setEditingFulfillment({ ...editingFulfillment(), trackings: newTrackings }); + } + + function additionalFields(slug: string) { + const r = courierMap().get(slug)?.required_fields || []; + return r.map((item) => ({ + key: item.replace(/^tracking_/, '') as keyof AdditionalFields, + name: item + .replace(/^tracking_/, '') + .split('_') + .map(capitalize) + .join(' '), + })); + }; + + const otherFulfillments = createMemo(() => { + if (editingFulfillment()) { + return fulfillments().filter((t) => t.id !== editingFulfillment().id); + } else { + return fulfillments(); + } + }); + + const otherFulfillmentsTrackings = createMemo(() => { + let filter = new Map(); + for (const otherFulfillment of otherFulfillments()) { + for (let t of otherFulfillment.trackings) { + let exist = filter.get(t.slug + t.tracking_number); + if (exist === undefined) { + filter.set(t.slug + t.tracking_number, true); + } + } + } + return filter + }); + + const remainLineItems = createMemo(() => calcUnfulfilledItems(otherFulfillments())); + + const validator = createMemo(() => { + let isValid = true; + let errors: string = ''; + + const items = editingFulfillment().items; + + if (!items || items.length === 0) { + return {isValid: false, errors: 'Required items'}; + } + // 任意 item.quantity > 0 即可 + isValid = false; + items.forEach((item) => { + if (item.quantity > 0) { + isValid = true; + } + }); + if (!isValid) { + return {isValid: false, errors: 'Required items'}; + } + + let filter = new Map(); + for (const tracking of editingFulfillment().trackings) { + if (tracking.slug === '') { + return { isValid: false, errors: 'Required tracking slug' }; + } + if (tracking.tracking_number === '') { + return { isValid: false, errors: 'Required tracking number' }; + } + if (tracking.tracking_number.length > 256) { + return { isValid: false, errors: 'Tracking number invalid' }; + } + + // check if tracking number has already been added by other fulfillments + let exist = otherFulfillmentsTrackings().get(tracking.slug + tracking.tracking_number); + if (exist) { + return { isValid: false, errors: 'Tracking number has already been added' }; + } + + // check if tracking number has already been added by current fulfillment + exist = filter.get(tracking.slug + tracking.tracking_number); + if (exist) { + return { isValid: false, errors: 'Tracking number has already been added' }; + } + if (exist === undefined) { + filter.set(tracking.slug + tracking.tracking_number, true); + } + + let requiredFields = courierMap().get(tracking.slug)?.required_fields || []; + if (requiredFields.length > 0) { + requiredFields.forEach((field) => { + let fieldKey = field.replace(/^tracking_/, '') as keyof AdditionalFields; + let fieldName = fieldKey.split('_').join(' '); + if (tracking.additional_fields[fieldKey] === '') { + isValid = false; + errors = `Required ${fieldName}`; + } + if (tracking.additional_fields[fieldKey].length > 256) { + isValid = false; + errors = `${fieldName} invalid`; + } + }); + } + } + + if (editingFulfillment().trackings.length > MAX_TRACKING_NUMBER || editingFulfillment().trackings.length == 0) { + isValid = false; + errors = 'Tracking number limit exceeded'; + } + + return { isValid, errors }; + }); + + const handleLineItemChange = (id: number, value: number) => { + setEditingFulfillment(f => { + const newFulfillment = {...f}; + let i = newFulfillment.items?.find((item) => item.id === id); + if (i !== undefined) { + i.quantity = value + } else { + newFulfillment.items?.push({id: id, quantity: value}); + } + return newFulfillment; + }); + }; + + const handleOk = () => { + props.onOk(editingFulfillment()); + }; + + const getTitle = createMemo( + () => { + return title().toString() + ` tracking - order - #${props.orderId}` + } + ); + + const buttonText = createMemo( + () => { + if (title().toString() == 'Edit') { + return 'Save' + } + return 'Add' + } + ); + + return ( + + + All items have been fulfilled}> + 0}> + + + + Items + Qty. + + + + + {(item) => ( + + {item.name} + + i.id === item.id)?.quantity || 0} + onChange={(val) => handleLineItemChange(item.id, val || 0)} + /> + + + )} + + + + + + + + {validator().errors} + + + + Update carrier list + + + {(tracking, index) => + + + + Courier: + { + updateFormValueAtIndex(index, 'slug', e.currentTarget.value) + }}> + + {(item) => {item.name || item.other_name}} + + + + + Tracking number: + + updateFormValueAtIndex(index, 'tracking_number', e.currentTarget.value) + } + /> + + removeTracking(index)}>x + + + + {(item) => ( + + + {item.name}: + updateAdditionalFieldsAtIndex(index, item.key, e.currentTarget.value)} + /> + + + )} + + + + } + + + = MAX_TRACKING_NUMBER} onClick={addTracking}>Add Tracking Number + + + ); +} diff --git a/assets/frontendv2/src/components/EditTrackingModal/index.ts b/assets/frontendv2/src/components/EditTrackingModal/index.ts new file mode 100644 index 0000000..2f93d8c --- /dev/null +++ b/assets/frontendv2/src/components/EditTrackingModal/index.ts @@ -0,0 +1,2 @@ +export { default } from './EditTrackingModal'; +export * from './EditTrackingModal'; diff --git a/assets/frontendv2/src/components/Modal/Modal.module.scss b/assets/frontendv2/src/components/Modal/Modal.module.scss new file mode 100644 index 0000000..e7233bf --- /dev/null +++ b/assets/frontendv2/src/components/Modal/Modal.module.scss @@ -0,0 +1,62 @@ +.container { + position: fixed; + top: 0; + right: 0; + z-index: 99999; +} + +.backdrop { + width: 100vw; + height: 100vh; + background-color: black; + opacity: 0.7; +} + +.modal { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: white; + width: 500px; + header { + background: #fcfcfc; + padding: 1em 1.5em; + border-bottom: 1px solid #ddd; + h1 { + margin: 0; + font-size: 18px; + font-weight: 700; + line-height: 1.5em; + } + div { + position: absolute; + top: 0; + right: 0; + width: 54px; + height: 54px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + border-left: 1px solid #ddd; + color: #666; + &:hover { + background: #ddd; + border-color: #ccc; + } + } + img { + height: 32px; + width: 32px; + } + } + footer { + padding: 1em 1.5em; + background: #fcfcfc; + border-top: 1px solid #dfdfdf; + box-shadow: 0 -4px 4px -4px rgba(0, 0, 0, 0.1); + display: flex; + justify-content: flex-end; + } +} diff --git a/assets/frontendv2/src/components/Modal/Modal.tsx b/assets/frontendv2/src/components/Modal/Modal.tsx new file mode 100644 index 0000000..2a1e231 --- /dev/null +++ b/assets/frontendv2/src/components/Modal/Modal.tsx @@ -0,0 +1,48 @@ +import { createEffect, JSX, Show } from 'solid-js'; +import Button from '../Button'; +import styles from './Modal.module.scss'; +import iconX from './x.svg'; + +interface ModalProps { + visible: boolean; + onOk?(): void; + okText?: string; + onCancel?(): void; + children: JSX.Element; + title?: string; + disabled?: boolean; +} + +export default function Modal(props: ModalProps) { + createEffect(() => { + if (props.visible) { + document.body.style.overflowY = 'hidden'; + } else { + document.body.style.overflowY = 'auto'; + } + }); + return ( + + + + + + {props.title} + + + + + {props.children} + + + + + ); +} diff --git a/assets/frontendv2/src/components/Modal/index.ts b/assets/frontendv2/src/components/Modal/index.ts new file mode 100644 index 0000000..0690fec --- /dev/null +++ b/assets/frontendv2/src/components/Modal/index.ts @@ -0,0 +1 @@ +export { default } from './Modal'; diff --git a/assets/frontendv2/src/components/Modal/x.svg b/assets/frontendv2/src/components/Modal/x.svg new file mode 100644 index 0000000..6868249 --- /dev/null +++ b/assets/frontendv2/src/components/Modal/x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/frontendv2/src/components/NumberInput/NumberInput.module.scss b/assets/frontendv2/src/components/NumberInput/NumberInput.module.scss new file mode 100644 index 0000000..d564118 --- /dev/null +++ b/assets/frontendv2/src/components/NumberInput/NumberInput.module.scss @@ -0,0 +1,56 @@ +.root { + display: flex; + align-items: center; + justify-content: space-between; + border: 1px solid #8c8f94; + border-radius: 4px; + height: 30px; + overflow: hidden; + input { + line-height: 26px; + border: 0; + padding-left: 8px; + &:focus { + outline: 0; + } + &[type='number']::-webkit-outer-spin-button, + &[type='number']::-webkit-inner-spin-button { + appearance: none; + margin: 0; + } + &[type='number'] { + appearance: textfield; + } + } + .suffix { + color: hsl(210, 4%, 44%); + margin-right: 8px; + cursor: default; + } + .action { + width: 22px; + padding: 2px; + height: 100%; + display: grid; + row-gap: 2px; + div { + border-radius: 2px; + background-color: #e4e5e7; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + &:hover { + background-color: #c9cbcf; + } + &:active { + background-color: #b3b5b9; + } + img { + width: 10px; + height: 10px; + user-select: none; + } + } + } +} diff --git a/assets/frontendv2/src/components/NumberInput/NumberInput.tsx b/assets/frontendv2/src/components/NumberInput/NumberInput.tsx new file mode 100644 index 0000000..f68b605 --- /dev/null +++ b/assets/frontendv2/src/components/NumberInput/NumberInput.tsx @@ -0,0 +1,92 @@ +import { mergeProps, Show } from 'solid-js'; +import styles from './NumberInput.module.scss'; +import iconUp from './images/caret-up-fill.svg'; +import iconDown from './images/caret-down-fill.svg'; + +export interface Props { + defaultValue?: number; + min?: number; + max?: number; + step?: number; + value?: number; + onChange(val: number | undefined): void; +} + +export default function NumberInput(props: Props) { + let inputRef: HTMLInputElement; + const merged = mergeProps({ step: 1 }, props); + + function isSmallerThanMin(value: string) { + return merged.min !== undefined && Number(value) < merged.min; + } + function isBiggerThanMax(value: string) { + return merged.max !== undefined && Number(value) > merged.max; + } + + function handleInput(value: string) { + if (!value) return; + if (isSmallerThanMin(value) || isBiggerThanMax(value)) return; + merged.onChange(Number(value)); + } + function handleBlur(value: string) { + if (value) { + if (isSmallerThanMin(value)) { + merged.onChange(merged.min); + inputRef.value = String(merged.min); + return; + } else if (isBiggerThanMax(value)) { + merged.onChange(merged.max); + inputRef.value = String(merged.max); + return; + } else { + merged.onChange(Number(value)); + } + } else { + inputRef.value = ''; + merged.onChange(undefined); + } + } + function handleArrowClick(sign: 1 | -1) { + const value = merged.value; + let nextValue; + if (value === undefined) { + nextValue = sign > 0 ? merged.min : merged.max; + merged.onChange(nextValue || 0); + } else { + nextValue = value + sign * merged.step; + const str = String(nextValue); + if (isSmallerThanMin(str) || isBiggerThanMax(str)) return; + } + merged.onChange(nextValue); + } + + return ( + + + (inputRef = el)} + type="number" + inputMode="numeric" + min={merged.min} + max={merged.max} + value={merged.value} + onInput={(e) => handleInput(e.currentTarget.value)} + onBlur={(e) => handleBlur(e.currentTarget.value)} + /> + + + inputRef.focus()}> + of {merged.max} + + + + handleArrowClick(1)} role="button" tabIndex={-1}> + + + handleArrowClick(-1)} role="button" tabIndex={-1}> + + + + + ); +} diff --git a/assets/frontendv2/src/components/NumberInput/images/caret-down-fill.svg b/assets/frontendv2/src/components/NumberInput/images/caret-down-fill.svg new file mode 100644 index 0000000..e4dce10 --- /dev/null +++ b/assets/frontendv2/src/components/NumberInput/images/caret-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/frontendv2/src/components/NumberInput/images/caret-up-fill.svg b/assets/frontendv2/src/components/NumberInput/images/caret-up-fill.svg new file mode 100644 index 0000000..e12f85c --- /dev/null +++ b/assets/frontendv2/src/components/NumberInput/images/caret-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/frontendv2/src/components/NumberInput/index.ts b/assets/frontendv2/src/components/NumberInput/index.ts new file mode 100644 index 0000000..1fcf585 --- /dev/null +++ b/assets/frontendv2/src/components/NumberInput/index.ts @@ -0,0 +1 @@ +export { default } from './NumberInput'; diff --git a/assets/frontendv2/src/components/Spinner/Spinner.module.scss b/assets/frontendv2/src/components/Spinner/Spinner.module.scss new file mode 100644 index 0000000..d97fed8 --- /dev/null +++ b/assets/frontendv2/src/components/Spinner/Spinner.module.scss @@ -0,0 +1,16 @@ +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.spinner { + display: block; + background-image: url('/wp-content/plugins/woocommerce/assets/images/icons/loader.svg'); + height: 26px; + width: 26px; + animation: spin 1s ease-in-out infinite; +} diff --git a/assets/frontendv2/src/components/Spinner/Spinner.tsx b/assets/frontendv2/src/components/Spinner/Spinner.tsx new file mode 100644 index 0000000..bd78ce7 --- /dev/null +++ b/assets/frontendv2/src/components/Spinner/Spinner.tsx @@ -0,0 +1,20 @@ +import { JSX } from 'solid-js'; +import styles from './Spinner.module.scss'; + +interface Props { + children: JSX.Element; + width?: JSX.CSSProperties['width']; + height?: JSX.CSSProperties['height']; +} + +export default function Spinner(props) { + return ( + + ); +} diff --git a/assets/frontendv2/src/components/Spinner/index.ts b/assets/frontendv2/src/components/Spinner/index.ts new file mode 100644 index 0000000..f90663a --- /dev/null +++ b/assets/frontendv2/src/components/Spinner/index.ts @@ -0,0 +1 @@ +export { default } from './Spinner'; diff --git a/assets/frontendv2/src/global.scss b/assets/frontendv2/src/global.scss new file mode 100644 index 0000000..2756970 --- /dev/null +++ b/assets/frontendv2/src/global.scss @@ -0,0 +1,21 @@ +:host { + all: initial; + font-family: inherit; + font-size: inherit; +} + +@import url('normalize.css/normalize.css'); + +* { + box-sizing: border-box; +} + +a { + cursor: pointer; + color: #2271b1; + transition: color 0.5s ease-in-out; + + &:hover { + color: #135e96; + } +} diff --git a/assets/frontendv2/src/metabox.tsx b/assets/frontendv2/src/metabox.tsx new file mode 100644 index 0000000..346ab42 --- /dev/null +++ b/assets/frontendv2/src/metabox.tsx @@ -0,0 +1,28 @@ +import { render } from 'solid-js/web'; +import Metabox from './pages/Metabox'; +import './global.scss'; + +customElements.define( + 'aftership-meta-box', + class Tracking extends HTMLElement { + private initialized = false; + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + + connectedCallback() { + if (!this.shadowRoot) return; + if (this.initialized) return; + this.initialized = true; + if (import.meta.env.MODE === 'production') { + const currentScript = document.currentScript as HTMLScriptElement; + const linkElm = document.createElement('link'); + linkElm.rel = 'stylesheet'; + linkElm.href = currentScript.src.replace(/\/index\.js\?/, '/style.css?'); + this.shadowRoot.appendChild(linkElm); + } + render(() => , this.shadowRoot); + } + } +); diff --git a/assets/frontendv2/src/orders.tsx b/assets/frontendv2/src/orders.tsx new file mode 100644 index 0000000..97cd822 --- /dev/null +++ b/assets/frontendv2/src/orders.tsx @@ -0,0 +1,28 @@ +import { render } from 'solid-js/web'; +import './global.scss'; +import Orders from './pages/Orders'; + +customElements.define( + 'aftership-orders-modal', + class Tracking extends HTMLElement { + private initialized = false; + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + + connectedCallback() { + if (!this.shadowRoot) return; + if (this.initialized) return; + this.initialized = true; + if (import.meta.env.MODE === 'production') { + const currentScript = document.currentScript as HTMLScriptElement; + const linkElm = document.createElement('link'); + linkElm.rel = 'stylesheet'; + linkElm.href = currentScript.src.replace(/\/index\.js\?/, '/style.css?'); + this.shadowRoot.appendChild(linkElm); + } + render(() => , this.shadowRoot); + } + } +); diff --git a/assets/frontendv2/src/pages/Metabox/Metabox.module.scss b/assets/frontendv2/src/pages/Metabox/Metabox.module.scss new file mode 100644 index 0000000..030909f --- /dev/null +++ b/assets/frontendv2/src/pages/Metabox/Metabox.module.scss @@ -0,0 +1,77 @@ +.root { + position: relative; +} + +.loading { + position: absolute; + height: 100%; + width: 100%; + top: 0; + left: 0; + background: #fff; + opacity: 0.6; + pointer-events: none; + display: flex; + align-items: center; + justify-content: center; +} + +.tracking { + padding: 16px 12px; + border-bottom: 1px solid #eeeeee; + .title { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; + color: #5f5f5f; + a { + font-size: 12px; + &:nth-child(2) { + color: #a00; + margin-left: 12px; + } + } + } +} +.content { + background-color: #f6f6f6; + padding: 12px; + font-size: 14px; + line-height: 1.43; +} + +.number { + margin-bottom: 2px; + & > div:nth-child(1) { + flex-shrink: 0; + word-break: break-all; + strong { + font-weight: 600; + color: #3c434a; + } + } + & > div:nth-child(2) { + text-overflow: ellipsis; + overflow: hidden; + word-break: keep-all; + a { + text-decoration: none; + } + } +} +.item { + display: flex; + flex-wrap: nowrap; + color: #404040; + div { + &:nth-child(1) { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + &:nth-child(2) { + flex-shrink: 0; + } + } +} diff --git a/assets/frontendv2/src/pages/Metabox/Metabox.tsx b/assets/frontendv2/src/pages/Metabox/Metabox.tsx new file mode 100644 index 0000000..7a5f46e --- /dev/null +++ b/assets/frontendv2/src/pages/Metabox/Metabox.tsx @@ -0,0 +1,161 @@ +import { Component, createMemo, createSignal, For, onMount } from 'solid-js'; +import Button from '@src/components/Button'; +import styles from './Metabox.module.scss'; +import { + courierMap, + deleteOrderFulfillment, + editOrderFulfillments, + fetchSelectedCouriers, + customDomain, + lineItems, + editingOrderNumber, fulfillments, fetchOrderFulfillments, +} from '@src/storages/tracking'; +import EditTrackingModal, { + editingFulfillment, + setEditingFulfillment, + setTitle +} from '@src/components/EditTrackingModal'; +import { + Fulfillment, + FulfillmentFactory, + FulfillmentTrackingFactory +} from '@src/typings/trackings'; +import {forEach} from "lodash-es"; +import md5 from 'crypto-js/md5'; +import { v4 as uuidv4 } from 'uuid'; + +export const Metabox: Component = () => { + const [showModal, setShowModal] = createSignal(false); + + const orderId = window.woocommerce_admin_meta_boxes.post_id; + + onMount(() => { + fetchOrderFulfillments(orderId); + fetchSelectedCouriers(); + }); + + const handleOk = async (f: Fulfillment) => { + const now = new Date().toISOString().replace(/\.\d+(?=Z$)/, ''); + if (f.id === '') { + f.created_at = now; + f.updated_at = now; + f.id = uuidv4(); + } else { + f.updated_at = now; + } + forEach(f.trackings || [], (tracking) => { + if (tracking.tracking_id === '') { + tracking.tracking_id = md5(`${tracking.slug}-${tracking.tracking_number}`).toString(); + } + }); + await editOrderFulfillments(orderId, f); + setShowModal(false); + setEditingFulfillment(FulfillmentFactory.createDefault()); + await fetchOrderFulfillments(orderId); + }; + + const handleCancel = () => { + setShowModal(false); + setEditingFulfillment(FulfillmentFactory.createDefault()); + }; + + const handleDelete = async (fulfillmentId: string) => { + await deleteOrderFulfillment(orderId, fulfillmentId); + await fetchOrderFulfillments(orderId); + }; + + const itemsMap = createMemo(() => { + const itemsMap = new Map(); + fulfillments().forEach(fulfillment => { + const items = fulfillment.items || []; + const arr = items.map((item, index) => { + const itemId = Number(item.id); + const match = lineItems().find(l => itemId === l.id); + return { + name: match?.name || String(item.id), + quantity: item.quantity, + }; + }); + itemsMap.set(String(fulfillment.id), arr); + }); + return itemsMap; + }); + + const formatTackingLink = (tracking_number: string, slug: string) => { + return /^https?:\/\//.test(customDomain()) + ? `${customDomain()}/${slug}/${tracking_number}` + : `https://${customDomain()}/${slug}/${tracking_number}`; + }; + + return ( + + + {fulfillments().map((fulfillment, index) => ( + + + Shipment {index + 1} + + { + // 💩 update data first, user maybe modify line_items + await fetchOrderFulfillments(orderId); + setEditingFulfillment(fulfillment); + setTitle('Edit'); + setShowModal(true); + }}> + Edit + + handleDelete(fulfillment.id)}>Delete + + + {(itemsMap().get(fulfillment.id) || []).map((item, index) => ( + + {item.name} x {item.quantity} + + ))} + + {fulfillment.trackings.map((tracking, index) => ( + + Tracking {index + 1} + + + {courierMap().get(tracking.slug)?.name || tracking.slug} + + + + {tracking.tracking_number} + + + + + ))} + + ))} + + + { + await fetchOrderFulfillments(orderId); + setTitle('Add'); + setShowModal(true); + }} + style={{width: '100%'}} + > + Add Tracking Number + + + + + ); +}; + +export default Metabox; diff --git a/assets/frontendv2/src/pages/Metabox/index.ts b/assets/frontendv2/src/pages/Metabox/index.ts new file mode 100644 index 0000000..0f9eb1d --- /dev/null +++ b/assets/frontendv2/src/pages/Metabox/index.ts @@ -0,0 +1,3 @@ +export { default } from './Metabox'; +export * from './Metabox'; + diff --git a/assets/frontendv2/src/pages/Orders/Orders.module.scss b/assets/frontendv2/src/pages/Orders/Orders.module.scss new file mode 100644 index 0000000..e69de29 diff --git a/assets/frontendv2/src/pages/Orders/Orders.tsx b/assets/frontendv2/src/pages/Orders/Orders.tsx new file mode 100644 index 0000000..a31ef8e --- /dev/null +++ b/assets/frontendv2/src/pages/Orders/Orders.tsx @@ -0,0 +1,110 @@ +import { Component, createSignal, onCleanup, onMount } from 'solid-js'; +import EditTrackingModal, {setTitle} from '@src/components/EditTrackingModal'; +import { + fetchOrderFulfillments, + fetchSelectedCouriers, + editOrderFulfillments, + editingOrderNumber, + deleteOrderFulfillmentTracking +} from '@src/storages/tracking'; +import {Fulfillment} from '@src/typings/trackings'; +import {forEach} from "lodash-es"; +import md5 from "crypto-js/md5"; +import { v4 as uuidv4 } from 'uuid'; + + +const Orders: Component = () => { + const [showModal, setShowModal] = createSignal(false); + const [orderId, setOrderId] = createSignal(''); + + const handleAddTrackingClick = async (e: MouseEvent) => { + const target = e.target as HTMLAnchorElement | null; + if (!target) return; + if (target.tagName !== 'A' || !target.className.includes('aftership_add_inline_tracking')) { + return; + } + e.preventDefault(); + const match = target.href.match(/#order-id-(\S+)$/); + if (match) { + await setOrderId(match[1]); + await fetchOrderFulfillments(match[1]); + setTitle('Add') + setShowModal(true); + } + }; + + const handleDeleteTrackingClick = async (e: MouseEvent) => { + const parentElement = (e.target as HTMLAnchorElement | null)?.parentElement; + if (!parentElement) return; + if ( + parentElement.tagName !== 'A' || + !parentElement.className.includes('aftership_inline_tracking_delete') + ) { + return; + } + e.preventDefault(); + const result = window.confirm('Do you really want to delete tracking number?'); + if (result) { + const dataSet = parentElement.dataset as { orderId: string; trackingId: string }; + const elPath = e.composedPath(); + await deleteOrderFulfillmentTracking(dataSet.orderId, dataSet.trackingId); + for (let el of elPath) { + if ( + el instanceof HTMLElement && + el.tagName === 'LI' && + el.parentElement?.className.includes('wcas-tracking-number-list') + ) { + el.remove(); + return; + } + } + } + window.location.reload(); + }; + + onMount(() => { + fetchSelectedCouriers(); + window.addEventListener('click', handleAddTrackingClick, true); + window.addEventListener('click', handleDeleteTrackingClick); + }); + + onCleanup(() => { + window.removeEventListener('click', handleAddTrackingClick); + window.removeEventListener('click', handleDeleteTrackingClick); + }); + + + const handleCancel = () => { + setShowModal(false); + }; + + const handleOk = async (f: Fulfillment) => { + const now = new Date().toISOString().replace(/\.\d+(?=Z$)/, ''); + if (f.id === '') { + f.created_at = now; + f.updated_at = now; + f.id = uuidv4(); + } else { + f.updated_at = now; + } + forEach(f.trackings || [], (tracking) => { + if (tracking.tracking_id === '') { + tracking.tracking_id = md5(`${tracking.slug}-${tracking.tracking_number}`).toString(); + } + }); + console.log('handleOk' + f); + await editOrderFulfillments(orderId(), f); + window.location.reload(); + }; + + return ( + + ); +}; + +export default Orders; diff --git a/assets/frontendv2/src/pages/Orders/index.ts b/assets/frontendv2/src/pages/Orders/index.ts new file mode 100644 index 0000000..14f351d --- /dev/null +++ b/assets/frontendv2/src/pages/Orders/index.ts @@ -0,0 +1 @@ +export { default } from './Orders'; diff --git a/assets/frontendv2/src/storages/tracking.ts b/assets/frontendv2/src/storages/tracking.ts new file mode 100644 index 0000000..9d8c858 --- /dev/null +++ b/assets/frontendv2/src/storages/tracking.ts @@ -0,0 +1,168 @@ +import { createSignal } from 'solid-js'; +import md5 from 'crypto-js/md5'; +import { stringifyUrl } from 'query-string'; + +import {Courier, LineItem, Fulfillment} from '@src/typings/trackings'; + + +interface GetFulfillmentsResponse { + data: { + line_items: LineItem[]; + fulfillments: Fulfillment[]; + number: string; // order number + }; +} + + +interface GetSelectedCouriersResponse { + data: { + couriers: Courier[]; + custom_domain: string; + }; +} + +export const [fulfillments, setFulfillments] = createSignal([]); +export const [selectedCouriers, setSelectedCouriers] = createSignal([]); +export const [courierMap, setCourierMap] = createSignal>(new Map()); +export const [lineItems, setLineItems] = createSignal([]); +export const [customDomain, setCustomDomain] = createSignal(''); +export const [editingOrderNumber, setEditingOrderNumber] = createSignal(''); + +const AJAX_URL = window.woocommerce_admin_meta_boxes.ajax_url; + +export async function fetchSelectedCouriers() { + await fetch( + stringifyUrl({ + url: AJAX_URL, + query: { + action: 'aftership_get_settings', + t: Date.now(), + }, + }) + ) + .then((res): Promise => res.json()) + .then((res) => { + const selected_couriers = res.data.couriers; + const nextCourierMap = new Map(courierMap()); + selected_couriers.forEach((c) => { + nextCourierMap.set(c.slug, c); + }); + setCourierMap((prev) => new Map([...prev, ...nextCourierMap])); + setSelectedCouriers(selected_couriers); + setCustomDomain(res.data.custom_domain); + }); +} + +export async function fetchOrderFulfillments(orderId: string) { + const security = document.querySelector('#aftership_get_nonce')?.value || ''; + await fetch( + stringifyUrl({ + url: AJAX_URL, + query: { + action: 'aftership_get_order_fulfillments', + security: security, + order_id: orderId, + t: Date.now(), + }, + }) + ) + .then((res): Promise => res.json()) + .then((res) => { + const data = res.data; + const allCouriers = window.get_aftership_couriers(); + const nextCourierMap = new Map(); + + data.fulfillments.forEach((f,index) => { + f.trackings.forEach((t) => { + if (nextCourierMap.has(t.slug)) return; + const c = allCouriers.find((c) => c.slug === t.slug); + if (c) { + nextCourierMap.set(t.slug, c); + } + }); + }); + + setCourierMap((prev) => new Map([...prev, ...nextCourierMap])); + setFulfillments(data.fulfillments); + setLineItems(data.line_items); + setEditingOrderNumber(data.number); + }); +} + +export async function editOrderFulfillments(orderId: string, data: Fulfillment) { + const oldFulfillment = fulfillments().find((f) => f.id === data.id); + const oldFulfillmentIndex = fulfillments().findIndex((f) => f.id === data.id); + let result: Fulfillment[] = [...fulfillments()]; + if (oldFulfillment) { + result.splice(oldFulfillmentIndex, 1, data); + } else { + result.push(data); + } + const security = document.querySelector('#aftership_create_nonce')?.value || ''; + + await fetch( + stringifyUrl({ + url: AJAX_URL, + query: { + action: 'aftership_save_order_fulfillments', + security: security, + }, + }), + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + order_id: orderId, + fulfillments: result, + }), + } + ); +} + +export async function deleteOrderFulfillment(orderId: string, fulfillmentId: string) { + const security = document.querySelector('#aftership_delete_nonce')?.value || ''; + await fetch( + stringifyUrl({ + url: AJAX_URL, + query: { + action: 'aftership_delete_order_fulfillments', + security: security, + }, + }), + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + order_id: orderId, + fulfillment_id: fulfillmentId, + }), + } + ); +} + +export async function deleteOrderFulfillmentTracking(orderId: string, trackingId: string) { + const security = document.querySelector('#aftership_delete_nonce')?.value || ''; + await fetch( + stringifyUrl({ + url: AJAX_URL, + query: { + action: 'aftership_delete_order_fulfillment_tracking', + security: security, + }, + }), + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + order_id: orderId, + tracking_id: trackingId, + }), + } + ); +} diff --git a/assets/frontendv2/src/typings/global.d.ts b/assets/frontendv2/src/typings/global.d.ts new file mode 100644 index 0000000..0e6f405 --- /dev/null +++ b/assets/frontendv2/src/typings/global.d.ts @@ -0,0 +1,11 @@ +import { Courier } from './trackings'; + +declare global { + interface Window { + woocommerce_admin_meta_boxes: { + post_id: string; + ajax_url: string; + }; + get_aftership_couriers(): Courier[]; + } +} diff --git a/assets/frontendv2/src/typings/trackings.ts b/assets/frontendv2/src/typings/trackings.ts new file mode 100644 index 0000000..011e62c --- /dev/null +++ b/assets/frontendv2/src/typings/trackings.ts @@ -0,0 +1,80 @@ +export interface AdditionalFields { + account_number: string; + key: string; + postal_code: string; + ship_date: string; + destination_country: string; + state: string; +} + +export interface Fulfillment { + id: string; + trackings: FulfillmentTracking[]; + items?: Pick[]; + created_at: string; + updated_at: string; + from_tracking: boolean; +} + +export interface FulfillmentTracking { + tracking_id: string; + slug: string; + tracking_number: string; + additional_fields: AdditionalFields; +} + +export interface LineItem { + id: number; + name: string; + product_id: number; + variation_id: number; + quantity: number; + sku: string; + // ... +} + +export type RequiredField = + | 'tracking_account_number' + | 'tracking_key' + | 'tracking_postal_code' + | 'tracking_ship_date' + | 'tracking_destination_country' + | 'tracking_state'; + +export interface Courier { + slug: string; + name: string; + other_name: string; + required_fields: RequiredField[]; +} + +export class FulfillmentTrackingFactory { + static createDefault(): FulfillmentTracking { + return { + tracking_id: '', + tracking_number: '', + slug: '', + additional_fields: { + account_number: '', + key: '', + postal_code: '', + ship_date: '', + destination_country: '', + state: '', + }, + }; + } +} + +export class FulfillmentFactory { + static createDefault(): Fulfillment { + return { + id: '', + trackings: [FulfillmentTrackingFactory.createDefault()], + items: [], + created_at: '', + updated_at: '', + from_tracking: false, + }; + } +} diff --git a/assets/frontendv2/src/utils/common.ts b/assets/frontendv2/src/utils/common.ts new file mode 100644 index 0000000..35a130d --- /dev/null +++ b/assets/frontendv2/src/utils/common.ts @@ -0,0 +1,27 @@ +import { lineItems } from '@src/storages/tracking'; +import {Fulfillment} from '@src/typings/trackings'; + +export function calcUnfulfilledItems(fulfillments: Fulfillment[]) { + const itemsMap = new Map(); + fulfillments.forEach((f) => { + f.items?.forEach((item) => { + // TODO 后端兼容后不需要转换 number + if (itemsMap.has(Number(item.id))) { + itemsMap.set(Number(item.id), (itemsMap.get(Number(item.id)) || 0) + Number(item.quantity)); + } else { + itemsMap.set(Number(item.id), Number(item.quantity)); + } + }); + }); + const remainLineItems = lineItems() + .map((item) => { + const currentQty = itemsMap.get(item.id) || 0; + return { + id: item.id, + name: item.name, + quantity: item.quantity - currentQty, + }; + }) + .filter((item) => item.quantity > 0); + return remainLineItems; +} diff --git a/assets/frontendv2/tsconfig.json b/assets/frontendv2/tsconfig.json new file mode 100644 index 0000000..9e39f2e --- /dev/null +++ b/assets/frontendv2/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client"], + "paths": { + "@src/*": ["./src/*"] + } + } +} diff --git a/assets/frontendv2/vite.config.metabox.ts b/assets/frontendv2/vite.config.metabox.ts new file mode 100644 index 0000000..df56ff9 --- /dev/null +++ b/assets/frontendv2/vite.config.metabox.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; +import path from 'path'; +import solidPlugin from 'vite-plugin-solid'; +// @ts-ignore +import MyExamplePlugin from './plugins/hotReloadShadowDomCss.js'; + +export default defineConfig({ + base: '/wp-content/plugins/aftership-woocommerce-tracking/assets/frontend/', + plugins: [solidPlugin(), MyExamplePlugin('aftership-meta-box')], + resolve: { + alias: { + '@src': path.resolve(__dirname, './src'), + }, + }, + build: { + target: 'es2015', + outDir: './dist/metabox', + lib: { + entry: 'src/metabox.tsx', + name: 'metabox', + fileName: (_format) => `index.js`, + formats: ['iife'], + }, + }, +}); diff --git a/assets/frontendv2/vite.config.orders.ts b/assets/frontendv2/vite.config.orders.ts new file mode 100644 index 0000000..50b5073 --- /dev/null +++ b/assets/frontendv2/vite.config.orders.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vite'; +import path from 'path'; +import solidPlugin from 'vite-plugin-solid'; + +export default defineConfig({ + base: '/wp-content/plugins/aftership-woocommerce-tracking/assets/frontend/', + plugins: [solidPlugin()], + resolve: { + alias: { + '@src': path.resolve(__dirname, './src'), + }, + }, + build: { + target: 'es2015', + outDir: './dist/orders', + lib: { + entry: 'src/orders.tsx', + name: 'orders', + fileName: (_format) => `index.js`, + formats: ['iife'], + }, + }, +}); diff --git a/assets/frontendv2/yarn.lock b/assets/frontendv2/yarn.lock new file mode 100644 index 0000000..52fa062 --- /dev/null +++ b/assets/frontendv2/yarn.lock @@ -0,0 +1,1291 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== + dependencies: + "@babel/highlight" "^7.16.0" + +"@babel/compat-data@^7.16.0": + version "7.16.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + +"@babel/core@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz" + integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" + "@babel/helpers" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz" + integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-compilation-targets@^7.16.0": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== + dependencies: + "@babel/compat-data" "^7.16.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz" + integrity sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== + dependencies: + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-member-expression-to-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz" + integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-transforms@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz" + integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-replace-supers@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz" + integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helpers@^7.16.0": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz" + integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.3" + "@babel/types" "^7.16.0" + +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.0", "@babel/parser@^7.16.3": + version "7.16.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz" + integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== + +"@babel/plugin-syntax-jsx@^7.10.4": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz" + integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz" + integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-typescript@^7.16.0": + version "7.16.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz" + integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-typescript" "^7.16.0" + +"@babel/preset-typescript@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz" + integrity sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-typescript" "^7.16.0" + +"@babel/template@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz" + integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.3" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.11.5", "@babel/types@^7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + +"@types/crypto-js@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.0.tgz" + integrity sha512-DCFfy/vh2lG6qHSGezQ+Sn2Ulf/1Mx51dqOdmOKyW5nMK3maLlxeS3onC7r212OnBM2pBR95HkAmAjjF08YkxQ== + +"@types/lodash-es@^4.17.5": + version "4.17.5" + resolved "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.5.tgz" + integrity sha512-SHBoI8/0aoMQWAgUHMQ599VM6ZiSKg8sh/0cFqqlQQMyY9uEplc0ULU5yQNzcvdR4ZKa0ey8+vFmahuRbOCT1A== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.178" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz" + integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== + +"@types/node@^17.0.7": + version "17.0.7" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz" + integrity sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +babel-plugin-jsx-dom-expressions@^0.30.9: + version "0.30.9" + resolved "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.30.9.tgz" + integrity sha512-FdfgH5IgB5vUCHGQtj65uZ4uiW42VPN2h2KgRwRkINL9/vHRPw0bsGKL+2CaI/LmLKvot9IXhqjSV/HhD0KDWA== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/types" "^7.11.5" + html-entities "2.3.2" + +babel-preset-solid@^1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.2.6.tgz" + integrity sha512-rFl9Sv/llx5fbE1zfx9QlQMsJz3q/nQZds2xq5Atnayop1NOyK9l/ychF2g3DWXoN9MbAR+ZxZqxzsPnOXAV+A== + dependencies: + babel-plugin-jsx-dom-expressions "^0.30.9" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.17.5: + version "4.18.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz" + integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== + dependencies: + caniuse-lite "^1.0.30001280" + electron-to-chromium "^1.3.896" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +caniuse-lite@^1.0.30001280: + version "1.0.30001286" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz" + integrity sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +"chokidar@>=3.0.0 <4.0.0": + version "3.5.2" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.16: + version "2.0.16" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + +debug@^4.1.0, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +electron-to-chromium@^1.3.896: + version "1.4.16" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz" + integrity sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +esbuild-android-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" + integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== + +esbuild-darwin-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" + integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== + +esbuild-darwin-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz" + integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== + +esbuild-freebsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" + integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== + +esbuild-freebsd-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" + integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== + +esbuild-linux-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" + integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== + +esbuild-linux-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" + integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== + +esbuild-linux-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" + integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== + +esbuild-linux-arm@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" + integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== + +esbuild-linux-mips64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" + integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== + +esbuild-linux-ppc64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" + integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== + +esbuild-netbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" + integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== + +esbuild-openbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" + integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== + +esbuild-sunos-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" + integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== + +esbuild-windows-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" + integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== + +esbuild-windows-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" + integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== + +esbuild-windows-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" + integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== + +esbuild@^0.13.12: + version "0.13.15" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz" + integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== + optionalDependencies: + esbuild-android-arm64 "0.13.15" + esbuild-darwin-64 "0.13.15" + esbuild-darwin-arm64 "0.13.15" + esbuild-freebsd-64 "0.13.15" + esbuild-freebsd-arm64 "0.13.15" + esbuild-linux-32 "0.13.15" + esbuild-linux-64 "0.13.15" + esbuild-linux-arm "0.13.15" + esbuild-linux-arm64 "0.13.15" + esbuild-linux-mips64le "0.13.15" + esbuild-linux-ppc64le "0.13.15" + esbuild-netbsd-64 "0.13.15" + esbuild-openbsd-64 "0.13.15" + esbuild-sunos-64 "0.13.15" + esbuild-windows-32 "0.13.15" + esbuild-windows-64 "0.13.15" + esbuild-windows-arm64 "0.13.15" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-entities@2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.2.0: + version "2.8.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +lilconfig@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz" + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + +lint-staged@^12.1.2: + version "12.1.2" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz" + integrity sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.16" + commander "^8.3.0" + debug "^4.3.2" + enquirer "^2.3.6" + execa "^5.1.1" + lilconfig "2.0.4" + listr2 "^3.13.3" + micromatch "^4.0.4" + normalize-path "^3.0.0" + object-inspect "^1.11.0" + string-argv "^0.3.1" + supports-color "^9.0.2" + yaml "^1.10.2" + +listr2@^3.13.3: + version "3.13.5" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz" + integrity sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.4.0" + through "^2.3.8" + wrap-ansi "^7.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +merge-anything@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/merge-anything/-/merge-anything-4.0.2.tgz" + integrity sha512-YxLHKgX8jN5xfKIxcwVNzQ2HpS0r9eUSqifgGhVARoZEW31Jwu95OQzX7qlFPBPQdCmNBhCYaqJzOcwAKi2Elg== + dependencies: + is-what "^3.14.1" + ts-toolbelt "^9.6.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimist@^1.2.5: + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.1.30: + version "3.3.4" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz" + integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-inspect@^1.11.0: + version "1.11.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz" + integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +postcss@^8.3.11, postcss@^8.4.5: + version "8.4.5" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz" + integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" + +prettier@^2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + +query-string@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.0.tgz" + integrity sha512-wnJ8covk+S9isYR5JIXPt93kFUmI2fQ4R/8130fuq+qwLiGVTurg7Klodgfw4NSz/oe7xnyi09y3lSrogUeM3g== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rollup@^2.59.0: + version "2.61.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz" + integrity sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA== + optionalDependencies: + fsevents "~2.3.2" + +rxjs@^7.4.0: + version "7.4.0" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz" + integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== + dependencies: + tslib "~2.1.0" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +sass@^1.44.0: + version "1.45.0" + resolved "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz" + integrity sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +solid-js@1.2.6, solid-js@^1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/solid-js/-/solid-js-1.2.6.tgz" + integrity sha512-NvPHJ5Vj5f+ZJWIioickrC55seovSkDtm5NzSpnoUk3z4tATv0STpy5iuGNEn51ZORUcwpZzrMAtOCGziXU1XA== + +solid-refresh@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.3.2.tgz" + integrity sha512-7lg3EjenGoxQvGoZnTD3d480wBxbpAiAsyk0dhoGq6hjcaAQ3vnsBGxvXV0LBTzeQcGmIRz1GeSsw/64YyNr+g== + dependencies: + "@babel/generator" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + "@babel/types" "^7.16.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz" + integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz" + integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g== + dependencies: + emoji-regex "^9.2.2" + is-fullwidth-code-point "^4.0.0" + strip-ansi "^7.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^9.0.2: + version "9.2.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz" + integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-toolbelt@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz" + integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== + +tslib@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^4.4.3: + version "4.5.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz" + integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ== + +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +vite-plugin-solid@2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.1.4.tgz" + integrity sha512-lhEPlDf4PB+KKu5ExaT3zaENqC8shpJ4H74a2R0qbr1MCiFvhE/AooWvIlclpHzBtDK6MmUKv25qSFoSC1EaXQ== + dependencies: + "@babel/core" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + babel-preset-solid "^1.2.6" + merge-anything "^4.0.1" + solid-js "^1.2.6" + solid-refresh "^0.3.2" + vite "^2.7.1" + +vite@2.7.10: + version "2.7.10" + resolved "https://registry.npmjs.org/vite/-/vite-2.7.10.tgz" + integrity sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w== + dependencies: + esbuild "^0.13.12" + postcss "^8.4.5" + resolve "^1.20.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +vite@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/vite/-/vite-2.7.1.tgz" + integrity sha512-TDXXhcu5lyQ6uosK4ZWaOyB4VzOiizk0biitRzDzaEtgSUi8rVYPc4k1xgOjLSf0OuceDJmojFKXHOX9DB1WuQ== + dependencies: + esbuild "^0.13.12" + postcss "^8.3.11" + resolve "^1.20.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/includes/api/aftership/v1/class-am-rest-settings-controller.php b/includes/api/aftership/v1/class-am-rest-settings-controller.php index 36d1df2..5b73706 100644 --- a/includes/api/aftership/v1/class-am-rest-settings-controller.php +++ b/includes/api/aftership/v1/class-am-rest-settings-controller.php @@ -109,6 +109,10 @@ public function create_or_update_settings( WP_REST_Request $data ) { $options['enable_import_tracking'] = $data['enable_import_tracking']; } + if ( isset( $data['enable_fulfillment_tracking'] ) && $data['enable_fulfillment_tracking'] ) { + $options['enable_fulfillment_tracking'] = $data['enable_fulfillment_tracking']; + } + // save notes to meta, value: 1 or -1 if ( isset( $data['save_notes_to_meta_data'] ) && $data['save_notes_to_meta_data'] ) { $options['save_notes_to_meta_data'] = $data['save_notes_to_meta_data']; diff --git a/includes/class-aftership-actions.php b/includes/class-aftership-actions.php index 727a485..2c61b06 100644 --- a/includes/class-aftership-actions.php +++ b/includes/class-aftership-actions.php @@ -81,12 +81,13 @@ public function admin_styles() { * order edit page: page id = "shop_order" */ public function load_orders_page_script( $hook ) { - if ( 'edit.php' !== $hook ) { + if (!in_array($hook, ['edit.php', 'woocommerce_page_wc-orders'])) { return; } // The following code will be executed only when the detect page which the function belongs to $page_screen = get_current_screen()->id; $screen_handle_tracking = array( + 'woocommerce_page_wc-orders', 'edit-shop_order', 'shop_order', ); @@ -114,10 +115,22 @@ public function load_orders_page_script( $hook ) { ); echo ''; - $plugin_url = $GLOBALS['AfterShip']->plugin_url; + // 前端灰度 + $plugin_url = $GLOBALS['AfterShip']->plugin_url; + $version = AfterShip_Fulfillment::get_instance()->frontend_version_controller(); + $src = ''; + switch ($version) { + case 'v1': + $src = $plugin_url . '/assets/frontend/dist/orders/index.js'; + break; + case 'v2': + $src = $plugin_url . '/assets/frontendv2/dist/orders/index.js'; + break; + } + wp_enqueue_script( 'aftership-orders-page-script', - $plugin_url . '/assets/frontend/dist/orders/index.js', + $src, array( 'wc-admin-order-meta-boxes' ), AFTERSHIP_VERSION ); @@ -189,7 +202,7 @@ class="edit-tracking" */ public function generate_tracking_page_link( $item ) { $custom_domain = str_replace( array( 'https://', 'http://' ), '', $GLOBALS['AfterShip']->custom_domain ); - return sprintf( 'https://%s/%s/%s', $custom_domain, $item['slug'], $item['tracking_number'] ); + return sprintf( 'https://%s/%s/%s', $custom_domain, safeArrayGet($item, 'slug', ''), safeArrayGet($item, 'tracking_number', '')); } /** @@ -226,7 +239,7 @@ public function migrate() { public function meta_box() { global $post; - $this->convert_old_meta_in_order( $post->ID ); + $this->convert_old_meta_in_order( isset($post->ID) ? $post->ID : 0); $this->migrate(); @@ -252,7 +265,21 @@ public function meta_box() { ); echo ''; - wp_enqueue_script( 'aftership-js-tracking-items', $GLOBALS['AfterShip']->plugin_url . '/assets/frontend/dist/metabox/index.js', array(), AFTERSHIP_VERSION ); + + // 前端灰度 + $plugin_url = $GLOBALS['AfterShip']->plugin_url; + $version = AfterShip_Fulfillment::get_instance()->frontend_version_controller(); + $src = ''; + switch ($version) { + case 'v1': + $src = $plugin_url . '/assets/frontend/dist/metabox/index.js'; + break; + case 'v2': + $src = $plugin_url . '/assets/frontendv2/dist/metabox/index.js'; + break; + } + + wp_enqueue_script( 'aftership-js-tracking-items', $src, array(), AFTERSHIP_VERSION ); } /** @@ -589,6 +616,7 @@ public function save_tracking_items( $order_id, $tracking_items ) { } } + /** * Gets a single tracking item from the post_meta array for an order. * @@ -1075,44 +1103,49 @@ public function render_wc_orders_list_columns( $column_name, $order ) { * * @return string Column content to render */ - public function get_automizely_aftership_tracking_column( $order_id ) { - ob_start(); - - $tracking_items = $this->get_tracking_items( $order_id ); - - if ( count( $tracking_items ) > 0 ) { - echo ''; - - foreach ( $tracking_items as $tracking_item ) { - // 根据 slug,匹配显示的 courier name - $provider_courier = $this->get_courier_by_slug( $tracking_item['slug'] ); - // 根据规则,生成 tracking link - $aftership_tracking_link = $this->generate_tracking_page_link( $tracking_item ); - - printf( - ' - - %s - - %s - - - - ', - esc_html( isset( $provider_courier['name'] ) ? $provider_courier['name'] : $tracking_item['slug'] ), - esc_url( $aftership_tracking_link ), - esc_html( $tracking_item['tracking_number'] ), - esc_html( $tracking_item['tracking_number'] ), - esc_attr( $tracking_item['tracking_id'] ), - esc_attr( $order_id ) - ); - } - echo ''; - } else { - echo '–'; - } - return apply_filters( 'woocommerce_shipment_tracking_get_automizely_aftership_tracking_column', ob_get_clean(), $order_id, $tracking_items ); - } + public function get_automizely_aftership_tracking_column( $order_id ) { + ob_start(); + + $fulfilments = $this->get_fulfillments_by_wc( $order_id ); + $tracking_items = []; + foreach ($fulfilments as $fulfilment) { + if (isset($fulfilment['trackings'])) { + $tracking_items = array_merge($tracking_items, $fulfilment['trackings']); + } + } + + if ( count( $tracking_items ) > 0 ) { + echo ''; + foreach ( $tracking_items as $tracking_item ) { + // 根据 slug,匹配显示的 courier name + $provider_courier = $this->get_courier_by_slug(safeArrayGet($tracking_item, 'slug', '')); + // 根据规则,生成 tracking link + $aftership_tracking_link = $this->generate_tracking_page_link( $tracking_item ); + + printf( + ' + + %s + + %s + + + + ', + esc_html( safeArrayGet($provider_courier, 'name', safeArrayGet($tracking_item, 'slug', ''))), + esc_url( $aftership_tracking_link ), + esc_html( safeArrayGet($tracking_item, 'tracking_number', '')), + esc_html( safeArrayGet($tracking_item, 'tracking_number', '')), + esc_attr( safeArrayGet($tracking_item, 'tracking_id', '')), + esc_attr( $order_id ) + ); + } + echo ''; + } else { + echo '–'; + } + return apply_filters( 'woocommerce_shipment_tracking_get_automizely_aftership_tracking_column', ob_get_clean(), $order_id, $tracking_items ); + } /** * Order Tracking Get All Order Items AJAX @@ -1188,6 +1221,17 @@ public function save_order_tracking() { $this->format_aftership_tracking_output( 200, 'success' ); } + + private function is_any_fulfillment_from_tracking($fulfillments) + { + foreach ($fulfillments as $fulfillment) { + if ($fulfillment['from_tracking']) { + return true; + } + } + return false; + } + /** * Order Tracking Delete * @@ -1214,6 +1258,10 @@ public function delete_order_tracking() { $this->format_aftership_tracking_output( 200, 'success' ); } + + + + /** * Validate required fields */ @@ -1230,6 +1278,8 @@ private function check_aftership_tracking_fields( $order_id, $trackings ) { } } + + /** * Check fulfill item quantity */ @@ -1258,7 +1308,7 @@ private function check_order_fulfill_items( $order_id, $trackings, $only_check = /** * Get order item detail */ - private function get_order_item_data( $order_id ) { + public function get_order_item_data( $order_id ) { $order = wc_get_order( $order_id ); $line_items = array(); foreach ( $order->get_items() as $item_key => $item ) { @@ -1297,7 +1347,7 @@ private function get_order_item_data( $order_id ) { /** * Format output */ - private function format_aftership_tracking_output( $code, $message, $data = array() ) { + public function format_aftership_tracking_output( $code, $message, $data = array() ) { $response = array( 'meta' => array( 'code' => $code, diff --git a/includes/class-aftership-fulfillment.php b/includes/class-aftership-fulfillment.php new file mode 100644 index 0000000..d5f2c78 --- /dev/null +++ b/includes/class-aftership-fulfillment.php @@ -0,0 +1,313 @@ +format_aftership_tracking_output( 422, 'missing order_id field' ); + } + $order_id = wc_clean( $_REQUEST['order_id'] ); + + // migrate old tracking data + AfterShip_Actions::get_instance()->convert_old_meta_in_order( $order_id ); + + $order_line_items = AfterShip_Actions::get_instance()->get_order_item_data( $order_id ); + $order_fulfillment_items = $this->get_fulfillments_by_wc( $order_id ); +// error_log('order_fulfillment_items' . var_export($order_fulfillment_items, true)); + + $order = new WC_Order( $order_id ); + $order_trackings = array( + 'line_items' => $order_line_items, + 'fulfillments' => $order_fulfillment_items, + 'number' => (string) $order->get_order_number(), + ); + + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 200, 'success', $order_trackings ); + } catch (Exception $e) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 500, 'server error' . $e->getMessage() ); + } + } + + public function trackings_to_fulfillments($trackings) + { + $fulfillments = array(); + foreach ($trackings as $index => $tracking ) { + $f = []; + $f['id'] = (string)($index+1); + $f['items'] = safeArrayGet($tracking, 'line_items', []); + if (isset($tracking['metrics'])) { + $f['created_at'] = safeArrayGet($tracking['metrics'], 'created_at', ''); + $f['updated_at'] = safeArrayGet($tracking['metrics'], 'updated_at', ''); + } + $f['from_tracking'] = true; + + // trackings to fulfillment trackings + $t_arr = []; + $t_arr[] = [ + 'tracking_id' => safeArrayGet($tracking, 'tracking_id', ''), + 'tracking_number'=> safeArrayGet($tracking, 'tracking_number', ''), + 'slug' => safeArrayGet($tracking, 'slug', ''), + 'additional_fields' => safeArrayGet($tracking, 'additional_fields', []), + ]; + $f['trackings'] = $t_arr; + + $fulfillments[] = $f; + } + return $fulfillments; + } + + public function get_fulfillments_by_wc($order_id) + { + $order = new WC_Order($order_id); + $fulfillments = $order->get_meta( '_aftership_fulfillments', true ); + if (!empty($fulfillments)) { + return $fulfillments; + } + $trackings = AfterShip_Actions::get_instance()->get_tracking_items($order_id); + $fulfillments = $this->trackings_to_fulfillments($trackings); + $this->save_fulfillments_to_wc($order_id, $fulfillments); + return $fulfillments; + } + + public function save_order_fulfillments_controller() + { + try { + check_ajax_referer( 'create-tracking-item', 'security', true ); + $params = json_decode( file_get_contents( 'php://input' ), true ); + $order_id = wc_clean( $params['order_id'] ); + $order_fulfillments = $params['fulfillments']; + // check + $order_fulfillments = $this->check_aftership_fulfillments_fields($order_id, $order_fulfillments); + $this->check_order_fulfillments_items($order_id, $order_fulfillments); + // clear old tracking + $old_trackings = $this->fulfillments_to_trackings($order_fulfillments); + // migrate old tracking data + AfterShip_Actions::get_instance()->save_tracking_items( $order_id, $old_trackings); + // save + $this->save_fulfillments_to_wc($order_id, $order_fulfillments); + // date_modified update + $order = new WC_Order( $order_id ); + $order->set_date_modified( current_time( 'mysql' ) ); + $order->save(); + // response + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 200, 'success' ); + } catch (Exception $e) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 500, 'server error' . $e->getMessage() ); + } + } + + private function check_order_fulfillments_items( $order_id, $fulfillments, $only_check = false ) { + // get order line items + $order_line_items = AfterShip_Actions::get_instance()->get_order_item_data( $order_id ); + $line_item_quantity = absint( array_sum( array_column( $order_line_items, 'quantity' ) ) ); + $fulfillment_items = array_column( $fulfillments, 'items' ); + + $tmp = array(); + foreach ( $fulfillment_items as $one ) { + $result = array_merge( $tmp, $one ); + $tmp = $result; + } + $fulfill_items_quantity = absint( array_sum( array_column( $tmp, 'quantity' ) ) ); + + if ( $fulfill_items_quantity > $line_item_quantity ) { + if ( $only_check ) { + return true; + } + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'fulfill item quantity gte order item qiantity' ); + } + } + + private function check_aftership_fulfillments_fields( $order_id, $fulfillments ) { + if ( empty( $order_id ) || empty( $fulfillments ) || ! is_array( $fulfillments )) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'missing required field' ); + } + + foreach ($fulfillments as $i => $fulfillment) { + if (empty($fulfillment['trackings']) || !is_array($fulfillment['trackings'])){ + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'missing required field' ); + } + foreach ($fulfillment['trackings'] as $j => $tracking) { + $tracking_number = str_replace(' ', '', safeArrayGet($tracking, 'tracking_number', '')); + if (empty($tracking_number) || empty($tracking['slug'])) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'missing required field' ); + } + if (strlen($tracking_number) > 256 || strlen($tracking['slug']) > 256 || strlen($tracking['tracking_id']) > 256) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 400, 'bad request' ); + } + $fulfillments[$i]['trackings'][$j]['tracking_number'] = $tracking_number; + + $additional_fields = safeArrayGet($tracking, 'additional_fields', []); + foreach ($additional_fields as $key => $value) { + $value = str_replace(' ', '', isset($value) ? $value : ''); + if (strlen($value) > 256) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 400, 'bad request' ); + } + $fulfillments[$i]['trackings'][$j]['additional_fields'][$key] = $value; + } + } + } + return $fulfillments; + } + + private function fulfillments_to_trackings($fulfillments) + { + $trackings = array(); + foreach ($fulfillments as $fulfillment) { + foreach ($fulfillment['trackings'] as $tracking) { + $tracking['tracking_number'] = safeArrayGet($tracking, 'tracking_number', ''); + $tracking['tracking_id'] = safeArrayGet($tracking, 'tracking_id', ''); + $tracking['additional_fields'] = safeArrayGet($tracking, 'additional_fields', []); + $tracking['slug'] = safeArrayGet($tracking, 'slug', ''); + $tracking['line_items'] = safeArrayGet($fulfillment, 'items', []); + $tracking['metrics']['created_at'] = safeArrayGet($fulfillment, 'created_at', ''); + $tracking['metrics']['updated_at'] = safeArrayGet($fulfillment, 'updated_at', ''); + $trackings[] = $tracking; + } + } + return $trackings; + } + + public function save_fulfillments_to_wc($order_id, $fulfillments) + { +// error_log("save_fulfillments_to_wc".var_export($fulfillments, true)); + $order = new WC_Order($order_id); + $order->update_meta_data('_aftership_fulfillments', $fulfillments); + if ( custom_orders_table_usage_is_enabled() ) { + $order->save(); + } else { + $order->save_meta_data(); + } + } + + public function delete_order_fulfillments_controller() { + try { + check_ajax_referer( 'delete-tracking-item', 'security', true ); + + $params = json_decode( file_get_contents( 'php://input' ), true ); + $order_id = wc_clean( $params['order_id'] ); + $fulfillment_id = wc_clean( $params['fulfillment_id'] ); + + if ( empty( $order_id ) ) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'missing required field' ); + } + + $deleted_fulfillment = $this->delete_fulfillment($order_id, $fulfillment_id); + foreach (safeArrayGet($deleted_fulfillment, 'trackings', []) as $tracking) { + AfterShip_Actions::get_instance()->delete_tracking_item( $order_id, $tracking['tracking_id'] ); + } + + // date_modified update + $order = new WC_Order( $order_id ); + $order->set_date_modified( current_time( 'mysql' ) ); + $order->save(); + + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 200, 'success' ); + } catch (Exception $e) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 500, 'server error' . $e->getMessage() ); + } + } + + public function delete_fulfillment( $order_id, $fulfillment_id ) + { + $fulfillments = $this->get_fulfillments_by_wc($order_id); + $deleted_fulfillment = null; + + if ( count( $fulfillments ) > 0 ) { + foreach ( $fulfillments as $key => $item ) { + if ( $item['id'] == $fulfillment_id ) { + $deleted_fulfillment = $item; + unset( $fulfillments[ $key ] ); + break; + } + } + $this->save_fulfillments_to_wc( $order_id, array_values( $fulfillments ) ); + } + return $deleted_fulfillment; + } + + public function delete_order_fulfillment_tracking_controller() { + try { + check_ajax_referer( 'delete-tracking-item', 'security', true ); + + $params = json_decode( file_get_contents( 'php://input' ), true ); + $order_id = wc_clean( $params['order_id'] ); + $tracking_id = wc_clean( $params['tracking_id'] ); + + if ( empty( $order_id ) || empty( $tracking_id ) ) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 422, 'missing required field' ); + } + + $this->delete_fulfillment_tracking( $order_id, $tracking_id ); + AfterShip_Actions::get_instance()->delete_tracking_item( $order_id, $tracking_id ); + + // date_modified update + $order = new WC_Order( $order_id ); + $order->set_date_modified( current_time( 'mysql' ) ); + $order->save(); + + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 200, 'success' ); + } catch (Exception $e) { + AfterShip_Actions::get_instance()->format_aftership_tracking_output( 500, 'server error' . $e->getMessage() ); + } + } + + public function delete_fulfillment_tracking( $order_id, $tracking_id ) + { + $fulfillments = $this->get_fulfillments_by_wc($order_id); + if (count($fulfillments) <= 0) { + return; + } + + foreach ( $fulfillments as $index => $fulfillment ) { + if (isset($fulfillment['trackings'])) { + $trackings = $fulfillment['trackings']; + foreach ($trackings as $key => $item) { + if ($item['tracking_id'] === $tracking_id) { + unset($trackings[$key]); + break; + } + } + $fulfillment['trackings'] = array_values($trackings); + + if (count($fulfillment['trackings']) === 0) { + unset($fulfillments[$index]); + } else { + $fulfillments[$index] = $fulfillment; + } + } + } + $this->save_fulfillments_to_wc( $order_id, array_values( $fulfillments ) ); + } +} \ No newline at end of file diff --git a/readme.txt b/readme.txt index 2662e00..25db513 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Donate link: https://www.aftership.com/ Tags: woocommerce shipping,woocommerce tracking,shipment tracking,order tracking, woocommerce,track order,dhl,ups,usps,fedex,shipping,tracking,order Requires at least: 2.9 Tested up to: 6.5 -Stable tag: 1.17.14 +Stable tag: 1.17.15 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -141,6 +141,9 @@ Tailor a dynamic branded tracking page. Upload promotional banner, logo, and fav == Changelog == += 1.17.15 = +* Support Multi Tracking Numbers in one Shipments (BETA) + = 1.17.14 = * Fix known issue diff --git a/woo-includes/woo-functions.php b/woo-includes/woo-functions.php index 9093e69..588e544 100644 --- a/woo-includes/woo-functions.php +++ b/woo-includes/woo-functions.php @@ -14,6 +14,12 @@ function is_woocommerce_active() { } } +if ( ! function_exists( 'safeArrayGet' ) ) { + function safeArrayGet($array, $key, $default = null) { + return isset($array[$key]) ? $array[$key] : $default; + } +} + if ( ! function_exists( 'wc_order_util_method_exists' ) ) { function wc_order_util_method_exists($method_name) { return class_exists('Automattic\WooCommerce\Utilities\OrderUtil') && method_exists('Automattic\WooCommerce\Utilities\OrderUtil', $method_name);