diff --git a/Sukhpreet/Frappe-erpN-docker.md b/Sukhpreet/Frappe-erpN-docker.md new file mode 100644 index 0000000..089b8c5 --- /dev/null +++ b/Sukhpreet/Frappe-erpN-docker.md @@ -0,0 +1,77 @@ +# Frappe, ERPNext, and Docker Setup on Linux + +## Step 1: Update System Packages +```bash +sudo apt update && sudo apt upgrade -y +``` +## Step 2: Install Required Dependencies +```bash +sudo apt install -y python3-dev python3-setuptools python3-pip virtualenv software-properties-common curl +``` +## Step 3: Install Docker +1. Set up the Docker repository: +```bash +sudo apt update +sudo apt install -y apt-transport-https ca-certificates curl software-properties-common +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +``` +2. Install Docker and Docker Compose: +```bash +sudo apt update +sudo apt install -y docker-ce docker-ce-cli containerd.io +sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose +``` +3. Verify Docker and Docker Compose installation: +```bash +docker --version +docker-compose --version +``` +## Step 4: Install Frappe Bench +1. Install Nodejs and yarn +```bash +curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - +sudo apt install -y nodejs +sudo npm install -g yarn +``` +2. Install Redis(required for Frappe): +```bash +sudo apt install -y redis-server +``` +3. Install wkhtmltopdf (required for PDF generation in ERPNext): +```bash +sudo apt install -y wkhtmltopdf +``` +4. Install Frappe Bench CLI: +```bash +sudo pip3 install frappe-bench +``` +## Step 5: Set Up Frappe and ERPNext Using Docker +1. Create a Project Directory: +```bash +mkdir frappe_docker +cd frappe_docker +``` +2. Clone Frappe Docker Repositry: +```bash +git clone https://github.com/frappe/frappe_docker.git . +``` +3. Copy Example Environment Files: +```bash +cp env-local .env +cp example/docker-compose.yml docker-compose.yml +``` +4. Initialize the Frappe Site: +```bash +docker-compose run --rm site-creator +``` +5. Start Frappe and ERPNext: +```bash +docker-compose up -d +``` +## Step 6: Access ERPNext +After the setup completes, you can access ERPNext by visiting: +```bash +http://localhost:8080 +``` diff --git a/NGINX-topics.md b/Sukhpreet/NGINX-topics.md similarity index 100% rename from NGINX-topics.md rename to Sukhpreet/NGINX-topics.md diff --git a/Sukhpreet/books_management/README.md b/Sukhpreet/books_management/README.md new file mode 100644 index 0000000..86c8950 --- /dev/null +++ b/Sukhpreet/books_management/README.md @@ -0,0 +1,45 @@ +### Books Management + +This app manage the books shelf + +### Installation + +You can install this app using the [bench](https://github.com/frappe/bench) CLI: + +```bash +cd $PATH_TO_YOUR_BENCH +bench get-app $URL_OF_THIS_REPO --branch develop +bench install-app books_management +bench --site books_management migrate #to ensure the database is set up correctly +``` +### Bench running +```bash +cd $PATH_TO_YOUR_BENCH +bench start #run +``` +### Books Management app uses Vuejs for frontend: +```bash +cd apps/books_management/books_management/www/ +npm install #run +npm run dev # to start the application +``` + +### Contributing + +This app uses `pre-commit` for code formatting and linting. Please [install pre-commit](https://pre-commit.com/#installation) and enable it for this repository: + +```bash +cd apps/books_management +pre-commit install +``` + +Pre-commit is configured to use the following tools for checking and formatting your code: + +- ruff +- eslint +- prettier +- pyupgrade + +### License + +mit diff --git a/Sukhpreet/books_management/books_management/__init__.py b/Sukhpreet/books_management/books_management/__init__.py new file mode 100644 index 0000000..f102a9c --- /dev/null +++ b/Sukhpreet/books_management/books_management/__init__.py @@ -0,0 +1 @@ +__version__ = "0.0.1" diff --git a/Sukhpreet/books_management/books_management/__pycache__/__init__.cpython-312.pyc b/Sukhpreet/books_management/books_management/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..f4573bc Binary files /dev/null and b/Sukhpreet/books_management/books_management/__pycache__/__init__.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/__pycache__/api.cpython-312.pyc b/Sukhpreet/books_management/books_management/__pycache__/api.cpython-312.pyc new file mode 100644 index 0000000..3f339d2 Binary files /dev/null and b/Sukhpreet/books_management/books_management/__pycache__/api.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/__pycache__/hooks.cpython-312.pyc b/Sukhpreet/books_management/books_management/__pycache__/hooks.cpython-312.pyc new file mode 100644 index 0000000..23488c2 Binary files /dev/null and b/Sukhpreet/books_management/books_management/__pycache__/hooks.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/api.py b/Sukhpreet/books_management/books_management/api.py new file mode 100644 index 0000000..b157c84 --- /dev/null +++ b/Sukhpreet/books_management/books_management/api.py @@ -0,0 +1,7 @@ +import frappe + +@frappe.whitelist(allow_guest=True) +def user_role(): + user = frappe.session.user + roles = frappe.get_roles(user) + return {"is_librarian": "Librarian" in roles} diff --git a/Sukhpreet/books_management/books_management/books_management/__init__.py b/Sukhpreet/books_management/books_management/books_management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Sukhpreet/books_management/books_management/books_management/__pycache__/__init__.cpython-312.pyc b/Sukhpreet/books_management/books_management/books_management/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..ee6b2d8 Binary files /dev/null and b/Sukhpreet/books_management/books_management/books_management/__pycache__/__init__.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/__init__.py b/Sukhpreet/books_management/books_management/books_management/doctype/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/__pycache__/__init__.cpython-312.pyc b/Sukhpreet/books_management/books_management/books_management/doctype/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..4552c88 Binary files /dev/null and b/Sukhpreet/books_management/books_management/books_management/doctype/__pycache__/__init__.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/__init__.py b/Sukhpreet/books_management/books_management/books_management/doctype/book/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/__init__.cpython-312.pyc b/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..e20df0f Binary files /dev/null and b/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/__init__.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/book.cpython-312.pyc b/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/book.cpython-312.pyc new file mode 100644 index 0000000..685c812 Binary files /dev/null and b/Sukhpreet/books_management/books_management/books_management/doctype/book/__pycache__/book.cpython-312.pyc differ diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/book.js b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.js new file mode 100644 index 0000000..7bf05a3 --- /dev/null +++ b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.js @@ -0,0 +1,8 @@ +// Copyright (c) 2024, Sukhpreet Singh and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Book", { +// refresh(frm) { + +// }, +// }); diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/book.json b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.json new file mode 100644 index 0000000..d3f11da --- /dev/null +++ b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.json @@ -0,0 +1,130 @@ +{ + "actions": [], + "allow_guest_to_view": 1, + "allow_rename": 1, + "autoname": "field:book_name", + "creation": "2024-11-26 20:47:25.037701", + "doctype": "DocType", + "engine": "InnoDB", + "field_order": [ + "book_name", + "author", + "image", + "column_break_ehlk", + "isbn", + "status", + "publisher", + "section_break_zfal", + "description", + "route", + "published" + ], + "fields": [ + { + "fieldname": "book_name", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Book Name", + "unique": 1 + }, + { + "fieldname": "image", + "fieldtype": "Attach Image", + "label": "Image" + }, + { + "fieldname": "author", + "fieldtype": "Data", + "label": "Author" + }, + { + "fieldname": "description", + "fieldtype": "Text Editor", + "label": "Description" + }, + { + "fieldname": "isbn", + "fieldtype": "Data", + "label": "ISBN" + }, + { + "fieldname": "status", + "fieldtype": "Select", + "label": "Status", + "options": "Issued\nAvailable" + }, + { + "fieldname": "publisher", + "fieldtype": "Data", + "label": "Publisher" + }, + { + "fieldname": "column_break_ehlk", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_zfal", + "fieldtype": "Section Break" + }, + { + "fieldname": "route", + "fieldtype": "Data", + "label": "Route" + }, + { + "default": "0", + "fieldname": "published", + "fieldtype": "Check", + "label": "Published" + } + ], + "has_web_view": 1, + "index_web_pages_for_search": 1, + "is_published_field": "published", + "links": [], + "modified": "2024-12-20 03:52:47.223028", + "modified_by": "Administrator", + "module": "Books Management", + "name": "Book", + "naming_rule": "Expression (old style)", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Librarian", + "share": 1, + "write": 1 + }, + { + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Library Member", + "share": 1 + } + ], + "route": "books", + "sort_field": "creation", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/book.py b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.py new file mode 100644 index 0000000..31433fe --- /dev/null +++ b/Sukhpreet/books_management/books_management/books_management/doctype/book/book.py @@ -0,0 +1,10 @@ +# # Copyright (c) 2024, Sukhpreet Singh and contributors +# # For license information, please see license.txt + +# # import frappe +from frappe.website.website_generator import WebsiteGenerator + + +class Book(WebsiteGenerator): + pass +# In Book.py (or a custom script) diff --git a/Sukhpreet/books_management/books_management/books_management/doctype/book/templates/book.html b/Sukhpreet/books_management/books_management/books_management/doctype/book/templates/book.html new file mode 100644 index 0000000..5742e24 --- /dev/null +++ b/Sukhpreet/books_management/books_management/books_management/doctype/book/templates/book.html @@ -0,0 +1,108 @@ +{% extends "templates/web.html" %} + + + +{% block page_content %} + + +
Publisher: {{ publisher }}
+ISBN: {{ isbn }}
+By: {{ author }}
+ +{if(!s._listeners)return;let o=s._listeners.length;for(;o-- >0;)s._listeners[o](r);s._listeners=null}),this.promise.then=r=>{let o;const i=new Promise(l=>{s.subscribe(l),o=l}).then(r);return i.cancel=function(){s.unsubscribe(o)},i},t(function(o,i,l){s.reason||(s.reason=new $t(o,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new hr(function(r){t=r}),cancel:t}}}function xd(e){return function(n){return e.apply(null,n)}}function vd(e){return y.isObject(e)&&e.isAxiosError===!0}const $s={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries($s).forEach(([e,t])=>{$s[t]=e});function fl(e){const t=new wt(e),n=$i(wt.prototype.request,t);return y.extend(n,wt.prototype,t,{allOwnKeys:!0}),y.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return fl(Rt(e,r))},n}const ie=fl(yn);ie.Axios=wt;ie.CanceledError=$t;ie.CancelToken=hr;ie.isCancel=sl;ie.VERSION=al;ie.toFormData=es;ie.AxiosError=$;ie.Cancel=ie.CanceledError;ie.all=function(t){return Promise.all(t)};ie.spread=xd;ie.isAxiosError=vd;ie.mergeConfig=Rt;ie.AxiosHeaders=we;ie.formToJSON=e=>nl(y.isHTMLForm(e)?new FormData(e):e);ie.getAdapter=ul.getAdapter;ie.HttpStatusCode=$s;ie.default=ie;const Od={data(){return{book:null}},async mounted(){await this.fetchBookDetail()},methods:{async fetchBookDetail(){try{const e=this.$route.params.bookRoute;if(!e){console.error("Book route is undefined.");return}const t=await ie.get(`http://books.localhost:8002/api/resource/Book/${e}`);this.book=t.data.data}catch(e){console.error("Error fetching book details:",e)}}}},Td=$a({history:ya("/assets/books_management/"),routes:[{path:"/",component:Ga},{path:"/:bookRoute",component:Od}]});Iu(Hu).use(Td).mount("#app");
diff --git a/Sukhpreet/books_management/books_management/public/assets/index-CqYQ2v1v.js b/Sukhpreet/books_management/books_management/public/assets/index-CqYQ2v1v.js
new file mode 100644
index 0000000..5e4b729
--- /dev/null
+++ b/Sukhpreet/books_management/books_management/public/assets/index-CqYQ2v1v.js
@@ -0,0 +1,17 @@
+(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**
+* @vue/shared v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function Os(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const U={},Ze=[],we=()=>{},Rr=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Es=e=>e.startsWith("onUpdate:"),Y=Object.assign,As=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Fr=Object.prototype.hasOwnProperty,D=(e,t)=>Fr.call(e,t),P=Array.isArray,Qe=e=>Wt(e)==="[object Map]",On=e=>Wt(e)==="[object Set]",M=e=>typeof e=="function",J=e=>typeof e=="string",He=e=>typeof e=="symbol",K=e=>e!==null&&typeof e=="object",En=e=>(K(e)||M(e))&&M(e.then)&&M(e.catch),An=Object.prototype.toString,Wt=e=>An.call(e),Dr=e=>Wt(e).slice(8,-1),Pn=e=>Wt(e)==="[object Object]",Ps=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ht=Os(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Hr=/-(\w)/g,De=qt(e=>e.replace(Hr,(t,s)=>s?s.toUpperCase():"")),Nr=/\B([A-Z])/g,Ge=qt(e=>e.replace(Nr,"-$1").toLowerCase()),Mn=qt(e=>e.charAt(0).toUpperCase()+e.slice(1)),ts=qt(e=>e?`on${Mn(e)}`:""),We=(e,t)=>!Object.is(e,t),ss=(e,...t)=>{for(let s=0;s0)return;if(gt){let t=gt;for(gt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;pt;){let t=pt;for(pt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function jn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function $n(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Fs(n),Jr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function ps(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Bn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Bn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===yt))return;e.globalVersion=yt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!ps(e)){e.flags&=-3;return}const s=B,n=ae;B=e,ae=!0;try{jn(e);const r=e.fn(e._value);(t.version===0||We(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{B=s,ae=n,$n(e),e.flags&=-3}}function Fs(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Fs(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Jr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ae=!0;const Un=[];function Ne(){Un.push(ae),ae=!1}function Le(){const e=Un.pop();ae=e===void 0?!0:e}function Qs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=B;B=void 0;try{t()}finally{B=s}}}let yt=0;class Gr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!B||!ae||B===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==B)s=this.activeLink=new Gr(B,this),B.deps?(s.prevDep=B.depsTail,B.depsTail.nextDep=s,B.depsTail=s):B.deps=B.depsTail=s,Kn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=B.depsTail,s.nextDep=void 0,B.depsTail.nextDep=s,B.depsTail=s,B.deps===s&&(B.deps=n)}return s}trigger(t){this.version++,yt++,this.notify(t)}notify(t){Is();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Rs()}}}function Kn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Kn(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const gs=new WeakMap,qe=Symbol(""),ms=Symbol(""),xt=Symbol("");function Z(e,t,s){if(ae&&B){let n=gs.get(e);n||gs.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Vn),r.map=n,r.key=s),r.track()}}function Oe(e,t,s,n,r,i){const o=gs.get(e);if(!o){yt++;return}const f=u=>{u&&u.trigger()};if(Is(),t==="clear")o.forEach(f);else{const u=P(e),h=u&&Ps(s);if(u&&s==="length"){const a=Number(n);o.forEach((p,S)=>{(S==="length"||S===xt||!He(S)&&S>=a)&&f(p)})}else switch((s!==void 0||o.has(void 0))&&f(o.get(s)),h&&f(o.get(xt)),t){case"add":u?h&&f(o.get("length")):(f(o.get(qe)),Qe(e)&&f(o.get(ms)));break;case"delete":u||(f(o.get(qe)),Qe(e)&&f(o.get(ms)));break;case"set":Qe(e)&&f(o.get(qe));break}}Rs()}function Ye(e){const t=N(e);return t===e?t:(Z(t,"iterate",xt),de(e)?t:t.map(ne))}function Yt(e){return Z(e=N(e),"iterate",xt),e}const Yr={__proto__:null,[Symbol.iterator](){return is(this,Symbol.iterator,ne)},concat(...e){return Ye(this).concat(...e.map(t=>P(t)?Ye(t):t))},entries(){return is(this,"entries",e=>(e[1]=ne(e[1]),e))},every(e,t){return Te(this,"every",e,t,void 0,arguments)},filter(e,t){return Te(this,"filter",e,t,s=>s.map(ne),arguments)},find(e,t){return Te(this,"find",e,t,ne,arguments)},findIndex(e,t){return Te(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Te(this,"findLast",e,t,ne,arguments)},findLastIndex(e,t){return Te(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Te(this,"forEach",e,t,void 0,arguments)},includes(...e){return os(this,"includes",e)},indexOf(...e){return os(this,"indexOf",e)},join(e){return Ye(this).join(e)},lastIndexOf(...e){return os(this,"lastIndexOf",e)},map(e,t){return Te(this,"map",e,t,void 0,arguments)},pop(){return ft(this,"pop")},push(...e){return ft(this,"push",e)},reduce(e,...t){return ks(this,"reduce",e,t)},reduceRight(e,...t){return ks(this,"reduceRight",e,t)},shift(){return ft(this,"shift")},some(e,t){return Te(this,"some",e,t,void 0,arguments)},splice(...e){return ft(this,"splice",e)},toReversed(){return Ye(this).toReversed()},toSorted(e){return Ye(this).toSorted(e)},toSpliced(...e){return Ye(this).toSpliced(...e)},unshift(...e){return ft(this,"unshift",e)},values(){return is(this,"values",ne)}};function is(e,t,s){const n=Yt(e),r=n[t]();return n!==e&&!de(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=s(i.value)),i}),r}const zr=Array.prototype;function Te(e,t,s,n,r,i){const o=Yt(e),f=o!==e&&!de(e),u=o[t];if(u!==zr[t]){const p=u.apply(e,i);return f?ne(p):p}let h=s;o!==e&&(f?h=function(p,S){return s.call(this,ne(p),S,e)}:s.length>2&&(h=function(p,S){return s.call(this,p,S,e)}));const a=u.call(o,h,n);return f&&r?r(a):a}function ks(e,t,s,n){const r=Yt(e);let i=s;return r!==e&&(de(e)?s.length>3&&(i=function(o,f,u){return s.call(this,o,f,u,e)}):i=function(o,f,u){return s.call(this,o,ne(f),u,e)}),r[t](i,...n)}function os(e,t,s){const n=N(e);Z(n,"iterate",xt);const r=n[t](...s);return(r===-1||r===!1)&&Ls(s[0])?(s[0]=N(s[0]),n[t](...s)):r}function ft(e,t,s=[]){Ne(),Is();const n=N(e)[t].apply(e,s);return Rs(),Le(),n}const Xr=Os("__proto__,__v_isRef,__isVue"),Wn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(He));function Zr(e){He(e)||(e=String(e));const t=N(this);return Z(t,"has",e),t.hasOwnProperty(e)}class qn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?li:zn:i?Yn:Gn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=P(t);if(!r){let u;if(o&&(u=Yr[s]))return u;if(s==="hasOwnProperty")return Zr}const f=Reflect.get(t,s,se(t)?t:n);return(He(s)?Wn.has(s):Xr(s))||(r||Z(t,"get",s),i)?f:se(f)?o&&Ps(s)?f:f.value:K(f)?r?Xn(f):Hs(f):f}}class Jn extends qn{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];if(!this._isShallow){const u=st(i);if(!de(n)&&!st(n)&&(i=N(i),n=N(n)),!P(t)&&se(i)&&!se(n))return u?!1:(i.value=n,!0)}const o=P(t)&&Ps(s)?Number(s)