forked from EVOgeek/Vmeda.Online
		
	Merge pull request #3729 from NoelDeMartin/MOBILE-4331
MOBILE-4331: Implement native plugin
This commit is contained in:
		
						commit
						a722e2cc53
					
				
							
								
								
									
										14
									
								
								.github/workflows/testing.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/testing.yml
									
									
									
									
										vendored
									
									
								
							| @ -13,7 +13,9 @@ jobs: | |||||||
|       with: |       with: | ||||||
|         node-version-file: '.nvmrc' |         node-version-file: '.nvmrc' | ||||||
|     - name: Install npm packages |     - name: Install npm packages | ||||||
|       run: npm ci --no-audit |       run: | | ||||||
|  |         npm ci --no-audit | ||||||
|  |         npm ci --no-audit --prefix cordova-plugin-moodleapp | ||||||
|     - name: Check langindex |     - name: Check langindex | ||||||
|       run: | |       run: | | ||||||
|         result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0 |         result=$(cat scripts/langindex.json | grep \"TBD\" | wc -l); test $result -eq 0 | ||||||
| @ -46,11 +48,15 @@ jobs: | |||||||
|           echo "Found $found missing langkeys" |           echo "Found $found missing langkeys" | ||||||
|           exit 1 |           exit 1 | ||||||
|         fi |         fi | ||||||
|     - name: Run Linter (ignore warnings) |     - name: Run Linters (ignore warnings) | ||||||
|       run: npm run lint -- --quiet |       run: | | ||||||
|  |         npm run lint -- --quiet | ||||||
|  |         npm run lint --prefix cordova-plugin-moodleapp | ||||||
|     - name: Run tests |     - name: Run tests | ||||||
|       run: npm run test:ci |       run: npm run test:ci | ||||||
|     - name: Production builds |     - name: Production builds | ||||||
|       run: npm run build:prod |       run: | | ||||||
|  |         npm run build:prod | ||||||
|  |         npm run prod --prefix cordova-plugin-moodleapp | ||||||
|     - name: JavaScript code compatibility |     - name: JavaScript code compatibility | ||||||
|       run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 1 |       run: result=$(npx check-es-compat www/*.js 2> /dev/null | grep -v -E "Array\.prototype\.includes|Promise\.prototype\.finally|String\.prototype\.(matchAll|trimRight)|globalThis" | grep -Po "(?<=error).*?(?=\s+ecmascript)" | wc -l); test $result -eq 1 | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -3,8 +3,16 @@ FROM node:14 as build-stage | |||||||
| 
 | 
 | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| 
 | 
 | ||||||
| # Prepare node dependencies | # Update platform dependencies | ||||||
| RUN apt-get update && apt-get install libsecret-1-0 -y | RUN apt-get update && apt-get install libsecret-1-0 -y | ||||||
|  | 
 | ||||||
|  | # Prepare native plugin | ||||||
|  | COPY ./cordova-plugin-moodleapp/package*.json /app/cordova-plugin-moodleapp/ | ||||||
|  | RUN npm ci --prefix cordova-plugin-moodleapp | ||||||
|  | COPY ./cordova-plugin-moodleapp/ /app/cordova-plugin-moodleapp/ | ||||||
|  | RUN npm run prod --prefix cordova-plugin-moodleapp | ||||||
|  | 
 | ||||||
|  | # Prepare node dependencies | ||||||
| COPY package*.json ./ | COPY package*.json ./ | ||||||
| COPY patches ./patches | COPY patches ./patches | ||||||
| RUN echo "unsafe-perm=true" > ./.npmrc | RUN echo "unsafe-perm=true" > ./.npmrc | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								cordova-plugin-moodleapp/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cordova-plugin-moodleapp/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | node_modules | ||||||
|  | www | ||||||
							
								
								
									
										816
									
								
								cordova-plugin-moodleapp/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										816
									
								
								cordova-plugin-moodleapp/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,816 @@ | |||||||
|  | { | ||||||
|  |     "name": "cordova-plugin-moodleapp", | ||||||
|  |     "version": "0.0.0", | ||||||
|  |     "lockfileVersion": 1, | ||||||
|  |     "requires": true, | ||||||
|  |     "dependencies": { | ||||||
|  |         "@babel/runtime": { | ||||||
|  |             "version": "7.22.6", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", | ||||||
|  |             "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "regenerator-runtime": "^0.13.11" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "@esbuild/android-arm": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/android-arm64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/android-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/darwin-arm64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/darwin-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/freebsd-arm64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/freebsd-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-arm": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-arm64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-ia32": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-loong64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-mips64el": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-ppc64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-riscv64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-s390x": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/linux-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/netbsd-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/openbsd-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/sunos-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/win32-arm64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/win32-ia32": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "@esbuild/win32-x64": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "ansi-regex": { | ||||||
|  |             "version": "4.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", | ||||||
|  |             "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "ansi-styles": { | ||||||
|  |             "version": "3.2.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||||||
|  |             "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "color-convert": "^1.9.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "anymatch": { | ||||||
|  |             "version": "3.1.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", | ||||||
|  |             "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "normalize-path": "^3.0.0", | ||||||
|  |                 "picomatch": "^2.0.4" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "binary-extensions": { | ||||||
|  |             "version": "2.2.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", | ||||||
|  |             "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "braces": { | ||||||
|  |             "version": "3.0.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", | ||||||
|  |             "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "fill-range": "^7.0.1" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "camelcase": { | ||||||
|  |             "version": "5.3.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | ||||||
|  |             "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "chalk": { | ||||||
|  |             "version": "4.1.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | ||||||
|  |             "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "ansi-styles": "^4.1.0", | ||||||
|  |                 "supports-color": "^7.1.0" | ||||||
|  |             }, | ||||||
|  |             "dependencies": { | ||||||
|  |                 "ansi-styles": { | ||||||
|  |                     "version": "4.3.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", | ||||||
|  |                     "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "color-convert": "^2.0.1" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "color-convert": { | ||||||
|  |                     "version": "2.0.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | ||||||
|  |                     "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "color-name": "~1.1.4" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "color-name": { | ||||||
|  |                     "version": "1.1.4", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | ||||||
|  |                     "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "supports-color": { | ||||||
|  |                     "version": "7.2.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | ||||||
|  |                     "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "has-flag": "^4.0.0" | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "chokidar": { | ||||||
|  |             "version": "3.5.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|  |             "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "anymatch": "~3.1.2", | ||||||
|  |                 "braces": "~3.0.2", | ||||||
|  |                 "fsevents": "~2.3.2", | ||||||
|  |                 "glob-parent": "~5.1.2", | ||||||
|  |                 "is-binary-path": "~2.1.0", | ||||||
|  |                 "is-glob": "~4.0.1", | ||||||
|  |                 "normalize-path": "~3.0.0", | ||||||
|  |                 "readdirp": "~3.6.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "chokidar-cli": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "chokidar": "^3.5.2", | ||||||
|  |                 "lodash.debounce": "^4.0.8", | ||||||
|  |                 "lodash.throttle": "^4.1.1", | ||||||
|  |                 "yargs": "^13.3.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "cliui": { | ||||||
|  |             "version": "5.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", | ||||||
|  |             "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "string-width": "^3.1.0", | ||||||
|  |                 "strip-ansi": "^5.2.0", | ||||||
|  |                 "wrap-ansi": "^5.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "color-convert": { | ||||||
|  |             "version": "1.9.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||||||
|  |             "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "color-name": "1.1.3" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "color-name": { | ||||||
|  |             "version": "1.1.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||||||
|  |             "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "concurrently": { | ||||||
|  |             "version": "8.2.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", | ||||||
|  |             "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "chalk": "^4.1.2", | ||||||
|  |                 "date-fns": "^2.30.0", | ||||||
|  |                 "lodash": "^4.17.21", | ||||||
|  |                 "rxjs": "^7.8.1", | ||||||
|  |                 "shell-quote": "^1.8.1", | ||||||
|  |                 "spawn-command": "0.0.2", | ||||||
|  |                 "supports-color": "^8.1.1", | ||||||
|  |                 "tree-kill": "^1.2.2", | ||||||
|  |                 "yargs": "^17.7.2" | ||||||
|  |             }, | ||||||
|  |             "dependencies": { | ||||||
|  |                 "ansi-regex": { | ||||||
|  |                     "version": "5.0.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", | ||||||
|  |                     "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "ansi-styles": { | ||||||
|  |                     "version": "4.3.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", | ||||||
|  |                     "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "color-convert": "^2.0.1" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "cliui": { | ||||||
|  |                     "version": "8.0.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", | ||||||
|  |                     "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "string-width": "^4.2.0", | ||||||
|  |                         "strip-ansi": "^6.0.1", | ||||||
|  |                         "wrap-ansi": "^7.0.0" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "color-convert": { | ||||||
|  |                     "version": "2.0.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | ||||||
|  |                     "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "color-name": "~1.1.4" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "color-name": { | ||||||
|  |                     "version": "1.1.4", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | ||||||
|  |                     "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "emoji-regex": { | ||||||
|  |                     "version": "8.0.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | ||||||
|  |                     "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "is-fullwidth-code-point": { | ||||||
|  |                     "version": "3.0.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", | ||||||
|  |                     "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "string-width": { | ||||||
|  |                     "version": "4.2.3", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | ||||||
|  |                     "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "emoji-regex": "^8.0.0", | ||||||
|  |                         "is-fullwidth-code-point": "^3.0.0", | ||||||
|  |                         "strip-ansi": "^6.0.1" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "strip-ansi": { | ||||||
|  |                     "version": "6.0.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | ||||||
|  |                     "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "ansi-regex": "^5.0.1" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "wrap-ansi": { | ||||||
|  |                     "version": "7.0.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | ||||||
|  |                     "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "ansi-styles": "^4.0.0", | ||||||
|  |                         "string-width": "^4.1.0", | ||||||
|  |                         "strip-ansi": "^6.0.0" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "y18n": { | ||||||
|  |                     "version": "5.0.8", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", | ||||||
|  |                     "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", | ||||||
|  |                     "dev": true | ||||||
|  |                 }, | ||||||
|  |                 "yargs": { | ||||||
|  |                     "version": "17.7.2", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", | ||||||
|  |                     "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", | ||||||
|  |                     "dev": true, | ||||||
|  |                     "requires": { | ||||||
|  |                         "cliui": "^8.0.1", | ||||||
|  |                         "escalade": "^3.1.1", | ||||||
|  |                         "get-caller-file": "^2.0.5", | ||||||
|  |                         "require-directory": "^2.1.1", | ||||||
|  |                         "string-width": "^4.2.3", | ||||||
|  |                         "y18n": "^5.0.5", | ||||||
|  |                         "yargs-parser": "^21.1.1" | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 "yargs-parser": { | ||||||
|  |                     "version": "21.1.1", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", | ||||||
|  |                     "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", | ||||||
|  |                     "dev": true | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "date-fns": { | ||||||
|  |             "version": "2.30.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", | ||||||
|  |             "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "@babel/runtime": "^7.21.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "decamelize": { | ||||||
|  |             "version": "1.2.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", | ||||||
|  |             "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "emoji-regex": { | ||||||
|  |             "version": "7.0.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", | ||||||
|  |             "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "esbuild": { | ||||||
|  |             "version": "0.18.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", | ||||||
|  |             "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "@esbuild/android-arm": "0.18.11", | ||||||
|  |                 "@esbuild/android-arm64": "0.18.11", | ||||||
|  |                 "@esbuild/android-x64": "0.18.11", | ||||||
|  |                 "@esbuild/darwin-arm64": "0.18.11", | ||||||
|  |                 "@esbuild/darwin-x64": "0.18.11", | ||||||
|  |                 "@esbuild/freebsd-arm64": "0.18.11", | ||||||
|  |                 "@esbuild/freebsd-x64": "0.18.11", | ||||||
|  |                 "@esbuild/linux-arm": "0.18.11", | ||||||
|  |                 "@esbuild/linux-arm64": "0.18.11", | ||||||
|  |                 "@esbuild/linux-ia32": "0.18.11", | ||||||
|  |                 "@esbuild/linux-loong64": "0.18.11", | ||||||
|  |                 "@esbuild/linux-mips64el": "0.18.11", | ||||||
|  |                 "@esbuild/linux-ppc64": "0.18.11", | ||||||
|  |                 "@esbuild/linux-riscv64": "0.18.11", | ||||||
|  |                 "@esbuild/linux-s390x": "0.18.11", | ||||||
|  |                 "@esbuild/linux-x64": "0.18.11", | ||||||
|  |                 "@esbuild/netbsd-x64": "0.18.11", | ||||||
|  |                 "@esbuild/openbsd-x64": "0.18.11", | ||||||
|  |                 "@esbuild/sunos-x64": "0.18.11", | ||||||
|  |                 "@esbuild/win32-arm64": "0.18.11", | ||||||
|  |                 "@esbuild/win32-ia32": "0.18.11", | ||||||
|  |                 "@esbuild/win32-x64": "0.18.11" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "escalade": { | ||||||
|  |             "version": "3.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", | ||||||
|  |             "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "fill-range": { | ||||||
|  |             "version": "7.0.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | ||||||
|  |             "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "to-regex-range": "^5.0.1" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "find-up": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "locate-path": "^3.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "fsevents": { | ||||||
|  |             "version": "2.3.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", | ||||||
|  |             "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "optional": true | ||||||
|  |         }, | ||||||
|  |         "get-caller-file": { | ||||||
|  |             "version": "2.0.5", | ||||||
|  |             "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | ||||||
|  |             "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "glob-parent": { | ||||||
|  |             "version": "5.1.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | ||||||
|  |             "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "is-glob": "^4.0.1" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "has-flag": { | ||||||
|  |             "version": "4.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", | ||||||
|  |             "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "is-binary-path": { | ||||||
|  |             "version": "2.1.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", | ||||||
|  |             "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "binary-extensions": "^2.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "is-extglob": { | ||||||
|  |             "version": "2.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||||||
|  |             "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "is-fullwidth-code-point": { | ||||||
|  |             "version": "2.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", | ||||||
|  |             "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "is-glob": { | ||||||
|  |             "version": "4.0.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", | ||||||
|  |             "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "is-extglob": "^2.1.1" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "is-number": { | ||||||
|  |             "version": "7.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", | ||||||
|  |             "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "locate-path": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "p-locate": "^3.0.0", | ||||||
|  |                 "path-exists": "^3.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "lodash": { | ||||||
|  |             "version": "4.17.21", | ||||||
|  |             "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||||||
|  |             "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "lodash.debounce": { | ||||||
|  |             "version": "4.0.8", | ||||||
|  |             "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", | ||||||
|  |             "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "lodash.throttle": { | ||||||
|  |             "version": "4.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", | ||||||
|  |             "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "normalize-path": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "p-limit": { | ||||||
|  |             "version": "2.3.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | ||||||
|  |             "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "p-try": "^2.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "p-locate": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "p-limit": "^2.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "p-try": { | ||||||
|  |             "version": "2.2.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", | ||||||
|  |             "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "path-exists": { | ||||||
|  |             "version": "3.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", | ||||||
|  |             "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "picomatch": { | ||||||
|  |             "version": "2.3.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | ||||||
|  |             "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "readdirp": { | ||||||
|  |             "version": "3.6.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | ||||||
|  |             "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "picomatch": "^2.2.1" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "regenerator-runtime": { | ||||||
|  |             "version": "0.13.11", | ||||||
|  |             "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", | ||||||
|  |             "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "require-directory": { | ||||||
|  |             "version": "2.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", | ||||||
|  |             "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "require-main-filename": { | ||||||
|  |             "version": "2.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", | ||||||
|  |             "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "rxjs": { | ||||||
|  |             "version": "7.8.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", | ||||||
|  |             "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "tslib": "^2.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "set-blocking": { | ||||||
|  |             "version": "2.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", | ||||||
|  |             "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "shell-quote": { | ||||||
|  |             "version": "1.8.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", | ||||||
|  |             "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "spawn-command": { | ||||||
|  |             "version": "0.0.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", | ||||||
|  |             "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "string-width": { | ||||||
|  |             "version": "3.1.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", | ||||||
|  |             "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "emoji-regex": "^7.0.1", | ||||||
|  |                 "is-fullwidth-code-point": "^2.0.0", | ||||||
|  |                 "strip-ansi": "^5.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "strip-ansi": { | ||||||
|  |             "version": "5.2.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", | ||||||
|  |             "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "ansi-regex": "^4.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "supports-color": { | ||||||
|  |             "version": "8.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", | ||||||
|  |             "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "has-flag": "^4.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "to-regex-range": { | ||||||
|  |             "version": "5.0.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", | ||||||
|  |             "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "is-number": "^7.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "tree-kill": { | ||||||
|  |             "version": "1.2.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", | ||||||
|  |             "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "tslib": { | ||||||
|  |             "version": "2.6.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", | ||||||
|  |             "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "typescript": { | ||||||
|  |             "version": "5.1.6", | ||||||
|  |             "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", | ||||||
|  |             "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "which-module": { | ||||||
|  |             "version": "2.0.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", | ||||||
|  |             "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "wrap-ansi": { | ||||||
|  |             "version": "5.1.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", | ||||||
|  |             "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "ansi-styles": "^3.2.0", | ||||||
|  |                 "string-width": "^3.0.0", | ||||||
|  |                 "strip-ansi": "^5.0.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "y18n": { | ||||||
|  |             "version": "4.0.3", | ||||||
|  |             "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", | ||||||
|  |             "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", | ||||||
|  |             "dev": true | ||||||
|  |         }, | ||||||
|  |         "yargs": { | ||||||
|  |             "version": "13.3.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", | ||||||
|  |             "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "cliui": "^5.0.0", | ||||||
|  |                 "find-up": "^3.0.0", | ||||||
|  |                 "get-caller-file": "^2.0.1", | ||||||
|  |                 "require-directory": "^2.1.1", | ||||||
|  |                 "require-main-filename": "^2.0.0", | ||||||
|  |                 "set-blocking": "^2.0.0", | ||||||
|  |                 "string-width": "^3.0.0", | ||||||
|  |                 "which-module": "^2.0.0", | ||||||
|  |                 "y18n": "^4.0.0", | ||||||
|  |                 "yargs-parser": "^13.1.2" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         "yargs-parser": { | ||||||
|  |             "version": "13.1.2", | ||||||
|  |             "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", | ||||||
|  |             "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", | ||||||
|  |             "dev": true, | ||||||
|  |             "requires": { | ||||||
|  |                 "camelcase": "^5.0.0", | ||||||
|  |                 "decamelize": "^1.2.0" | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								cordova-plugin-moodleapp/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								cordova-plugin-moodleapp/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |     "name": "cordova-plugin-moodleapp", | ||||||
|  |     "private": true, | ||||||
|  |     "types": "./types/index.d.ts", | ||||||
|  |     "version": "0.0.0", | ||||||
|  |     "scripts": { | ||||||
|  |         "dev": "concurrently \"npm run dev:ts\" \"npm run dev:cordova\"", | ||||||
|  |         "dev:ts": "scripts/build.js --watch", | ||||||
|  |         "dev:cordova": "chokidar www/index.js -c scripts/copy-javascript.js", | ||||||
|  |         "prod": "NODE_ENV=production scripts/build.js", | ||||||
|  |         "lint": "tsc --noEmit" | ||||||
|  |     }, | ||||||
|  |     "devDependencies": { | ||||||
|  |         "chokidar-cli": "^3.0.0", | ||||||
|  |         "concurrently": "^8.2.0", | ||||||
|  |         "esbuild": "^0.18.11", | ||||||
|  |         "typescript": "^5.1.6" | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								cordova-plugin-moodleapp/plugin.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								cordova-plugin-moodleapp/plugin.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-moodleapp" version="0.0.0"> | ||||||
|  |     <name>MoodleApp</name> | ||||||
|  |     <description>Plugin with custom functionality for the Moodle App</description> | ||||||
|  |     <js-module src="www/index.js" name="moodleapp"> | ||||||
|  |         <clobbers target="cordova.MoodleApp" /> | ||||||
|  |     </js-module> | ||||||
|  |     <platform name="android"> | ||||||
|  |         <config-file target="res/xml/config.xml" parent="/*"> | ||||||
|  |             <feature name="SystemUI"> | ||||||
|  |                 <param name="android-package" value="com.moodle.moodlemobile.SystemUI"/> | ||||||
|  |             </feature> | ||||||
|  |         </config-file> | ||||||
|  |         <source-file src="src/android/SystemUI.java" target-dir="src/com/moodle/moodlemobile" /> | ||||||
|  |     </platform> | ||||||
|  | </plugin> | ||||||
							
								
								
									
										54
									
								
								cordova-plugin-moodleapp/scripts/build.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										54
									
								
								cordova-plugin-moodleapp/scripts/build.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | #!/usr/bin/env node
 | ||||||
|  | 
 | ||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | const { readFileSync, writeFileSync } = require('fs'); | ||||||
|  | const { resolve } = require('path'); | ||||||
|  | 
 | ||||||
|  | function fixBundle() { | ||||||
|  |     const bundlePath = resolve(__dirname, '../www/index.js'); | ||||||
|  |     const bundle = readFileSync(bundlePath).toString(); | ||||||
|  | 
 | ||||||
|  |     writeFileSync(bundlePath, bundle.replace('window.cordovaModule', 'module.exports')); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const options = { | ||||||
|  |     entryPoints: [resolve(__dirname, '../src/ts/index.ts')], | ||||||
|  |     tsconfig: resolve(__dirname, '../tsconfig.json'), | ||||||
|  |     outdir: resolve(__dirname, '../www'), | ||||||
|  |     minify: process.env.NODE_ENV === 'production', | ||||||
|  |     bundle: true, | ||||||
|  |     plugins: [{ | ||||||
|  |         name: 'moodleapp', | ||||||
|  |         setup(build) { | ||||||
|  |             build.onEnd(result => { | ||||||
|  |                 if (result.errors.length > 0) { | ||||||
|  |                     console.error('cordova-plugin-moodleapp build failed! ', result.errors); | ||||||
|  | 
 | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 fixBundle(); | ||||||
|  |                 console.log('cordova-plugin-moodleapp built'); | ||||||
|  |             }); | ||||||
|  |         }, | ||||||
|  |     }], | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | if (process.argv.includes('--watch')) { | ||||||
|  |     require('esbuild').context(options).then(context => context.watch()); | ||||||
|  | } else { | ||||||
|  |     require('esbuild').build(options); | ||||||
|  | } | ||||||
							
								
								
									
										40
									
								
								cordova-plugin-moodleapp/scripts/copy-javascript.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								cordova-plugin-moodleapp/scripts/copy-javascript.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @ -0,0 +1,40 @@ | |||||||
|  | #!/usr/bin/env node
 | ||||||
|  | 
 | ||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | // This script makes sure that javascript assets are kept up to date during development,
 | ||||||
|  | // otherwise it would be necessary to reinstall the plugin every time anything changes.
 | ||||||
|  | 
 | ||||||
|  | const { readFileSync, writeFileSync, existsSync } = require('fs'); | ||||||
|  | const { resolve } = require('path'); | ||||||
|  | 
 | ||||||
|  | const bundle = readFileSync(resolve(__dirname, '../www/index.js')).toString(); | ||||||
|  | const template = readFileSync(resolve(__dirname, './templates/cordova-plugin.js')).toString(); | ||||||
|  | const platformsPath = resolve(__dirname, '../../platforms/'); | ||||||
|  | const filePaths = [ | ||||||
|  |     resolve(platformsPath, 'android/app/src/main/assets/www/plugins/cordova-plugin-moodleapp/www/index.js'), | ||||||
|  |     resolve(platformsPath, 'android/platform_www/plugins/cordova-plugin-moodleapp/www/index.js'), | ||||||
|  | ]; | ||||||
|  | const pluginIndex = template | ||||||
|  |     .replace('[[PLUGIN_NAME]]', 'cordova-plugin-moodleapp.moodleapp') | ||||||
|  |     .replace('[[PLUGIN_CONTENTS]]', bundle); | ||||||
|  | 
 | ||||||
|  | for (const filePath of filePaths) { | ||||||
|  |     if (!existsSync(filePath)) { | ||||||
|  |         continue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     writeFileSync(filePath, pluginIndex); | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								cordova-plugin-moodleapp/scripts/templates/cordova-plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								cordova-plugin-moodleapp/scripts/templates/cordova-plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | cordova.define("[[PLUGIN_NAME]]", function(require, exports, module) { | ||||||
|  |     [[PLUGIN_CONTENTS]] | ||||||
|  | }); | ||||||
							
								
								
									
										85
									
								
								cordova-plugin-moodleapp/src/android/SystemUI.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								cordova-plugin-moodleapp/src/android/SystemUI.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,85 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd. | ||||||
|  | // | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  | 
 | ||||||
|  | package com.moodle.moodlemobile; | ||||||
|  | 
 | ||||||
|  | import android.graphics.Color; | ||||||
|  | import android.os.Build; | ||||||
|  | import android.util.Log; | ||||||
|  | import android.view.Window; | ||||||
|  | 
 | ||||||
|  | import org.apache.cordova.CordovaPlugin; | ||||||
|  | import org.apache.cordova.CallbackContext; | ||||||
|  | 
 | ||||||
|  | import org.json.JSONArray; | ||||||
|  | 
 | ||||||
|  | public class SystemUI extends CordovaPlugin { | ||||||
|  | 
 | ||||||
|  |     private static final String TAG = "SystemUI"; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { | ||||||
|  |         try { | ||||||
|  |             switch (action) { | ||||||
|  |                 case "setNavigationBarColor": | ||||||
|  |                     this.setNavigationBarColor(args.getString(0)); | ||||||
|  |                     callbackContext.success(); | ||||||
|  | 
 | ||||||
|  |                     return true; | ||||||
|  |             } | ||||||
|  |         } catch (Throwable e) { | ||||||
|  |             Log.e(TAG, "Failed executing action: " + action, e); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void setNavigationBarColor(String color) { | ||||||
|  |         if (Build.VERSION.SDK_INT < 21) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (color == null || color.isEmpty()) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Log.d(TAG, "Setting navigation bar color to " + color); | ||||||
|  | 
 | ||||||
|  |         this.cordova.getActivity().runOnUiThread(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = 0x80000000; | ||||||
|  |                 final int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR = 0x00000010; | ||||||
|  |                 final Window window = cordova.getActivity().getWindow(); | ||||||
|  |                 int uiOptions = window.getDecorView().getSystemUiVisibility(); | ||||||
|  | 
 | ||||||
|  |                 uiOptions = uiOptions | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; | ||||||
|  |                 uiOptions = uiOptions & ~SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; | ||||||
|  | 
 | ||||||
|  |                 window.getDecorView().setSystemUiVisibility(uiOptions); | ||||||
|  | 
 | ||||||
|  |                 try { | ||||||
|  |                     // Using reflection makes sure any 5.0+ device will work without having to compile with SDK level 21 | ||||||
|  |                     window.getClass().getDeclaredMethod("setNavigationBarColor", int.class).invoke(window, Color.parseColor(color)); | ||||||
|  |                 } catch (IllegalArgumentException ignore) { | ||||||
|  |                     Log.e(TAG, "Invalid hexString argument, use f.i. '#999999'"); | ||||||
|  |                 } catch (Exception ignore) { | ||||||
|  |                     // this should not happen, only in case Android removes this method in a version > 21 | ||||||
|  |                     Log.w(TAG, "Method window.setNavigationBarColor not found for SDK level " + Build.VERSION.SDK_INT); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								cordova-plugin-moodleapp/src/ts/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								cordova-plugin-moodleapp/src/ts/index.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { SystemUI } from './plugins/SystemUI'; | ||||||
|  | 
 | ||||||
|  | const api: MoodleAppPlugins = { | ||||||
|  |     systemUI: new SystemUI(), | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // This is necessary to work around the default transpilation behavior,
 | ||||||
|  | // which would wrap exported modules into UMD methods. Check out the
 | ||||||
|  | // fixBundle method in the /scripts/build.js file for more details.
 | ||||||
|  | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
|  | (window as any).cordovaModule = api; | ||||||
							
								
								
									
										31
									
								
								cordova-plugin-moodleapp/src/ts/plugins/SystemUI.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								cordova-plugin-moodleapp/src/ts/plugins/SystemUI.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Manages system UI settings. | ||||||
|  |  */ | ||||||
|  | export class SystemUI { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Set navigation bar color. | ||||||
|  |      * | ||||||
|  |      * @param color Color. | ||||||
|  |      */ | ||||||
|  |     async setNavigationBarColor(color: string): Promise<void> { | ||||||
|  |         await new Promise((resolve, reject) => { | ||||||
|  |             cordova.exec(resolve, reject, 'SystemUI', 'setNavigationBarColor', [color]); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								cordova-plugin-moodleapp/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								cordova-plugin-moodleapp/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | { | ||||||
|  |     "compilerOptions": { | ||||||
|  |         "target": "esnext", | ||||||
|  |         "module": "esnext", | ||||||
|  |         "moduleResolution": "node", | ||||||
|  |         "strict": true, | ||||||
|  |         "esModuleInterop": true, | ||||||
|  |         "skipLibCheck": true, | ||||||
|  |         "experimentalDecorators": true, | ||||||
|  |         "baseUrl": "./" | ||||||
|  |     }, | ||||||
|  |     "include": [ | ||||||
|  |         "src/ts/**/*.ts", | ||||||
|  |         "types/**.d.ts" | ||||||
|  |     ] | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								cordova-plugin-moodleapp/types/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								cordova-plugin-moodleapp/types/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { SystemUI } from '../src/ts/plugins/SystemUI'; | ||||||
|  | 
 | ||||||
|  | declare global { | ||||||
|  | 
 | ||||||
|  |     interface MoodleAppPlugins { | ||||||
|  |         systemUI: SystemUI; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     interface Cordova { | ||||||
|  |         MoodleApp: MoodleAppPlugins; // eslint-disable-line @typescript-eslint/naming-convention
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										245
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										245
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -8612,7 +8612,6 @@ | |||||||
|       "version": "3.1.3", |       "version": "3.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", |       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", | ||||||
|       "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", |       "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "normalize-path": "^3.0.0", |         "normalize-path": "^3.0.0", | ||||||
|         "picomatch": "^2.0.4" |         "picomatch": "^2.0.4" | ||||||
| @ -9796,8 +9795,7 @@ | |||||||
|     "binary-extensions": { |     "binary-extensions": { | ||||||
|       "version": "2.2.0", |       "version": "2.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", |       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", | ||||||
|       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", |       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "bindings": { |     "bindings": { | ||||||
|       "version": "1.5.0", |       "version": "1.5.0", | ||||||
| @ -10960,7 +10958,6 @@ | |||||||
|       "version": "3.5.3", |       "version": "3.5.3", | ||||||
|       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", |       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "anymatch": "~3.1.2", |         "anymatch": "~3.1.2", | ||||||
|         "braces": "~3.0.2", |         "braces": "~3.0.2", | ||||||
| @ -10976,7 +10973,6 @@ | |||||||
|           "version": "2.3.2", |           "version": "2.3.2", | ||||||
|           "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", |           "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", | ||||||
|           "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", |           "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", | ||||||
|           "dev": true, |  | ||||||
|           "optional": true |           "optional": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @ -11143,7 +11139,6 @@ | |||||||
|       "version": "5.0.0", |       "version": "5.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", |       "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", | ||||||
|       "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", |       "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "string-width": "^3.1.0", |         "string-width": "^3.1.0", | ||||||
|         "strip-ansi": "^5.2.0", |         "strip-ansi": "^5.2.0", | ||||||
| @ -11153,14 +11148,12 @@ | |||||||
|         "ansi-regex": { |         "ansi-regex": { | ||||||
|           "version": "4.1.1", |           "version": "4.1.1", | ||||||
|           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", |           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", | ||||||
|           "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", |           "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "ansi-styles": { |         "ansi-styles": { | ||||||
|           "version": "3.2.1", |           "version": "3.2.1", | ||||||
|           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", |           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||||||
|           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", |           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "color-convert": "^1.9.0" |             "color-convert": "^1.9.0" | ||||||
|           } |           } | ||||||
| @ -11168,20 +11161,17 @@ | |||||||
|         "emoji-regex": { |         "emoji-regex": { | ||||||
|           "version": "7.0.3", |           "version": "7.0.3", | ||||||
|           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", |           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", | ||||||
|           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", |           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "is-fullwidth-code-point": { |         "is-fullwidth-code-point": { | ||||||
|           "version": "2.0.0", |           "version": "2.0.0", | ||||||
|           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", |           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", | ||||||
|           "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", |           "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "string-width": { |         "string-width": { | ||||||
|           "version": "3.1.0", |           "version": "3.1.0", | ||||||
|           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", | ||||||
|           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", |           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "emoji-regex": "^7.0.1", |             "emoji-regex": "^7.0.1", | ||||||
|             "is-fullwidth-code-point": "^2.0.0", |             "is-fullwidth-code-point": "^2.0.0", | ||||||
| @ -11192,7 +11182,6 @@ | |||||||
|           "version": "5.2.0", |           "version": "5.2.0", | ||||||
|           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", |           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", | ||||||
|           "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", |           "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "ansi-regex": "^4.1.0" |             "ansi-regex": "^4.1.0" | ||||||
|           } |           } | ||||||
| @ -11201,7 +11190,6 @@ | |||||||
|           "version": "5.1.0", |           "version": "5.1.0", | ||||||
|           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", |           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", | ||||||
|           "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", |           "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "ansi-styles": "^3.2.0", |             "ansi-styles": "^3.2.0", | ||||||
|             "string-width": "^3.0.0", |             "string-width": "^3.0.0", | ||||||
| @ -11537,6 +11525,140 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "concurrently": { | ||||||
|  |       "version": "8.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", | ||||||
|  |       "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "chalk": "^4.1.2", | ||||||
|  |         "date-fns": "^2.30.0", | ||||||
|  |         "lodash": "^4.17.21", | ||||||
|  |         "rxjs": "^7.8.1", | ||||||
|  |         "shell-quote": "^1.8.1", | ||||||
|  |         "spawn-command": "0.0.2", | ||||||
|  |         "supports-color": "^8.1.1", | ||||||
|  |         "tree-kill": "^1.2.2", | ||||||
|  |         "yargs": "^17.7.2" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "ansi-regex": { | ||||||
|  |           "version": "5.0.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", | ||||||
|  |           "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "chalk": { | ||||||
|  |           "version": "4.1.2", | ||||||
|  |           "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | ||||||
|  |           "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "ansi-styles": "^4.1.0", | ||||||
|  |             "supports-color": "^7.1.0" | ||||||
|  |           }, | ||||||
|  |           "dependencies": { | ||||||
|  |             "supports-color": { | ||||||
|  |               "version": "7.2.0", | ||||||
|  |               "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | ||||||
|  |               "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", | ||||||
|  |               "dev": true, | ||||||
|  |               "requires": { | ||||||
|  |                 "has-flag": "^4.0.0" | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "cliui": { | ||||||
|  |           "version": "8.0.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", | ||||||
|  |           "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "string-width": "^4.2.0", | ||||||
|  |             "strip-ansi": "^6.0.1", | ||||||
|  |             "wrap-ansi": "^7.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "is-fullwidth-code-point": { | ||||||
|  |           "version": "3.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", | ||||||
|  |           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "rxjs": { | ||||||
|  |           "version": "7.8.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", | ||||||
|  |           "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "tslib": "^2.1.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "shell-quote": { | ||||||
|  |           "version": "1.8.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", | ||||||
|  |           "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "string-width": { | ||||||
|  |           "version": "4.2.3", | ||||||
|  |           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | ||||||
|  |           "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "emoji-regex": "^8.0.0", | ||||||
|  |             "is-fullwidth-code-point": "^3.0.0", | ||||||
|  |             "strip-ansi": "^6.0.1" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "strip-ansi": { | ||||||
|  |           "version": "6.0.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | ||||||
|  |           "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "ansi-regex": "^5.0.1" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "supports-color": { | ||||||
|  |           "version": "8.1.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", | ||||||
|  |           "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "has-flag": "^4.0.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "y18n": { | ||||||
|  |           "version": "5.0.8", | ||||||
|  |           "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", | ||||||
|  |           "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "yargs": { | ||||||
|  |           "version": "17.7.2", | ||||||
|  |           "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", | ||||||
|  |           "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "cliui": "^8.0.1", | ||||||
|  |             "escalade": "^3.1.1", | ||||||
|  |             "get-caller-file": "^2.0.5", | ||||||
|  |             "require-directory": "^2.1.1", | ||||||
|  |             "string-width": "^4.2.3", | ||||||
|  |             "y18n": "^5.0.5", | ||||||
|  |             "yargs-parser": "^21.1.1" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "yargs-parser": { | ||||||
|  |           "version": "21.1.1", | ||||||
|  |           "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", | ||||||
|  |           "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "conf": { |     "conf": { | ||||||
|       "version": "10.2.0", |       "version": "10.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", |       "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", | ||||||
| @ -12051,6 +12173,42 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/cordova-plugin-media-capture/-/cordova-plugin-media-capture-3.0.3.tgz", |       "resolved": "https://registry.npmjs.org/cordova-plugin-media-capture/-/cordova-plugin-media-capture-3.0.3.tgz", | ||||||
|       "integrity": "sha512-pVQOrNM7VAuVUMXibAlMGIArrftHPrRs4dUCoE+e2HEFUp3LmN3Yj539LjdUxcWmz/A/cHC65m9E3DS56YJhcg==" |       "integrity": "sha512-pVQOrNM7VAuVUMXibAlMGIArrftHPrRs4dUCoE+e2HEFUp3LmN3Yj539LjdUxcWmz/A/cHC65m9E3DS56YJhcg==" | ||||||
|     }, |     }, | ||||||
|  |     "cordova-plugin-moodleapp": { | ||||||
|  |       "version": "file:cordova-plugin-moodleapp", | ||||||
|  |       "dependencies": { | ||||||
|  |         "chokidar-cli": { | ||||||
|  |           "version": "3.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-3.0.0.tgz", | ||||||
|  |           "integrity": "sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==", | ||||||
|  |           "requires": { | ||||||
|  |             "chokidar": "^3.5.2", | ||||||
|  |             "lodash.debounce": "^4.0.8", | ||||||
|  |             "yargs": "^13.3.0" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "concurrently": { | ||||||
|  |           "version": "8.2.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", | ||||||
|  |           "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==", | ||||||
|  |           "requires": { | ||||||
|  |             "date-fns": "^2.30.0", | ||||||
|  |             "lodash": "^4.17.21", | ||||||
|  |             "spawn-command": "0.0.2", | ||||||
|  |             "tree-kill": "^1.2.2" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "esbuild": { | ||||||
|  |           "version": "0.18.11", | ||||||
|  |           "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", | ||||||
|  |           "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==" | ||||||
|  |         }, | ||||||
|  |         "typescript": { | ||||||
|  |           "version": "5.1.6", | ||||||
|  |           "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", | ||||||
|  |           "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "cordova-plugin-network-information": { |     "cordova-plugin-network-information": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/cordova-plugin-network-information/-/cordova-plugin-network-information-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/cordova-plugin-network-information/-/cordova-plugin-network-information-3.0.0.tgz", | ||||||
| @ -12871,6 +13029,14 @@ | |||||||
|         "whatwg-url": "^8.0.0" |         "whatwg-url": "^8.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "date-fns": { | ||||||
|  |       "version": "2.30.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", | ||||||
|  |       "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/runtime": "^7.21.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "debounce-fn": { |     "debounce-fn": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", | ||||||
| @ -12903,8 +13069,7 @@ | |||||||
|     "decamelize": { |     "decamelize": { | ||||||
|       "version": "1.2.0", |       "version": "1.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", |       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", | ||||||
|       "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", |       "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "decimal.js": { |     "decimal.js": { | ||||||
|       "version": "10.4.3", |       "version": "10.4.3", | ||||||
| @ -15847,8 +16012,7 @@ | |||||||
|     "get-caller-file": { |     "get-caller-file": { | ||||||
|       "version": "2.0.5", |       "version": "2.0.5", | ||||||
|       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", |       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | ||||||
|       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", |       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "get-intrinsic": { |     "get-intrinsic": { | ||||||
|       "version": "1.2.1", |       "version": "1.2.1", | ||||||
| @ -17926,7 +18090,6 @@ | |||||||
|       "version": "2.1.0", |       "version": "2.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", |       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", | ||||||
|       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", |       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "binary-extensions": "^2.0.0" |         "binary-extensions": "^2.0.0" | ||||||
|       } |       } | ||||||
| @ -21540,8 +21703,7 @@ | |||||||
|     "normalize-path": { |     "normalize-path": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | ||||||
|       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", |       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "normalize-range": { |     "normalize-range": { | ||||||
|       "version": "0.1.2", |       "version": "0.1.2", | ||||||
| @ -24514,7 +24676,6 @@ | |||||||
|       "version": "3.6.0", |       "version": "3.6.0", | ||||||
|       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", |       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | ||||||
|       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", |       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "picomatch": "^2.2.1" |         "picomatch": "^2.2.1" | ||||||
|       } |       } | ||||||
| @ -24869,8 +25030,7 @@ | |||||||
|     "require-directory": { |     "require-directory": { | ||||||
|       "version": "2.1.1", |       "version": "2.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", | ||||||
|       "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", |       "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "require-from-string": { |     "require-from-string": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
| @ -24880,8 +25040,7 @@ | |||||||
|     "require-main-filename": { |     "require-main-filename": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", | ||||||
|       "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", |       "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "requires-port": { |     "requires-port": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
| @ -26409,6 +26568,11 @@ | |||||||
|       "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", |       "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "spawn-command": { | ||||||
|  |       "version": "0.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", | ||||||
|  |       "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==" | ||||||
|  |     }, | ||||||
|     "spdx-correct": { |     "spdx-correct": { | ||||||
|       "version": "3.2.0", |       "version": "3.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", |       "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", | ||||||
| @ -27741,8 +27905,7 @@ | |||||||
|     "tree-kill": { |     "tree-kill": { | ||||||
|       "version": "1.2.2", |       "version": "1.2.2", | ||||||
|       "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", |       "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", | ||||||
|       "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", |       "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "ts-dedent": { |     "ts-dedent": { | ||||||
|       "version": "2.2.0", |       "version": "2.2.0", | ||||||
| @ -29908,8 +30071,7 @@ | |||||||
|     "which-module": { |     "which-module": { | ||||||
|       "version": "2.0.1", |       "version": "2.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", |       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", | ||||||
|       "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", |       "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "which-typed-array": { |     "which-typed-array": { | ||||||
|       "version": "1.1.9", |       "version": "1.1.9", | ||||||
| @ -30218,8 +30380,7 @@ | |||||||
|     "y18n": { |     "y18n": { | ||||||
|       "version": "4.0.3", |       "version": "4.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", |       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", | ||||||
|       "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", |       "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "yallist": { |     "yallist": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
| @ -30236,7 +30397,6 @@ | |||||||
|       "version": "13.3.2", |       "version": "13.3.2", | ||||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", |       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", | ||||||
|       "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", |       "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "cliui": "^5.0.0", |         "cliui": "^5.0.0", | ||||||
|         "find-up": "^3.0.0", |         "find-up": "^3.0.0", | ||||||
| @ -30253,26 +30413,22 @@ | |||||||
|         "ansi-regex": { |         "ansi-regex": { | ||||||
|           "version": "4.1.1", |           "version": "4.1.1", | ||||||
|           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", |           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", | ||||||
|           "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", |           "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "emoji-regex": { |         "emoji-regex": { | ||||||
|           "version": "7.0.3", |           "version": "7.0.3", | ||||||
|           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", |           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", | ||||||
|           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", |           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "is-fullwidth-code-point": { |         "is-fullwidth-code-point": { | ||||||
|           "version": "2.0.0", |           "version": "2.0.0", | ||||||
|           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", |           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", | ||||||
|           "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", |           "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" | ||||||
|           "dev": true |  | ||||||
|         }, |         }, | ||||||
|         "string-width": { |         "string-width": { | ||||||
|           "version": "3.1.0", |           "version": "3.1.0", | ||||||
|           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", | ||||||
|           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", |           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "emoji-regex": "^7.0.1", |             "emoji-regex": "^7.0.1", | ||||||
|             "is-fullwidth-code-point": "^2.0.0", |             "is-fullwidth-code-point": "^2.0.0", | ||||||
| @ -30283,7 +30439,6 @@ | |||||||
|           "version": "5.2.0", |           "version": "5.2.0", | ||||||
|           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", |           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", | ||||||
|           "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", |           "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |           "requires": { | ||||||
|             "ansi-regex": "^4.1.0" |             "ansi-regex": "^4.1.0" | ||||||
|           } |           } | ||||||
| @ -30294,7 +30449,6 @@ | |||||||
|       "version": "13.1.2", |       "version": "13.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", |       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", | ||||||
|       "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", |       "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "camelcase": "^5.0.0", |         "camelcase": "^5.0.0", | ||||||
|         "decamelize": "^1.2.0" |         "decamelize": "^1.2.0" | ||||||
| @ -30303,8 +30457,7 @@ | |||||||
|         "camelcase": { |         "camelcase": { | ||||||
|           "version": "5.3.1", |           "version": "5.3.1", | ||||||
|           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", |           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | ||||||
|           "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", |           "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" | ||||||
|           "dev": true |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @ -24,9 +24,11 @@ | |||||||
|     "build": "ionic build", |     "build": "ionic build", | ||||||
|     "build:prod": "NODE_ENV=production ionic build --prod", |     "build:prod": "NODE_ENV=production ionic build --prod", | ||||||
|     "build:test": "NODE_ENV=testing ionic build --configuration=testing", |     "build:test": "NODE_ENV=testing ionic build --configuration=testing", | ||||||
|     "dev:android": "ionic cordova run android --livereload --external --ssl", |     "dev:android": "concurrently \"npm run dev:android:app\" \"npm run dev:android:cordova\"", | ||||||
|  |     "dev:android:app": "ionic cordova run android --livereload --external --ssl", | ||||||
|  |     "dev:android:cordova": "npm run dev --prefix cordova-plugin-moodleapp", | ||||||
|     "dev:ios": "ionic cordova run ios", |     "dev:ios": "ionic cordova run ios", | ||||||
|     "prod:android": "NODE_ENV=production ionic cordova run android --prod", |     "prod:android": "npm run prod --prefix cordova-plugin-moodleapp && NODE_ENV=production ionic cordova run android --prod", | ||||||
|     "prod:ios": "NODE_ENV=production ionic cordova run ios --prod", |     "prod:ios": "NODE_ENV=production ionic cordova run ios --prod", | ||||||
|     "storybook": "start-storybook -p 6006", |     "storybook": "start-storybook -p 6006", | ||||||
|     "test": "NODE_ENV=testing gulp && jest --verbose", |     "test": "NODE_ENV=testing gulp && jest --verbose", | ||||||
| @ -107,6 +109,7 @@ | |||||||
|     "cordova-plugin-geolocation": "^4.1.0", |     "cordova-plugin-geolocation": "^4.1.0", | ||||||
|     "cordova-plugin-ionic-keyboard": "^2.2.0", |     "cordova-plugin-ionic-keyboard": "^2.2.0", | ||||||
|     "cordova-plugin-media-capture": "3.0.3", |     "cordova-plugin-media-capture": "3.0.3", | ||||||
|  |     "cordova-plugin-moodleapp": "file:cordova-plugin-moodleapp", | ||||||
|     "cordova-plugin-network-information": "^3.0.0", |     "cordova-plugin-network-information": "^3.0.0", | ||||||
|     "cordova-plugin-prevent-override": "^1.0.1", |     "cordova-plugin-prevent-override": "^1.0.1", | ||||||
|     "cordova-plugin-screen-orientation": "^3.0.2", |     "cordova-plugin-screen-orientation": "^3.0.2", | ||||||
| @ -157,6 +160,7 @@ | |||||||
|     "@typescript-eslint/parser": "^4.22.0", |     "@typescript-eslint/parser": "^4.22.0", | ||||||
|     "check-es-compat": "^1.1.1", |     "check-es-compat": "^1.1.1", | ||||||
|     "compare-versions": "^4.1.4", |     "compare-versions": "^4.1.4", | ||||||
|  |     "concurrently": "^8.2.0", | ||||||
|     "cross-env": "^7.0.3", |     "cross-env": "^7.0.3", | ||||||
|     "eslint": "^7.25.0", |     "eslint": "^7.25.0", | ||||||
|     "eslint-config-prettier": "^8.3.0", |     "eslint-config-prettier": "^8.3.0", | ||||||
| @ -244,7 +248,8 @@ | |||||||
|       "@moodlehq/cordova-plugin-file-transfer": {}, |       "@moodlehq/cordova-plugin-file-transfer": {}, | ||||||
|       "cordova-plugin-prevent-override": {}, |       "cordova-plugin-prevent-override": {}, | ||||||
|       "cordova-plugin-androidx-adapter": {}, |       "cordova-plugin-androidx-adapter": {}, | ||||||
|       "cordova-plugin-screen-orientation": {} |       "cordova-plugin-screen-orientation": {}, | ||||||
|  |       "cordova-plugin-moodleapp": {} | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "optionalDependencies": { |   "optionalDependencies": { | ||||||
|  | |||||||
							
								
								
									
										52
									
								
								src/core/features/native/services/native.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/core/features/native/services/native.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { makeSingleton } from '@singletons'; | ||||||
|  | import { CorePlatform } from '@services/platform'; | ||||||
|  | import { AsyncInstance, asyncInstance } from '@/core/utils/async-instance'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Native plugin manager. | ||||||
|  |  */ | ||||||
|  | @Injectable({ providedIn: 'root' }) | ||||||
|  | export class CoreNativeService { | ||||||
|  | 
 | ||||||
|  |     private plugins: Partial<Record<keyof MoodleAppPlugins, AsyncInstance<unknown>>> = {}; | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Get a native plugin instance. | ||||||
|  |      * | ||||||
|  |      * @param plugin Plugin name. | ||||||
|  |      * @returns Plugin instance. | ||||||
|  |      */ | ||||||
|  |     plugin<Plugin extends keyof MoodleAppPlugins>(plugin: Plugin): AsyncInstance<MoodleAppPlugins[Plugin]> | null { | ||||||
|  |         if (!CorePlatform.isAndroid()) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (!(plugin in this.plugins)) { | ||||||
|  |             this.plugins[plugin] = asyncInstance(async () => { | ||||||
|  |                 await CorePlatform.ready(); | ||||||
|  | 
 | ||||||
|  |                 return window.cordova?.MoodleApp?.[plugin]; | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return this.plugins[plugin] as AsyncInstance<MoodleAppPlugins[Plugin]>; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export const CoreNative = makeSingleton(CoreNativeService); | ||||||
| @ -5,6 +5,7 @@ | |||||||
|     "types": [ |     "types": [ | ||||||
|       "@moodlehq/cordova-plugin-file-transfer", |       "@moodlehq/cordova-plugin-file-transfer", | ||||||
|       "@moodlehq/cordova-plugin-inappbrowser", |       "@moodlehq/cordova-plugin-inappbrowser", | ||||||
|  |       "cordova-plugin-moodleapp", | ||||||
|       "cordova", |       "cordova", | ||||||
|       "dom-mediacapture-record", |       "dom-mediacapture-record", | ||||||
|       "node", |       "node", | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ | |||||||
|     "types": [ |     "types": [ | ||||||
|         "@moodlehq/cordova-plugin-file-transfer", |         "@moodlehq/cordova-plugin-file-transfer", | ||||||
|         "@moodlehq/cordova-plugin-inappbrowser", |         "@moodlehq/cordova-plugin-inappbrowser", | ||||||
|  |         "cordova-plugin-moodleapp", | ||||||
|         "cordova", |         "cordova", | ||||||
|         "dom-mediacapture-record", |         "dom-mediacapture-record", | ||||||
|         "faker", |         "faker", | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ | |||||||
|     "types": [ |     "types": [ | ||||||
|       "@moodlehq/cordova-plugin-file-transfer", |       "@moodlehq/cordova-plugin-file-transfer", | ||||||
|       "@moodlehq/cordova-plugin-inappbrowser", |       "@moodlehq/cordova-plugin-inappbrowser", | ||||||
|  |       "cordova-plugin-moodleapp", | ||||||
|       "cordova", |       "cordova", | ||||||
|       "dom-mediacapture-record", |       "dom-mediacapture-record", | ||||||
|       "faker", |       "faker", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user