Files
pybricks-code/package.json
T
David Lechner b9dbaaa5cb fileStorage: implement file locks
This breaks down reading and writing into low-level and high level sagas.

Opening now takes a lock on the file so that it can only have one writer
or have multiple readers. The low-level read and write sagas use the
file descriptor to determine if the file is still open before actually
performing the action.

Since we are using the web locks api, these locks should work across
browser tabs/windows.

The high-level read/write sagas perform the low-level open, read/write,
close operations in a single call.

The high-level delete and rename sagas are also updated to take locks
on the files while performing the respective operations and will fail
if the file is already being used somewhere else.
2022-04-04 15:24:08 -05:00

117 lines
4.0 KiB
JSON

{
"name": "@pybricks/pybricks-code",
"version": "1.2.0-beta.1",
"license": "MIT",
"author": "The Pybricks Authors",
"repository": {
"type": "git",
"url": "https://github.com/pybricks/pybricks-code"
},
"dependencies": {
"@blueprintjs/core": "^4.0.0-rc.0",
"@blueprintjs/popover2": "^1.0.0-rc.0",
"@craco/craco": "^6.4.3",
"@pybricks/firmware": "4.14.0",
"@pybricks/ide-docs": "2.1.0",
"@pybricks/mpy-cross-v5": "^2.0.0",
"@shopify/react-i18n": "^6.3.12",
"@testing-library/dom": "^8.11.3",
"@testing-library/jest-dom": "^5.16.2",
"@testing-library/react": "^12.1.4",
"@testing-library/user-event": "^13.5.0",
"@types/file-saver": "^2.0.5",
"@types/jest": "^27.4.1",
"@types/node": "^16.11.7",
"@types/react": "^16.14.24",
"@types/react-dom": "^16.9.14",
"@types/react-redux": "^7.1.23",
"@types/react-splitter-layout": "^3.0.2",
"@types/redux-logger": "^3.0.9",
"@types/semver": "^7.3.9",
"@types/web-bluetooth": "^0.0.13",
"@types/web-locks-api": "^0.0.2",
"@types/wicg-file-system-access": "^2020.9.5",
"@types/zen-push": "^0.1.1",
"babel-plugin-macros": "^3.0.1",
"browser-fs-access": "^0.25.0",
"canvas": "^2.9.0",
"copy-webpack-plugin": "^6.4.1",
"dexie": "^3.2.1",
"dexie-observable": "^4.0.0-beta.13",
"fake-indexeddb": "^3.1.7",
"jszip": "^3.7.1",
"license-webpack-plugin": "^3.0.0",
"monaco-editor": "^0.30.1",
"monaco-editor-webpack-plugin": "^6.0.0",
"monaco-themes": "^0.4.0",
"mq-polyfill": "1.1.8",
"navigator.locks": "0.8.1",
"node-sass": "^6.0.1",
"prop-types": "^15.8.1",
"react": "^16.13.1",
"react-complex-tree": "^1.1.5",
"react-dom": "^16.13.1",
"react-dropzone": "^12.0.4",
"react-monaco-editor": "^0.47.0",
"react-redux": "^7.2.6",
"react-scripts": "^4.0.3",
"react-splitter-layout": "^4.0.0",
"redux": "^4.1.2",
"redux-logger": "^3.0.6",
"redux-saga": "^1.1.3",
"semver": "^7.3.5",
"spdx-satisfies": "^5.0.0",
"typed-redux-saga": "^1.4.0",
"typescript": "~4.6.2",
"usehooks-ts": "^2.4.2",
"web-vitals": "^2.1.4",
"xterm": "^4.18.0",
"xterm-addon-fit": "^0.5.0",
"zen-push": "^0.2.1"
},
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test --env=./test/env.js",
"coverage": "yarn test --coverage --watchAll=false",
"coverage:html": "yarn coverage --coverageReporters html",
"eject": "react-scripts eject",
"lint": "tsc --noEmit && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"chrome 79",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0",
"eslint": "^7.31.0",
"eslint-config-prettier": "^7.2.0",
"eslint-config-typed-fp": "^1.6.0",
"eslint-plugin-functional": "^3.7.2",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-total-functions": "^4.10.1",
"jest-mock-extended": "^2.0.4",
"prettier": "^2.5.1"
},
"packageManager": "yarn@3.2.0",
"resolutions": {
"mq-polyfill@1.1.8": "patch:mq-polyfill@npm:1.1.8#.yarn/patches/mq-polyfill-npm-1.1.8-62fe162439.patch",
"react-error-overlay": "6.0.9",
"navigator.locks@0.8.1": "patch:navigator.locks@npm:0.8.1#.yarn/patches/navigator.locks-npm-0.8.1-e8530a2d4f.patch"
}
}