├── .gitignore ├── README.md ├── ex01-cordova-calculator ├── .gitignore ├── config.xml ├── package-lock.json ├── package.json └── www │ ├── dark.css │ ├── index.html │ ├── index.js │ ├── instilllearning_logo.png │ └── light.css ├── ex02-cordova-todo ├── .gitignore ├── config.xml ├── package-lock.json ├── package.json └── www │ ├── css │ ├── bootstrap.min.css │ └── index.css │ ├── img │ ├── instilllearning_logo.jpg │ └── logo.png │ ├── index.html │ └── js │ └── index.js ├── ex03-cordova-quiz-app ├── .gitignore ├── config.xml ├── package.json ├── server │ ├── .gitignore │ ├── package-lock.json │ ├── package.json │ └── server.js └── www │ ├── css │ └── index.css │ ├── img │ └── logo.png │ ├── index.html │ └── js │ └── index.js └── images ├── ex01-cordova-calculator.png ├── ex02-todo-app.jpeg ├── fork-repo.png ├── instilllearning-apachecordova.png └── mobile-frameworks-used-by-developers.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .DS_Store 9 | .vscode 10 | .env 11 | platforms 12 | plugins 13 | 14 | # Diagnostic reports (https://nodejs.org/api/report.html) 15 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 16 | 17 | # Runtime data 18 | pids 19 | *.pid 20 | *.seed 21 | *.pid.lock 22 | 23 | # Directory for instrumented libs generated by jscoverage/JSCover 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | coverage 28 | *.lcov 29 | 30 | # nyc test coverage 31 | .nyc_output 32 | 33 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 34 | .grunt 35 | 36 | # Bower dependency directory (https://bower.io/) 37 | bower_components 38 | 39 | # node-waf configuration 40 | .lock-wscript 41 | 42 | # Compiled binary addons (https://nodejs.org/api/addons.html) 43 | build/Release 44 | 45 | # Dependency directories 46 | node_modules/ 47 | jspm_packages/ 48 | 49 | # TypeScript v1 declaration files 50 | typings/ 51 | 52 | # TypeScript cache 53 | *.tsbuildinfo 54 | 55 | # Optional npm cache directory 56 | .npm 57 | 58 | # Optional eslint cache 59 | .eslintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variables file 77 | .env 78 | .env.test 79 | 80 | # parcel-bundler cache (https://parceljs.org/) 81 | .cache 82 | 83 | # Next.js build output 84 | .next 85 | 86 | # Nuxt.js build / generate output 87 | .nuxt 88 | dist 89 | 90 | # Gatsby files 91 | .cache/ 92 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 93 | # https://nextjs.org/blog/next-9-1#public-directory-support 94 | # public 95 | 96 | # vuepress build output 97 | .vuepress/dist 98 | 99 | # Serverless directories 100 | .serverless/ 101 | 102 | # FuseBox cache 103 | .fusebox/ 104 | 105 | # DynamoDB Local files 106 | .dynamodb/ 107 | 108 | # TernJS port file 109 | .tern-port 110 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## [Learn Apache Cordova - Build Mobile Apps for Android & iOS](https://www.udemy.com/course/apache-cordova-bootcamp/?referralCode=2F36C29350E4E5A09405) 2 | This is the repository for the course "Learn Apache Cordova - Build Mobile Apps for Android & iOS" available on Instill Learning and Udemy. 3 | 4 | The full course is available from 5 | - [Udemy](https://www.udemy.com/course/apache-cordova-bootcamp/?referralCode=2F36C29350E4E5A09405) - Video Course 6 | (https://www.udemy.com/course/draft/6068183/?referralCode=2F36C29350E4E5A09405) 7 | - [Instill Learning](https://www.instilllearning.com/courses/apache-cordova) - Live Training + Video Course + Hands-on Real World Projects (https://www.instilllearning.com/courses/apache-cordova) 8 | ![Apache Cordova](images/instilllearning-apachecordova.png) 9 | 10 | ## What is Apache Cordova? 11 | [Apache Cordova](https://www.instilllearning.com/courses/apache-cordova) is an open-source mobile development framework. It allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platform's native development language. Applications execute within wrappers targeted to each platform, and rely on standards-compliant API bindings to access each device's sensors, data, and network status." 12 | 13 | ## Learning Objectives 14 | * How to create and build (compile and package) a Cordova project using the CLI (Command Line Interface). 15 | * How to use several Cordova APIs such as Geolocation, Contacts, and Camera. 16 | * How to handle specific mobile challenges such as touch events, scrolling, styling, page transitions, etc. 17 | * To publish the app on Google Play Store & App Store 18 | 19 | ## Software - version[ Last Updated on August 2024]: 20 | * [Node - v22.5.0](https://nodejs.org/en/download/package-manager) 21 | * npm - 10.8.2 22 | * [JDK - Microsoft Build of OpenJDK 11.0.23 LTS](https://learn.microsoft.com/en-in/java/openjdk/download#openjdk-11) 23 | * Apache cordova - 11.0.0 24 | * cordova-android - 10.1.1 25 | * cordova-ios - 6.2.0 26 | * Gradle - 7.4 27 | 28 | ## Instructions 29 | This repository has only master branch containing all examples. You can fork, star and clone the repository and go to individual example's root folder and run it. 30 | 31 | #### Step 1: Go to https://github.com and login with your email. 32 | #### Step 2: Go to the Apache Cordova Repository: https://github.com/progaurab/apache-cordova-training-instilllearning 33 | #### Step 3: Click on 1) Watch - All Activity 2) Star 3) Fork the repository (See instruction below) 34 | ![Fork the Repo](images/fork-repo.png) 35 | 36 | #### Step 4: 37 | ```javascript 38 | $ git clone https://github.com/progaurab/apache-cordova-training-instilllearning.git 39 | $ cd apache-cordova-training-instilllearning 40 | $ cd ex01-cordova-calculator 41 | ``` 42 | #### Step 5: To install Cordova (ignore if installed already) 43 | ```javascript 44 | $ npm install -g cordova 45 | ``` 46 | #### Step 6: 47 | ```javascript 48 | $ cordova platform add browser 49 | $ cordova run browser 50 | ``` 51 | #### Open Android App in Android Studio and Run 52 | ![ex01-cordova-calculator](images/ex01-cordova-calculator.png) 53 | ## Other usefull commands 54 | #### Create new cordova application 55 | ``` 56 | $ cordova create ex01-cordova-calculator com.instilllearning.ex01 ILCalculator 57 | $ cd ex01-cordova-calculator 58 | ``` 59 | ##### Add other platform 60 | ``` 61 | $ cordova platform add android 62 | $ cordova platform add ios 63 | ``` 64 | ##### Modify Code and Distribute to all platform 65 | ``` 66 | $ cordova prepare 67 | ``` 68 | 69 | ##### Check the cordova requirements 70 | ``` 71 | $ cordova requirements 72 | ``` 73 | 74 | ##### Ganerate Android APK 75 | ``` 76 | $ cordova build android 77 | ``` 78 | 79 | ##### xcode - Installing the Requirements (for Mac) 80 | ``` 81 | $ xcode-select --install 82 | ``` 83 | 84 | ##### Deployment Tools allow you to launch iOS apps on an iOS Device from the command-line. 85 | ``` 86 | $ brew install ios-deploy 87 | ``` 88 | 89 | ##### CocoaPods tools is needed to build iOS apps. 90 | ``` 91 | $ sudo gem install cocoapods 92 | ``` 93 | 94 | ##### Deploying to Simulator - Open ios project in XCode 95 | open ./platforms/ios/ProjectName.xcworkspace/ 96 | for example, 97 | ``` 98 | $ open ./platforms/ios/Ex1-Cordova-Question-Answer.xcworkspace 99 | ``` 100 | Create a new cordova app 101 | cordova create [project_name] [package_name] [app_name] 102 | [project_name]: ex1-cordova-question-answer 103 | [package_name]: dev.instilllearning.ex1 104 | [App Name]: Ex1-Cordova-Question-Answer 105 | 106 | ``` 107 | $ cordova create ex1-cordova-question-answer dev.instilllearning.ex1 Ex1-Cordova-Question-Answer 108 | ``` 109 | 110 | ## Instructor 111 | [Gaurab Kumar](https://www.linkedin.com/in/progaurab) 112 | 113 | ## Course Offer 114 | Use this link to get upto 95% discount on my courses on [Udemy](https://www.udemy.com/course/apache-cordova-bootcamp/?referralCode=2F36C29350E4E5A09405): 115 | ***Purchases any two courses and get other courses free***, To get free courses coupon write mail to [courses@instilllearning.com](courses@instilllearning.com) 116 | * [Learn Apache Cordova - Build Mobile Apps for Android & iOS](https://www.udemy.com/course/apache-cordova-bootcamp/?referralCode=2F36C29350E4E5A09405) 117 | 118 | 119 | -------------------------------------------------------------------------------- /ex01-cordova-calculator/.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | 19 | .DS_Store 20 | 21 | # Generated by package manager 22 | node_modules/ 23 | 24 | # Generated by Cordova 25 | /plugins/ 26 | /platforms/ 27 | -------------------------------------------------------------------------------- /ex01-cordova-calculator/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ILCalculator 4 | Calculator App using Apache Cordova 5 | 6 | Instill Learning Team 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ex01-cordova-calculator/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.instilllearning.ex01", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "com.instilllearning.ex01", 9 | "version": "1.0.0", 10 | "license": "Apache-2.0", 11 | "devDependencies": { 12 | "cordova-android": "^13.0.0" 13 | } 14 | }, 15 | "node_modules/@netflix/nerror": { 16 | "version": "1.1.3", 17 | "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", 18 | "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", 19 | "dev": true, 20 | "license": "MIT", 21 | "dependencies": { 22 | "assert-plus": "^1.0.0", 23 | "extsprintf": "^1.4.0", 24 | "lodash": "^4.17.15" 25 | } 26 | }, 27 | "node_modules/@nodelib/fs.scandir": { 28 | "version": "2.1.5", 29 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 30 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 31 | "dev": true, 32 | "license": "MIT", 33 | "dependencies": { 34 | "@nodelib/fs.stat": "2.0.5", 35 | "run-parallel": "^1.1.9" 36 | }, 37 | "engines": { 38 | "node": ">= 8" 39 | } 40 | }, 41 | "node_modules/@nodelib/fs.stat": { 42 | "version": "2.0.5", 43 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 44 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 45 | "dev": true, 46 | "license": "MIT", 47 | "engines": { 48 | "node": ">= 8" 49 | } 50 | }, 51 | "node_modules/@nodelib/fs.walk": { 52 | "version": "1.2.8", 53 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 54 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 55 | "dev": true, 56 | "license": "MIT", 57 | "dependencies": { 58 | "@nodelib/fs.scandir": "2.1.5", 59 | "fastq": "^1.6.0" 60 | }, 61 | "engines": { 62 | "node": ">= 8" 63 | } 64 | }, 65 | "node_modules/@xmldom/xmldom": { 66 | "version": "0.8.10", 67 | "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", 68 | "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 69 | "dev": true, 70 | "license": "MIT", 71 | "engines": { 72 | "node": ">=10.0.0" 73 | } 74 | }, 75 | "node_modules/abbrev": { 76 | "version": "2.0.0", 77 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", 78 | "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", 79 | "dev": true, 80 | "license": "ISC", 81 | "engines": { 82 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 83 | } 84 | }, 85 | "node_modules/android-versions": { 86 | "version": "2.0.0", 87 | "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-2.0.0.tgz", 88 | "integrity": "sha512-07fhKL8EjV+ORQggGHcKmhLECwxBlRFimfvsjhfUCYqNDAbcH4qaEaN0AO3DnWtgHqRNfWAxhnWOpx+ZpRMymw==", 89 | "dev": true, 90 | "license": "MIT", 91 | "dependencies": { 92 | "semver": "^7.5.2" 93 | } 94 | }, 95 | "node_modules/ansi": { 96 | "version": "0.3.1", 97 | "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", 98 | "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", 99 | "dev": true, 100 | "license": "MIT" 101 | }, 102 | "node_modules/assert-plus": { 103 | "version": "1.0.0", 104 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 105 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 106 | "dev": true, 107 | "license": "MIT", 108 | "engines": { 109 | "node": ">=0.8" 110 | } 111 | }, 112 | "node_modules/balanced-match": { 113 | "version": "1.0.2", 114 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 115 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 116 | "dev": true, 117 | "license": "MIT" 118 | }, 119 | "node_modules/base64-js": { 120 | "version": "1.5.1", 121 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 122 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 123 | "dev": true, 124 | "funding": [ 125 | { 126 | "type": "github", 127 | "url": "https://github.com/sponsors/feross" 128 | }, 129 | { 130 | "type": "patreon", 131 | "url": "https://www.patreon.com/feross" 132 | }, 133 | { 134 | "type": "consulting", 135 | "url": "https://feross.org/support" 136 | } 137 | ], 138 | "license": "MIT" 139 | }, 140 | "node_modules/big-integer": { 141 | "version": "1.6.52", 142 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", 143 | "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", 144 | "dev": true, 145 | "license": "Unlicense", 146 | "engines": { 147 | "node": ">=0.6" 148 | } 149 | }, 150 | "node_modules/bplist-parser": { 151 | "version": "0.3.2", 152 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", 153 | "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", 154 | "dev": true, 155 | "license": "MIT", 156 | "dependencies": { 157 | "big-integer": "1.6.x" 158 | }, 159 | "engines": { 160 | "node": ">= 5.10.0" 161 | } 162 | }, 163 | "node_modules/brace-expansion": { 164 | "version": "1.1.11", 165 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 166 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 167 | "dev": true, 168 | "license": "MIT", 169 | "dependencies": { 170 | "balanced-match": "^1.0.0", 171 | "concat-map": "0.0.1" 172 | } 173 | }, 174 | "node_modules/braces": { 175 | "version": "3.0.3", 176 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 177 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 178 | "dev": true, 179 | "license": "MIT", 180 | "dependencies": { 181 | "fill-range": "^7.1.1" 182 | }, 183 | "engines": { 184 | "node": ">=8" 185 | } 186 | }, 187 | "node_modules/concat-map": { 188 | "version": "0.0.1", 189 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 190 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 191 | "dev": true, 192 | "license": "MIT" 193 | }, 194 | "node_modules/cordova-android": { 195 | "version": "13.0.0", 196 | "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-13.0.0.tgz", 197 | "integrity": "sha512-uQG+cSyrB1NMi2aIzihldIupHB9WGpZVvrMMMAAtnyc6tDlEk7gweSSaFsEONyGAnteRYpIvrzg/YwDW08PcUg==", 198 | "dev": true, 199 | "license": "Apache-2.0", 200 | "dependencies": { 201 | "android-versions": "^2.0.0", 202 | "cordova-common": "^5.0.0", 203 | "dedent": "^1.5.3", 204 | "execa": "^5.1.1", 205 | "fast-glob": "^3.3.2", 206 | "fs-extra": "^11.2.0", 207 | "is-path-inside": "^3.0.3", 208 | "nopt": "^7.2.1", 209 | "properties-parser": "^0.6.0", 210 | "semver": "^7.6.2", 211 | "string-argv": "^0.3.1", 212 | "untildify": "^4.0.0", 213 | "which": "^4.0.0" 214 | }, 215 | "engines": { 216 | "node": ">=16.13.0" 217 | } 218 | }, 219 | "node_modules/cordova-common": { 220 | "version": "5.0.0", 221 | "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-5.0.0.tgz", 222 | "integrity": "sha512-6Aa7o52/iEvsKx6K94ijzFel5acCULR49KL27OUVhEpJ4oS7Dc3y2eOP1Eu0P4Wmiw/eLEDQjGXGiAa2D5zFZA==", 223 | "dev": true, 224 | "license": "Apache-2.0", 225 | "dependencies": { 226 | "@netflix/nerror": "^1.1.3", 227 | "ansi": "^0.3.1", 228 | "bplist-parser": "^0.3.2", 229 | "cross-spawn": "^7.0.3", 230 | "elementtree": "^0.1.7", 231 | "endent": "^2.1.0", 232 | "fast-glob": "^3.2.12", 233 | "fs-extra": "^11.1.0", 234 | "glob": "^7.1.6", 235 | "lodash.assign": "^4.2.0", 236 | "lodash.isdate": "^4.0.1", 237 | "lodash.isobject": "^3.0.2", 238 | "lodash.zip": "^4.2.0", 239 | "plist": "^3.0.6", 240 | "q": "^1.5.1", 241 | "read-chunk": "^3.2.0", 242 | "strip-bom": "^4.0.0" 243 | }, 244 | "engines": { 245 | "node": ">=16.0.0" 246 | } 247 | }, 248 | "node_modules/cross-spawn": { 249 | "version": "7.0.3", 250 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 251 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 252 | "dev": true, 253 | "license": "MIT", 254 | "dependencies": { 255 | "path-key": "^3.1.0", 256 | "shebang-command": "^2.0.0", 257 | "which": "^2.0.1" 258 | }, 259 | "engines": { 260 | "node": ">= 8" 261 | } 262 | }, 263 | "node_modules/cross-spawn/node_modules/isexe": { 264 | "version": "2.0.0", 265 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 266 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 267 | "dev": true, 268 | "license": "ISC" 269 | }, 270 | "node_modules/cross-spawn/node_modules/which": { 271 | "version": "2.0.2", 272 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 273 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 274 | "dev": true, 275 | "license": "ISC", 276 | "dependencies": { 277 | "isexe": "^2.0.0" 278 | }, 279 | "bin": { 280 | "node-which": "bin/node-which" 281 | }, 282 | "engines": { 283 | "node": ">= 8" 284 | } 285 | }, 286 | "node_modules/dedent": { 287 | "version": "1.5.3", 288 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", 289 | "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", 290 | "dev": true, 291 | "license": "MIT", 292 | "peerDependencies": { 293 | "babel-plugin-macros": "^3.1.0" 294 | }, 295 | "peerDependenciesMeta": { 296 | "babel-plugin-macros": { 297 | "optional": true 298 | } 299 | } 300 | }, 301 | "node_modules/elementtree": { 302 | "version": "0.1.7", 303 | "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", 304 | "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", 305 | "dev": true, 306 | "license": "Apache-2.0", 307 | "dependencies": { 308 | "sax": "1.1.4" 309 | }, 310 | "engines": { 311 | "node": ">= 0.4.0" 312 | } 313 | }, 314 | "node_modules/endent": { 315 | "version": "2.1.0", 316 | "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", 317 | "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", 318 | "dev": true, 319 | "license": "MIT", 320 | "dependencies": { 321 | "dedent": "^0.7.0", 322 | "fast-json-parse": "^1.0.3", 323 | "objectorarray": "^1.0.5" 324 | } 325 | }, 326 | "node_modules/endent/node_modules/dedent": { 327 | "version": "0.7.0", 328 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 329 | "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", 330 | "dev": true, 331 | "license": "MIT" 332 | }, 333 | "node_modules/execa": { 334 | "version": "5.1.1", 335 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 336 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 337 | "dev": true, 338 | "license": "MIT", 339 | "dependencies": { 340 | "cross-spawn": "^7.0.3", 341 | "get-stream": "^6.0.0", 342 | "human-signals": "^2.1.0", 343 | "is-stream": "^2.0.0", 344 | "merge-stream": "^2.0.0", 345 | "npm-run-path": "^4.0.1", 346 | "onetime": "^5.1.2", 347 | "signal-exit": "^3.0.3", 348 | "strip-final-newline": "^2.0.0" 349 | }, 350 | "engines": { 351 | "node": ">=10" 352 | }, 353 | "funding": { 354 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 355 | } 356 | }, 357 | "node_modules/extsprintf": { 358 | "version": "1.4.1", 359 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", 360 | "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", 361 | "dev": true, 362 | "engines": [ 363 | "node >=0.6.0" 364 | ], 365 | "license": "MIT" 366 | }, 367 | "node_modules/fast-glob": { 368 | "version": "3.3.2", 369 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 370 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 371 | "dev": true, 372 | "license": "MIT", 373 | "dependencies": { 374 | "@nodelib/fs.stat": "^2.0.2", 375 | "@nodelib/fs.walk": "^1.2.3", 376 | "glob-parent": "^5.1.2", 377 | "merge2": "^1.3.0", 378 | "micromatch": "^4.0.4" 379 | }, 380 | "engines": { 381 | "node": ">=8.6.0" 382 | } 383 | }, 384 | "node_modules/fast-json-parse": { 385 | "version": "1.0.3", 386 | "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", 387 | "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", 388 | "dev": true, 389 | "license": "MIT" 390 | }, 391 | "node_modules/fastq": { 392 | "version": "1.17.1", 393 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 394 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 395 | "dev": true, 396 | "license": "ISC", 397 | "dependencies": { 398 | "reusify": "^1.0.4" 399 | } 400 | }, 401 | "node_modules/fill-range": { 402 | "version": "7.1.1", 403 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 404 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 405 | "dev": true, 406 | "license": "MIT", 407 | "dependencies": { 408 | "to-regex-range": "^5.0.1" 409 | }, 410 | "engines": { 411 | "node": ">=8" 412 | } 413 | }, 414 | "node_modules/fs-extra": { 415 | "version": "11.2.0", 416 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", 417 | "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", 418 | "dev": true, 419 | "license": "MIT", 420 | "dependencies": { 421 | "graceful-fs": "^4.2.0", 422 | "jsonfile": "^6.0.1", 423 | "universalify": "^2.0.0" 424 | }, 425 | "engines": { 426 | "node": ">=14.14" 427 | } 428 | }, 429 | "node_modules/fs.realpath": { 430 | "version": "1.0.0", 431 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 432 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 433 | "dev": true, 434 | "license": "ISC" 435 | }, 436 | "node_modules/get-stream": { 437 | "version": "6.0.1", 438 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 439 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 440 | "dev": true, 441 | "license": "MIT", 442 | "engines": { 443 | "node": ">=10" 444 | }, 445 | "funding": { 446 | "url": "https://github.com/sponsors/sindresorhus" 447 | } 448 | }, 449 | "node_modules/glob": { 450 | "version": "7.2.3", 451 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 452 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 453 | "deprecated": "Glob versions prior to v9 are no longer supported", 454 | "dev": true, 455 | "license": "ISC", 456 | "dependencies": { 457 | "fs.realpath": "^1.0.0", 458 | "inflight": "^1.0.4", 459 | "inherits": "2", 460 | "minimatch": "^3.1.1", 461 | "once": "^1.3.0", 462 | "path-is-absolute": "^1.0.0" 463 | }, 464 | "engines": { 465 | "node": "*" 466 | }, 467 | "funding": { 468 | "url": "https://github.com/sponsors/isaacs" 469 | } 470 | }, 471 | "node_modules/glob-parent": { 472 | "version": "5.1.2", 473 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 474 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 475 | "dev": true, 476 | "license": "ISC", 477 | "dependencies": { 478 | "is-glob": "^4.0.1" 479 | }, 480 | "engines": { 481 | "node": ">= 6" 482 | } 483 | }, 484 | "node_modules/graceful-fs": { 485 | "version": "4.2.11", 486 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 487 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 488 | "dev": true, 489 | "license": "ISC" 490 | }, 491 | "node_modules/human-signals": { 492 | "version": "2.1.0", 493 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 494 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 495 | "dev": true, 496 | "license": "Apache-2.0", 497 | "engines": { 498 | "node": ">=10.17.0" 499 | } 500 | }, 501 | "node_modules/inflight": { 502 | "version": "1.0.6", 503 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 504 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 505 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 506 | "dev": true, 507 | "license": "ISC", 508 | "dependencies": { 509 | "once": "^1.3.0", 510 | "wrappy": "1" 511 | } 512 | }, 513 | "node_modules/inherits": { 514 | "version": "2.0.4", 515 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 516 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 517 | "dev": true, 518 | "license": "ISC" 519 | }, 520 | "node_modules/is-extglob": { 521 | "version": "2.1.1", 522 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 523 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 524 | "dev": true, 525 | "license": "MIT", 526 | "engines": { 527 | "node": ">=0.10.0" 528 | } 529 | }, 530 | "node_modules/is-glob": { 531 | "version": "4.0.3", 532 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 533 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 534 | "dev": true, 535 | "license": "MIT", 536 | "dependencies": { 537 | "is-extglob": "^2.1.1" 538 | }, 539 | "engines": { 540 | "node": ">=0.10.0" 541 | } 542 | }, 543 | "node_modules/is-number": { 544 | "version": "7.0.0", 545 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 546 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 547 | "dev": true, 548 | "license": "MIT", 549 | "engines": { 550 | "node": ">=0.12.0" 551 | } 552 | }, 553 | "node_modules/is-path-inside": { 554 | "version": "3.0.3", 555 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 556 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 557 | "dev": true, 558 | "license": "MIT", 559 | "engines": { 560 | "node": ">=8" 561 | } 562 | }, 563 | "node_modules/is-stream": { 564 | "version": "2.0.1", 565 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 566 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 567 | "dev": true, 568 | "license": "MIT", 569 | "engines": { 570 | "node": ">=8" 571 | }, 572 | "funding": { 573 | "url": "https://github.com/sponsors/sindresorhus" 574 | } 575 | }, 576 | "node_modules/isexe": { 577 | "version": "3.1.1", 578 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", 579 | "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", 580 | "dev": true, 581 | "license": "ISC", 582 | "engines": { 583 | "node": ">=16" 584 | } 585 | }, 586 | "node_modules/jsonfile": { 587 | "version": "6.1.0", 588 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 589 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 590 | "dev": true, 591 | "license": "MIT", 592 | "dependencies": { 593 | "universalify": "^2.0.0" 594 | }, 595 | "optionalDependencies": { 596 | "graceful-fs": "^4.1.6" 597 | } 598 | }, 599 | "node_modules/lodash": { 600 | "version": "4.17.21", 601 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 602 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 603 | "dev": true, 604 | "license": "MIT" 605 | }, 606 | "node_modules/lodash.assign": { 607 | "version": "4.2.0", 608 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", 609 | "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", 610 | "dev": true, 611 | "license": "MIT" 612 | }, 613 | "node_modules/lodash.isdate": { 614 | "version": "4.0.1", 615 | "resolved": "https://registry.npmjs.org/lodash.isdate/-/lodash.isdate-4.0.1.tgz", 616 | "integrity": "sha512-hg5B1GD+R9egsBgMwmAhk+V53Us03TVvXT4dnyKugEfsD4QKuG9Wlyvxq8OGy2nu7qVGsh4DRSnMk33hoWBq/Q==", 617 | "dev": true, 618 | "license": "MIT" 619 | }, 620 | "node_modules/lodash.isobject": { 621 | "version": "3.0.2", 622 | "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", 623 | "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", 624 | "dev": true, 625 | "license": "MIT" 626 | }, 627 | "node_modules/lodash.zip": { 628 | "version": "4.2.0", 629 | "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", 630 | "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", 631 | "dev": true, 632 | "license": "MIT" 633 | }, 634 | "node_modules/merge-stream": { 635 | "version": "2.0.0", 636 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 637 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 638 | "dev": true, 639 | "license": "MIT" 640 | }, 641 | "node_modules/merge2": { 642 | "version": "1.4.1", 643 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 644 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 645 | "dev": true, 646 | "license": "MIT", 647 | "engines": { 648 | "node": ">= 8" 649 | } 650 | }, 651 | "node_modules/micromatch": { 652 | "version": "4.0.7", 653 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 654 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 655 | "dev": true, 656 | "license": "MIT", 657 | "dependencies": { 658 | "braces": "^3.0.3", 659 | "picomatch": "^2.3.1" 660 | }, 661 | "engines": { 662 | "node": ">=8.6" 663 | } 664 | }, 665 | "node_modules/mimic-fn": { 666 | "version": "2.1.0", 667 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 668 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 669 | "dev": true, 670 | "license": "MIT", 671 | "engines": { 672 | "node": ">=6" 673 | } 674 | }, 675 | "node_modules/minimatch": { 676 | "version": "3.1.2", 677 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 678 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 679 | "dev": true, 680 | "license": "ISC", 681 | "dependencies": { 682 | "brace-expansion": "^1.1.7" 683 | }, 684 | "engines": { 685 | "node": "*" 686 | } 687 | }, 688 | "node_modules/nopt": { 689 | "version": "7.2.1", 690 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", 691 | "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", 692 | "dev": true, 693 | "license": "ISC", 694 | "dependencies": { 695 | "abbrev": "^2.0.0" 696 | }, 697 | "bin": { 698 | "nopt": "bin/nopt.js" 699 | }, 700 | "engines": { 701 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 702 | } 703 | }, 704 | "node_modules/npm-run-path": { 705 | "version": "4.0.1", 706 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 707 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 708 | "dev": true, 709 | "license": "MIT", 710 | "dependencies": { 711 | "path-key": "^3.0.0" 712 | }, 713 | "engines": { 714 | "node": ">=8" 715 | } 716 | }, 717 | "node_modules/objectorarray": { 718 | "version": "1.0.5", 719 | "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", 720 | "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", 721 | "dev": true, 722 | "license": "ISC" 723 | }, 724 | "node_modules/once": { 725 | "version": "1.4.0", 726 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 727 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 728 | "dev": true, 729 | "license": "ISC", 730 | "dependencies": { 731 | "wrappy": "1" 732 | } 733 | }, 734 | "node_modules/onetime": { 735 | "version": "5.1.2", 736 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 737 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 738 | "dev": true, 739 | "license": "MIT", 740 | "dependencies": { 741 | "mimic-fn": "^2.1.0" 742 | }, 743 | "engines": { 744 | "node": ">=6" 745 | }, 746 | "funding": { 747 | "url": "https://github.com/sponsors/sindresorhus" 748 | } 749 | }, 750 | "node_modules/p-finally": { 751 | "version": "1.0.0", 752 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 753 | "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 754 | "dev": true, 755 | "license": "MIT", 756 | "engines": { 757 | "node": ">=4" 758 | } 759 | }, 760 | "node_modules/p-try": { 761 | "version": "2.2.0", 762 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 763 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 764 | "dev": true, 765 | "license": "MIT", 766 | "engines": { 767 | "node": ">=6" 768 | } 769 | }, 770 | "node_modules/path-is-absolute": { 771 | "version": "1.0.1", 772 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 773 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 774 | "dev": true, 775 | "license": "MIT", 776 | "engines": { 777 | "node": ">=0.10.0" 778 | } 779 | }, 780 | "node_modules/path-key": { 781 | "version": "3.1.1", 782 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 783 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 784 | "dev": true, 785 | "license": "MIT", 786 | "engines": { 787 | "node": ">=8" 788 | } 789 | }, 790 | "node_modules/picomatch": { 791 | "version": "2.3.1", 792 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 793 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 794 | "dev": true, 795 | "license": "MIT", 796 | "engines": { 797 | "node": ">=8.6" 798 | }, 799 | "funding": { 800 | "url": "https://github.com/sponsors/jonschlinkert" 801 | } 802 | }, 803 | "node_modules/pify": { 804 | "version": "4.0.1", 805 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 806 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 807 | "dev": true, 808 | "license": "MIT", 809 | "engines": { 810 | "node": ">=6" 811 | } 812 | }, 813 | "node_modules/plist": { 814 | "version": "3.1.0", 815 | "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", 816 | "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", 817 | "dev": true, 818 | "license": "MIT", 819 | "dependencies": { 820 | "@xmldom/xmldom": "^0.8.8", 821 | "base64-js": "^1.5.1", 822 | "xmlbuilder": "^15.1.1" 823 | }, 824 | "engines": { 825 | "node": ">=10.4.0" 826 | } 827 | }, 828 | "node_modules/properties-parser": { 829 | "version": "0.6.0", 830 | "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.6.0.tgz", 831 | "integrity": "sha512-qvr2cSmoA0dln0MARAKwBzPkkXn7FqwX+RVVNpMdMJc7rt9mqO2cXwluxtux9fHrLhjnPFaQkS8BM0kFrTCnSw==", 832 | "dev": true, 833 | "license": "MIT", 834 | "engines": { 835 | "node": ">= 0.3.1" 836 | } 837 | }, 838 | "node_modules/q": { 839 | "version": "1.5.1", 840 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 841 | "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", 842 | "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", 843 | "dev": true, 844 | "license": "MIT", 845 | "engines": { 846 | "node": ">=0.6.0", 847 | "teleport": ">=0.2.0" 848 | } 849 | }, 850 | "node_modules/queue-microtask": { 851 | "version": "1.2.3", 852 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 853 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 854 | "dev": true, 855 | "funding": [ 856 | { 857 | "type": "github", 858 | "url": "https://github.com/sponsors/feross" 859 | }, 860 | { 861 | "type": "patreon", 862 | "url": "https://www.patreon.com/feross" 863 | }, 864 | { 865 | "type": "consulting", 866 | "url": "https://feross.org/support" 867 | } 868 | ], 869 | "license": "MIT" 870 | }, 871 | "node_modules/read-chunk": { 872 | "version": "3.2.0", 873 | "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", 874 | "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", 875 | "dev": true, 876 | "license": "MIT", 877 | "dependencies": { 878 | "pify": "^4.0.1", 879 | "with-open-file": "^0.1.6" 880 | }, 881 | "engines": { 882 | "node": ">=6" 883 | } 884 | }, 885 | "node_modules/reusify": { 886 | "version": "1.0.4", 887 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 888 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 889 | "dev": true, 890 | "license": "MIT", 891 | "engines": { 892 | "iojs": ">=1.0.0", 893 | "node": ">=0.10.0" 894 | } 895 | }, 896 | "node_modules/run-parallel": { 897 | "version": "1.2.0", 898 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 899 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 900 | "dev": true, 901 | "funding": [ 902 | { 903 | "type": "github", 904 | "url": "https://github.com/sponsors/feross" 905 | }, 906 | { 907 | "type": "patreon", 908 | "url": "https://www.patreon.com/feross" 909 | }, 910 | { 911 | "type": "consulting", 912 | "url": "https://feross.org/support" 913 | } 914 | ], 915 | "license": "MIT", 916 | "dependencies": { 917 | "queue-microtask": "^1.2.2" 918 | } 919 | }, 920 | "node_modules/sax": { 921 | "version": "1.1.4", 922 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", 923 | "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", 924 | "dev": true, 925 | "license": "ISC" 926 | }, 927 | "node_modules/semver": { 928 | "version": "7.6.3", 929 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 930 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 931 | "dev": true, 932 | "license": "ISC", 933 | "bin": { 934 | "semver": "bin/semver.js" 935 | }, 936 | "engines": { 937 | "node": ">=10" 938 | } 939 | }, 940 | "node_modules/shebang-command": { 941 | "version": "2.0.0", 942 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 943 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 944 | "dev": true, 945 | "license": "MIT", 946 | "dependencies": { 947 | "shebang-regex": "^3.0.0" 948 | }, 949 | "engines": { 950 | "node": ">=8" 951 | } 952 | }, 953 | "node_modules/shebang-regex": { 954 | "version": "3.0.0", 955 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 956 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 957 | "dev": true, 958 | "license": "MIT", 959 | "engines": { 960 | "node": ">=8" 961 | } 962 | }, 963 | "node_modules/signal-exit": { 964 | "version": "3.0.7", 965 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 966 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 967 | "dev": true, 968 | "license": "ISC" 969 | }, 970 | "node_modules/string-argv": { 971 | "version": "0.3.2", 972 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", 973 | "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", 974 | "dev": true, 975 | "license": "MIT", 976 | "engines": { 977 | "node": ">=0.6.19" 978 | } 979 | }, 980 | "node_modules/strip-bom": { 981 | "version": "4.0.0", 982 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 983 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 984 | "dev": true, 985 | "license": "MIT", 986 | "engines": { 987 | "node": ">=8" 988 | } 989 | }, 990 | "node_modules/strip-final-newline": { 991 | "version": "2.0.0", 992 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 993 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 994 | "dev": true, 995 | "license": "MIT", 996 | "engines": { 997 | "node": ">=6" 998 | } 999 | }, 1000 | "node_modules/to-regex-range": { 1001 | "version": "5.0.1", 1002 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1003 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1004 | "dev": true, 1005 | "license": "MIT", 1006 | "dependencies": { 1007 | "is-number": "^7.0.0" 1008 | }, 1009 | "engines": { 1010 | "node": ">=8.0" 1011 | } 1012 | }, 1013 | "node_modules/universalify": { 1014 | "version": "2.0.1", 1015 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 1016 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 1017 | "dev": true, 1018 | "license": "MIT", 1019 | "engines": { 1020 | "node": ">= 10.0.0" 1021 | } 1022 | }, 1023 | "node_modules/untildify": { 1024 | "version": "4.0.0", 1025 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", 1026 | "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", 1027 | "dev": true, 1028 | "license": "MIT", 1029 | "engines": { 1030 | "node": ">=8" 1031 | } 1032 | }, 1033 | "node_modules/which": { 1034 | "version": "4.0.0", 1035 | "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", 1036 | "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", 1037 | "dev": true, 1038 | "license": "ISC", 1039 | "dependencies": { 1040 | "isexe": "^3.1.1" 1041 | }, 1042 | "bin": { 1043 | "node-which": "bin/which.js" 1044 | }, 1045 | "engines": { 1046 | "node": "^16.13.0 || >=18.0.0" 1047 | } 1048 | }, 1049 | "node_modules/with-open-file": { 1050 | "version": "0.1.7", 1051 | "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", 1052 | "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", 1053 | "dev": true, 1054 | "license": "MIT", 1055 | "dependencies": { 1056 | "p-finally": "^1.0.0", 1057 | "p-try": "^2.1.0", 1058 | "pify": "^4.0.1" 1059 | }, 1060 | "engines": { 1061 | "node": ">=6" 1062 | } 1063 | }, 1064 | "node_modules/wrappy": { 1065 | "version": "1.0.2", 1066 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1067 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1068 | "dev": true, 1069 | "license": "ISC" 1070 | }, 1071 | "node_modules/xmlbuilder": { 1072 | "version": "15.1.1", 1073 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", 1074 | "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", 1075 | "dev": true, 1076 | "license": "MIT", 1077 | "engines": { 1078 | "node": ">=8.0" 1079 | } 1080 | } 1081 | } 1082 | } 1083 | -------------------------------------------------------------------------------- /ex01-cordova-calculator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.instilllearning.ex01", 3 | "displayName": "ILCalculator", 4 | "version": "1.0.0", 5 | "description": "A sample Apache Cordova application that responds to the deviceready event.", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [ 11 | "ecosystem:cordova" 12 | ], 13 | "author": "Apache Cordova Team", 14 | "license": "Apache-2.0", 15 | "devDependencies": { 16 | "cordova-android": "^13.0.0" 17 | }, 18 | "cordova": { 19 | "platforms": [ 20 | "android" 21 | ] 22 | } 23 | } -------------------------------------------------------------------------------- /ex01-cordova-calculator/www/dark.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | padding: 0; 4 | margin: 0; 5 | font-family: "open Sans", sans-serif; 6 | } 7 | 8 | body { 9 | background-color: rgb(20, 19, 19); 10 | transition: 0.8s; 11 | } 12 | 13 | .grid-container { 14 | display: grid; 15 | align-content: center; 16 | grid-template-columns: auto auto auto auto; 17 | gap: 1px; 18 | background-color: #044981; 19 | padding: 2px; 20 | margin-bottom: 1px; 21 | } 22 | 23 | input[type="text"] { 24 | color: rgb(225, 225, 225); 25 | cursor: pointer; 26 | background-color:rgb(119, 115, 115); 27 | word-wrap: break-word; 28 | outline: none; 29 | word-break: break-all; 30 | } 31 | 32 | input[type="button"]:hover { 33 | background-color: rgb(225, 225, 225); 34 | color: rgb(84, 84, 84); 35 | } 36 | 37 | .clear { 38 | color: #fff; 39 | font-size: 5vh; 40 | outline: none; 41 | } 42 | 43 | .item6 { 44 | grid-column: 1 / span 2; 45 | grid-row: 7; 46 | font-size: 3vh; 47 | color: rgb(225, 225, 225); 48 | background-color:rgb(119, 115, 115); 49 | } 50 | .item7 { 51 | grid-column: 3 / span 2; 52 | grid-row: 7; 53 | word-wrap: break-word; 54 | font-size: 8vh; 55 | outline: none; 56 | color: rgb(225, 225, 225); 57 | background-color:rgb(119, 115, 115); 58 | } 59 | 60 | .result { 61 | font-size: 8vh; 62 | width: 100%; 63 | height: 31vh !important; 64 | grid-column: 1 / span 4; 65 | grid-row: 1; 66 | } 67 | 68 | .input-button { 69 | font-size: 4vh; 70 | cursor: pointer; 71 | border: none; 72 | height: 10.2vh; 73 | outline: none; 74 | border-radius: 4px; 75 | text-align: center; 76 | background-color: rgb(84, 84, 84); 77 | color: #fff; 78 | outline: none; 79 | } 80 | 81 | .logo { 82 | width: 54px; 83 | } 84 | 85 | .footer { 86 | text-align: center; 87 | } 88 | .footer a { 89 | color:rgb(121, 119, 119); 90 | text-decoration: none; 91 | font-size: 3.8vh; 92 | } 93 | 94 | .footer p { 95 | color:rgb(134, 131, 131); 96 | text-decoration: none; 97 | font-size: 3.8vh; 98 | } 99 | 100 | ::placeholder { 101 | color: rgb(225, 225, 225); 102 | opacity: 1; 103 | } -------------------------------------------------------------------------------- /ex01-cordova-calculator/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Calculator 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /ex01-cordova-calculator/www/index.js: -------------------------------------------------------------------------------- 1 | function clearScreen() { 2 | document.getElementById("result").value = ""; 3 | } 4 | 5 | function liveScreen(value) { 6 | document.getElementById("result").value += value; 7 | } 8 | 9 | function switchTheme() { 10 | let darkmode = document.getElementById("dark-mode"); 11 | let theme = document.getElementById("theme"); 12 | 13 | if (theme.getAttribute("href") == "light.css") { 14 | theme.href = "dark.css"; 15 | darkmode.innerHTML = "Light Mode" 16 | } else { 17 | theme.href = "light.css"; 18 | darkmode.innerHTML = "Dark Mode" 19 | } 20 | } -------------------------------------------------------------------------------- /ex01-cordova-calculator/www/instilllearning_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/ex01-cordova-calculator/www/instilllearning_logo.png -------------------------------------------------------------------------------- /ex01-cordova-calculator/www/light.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | padding: 0; 4 | margin: 0; 5 | font-family: "open Sans", sans-serif; 6 | } 7 | 8 | body { 9 | transition: 0.8s; 10 | } 11 | 12 | .grid-container { 13 | display: grid; 14 | align-content: center; 15 | grid-template-columns: auto auto auto auto; 16 | gap: 1px; 17 | background-color: #044981; 18 | padding: 2px; 19 | margin-bottom: 1px; 20 | } 21 | 22 | input[type="text"] { 23 | background-color: rgba(255, 255, 255, 0.959); 24 | word-wrap: break-word; 25 | word-break: break-all; 26 | } 27 | 28 | input[type="button"]:hover { 29 | background-color: rgb(37, 35, 59); 30 | color: #fff; 31 | } 32 | 33 | .clear { 34 | background-color: rgb(255, 42, 42); 35 | color: #fff; 36 | font-size: 5vh; 37 | outline: none; 38 | } 39 | 40 | .item6 { 41 | grid-column: 1 / span 2; 42 | grid-row: 7; 43 | font-size: 3vh; 44 | } 45 | .item7 { 46 | grid-column: 3 / span 2; 47 | grid-row: 7; 48 | word-wrap: break-word; 49 | font-size: 8vh; 50 | } 51 | 52 | .result { 53 | font-size: 8vh; 54 | width: 100%; 55 | height: 31vh !important; 56 | grid-column: 1 / span 4; 57 | grid-row: 1; 58 | } 59 | 60 | .input-button { 61 | font-size: 4vh; 62 | color: rgb(17, 16, 16); 63 | cursor: pointer; 64 | border: none; 65 | height: 10.2vh; 66 | outline: none; 67 | border-radius: 4px; 68 | background-color: rgba(255, 255, 255, 0.8); 69 | text-align: center; 70 | } 71 | 72 | .logo { 73 | width: 54px; 74 | } 75 | 76 | .footer { 77 | text-align: center; 78 | background-color: gainsboro; 79 | } 80 | .footer a { 81 | color:rgb(112, 110, 110); 82 | text-decoration: none; 83 | font-size: 3.8vh; 84 | } 85 | 86 | .footer p { 87 | color:rgb(112, 110, 110); 88 | text-decoration: none; 89 | font-size: 3.8vh; 90 | } -------------------------------------------------------------------------------- /ex02-cordova-todo/.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | 19 | .DS_Store 20 | 21 | # Generated by package manager 22 | node_modules/ 23 | 24 | # Generated by Cordova 25 | /plugins/ 26 | /platforms/ 27 | -------------------------------------------------------------------------------- /ex02-cordova-todo/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ILToDoApp 4 | Sample Apache Cordova App 5 | 6 | Apache Cordova Team 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ex02-cordova-todo/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.instilllearning.ex02", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "com.instilllearning.ex02", 9 | "version": "1.0.0", 10 | "license": "Apache-2.0", 11 | "devDependencies": { 12 | "cordova-android": "^13.0.0" 13 | } 14 | }, 15 | "node_modules/@netflix/nerror": { 16 | "version": "1.1.3", 17 | "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", 18 | "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", 19 | "dev": true, 20 | "license": "MIT", 21 | "dependencies": { 22 | "assert-plus": "^1.0.0", 23 | "extsprintf": "^1.4.0", 24 | "lodash": "^4.17.15" 25 | } 26 | }, 27 | "node_modules/@nodelib/fs.scandir": { 28 | "version": "2.1.5", 29 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 30 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 31 | "dev": true, 32 | "license": "MIT", 33 | "dependencies": { 34 | "@nodelib/fs.stat": "2.0.5", 35 | "run-parallel": "^1.1.9" 36 | }, 37 | "engines": { 38 | "node": ">= 8" 39 | } 40 | }, 41 | "node_modules/@nodelib/fs.stat": { 42 | "version": "2.0.5", 43 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 44 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 45 | "dev": true, 46 | "license": "MIT", 47 | "engines": { 48 | "node": ">= 8" 49 | } 50 | }, 51 | "node_modules/@nodelib/fs.walk": { 52 | "version": "1.2.8", 53 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 54 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 55 | "dev": true, 56 | "license": "MIT", 57 | "dependencies": { 58 | "@nodelib/fs.scandir": "2.1.5", 59 | "fastq": "^1.6.0" 60 | }, 61 | "engines": { 62 | "node": ">= 8" 63 | } 64 | }, 65 | "node_modules/@xmldom/xmldom": { 66 | "version": "0.8.10", 67 | "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", 68 | "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 69 | "dev": true, 70 | "license": "MIT", 71 | "engines": { 72 | "node": ">=10.0.0" 73 | } 74 | }, 75 | "node_modules/abbrev": { 76 | "version": "2.0.0", 77 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", 78 | "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", 79 | "dev": true, 80 | "license": "ISC", 81 | "engines": { 82 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 83 | } 84 | }, 85 | "node_modules/android-versions": { 86 | "version": "2.0.0", 87 | "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-2.0.0.tgz", 88 | "integrity": "sha512-07fhKL8EjV+ORQggGHcKmhLECwxBlRFimfvsjhfUCYqNDAbcH4qaEaN0AO3DnWtgHqRNfWAxhnWOpx+ZpRMymw==", 89 | "dev": true, 90 | "license": "MIT", 91 | "dependencies": { 92 | "semver": "^7.5.2" 93 | } 94 | }, 95 | "node_modules/ansi": { 96 | "version": "0.3.1", 97 | "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", 98 | "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", 99 | "dev": true, 100 | "license": "MIT" 101 | }, 102 | "node_modules/assert-plus": { 103 | "version": "1.0.0", 104 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 105 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 106 | "dev": true, 107 | "license": "MIT", 108 | "engines": { 109 | "node": ">=0.8" 110 | } 111 | }, 112 | "node_modules/balanced-match": { 113 | "version": "1.0.2", 114 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 115 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 116 | "dev": true, 117 | "license": "MIT" 118 | }, 119 | "node_modules/base64-js": { 120 | "version": "1.5.1", 121 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 122 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 123 | "dev": true, 124 | "funding": [ 125 | { 126 | "type": "github", 127 | "url": "https://github.com/sponsors/feross" 128 | }, 129 | { 130 | "type": "patreon", 131 | "url": "https://www.patreon.com/feross" 132 | }, 133 | { 134 | "type": "consulting", 135 | "url": "https://feross.org/support" 136 | } 137 | ], 138 | "license": "MIT" 139 | }, 140 | "node_modules/big-integer": { 141 | "version": "1.6.52", 142 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", 143 | "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", 144 | "dev": true, 145 | "license": "Unlicense", 146 | "engines": { 147 | "node": ">=0.6" 148 | } 149 | }, 150 | "node_modules/bplist-parser": { 151 | "version": "0.3.2", 152 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", 153 | "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", 154 | "dev": true, 155 | "license": "MIT", 156 | "dependencies": { 157 | "big-integer": "1.6.x" 158 | }, 159 | "engines": { 160 | "node": ">= 5.10.0" 161 | } 162 | }, 163 | "node_modules/brace-expansion": { 164 | "version": "1.1.11", 165 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 166 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 167 | "dev": true, 168 | "license": "MIT", 169 | "dependencies": { 170 | "balanced-match": "^1.0.0", 171 | "concat-map": "0.0.1" 172 | } 173 | }, 174 | "node_modules/braces": { 175 | "version": "3.0.3", 176 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 177 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 178 | "dev": true, 179 | "license": "MIT", 180 | "dependencies": { 181 | "fill-range": "^7.1.1" 182 | }, 183 | "engines": { 184 | "node": ">=8" 185 | } 186 | }, 187 | "node_modules/concat-map": { 188 | "version": "0.0.1", 189 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 190 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 191 | "dev": true, 192 | "license": "MIT" 193 | }, 194 | "node_modules/cordova-android": { 195 | "version": "13.0.0", 196 | "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-13.0.0.tgz", 197 | "integrity": "sha512-uQG+cSyrB1NMi2aIzihldIupHB9WGpZVvrMMMAAtnyc6tDlEk7gweSSaFsEONyGAnteRYpIvrzg/YwDW08PcUg==", 198 | "dev": true, 199 | "license": "Apache-2.0", 200 | "dependencies": { 201 | "android-versions": "^2.0.0", 202 | "cordova-common": "^5.0.0", 203 | "dedent": "^1.5.3", 204 | "execa": "^5.1.1", 205 | "fast-glob": "^3.3.2", 206 | "fs-extra": "^11.2.0", 207 | "is-path-inside": "^3.0.3", 208 | "nopt": "^7.2.1", 209 | "properties-parser": "^0.6.0", 210 | "semver": "^7.6.2", 211 | "string-argv": "^0.3.1", 212 | "untildify": "^4.0.0", 213 | "which": "^4.0.0" 214 | }, 215 | "engines": { 216 | "node": ">=16.13.0" 217 | } 218 | }, 219 | "node_modules/cordova-common": { 220 | "version": "5.0.0", 221 | "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-5.0.0.tgz", 222 | "integrity": "sha512-6Aa7o52/iEvsKx6K94ijzFel5acCULR49KL27OUVhEpJ4oS7Dc3y2eOP1Eu0P4Wmiw/eLEDQjGXGiAa2D5zFZA==", 223 | "dev": true, 224 | "license": "Apache-2.0", 225 | "dependencies": { 226 | "@netflix/nerror": "^1.1.3", 227 | "ansi": "^0.3.1", 228 | "bplist-parser": "^0.3.2", 229 | "cross-spawn": "^7.0.3", 230 | "elementtree": "^0.1.7", 231 | "endent": "^2.1.0", 232 | "fast-glob": "^3.2.12", 233 | "fs-extra": "^11.1.0", 234 | "glob": "^7.1.6", 235 | "lodash.assign": "^4.2.0", 236 | "lodash.isdate": "^4.0.1", 237 | "lodash.isobject": "^3.0.2", 238 | "lodash.zip": "^4.2.0", 239 | "plist": "^3.0.6", 240 | "q": "^1.5.1", 241 | "read-chunk": "^3.2.0", 242 | "strip-bom": "^4.0.0" 243 | }, 244 | "engines": { 245 | "node": ">=16.0.0" 246 | } 247 | }, 248 | "node_modules/cross-spawn": { 249 | "version": "7.0.3", 250 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 251 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 252 | "dev": true, 253 | "license": "MIT", 254 | "dependencies": { 255 | "path-key": "^3.1.0", 256 | "shebang-command": "^2.0.0", 257 | "which": "^2.0.1" 258 | }, 259 | "engines": { 260 | "node": ">= 8" 261 | } 262 | }, 263 | "node_modules/cross-spawn/node_modules/isexe": { 264 | "version": "2.0.0", 265 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 266 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 267 | "dev": true, 268 | "license": "ISC" 269 | }, 270 | "node_modules/cross-spawn/node_modules/which": { 271 | "version": "2.0.2", 272 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 273 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 274 | "dev": true, 275 | "license": "ISC", 276 | "dependencies": { 277 | "isexe": "^2.0.0" 278 | }, 279 | "bin": { 280 | "node-which": "bin/node-which" 281 | }, 282 | "engines": { 283 | "node": ">= 8" 284 | } 285 | }, 286 | "node_modules/dedent": { 287 | "version": "1.5.3", 288 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", 289 | "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", 290 | "dev": true, 291 | "license": "MIT", 292 | "peerDependencies": { 293 | "babel-plugin-macros": "^3.1.0" 294 | }, 295 | "peerDependenciesMeta": { 296 | "babel-plugin-macros": { 297 | "optional": true 298 | } 299 | } 300 | }, 301 | "node_modules/elementtree": { 302 | "version": "0.1.7", 303 | "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", 304 | "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", 305 | "dev": true, 306 | "license": "Apache-2.0", 307 | "dependencies": { 308 | "sax": "1.1.4" 309 | }, 310 | "engines": { 311 | "node": ">= 0.4.0" 312 | } 313 | }, 314 | "node_modules/endent": { 315 | "version": "2.1.0", 316 | "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", 317 | "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", 318 | "dev": true, 319 | "license": "MIT", 320 | "dependencies": { 321 | "dedent": "^0.7.0", 322 | "fast-json-parse": "^1.0.3", 323 | "objectorarray": "^1.0.5" 324 | } 325 | }, 326 | "node_modules/endent/node_modules/dedent": { 327 | "version": "0.7.0", 328 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 329 | "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", 330 | "dev": true, 331 | "license": "MIT" 332 | }, 333 | "node_modules/execa": { 334 | "version": "5.1.1", 335 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 336 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 337 | "dev": true, 338 | "license": "MIT", 339 | "dependencies": { 340 | "cross-spawn": "^7.0.3", 341 | "get-stream": "^6.0.0", 342 | "human-signals": "^2.1.0", 343 | "is-stream": "^2.0.0", 344 | "merge-stream": "^2.0.0", 345 | "npm-run-path": "^4.0.1", 346 | "onetime": "^5.1.2", 347 | "signal-exit": "^3.0.3", 348 | "strip-final-newline": "^2.0.0" 349 | }, 350 | "engines": { 351 | "node": ">=10" 352 | }, 353 | "funding": { 354 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 355 | } 356 | }, 357 | "node_modules/extsprintf": { 358 | "version": "1.4.1", 359 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", 360 | "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", 361 | "dev": true, 362 | "engines": [ 363 | "node >=0.6.0" 364 | ], 365 | "license": "MIT" 366 | }, 367 | "node_modules/fast-glob": { 368 | "version": "3.3.2", 369 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 370 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 371 | "dev": true, 372 | "license": "MIT", 373 | "dependencies": { 374 | "@nodelib/fs.stat": "^2.0.2", 375 | "@nodelib/fs.walk": "^1.2.3", 376 | "glob-parent": "^5.1.2", 377 | "merge2": "^1.3.0", 378 | "micromatch": "^4.0.4" 379 | }, 380 | "engines": { 381 | "node": ">=8.6.0" 382 | } 383 | }, 384 | "node_modules/fast-json-parse": { 385 | "version": "1.0.3", 386 | "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", 387 | "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", 388 | "dev": true, 389 | "license": "MIT" 390 | }, 391 | "node_modules/fastq": { 392 | "version": "1.17.1", 393 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 394 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 395 | "dev": true, 396 | "license": "ISC", 397 | "dependencies": { 398 | "reusify": "^1.0.4" 399 | } 400 | }, 401 | "node_modules/fill-range": { 402 | "version": "7.1.1", 403 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 404 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 405 | "dev": true, 406 | "license": "MIT", 407 | "dependencies": { 408 | "to-regex-range": "^5.0.1" 409 | }, 410 | "engines": { 411 | "node": ">=8" 412 | } 413 | }, 414 | "node_modules/fs-extra": { 415 | "version": "11.2.0", 416 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", 417 | "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", 418 | "dev": true, 419 | "license": "MIT", 420 | "dependencies": { 421 | "graceful-fs": "^4.2.0", 422 | "jsonfile": "^6.0.1", 423 | "universalify": "^2.0.0" 424 | }, 425 | "engines": { 426 | "node": ">=14.14" 427 | } 428 | }, 429 | "node_modules/fs.realpath": { 430 | "version": "1.0.0", 431 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 432 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 433 | "dev": true, 434 | "license": "ISC" 435 | }, 436 | "node_modules/get-stream": { 437 | "version": "6.0.1", 438 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 439 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 440 | "dev": true, 441 | "license": "MIT", 442 | "engines": { 443 | "node": ">=10" 444 | }, 445 | "funding": { 446 | "url": "https://github.com/sponsors/sindresorhus" 447 | } 448 | }, 449 | "node_modules/glob": { 450 | "version": "7.2.3", 451 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 452 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 453 | "deprecated": "Glob versions prior to v9 are no longer supported", 454 | "dev": true, 455 | "license": "ISC", 456 | "dependencies": { 457 | "fs.realpath": "^1.0.0", 458 | "inflight": "^1.0.4", 459 | "inherits": "2", 460 | "minimatch": "^3.1.1", 461 | "once": "^1.3.0", 462 | "path-is-absolute": "^1.0.0" 463 | }, 464 | "engines": { 465 | "node": "*" 466 | }, 467 | "funding": { 468 | "url": "https://github.com/sponsors/isaacs" 469 | } 470 | }, 471 | "node_modules/glob-parent": { 472 | "version": "5.1.2", 473 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 474 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 475 | "dev": true, 476 | "license": "ISC", 477 | "dependencies": { 478 | "is-glob": "^4.0.1" 479 | }, 480 | "engines": { 481 | "node": ">= 6" 482 | } 483 | }, 484 | "node_modules/graceful-fs": { 485 | "version": "4.2.11", 486 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 487 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 488 | "dev": true, 489 | "license": "ISC" 490 | }, 491 | "node_modules/human-signals": { 492 | "version": "2.1.0", 493 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 494 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 495 | "dev": true, 496 | "license": "Apache-2.0", 497 | "engines": { 498 | "node": ">=10.17.0" 499 | } 500 | }, 501 | "node_modules/inflight": { 502 | "version": "1.0.6", 503 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 504 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 505 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 506 | "dev": true, 507 | "license": "ISC", 508 | "dependencies": { 509 | "once": "^1.3.0", 510 | "wrappy": "1" 511 | } 512 | }, 513 | "node_modules/inherits": { 514 | "version": "2.0.4", 515 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 516 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 517 | "dev": true, 518 | "license": "ISC" 519 | }, 520 | "node_modules/is-extglob": { 521 | "version": "2.1.1", 522 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 523 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 524 | "dev": true, 525 | "license": "MIT", 526 | "engines": { 527 | "node": ">=0.10.0" 528 | } 529 | }, 530 | "node_modules/is-glob": { 531 | "version": "4.0.3", 532 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 533 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 534 | "dev": true, 535 | "license": "MIT", 536 | "dependencies": { 537 | "is-extglob": "^2.1.1" 538 | }, 539 | "engines": { 540 | "node": ">=0.10.0" 541 | } 542 | }, 543 | "node_modules/is-number": { 544 | "version": "7.0.0", 545 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 546 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 547 | "dev": true, 548 | "license": "MIT", 549 | "engines": { 550 | "node": ">=0.12.0" 551 | } 552 | }, 553 | "node_modules/is-path-inside": { 554 | "version": "3.0.3", 555 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 556 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 557 | "dev": true, 558 | "license": "MIT", 559 | "engines": { 560 | "node": ">=8" 561 | } 562 | }, 563 | "node_modules/is-stream": { 564 | "version": "2.0.1", 565 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 566 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 567 | "dev": true, 568 | "license": "MIT", 569 | "engines": { 570 | "node": ">=8" 571 | }, 572 | "funding": { 573 | "url": "https://github.com/sponsors/sindresorhus" 574 | } 575 | }, 576 | "node_modules/isexe": { 577 | "version": "3.1.1", 578 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", 579 | "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", 580 | "dev": true, 581 | "license": "ISC", 582 | "engines": { 583 | "node": ">=16" 584 | } 585 | }, 586 | "node_modules/jsonfile": { 587 | "version": "6.1.0", 588 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 589 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 590 | "dev": true, 591 | "license": "MIT", 592 | "dependencies": { 593 | "universalify": "^2.0.0" 594 | }, 595 | "optionalDependencies": { 596 | "graceful-fs": "^4.1.6" 597 | } 598 | }, 599 | "node_modules/lodash": { 600 | "version": "4.17.21", 601 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 602 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 603 | "dev": true, 604 | "license": "MIT" 605 | }, 606 | "node_modules/lodash.assign": { 607 | "version": "4.2.0", 608 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", 609 | "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", 610 | "dev": true, 611 | "license": "MIT" 612 | }, 613 | "node_modules/lodash.isdate": { 614 | "version": "4.0.1", 615 | "resolved": "https://registry.npmjs.org/lodash.isdate/-/lodash.isdate-4.0.1.tgz", 616 | "integrity": "sha512-hg5B1GD+R9egsBgMwmAhk+V53Us03TVvXT4dnyKugEfsD4QKuG9Wlyvxq8OGy2nu7qVGsh4DRSnMk33hoWBq/Q==", 617 | "dev": true, 618 | "license": "MIT" 619 | }, 620 | "node_modules/lodash.isobject": { 621 | "version": "3.0.2", 622 | "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", 623 | "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", 624 | "dev": true, 625 | "license": "MIT" 626 | }, 627 | "node_modules/lodash.zip": { 628 | "version": "4.2.0", 629 | "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", 630 | "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", 631 | "dev": true, 632 | "license": "MIT" 633 | }, 634 | "node_modules/merge-stream": { 635 | "version": "2.0.0", 636 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 637 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 638 | "dev": true, 639 | "license": "MIT" 640 | }, 641 | "node_modules/merge2": { 642 | "version": "1.4.1", 643 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 644 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 645 | "dev": true, 646 | "license": "MIT", 647 | "engines": { 648 | "node": ">= 8" 649 | } 650 | }, 651 | "node_modules/micromatch": { 652 | "version": "4.0.7", 653 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 654 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 655 | "dev": true, 656 | "license": "MIT", 657 | "dependencies": { 658 | "braces": "^3.0.3", 659 | "picomatch": "^2.3.1" 660 | }, 661 | "engines": { 662 | "node": ">=8.6" 663 | } 664 | }, 665 | "node_modules/mimic-fn": { 666 | "version": "2.1.0", 667 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 668 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 669 | "dev": true, 670 | "license": "MIT", 671 | "engines": { 672 | "node": ">=6" 673 | } 674 | }, 675 | "node_modules/minimatch": { 676 | "version": "3.1.2", 677 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 678 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 679 | "dev": true, 680 | "license": "ISC", 681 | "dependencies": { 682 | "brace-expansion": "^1.1.7" 683 | }, 684 | "engines": { 685 | "node": "*" 686 | } 687 | }, 688 | "node_modules/nopt": { 689 | "version": "7.2.1", 690 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", 691 | "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", 692 | "dev": true, 693 | "license": "ISC", 694 | "dependencies": { 695 | "abbrev": "^2.0.0" 696 | }, 697 | "bin": { 698 | "nopt": "bin/nopt.js" 699 | }, 700 | "engines": { 701 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 702 | } 703 | }, 704 | "node_modules/npm-run-path": { 705 | "version": "4.0.1", 706 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 707 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 708 | "dev": true, 709 | "license": "MIT", 710 | "dependencies": { 711 | "path-key": "^3.0.0" 712 | }, 713 | "engines": { 714 | "node": ">=8" 715 | } 716 | }, 717 | "node_modules/objectorarray": { 718 | "version": "1.0.5", 719 | "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", 720 | "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", 721 | "dev": true, 722 | "license": "ISC" 723 | }, 724 | "node_modules/once": { 725 | "version": "1.4.0", 726 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 727 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 728 | "dev": true, 729 | "license": "ISC", 730 | "dependencies": { 731 | "wrappy": "1" 732 | } 733 | }, 734 | "node_modules/onetime": { 735 | "version": "5.1.2", 736 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 737 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 738 | "dev": true, 739 | "license": "MIT", 740 | "dependencies": { 741 | "mimic-fn": "^2.1.0" 742 | }, 743 | "engines": { 744 | "node": ">=6" 745 | }, 746 | "funding": { 747 | "url": "https://github.com/sponsors/sindresorhus" 748 | } 749 | }, 750 | "node_modules/p-finally": { 751 | "version": "1.0.0", 752 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 753 | "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 754 | "dev": true, 755 | "license": "MIT", 756 | "engines": { 757 | "node": ">=4" 758 | } 759 | }, 760 | "node_modules/p-try": { 761 | "version": "2.2.0", 762 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 763 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 764 | "dev": true, 765 | "license": "MIT", 766 | "engines": { 767 | "node": ">=6" 768 | } 769 | }, 770 | "node_modules/path-is-absolute": { 771 | "version": "1.0.1", 772 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 773 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 774 | "dev": true, 775 | "license": "MIT", 776 | "engines": { 777 | "node": ">=0.10.0" 778 | } 779 | }, 780 | "node_modules/path-key": { 781 | "version": "3.1.1", 782 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 783 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 784 | "dev": true, 785 | "license": "MIT", 786 | "engines": { 787 | "node": ">=8" 788 | } 789 | }, 790 | "node_modules/picomatch": { 791 | "version": "2.3.1", 792 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 793 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 794 | "dev": true, 795 | "license": "MIT", 796 | "engines": { 797 | "node": ">=8.6" 798 | }, 799 | "funding": { 800 | "url": "https://github.com/sponsors/jonschlinkert" 801 | } 802 | }, 803 | "node_modules/pify": { 804 | "version": "4.0.1", 805 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 806 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 807 | "dev": true, 808 | "license": "MIT", 809 | "engines": { 810 | "node": ">=6" 811 | } 812 | }, 813 | "node_modules/plist": { 814 | "version": "3.1.0", 815 | "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", 816 | "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", 817 | "dev": true, 818 | "license": "MIT", 819 | "dependencies": { 820 | "@xmldom/xmldom": "^0.8.8", 821 | "base64-js": "^1.5.1", 822 | "xmlbuilder": "^15.1.1" 823 | }, 824 | "engines": { 825 | "node": ">=10.4.0" 826 | } 827 | }, 828 | "node_modules/properties-parser": { 829 | "version": "0.6.0", 830 | "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.6.0.tgz", 831 | "integrity": "sha512-qvr2cSmoA0dln0MARAKwBzPkkXn7FqwX+RVVNpMdMJc7rt9mqO2cXwluxtux9fHrLhjnPFaQkS8BM0kFrTCnSw==", 832 | "dev": true, 833 | "license": "MIT", 834 | "engines": { 835 | "node": ">= 0.3.1" 836 | } 837 | }, 838 | "node_modules/q": { 839 | "version": "1.5.1", 840 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 841 | "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", 842 | "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", 843 | "dev": true, 844 | "license": "MIT", 845 | "engines": { 846 | "node": ">=0.6.0", 847 | "teleport": ">=0.2.0" 848 | } 849 | }, 850 | "node_modules/queue-microtask": { 851 | "version": "1.2.3", 852 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 853 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 854 | "dev": true, 855 | "funding": [ 856 | { 857 | "type": "github", 858 | "url": "https://github.com/sponsors/feross" 859 | }, 860 | { 861 | "type": "patreon", 862 | "url": "https://www.patreon.com/feross" 863 | }, 864 | { 865 | "type": "consulting", 866 | "url": "https://feross.org/support" 867 | } 868 | ], 869 | "license": "MIT" 870 | }, 871 | "node_modules/read-chunk": { 872 | "version": "3.2.0", 873 | "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", 874 | "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", 875 | "dev": true, 876 | "license": "MIT", 877 | "dependencies": { 878 | "pify": "^4.0.1", 879 | "with-open-file": "^0.1.6" 880 | }, 881 | "engines": { 882 | "node": ">=6" 883 | } 884 | }, 885 | "node_modules/reusify": { 886 | "version": "1.0.4", 887 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 888 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 889 | "dev": true, 890 | "license": "MIT", 891 | "engines": { 892 | "iojs": ">=1.0.0", 893 | "node": ">=0.10.0" 894 | } 895 | }, 896 | "node_modules/run-parallel": { 897 | "version": "1.2.0", 898 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 899 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 900 | "dev": true, 901 | "funding": [ 902 | { 903 | "type": "github", 904 | "url": "https://github.com/sponsors/feross" 905 | }, 906 | { 907 | "type": "patreon", 908 | "url": "https://www.patreon.com/feross" 909 | }, 910 | { 911 | "type": "consulting", 912 | "url": "https://feross.org/support" 913 | } 914 | ], 915 | "license": "MIT", 916 | "dependencies": { 917 | "queue-microtask": "^1.2.2" 918 | } 919 | }, 920 | "node_modules/sax": { 921 | "version": "1.1.4", 922 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", 923 | "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", 924 | "dev": true, 925 | "license": "ISC" 926 | }, 927 | "node_modules/semver": { 928 | "version": "7.6.3", 929 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 930 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 931 | "dev": true, 932 | "license": "ISC", 933 | "bin": { 934 | "semver": "bin/semver.js" 935 | }, 936 | "engines": { 937 | "node": ">=10" 938 | } 939 | }, 940 | "node_modules/shebang-command": { 941 | "version": "2.0.0", 942 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 943 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 944 | "dev": true, 945 | "license": "MIT", 946 | "dependencies": { 947 | "shebang-regex": "^3.0.0" 948 | }, 949 | "engines": { 950 | "node": ">=8" 951 | } 952 | }, 953 | "node_modules/shebang-regex": { 954 | "version": "3.0.0", 955 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 956 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 957 | "dev": true, 958 | "license": "MIT", 959 | "engines": { 960 | "node": ">=8" 961 | } 962 | }, 963 | "node_modules/signal-exit": { 964 | "version": "3.0.7", 965 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 966 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 967 | "dev": true, 968 | "license": "ISC" 969 | }, 970 | "node_modules/string-argv": { 971 | "version": "0.3.2", 972 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", 973 | "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", 974 | "dev": true, 975 | "license": "MIT", 976 | "engines": { 977 | "node": ">=0.6.19" 978 | } 979 | }, 980 | "node_modules/strip-bom": { 981 | "version": "4.0.0", 982 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 983 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 984 | "dev": true, 985 | "license": "MIT", 986 | "engines": { 987 | "node": ">=8" 988 | } 989 | }, 990 | "node_modules/strip-final-newline": { 991 | "version": "2.0.0", 992 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 993 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 994 | "dev": true, 995 | "license": "MIT", 996 | "engines": { 997 | "node": ">=6" 998 | } 999 | }, 1000 | "node_modules/to-regex-range": { 1001 | "version": "5.0.1", 1002 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1003 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1004 | "dev": true, 1005 | "license": "MIT", 1006 | "dependencies": { 1007 | "is-number": "^7.0.0" 1008 | }, 1009 | "engines": { 1010 | "node": ">=8.0" 1011 | } 1012 | }, 1013 | "node_modules/universalify": { 1014 | "version": "2.0.1", 1015 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 1016 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 1017 | "dev": true, 1018 | "license": "MIT", 1019 | "engines": { 1020 | "node": ">= 10.0.0" 1021 | } 1022 | }, 1023 | "node_modules/untildify": { 1024 | "version": "4.0.0", 1025 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", 1026 | "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", 1027 | "dev": true, 1028 | "license": "MIT", 1029 | "engines": { 1030 | "node": ">=8" 1031 | } 1032 | }, 1033 | "node_modules/which": { 1034 | "version": "4.0.0", 1035 | "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", 1036 | "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", 1037 | "dev": true, 1038 | "license": "ISC", 1039 | "dependencies": { 1040 | "isexe": "^3.1.1" 1041 | }, 1042 | "bin": { 1043 | "node-which": "bin/which.js" 1044 | }, 1045 | "engines": { 1046 | "node": "^16.13.0 || >=18.0.0" 1047 | } 1048 | }, 1049 | "node_modules/with-open-file": { 1050 | "version": "0.1.7", 1051 | "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", 1052 | "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", 1053 | "dev": true, 1054 | "license": "MIT", 1055 | "dependencies": { 1056 | "p-finally": "^1.0.0", 1057 | "p-try": "^2.1.0", 1058 | "pify": "^4.0.1" 1059 | }, 1060 | "engines": { 1061 | "node": ">=6" 1062 | } 1063 | }, 1064 | "node_modules/wrappy": { 1065 | "version": "1.0.2", 1066 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1067 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1068 | "dev": true, 1069 | "license": "ISC" 1070 | }, 1071 | "node_modules/xmlbuilder": { 1072 | "version": "15.1.1", 1073 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", 1074 | "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", 1075 | "dev": true, 1076 | "license": "MIT", 1077 | "engines": { 1078 | "node": ">=8.0" 1079 | } 1080 | } 1081 | } 1082 | } 1083 | -------------------------------------------------------------------------------- /ex02-cordova-todo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.instilllearning.ex02", 3 | "displayName": "ILToDoApp", 4 | "version": "1.0.0", 5 | "description": "A sample Apache Cordova application that responds to the deviceready event.", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [ 11 | "ecosystem:cordova" 12 | ], 13 | "author": "Apache Cordova Team", 14 | "license": "Apache-2.0", 15 | "devDependencies": { 16 | "cordova-android": "^13.0.0" 17 | }, 18 | "cordova": { 19 | "platforms": [ 20 | "android" 21 | ] 22 | } 23 | } -------------------------------------------------------------------------------- /ex02-cordova-todo/www/css/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 10px; 3 | display: flex; 4 | flex-direction: column; 5 | min-height: 100vh; 6 | } 7 | 8 | .task-group { 9 | margin-bottom: 20px; 10 | } 11 | 12 | .task-group h2 { 13 | font-size: 1.2rem; 14 | } 15 | 16 | .task-group ul { 17 | list-style: none; 18 | padding: 0; 19 | } 20 | 21 | .task-group li.done label { 22 | color: #999; 23 | text-decoration: line-through; 24 | } 25 | 26 | .task-group li { 27 | text-align: left; 28 | } 29 | .task-group li .task-number{ 30 | display:none; 31 | } 32 | 33 | .list-group-item { 34 | text-align: left; 35 | } 36 | 37 | .container { 38 | flex-grow: 1; 39 | } 40 | 41 | .footer { 42 | position: relative; 43 | bottom: 0; 44 | left: 0; 45 | width: 100%; 46 | text-align: center; 47 | padding: 10px 0; 48 | } 49 | 50 | .logo { 51 | max-width: 150px; 52 | height: auto; 53 | } 54 | 55 | .footer a { 56 | color: #49085d; 57 | text-decoration: none; 58 | } 59 | 60 | .clickable { 61 | cursor: pointer; /* Indicate that list items are clickable */ 62 | } 63 | 64 | .task-group li .task-number{ 65 | display:none; /* Hide the task numbers completely */ 66 | } 67 | 68 | .list-group-item { 69 | text-align: left; 70 | } -------------------------------------------------------------------------------- /ex02-cordova-todo/www/img/instilllearning_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/ex02-cordova-todo/www/img/instilllearning_logo.jpg -------------------------------------------------------------------------------- /ex02-cordova-todo/www/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/ex02-cordova-todo/www/img/logo.png -------------------------------------------------------------------------------- /ex02-cordova-todo/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | Todo App 19 | 20 | 21 |
22 |

