Every subscription add/change/remove recomputed the full geo union
over all 7k+ subscriptions with a synchronous turf.union chain,
freezing the single Node event loop (and thus DDP/HTTP) for minutes.
The same recompute also runs at startup ("Subs union outdated"),
so every restart froze the site too.
calcUnionAsync yields to the event loop periodically during the
union chain, and subsUnion.js now fires recomputes without blocking
Meteor.startup or the observer callbacks, serializing overlapping
triggers instead of stacking them.
167 lines
4.4 KiB
JSON
167 lines
4.4 KiB
JSON
{
|
|
"name": "tcef",
|
|
"private": true,
|
|
"scripts": {
|
|
"start": "QT_QPA_PLATFORM='' MONGO_URL=mongodb://fuegos:fuegos@localhost:27017/fuegos meteor --settings settings-development.json",
|
|
"test": "meteor test --once --driver-package meteortesting:mocha --settings settings-development.json --port 3100",
|
|
"test-watch": "TEST_WATCH=1 meteor test --driver-package meteortesting:mocha --settings settings-development.json --port 3100"
|
|
},
|
|
"dependencies": {
|
|
"@babel/runtime": "^7.29.7",
|
|
"@cleverbeagle/dates": "^0.5.1",
|
|
"@sentry/browser": "^8.55.2",
|
|
"@sentry/node": "^8.55.2",
|
|
"@turf/buffer": "^5.1.5",
|
|
"@turf/circle": "^6.0.1",
|
|
"@turf/truncate": "^6.0.1",
|
|
"@turf/union": "^6.0.3",
|
|
"babel-runtime": "^6.26.0",
|
|
"bcrypt": "^5.1.1",
|
|
"bootstrap": "^5.3.8",
|
|
"commonmark": "^0.28.1",
|
|
"core-js": "^2.5.1",
|
|
"crypto-random-hex": "^1.0.0",
|
|
"emoji-flags": "^1.2.0",
|
|
"fs": "0.0.1-security",
|
|
"google-maps": "^3.2.1",
|
|
"google-maps-image-api-url": "^1.0.3",
|
|
"handlebars": "^4.0.11",
|
|
"history": "^5.3.0",
|
|
"html5-device-mockups": "^3.2.0",
|
|
"i18next": "^23.16.8",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"i18next-fs-backend": "^2.6.6",
|
|
"i18next-http-backend": "^2.7.3",
|
|
"immutability-helper": "^2.5.1",
|
|
"indexof": "0.0.1",
|
|
"iron": "^5.0.4",
|
|
"ismobilejs": "^0.4.1",
|
|
"jquery": "^2.2.4",
|
|
"jquery-validation": "^1.17.0",
|
|
"jsend": "^1.0.2",
|
|
"juice": "^4.2.2",
|
|
"leaflet": "^1.9.4",
|
|
"leaflet-graphicscale": "0.0.2",
|
|
"leaflet-sleep": "^0.5.1",
|
|
"leaflet.fullscreen": "^3.0.2",
|
|
"leaflet.gridlayer.googlemutant": "^0.14.1",
|
|
"lodash": "^4.17.4",
|
|
"loms.perlin": "^1.0.1",
|
|
"map-common-utils": "^0.5.0",
|
|
"maxmind": "^2.3.0",
|
|
"meteor-accounts-t9n": "^2.6.0",
|
|
"meteor-node-stubs": "^0.3.2",
|
|
"modernizr": "^3.6.0",
|
|
"moment": "^2.19.1",
|
|
"moment-timezone": "^0.5.14",
|
|
"node-geocoder": "^3.21.1",
|
|
"node-gyp": "^3.7.0",
|
|
"nodemailer": "^6.10.1",
|
|
"npm": "^5.8.0",
|
|
"pm2-master": "^1.1.3",
|
|
"prerender-node": "^2.7.4",
|
|
"progressbar.js": "^1.1.1",
|
|
"prop-types": "^15.6.0",
|
|
"push.js": "^1.0.5",
|
|
"rc-slider": "^8.5.0",
|
|
"rc-tooltip": "^3.7.0",
|
|
"react": "^18.3.1",
|
|
"react-bootstrap": "^2.10.10",
|
|
"react-confirm": "^0.1.16",
|
|
"react-dom": "^18.3.1",
|
|
"react-helmet-async": "^2.0.5",
|
|
"react-i18next": "^14.1.3",
|
|
"react-leaflet": "^4.2.1",
|
|
"react-mobile-store-button": "0.0.3",
|
|
"react-places-autocomplete": "^5.4.3",
|
|
"react-resize-detector": "^1.1.0",
|
|
"react-router-bootstrap": "^0.26.3",
|
|
"react-router-dom": "^6.30.4",
|
|
"react-share": "^5.3.0",
|
|
"simpl-schema": "^1.5.0",
|
|
"simple-line-icons": "^2.4.1",
|
|
"store": "^2.0.12",
|
|
"twit": "^2.2.9"
|
|
},
|
|
"devDependencies": {
|
|
"babel-plugin-lodash": "^3.2.11",
|
|
"chai": "^4.5.0",
|
|
"eslint": "^4.10.0",
|
|
"eslint-config-airbnb": "^16.1.0",
|
|
"eslint-import-resolver-meteor": "^0.4.0",
|
|
"eslint-plugin-import": "^2.8.0",
|
|
"eslint-plugin-jsx-a11y": "^6.0.2",
|
|
"eslint-plugin-meteor": "^4.1.6",
|
|
"eslint-plugin-react": "^7.4.0",
|
|
"sass": "^1.101.0"
|
|
},
|
|
"eslintConfig": {
|
|
"parserOptions": {
|
|
"ecmaFeatures": {
|
|
"jsx": true
|
|
}
|
|
},
|
|
"plugins": [
|
|
"meteor",
|
|
"react"
|
|
],
|
|
"extends": [
|
|
"airbnb",
|
|
"plugin:meteor/recommended",
|
|
"plugin:react/recommended"
|
|
],
|
|
"env": {
|
|
"browser": true
|
|
},
|
|
"globals": {
|
|
"expect": false
|
|
},
|
|
"rules": {
|
|
"import/no-unresolved": 0,
|
|
"import/no-extraneous-dependencies": 0,
|
|
"import/extensions": 0,
|
|
"jsx-a11y/anchor-is-valid": [
|
|
"error",
|
|
{
|
|
"components": [
|
|
"Link"
|
|
],
|
|
"specialLink": [
|
|
"to"
|
|
]
|
|
}
|
|
],
|
|
"max-len": 0,
|
|
"no-alert": 0,
|
|
"no-console": 0,
|
|
"no-restricted-globals": 0,
|
|
"no-return-assign": [
|
|
"error",
|
|
"except-parens"
|
|
],
|
|
"comma-dangle": [
|
|
"error",
|
|
"never"
|
|
],
|
|
"no-underscore-dangle": [
|
|
"error",
|
|
{
|
|
"allow": [
|
|
"_id",
|
|
"_ensureIndex",
|
|
"_verifyEmailToken",
|
|
"_resetPasswordToken",
|
|
"_name",
|
|
"_str"
|
|
]
|
|
}
|
|
],
|
|
"class-methods-use-this": 0,
|
|
"react/jsx-filename-extension": 0,
|
|
"react/forbid-prop-types": 0
|
|
},
|
|
"settings": {
|
|
"import/resolver": "meteor"
|
|
}
|
|
}
|
|
}
|