Files
archived-chatwoot/package.json
Shivam Mishra 00ee0478eb feat: IndexedDB based caching for labels, inboxes and teams [CW-50] (#6710)
* feat: allow caching of labels in the account scope

* feat: send cache keys in account json response

* feat: kickstart web worker

* feat: setup basic architecture for workers

* feat: install idb

* feat: add datamanger

* fix: typos

* refactor: rename method

* feat: make init db a manual step

* refactor: separate accountIdFromRoute

* feat: cache enabled API client

* feat: enable caching for inboxes and labels

* feat: enable cache for team

* feat: manage exceptions for team

* feat: add team to data manager

* feat: add a generic listener

* refactor: send only cache keys

* refactor: separate validate method

* feat: add listeners

* feat: add event for revalidate

* feat: add cache keys endpoint

* refactor: fetch cache keys instead of full account data

* fix: key pattern

* feat: don't fetch account for cache_keys

* fix: cache key base class

* refactor: cache keys helper

* feat: add helper

* fix: cache-key update logic

* feat: delete indexeddb on logout

* feat: remove worker.js

* refactor: move data-manager

* refactor: name of file

* feat: add test for DataManager

* refactor: add fake idb to jest setup

* test: cache keys helper

* test: cache keys helper

* test: cache_keys in accounts controller

* refactor: remove cache_keys context

* feat: add policy for cache-keys
2023-03-27 12:16:25 +05:30

150 lines
4.4 KiB
JSON

{
"name": "@chatwoot/chatwoot",
"version": "2.15.0",
"license": "MIT",
"scripts": {
"eslint": "eslint app/**/*.{js,vue}",
"eslint:fix": "eslint app/**/*.{js,vue} --fix",
"pretest": "rimraf .jest-cache",
"test": "jest -w 1 --no-cache",
"test:watch": "jest -w 1 --watch --no-cache",
"test:coverage": "jest -w 1 --no-cache --collectCoverage",
"webpacker-start": "webpack-dev-server -d --config webpack.dev.config.js --content-base public/ --progress --colors",
"start:dev": "foreman start -f ./Procfile.dev",
"start:dev-overmind": "overmind start -f ./Procfile.dev",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook",
"ruby:prettier": "bundle exec rubocop -a",
"prepare": "husky install"
},
"dependencies": {
"@braid/vue-formulate": "^2.5.2",
"@chatwoot/prosemirror-schema": "https://github.com/chatwoot/prosemirror-schema.git",
"@chatwoot/utils": "^0.0.12",
"@hcaptcha/vue-hcaptcha": "^0.3.2",
"@june-so/analytics-next": "^1.36.5",
"@rails/actioncable": "6.1.3",
"@rails/ujs": "^7.0.3-1",
"@rails/webpacker": "5.3.0",
"@sentry/tracing": "^6.19.7",
"@sentry/vue": "^6.19.7",
"@tailwindcss/typography": "0.2.0",
"activestorage": "^5.2.6",
"axios": "^0.21.2",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-vue-jsx": "^3.7.0",
"chart.js": "~2.9.4",
"company-email-validator": "^1.0.8",
"core-js": "3.11.0",
"date-fns": "2.21.1",
"date-fns-tz": "^1.3.3",
"dompurify": "2.2.7",
"foundation-sites": "~6.5.3",
"highlight.js": "~10.4.1",
"idb": "^7.1.1",
"ionicons": "~2.0.1",
"js-cookie": "^2.2.1",
"logrocket": "^3.0.1",
"logrocket-vuex": "^0.0.3",
"markdown-it": "^13.0.1",
"markdown-it-link-attributes": "^4.0.1",
"md5": "^2.3.0",
"ninja-keys": "^1.1.9",
"opus-recorder": "^8.0.5",
"semver": "7.3.5",
"spinkit": "~1.2.5",
"tailwindcss": "^1.9.6",
"turbolinks": "^5.2.0",
"url-loader": "^2.0.0",
"urlpattern-polyfill": "^6.0.2",
"v-tooltip": "~2.1.3",
"videojs-record": "^4.5.0",
"vue": "2.6.12",
"vue-chartjs": "3.5.1",
"vue-clickaway": "~2.1.0",
"vue-color": "2.8.1",
"vue-dompurify-html": "^2.5.2",
"vue-easytable": "2.5.5",
"vue-i18n": "8.24.3",
"vue-letter": "^0.1.3",
"vue-loader": "15.9.6",
"vue-multiselect": "~2.1.6",
"vue-router": "~3.5.2",
"vue-template-compiler": "2.6.12",
"vue-upload-component": "2.8.22",
"vue2-datepicker": "^3.9.1",
"vuedraggable": "^2.24.3",
"vuelidate": "0.7.7",
"vuex": "~2.1.1",
"vuex-router-sync": "~4.1.2",
"wavesurfer.js": "^6.0.4"
},
"devDependencies": {
"@babel/core": "7.13.16",
"@babel/plugin-proposal-class-properties": "7.13.0",
"@babel/preset-env": "7.13.15",
"@storybook/addon-actions": "6.5.9",
"@storybook/addon-docs": "^6.5.9",
"@storybook/addon-essentials": "6.5.9",
"@storybook/addon-links": "6.5.9",
"@storybook/addons": "6.5.9",
"@storybook/vue": "6.5.9",
"@vue/test-utils": "1.1.4",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.1.0",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-jest": "25.5.1",
"babel-loader": "8.2.2",
"babel-preset-vue": "^2.0.2",
"cypress": "4.12.1",
"eslint": "^6.8.0",
"eslint-config-airbnb-base": "14.2.1",
"eslint-config-prettier": "^4.0.0",
"eslint-import-resolver-webpack": "^0.11.1",
"eslint-plugin-babel": "5.3.1",
"eslint-plugin-html": "6.1.2",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-prettier": "3.4.0",
"eslint-plugin-storybook": "^0.5.13",
"eslint-plugin-vue": "^6.2.2",
"expect-more-jest": "^2.4.2",
"fake-indexeddb": "^4.0.1",
"husky": "^7.0.0",
"jest": "26.6.3",
"jest-serializer-vue": "^2.0.2",
"jest-transform-stub": "^2.0.0",
"lint-staged": "10.5.4",
"prettier": "^1.16.4",
"rimraf": "^3.0.0",
"vue-jest": "4",
"webpack-dev-server": "3.11.2"
},
"engines": {
"node": ">=10.x",
"npm": ">=6.x",
"yarn": ">=1.x"
},
"husky": {
"hooks": {
"pre-push": "sh bin/validate_push"
}
},
"jest": {
"collectCoverage": true,
"coverageReporters": [
"lcov",
"text"
]
},
"lint-staged": {
"app/**/*.{js,vue}": [
"eslint --fix",
"git add"
],
"*.scss": [
"scss-lint"
]
}
}