From 271c432adc0961c0e88aa701196314a7b36d6039 Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Mon, 16 Dec 2019 08:17:51 +0100 Subject: [PATCH 1/3] feat: update dependencies --- cloud/functions/package-lock.json | 307 ++++++++++++++++++++---------- cloud/functions/package.json | 6 +- 2 files changed, 207 insertions(+), 106 deletions(-) diff --git a/cloud/functions/package-lock.json b/cloud/functions/package-lock.json index c51e8f3ab..8ba375794 100644 --- a/cloud/functions/package-lock.json +++ b/cloud/functions/package-lock.json @@ -25,47 +25,57 @@ } }, "@firebase/app-types": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.4.7.tgz", - "integrity": "sha512-4LnhDYsUhgxMBnCfQtWvrmMy9XxeZo059HiRbpt3ufdpUcZZOBDOouQdjkODwHLhcnNrB7LeyiqYpS2jrLT8Mw==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.5.0.tgz", + "integrity": "sha512-8j+vCXTpAkYGcFk86mPZ90V6HMFmn196RIEW9Opi0PN+VrPFC1l/eW0gptM8v7VXaQhECOxws3TN2g+dDaeSYA==" }, - "@firebase/database": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.11.tgz", - "integrity": "sha512-YEakG5uILYkZ3qEDU4F9pe1HyvPlPG2Zk1FJ5RN2Yt564lTNJTrnltRELoutWoSCAtgEUXEfiTDV+864qFSG9g==", + "@firebase/component": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.1.tgz", + "integrity": "sha512-e9MrCYH10+CvGyJsuntdqH+Gtkbvm33GBEPprKClq9Qh36gXZxtvlUPwXACJfaD34tqxFB2V0pGi7i8iJUA+AA==", "requires": { - "@firebase/database-types": "0.4.7", - "@firebase/logger": "0.1.29", - "@firebase/util": "0.2.32", + "@firebase/util": "0.2.36", + "tslib": "1.10.0" + } + }, + "@firebase/database": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.16.tgz", + "integrity": "sha512-m8qrt3irSiSkFP9i75nGWFasZFeFb5KAR6/fvWOoLMXQWE41LU7Z+osUaXWvGvPJxsoHD0EY+4+Blat4XiJx9g==", + "requires": { + "@firebase/component": "0.1.1", + "@firebase/database-types": "0.4.10", + "@firebase/logger": "0.1.33", + "@firebase/util": "0.2.36", "faye-websocket": "0.11.3", "tslib": "1.10.0" } }, "@firebase/database-types": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.7.tgz", - "integrity": "sha512-7UHZ0n6aj3sR5W4HsU18dysHMSIS6348xWTMypoA0G4mORaQSuleCSL6zJLaCosarDEojnncy06yW69fyFxZtA==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.10.tgz", + "integrity": "sha512-66puLsckt5HASgRN3CfhLn2iuGrgCjfH3u17OL0f5MtEweYLx+yW2QW5d539Wx30xD4B+INEdaRetw6xEa9t7g==", "requires": { - "@firebase/app-types": "0.4.7" + "@firebase/app-types": "0.5.0" } }, "@firebase/logger": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.29.tgz", - "integrity": "sha512-0GDGHT0eCskNMnDwB1Bx85lHzux9zrf7OJmG/0+kdVkQYFmqJpKwEJnb0mAxLVIVdhYmcYZXPBxUGnN/cQzHNQ==" + "version": "0.1.33", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.33.tgz", + "integrity": "sha512-EiewY1by3mYanihTa5Wsl2/gseFzmRmZr61YtVgQN5TXpX1OlQtqds6cCoR8Hh8VueeZJg6lTV9VLVQqu6iqHw==" }, "@firebase/util": { - "version": "0.2.32", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.32.tgz", - "integrity": "sha512-n5l1RDxzhQeLOFWRPdatyGt3ig1NLEmtO1wnG4x3Z5rOZAb09aBp+kYBu5HExJ4o6e+36lJ6l3nwdRnsJWaUlQ==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.36.tgz", + "integrity": "sha512-AqrXca+8rMbPyp7zMO9BoZrdbb8wsT5kmqwge9QW4ZBxTTSQrvBs7VylGx5Ede4VbhqRJvkmo7G73/dp2L+wbA==", "requires": { "tslib": "1.10.0" } }, "@google-cloud/common": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.2.3.tgz", - "integrity": "sha512-lvw54mGKn8VqVIy2NzAk0l5fntBFX4UwQhHk6HaqkyCQ7WBl5oz4XhzKMtMilozF/3ObPcDogqwuyEWyZ6rnQQ==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.2.5.tgz", + "integrity": "sha512-Iw6LJj7V8XEVFDORCHC/I+YVmK98KmZSa8z10O4h2Wpkzlk/Sjj8Ruz4QJHawj7GwuWjQQ47O2Z4JECXf1S3ag==", "optional": true, "requires": { "@google-cloud/projectify": "^1.0.0", @@ -80,9 +90,9 @@ } }, "@google-cloud/firestore": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-2.6.0.tgz", - "integrity": "sha512-5bpC7KZA+dCc+4Byp9yA7uvmM1kmVaXm6QiSQbf2Zz/rWftTr0N23f+5BKe9OXyY/nT44l2ygZjmP4Aw3ngLFg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-2.6.1.tgz", + "integrity": "sha512-ZzjaNn8TLji2HpC/h4uDuOb+h7lf1YCiNRiHhLkCUuEp+xAt1uPAkLFLAamGYW26v9VIe+9H/3l27pkplFsybQ==", "optional": true, "requires": { "bun": "^0.0.12", @@ -93,9 +103,9 @@ } }, "@google-cloud/paginator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.1.tgz", - "integrity": "sha512-HZ6UTGY/gHGNriD7OCikYWL/Eu0sTEur2qqse2w6OVsz+57se3nTkqH14JIPxtf0vlEJ8IJN5w3BdZ22pjCB8g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz", + "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==", "optional": true, "requires": { "arrify": "^2.0.0", @@ -103,21 +113,21 @@ } }, "@google-cloud/projectify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.1.tgz", - "integrity": "sha512-xknDOmsMgOYHksKc1GPbwDLsdej8aRNIA17SlSZgQdyrcC0lx0OGo4VZgYfwoEU1YS8oUxF9Y+6EzDOb0eB7Xg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz", + "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==", "optional": true }, "@google-cloud/promisify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.2.tgz", - "integrity": "sha512-7WfV4R/3YV5T30WRZW0lqmvZy9hE2/p9MvpI34WuKa2Wz62mLu5XplGTFEMK6uTbJCLWUxTcZ4J4IyClKucE5g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz", + "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==", "optional": true }, "@google-cloud/storage": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-3.5.0.tgz", - "integrity": "sha512-QxJ/zft4Kxbedpu7MQ5ZsNeS5WbonB7H28T32R4hQO2ply/j6n7bXmd5Vz0kzJu/iub20sK/ibgxYoxrgZD6CQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.1.3.tgz", + "integrity": "sha512-79Ag+4eQq+KFJcKB85AimepoqTJOGuDLAmJd7JkLc8NM12a87JTCoGi65oi1eZ4H77AV0uUQxSS2Fo/hZL3+kQ==", "optional": true, "requires": { "@google-cloud/common": "^2.1.1", @@ -126,12 +136,12 @@ "arrify": "^2.0.0", "compressible": "^2.0.12", "concat-stream": "^2.0.0", - "date-and-time": "^0.10.0", + "date-and-time": "^0.11.0", "duplexify": "^3.5.0", "extend": "^3.0.2", "gaxios": "^2.0.1", "gcs-resumable-upload": "^2.2.4", - "hash-stream-validation": "^0.2.1", + "hash-stream-validation": "^0.2.2", "mime": "^2.2.0", "mime-types": "^2.0.8", "onetime": "^5.1.0", @@ -167,9 +177,9 @@ } }, "@grpc/grpc-js": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.6.9.tgz", - "integrity": "sha512-r1nDOEEiYmAsVYBaS4DPPqdwPOXPw7YhVOnnpPdWhlNtKbYzPash6DqWTTza9gBiYMA5d2Wiq6HzrPqsRaP4yA==", + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.6.14.tgz", + "integrity": "sha512-M6q3MtHzk0NQPs1PB+SXSJtkDtK8WXJh+1B1WVJQp5HTURadzj9t1bUb/Fjhq+K57lKsOgL60r8WGmE7vks1eg==", "optional": true, "requires": { "semver": "^6.2.0" @@ -302,9 +312,9 @@ "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==" }, "@types/puppeteer": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.20.2.tgz", - "integrity": "sha512-oSFCtftHSfVx8K9XPdNNYs79Zt4pYJs/0NP78ltuGCB25zS3UNGJSiypBfbhbvRC5Dcsh0k1R5Z0i8HHtqQUPQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-2.0.0.tgz", + "integrity": "sha512-QPHXIcaPcijMbvizoM7PRL97Rm+aM8J2DmgTz2tt79b15PqbyeaCppYonvPLHQ/Q5ea92BUHDpv4bsqtiTy8kQ==", "dev": true, "requires": { "@types/node": "*" @@ -695,9 +705,9 @@ } }, "date-and-time": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.10.0.tgz", - "integrity": "sha512-IbIzxtvK80JZOVsWF6+NOjunTaoFVYxkAQoyzmflJyuRCJAJebehy48mPiCAedcGp4P7/UO3QYRWa0fe6INftg==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.11.1.tgz", + "integrity": "sha512-+1JkWME+UWRpCfvE1T0Vfbw629Ego0IcfHH0qtP4KhAXs7IJT2qsg1hNePqZhyD8Wby46HlW393lSL5PZSzDsA==", "optional": true }, "debug": { @@ -709,9 +719,9 @@ } }, "deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "optional": true, "requires": { "is-arguments": "^1.0.4", @@ -861,6 +871,36 @@ "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "optional": true }, + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "optional": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "optional": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -1106,13 +1146,13 @@ } }, "firebase-admin": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-8.7.0.tgz", - "integrity": "sha512-mAp/58ZHbZHGPlSe8JDyELOT6DAWGUv9N3pA6d+Sg5RS5H3I1xGnKkhXK9BMJsejUfA3mwOqFPMLD4yso7aFxw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-8.8.0.tgz", + "integrity": "sha512-IKtyL7doZu3Sh3pCz+O7vFWc/UwxEfXe263X/bPbucu/qEsM+5UdljIklnInSMunO+A1BUXKtsKkQf91iZQ2Ew==", "requires": { - "@firebase/database": "^0.5.1", - "@google-cloud/firestore": "^2.0.0", - "@google-cloud/storage": "^3.0.2", + "@firebase/database": "^0.5.11", + "@google-cloud/firestore": "^2.6.0", + "@google-cloud/storage": "^4.1.2", "@types/node": "^8.0.53", "dicer": "^0.3.0", "jsonwebtoken": "8.1.0", @@ -1206,9 +1246,9 @@ "optional": true }, "gaxios": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.1.0.tgz", - "integrity": "sha512-Gtpb5sdQmb82sgVkT2GnS2n+Kx4dlFwbeMYcDlD395aEvsLCSQXJJcHt7oJ2LrGxDEAeiOkK79Zv2A8Pzt6CFg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.2.0.tgz", + "integrity": "sha512-54Y7s3yvtEO9CZ0yBVQHI5fzS7TzkjlnuLdDEkeyL1SNYMv877VofvA56E/C3dvj3rS7GFiyMWl833Qrr+nrkg==", "optional": true, "requires": { "abort-controller": "^3.0.0", @@ -1219,9 +1259,9 @@ } }, "gcp-metadata": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.2.1.tgz", - "integrity": "sha512-JjDedBWnbXVXWwTpjBdpb9RpVLiowXG4/50rra4hPH8REXAi2si6Xbb48B2SwkQBLz9Wu6+o32GDTvVy2kkLoQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.2.3.tgz", + "integrity": "sha512-6C/lE8rQY0zBsfTobc0OtNLNwQZmJ9d1uy+snawT2V0MN9V8KsbncNVZJxIrdrV5xuDRi0x0ppzBuUHzA22oAA==", "optional": true, "requires": { "gaxios": "^2.1.0", @@ -1229,9 +1269,9 @@ } }, "gcs-resumable-upload": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.0.tgz", - "integrity": "sha512-PclXJiEngrVx0c4K0LfE1XOxhmOkBEy39Rrhspdn6jAbbwe4OQMZfjo7Z1LHBrh57+bNZeIN4M+BooYppCoHSg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.2.tgz", + "integrity": "sha512-OPS0iAmPCV+r7PziOIhyxmQOzsazFCy76yYDOS/Z80O/7cuny1KMfqDQa2T0jLaL8EreTU7EMZG5pUuqBKgzHA==", "optional": true, "requires": { "abort-controller": "^3.0.0", @@ -1264,9 +1304,9 @@ } }, "google-auth-library": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.5.1.tgz", - "integrity": "sha512-zCtjQccWS/EHYyFdXRbfeSGM/gW+d7uMAcVnvXRnjBXON5ijo6s0nsObP0ifqileIDSbZjTlLtgo+UoN8IFJcg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.7.0.tgz", + "integrity": "sha512-uclMldsQNf64Qr67O8TINdnqbU/Ixv81WryX+sF9g7uP0igJ98aCR/uU399u1ABLa53LNsyji+bo+bP8/iL9dA==", "optional": true, "requires": { "arrify": "^2.0.0", @@ -1280,13 +1320,14 @@ } }, "google-gax": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.8.0.tgz", - "integrity": "sha512-gDlL1mcyMSde7guPVzwpWi9V8XP+4F8UwFKoUiINEGRDNDbEj18OorL016XU0Kyt8Aizcf5dgb3q8UKegYAOmQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.12.0.tgz", + "integrity": "sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg==", "optional": true, "requires": { - "@grpc/grpc-js": "0.6.9", + "@grpc/grpc-js": "^0.6.12", "@grpc/proto-loader": "^0.5.1", + "@types/long": "^4.0.0", "abort-controller": "^3.0.0", "duplexify": "^3.6.0", "google-auth-library": "^5.0.0", @@ -1301,9 +1342,9 @@ } }, "google-p12-pem": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.2.tgz", - "integrity": "sha512-UfnEARfJKI6pbmC1hfFFm+UAcZxeIwTiEcHfqKe/drMsXD/ilnVjF7zgOGpHXyhuvX6jNJK3S8A0hOQjwtFxEw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.3.tgz", + "integrity": "sha512-Tq2kBCANxYYPxaBpTgCpRfdoPs9+/lNzc/Iaee4kuMVW5ascD+HwhpBsTLwH85C9Ev4qfB8KKHmpPQYyD2vg2w==", "optional": true, "requires": { "node-forge": "^0.9.0" @@ -1324,9 +1365,9 @@ "optional": true }, "gtoken": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.1.tgz", - "integrity": "sha512-2FEmEDGi4NdM6u+mtaLjSDDtHiw5wT+nBsI+yrSeFO6fVqPEytYVF6uiIpRaOaZhRP+ozjYWuwwtMlrjAyTcYA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.3.tgz", + "integrity": "sha512-ofW+FiXjswyKdkjMcDbe6E4K7cDDdE82dGDhZIc++kUECqaE7MSErf6arJPAjcnYn1qxE1/Ti06qQuqgVusovQ==", "optional": true, "requires": { "gaxios": "^2.1.0", @@ -1364,6 +1405,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "optional": true + }, "hash-stream-validation": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.2.tgz", @@ -1530,6 +1577,12 @@ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "optional": true }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "optional": true + }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", @@ -1543,12 +1596,12 @@ "optional": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "optional": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-stream": { @@ -1563,6 +1616,15 @@ "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", "optional": true }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "optional": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -1880,10 +1942,16 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "optional": true + }, "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", "optional": true }, "object-keys": { @@ -1892,6 +1960,18 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "optional": true }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "optional": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -1995,9 +2075,9 @@ }, "dependencies": { "@types/node": { - "version": "10.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.5.tgz", - "integrity": "sha512-RElZIr/7JreF1eY6oD5RF3kpmdcreuQPjg5ri4oQ5g9sq7YWU8HkfB3eH8GwAwxf5OaCh0VPi7r4N/yoTGelrA==", + "version": "10.17.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.9.tgz", + "integrity": "sha512-+6VygF9LbG7Gaqeog2G7u1+RUcmo0q1rI+2ZxdIg2fAUngk5Vz9fOCHXdloNUOHEPd1EuuOpL5O0CdgN9Fx5UQ==", "optional": true } } @@ -2140,12 +2220,13 @@ } }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "optional": true, "requires": { - "define-properties": "^1.1.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "request": { @@ -2348,9 +2429,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "optional": true }, "streamsearch": { @@ -2358,6 +2439,26 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "optional": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "optional": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -2394,9 +2495,9 @@ } }, "teeny-request": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-5.3.1.tgz", - "integrity": "sha512-hnUeun3xryzv92FbrnprltcdeDfSVaGFBlFPRvKJ2fO/ioQx9N0aSUbbXSfTO+ArRXine1gSWdWFWcgfrggWXw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-5.3.2.tgz", + "integrity": "sha512-5cse2cocD8Drq0uYN7NPcQ/6qbrxH6Kp0TlNLP+Y5f0twEkGtIg0ti8HoYF2LCC2TO5IkK/I9/Xs38/rDvs5UA==", "optional": true, "requires": { "http-proxy-agent": "^2.1.0", @@ -2538,9 +2639,9 @@ } }, "typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", - "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.3.tgz", + "integrity": "sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw==", "dev": true }, "unique-string": { diff --git a/cloud/functions/package.json b/cloud/functions/package.json index 7f10a3960..f02d01457 100644 --- a/cloud/functions/package.json +++ b/cloud/functions/package.json @@ -12,15 +12,15 @@ }, "main": "lib/index.js", "dependencies": { - "firebase-admin": "^8.7.0", + "firebase-admin": "^8.8.0", "firebase-functions": "^3.3.0", "mailchimp-api-v3": "^1.13.1", "puppeteer": "^2.0.0" }, "devDependencies": { - "@types/puppeteer": "^1.20.2", + "@types/puppeteer": "^2.0.0", "tslint": "^5.20.1", - "typescript": "^3.2.2" + "typescript": "^3.7.3" }, "private": true, "engines": { From c5e6d03b6fdd1118c82dd7fd63723363d287bae4 Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Mon, 16 Dec 2019 09:24:15 +0100 Subject: [PATCH 2/3] feat: send an info when a new deck is published --- cloud/functions/package-lock.json | 14 +++ cloud/functions/package.json | 2 + .../src/watch/info/info-deck-publish.ts | 91 +++++++++++++++++++ cloud/functions/src/watch/watch-deck.ts | 2 + 4 files changed, 109 insertions(+) create mode 100644 cloud/functions/src/watch/info/info-deck-publish.ts diff --git a/cloud/functions/package-lock.json b/cloud/functions/package-lock.json index 8ba375794..71c6df3e8 100644 --- a/cloud/functions/package-lock.json +++ b/cloud/functions/package-lock.json @@ -311,6 +311,15 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz", "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==" }, + "@types/nodemailer": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.2.2.tgz", + "integrity": "sha512-vDbSSe3+bBXYgibKs8duOrH7bhAv1hMHl3Vtdr3KmXZWLfi5WtIg3X6D/+K4SMK1RbNlm5QZBQCOldST/sVjjg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/puppeteer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-2.0.0.tgz", @@ -1932,6 +1941,11 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" }, + "nodemailer": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.2.tgz", + "integrity": "sha512-g0n4nH1ONGvqYo1v72uSWvF/MRNnnq1LzmSzXb/6EPF3LFb51akOhgG3K2+aETAsJx90/Q5eFNTntu4vBCwyQQ==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", diff --git a/cloud/functions/package.json b/cloud/functions/package.json index f02d01457..e25b42e2c 100644 --- a/cloud/functions/package.json +++ b/cloud/functions/package.json @@ -15,9 +15,11 @@ "firebase-admin": "^8.8.0", "firebase-functions": "^3.3.0", "mailchimp-api-v3": "^1.13.1", + "nodemailer": "^6.4.2", "puppeteer": "^2.0.0" }, "devDependencies": { + "@types/nodemailer": "^6.2.2", "@types/puppeteer": "^2.0.0", "tslint": "^5.20.1", "typescript": "^3.7.3" diff --git a/cloud/functions/src/watch/info/info-deck-publish.ts b/cloud/functions/src/watch/info/info-deck-publish.ts new file mode 100644 index 000000000..0219e5ea7 --- /dev/null +++ b/cloud/functions/src/watch/info/info-deck-publish.ts @@ -0,0 +1,91 @@ +import * as functions from 'firebase-functions'; +import {DocumentSnapshot} from 'firebase-functions/lib/providers/firestore'; + +import * as nodemailer from 'nodemailer'; + +import {DeckData} from '../../model/deck'; +import * as Mail from 'nodemailer/lib/mailer'; +import {Resources} from '../../utils/resources'; + +export async function infoDeckPublish(change: functions.Change) { + const newValue: DeckData = change.after.data() as DeckData; + + const previousValue: DeckData = change.before.data() as DeckData; + + if (!newValue || !newValue.meta || !newValue.meta.published || !newValue.meta.pathname) { + return; + } + + if (!newValue.owner_id || newValue.owner_id === undefined || newValue.owner_id === '') { + return; + } + + const publish: boolean = await isFirstTimePublished(previousValue, newValue); + + if (!publish) { + return; + } + + try { + await sendInfo(change.after.id, newValue); + } catch (err) { + console.error(err); + } +} + +function isFirstTimePublished(previousValue: DeckData, newValue: DeckData): Promise { + return new Promise((resolve) => { + if (!previousValue || !newValue) { + resolve(false); + return; + } + + resolve(!previousValue.meta && newValue.meta && newValue.meta.published); + }); +} + +function sendInfo(deckId: string, deckData: DeckData): Promise { + return new Promise(async (resolve, reject) => { + try { + const mailFrom: string = functions.config().info.mail.from; + const mailPwd: string = functions.config().info.mail.pwd; + const mailTo: string = functions.config().info.mail.to; + const mailHost: string = functions.config().info.mail.host; + + let deckUrl: string = 'Unknown'; + if (deckData && deckData.meta && deckData.meta.pathname) { + let pathname: string = deckData.meta.pathname; + pathname += pathname.endsWith('/') ? '' : '/'; + + deckUrl = Resources.Constants.PRESENTATION.URL + pathname; + } + + const mailOptions = { + from: mailFrom, + to: mailTo, + subject: 'DeckDeckGo: New published deck', + html: `

${deckData.meta ? deckData.meta.title : 'Unknown title'}

+

Deck: ${deckId}

+

Url: ${deckUrl}

+ ` + }; + + const transporter: Mail = nodemailer.createTransport({ + host: mailHost, + port: 587, + secure: false, // STARTTLS + auth: { + type: 'LOGIN', + user: mailFrom, + pass: mailPwd + } + }); + + await transporter.sendMail(mailOptions); + + resolve(); + } catch (err) { + reject(err); + } + }); +} diff --git a/cloud/functions/src/watch/watch-deck.ts b/cloud/functions/src/watch/watch-deck.ts index 6204b86d6..3a10e8dee 100644 --- a/cloud/functions/src/watch/watch-deck.ts +++ b/cloud/functions/src/watch/watch-deck.ts @@ -2,10 +2,12 @@ import {Change, EventContext} from 'firebase-functions'; import {DocumentSnapshot} from 'firebase-functions/lib/providers/firestore'; import {generateDeckScreenshot} from './screenshot/generate-deck-screenshot'; +import {infoDeckPublish} from './info/info-deck-publish'; import {deleteDeckSlides} from './delete/delete-deck-slides'; export async function applyWatchDeckUpdate(change: Change, context: EventContext) { await generateDeckScreenshot(change); + await infoDeckPublish(change); } export async function applyWatchDeckDelete(snapshot: DocumentSnapshot, context: EventContext) { From 8ebe66edccfaac4a62813648e4f4ad00530f4ccd Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Mon, 16 Dec 2019 09:29:27 +0100 Subject: [PATCH 3/3] release: cloud v1.0.0-rc.3 --- CHANGELOG.md | 6 ++++++ cloud/CHANGELOG.md | 7 +++++++ cloud/functions/package-lock.json | 2 +- cloud/functions/package.json | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b4606ede..79f1dcc79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ + +# [1.0.0-rc.20](https://github.com/deckgo/deckdeckgo/compare/v1.0.0-rc.19...v1.0.0-rc.20) (In progress) + +### Others +* cloud: v1.0.0-rc.3 ([CHANGELOG](https://github.com/deckgo/deckdeckgo/blob/master/cloud/CHANGELOG.md)) + # [1.0.0-rc.19](https://github.com/deckgo/deckdeckgo/compare/v1.0.0-rc.18...v1.0.0-rc.19) (2019-12-13) diff --git a/cloud/CHANGELOG.md b/cloud/CHANGELOG.md index 61101f3ba..f8d769c68 100644 --- a/cloud/CHANGELOG.md +++ b/cloud/CHANGELOG.md @@ -1,3 +1,10 @@ + +# 1.0.0-rc.3 (2019-12-16) + +### Features + +* send an information per email when a new deck is published + # 1.0.0-rc.2 (2019-11-10) diff --git a/cloud/functions/package-lock.json b/cloud/functions/package-lock.json index 71c6df3e8..2871cbc5a 100644 --- a/cloud/functions/package-lock.json +++ b/cloud/functions/package-lock.json @@ -1,6 +1,6 @@ { "name": "functions", - "version": "1.0.0-rc.2", + "version": "1.0.0-rc.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cloud/functions/package.json b/cloud/functions/package.json index e25b42e2c..83a3d2c34 100644 --- a/cloud/functions/package.json +++ b/cloud/functions/package.json @@ -1,6 +1,6 @@ { "name": "functions", - "version": "1.0.0-rc.2", + "version": "1.0.0-rc.3", "scripts": { "lint": "tslint --project tsconfig.json", "build": "tsc",