From f7a53eb4f33f274bb717c25c915593cfc99c14cd Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Sun, 16 Oct 2022 14:58:44 +0800 Subject: [PATCH 01/14] setup npmrc for pintura private repo --- .gitignore | 1 + package.json | 2 +- set-npmrc.js | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 set-npmrc.js diff --git a/.gitignore b/.gitignore index 2c785f48d..43460db3f 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ npm-debug.log* /www .gradle/ secret.ts +.npmrc resources/android/icon resources/android/splash diff --git a/package.json b/package.json index c4b9fc754..d8ee82d06 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "homepage": "https://numbersprotocol.io/", "scripts": { "ng": "ng", - "preconfig": "node set-secret.js", + "preconfig": "node set-secret.js && node set-npmrc.js", "serve": "npm run preconfig && ionic serve", "serve.prod": "npm run preconfig && ionic serve --configuration production", "build": "npm run preconfig && ionic build --configuration production", diff --git a/set-npmrc.js b/set-npmrc.js new file mode 100644 index 000000000..d769f6513 --- /dev/null +++ b/set-npmrc.js @@ -0,0 +1,16 @@ +const fs = require('fs'); + +// Configure Angular `secret.ts` file path +const targetPath = './.npmrc'; + +// `.npmrc` file structure +const envConfigFile = ` +@pqina:registry=https://npm.pqina.nl/ +//npm.pqina.nl/:_authToken=${process.env.NUMBERS_PQINA_NPM_KEY} +`; +fs.writeFile(targetPath, envConfigFile, err => { + if (err) { + throw console.error(err); + } + console.log(`A npmrc file has generated successfully at ${targetPath} \n`); +}); From 1478f81ad2ba42c74a8ea290518e136a83062d9d Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Sun, 23 Oct 2022 16:18:37 +0800 Subject: [PATCH 02/14] install @pqina/angular-pintura @pqina/pintura packages --- package-lock.json | 634 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 + 2 files changed, 629 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 34299433c..3b3273b4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "capture-lite", "version": "0.67.1", "dependencies": { + "packages": "^0.0.8", "@angular/animations": "^14.2.0", "@angular/cdk": "^14.2.0", "@angular/common": "^14.2.0", @@ -50,6 +51,8 @@ "@ngx-formly/schematics": "^5.10.22", "@numbersprotocol/preview-camera": "github:numbersprotocol/preview-camera", "@numbersprotocol/preview-video": "github:numbersprotocol/preview-video", + "@pqina/angular-pintura": "^8.44.1", + "@pqina/pintura": "^8.44.1", "@techiediaries/ngx-qrcode": "^9.1.0", "appsflyer-capacitor-plugin": "^6.5.2", "async-mutex": "^0.3.2", @@ -5142,6 +5145,24 @@ "typescript": "^3 || ^4" } }, + "node_modules/@pqina/angular-pintura": { + "version": "8.44.1", + "resolved": "https://npm.pqina.nl/@pqina%2fangular-pintura/-/angular-pintura-8.44.1.tgz", + "integrity": "sha512-AGeSbIqdPnNZkAHpSGlF0Lh+GDcvVO0h1v7V/CjNDOIFuV+1MJQb3EdplyB1jDPk80Aw/xlAyxMMi5wPeLr8YQ==", + "license": "https://pqina.nl/pintura/license/", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@pqina/pintura": "8.x" + } + }, + "node_modules/@pqina/pintura": { + "version": "8.44.1", + "resolved": "https://npm.pqina.nl/@pqina%2fpintura/-/pintura-8.44.1.tgz", + "integrity": "sha512-d/tAuiKRqKO7pLSZk2sh0YvDHcES8LEKZ4ys0m5kXsBqFGxeTU/rh1gDIxwNHYbEUMoMWeOGfbzoY88jQfo+7A==", + "license": "https://pqina.nl/pintura/license/" + }, "node_modules/@schematics/angular": { "version": "12.2.4", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.4.tgz", @@ -9207,8 +9228,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -9217,8 +9236,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -10790,6 +10807,15 @@ "node >=0.6.0" ] }, + "node_modules/factories": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/factories/-/factories-0.0.8.tgz", + "integrity": "sha512-p9H82s7B4qoIpaC0IJBcu/lxwgboj0jozyWc9b+GWog1dsdNNyf/LgjrN4z1xkxS7V32whyHNdNNtbT4JO4BTA==", + "dependencies": { + "protoclass": "0.0.x", + "type-component": "0.0.x" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -10858,6 +10884,17 @@ "pend": "~1.2.0" } }, + "node_modules/fetch": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/fetch/-/fetch-0.3.6.tgz", + "integrity": "sha512-MFBYJw1kc89ctsJZIthwHYB3Vsoc0Zsi29VxV9Huz/NlrcSwVb6WQ4F6k11icOHnM/HLeCjy2MKNoA9xWe/cvw==", + "engines": [ + "node >=0.5.10" + ], + "dependencies": { + "encoding": "*" + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -13552,6 +13589,11 @@ "node": ">=10.0.0" } }, + "node_modules/keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==" + }, "node_modules/keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -15184,6 +15226,39 @@ "buffer": "^5.5.0" } }, + "node_modules/multiparty": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz", + "integrity": "sha512-fiFMI4tSze1TsrWFZNABRwy7kF/VycEWz4t0UFESOoP5IdJh29AUFmbirWXv/Ih/rNw62OO2YaQpQEiw1BFQpQ==", + "dependencies": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/multiparty/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/multiparty/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/multiparty/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -16366,6 +16441,191 @@ "node": ">=6" } }, + "node_modules/packages": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/packages/-/packages-0.0.8.tgz", + "integrity": "sha512-rstHZWH1UyHUAwtU8GI4JSIFWTYUEkRf+MseFG/p3lO/HgZHvXGZR7XN+1eA/Km7JDnItW4mgn5zfpP23aITgQ==", + "dependencies": { + "express": "~3.4.0", + "factories": "0.0.x", + "resolver": "~0.1.11", + "toarray": "0.0.1", + "type-component": "0.0.1" + } + }, + "node_modules/packages/node_modules/batch": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz", + "integrity": "sha512-avtDJBSxllB5QGphW1OXYF+ujhy/yIGgeFsvK6UiZLU86nWlqsNcZotUKd001wrl9MmZ9QIyVy8WFVEEpRIc5A==" + }, + "node_modules/packages/node_modules/buffer-crc32": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz", + "integrity": "sha512-vMfBIRp/wjlpueSz7Sb0OmO7C5SH58SSmbsT8G4D48YfO/Zgbr29xNXMpZVSC14ujVJfrZZH1Bl+kXYRQPuvfQ==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/bytes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", + "integrity": "sha512-odbk8/wGazOuC1v8v4phoV285/yx8UN5kfQhhuxaVcceig4OUiCZQBtaEtmA1Q78QSTN9iXOQ7X2EViybrEvtQ==" + }, + "node_modules/packages/node_modules/commander": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz", + "integrity": "sha512-uoVVA5dchmxZeTMv2Qsd0vhn/RebJYsWo4all1qtrUL3BBhQFn4AQDF4PL+ZvOeK7gczXKEZaSCyMDMwFBlpBg==", + "dependencies": { + "keypress": "0.1.x" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/packages/node_modules/connect": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz", + "integrity": "sha512-i3poGdQamCEvDhvaFuG99KUDCU1Cvv7S2T6YfpY4X2+a0+uDrUcpRk08AQEge3NhtidVKfODQfpoMW4xlbQ0LQ==", + "deprecated": "connect 2.x series is deprecated", + "dependencies": { + "batch": "0.5.0", + "buffer-crc32": "0.2.1", + "bytes": "0.2.1", + "cookie": "0.1.0", + "cookie-signature": "1.0.1", + "debug": ">= 0.7.3 < 1", + "fresh": "0.2.0", + "methods": "0.1.0", + "multiparty": "2.2.0", + "negotiator": "0.3.0", + "pause": "0.0.1", + "qs": "0.6.6", + "raw-body": "1.1.2", + "send": "0.1.4", + "uid2": "0.0.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/packages/node_modules/cookie": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "integrity": "sha512-YSNOBX085/nzHvrTLEHYHoNdkvpLU1MPjU3r1IGawudZJjfuqnRNIFrcOJJ7bfwC+HWbHL1Y4yMkC0O+HWjV7w==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/cookie-signature": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz", + "integrity": "sha512-FMG5ziBzXZ5d4j5obbWOH1X7AtIpsU9ce9mQ+lHo/I1++kzz/isNarOj6T1lBPRspP3mZpuIutc7OVDVcaN1Kg==" + }, + "node_modules/packages/node_modules/debug": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz", + "integrity": "sha512-HlXEJm99YsRjLJ8xmuz0Lq8YUwrv7hAJkTEr6/Em3sUlSUNl0UdFA+1SrY4fnykeq1FVkUEUtwRGHs9VvlYbGA==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/express": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/express/-/express-3.4.8.tgz", + "integrity": "sha512-NC6Ff/tlg4JNjGTrw0is0aOe9k7iAnb3Ra6mF3Be15UscxZKpbP7XCMmXx9EiNpHe9IClbHo6EDslH9eJNo1HQ==", + "dependencies": { + "buffer-crc32": "0.2.1", + "commander": "1.3.2", + "connect": "2.12.0", + "cookie": "0.1.0", + "cookie-signature": "1.0.1", + "debug": ">= 0.7.3 < 1", + "fresh": "0.2.0", + "merge-descriptors": "0.0.1", + "methods": "0.1.0", + "mkdirp": "0.3.5", + "range-parser": "0.0.4", + "send": "0.1.4" + }, + "bin": { + "express": "bin/express" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/packages/node_modules/fresh": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz", + "integrity": "sha512-ckGdAuSRr1wBmnq7CsW7eU37DBwQxHx3vW8foJUIrF56rkOy8Osm6Fe8KSwemwyKejivKki7jVBgpBpBJexmrw==" + }, + "node_modules/packages/node_modules/merge-descriptors": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.1.tgz", + "integrity": "sha512-1VjrOxz6kouIMS/jZ+oQTAUsXufrF8hVzkfzSxqBh0Wy/KzEqZSvy3OZe/Ntrd5QeHtNCUF1bE0bIRLslzHCcw==" + }, + "node_modules/packages/node_modules/methods": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz", + "integrity": "sha512-N4cn4CbDqu7Fp3AT4z3AsO19calgczhsmCGzXLCiUOrWg9sjb1B+yKFKOrnnPGKKvjyJBmw+k6b3adFN2LbuBw==" + }, + "node_modules/packages/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "node_modules/packages/node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)" + }, + "node_modules/packages/node_modules/negotiator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", + "integrity": "sha512-q9wF64uB31BDZQ44DWf+8gE7y8xSpBdREAsJfnBO2WX9ecsutfUO6S9uWEdixlDLOlWaqnlnFXXwZxUUmyLfgg==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/qs": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", + "integrity": "sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/range-parser": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", + "integrity": "sha512-okJVEq9DbZyg+5lD8pr6ooQmeA0uu8DYIyAU7VK1WUUK7hctI1yw2ZHhKiKjB6RXaDrYRmTR4SsIHkyiQpaLMA==", + "engines": { + "node": "*" + } + }, + "node_modules/packages/node_modules/raw-body": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz", + "integrity": "sha512-9Vyxam2+QrtmNIc3mFrwazAXOeQdxgFvS3vvkvH02R5YbdsaSqL4N9M93s0znkh0q4cGBk8CbrqOSGkz3BUeDg==", + "dependencies": { + "bytes": "~0.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/packages/node_modules/send": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", + "integrity": "sha512-NJnIaB29/EcNqkNneUAm16oEVnzM2LeNBc/hmgKuExv2k9pCZQEw8SHJeCdjqesHJTyWAr7x5HjeOmRFS4BoFw==", + "dependencies": { + "debug": "*", + "fresh": "0.2.0", + "mime": "~1.2.9", + "range-parser": "0.0.4" + } + }, "node_modules/pacote": { "version": "13.6.2", "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", @@ -16711,6 +16971,11 @@ "node": ">=8" } }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, "node_modules/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -17874,6 +18139,11 @@ "node": ">= 6" } }, + "node_modules/protoclass": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/protoclass/-/protoclass-0.0.6.tgz", + "integrity": "sha512-V+eGEAC7KI3NhZL5Vl2rcxwKMAgvDkGKPhfrJDLBVP7kW/+mS48bloIpo3L+7MtSiVN2Q+kwrasBxzZU34HmPw==" + }, "node_modules/protractor": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", @@ -19076,6 +19346,20 @@ "node": ">=0.10.0" } }, + "node_modules/resolver": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/resolver/-/resolver-0.1.12.tgz", + "integrity": "sha512-cZ4vkMkZZvL2t7Tgs6omCfyQWN1G5SmTk2O84xBFXT5B2mlIz8whJAPBvINThd3adrM2V2iu1m9qXrHpxEoJ4w==", + "dependencies": { + "fetch": "~0.3.6", + "mime": "1.2.11" + } + }, + "node_modules/resolver/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -20218,6 +20502,38 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha512-GjA2zKc2iXUUKRcOxXQmhEx0Ev3XHJ6c8yWGqhQjWwhGrqNwSsvq9YlRLgoGtZ5Kx2Ln94IedaqJ5GUG6aBbxA==", + "dependencies": { + "readable-stream": "~1.1.8" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/stream-counter/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/stream-counter/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/stream-counter/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/stream-http": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", @@ -21395,6 +21711,11 @@ "node": ">=8.0" } }, + "node_modules/toarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/toarray/-/toarray-0.0.1.tgz", + "integrity": "sha512-4EEt1cngMyDQvStibtjwHav7mCYf0mLAXYQ3z03zNacXjWjIHN01j1AtjGpEuCKX5sea+ZzyZcDXgjitxOVaww==" + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -21588,6 +21909,11 @@ "node": ">= 0.8.0" } }, + "node_modules/type-component": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/type-component/-/type-component-0.0.1.tgz", + "integrity": "sha512-mDZRBQS2yZkwRQKfjJvQ8UIYJeBNNWCq+HBNstl9N5s9jZ4dkVYXEGkVPsSCEh5Ld4JM1kmrZTzjnrqSAIQ7dw==" + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -21666,6 +21992,11 @@ "node": "*" } }, + "node_modules/uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg==" + }, "node_modules/ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -23411,6 +23742,158 @@ } }, "dependencies": { + "packages": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/packages/-/packages-0.0.8.tgz", + "integrity": "sha512-rstHZWH1UyHUAwtU8GI4JSIFWTYUEkRf+MseFG/p3lO/HgZHvXGZR7XN+1eA/Km7JDnItW4mgn5zfpP23aITgQ==", + "requires": { + "express": "~3.4.0", + "factories": "0.0.x", + "resolver": "~0.1.11", + "toarray": "0.0.1", + "type-component": "0.0.1" + }, + "dependencies": { + "batch": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz", + "integrity": "sha512-avtDJBSxllB5QGphW1OXYF+ujhy/yIGgeFsvK6UiZLU86nWlqsNcZotUKd001wrl9MmZ9QIyVy8WFVEEpRIc5A==" + }, + "buffer-crc32": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz", + "integrity": "sha512-vMfBIRp/wjlpueSz7Sb0OmO7C5SH58SSmbsT8G4D48YfO/Zgbr29xNXMpZVSC14ujVJfrZZH1Bl+kXYRQPuvfQ==" + }, + "bytes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", + "integrity": "sha512-odbk8/wGazOuC1v8v4phoV285/yx8UN5kfQhhuxaVcceig4OUiCZQBtaEtmA1Q78QSTN9iXOQ7X2EViybrEvtQ==" + }, + "commander": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz", + "integrity": "sha512-uoVVA5dchmxZeTMv2Qsd0vhn/RebJYsWo4all1qtrUL3BBhQFn4AQDF4PL+ZvOeK7gczXKEZaSCyMDMwFBlpBg==", + "requires": { + "keypress": "0.1.x" + } + }, + "connect": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz", + "integrity": "sha512-i3poGdQamCEvDhvaFuG99KUDCU1Cvv7S2T6YfpY4X2+a0+uDrUcpRk08AQEge3NhtidVKfODQfpoMW4xlbQ0LQ==", + "requires": { + "batch": "0.5.0", + "buffer-crc32": "0.2.1", + "bytes": "0.2.1", + "cookie": "0.1.0", + "cookie-signature": "1.0.1", + "debug": ">= 0.7.3 < 1", + "fresh": "0.2.0", + "methods": "0.1.0", + "multiparty": "2.2.0", + "negotiator": "0.3.0", + "pause": "0.0.1", + "qs": "0.6.6", + "raw-body": "1.1.2", + "send": "0.1.4", + "uid2": "0.0.3" + } + }, + "cookie": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "integrity": "sha512-YSNOBX085/nzHvrTLEHYHoNdkvpLU1MPjU3r1IGawudZJjfuqnRNIFrcOJJ7bfwC+HWbHL1Y4yMkC0O+HWjV7w==" + }, + "cookie-signature": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz", + "integrity": "sha512-FMG5ziBzXZ5d4j5obbWOH1X7AtIpsU9ce9mQ+lHo/I1++kzz/isNarOj6T1lBPRspP3mZpuIutc7OVDVcaN1Kg==" + }, + "debug": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz", + "integrity": "sha512-HlXEJm99YsRjLJ8xmuz0Lq8YUwrv7hAJkTEr6/Em3sUlSUNl0UdFA+1SrY4fnykeq1FVkUEUtwRGHs9VvlYbGA==" + }, + "express": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/express/-/express-3.4.8.tgz", + "integrity": "sha512-NC6Ff/tlg4JNjGTrw0is0aOe9k7iAnb3Ra6mF3Be15UscxZKpbP7XCMmXx9EiNpHe9IClbHo6EDslH9eJNo1HQ==", + "requires": { + "buffer-crc32": "0.2.1", + "commander": "1.3.2", + "connect": "2.12.0", + "cookie": "0.1.0", + "cookie-signature": "1.0.1", + "debug": ">= 0.7.3 < 1", + "fresh": "0.2.0", + "merge-descriptors": "0.0.1", + "methods": "0.1.0", + "mkdirp": "0.3.5", + "range-parser": "0.0.4", + "send": "0.1.4" + } + }, + "fresh": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz", + "integrity": "sha512-ckGdAuSRr1wBmnq7CsW7eU37DBwQxHx3vW8foJUIrF56rkOy8Osm6Fe8KSwemwyKejivKki7jVBgpBpBJexmrw==" + }, + "merge-descriptors": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.1.tgz", + "integrity": "sha512-1VjrOxz6kouIMS/jZ+oQTAUsXufrF8hVzkfzSxqBh0Wy/KzEqZSvy3OZe/Ntrd5QeHtNCUF1bE0bIRLslzHCcw==" + }, + "methods": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz", + "integrity": "sha512-N4cn4CbDqu7Fp3AT4z3AsO19calgczhsmCGzXLCiUOrWg9sjb1B+yKFKOrnnPGKKvjyJBmw+k6b3adFN2LbuBw==" + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==" + }, + "negotiator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", + "integrity": "sha512-q9wF64uB31BDZQ44DWf+8gE7y8xSpBdREAsJfnBO2WX9ecsutfUO6S9uWEdixlDLOlWaqnlnFXXwZxUUmyLfgg==" + }, + "qs": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", + "integrity": "sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA==" + }, + "range-parser": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", + "integrity": "sha512-okJVEq9DbZyg+5lD8pr6ooQmeA0uu8DYIyAU7VK1WUUK7hctI1yw2ZHhKiKjB6RXaDrYRmTR4SsIHkyiQpaLMA==" + }, + "raw-body": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz", + "integrity": "sha512-9Vyxam2+QrtmNIc3mFrwazAXOeQdxgFvS3vvkvH02R5YbdsaSqL4N9M93s0znkh0q4cGBk8CbrqOSGkz3BUeDg==", + "requires": { + "bytes": "~0.2.1" + } + }, + "send": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", + "integrity": "sha512-NJnIaB29/EcNqkNneUAm16oEVnzM2LeNBc/hmgKuExv2k9pCZQEw8SHJeCdjqesHJTyWAr7x5HjeOmRFS4BoFw==", + "requires": { + "debug": "*", + "fresh": "0.2.0", + "mime": "~1.2.9", + "range-parser": "0.0.4" + } + } + } + }, "@adobe/css-tools": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", @@ -26879,6 +27362,19 @@ "esquery": "^1.0.1" } }, + "@pqina/angular-pintura": { + "version": "8.44.1", + "resolved": "https://npm.pqina.nl/@pqina%2fangular-pintura/-/angular-pintura-8.44.1.tgz", + "integrity": "sha512-AGeSbIqdPnNZkAHpSGlF0Lh+GDcvVO0h1v7V/CjNDOIFuV+1MJQb3EdplyB1jDPk80Aw/xlAyxMMi5wPeLr8YQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@pqina/pintura": { + "version": "8.44.1", + "resolved": "https://npm.pqina.nl/@pqina%2fpintura/-/pintura-8.44.1.tgz", + "integrity": "sha512-d/tAuiKRqKO7pLSZk2sh0YvDHcES8LEKZ4ys0m5kXsBqFGxeTU/rh1gDIxwNHYbEUMoMWeOGfbzoY88jQfo+7A==" + }, "@schematics/angular": { "version": "12.2.4", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.4.tgz", @@ -30051,8 +30547,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -30061,8 +30555,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -31211,6 +31703,15 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "factories": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/factories/-/factories-0.0.8.tgz", + "integrity": "sha512-p9H82s7B4qoIpaC0IJBcu/lxwgboj0jozyWc9b+GWog1dsdNNyf/LgjrN4z1xkxS7V32whyHNdNNtbT4JO4BTA==", + "requires": { + "protoclass": "0.0.x", + "type-component": "0.0.x" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -31273,6 +31774,14 @@ "pend": "~1.2.0" } }, + "fetch": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/fetch/-/fetch-0.3.6.tgz", + "integrity": "sha512-MFBYJw1kc89ctsJZIthwHYB3Vsoc0Zsi29VxV9Huz/NlrcSwVb6WQ4F6k11icOHnM/HLeCjy2MKNoA9xWe/cvw==", + "requires": { + "encoding": "*" + } + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -33277,6 +33786,11 @@ "readable-stream": "^3.6.0" } }, + "keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==" + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -34514,6 +35028,38 @@ } } }, + "multiparty": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz", + "integrity": "sha512-fiFMI4tSze1TsrWFZNABRwy7kF/VycEWz4t0UFESOoP5IdJh29AUFmbirWXv/Ih/rNw62OO2YaQpQEiw1BFQpQ==", + "requires": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -35677,6 +36223,11 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -36412,6 +36963,11 @@ "sisteransi": "^1.0.5" } }, + "protoclass": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/protoclass/-/protoclass-0.0.6.tgz", + "integrity": "sha512-V+eGEAC7KI3NhZL5Vl2rcxwKMAgvDkGKPhfrJDLBVP7kW/+mS48bloIpo3L+7MtSiVN2Q+kwrasBxzZU34HmPw==" + }, "protractor": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", @@ -37339,6 +37895,22 @@ } } }, + "resolver": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/resolver/-/resolver-0.1.12.tgz", + "integrity": "sha512-cZ4vkMkZZvL2t7Tgs6omCfyQWN1G5SmTk2O84xBFXT5B2mlIz8whJAPBvINThd3adrM2V2iu1m9qXrHpxEoJ4w==", + "requires": { + "fetch": "~0.3.6", + "mime": "1.2.11" + }, + "dependencies": { + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + } + } + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -38239,6 +38811,37 @@ } } }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha512-GjA2zKc2iXUUKRcOxXQmhEx0Ev3XHJ6c8yWGqhQjWwhGrqNwSsvq9YlRLgoGtZ5Kx2Ln94IedaqJ5GUG6aBbxA==", + "requires": { + "readable-stream": "~1.1.8" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, "stream-http": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", @@ -39128,6 +39731,11 @@ "is-number": "^7.0.0" } }, + "toarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/toarray/-/toarray-0.0.1.tgz", + "integrity": "sha512-4EEt1cngMyDQvStibtjwHav7mCYf0mLAXYQ3z03zNacXjWjIHN01j1AtjGpEuCKX5sea+ZzyZcDXgjitxOVaww==" + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -39262,6 +39870,11 @@ "prelude-ls": "^1.2.1" } }, + "type-component": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/type-component/-/type-component-0.0.1.tgz", + "integrity": "sha512-mDZRBQS2yZkwRQKfjJvQ8UIYJeBNNWCq+HBNstl9N5s9jZ4dkVYXEGkVPsSCEh5Ld4JM1kmrZTzjnrqSAIQ7dw==" + }, "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -39308,6 +39921,11 @@ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", "dev": true }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg==" + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", diff --git a/package.json b/package.json index d8ee82d06..b7607d36e 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,8 @@ "@ngx-formly/schematics": "^5.10.22", "@numbersprotocol/preview-camera": "github:numbersprotocol/preview-camera", "@numbersprotocol/preview-video": "github:numbersprotocol/preview-video", + "@pqina/angular-pintura": "^8.44.1", + "@pqina/pintura": "^8.44.1", "@techiediaries/ngx-qrcode": "^9.1.0", "appsflyer-capacitor-plugin": "^6.5.2", "async-mutex": "^0.3.2", @@ -75,6 +77,7 @@ "ngx-joyride": "^2.5.0", "ngx-long-press2": "^2.0.0", "ngx-pinch-zoom": "^2.6.0", + "packages": "^0.0.8", "process": "^0.11.10", "rxjs": "^6.6.7", "stream-browserify": "^2.0.2", From 75f0239ff64e6989509c3834cc00a80f2025b8eb Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Sun, 16 Oct 2022 15:48:47 +0800 Subject: [PATCH 03/14] add Pintura Image Editor styles to angular build --- angular.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/angular.json b/angular.json index 07901d434..8f2a796ce 100644 --- a/angular.json +++ b/angular.json @@ -39,6 +39,9 @@ }, { "input": "node_modules/material-design-icons-iconfont/dist/material-design-icons.css" + }, + { + "input": "node_modules/@pqina/pintura/pintura.css" } ], "scripts": [], From 1d2950baf2dd8260c326ebe4f66b26e2b3eb9258 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Sun, 23 Oct 2022 15:49:44 +0800 Subject: [PATCH 04/14] style pintura image editor colors --- src/global.scss | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/global.scss b/src/global.scss index 622c5f375..13363a541 100644 --- a/src/global.scss +++ b/src/global.scss @@ -169,3 +169,14 @@ body.dark .mat-tab-group { padding: 0 8px 10px !important; /* stylelint-disable-line declaration-no-important */ } // styling for ngx-joyride END + +.pintura-editor { + --color-background: 0, 0, 0 !important; + --color-foreground: 255, 255, 255 !important; + + --color-primary: #486cd9 !important; + --color-primary-dark: #1a80ec !important; + --color-primary-text: #fff !important; + --color-secondary: #03a9f4 !important; + --color-secondary-dark: #046bbf !important; +} From 3e64d4bdf1a9877c3b4904df99713d0e984e7063 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Mon, 24 Oct 2022 16:39:09 +0800 Subject: [PATCH 05/14] import AngularPinturaModule to custom-camera module --- src/app/features/home/custom-camera/custom-camera.module.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/features/home/custom-camera/custom-camera.module.ts b/src/app/features/home/custom-camera/custom-camera.module.ts index c5d485bb5..9cd2363bd 100644 --- a/src/app/features/home/custom-camera/custom-camera.module.ts +++ b/src/app/features/home/custom-camera/custom-camera.module.ts @@ -1,4 +1,5 @@ import { NgModule } from '@angular/core'; +import { AngularPinturaModule } from '@pqina/angular-pintura'; import { NgCircleProgressModule } from 'ng-circle-progress'; import { JoyrideModule } from 'ngx-joyride'; import { NgxLongPress2Module } from 'ngx-long-press2'; @@ -15,6 +16,7 @@ import { PrePublishModeComponent } from './pre-publish-mode/pre-publish-mode.com NgxLongPress2Module, NgCircleProgressModule.forRoot({}), JoyrideModule.forChild(), + AngularPinturaModule, ], providers: [CustomCameraService], declarations: [CustomCameraPage, PrePublishModeComponent], From e69e05d3b323054b33abc9850f7ea95324e1a89f Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Mon, 24 Oct 2022 16:39:32 +0800 Subject: [PATCH 06/14] use pintura image editor for photos before publish --- .../pre-publish-mode.component.html | 28 +++++- .../pre-publish-mode.component.scss | 31 ++++++- .../pre-publish-mode.component.ts | 92 ++++++++++++++++++- 3 files changed, 139 insertions(+), 12 deletions(-) diff --git a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.html b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.html index eadb07419..1611807c3 100644 --- a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.html +++ b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.html @@ -7,14 +7,32 @@ (click)="onConfirm()" class="confirm-button" mat-flat-button - *transloco="let t" + *ngIf="(isProcessingImage$ | ngrxPush) === false" > - {{ t('customCamera.confirmCapture') | uppercase }} + {{ 'customCamera.confirmCapture' | transloco }} -
- +
+ + +
+ +
- + diff --git a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss index 174d93691..2e4d27a2f 100644 --- a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss +++ b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss @@ -1,9 +1,29 @@ +$action-buttons-height: 48px; +// $action-buttons-padding-vertical: calc(var(--ion-safe-area-top) + 4px); +$action-buttons-padding-top: calc(var(--ion-safe-area-top) + 4px); +$action-buttons-padding-bottom: 4px; +$action-buttons-total-height: calc( + #{$action-buttons-height} + #{$action-buttons-padding-top} + #{$action-buttons-padding-bottom} +); + +$footer-height: 75px; +// $footer-padding-vertical: calc(var(--ion-safe-area-bottom) + 4px); +$footer-padding-top: 4px; +$footer-padding-bottom: calc(var(--ion-safe-area-bottom) + 4px); +$footer-total-height: calc( + #{$footer-height} + #{$footer-padding-top} + #{$footer-padding-bottom} +); + +$image-editor-container-height: calc( + 100vh - #{$action-buttons-total-height} - #{$footer-padding-bottom} +); + .action-buttons { position: absolute; top: 0; left: 0; right: 0; - padding: calc(var(--ion-safe-area-top) + 4px) 16px; + padding: $action-buttons-padding-top 16px $action-buttons-padding-bottom; background-color: black; display: flex; flex-direction: row; @@ -16,7 +36,7 @@ bottom: 0; left: 0; right: 0; - padding: calc(var(--ion-safe-area-bottom) + 4px) 16px; + padding: $footer-padding-top 16px $footer-padding-bottom; background-color: black; display: flex; flex-direction: row; @@ -44,11 +64,16 @@ overflow: auto; display: flex; flex-direction: column; - justify-content: center; + justify-content: flex-end; app-media { width: 100%; object-fit: cover; object-position: center; } + + .image-editor-container { + height: $image-editor-container-height; + width: 100vw; + } } diff --git a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.ts b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.ts index 1fea586aa..a5b247140 100644 --- a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.ts +++ b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.ts @@ -1,24 +1,108 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + Inject, + Input, + Output, +} from '@angular/core'; +import { FilesystemPlugin } from '@capacitor/filesystem'; +import { getEditorDefaults } from '@pqina/pintura'; +import { BehaviorSubject, combineLatest, EMPTY, of, ReplaySubject } from 'rxjs'; +import { catchError, filter, first, map, switchMap, tap } from 'rxjs/operators'; +import { FILESYSTEM_PLUGIN } from '../../../../shared/capacitor-plugins/capacitor-plugins.module'; +import { blobToBase64 } from '../../../../utils/encoding/encoding'; + +type CaptureMimeType = 'image/jpeg' | 'video/mp4'; @Component({ selector: 'app-pre-publish-mode', templateUrl: './pre-publish-mode.component.html', styleUrls: ['./pre-publish-mode.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class PrePublishModeComponent { + readonly pinturaEditorOptions: any = { ...getEditorDefaults() }; + + readonly curCaptureFilePath$ = new ReplaySubject(1); + + readonly curCaptureMimeType$ = new ReplaySubject(1); + + readonly curCaptureSrc$ = new ReplaySubject(1); + + readonly isProcessingImage$ = new BehaviorSubject(false); + + readonly isVideo$ = this.curCaptureMimeType$.pipe( + map(mimeType => mimeType === 'video/mp4') + ); + + readonly isImage$ = this.curCaptureMimeType$.pipe( + map(mimeType => mimeType === 'image/jpeg') + ); + + readonly curImageBase64$ = combineLatest([ + this.isImage$, + this.curCaptureFilePath$, + ]).pipe( + filter(([isImage, _]) => isImage), + switchMap(([_, path]) => this.filesystemPlugin.readFile({ path })), + map(result => `data:image/jpeg;base64,${result.data}`) + ); + @Input() - curCaptureFilePath?: string; + set curCaptureFilePath(value: string | undefined) { + if (value) this.curCaptureFilePath$.next(value); + } @Input() - curCaptureMimeType?: 'image/jpeg' | 'video/mp4'; + set curCaptureMimeType(value: CaptureMimeType | undefined) { + if (value) this.curCaptureMimeType$.next(value); + } @Input() - curCaptureSrc?: string; + set curCaptureSrc(value: string | undefined) { + if (value) this.curCaptureSrc$.next(value); + } @Output() discard: EventEmitter = new EventEmitter(); @Output() confirm: EventEmitter = new EventEmitter(); + constructor( + @Inject(FILESYSTEM_PLUGIN) + private readonly filesystemPlugin: FilesystemPlugin + ) {} + + handleEditorProcessStart() { + this.isProcessingImage$.next(true); + } + + handleEditorProcessAbort() { + this.isProcessingImage$.next(false); + } + + handelEditorProcessError() { + this.isProcessingImage$.next(false); + } + + async handleEditorProcess(imageWriterResult: any): Promise { + const base64 = await blobToBase64(imageWriterResult.dest as File); + + combineLatest([this.curCaptureFilePath$, of(base64)]) + .pipe( + first(), + switchMap(([path, data]) => + this.filesystemPlugin.writeFile({ path, data }) + ), + tap(() => this.isProcessingImage$.next(false)), + catchError(() => { + this.isProcessingImage$.next(false); + return EMPTY; + }) + ) + .subscribe(); + } + onDiscard() { this.discard.emit(null); } From f9c1286e838ffa24b19d05763cc23dee79b1fb11 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Mon, 24 Oct 2022 17:25:23 +0800 Subject: [PATCH 07/14] fix(global.scss): linting --- src/global.scss | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/global.scss b/src/global.scss index 13363a541..1a04557a0 100644 --- a/src/global.scss +++ b/src/global.scss @@ -171,12 +171,11 @@ body.dark .mat-tab-group { // styling for ngx-joyride END .pintura-editor { - --color-background: 0, 0, 0 !important; - --color-foreground: 255, 255, 255 !important; - - --color-primary: #486cd9 !important; - --color-primary-dark: #1a80ec !important; - --color-primary-text: #fff !important; - --color-secondary: #03a9f4 !important; - --color-secondary-dark: #046bbf !important; + --color-background: 0, 0, 0 !important; /* stylelint-disable-line declaration-no-important */ + --color-foreground: 255, 255, 255 !important; /* stylelint-disable-line declaration-no-important */ + --color-primary: #486cd9 !important; /* stylelint-disable-line declaration-no-important */ + --color-primary-dark: #1a80ec !important; /* stylelint-disable-line declaration-no-important */ + --color-primary-text: white !important; /* stylelint-disable-line declaration-no-important */ + --color-secondary: #03a9f4 !important; /* stylelint-disable-line declaration-no-important */ + --color-secondary-dark: #046bbf !important; /* stylelint-disable-line declaration-no-important */ } From 7d0fbd1b89e3d94dfe263bc49b1df826b033bdd7 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 15:22:19 +0800 Subject: [PATCH 08/14] fix(pre-publish-mode.components.sccs): linting --- .../pre-publish-mode/pre-publish-mode.component.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss index 2e4d27a2f..44811d3c9 100644 --- a/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss +++ b/src/app/features/home/custom-camera/pre-publish-mode/pre-publish-mode.component.scss @@ -1,5 +1,4 @@ $action-buttons-height: 48px; -// $action-buttons-padding-vertical: calc(var(--ion-safe-area-top) + 4px); $action-buttons-padding-top: calc(var(--ion-safe-area-top) + 4px); $action-buttons-padding-bottom: 4px; $action-buttons-total-height: calc( @@ -7,7 +6,6 @@ $action-buttons-total-height: calc( ); $footer-height: 75px; -// $footer-padding-vertical: calc(var(--ion-safe-area-bottom) + 4px); $footer-padding-top: 4px; $footer-padding-bottom: calc(var(--ion-safe-area-bottom) + 4px); $footer-total-height: calc( From d6346b46a2dac2c63a75bdf1fc66dfd78ec53541 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 15:53:08 +0800 Subject: [PATCH 09/14] add command to generate npmrc for pintura package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index b7607d36e..b1fcc22c3 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "ng": "ng", "preconfig": "node set-secret.js && node set-npmrc.js", + "preconfig.npmrc": "node set-npmrc.js", "serve": "npm run preconfig && ionic serve", "serve.prod": "npm run preconfig && ionic serve --configuration production", "build": "npm run preconfig && ionic build --configuration production", From c57cefb9a7263e2dd7676336b5640ad66f4799c6 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 16:29:27 +0800 Subject: [PATCH 10/14] add step: Generate .npmrc for pintura package --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1d1a694c..3dfd295c4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,9 @@ jobs: - name: Install Ionic CLI run: npm install -g @ionic/cli + - name: Generate .npmrc for pintura package + run: npm run preconfig.npmrc + - name: Install dependencies run: npm install @@ -55,6 +58,9 @@ jobs: - name: Install Ionic CLI run: npm install -g @ionic/cli + - name: Generate .npmrc for pintura package + run: npm run preconfig.npmrc + - name: Install dependencies run: npm install From 48a4284dc0607bd3539c0a305c35437389bed685 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 16:46:31 +0800 Subject: [PATCH 11/14] add(build.yml): NUMBERS_PQINA_NPM_KEY env var --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dfd295c4..90df72b7f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,6 +34,7 @@ jobs: NUMBERS_BUBBLE_IFRAME_URL: ${{ secrets.NUMBERS_BUBBLE_IFRAME_URL }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} APPS_FLYER_DEV_KEY: ${{ secrets.APPS_FLYER_DEV_KEY }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: npm run build - name: Build Android @@ -72,6 +73,7 @@ jobs: NUMBERS_BUBBLE_IFRAME_URL: ${{ secrets.NUMBERS_BUBBLE_IFRAME_URL }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} APPS_FLYER_DEV_KEY: ${{ secrets.APPS_FLYER_DEV_KEY }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: npm run build - name: Import the Code-Signing PKCS12 Certificate From ad5a6a6aad6f30a13249cd9ccbde8e318d79d5d3 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 16:52:29 +0800 Subject: [PATCH 12/14] add env var to "Generate .npmrc for pintura package" step --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90df72b7f..8636de7f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,8 @@ jobs: run: npm install -g @ionic/cli - name: Generate .npmrc for pintura package + env: + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: npm run preconfig.npmrc - name: Install dependencies @@ -60,6 +62,8 @@ jobs: run: npm install -g @ionic/cli - name: Generate .npmrc for pintura package + env: + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: npm run preconfig.npmrc - name: Install dependencies From 18f0c3565ed66cef41451f3048eb79e5f954b7a5 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 17:00:06 +0800 Subject: [PATCH 13/14] add(build-apks.yml): NUMBERS_PQINA_NPM_KEY env var --- .github/workflows/build-apks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-apks.yml b/.github/workflows/build-apks.yml index ac8b98d3c..60818dd58 100644 --- a/.github/workflows/build-apks.yml +++ b/.github/workflows/build-apks.yml @@ -55,6 +55,7 @@ jobs: NUMBERS_STORAGE_TRUSTED_CLIENT_KEY: ${{ secrets[matrix.storage_trusted_client_key] }} NUMBERS_BUBBLE_DB_URL: ${{ secrets[matrix.bubble_db_url] }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: | npm install -g @ionic/cli npm install From 56814dc0baf4dca1b95aa283b33b856b0c7e1b19 Mon Sep 17 00:00:00 2001 From: sultanmyrza Date: Tue, 25 Oct 2022 17:00:26 +0800 Subject: [PATCH 14/14] add(pre-release.yml): NUMBERS_PQINA_NPM_KEY env var --- .github/workflows/pre-release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 5a4fabe2a..0f5ab58f6 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -29,6 +29,7 @@ jobs: NUMBERS_BUBBLE_IFRAME_URL: ${{ secrets.NUMBERS_BUBBLE_IFRAME_URL_QA_RELEASE }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} APPS_FLYER_DEV_KEY: ${{ secrets.APPS_FLYER_DEV_KEY }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: | npm install -g @ionic/cli npm install @@ -98,6 +99,7 @@ jobs: NUMBERS_BUBBLE_IFRAME_URL: ${{ secrets.NUMBERS_BUBBLE_IFRAME_URL }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} APPS_FLYER_DEV_KEY: ${{ secrets.APPS_FLYER_DEV_KEY }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: | npm install -g @ionic/cli npm install @@ -172,6 +174,7 @@ jobs: NUMBERS_BUBBLE_IFRAME_URL: ${{ secrets.NUMBERS_BUBBLE_IFRAME_URL }} BUBBLE_API_URL: ${{ secrets.BUBBLE_API_URL }} APPS_FLYER_DEV_KEY: ${{ secrets.APPS_FLYER_DEV_KEY }} + NUMBERS_PQINA_NPM_KEY: ${{ secrets.NUMBERS_PQINA_NPM_KEY }} run: | npm install -g @ionic/cli npm install