Todo List

23 |
24 | 25 |
26 | 27 |
28 |
29 |
30 |
31 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /ex02-cordova-todo/www/js/index.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("deviceready", onDeviceReady, false); 2 | 3 | function onDeviceReady() { 4 | const newTaskInput = document.getElementById("newTask"); 5 | const addTaskButton = document.getElementById("addTask"); 6 | const taskGroups = document.getElementById("taskGroups"); 7 | 8 | let tasks = JSON.parse(localStorage.getItem("tasks")) || []; 9 | renderTasks(); 10 | 11 | addTaskButton.addEventListener("click", addTask); 12 | 13 | function addTask() { 14 | const taskText = newTaskInput.value.trim(); 15 | if (taskText) { 16 | const today = new Date().toLocaleDateString(); 17 | tasks.unshift({ text: taskText, date: today, done: false }); 18 | localStorage.setItem("tasks", JSON.stringify(tasks)); 19 | newTaskInput.value = ""; 20 | renderTasks(); 21 | } 22 | } 23 | 24 | function renderTasks() { 25 | taskGroups.innerHTML = ""; 26 | const groupedTasks = groupTasksByDate(tasks); 27 | 28 | for (const date in groupedTasks) { 29 | const taskGroup = document.createElement("div"); 30 | taskGroup.classList.add("task-group"); 31 | 32 | const dateHeader = document.createElement("h2"); 33 | dateHeader.textContent = date; 34 | taskGroup.appendChild(dateHeader); 35 | 36 | const ul = document.createElement("ul"); 37 | ul.classList.add("list-group"); 38 | groupedTasks[date].forEach((task, index) => { 39 | const li = document.createElement("li"); 40 | li.classList.add( 41 | "list-group-item", 42 | "d-flex", 43 | "justify-content-between", 44 | "align-items-center" // Removed clickable class from li 45 | ); 46 | 47 | // Immediately add the 'done' class if the task is done 48 | if (task.done) li.classList.add("done"); 49 | 50 | li.innerHTML = ` 51 |
52 | 53 | 54 |
55 | `; 56 | 57 | // Add event listener only to the label 58 | const label = li.querySelector('.form-check-label'); 59 | label.addEventListener("click", () => editTask(li, task, date, index)); 60 | 61 | ul.appendChild(li); 62 | }); 63 | 64 | taskGroup.appendChild(ul); 65 | taskGroups.appendChild(taskGroup); 66 | } 67 | 68 | const doneCheckboxes = taskGroups.querySelectorAll(".done-checkbox"); 69 | doneCheckboxes.forEach((checkbox) => 70 | checkbox.addEventListener("change", toggleTaskDone) 71 | ); 72 | } 73 | 74 | function groupTasksByDate(tasks) { 75 | const grouped = {}; 76 | tasks.forEach((task) => { 77 | if (!grouped[task.date]) grouped[task.date] = []; 78 | grouped[task.date].push(task); 79 | }); 80 | return grouped; 81 | } 82 | 83 | function deleteTask(task, date) { 84 | tasks = tasks.filter((t) => !(t === task)); 85 | localStorage.setItem("tasks", JSON.stringify(tasks)); 86 | renderTasks(); 87 | } 88 | 89 | function editTask(liElement, task, date, index) { 90 | const newText = prompt("Edit task: (Leave blank to delete)", task.text); 91 | if (newText !== null) { 92 | if (newText.trim() === "") { 93 | deleteTask(task, date); 94 | } else { 95 | task.text = newText.trim(); 96 | localStorage.setItem("tasks", JSON.stringify(tasks)); 97 | liElement.querySelector('label').textContent = newText.trim(); // Update label text 98 | } 99 | } 100 | } 101 | 102 | function toggleTaskDone(event) { 103 | const checkbox = event.target; 104 | const li = checkbox.closest("li"); 105 | const label = li.querySelector('label'); 106 | 107 | const ul = checkbox.closest('ul'); 108 | const date = ul.previousElementSibling.textContent; 109 | const taskIndex = Array.from(ul.children).indexOf(li); 110 | const task = tasks.find( 111 | (t) => t.date === date && tasks.indexOf(t) === taskIndex 112 | ); 113 | 114 | task.done = checkbox.checked; 115 | 116 | // Update local storage immediately 117 | localStorage.setItem("tasks", JSON.stringify(tasks)); 118 | 119 | // Update the label's class and the li element's class immediately 120 | label.classList.toggle("done", task.done); 121 | li.classList.toggle("done", task.done); 122 | 123 | renderTasks(); // Re-render the tasks after toggle 124 | } 125 | } 126 | 127 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | 19 | .DS_Store 20 | 21 | # Generated by package manager 22 | node_modules/ 23 | 24 | # Generated by Cordova 25 | /plugins/ 26 | /platforms/ 27 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ILQuizApp 4 | Sample Apache Cordova App 5 | 6 | Apache Cordova Team 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.instilllearning.quizapp", 3 | "displayName": "ILQuizApp", 4 | "version": "1.0.0", 5 | "description": "A sample Apache Cordova application that responds to the deviceready event.", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [ 11 | "ecosystem:cordova" 12 | ], 13 | "author": "Apache Cordova Team", 14 | "license": "Apache-2.0" 15 | } 16 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/server/.gitignore: -------------------------------------------------------------------------------- 1 | .env -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "server", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.20.2", 13 | "cors": "^2.8.5", 14 | "dotenv": "^16.4.5", 15 | "express": "^4.19.2", 16 | "mongodb": "^6.8.0", 17 | "mongoose": "^8.5.1" 18 | } 19 | }, 20 | "node_modules/@mongodb-js/saslprep": { 21 | "version": "1.1.8", 22 | "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", 23 | "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==", 24 | "license": "MIT", 25 | "dependencies": { 26 | "sparse-bitfield": "^3.0.3" 27 | } 28 | }, 29 | "node_modules/@types/webidl-conversions": { 30 | "version": "7.0.3", 31 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", 32 | "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", 33 | "license": "MIT" 34 | }, 35 | "node_modules/@types/whatwg-url": { 36 | "version": "11.0.5", 37 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", 38 | "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", 39 | "license": "MIT", 40 | "dependencies": { 41 | "@types/webidl-conversions": "*" 42 | } 43 | }, 44 | "node_modules/accepts": { 45 | "version": "1.3.8", 46 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 47 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 48 | "license": "MIT", 49 | "dependencies": { 50 | "mime-types": "~2.1.34", 51 | "negotiator": "0.6.3" 52 | }, 53 | "engines": { 54 | "node": ">= 0.6" 55 | } 56 | }, 57 | "node_modules/array-flatten": { 58 | "version": "1.1.1", 59 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 60 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", 61 | "license": "MIT" 62 | }, 63 | "node_modules/body-parser": { 64 | "version": "1.20.2", 65 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", 66 | "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", 67 | "license": "MIT", 68 | "dependencies": { 69 | "bytes": "3.1.2", 70 | "content-type": "~1.0.5", 71 | "debug": "2.6.9", 72 | "depd": "2.0.0", 73 | "destroy": "1.2.0", 74 | "http-errors": "2.0.0", 75 | "iconv-lite": "0.4.24", 76 | "on-finished": "2.4.1", 77 | "qs": "6.11.0", 78 | "raw-body": "2.5.2", 79 | "type-is": "~1.6.18", 80 | "unpipe": "1.0.0" 81 | }, 82 | "engines": { 83 | "node": ">= 0.8", 84 | "npm": "1.2.8000 || >= 1.4.16" 85 | } 86 | }, 87 | "node_modules/bson": { 88 | "version": "6.8.0", 89 | "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", 90 | "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", 91 | "license": "Apache-2.0", 92 | "engines": { 93 | "node": ">=16.20.1" 94 | } 95 | }, 96 | "node_modules/bytes": { 97 | "version": "3.1.2", 98 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 99 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 100 | "license": "MIT", 101 | "engines": { 102 | "node": ">= 0.8" 103 | } 104 | }, 105 | "node_modules/call-bind": { 106 | "version": "1.0.7", 107 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", 108 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", 109 | "license": "MIT", 110 | "dependencies": { 111 | "es-define-property": "^1.0.0", 112 | "es-errors": "^1.3.0", 113 | "function-bind": "^1.1.2", 114 | "get-intrinsic": "^1.2.4", 115 | "set-function-length": "^1.2.1" 116 | }, 117 | "engines": { 118 | "node": ">= 0.4" 119 | }, 120 | "funding": { 121 | "url": "https://github.com/sponsors/ljharb" 122 | } 123 | }, 124 | "node_modules/content-disposition": { 125 | "version": "0.5.4", 126 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 127 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 128 | "license": "MIT", 129 | "dependencies": { 130 | "safe-buffer": "5.2.1" 131 | }, 132 | "engines": { 133 | "node": ">= 0.6" 134 | } 135 | }, 136 | "node_modules/content-type": { 137 | "version": "1.0.5", 138 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 139 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 140 | "license": "MIT", 141 | "engines": { 142 | "node": ">= 0.6" 143 | } 144 | }, 145 | "node_modules/cookie": { 146 | "version": "0.6.0", 147 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 148 | "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 149 | "license": "MIT", 150 | "engines": { 151 | "node": ">= 0.6" 152 | } 153 | }, 154 | "node_modules/cookie-signature": { 155 | "version": "1.0.6", 156 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 157 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", 158 | "license": "MIT" 159 | }, 160 | "node_modules/cors": { 161 | "version": "2.8.5", 162 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 163 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 164 | "license": "MIT", 165 | "dependencies": { 166 | "object-assign": "^4", 167 | "vary": "^1" 168 | }, 169 | "engines": { 170 | "node": ">= 0.10" 171 | } 172 | }, 173 | "node_modules/debug": { 174 | "version": "2.6.9", 175 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 176 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 177 | "license": "MIT", 178 | "dependencies": { 179 | "ms": "2.0.0" 180 | } 181 | }, 182 | "node_modules/define-data-property": { 183 | "version": "1.1.4", 184 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 185 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 186 | "license": "MIT", 187 | "dependencies": { 188 | "es-define-property": "^1.0.0", 189 | "es-errors": "^1.3.0", 190 | "gopd": "^1.0.1" 191 | }, 192 | "engines": { 193 | "node": ">= 0.4" 194 | }, 195 | "funding": { 196 | "url": "https://github.com/sponsors/ljharb" 197 | } 198 | }, 199 | "node_modules/depd": { 200 | "version": "2.0.0", 201 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 202 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 203 | "license": "MIT", 204 | "engines": { 205 | "node": ">= 0.8" 206 | } 207 | }, 208 | "node_modules/destroy": { 209 | "version": "1.2.0", 210 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 211 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 212 | "license": "MIT", 213 | "engines": { 214 | "node": ">= 0.8", 215 | "npm": "1.2.8000 || >= 1.4.16" 216 | } 217 | }, 218 | "node_modules/dotenv": { 219 | "version": "16.4.5", 220 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", 221 | "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", 222 | "license": "BSD-2-Clause", 223 | "engines": { 224 | "node": ">=12" 225 | }, 226 | "funding": { 227 | "url": "https://dotenvx.com" 228 | } 229 | }, 230 | "node_modules/ee-first": { 231 | "version": "1.1.1", 232 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 233 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 234 | "license": "MIT" 235 | }, 236 | "node_modules/encodeurl": { 237 | "version": "1.0.2", 238 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 239 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 240 | "license": "MIT", 241 | "engines": { 242 | "node": ">= 0.8" 243 | } 244 | }, 245 | "node_modules/es-define-property": { 246 | "version": "1.0.0", 247 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", 248 | "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", 249 | "license": "MIT", 250 | "dependencies": { 251 | "get-intrinsic": "^1.2.4" 252 | }, 253 | "engines": { 254 | "node": ">= 0.4" 255 | } 256 | }, 257 | "node_modules/es-errors": { 258 | "version": "1.3.0", 259 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 260 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 261 | "license": "MIT", 262 | "engines": { 263 | "node": ">= 0.4" 264 | } 265 | }, 266 | "node_modules/escape-html": { 267 | "version": "1.0.3", 268 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 269 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 270 | "license": "MIT" 271 | }, 272 | "node_modules/etag": { 273 | "version": "1.8.1", 274 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 275 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 276 | "license": "MIT", 277 | "engines": { 278 | "node": ">= 0.6" 279 | } 280 | }, 281 | "node_modules/express": { 282 | "version": "4.19.2", 283 | "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", 284 | "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", 285 | "license": "MIT", 286 | "dependencies": { 287 | "accepts": "~1.3.8", 288 | "array-flatten": "1.1.1", 289 | "body-parser": "1.20.2", 290 | "content-disposition": "0.5.4", 291 | "content-type": "~1.0.4", 292 | "cookie": "0.6.0", 293 | "cookie-signature": "1.0.6", 294 | "debug": "2.6.9", 295 | "depd": "2.0.0", 296 | "encodeurl": "~1.0.2", 297 | "escape-html": "~1.0.3", 298 | "etag": "~1.8.1", 299 | "finalhandler": "1.2.0", 300 | "fresh": "0.5.2", 301 | "http-errors": "2.0.0", 302 | "merge-descriptors": "1.0.1", 303 | "methods": "~1.1.2", 304 | "on-finished": "2.4.1", 305 | "parseurl": "~1.3.3", 306 | "path-to-regexp": "0.1.7", 307 | "proxy-addr": "~2.0.7", 308 | "qs": "6.11.0", 309 | "range-parser": "~1.2.1", 310 | "safe-buffer": "5.2.1", 311 | "send": "0.18.0", 312 | "serve-static": "1.15.0", 313 | "setprototypeof": "1.2.0", 314 | "statuses": "2.0.1", 315 | "type-is": "~1.6.18", 316 | "utils-merge": "1.0.1", 317 | "vary": "~1.1.2" 318 | }, 319 | "engines": { 320 | "node": ">= 0.10.0" 321 | } 322 | }, 323 | "node_modules/finalhandler": { 324 | "version": "1.2.0", 325 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 326 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 327 | "license": "MIT", 328 | "dependencies": { 329 | "debug": "2.6.9", 330 | "encodeurl": "~1.0.2", 331 | "escape-html": "~1.0.3", 332 | "on-finished": "2.4.1", 333 | "parseurl": "~1.3.3", 334 | "statuses": "2.0.1", 335 | "unpipe": "~1.0.0" 336 | }, 337 | "engines": { 338 | "node": ">= 0.8" 339 | } 340 | }, 341 | "node_modules/forwarded": { 342 | "version": "0.2.0", 343 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 344 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 345 | "license": "MIT", 346 | "engines": { 347 | "node": ">= 0.6" 348 | } 349 | }, 350 | "node_modules/fresh": { 351 | "version": "0.5.2", 352 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 353 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 354 | "license": "MIT", 355 | "engines": { 356 | "node": ">= 0.6" 357 | } 358 | }, 359 | "node_modules/function-bind": { 360 | "version": "1.1.2", 361 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 362 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 363 | "license": "MIT", 364 | "funding": { 365 | "url": "https://github.com/sponsors/ljharb" 366 | } 367 | }, 368 | "node_modules/get-intrinsic": { 369 | "version": "1.2.4", 370 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", 371 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", 372 | "license": "MIT", 373 | "dependencies": { 374 | "es-errors": "^1.3.0", 375 | "function-bind": "^1.1.2", 376 | "has-proto": "^1.0.1", 377 | "has-symbols": "^1.0.3", 378 | "hasown": "^2.0.0" 379 | }, 380 | "engines": { 381 | "node": ">= 0.4" 382 | }, 383 | "funding": { 384 | "url": "https://github.com/sponsors/ljharb" 385 | } 386 | }, 387 | "node_modules/gopd": { 388 | "version": "1.0.1", 389 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 390 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 391 | "license": "MIT", 392 | "dependencies": { 393 | "get-intrinsic": "^1.1.3" 394 | }, 395 | "funding": { 396 | "url": "https://github.com/sponsors/ljharb" 397 | } 398 | }, 399 | "node_modules/has-property-descriptors": { 400 | "version": "1.0.2", 401 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 402 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 403 | "license": "MIT", 404 | "dependencies": { 405 | "es-define-property": "^1.0.0" 406 | }, 407 | "funding": { 408 | "url": "https://github.com/sponsors/ljharb" 409 | } 410 | }, 411 | "node_modules/has-proto": { 412 | "version": "1.0.3", 413 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", 414 | "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", 415 | "license": "MIT", 416 | "engines": { 417 | "node": ">= 0.4" 418 | }, 419 | "funding": { 420 | "url": "https://github.com/sponsors/ljharb" 421 | } 422 | }, 423 | "node_modules/has-symbols": { 424 | "version": "1.0.3", 425 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 426 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 427 | "license": "MIT", 428 | "engines": { 429 | "node": ">= 0.4" 430 | }, 431 | "funding": { 432 | "url": "https://github.com/sponsors/ljharb" 433 | } 434 | }, 435 | "node_modules/hasown": { 436 | "version": "2.0.2", 437 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 438 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 439 | "license": "MIT", 440 | "dependencies": { 441 | "function-bind": "^1.1.2" 442 | }, 443 | "engines": { 444 | "node": ">= 0.4" 445 | } 446 | }, 447 | "node_modules/http-errors": { 448 | "version": "2.0.0", 449 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 450 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 451 | "license": "MIT", 452 | "dependencies": { 453 | "depd": "2.0.0", 454 | "inherits": "2.0.4", 455 | "setprototypeof": "1.2.0", 456 | "statuses": "2.0.1", 457 | "toidentifier": "1.0.1" 458 | }, 459 | "engines": { 460 | "node": ">= 0.8" 461 | } 462 | }, 463 | "node_modules/iconv-lite": { 464 | "version": "0.4.24", 465 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 466 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 467 | "license": "MIT", 468 | "dependencies": { 469 | "safer-buffer": ">= 2.1.2 < 3" 470 | }, 471 | "engines": { 472 | "node": ">=0.10.0" 473 | } 474 | }, 475 | "node_modules/inherits": { 476 | "version": "2.0.4", 477 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 478 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 479 | "license": "ISC" 480 | }, 481 | "node_modules/ipaddr.js": { 482 | "version": "1.9.1", 483 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 484 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 485 | "license": "MIT", 486 | "engines": { 487 | "node": ">= 0.10" 488 | } 489 | }, 490 | "node_modules/kareem": { 491 | "version": "2.6.3", 492 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", 493 | "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", 494 | "license": "Apache-2.0", 495 | "engines": { 496 | "node": ">=12.0.0" 497 | } 498 | }, 499 | "node_modules/media-typer": { 500 | "version": "0.3.0", 501 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 502 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 503 | "license": "MIT", 504 | "engines": { 505 | "node": ">= 0.6" 506 | } 507 | }, 508 | "node_modules/memory-pager": { 509 | "version": "1.5.0", 510 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 511 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 512 | "license": "MIT" 513 | }, 514 | "node_modules/merge-descriptors": { 515 | "version": "1.0.1", 516 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 517 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", 518 | "license": "MIT" 519 | }, 520 | "node_modules/methods": { 521 | "version": "1.1.2", 522 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 523 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 524 | "license": "MIT", 525 | "engines": { 526 | "node": ">= 0.6" 527 | } 528 | }, 529 | "node_modules/mime": { 530 | "version": "1.6.0", 531 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 532 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 533 | "license": "MIT", 534 | "bin": { 535 | "mime": "cli.js" 536 | }, 537 | "engines": { 538 | "node": ">=4" 539 | } 540 | }, 541 | "node_modules/mime-db": { 542 | "version": "1.52.0", 543 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 544 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 545 | "license": "MIT", 546 | "engines": { 547 | "node": ">= 0.6" 548 | } 549 | }, 550 | "node_modules/mime-types": { 551 | "version": "2.1.35", 552 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 553 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 554 | "license": "MIT", 555 | "dependencies": { 556 | "mime-db": "1.52.0" 557 | }, 558 | "engines": { 559 | "node": ">= 0.6" 560 | } 561 | }, 562 | "node_modules/mongodb": { 563 | "version": "6.8.0", 564 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", 565 | "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", 566 | "license": "Apache-2.0", 567 | "dependencies": { 568 | "@mongodb-js/saslprep": "^1.1.5", 569 | "bson": "^6.7.0", 570 | "mongodb-connection-string-url": "^3.0.0" 571 | }, 572 | "engines": { 573 | "node": ">=16.20.1" 574 | }, 575 | "peerDependencies": { 576 | "@aws-sdk/credential-providers": "^3.188.0", 577 | "@mongodb-js/zstd": "^1.1.0", 578 | "gcp-metadata": "^5.2.0", 579 | "kerberos": "^2.0.1", 580 | "mongodb-client-encryption": ">=6.0.0 <7", 581 | "snappy": "^7.2.2", 582 | "socks": "^2.7.1" 583 | }, 584 | "peerDependenciesMeta": { 585 | "@aws-sdk/credential-providers": { 586 | "optional": true 587 | }, 588 | "@mongodb-js/zstd": { 589 | "optional": true 590 | }, 591 | "gcp-metadata": { 592 | "optional": true 593 | }, 594 | "kerberos": { 595 | "optional": true 596 | }, 597 | "mongodb-client-encryption": { 598 | "optional": true 599 | }, 600 | "snappy": { 601 | "optional": true 602 | }, 603 | "socks": { 604 | "optional": true 605 | } 606 | } 607 | }, 608 | "node_modules/mongodb-connection-string-url": { 609 | "version": "3.0.1", 610 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", 611 | "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", 612 | "license": "Apache-2.0", 613 | "dependencies": { 614 | "@types/whatwg-url": "^11.0.2", 615 | "whatwg-url": "^13.0.0" 616 | } 617 | }, 618 | "node_modules/mongoose": { 619 | "version": "8.5.1", 620 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.1.tgz", 621 | "integrity": "sha512-OhVcwVl91A1G6+XpjDcpkGP7l7ikZkxa0DylX7NT/lcEqAjggzSdqDxb48A+xsDxqNAr0ntSJ1yiE3+KJTOd5Q==", 622 | "license": "MIT", 623 | "dependencies": { 624 | "bson": "^6.7.0", 625 | "kareem": "2.6.3", 626 | "mongodb": "6.7.0", 627 | "mpath": "0.9.0", 628 | "mquery": "5.0.0", 629 | "ms": "2.1.3", 630 | "sift": "17.1.3" 631 | }, 632 | "engines": { 633 | "node": ">=16.20.1" 634 | }, 635 | "funding": { 636 | "type": "opencollective", 637 | "url": "https://opencollective.com/mongoose" 638 | } 639 | }, 640 | "node_modules/mongoose/node_modules/mongodb": { 641 | "version": "6.7.0", 642 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", 643 | "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", 644 | "license": "Apache-2.0", 645 | "dependencies": { 646 | "@mongodb-js/saslprep": "^1.1.5", 647 | "bson": "^6.7.0", 648 | "mongodb-connection-string-url": "^3.0.0" 649 | }, 650 | "engines": { 651 | "node": ">=16.20.1" 652 | }, 653 | "peerDependencies": { 654 | "@aws-sdk/credential-providers": "^3.188.0", 655 | "@mongodb-js/zstd": "^1.1.0", 656 | "gcp-metadata": "^5.2.0", 657 | "kerberos": "^2.0.1", 658 | "mongodb-client-encryption": ">=6.0.0 <7", 659 | "snappy": "^7.2.2", 660 | "socks": "^2.7.1" 661 | }, 662 | "peerDependenciesMeta": { 663 | "@aws-sdk/credential-providers": { 664 | "optional": true 665 | }, 666 | "@mongodb-js/zstd": { 667 | "optional": true 668 | }, 669 | "gcp-metadata": { 670 | "optional": true 671 | }, 672 | "kerberos": { 673 | "optional": true 674 | }, 675 | "mongodb-client-encryption": { 676 | "optional": true 677 | }, 678 | "snappy": { 679 | "optional": true 680 | }, 681 | "socks": { 682 | "optional": true 683 | } 684 | } 685 | }, 686 | "node_modules/mongoose/node_modules/ms": { 687 | "version": "2.1.3", 688 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 689 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 690 | "license": "MIT" 691 | }, 692 | "node_modules/mpath": { 693 | "version": "0.9.0", 694 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", 695 | "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", 696 | "license": "MIT", 697 | "engines": { 698 | "node": ">=4.0.0" 699 | } 700 | }, 701 | "node_modules/mquery": { 702 | "version": "5.0.0", 703 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", 704 | "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", 705 | "license": "MIT", 706 | "dependencies": { 707 | "debug": "4.x" 708 | }, 709 | "engines": { 710 | "node": ">=14.0.0" 711 | } 712 | }, 713 | "node_modules/mquery/node_modules/debug": { 714 | "version": "4.3.5", 715 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 716 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 717 | "license": "MIT", 718 | "dependencies": { 719 | "ms": "2.1.2" 720 | }, 721 | "engines": { 722 | "node": ">=6.0" 723 | }, 724 | "peerDependenciesMeta": { 725 | "supports-color": { 726 | "optional": true 727 | } 728 | } 729 | }, 730 | "node_modules/mquery/node_modules/ms": { 731 | "version": "2.1.2", 732 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 733 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 734 | "license": "MIT" 735 | }, 736 | "node_modules/ms": { 737 | "version": "2.0.0", 738 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 739 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 740 | "license": "MIT" 741 | }, 742 | "node_modules/negotiator": { 743 | "version": "0.6.3", 744 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 745 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 746 | "license": "MIT", 747 | "engines": { 748 | "node": ">= 0.6" 749 | } 750 | }, 751 | "node_modules/object-assign": { 752 | "version": "4.1.1", 753 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 754 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 755 | "license": "MIT", 756 | "engines": { 757 | "node": ">=0.10.0" 758 | } 759 | }, 760 | "node_modules/object-inspect": { 761 | "version": "1.13.2", 762 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", 763 | "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", 764 | "license": "MIT", 765 | "engines": { 766 | "node": ">= 0.4" 767 | }, 768 | "funding": { 769 | "url": "https://github.com/sponsors/ljharb" 770 | } 771 | }, 772 | "node_modules/on-finished": { 773 | "version": "2.4.1", 774 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 775 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 776 | "license": "MIT", 777 | "dependencies": { 778 | "ee-first": "1.1.1" 779 | }, 780 | "engines": { 781 | "node": ">= 0.8" 782 | } 783 | }, 784 | "node_modules/parseurl": { 785 | "version": "1.3.3", 786 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 787 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 788 | "license": "MIT", 789 | "engines": { 790 | "node": ">= 0.8" 791 | } 792 | }, 793 | "node_modules/path-to-regexp": { 794 | "version": "0.1.7", 795 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 796 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", 797 | "license": "MIT" 798 | }, 799 | "node_modules/proxy-addr": { 800 | "version": "2.0.7", 801 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 802 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 803 | "license": "MIT", 804 | "dependencies": { 805 | "forwarded": "0.2.0", 806 | "ipaddr.js": "1.9.1" 807 | }, 808 | "engines": { 809 | "node": ">= 0.10" 810 | } 811 | }, 812 | "node_modules/punycode": { 813 | "version": "2.3.1", 814 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 815 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 816 | "license": "MIT", 817 | "engines": { 818 | "node": ">=6" 819 | } 820 | }, 821 | "node_modules/qs": { 822 | "version": "6.11.0", 823 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 824 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 825 | "license": "BSD-3-Clause", 826 | "dependencies": { 827 | "side-channel": "^1.0.4" 828 | }, 829 | "engines": { 830 | "node": ">=0.6" 831 | }, 832 | "funding": { 833 | "url": "https://github.com/sponsors/ljharb" 834 | } 835 | }, 836 | "node_modules/range-parser": { 837 | "version": "1.2.1", 838 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 839 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 840 | "license": "MIT", 841 | "engines": { 842 | "node": ">= 0.6" 843 | } 844 | }, 845 | "node_modules/raw-body": { 846 | "version": "2.5.2", 847 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 848 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 849 | "license": "MIT", 850 | "dependencies": { 851 | "bytes": "3.1.2", 852 | "http-errors": "2.0.0", 853 | "iconv-lite": "0.4.24", 854 | "unpipe": "1.0.0" 855 | }, 856 | "engines": { 857 | "node": ">= 0.8" 858 | } 859 | }, 860 | "node_modules/safe-buffer": { 861 | "version": "5.2.1", 862 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 863 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 864 | "funding": [ 865 | { 866 | "type": "github", 867 | "url": "https://github.com/sponsors/feross" 868 | }, 869 | { 870 | "type": "patreon", 871 | "url": "https://www.patreon.com/feross" 872 | }, 873 | { 874 | "type": "consulting", 875 | "url": "https://feross.org/support" 876 | } 877 | ], 878 | "license": "MIT" 879 | }, 880 | "node_modules/safer-buffer": { 881 | "version": "2.1.2", 882 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 883 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 884 | "license": "MIT" 885 | }, 886 | "node_modules/send": { 887 | "version": "0.18.0", 888 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 889 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 890 | "license": "MIT", 891 | "dependencies": { 892 | "debug": "2.6.9", 893 | "depd": "2.0.0", 894 | "destroy": "1.2.0", 895 | "encodeurl": "~1.0.2", 896 | "escape-html": "~1.0.3", 897 | "etag": "~1.8.1", 898 | "fresh": "0.5.2", 899 | "http-errors": "2.0.0", 900 | "mime": "1.6.0", 901 | "ms": "2.1.3", 902 | "on-finished": "2.4.1", 903 | "range-parser": "~1.2.1", 904 | "statuses": "2.0.1" 905 | }, 906 | "engines": { 907 | "node": ">= 0.8.0" 908 | } 909 | }, 910 | "node_modules/send/node_modules/ms": { 911 | "version": "2.1.3", 912 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 913 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 914 | "license": "MIT" 915 | }, 916 | "node_modules/serve-static": { 917 | "version": "1.15.0", 918 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 919 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 920 | "license": "MIT", 921 | "dependencies": { 922 | "encodeurl": "~1.0.2", 923 | "escape-html": "~1.0.3", 924 | "parseurl": "~1.3.3", 925 | "send": "0.18.0" 926 | }, 927 | "engines": { 928 | "node": ">= 0.8.0" 929 | } 930 | }, 931 | "node_modules/set-function-length": { 932 | "version": "1.2.2", 933 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 934 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 935 | "license": "MIT", 936 | "dependencies": { 937 | "define-data-property": "^1.1.4", 938 | "es-errors": "^1.3.0", 939 | "function-bind": "^1.1.2", 940 | "get-intrinsic": "^1.2.4", 941 | "gopd": "^1.0.1", 942 | "has-property-descriptors": "^1.0.2" 943 | }, 944 | "engines": { 945 | "node": ">= 0.4" 946 | } 947 | }, 948 | "node_modules/setprototypeof": { 949 | "version": "1.2.0", 950 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 951 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 952 | "license": "ISC" 953 | }, 954 | "node_modules/side-channel": { 955 | "version": "1.0.6", 956 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", 957 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", 958 | "license": "MIT", 959 | "dependencies": { 960 | "call-bind": "^1.0.7", 961 | "es-errors": "^1.3.0", 962 | "get-intrinsic": "^1.2.4", 963 | "object-inspect": "^1.13.1" 964 | }, 965 | "engines": { 966 | "node": ">= 0.4" 967 | }, 968 | "funding": { 969 | "url": "https://github.com/sponsors/ljharb" 970 | } 971 | }, 972 | "node_modules/sift": { 973 | "version": "17.1.3", 974 | "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", 975 | "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", 976 | "license": "MIT" 977 | }, 978 | "node_modules/sparse-bitfield": { 979 | "version": "3.0.3", 980 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 981 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", 982 | "license": "MIT", 983 | "dependencies": { 984 | "memory-pager": "^1.0.2" 985 | } 986 | }, 987 | "node_modules/statuses": { 988 | "version": "2.0.1", 989 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 990 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 991 | "license": "MIT", 992 | "engines": { 993 | "node": ">= 0.8" 994 | } 995 | }, 996 | "node_modules/toidentifier": { 997 | "version": "1.0.1", 998 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 999 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1000 | "license": "MIT", 1001 | "engines": { 1002 | "node": ">=0.6" 1003 | } 1004 | }, 1005 | "node_modules/tr46": { 1006 | "version": "4.1.1", 1007 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", 1008 | "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", 1009 | "license": "MIT", 1010 | "dependencies": { 1011 | "punycode": "^2.3.0" 1012 | }, 1013 | "engines": { 1014 | "node": ">=14" 1015 | } 1016 | }, 1017 | "node_modules/type-is": { 1018 | "version": "1.6.18", 1019 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1020 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1021 | "license": "MIT", 1022 | "dependencies": { 1023 | "media-typer": "0.3.0", 1024 | "mime-types": "~2.1.24" 1025 | }, 1026 | "engines": { 1027 | "node": ">= 0.6" 1028 | } 1029 | }, 1030 | "node_modules/unpipe": { 1031 | "version": "1.0.0", 1032 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1033 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 1034 | "license": "MIT", 1035 | "engines": { 1036 | "node": ">= 0.8" 1037 | } 1038 | }, 1039 | "node_modules/utils-merge": { 1040 | "version": "1.0.1", 1041 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1042 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 1043 | "license": "MIT", 1044 | "engines": { 1045 | "node": ">= 0.4.0" 1046 | } 1047 | }, 1048 | "node_modules/vary": { 1049 | "version": "1.1.2", 1050 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1051 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 1052 | "license": "MIT", 1053 | "engines": { 1054 | "node": ">= 0.8" 1055 | } 1056 | }, 1057 | "node_modules/webidl-conversions": { 1058 | "version": "7.0.0", 1059 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 1060 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 1061 | "license": "BSD-2-Clause", 1062 | "engines": { 1063 | "node": ">=12" 1064 | } 1065 | }, 1066 | "node_modules/whatwg-url": { 1067 | "version": "13.0.0", 1068 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", 1069 | "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", 1070 | "license": "MIT", 1071 | "dependencies": { 1072 | "tr46": "^4.1.1", 1073 | "webidl-conversions": "^7.0.0" 1074 | }, 1075 | "engines": { 1076 | "node": ">=16" 1077 | } 1078 | } 1079 | } 1080 | } 1081 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "keywords": [], 9 | "author": "", 10 | "license": "ISC", 11 | "description": "", 12 | "dependencies": { 13 | "body-parser": "^1.20.2", 14 | "cors": "^2.8.5", 15 | "dotenv": "^16.4.5", 16 | "express": "^4.19.2", 17 | "mongodb": "^6.8.0", 18 | "mongoose": "^8.5.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/server/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const mongoose = require('mongoose'); 3 | const cors = require('cors'); 4 | const bodyParser = require('body-parser'); 5 | require('dotenv').config(); // Load environment variables 6 | 7 | const app = express(); 8 | const port = process.env.PORT || 5000; 9 | 10 | app.use(cors()); 11 | app.use(bodyParser.json()); 12 | 13 | // Use environment variable for MongoDB connection 14 | mongoose.connect(process.env.MONGO_URI, { 15 | useNewUrlParser: true, 16 | useUnifiedTopology: true, 17 | }).then(() => console.log('MongoDB connected successfully')) 18 | .catch(err => console.error('MongoDB connection error:', err)); 19 | 20 | const UserSchema = new mongoose.Schema({ 21 | username: String, 22 | mobile: String, 23 | score: Number, 24 | }); 25 | 26 | const User = mongoose.model('User', UserSchema); 27 | 28 | app.get('/', (req, res) => { 29 | res.json({message: "Hello World!"}); 30 | }) 31 | 32 | 33 | // Register or update user 34 | app.post('/register', async (req, res) => { 35 | const { username, mobile } = req.body; 36 | 37 | let user = await User.findOne({ mobile }); 38 | if (!user) { 39 | user = new User({ username, mobile, score: 0 }); 40 | } else { 41 | user.username = username; // Update username if exists 42 | } 43 | 44 | await user.save(); 45 | res.json({ message: 'User registered or updated successfully' }); 46 | }); 47 | 48 | // Login user 49 | app.post('/login', async (req, res) => { 50 | const { mobile } = req.body; 51 | 52 | const user = await User.findOne({ mobile }); 53 | if (user) { 54 | res.json({ message: 'Login successful', user }); 55 | } else { 56 | res.status(404).json({ message: 'User not found' }); 57 | } 58 | }); 59 | 60 | // Save score 61 | app.post('/saveScore', async (req, res) => { 62 | const { mobile, score } = req.body; 63 | 64 | const user = await User.findOne({ mobile }); 65 | if (user) { 66 | user.score = score; 67 | await user.save(); 68 | res.send('Score saved successfully'); 69 | } else { 70 | res.status(404).send('User not found'); 71 | } 72 | }); 73 | 74 | // Get users 75 | app.get('/users', async (req, res) => { 76 | const users = await User.find(); 77 | res.json(users); 78 | }); 79 | 80 | app.listen(port, () => { 81 | console.log(`Server running on port ${port}`); 82 | }); 83 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/www/css/index.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | * { 20 | -webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */ 21 | } 22 | 23 | body { 24 | -webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */ 25 | -webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */ 26 | -webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */ 27 | background-color:#E4E4E4; 28 | background-image:linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%); 29 | font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif; 30 | font-size:12px; 31 | height:100vh; 32 | margin:0px; 33 | padding:0px; 34 | /* Padding to avoid the "unsafe" areas behind notches in the screen */ 35 | padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px); 36 | text-transform:uppercase; 37 | width:100%; 38 | } 39 | 40 | /* Portrait layout (default) */ 41 | .app { 42 | background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */ 43 | position:absolute; /* position in the center of the screen */ 44 | left:50%; 45 | top:50%; 46 | height:50px; /* text area height */ 47 | width:225px; /* text area width */ 48 | text-align:center; 49 | padding:180px 0px 0px 0px; /* image height is 200px (bottom 20px are overlapped with text) */ 50 | margin:-115px 0px 0px -112px; /* offset vertical: half of image height and text area height */ 51 | /* offset horizontal: half of text area width */ 52 | } 53 | 54 | /* Landscape layout (with min-width) */ 55 | @media screen and (min-aspect-ratio: 1/1) and (min-width:400px) { 56 | .app { 57 | background-position:left center; 58 | padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */ 59 | margin:-90px 0px 0px -198px; /* offset vertical: half of image height */ 60 | /* offset horizontal: half of image width and text area width */ 61 | } 62 | } 63 | 64 | h1 { 65 | font-size:24px; 66 | font-weight:normal; 67 | margin:0px; 68 | overflow:visible; 69 | padding:0px; 70 | text-align:center; 71 | } 72 | 73 | .event { 74 | border-radius:4px; 75 | color:#FFFFFF; 76 | font-size:12px; 77 | margin:0px 30px; 78 | padding:2px 0px; 79 | } 80 | 81 | .event.listening { 82 | background-color:#333333; 83 | display:block; 84 | } 85 | 86 | .event.received { 87 | background-color:#4B946A; 88 | display:none; 89 | } 90 | 91 | #deviceready.ready .event.listening { display: none; } 92 | #deviceready.ready .event.received { display: block; } 93 | 94 | @keyframes fade { 95 | from { opacity: 1.0; } 96 | 50% { opacity: 0.4; } 97 | to { opacity: 1.0; } 98 | } 99 | 100 | .blink { 101 | animation:fade 3000ms infinite; 102 | -webkit-animation:fade 3000ms infinite; 103 | } 104 | 105 | 106 | @media screen and (prefers-color-scheme: dark) { 107 | body { 108 | background-image:linear-gradient(to bottom, #585858 0%, #1B1B1B 51%); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/www/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/ex03-cordova-quiz-app/www/img/logo.png -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Hello World 38 | 39 | 40 |
41 |

Apache Cordova

42 | 46 |
47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /ex03-cordova-quiz-app/www/js/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | // Wait for the deviceready event before using any of Cordova's device APIs. 21 | // See https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready 22 | document.addEventListener('deviceready', onDeviceReady, false); 23 | 24 | function onDeviceReady() { 25 | // Cordova is now initialized. Have fun! 26 | 27 | console.log('Running cordova-' + cordova.platformId + '@' + cordova.version); 28 | document.getElementById('deviceready').classList.add('ready'); 29 | } 30 | -------------------------------------------------------------------------------- /images/ex01-cordova-calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/images/ex01-cordova-calculator.png -------------------------------------------------------------------------------- /images/ex02-todo-app.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/images/ex02-todo-app.jpeg -------------------------------------------------------------------------------- /images/fork-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/images/fork-repo.png -------------------------------------------------------------------------------- /images/instilllearning-apachecordova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/images/instilllearning-apachecordova.png -------------------------------------------------------------------------------- /images/mobile-frameworks-used-by-developers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progaurab/Apache-Cordova-Build-Mobile-App-with-HTML-CSS-JS/4d7d53a2ae379cba424a5c36e0a0789dbf4bc3cb/images/mobile-frameworks-used-by-developers.png --------------------------------------------------------------------------------