From 060b5f93cab4e35a0798e85ea198c4051d0b6c47 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Sat, 19 Nov 2022 17:19:07 +0200 Subject: [PATCH] Reduced bundle size and updates packages --- app/.meteor/packages | 24 +- app/.meteor/release | 2 +- app/.meteor/versions | 56 +- app/imports/api/files/s3FileStorage.js | 34 +- app/imports/api/files/server/s3.js | 2 + app/imports/api/sharing/sharingPermissions.js | 12 +- .../character/characterSheetTabs/StatsTab.vue | 1 + app/imports/ui/dialogStack/DialogStack.vue | 2 - app/imports/ui/vuetify.js | 3 +- app/package-lock.json | 512 +++--------------- app/package.json | 26 +- 11 files changed, 166 insertions(+), 508 deletions(-) create mode 100644 app/imports/api/files/server/s3.js diff --git a/app/.meteor/packages b/app/.meteor/packages index dc62173e..ff36c66b 100644 --- a/app/.meteor/packages +++ b/app/.meteor/packages @@ -4,27 +4,27 @@ # but you can also edit it by hand. accounts-password@2.3.1 -random@1.2.0 -underscore@1.0.10 +random@1.2.1 +underscore@1.0.11 dburles:mongo-collection-instances accounts-google@1.4.0 -email@2.2.1 +email@2.2.2 meteor-base@1.5.1 mobile-experience@1.1.0 -mongo@1.16.0 -session@1.2.0 -tracker@1.2.0 +mongo@1.16.1 +session@1.2.1 +tracker@1.2.1 logging@1.3.1 reload@1.3.1 -ejson@1.1.2 -check@1.3.1 +ejson@1.1.3 +check@1.3.2 standard-minifier-js@2.8.1 shell-server@0.5.0 -ecmascript@0.16.2 +ecmascript@0.16.3 es5-shim@4.8.0 -service-configuration@1.3.0 +service-configuration@1.3.1 dynamic-import@0.7.2 -ddp-rate-limiter@1.1.0 +ddp-rate-limiter@1.1.1 rate-limit@1.0.9 mdg:validated-method static-html@1.3.2 @@ -37,7 +37,6 @@ simple:rest simple:rest-method-mixin mikowals:batch-insert peerlibrary:subscription-data -seba:minifiers-autoprefixer zer0th:meteor-vuetify-loader akryum:vue-component akryum:vue-router2 @@ -49,3 +48,4 @@ simple:rest-json-error-handler littledata:synced-cron mdg:meteor-apm-agent typescript@4.5.4 +seba:minifiers-autoprefixer diff --git a/app/.meteor/release b/app/.meteor/release index 1d2a6d0f..42890181 100644 --- a/app/.meteor/release +++ b/app/.meteor/release @@ -1 +1 @@ -METEOR@2.8.0 +METEOR@2.8.1 diff --git a/app/.meteor/versions b/app/.meteor/versions index b9f87f06..3f632f0b 100644 --- a/app/.meteor/versions +++ b/app/.meteor/versions @@ -1,4 +1,4 @@ -accounts-base@2.2.4 +accounts-base@2.2.5 accounts-google@1.4.0 accounts-oauth@1.4.1 accounts-password@2.3.1 @@ -22,26 +22,26 @@ bozhao:link-accounts@2.6.1 caching-compiler@1.2.2 caching-html-compiler@1.2.1 callback-hook@1.4.0 -check@1.3.1 +check@1.3.2 coffeescript@2.4.1 coffeescript-compiler@2.4.1 dburles:mongo-collection-instances@0.3.6 -ddp@1.4.0 -ddp-client@2.6.0 +ddp@1.4.1 +ddp-client@2.6.1 ddp-common@1.4.0 -ddp-rate-limiter@1.1.0 +ddp-rate-limiter@1.1.1 ddp-server@2.6.0 -diff-sequence@1.1.1 +diff-sequence@1.1.2 dynamic-import@0.7.2 -ecmascript@0.16.2 +ecmascript@0.16.3 ecmascript-runtime@0.8.0 ecmascript-runtime-client@0.12.1 ecmascript-runtime-server@0.11.0 -ejson@1.1.2 -email@2.2.1 +ejson@1.1.3 +email@2.2.2 es5-shim@4.8.0 -fetch@0.1.1 -geojson-utils@1.0.10 +fetch@0.1.2 +geojson-utils@1.0.11 google-oauth@1.4.2 hot-code-push@1.0.4 html-tools@1.1.3 @@ -57,7 +57,7 @@ localstorage@1.2.0 logging@1.3.1 mdg:meteor-apm-agent@3.5.1 mdg:validated-method@1.2.0 -meteor@1.10.1 +meteor@1.10.2 meteor-base@1.5.1 meteortesting:browser-tests@1.3.5 meteortesting:mocha@2.0.3 @@ -68,20 +68,20 @@ minifier-js@2.7.5 minimongo@1.9.0 mobile-experience@1.1.0 mobile-status-bar@1.1.0 -modern-browsers@0.1.8 +modern-browsers@0.1.9 modules@0.19.0 -modules-runtime@0.13.0 -mongo@1.16.0 +modules-runtime@0.13.1 +mongo@1.16.1 mongo-decimal@0.1.3 mongo-dev-server@1.1.0 mongo-id@1.0.8 mongo-livedata@1.0.12 -npm-mongo@4.9.0 +npm-mongo@4.11.0 oauth@2.1.2 oauth2@1.3.1 ordered-dict@1.1.0 ostrio:cookies@2.7.2 -ostrio:files@2.3.0 +ostrio:files@2.3.2 patreon-oauth@0.1.0 peerlibrary:assert@0.3.0 peerlibrary:check-extension@0.7.0 @@ -93,20 +93,20 @@ peerlibrary:reactive-mongo@0.4.1 peerlibrary:reactive-publish@0.10.0 peerlibrary:server-autorun@0.8.0 peerlibrary:subscription-data@0.8.0 -percolate:migrations@1.0.3 -promise@0.12.0 +percolate:migrations@1.1.0 +promise@0.12.1 raix:eventemitter@1.0.0 -random@1.2.0 +random@1.2.1 rate-limit@1.0.9 react-fast-refresh@0.2.3 -reactive-dict@1.3.0 -reactive-var@1.0.11 +reactive-dict@1.3.1 +reactive-var@1.0.12 reload@1.3.1 retry@1.1.0 routepolicy@1.1.1 seba:minifiers-autoprefixer@2.0.1 -service-configuration@1.3.0 -session@1.2.0 +service-configuration@1.3.1 +session@1.2.1 sha@1.0.9 shell-server@0.5.0 simple:json-routes@2.3.1 @@ -120,10 +120,10 @@ standard-minifier-js@2.8.1 static-html@1.3.2 templating-tools@1.2.2 tmeasday:check-npm-versions@1.0.2 -tracker@1.2.0 +tracker@1.2.1 typescript@4.5.4 -underscore@1.0.10 +underscore@1.0.11 url@1.3.2 -webapp@1.13.1 -webapp-hashing@1.1.0 +webapp@1.13.2 +webapp-hashing@1.1.1 zer0th:meteor-vuetify-loader@0.1.41 diff --git a/app/imports/api/files/s3FileStorage.js b/app/imports/api/files/s3FileStorage.js index 3c3c540e..7103d044 100644 --- a/app/imports/api/files/s3FileStorage.js +++ b/app/imports/api/files/s3FileStorage.js @@ -4,7 +4,9 @@ import { each, clone } from 'lodash'; import { Random } from 'meteor/random'; import { FilesCollection } from 'meteor/ostrio:files'; import stream from 'stream'; -import S3 from 'aws-sdk/clients/s3'; +if (Meteor.isServer) { + import S3 from '/imports/api/files/server/s3.js'; +} /* See fs-extra and graceful-fs NPM packages */ /* For better i/o performance */ @@ -21,7 +23,7 @@ Meteor.settings.useS3 = !!( s3Conf && s3Conf.key && s3Conf.secret && s3Conf.bucket && s3Conf.endpoint ); -const bound = Meteor.bindEnvironment((callback) => { +const bound = Meteor.bindEnvironment((callback) => { return callback(); }); @@ -43,14 +45,14 @@ if (Meteor.isServer && Meteor.settings.useS3) { } }); - createS3FilesCollection = function({ + createS3FilesCollection = function ({ collectionName, storagePath, onBeforeUpload, onAfterUpload, debug = !Meteor.isProduction, allowClientCode = false, - }){ + }) { const collection = new FilesCollection({ collectionName, storagePath, @@ -58,7 +60,7 @@ if (Meteor.isServer && Meteor.settings.useS3) { onAfterUpload(fileRef) { // Call the provided afterUpload hook first onAfterUpload?.(fileRef); - + // Start moving files to AWS:S3 // after fully received by the Meteor server @@ -128,19 +130,19 @@ if (Meteor.isServer && Meteor.settings.useS3) { }; if (http.request.headers.range) { - const vRef = fileRef.versions[version]; - let range = clone(http.request.headers.range); + const vRef = fileRef.versions[version]; + let range = clone(http.request.headers.range); const array = range.split(/bytes=([0-9]*)-([0-9]*)/); const start = parseInt(array[1]); - let end = parseInt(array[2]); + let end = parseInt(array[2]); if (isNaN(end)) { // Request data from AWS:S3 by small chunks - end = (start + this.chunkSize) - 1; + end = (start + this.chunkSize) - 1; if (end >= vRef.size) { - end = vRef.size - 1; + end = vRef.size - 1; } } - opts.Range = `bytes=${start}-${end}`; + opts.Range = `bytes=${start}-${end}`; http.request.headers.range = `bytes=${start}-${end}`; } @@ -198,9 +200,9 @@ if (Meteor.isServer && Meteor.settings.useS3) { _origRemove.call(this, search); }; - collection.readJSONFile = async function(file){ + collection.readJSONFile = async function (file) { // If there is the pipepath, use s3 to get the file - if (file?.versions?.original?.meta?.pipePath){ + if (file?.versions?.original?.meta?.pipePath) { const path = file.versions.original.meta.pipePath; const data = await s3.getObject({ Bucket: s3Conf.bucket, @@ -217,14 +219,14 @@ if (Meteor.isServer && Meteor.settings.useS3) { return collection; } } else { - createS3FilesCollection = function({ + createS3FilesCollection = function ({ collectionName, storagePath, onBeforeUpload, onAfterUpload, debug = !Meteor.isProduction, allowClientCode = false, - }){ + }) { const collection = new FilesCollection({ collectionName, storagePath, @@ -236,7 +238,7 @@ if (Meteor.isServer && Meteor.settings.useS3) { if (Meteor.isServer) { // Use the normal file system to read files - collection.readJSONFile = async function(file){ + collection.readJSONFile = async function (file) { const fileString = await fsp.readFile(file.path, 'utf8'); return JSON.parse(fileString); }; diff --git a/app/imports/api/files/server/s3.js b/app/imports/api/files/server/s3.js new file mode 100644 index 00000000..83719fa6 --- /dev/null +++ b/app/imports/api/files/server/s3.js @@ -0,0 +1,2 @@ +import S3 from 'aws-sdk/clients/s3'; +export default S3; diff --git a/app/imports/api/sharing/sharingPermissions.js b/app/imports/api/sharing/sharingPermissions.js index 5591c59c..c01675f4 100644 --- a/app/imports/api/sharing/sharingPermissions.js +++ b/app/imports/api/sharing/sharingPermissions.js @@ -1,4 +1,4 @@ -import { _ } from 'meteor/underscore'; +import { includes } from 'lodash'; import fetchDocByRef from '/imports/api/parenting/fetchDocByRef.js'; function assertIdValid(userId) { @@ -50,7 +50,7 @@ export function assertEditPermission(doc, userId) { // Ensure the user is authorized for this specific document if ( doc.owner === userId || - _.contains(doc.writers, userId) + includes(doc.writers, userId) ) { return true; } else { @@ -82,11 +82,11 @@ export function assertCopyPermission(doc, userId) { // Ensure the user is authorized for this specific document if ( doc.owner === userId || - _.contains(doc.writers, userId) + includes(doc.writers, userId) ) { return true; } else if ( - (_.contains(doc.readers, userId) || doc.public) && + (includes(doc.readers, userId) || doc.public) && doc.readersCanCopy ) { return true; @@ -134,8 +134,8 @@ export function assertViewPermission(doc, userId) { if ( doc.owner === userId || - _.contains(doc.readers, userId) || - _.contains(doc.writers, userId) + includes(doc.readers, userId) || + includes(doc.writers, userId) ) { return true; } else { diff --git a/app/imports/ui/creature/character/characterSheetTabs/StatsTab.vue b/app/imports/ui/creature/character/characterSheetTabs/StatsTab.vue index 78847e45..ac9b3711 100644 --- a/app/imports/ui/creature/character/characterSheetTabs/StatsTab.vue +++ b/app/imports/ui/creature/character/characterSheetTabs/StatsTab.vue @@ -1,5 +1,6 @@