mirror of
https://github.com/dnote/dnote
synced 2026-03-14 14:35:50 +01:00
Upgrade (#284)
* Add licenses * Upgrade deps * Update deprecated * Upgrade deps
This commit is contained in:
parent
26633b1bf0
commit
bdb75fd16c
124 changed files with 1486 additions and 1489 deletions
4
Makefile
4
Makefile
|
|
@ -121,7 +121,7 @@ endif
|
|||
.PHONY: build-cli
|
||||
|
||||
## release
|
||||
release-cli: build-cli
|
||||
release-cli: clean build-cli
|
||||
ifndef version
|
||||
$(error version is required. Usage: make version=0.1.0 release-cli)
|
||||
endif
|
||||
|
|
@ -145,7 +145,7 @@ endif
|
|||
)
|
||||
.PHONY: release-cli
|
||||
|
||||
release-server: build-server
|
||||
release-server: clean build-server
|
||||
ifndef version
|
||||
$(error version is required. Usage: make version=0.1.0 release-server)
|
||||
endif
|
||||
|
|
|
|||
774
browser/package-lock.json
generated
774
browser/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -17,36 +17,36 @@
|
|||
"classnames": "^2.2.5",
|
||||
"lodash": "^4.17.15",
|
||||
"qs": "^6.9.0",
|
||||
"react": "^16.9.0",
|
||||
"react-dom": "^16.9.0",
|
||||
"react": "^16.11.0",
|
||||
"react-dom": "^16.11.0",
|
||||
"react-redux": "^7.0.0",
|
||||
"react-select": "^3.0.0",
|
||||
"react-select": "^3.0.8",
|
||||
"redux": "^4.0.4",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-thunk": "^2.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^16.9.3",
|
||||
"@types/react-dom": "^16.9.1",
|
||||
"@typescript-eslint/eslint-plugin": "^2.3.1",
|
||||
"@typescript-eslint/parser": "^2.3.1",
|
||||
"concurrently": "^4.1.2",
|
||||
"@types/react": "^16.9.11",
|
||||
"@types/react-dom": "^16.9.3",
|
||||
"@typescript-eslint/eslint-plugin": "^2.6.0",
|
||||
"@typescript-eslint/parser": "^2.6.0",
|
||||
"concurrently": "^5.0.0",
|
||||
"del": "^5.0.0",
|
||||
"eslint-config-airbnb": "^18.0.1",
|
||||
"eslint-plugin-import": "^2.18.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
||||
"eslint-plugin-react": "^7.14.3",
|
||||
"eslint-plugin-react-hooks": "^2.0.1",
|
||||
"eslint-plugin-react": "^7.16.0",
|
||||
"eslint-plugin-react-hooks": "^2.2.0",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-if": "^3.0.0",
|
||||
"gulp-imagemin": "^6.0.0",
|
||||
"gulp-imagemin": "^6.1.1",
|
||||
"gulp-livereload": "^4.0.2",
|
||||
"gulp-replace": "^1.0.0",
|
||||
"gulp-zip": "^5.0.0",
|
||||
"gulp-zip": "^5.0.1",
|
||||
"prettier": "^1.18.2",
|
||||
"ts-loader": "^6.1.2",
|
||||
"typescript": "^3.6.3",
|
||||
"webpack": "^4.41.0",
|
||||
"ts-loader": "^6.2.1",
|
||||
"typescript": "^3.6.4",
|
||||
"webpack": "^4.41.2",
|
||||
"webpack-cli": "^3.3.9"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
420
jslib/package-lock.json
generated
420
jslib/package-lock.json
generated
|
|
@ -92,9 +92,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"anymatch": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.0.tgz",
|
||||
"integrity": "sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA==",
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
|
||||
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"normalize-path": "^3.0.0",
|
||||
|
|
@ -236,9 +236,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.5.5",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
|
||||
"integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
|
||||
"integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
|
||||
"dev": true
|
||||
},
|
||||
"bn.js": {
|
||||
|
|
@ -522,19 +522,19 @@
|
|||
"dev": true
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.1.1.tgz",
|
||||
"integrity": "sha512-df4o16uZmMHzVQwECZRHwfguOt5ixpuQVaZHjYMvYisgKhE+JXwcj/Tcr3+3bu/XeOJQ9ycYmzu7Mv8XrGxJDQ==",
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.3.tgz",
|
||||
"integrity": "sha512-GtrxGuRf6bzHQmXWRepvsGnXpkQkVU+D2/9a7dAe4a7v1NhrfZOZ2oKf76M3nOs46fFYL8D+Q8JYA4GYeJ8Cjw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"anymatch": "^3.1.0",
|
||||
"braces": "^3.0.2",
|
||||
"fsevents": "^2.0.6",
|
||||
"glob-parent": "^5.0.0",
|
||||
"is-binary-path": "^2.1.0",
|
||||
"is-glob": "^4.0.1",
|
||||
"normalize-path": "^3.0.0",
|
||||
"readdirp": "^3.1.1"
|
||||
"anymatch": "~3.1.1",
|
||||
"braces": "~3.0.2",
|
||||
"fsevents": "~2.1.1",
|
||||
"glob-parent": "~5.1.0",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.2.0"
|
||||
}
|
||||
},
|
||||
"cipher-base": {
|
||||
|
|
@ -548,14 +548,42 @@
|
|||
}
|
||||
},
|
||||
"cliui": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
|
||||
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
|
||||
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "^2.1.1",
|
||||
"strip-ansi": "^4.0.0",
|
||||
"wrap-ansi": "^2.0.0"
|
||||
"string-width": "^3.1.0",
|
||||
"strip-ansi": "^5.2.0",
|
||||
"wrap-ansi": "^5.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||
"dev": true
|
||||
},
|
||||
"string-width": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"emoji-regex": "^7.0.1",
|
||||
"is-fullwidth-code-point": "^2.0.0",
|
||||
"strip-ansi": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"clone": {
|
||||
|
|
@ -564,12 +592,6 @@
|
|||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
|
||||
"dev": true
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||
"dev": true
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
|
|
@ -721,12 +743,6 @@
|
|||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
|
||||
"dev": true
|
||||
},
|
||||
"core-js": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
|
||||
"integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==",
|
||||
"dev": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
|
|
@ -770,19 +786,6 @@
|
|||
"sha.js": "^2.4.8"
|
||||
}
|
||||
},
|
||||
"cross-spawn": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nice-try": "^1.0.4",
|
||||
"path-key": "^2.0.1",
|
||||
"semver": "^5.5.0",
|
||||
"shebang-command": "^1.2.0",
|
||||
"which": "^1.2.9"
|
||||
}
|
||||
},
|
||||
"crypto-browserify": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
||||
|
|
@ -977,15 +980,6 @@
|
|||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
|
||||
"dev": true
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.2.tgz",
|
||||
"integrity": "sha512-gUSUszrsxlDnUbUwEI9Oygyrk4ZEWtVaHQc+uZHphVeNxl+qeqMV/jDWoTkjN1RmGlZ5QWAP7o458p/JMlikQg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
|
||||
|
|
@ -1199,21 +1193,6 @@
|
|||
"safe-buffer": "^5.1.1"
|
||||
}
|
||||
},
|
||||
"execa": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
||||
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^6.0.0",
|
||||
"get-stream": "^4.0.0",
|
||||
"is-stream": "^1.1.0",
|
||||
"npm-run-path": "^2.0.0",
|
||||
"p-finally": "^1.0.0",
|
||||
"signal-exit": "^3.0.0",
|
||||
"strip-eof": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
|
|
@ -1328,9 +1307,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
|
||||
"integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz",
|
||||
"integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
|
|
@ -1358,15 +1337,6 @@
|
|||
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
|
||||
"dev": true
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
||||
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
||||
|
|
@ -1607,12 +1577,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"invert-kv": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
|
||||
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
|
||||
"dev": true
|
||||
},
|
||||
"is-arguments": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
|
||||
|
|
@ -1635,9 +1599,9 @@
|
|||
}
|
||||
},
|
||||
"is-buffer": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
|
||||
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
|
||||
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
|
||||
"dev": true
|
||||
},
|
||||
"is-callable": {
|
||||
|
|
@ -1730,12 +1694,6 @@
|
|||
"has": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
||||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
||||
"dev": true
|
||||
},
|
||||
"is-symbol": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
|
||||
|
|
@ -1879,9 +1837,9 @@
|
|||
}
|
||||
},
|
||||
"karma": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/karma/-/karma-4.3.0.tgz",
|
||||
"integrity": "sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ==",
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz",
|
||||
"integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.3.0",
|
||||
|
|
@ -1890,7 +1848,6 @@
|
|||
"chokidar": "^3.0.0",
|
||||
"colors": "^1.1.0",
|
||||
"connect": "^3.6.0",
|
||||
"core-js": "^3.1.3",
|
||||
"di": "^0.0.1",
|
||||
"dom-serialize": "^2.2.0",
|
||||
"flatted": "^2.0.0",
|
||||
|
|
@ -2049,15 +2006,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"lcid": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
|
||||
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"invert-kv": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
|
|
@ -2163,15 +2111,6 @@
|
|||
"yallist": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"map-age-cleaner": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
|
||||
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-defer": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"map-obj": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
|
||||
|
|
@ -2195,17 +2134,6 @@
|
|||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
|
||||
"dev": true
|
||||
},
|
||||
"mem": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
|
||||
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"map-age-cleaner": "^0.1.1",
|
||||
"mimic-fn": "^2.0.0",
|
||||
"p-is-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"meow": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
|
||||
|
|
@ -2263,12 +2191,6 @@
|
|||
"mime-db": "1.40.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||
"dev": true
|
||||
},
|
||||
"minimalistic-assert": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||
|
|
@ -2306,9 +2228,9 @@
|
|||
}
|
||||
},
|
||||
"mocha": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz",
|
||||
"integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==",
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz",
|
||||
"integrity": "sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-colors": "3.2.3",
|
||||
|
|
@ -2331,9 +2253,9 @@
|
|||
"supports-color": "6.0.0",
|
||||
"which": "1.3.1",
|
||||
"wide-align": "1.1.3",
|
||||
"yargs": "13.2.2",
|
||||
"yargs-parser": "13.0.0",
|
||||
"yargs-unparser": "1.5.0"
|
||||
"yargs": "13.3.0",
|
||||
"yargs-parser": "13.1.1",
|
||||
"yargs-unparser": "1.6.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
|
|
@ -2354,12 +2276,6 @@
|
|||
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
|
||||
"dev": true
|
||||
},
|
||||
"nice-try": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node-environment-flags": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
|
||||
|
|
@ -2408,15 +2324,6 @@
|
|||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true
|
||||
},
|
||||
"npm-run-path": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
||||
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-key": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
||||
|
|
@ -2543,41 +2450,12 @@
|
|||
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
|
||||
"dev": true
|
||||
},
|
||||
"os-locale": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
|
||||
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"execa": "^1.0.0",
|
||||
"lcid": "^2.0.0",
|
||||
"mem": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
||||
"dev": true
|
||||
},
|
||||
"p-defer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
|
||||
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
|
||||
"dev": true
|
||||
},
|
||||
"p-finally": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
|
||||
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
|
||||
"dev": true
|
||||
},
|
||||
"p-is-promise": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
|
||||
"integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
|
||||
"dev": true
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
|
||||
|
|
@ -2682,12 +2560,6 @@
|
|||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
},
|
||||
"path-key": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
||||
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
||||
"dev": true
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
|
|
@ -2818,16 +2690,6 @@
|
|||
"safe-buffer": "^5.1.2"
|
||||
}
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
|
|
@ -2948,9 +2810,9 @@
|
|||
}
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.2.tgz",
|
||||
"integrity": "sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
|
||||
"integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"picomatch": "^2.0.4"
|
||||
|
|
@ -3093,21 +2955,6 @@
|
|||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"shebang-command": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"shebang-regex": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"shebang-regex": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
||||
"dev": true
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
|
|
@ -3398,12 +3245,6 @@
|
|||
"is-utf8": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"strip-eof": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
||||
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-indent": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
|
||||
|
|
@ -3525,9 +3366,9 @@
|
|||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.6.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
|
||||
"integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
|
||||
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
|
||||
"dev": true
|
||||
},
|
||||
"uglify-js": {
|
||||
|
|
@ -3679,48 +3520,40 @@
|
|||
"dev": true
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
|
||||
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
||||
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"string-width": "^1.0.1",
|
||||
"strip-ansi": "^3.0.1"
|
||||
"ansi-styles": "^3.2.0",
|
||||
"string-width": "^3.0.0",
|
||||
"strip-ansi": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
"strip-ansi": "^3.0.0"
|
||||
"emoji-regex": "^7.0.1",
|
||||
"is-fullwidth-code-point": "^2.0.0",
|
||||
"strip-ansi": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
"ansi-regex": "^4.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3775,22 +3608,21 @@
|
|||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "13.2.2",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz",
|
||||
"integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==",
|
||||
"version": "13.3.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
|
||||
"integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^4.0.0",
|
||||
"cliui": "^5.0.0",
|
||||
"find-up": "^3.0.0",
|
||||
"get-caller-file": "^2.0.1",
|
||||
"os-locale": "^3.1.0",
|
||||
"require-directory": "^2.1.1",
|
||||
"require-main-filename": "^2.0.0",
|
||||
"set-blocking": "^2.0.0",
|
||||
"string-width": "^3.0.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^13.0.0"
|
||||
"yargs-parser": "^13.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
|
|
@ -3822,9 +3654,9 @@
|
|||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "13.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
|
||||
"integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
|
||||
"version": "13.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
|
||||
"integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
|
|
@ -3832,58 +3664,14 @@
|
|||
}
|
||||
},
|
||||
"yargs-unparser": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz",
|
||||
"integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
|
||||
"integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"flat": "^4.1.0",
|
||||
"lodash": "^4.17.11",
|
||||
"yargs": "^12.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"get-caller-file": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
|
||||
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
|
||||
"dev": true
|
||||
},
|
||||
"require-main-filename": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
|
||||
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
|
||||
"dev": true
|
||||
},
|
||||
"yargs": {
|
||||
"version": "12.0.5",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
|
||||
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cliui": "^4.0.0",
|
||||
"decamelize": "^1.2.0",
|
||||
"find-up": "^3.0.0",
|
||||
"get-caller-file": "^1.0.1",
|
||||
"os-locale": "^3.0.0",
|
||||
"require-directory": "^2.1.1",
|
||||
"require-main-filename": "^1.0.1",
|
||||
"set-blocking": "^2.0.0",
|
||||
"string-width": "^2.0.0",
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^3.2.1 || ^4.0.0",
|
||||
"yargs-parser": "^11.1.1"
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "11.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
|
||||
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
"decamelize": "^1.2.0"
|
||||
}
|
||||
}
|
||||
"lodash": "^4.17.15",
|
||||
"yargs": "^13.3.0"
|
||||
}
|
||||
},
|
||||
"yeast": {
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
"devDependencies": {
|
||||
"@types/mocha": "^5.2.7",
|
||||
"chai": "^4.2.0",
|
||||
"karma": "^4.3.0",
|
||||
"karma": "^4.4.1",
|
||||
"karma-chrome-launcher": "^3.1.0",
|
||||
"karma-mocha": "^1.3.0",
|
||||
"karma-mocha-reporter": "^2.2.5",
|
||||
"karma-typescript": "^4.1.1",
|
||||
"mocha": "^6.2.0",
|
||||
"mocha": "^6.2.2",
|
||||
"prettier": "^1.18.2",
|
||||
"typescript": "^3.6.3"
|
||||
"typescript": "^3.6.4"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package repetition
|
||||
|
||||
import (
|
||||
|
|
|
|||
1231
web/package-lock.json
generated
1231
web/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -12,80 +12,80 @@
|
|||
"author": "Monomax Software Pty Ltd",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.6.2",
|
||||
"@babel/plugin-transform-react-constant-elements": "^7.6.0",
|
||||
"@babel/preset-env": "^7.6.2",
|
||||
"@babel/preset-react": "^7.0.0",
|
||||
"@babel/core": "^7.6.4",
|
||||
"@babel/plugin-transform-react-constant-elements": "^7.6.3",
|
||||
"@babel/preset-env": "^7.6.3",
|
||||
"@babel/preset-react": "^7.6.3",
|
||||
"@babel/register": "^7.6.2",
|
||||
"@hot-loader/react-dom": "^16.9.0",
|
||||
"@hot-loader/react-dom": "^16.10.2",
|
||||
"@types/mocha": "^5.2.7",
|
||||
"@types/react": "^16.9.4",
|
||||
"@types/react-dom": "^16.9.1",
|
||||
"@typescript-eslint/eslint-plugin": "^2.3.2",
|
||||
"@typescript-eslint/parser": "^2.3.2",
|
||||
"autoprefixer": "^9.6.1",
|
||||
"@types/react": "^16.9.11",
|
||||
"@types/react-dom": "^16.9.3",
|
||||
"@typescript-eslint/eslint-plugin": "^2.6.0",
|
||||
"@typescript-eslint/parser": "^2.6.0",
|
||||
"autoprefixer": "^9.7.0",
|
||||
"babel-eslint": "^10.0.3",
|
||||
"babel-loader": "^8.0.6",
|
||||
"chai": "^4.2.0",
|
||||
"css-loader": "^3.2.0",
|
||||
"cssnano": "^4.1.10",
|
||||
"eslint": "^6.5.1",
|
||||
"eslint": "^6.6.0",
|
||||
"eslint-config-airbnb": "^18.0.1",
|
||||
"eslint-config-prettier": "^6.3.0",
|
||||
"eslint-config-prettier": "^6.5.0",
|
||||
"eslint-plugin-import": "^2.18.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
||||
"eslint-plugin-prettier": "^3.1.1",
|
||||
"eslint-plugin-react": "^7.15.1",
|
||||
"eslint-plugin-react-hooks": "^2.1.1",
|
||||
"fibers": "^4.0.1",
|
||||
"eslint-plugin-react": "^7.16.0",
|
||||
"eslint-plugin-react-hooks": "^2.2.0",
|
||||
"fibers": "^4.0.2",
|
||||
"file-loader": "^4.2.0",
|
||||
"karma": "^4.3.0",
|
||||
"karma": "^4.4.1",
|
||||
"karma-chrome-launcher": "^3.1.0",
|
||||
"karma-firefox-launcher": "^1.2.0",
|
||||
"karma-mocha": "^1.3.0",
|
||||
"karma-mocha-reporter": "^2.2.5",
|
||||
"karma-webpack": "^4.0.2",
|
||||
"mini-css-extract-plugin": "^0.8.0",
|
||||
"mocha": "^6.2.1",
|
||||
"node-sass": "^4.12.0",
|
||||
"mocha": "^6.2.2",
|
||||
"node-sass": "^4.13.0",
|
||||
"postcss-loader": "^3.0.0",
|
||||
"prettier": "^1.18.2",
|
||||
"sass-loader": "^8.0.0",
|
||||
"source-map-loader": "^0.2.4",
|
||||
"source-map-support": "^0.5.13",
|
||||
"source-map-support": "^0.5.15",
|
||||
"style-loader": "^1.0.0",
|
||||
"ts-loader": "^6.2.0",
|
||||
"typescript": "^3.6.3",
|
||||
"url-loader": "^2.1.0",
|
||||
"ts-loader": "^6.2.1",
|
||||
"typescript": "^3.6.4",
|
||||
"url-loader": "^2.2.0",
|
||||
"webpack-cli": "^3.3.9",
|
||||
"webpack-dev-middleware": "^3.7.2",
|
||||
"webpack-dev-server": "^3.8.1",
|
||||
"webpack-dev-server": "^3.9.0",
|
||||
"webpack-hot-middleware": "^2.25.0",
|
||||
"webpack-manifest-plugin": "^2.1.2"
|
||||
"webpack-manifest-plugin": "^2.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.5.5",
|
||||
"@types/classnames": "^2.2.9",
|
||||
"@types/react-redux": "^7.1.4",
|
||||
"@types/react-redux": "^7.1.5",
|
||||
"@types/react-router-dom": "^5.1.0",
|
||||
"classnames": "^2.2.5",
|
||||
"core-js": "^3.2.1",
|
||||
"core-js": "^3.3.5",
|
||||
"highlight.js": "^9.15.10",
|
||||
"history": "^4.10.1",
|
||||
"markdown-it": "^9.0.0",
|
||||
"qs": "^6.9.0",
|
||||
"react": "^16.10.1",
|
||||
"react-dom": "^16.10.1",
|
||||
"react": "^16.11.0",
|
||||
"react-dom": "^16.11.0",
|
||||
"react-helmet": "^5.2.1",
|
||||
"react-hot-loader": "^4.12.14",
|
||||
"react-hot-loader": "^4.12.15",
|
||||
"react-redux": "^7.1.1",
|
||||
"react-router": "^5.1.2",
|
||||
"react-router-config": "^5.1.1",
|
||||
"react-router-dom": "^5.1.2",
|
||||
"react-stripe-elements": "^5.0.1",
|
||||
"react-stripe-elements": "^5.1.0",
|
||||
"redux": "^4.0.4",
|
||||
"redux-thunk": "^2.1.0",
|
||||
"regenerator-runtime": "^0.13.3",
|
||||
"webpack": "^4.41.0"
|
||||
"webpack": "^4.41.2"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ function useMobileMenuState(
|
|||
return [isMobileMenuOpen, setMobileMenuOpen];
|
||||
}
|
||||
|
||||
const App: React.SFC<Props> = ({ location }) => {
|
||||
const App: React.FunctionComponent<Props> = ({ location }) => {
|
||||
useFetchData();
|
||||
useSavePrevLocation(location);
|
||||
usePersistFilters(location);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ interface Props {
|
|||
onDeleteBook: (bookUUID) => void;
|
||||
}
|
||||
|
||||
const BookItem: React.SFC<Props> = ({
|
||||
const BookItem: React.FunctionComponent<Props> = ({
|
||||
book,
|
||||
isFocused,
|
||||
setFocusedOptEl,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ interface Props {
|
|||
onDeleteBook: (string) => void;
|
||||
}
|
||||
|
||||
const BookList: React.SFC<Props> = ({
|
||||
const BookList: React.FunctionComponent<Props> = ({
|
||||
isFetching,
|
||||
isFetched,
|
||||
books,
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ interface Props extends RouteComponentProps {
|
|||
setSuccessMessage: (string) => void;
|
||||
}
|
||||
|
||||
const Content: React.SFC<Props> = ({ history, setSuccessMessage }) => {
|
||||
const Content: React.FunctionComponent<Props> = ({ history, setSuccessMessage }) => {
|
||||
const { books } = useSelector(state => {
|
||||
return {
|
||||
books: state.books
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
id?: string;
|
||||
}
|
||||
|
||||
const CreateBookButton: React.SFC<Props> = ({
|
||||
const CreateBookButton: React.FunctionComponent<Props> = ({
|
||||
id,
|
||||
disabled,
|
||||
openModal,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ interface Props extends RouteComponentProps {
|
|||
setSuccessMessage: (string) => void;
|
||||
}
|
||||
|
||||
const CreateBookModal: React.SFC<Props> = ({
|
||||
const CreateBookModal: React.FunctionComponent<Props> = ({
|
||||
isOpen,
|
||||
onDismiss,
|
||||
onSuccess,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ interface Props extends RouteComponentProps {
|
|||
bookUUID: string;
|
||||
}
|
||||
|
||||
const DeleteBookModal: React.SFC<Props> = ({
|
||||
const DeleteBookModal: React.FunctionComponent<Props> = ({
|
||||
isOpen,
|
||||
onDismiss,
|
||||
setSuccessMessage,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import React from 'react';
|
|||
|
||||
import styles from './EmptyList.scss';
|
||||
|
||||
const EmptyList: React.SFC = () => {
|
||||
const EmptyList: React.FunctionComponent = () => {
|
||||
return (
|
||||
<div className={styles.wrapper}>
|
||||
<p>No book found.</p>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import Helmet from 'react-helmet';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const HeaderData: React.SFC<Props> = () => {
|
||||
const HeaderData: React.FunctionComponent<Props> = () => {
|
||||
return (
|
||||
<Helmet>
|
||||
<title>Books</title>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import Content from './Content';
|
|||
import Flash from '../Common/Flash';
|
||||
import HeadData from './HeadData';
|
||||
|
||||
const Books: React.SFC = () => {
|
||||
const Books: React.FunctionComponent = () => {
|
||||
const [successMessage, setSuccessMessage] = useState('');
|
||||
|
||||
const dispatch = useDispatch();
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import { setMessage } from '../../store/ui';
|
|||
|
||||
interface Props extends RouteComponentProps {}
|
||||
|
||||
const ClassicDecrypt: React.SFC<Props> = ({ history }) => {
|
||||
const ClassicDecrypt: React.FunctionComponent<Props> = ({ history }) => {
|
||||
const [errMsg, setErrMsg] = useState('');
|
||||
const [progressMsg, setProgressMsg] = useState('');
|
||||
const [busy, setIsBusy] = useState(false);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import LoginForm from '../Login/LoginForm';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const ClassicLogin: React.SFC<Props> = () => {
|
||||
const ClassicLogin: React.FunctionComponent<Props> = () => {
|
||||
const [errMsg, setErrMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [emailVal, setEmailVal] = useState('');
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import JoinForm from '../Join/JoinForm';
|
|||
|
||||
interface Props extends RouteComponentProps {}
|
||||
|
||||
const SetPassword: React.SFC<Props> = ({ history }) => {
|
||||
const SetPassword: React.FunctionComponent<Props> = ({ history }) => {
|
||||
const [errMsg, setErrMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import {
|
|||
|
||||
interface Props {}
|
||||
|
||||
const Classic: React.SFC<Props> = () => {
|
||||
const Classic: React.FunctionComponent<Props> = () => {
|
||||
const { user } = useSelector(state => {
|
||||
return {
|
||||
user: state.auth.user
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ interface Props {
|
|||
tabIndex?: number;
|
||||
}
|
||||
|
||||
const Button: React.SFC<Props> = ({
|
||||
const Button: React.FunctionComponent<Props> = ({
|
||||
id,
|
||||
type,
|
||||
kind,
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ function renderBody(isNew: boolean, label: string) {
|
|||
return label;
|
||||
}
|
||||
|
||||
const OptionItem: React.SFC<Props> = ({
|
||||
const OptionItem: React.FunctionComponent<Props> = ({
|
||||
option,
|
||||
isSelected,
|
||||
isFocused,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ interface Props {
|
|||
triggerRef?: React.MutableRefObject<HTMLElement>;
|
||||
}
|
||||
|
||||
const BookSelector: React.SFC<Props> = ({
|
||||
const BookSelector: React.FunctionComponent<Props> = ({
|
||||
editor,
|
||||
wrapperClassName,
|
||||
triggerClassName,
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ interface Props {
|
|||
content: string;
|
||||
}
|
||||
|
||||
const Preview: React.SFC<Props> = ({ content }) => {
|
||||
const Preview: React.FunctionComponent<Props> = ({ content }) => {
|
||||
return (
|
||||
<div
|
||||
className={styles.wrapper}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ interface Props {
|
|||
disabled?: boolean;
|
||||
}
|
||||
|
||||
const Textarea: React.SFC<Props> = ({
|
||||
const Textarea: React.FunctionComponent<Props> = ({
|
||||
sessionKey,
|
||||
content,
|
||||
onChange,
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ enum Mode {
|
|||
preview
|
||||
}
|
||||
|
||||
const Editor: React.SFC<Props> = ({
|
||||
const Editor: React.FunctionComponent<Props> = ({
|
||||
editor,
|
||||
onSubmit,
|
||||
isBusy,
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ interface Props {
|
|||
actionsClassName?: string;
|
||||
}
|
||||
|
||||
const EmailPreferenceForm: React.SFC<Props> = ({
|
||||
const EmailPreferenceForm: React.FunctionComponent<Props> = ({
|
||||
emailPreference,
|
||||
token,
|
||||
setSuccessMsg,
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ interface Props {
|
|||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
const Flash: React.SFC<Props> = ({
|
||||
const Flash: React.FunctionComponent<Props> = ({
|
||||
id,
|
||||
when,
|
||||
kind,
|
||||
|
|
|
|||
|
|
@ -1,2 +1,20 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export type Direction = 'top' | 'bottom';
|
||||
export type Alignment = 'top' | 'bottom' | 'left' | 'right';
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ interface Props {
|
|||
isOpen: boolean;
|
||||
}
|
||||
|
||||
const MobileMenu: React.SFC<Props> = ({ onDismiss, isOpen }) => {
|
||||
const MobileMenu: React.FunctionComponent<Props> = ({ onDismiss, isOpen }) => {
|
||||
if (!isOpen) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import styles from './ModalBody.scss';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const Body: React.SFC<Props> = ({ children }) => {
|
||||
const Body: React.FunctionComponent<Props> = ({ children }) => {
|
||||
return <div className={styles.wrapper}>{children}</div>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
onDismiss: () => void;
|
||||
}
|
||||
|
||||
const Header: React.SFC<Props> = ({ labelId, heading, onDismiss }) => {
|
||||
const Header: React.FunctionComponent<Props> = ({ labelId, heading, onDismiss }) => {
|
||||
return (
|
||||
<div className={styles.wrapper}>
|
||||
<strong id={labelId}>{heading}</strong>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ interface Props extends RouteComponentProps {
|
|||
modalClassName?: string;
|
||||
}
|
||||
|
||||
const Modal: React.SFC<Props> = ({
|
||||
const Modal: React.FunctionComponent<Props> = ({
|
||||
isOpen,
|
||||
onDismiss,
|
||||
overlayClassName,
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ interface Props {
|
|||
|
||||
// TODO: Make a generic Select component that works for both single and multiple selection
|
||||
// by passing of a flag
|
||||
const MultiSelect: React.SFC<Props> = ({
|
||||
const MultiSelect: React.FunctionComponent<Props> = ({
|
||||
options,
|
||||
currentOptions,
|
||||
setCurrentOptions,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
import React from 'react';
|
||||
|
||||
const NotFound: React.SFC = () => (
|
||||
const NotFound: React.FunctionComponent = () => (
|
||||
<div className="container">
|
||||
<h1>Not found</h1>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ interface Props {
|
|||
labelClassName?: string;
|
||||
}
|
||||
|
||||
const Card: React.SFC<Props> = ({
|
||||
const Card: React.FunctionComponent<Props> = ({
|
||||
cardElementRef,
|
||||
setCardElementLoaded,
|
||||
containerClassName,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ interface Props {
|
|||
labelClassName?: string;
|
||||
}
|
||||
|
||||
const Country: React.SFC<Props> = ({
|
||||
const Country: React.FunctionComponent<Props> = ({
|
||||
value,
|
||||
onUpdate,
|
||||
containerClassName,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ interface Props {
|
|||
value: string;
|
||||
}
|
||||
|
||||
const CountrySelect: React.SFC<Props> = ({
|
||||
const CountrySelect: React.FunctionComponent<Props> = ({
|
||||
id,
|
||||
className,
|
||||
onChange,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
labelClassName?: string;
|
||||
}
|
||||
|
||||
const NameOnCard: React.SFC<Props> = ({
|
||||
const NameOnCard: React.FunctionComponent<Props> = ({
|
||||
value,
|
||||
onUpdate,
|
||||
containerClassName,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ interface Props {
|
|||
hasBorder?: boolean;
|
||||
}
|
||||
|
||||
const PopoverContent: React.SFC<Props> = ({
|
||||
const PopoverContent: React.FunctionComponent<Props> = ({
|
||||
contentId,
|
||||
contentClassName,
|
||||
onDismiss,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ interface Props {
|
|||
closeOnOutsideClick?: boolean;
|
||||
}
|
||||
|
||||
const Popover: React.SFC<Props> = ({
|
||||
const Popover: React.FunctionComponent<Props> = ({
|
||||
contentClassName,
|
||||
wrapperClassName,
|
||||
renderContent,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ interface Props {
|
|||
setExpanded?: (boolean) => void;
|
||||
}
|
||||
|
||||
const Actions: React.SFC<Props> = ({
|
||||
const Actions: React.FunctionComponent<Props> = ({
|
||||
onReset,
|
||||
resetShown,
|
||||
setExpanded,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ interface Props {
|
|||
inputId?: string;
|
||||
}
|
||||
|
||||
const SearchInput: React.SFC<Props> = ({
|
||||
const SearchInput: React.FunctionComponent<Props> = ({
|
||||
value,
|
||||
onChange,
|
||||
inputClassName,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ interface Props {
|
|||
isSelected?: boolean;
|
||||
}
|
||||
|
||||
const Item: React.SFC<Props> = ({
|
||||
const Item: React.FunctionComponent<Props> = ({
|
||||
children,
|
||||
id,
|
||||
value,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ interface Props {
|
|||
renderCreateOption: (Option, OptionParams) => React.ReactNode;
|
||||
}
|
||||
|
||||
const Result: React.SFC<Props> = ({
|
||||
const Result: React.FunctionComponent<Props> = ({
|
||||
options,
|
||||
menuId,
|
||||
currentValue,
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ function useSetFocus({
|
|||
}, [textboxValue, setFocusedIdx, targetIdx]);
|
||||
}
|
||||
|
||||
const SearchableMenu: React.SFC<Props> = ({
|
||||
const SearchableMenu: React.FunctionComponent<Props> = ({
|
||||
menuId,
|
||||
isOpen,
|
||||
setIsOpen,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ function matchMessagePath(location: Location, message: MessageState): string {
|
|||
return null;
|
||||
}
|
||||
|
||||
const SystemMessage: React.SFC<Props> = ({ location }) => {
|
||||
const SystemMessage: React.FunctionComponent<Props> = ({ location }) => {
|
||||
const { message } = useSelector(state => {
|
||||
return {
|
||||
message: state.ui.message
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ interface Props extends RouteComponentProps {
|
|||
setErrMessage: React.Dispatch<string>;
|
||||
}
|
||||
|
||||
const Edit: React.SFC<Props> = ({
|
||||
const Edit: React.FunctionComponent<Props> = ({
|
||||
noteUUID,
|
||||
persisted,
|
||||
editor,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ interface Match {
|
|||
|
||||
interface Props extends RouteComponentProps<Match> {}
|
||||
|
||||
const Edit: React.SFC<Props> = ({ match }) => {
|
||||
const Edit: React.FunctionComponent<Props> = ({ match }) => {
|
||||
const { noteUUID } = match.params;
|
||||
|
||||
const sessionKey = getEditorSessionkey(noteUUID);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ interface Props {
|
|||
user: UserData;
|
||||
}
|
||||
|
||||
const AccountMenu: React.SFC<Props> = ({ user }) => {
|
||||
const AccountMenu: React.FunctionComponent<Props> = ({ user }) => {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const optRefs = [useRef(null), useRef(null), useRef(null)];
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ interface Props {
|
|||
label: string;
|
||||
}
|
||||
|
||||
const Item: React.SFC<Props> = ({ to, label }) => {
|
||||
const Item: React.FunctionComponent<Props> = ({ to, label }) => {
|
||||
return (
|
||||
<li className={styles.wrapper}>
|
||||
<Link to={to} className={styles.link}>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
filters: Filters;
|
||||
}
|
||||
|
||||
const Nav: React.SFC<Props> = ({ filters }) => {
|
||||
const Nav: React.FunctionComponent<Props> = ({ filters }) => {
|
||||
const searchObj = toSearchObj(filters);
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ function getHomeDest(location: Location, filters: FiltersState) {
|
|||
return getHomePath(filters);
|
||||
}
|
||||
|
||||
const NormalHeader: React.SFC<Props> = ({ location }) => {
|
||||
const NormalHeader: React.FunctionComponent<Props> = ({ location }) => {
|
||||
const filters = useFilters();
|
||||
const searchObj = toSearchObj(filters);
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import Logo from '../../Icons/Logo';
|
|||
import { getHomePath } from 'web/libs/paths';
|
||||
import styles from './Guest.scss';
|
||||
|
||||
const UserNoteHeader: React.SFC = () => {
|
||||
const UserNoteHeader: React.FunctionComponent = () => {
|
||||
return (
|
||||
<header className={styles.wrapper}>
|
||||
<div className={styles.content}>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import styles from './Placeholder.scss';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const Placeholder: React.SFC<Props> = () => {
|
||||
const Placeholder: React.FunctionComponent<Props> = () => {
|
||||
return <div className={styles.wrapper} />;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import Placeholder from './Placeholder';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const NoteHeader: React.SFC<Props> = () => {
|
||||
const NoteHeader: React.FunctionComponent<Props> = () => {
|
||||
const { user } = useSelector(state => {
|
||||
return {
|
||||
user: state.auth.user
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ function useSetSuggestionVisibility(
|
|||
}, [setIsOpen, triggerRef, inputValue, prevInputValue]);
|
||||
}
|
||||
|
||||
const BookSearch: React.SFC<Props> = ({ value, setValue, disabled }) => {
|
||||
const BookSearch: React.FunctionComponent<Props> = ({ value, setValue, disabled }) => {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const [focusedIdx, setFocusedIdx] = useState(0);
|
||||
const [focusedOptEl, setFocusedOptEl] = useState(null);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ interface Props {
|
|||
disabled: boolean;
|
||||
}
|
||||
|
||||
const WordsSearch: React.SFC<Props> = ({ words, setWords, disabled }) => {
|
||||
const WordsSearch: React.FunctionComponent<Props> = ({ words, setWords, disabled }) => {
|
||||
return (
|
||||
<section className={styles.section}>
|
||||
<label htmlFor="has-words" className={styles.label}>
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ function encodeBookStr(s: string): string[] {
|
|||
return ret;
|
||||
}
|
||||
|
||||
const AdvancedPanel: React.SFC<Props> = ({
|
||||
const AdvancedPanel: React.FunctionComponent<Props> = ({
|
||||
onDismiss,
|
||||
history,
|
||||
location,
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ const searchDelay = 930;
|
|||
|
||||
interface Props extends RouteComponentProps {}
|
||||
|
||||
const SearchBar: React.SFC<Props> = ({ location, history }) => {
|
||||
const SearchBar: React.FunctionComponent<Props> = ({ location, history }) => {
|
||||
const searchTimerRef = useRef(null);
|
||||
const filters = useFilters();
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import styles from './SubscriptionHeader.scss';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const SubscriptionsHeader: React.SFC<Props> = () => {
|
||||
const SubscriptionsHeader: React.FunctionComponent<Props> = () => {
|
||||
const { user } = useSelector(state => {
|
||||
return {
|
||||
user: state.auth.user.data
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ interface PageLinkProps {
|
|||
className?: string;
|
||||
}
|
||||
|
||||
const PageLink: React.SFC<PageLinkProps> = ({
|
||||
const PageLink: React.FunctionComponent<PageLinkProps> = ({
|
||||
direction,
|
||||
disabled,
|
||||
className
|
||||
|
|
@ -93,7 +93,7 @@ const PageLink: React.SFC<PageLinkProps> = ({
|
|||
|
||||
interface PaginatorProps {}
|
||||
|
||||
const Paginator: React.SFC<PaginatorProps> = () => {
|
||||
const Paginator: React.FunctionComponent<PaginatorProps> = () => {
|
||||
const filters = useFilters();
|
||||
const { notes } = useSelector(state => {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
position?: Position;
|
||||
}
|
||||
|
||||
const TopActions: React.SFC<Props> = ({ position }) => {
|
||||
const TopActions: React.FunctionComponent<Props> = ({ position }) => {
|
||||
return (
|
||||
<div
|
||||
className={classnames(styles.wrapper, {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ function getTitle(filters: Filters): string {
|
|||
return 'Notes';
|
||||
}
|
||||
|
||||
const HeaderData: React.SFC<Props> = ({ filters }) => {
|
||||
const HeaderData: React.FunctionComponent<Props> = ({ filters }) => {
|
||||
const title = getTitle(filters);
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ function toDatetime(year: number, month: number) {
|
|||
return `${year}-${monthStr}`;
|
||||
}
|
||||
|
||||
const Header: React.SFC<Props> = ({ year, month }) => {
|
||||
const Header: React.FunctionComponent<Props> = ({ year, month }) => {
|
||||
const monthName = monthNumToFullName(month);
|
||||
const datetime = toDatetime(year, month);
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ interface Props {
|
|||
filters: Filters;
|
||||
}
|
||||
|
||||
const NoteGroupList: React.SFC<Props> = ({
|
||||
const NoteGroupList: React.FunctionComponent<Props> = ({
|
||||
groups,
|
||||
pro,
|
||||
filters,
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ interface Props {
|
|||
filters: Filters;
|
||||
}
|
||||
|
||||
const NoteItem: React.SFC<Props> = ({ note, filters }) => {
|
||||
const NoteItem: React.FunctionComponent<Props> = ({ note, filters }) => {
|
||||
return (
|
||||
<li className={classnames('T-note-item', styles.wrapper, {})}>
|
||||
<Link
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ const HeaderHolder = () => {
|
|||
);
|
||||
};
|
||||
|
||||
const Placeholder: React.SFC = () => {
|
||||
const Placeholder: React.FunctionComponent = () => {
|
||||
return (
|
||||
<Fragment>
|
||||
<HeaderHolder />
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ interface Props {
|
|||
filters: Filters;
|
||||
}
|
||||
|
||||
const NoteGroup: React.SFC<Props> = ({ group, isFirst, filters }) => {
|
||||
const NoteGroup: React.FunctionComponent<Props> = ({ group, isFirst, filters }) => {
|
||||
const { year, month } = group;
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ function useFetchNotes(filters: Filters) {
|
|||
}, [dispatch, filters, prevFilters, user]);
|
||||
}
|
||||
|
||||
const Home: React.SFC<Props> = ({ location }) => {
|
||||
const Home: React.FunctionComponent<Props> = ({ location }) => {
|
||||
const { notes, user } = useSelector(state => {
|
||||
return {
|
||||
user: state.auth.user.data,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ interface Props {
|
|||
cta?: string;
|
||||
}
|
||||
|
||||
const JoinForm: React.SFC<Props> = ({
|
||||
const JoinForm: React.FunctionComponent<Props> = ({
|
||||
onJoin,
|
||||
submitting,
|
||||
email,
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import { useSelector, useDispatch } from '../../store';
|
|||
|
||||
interface Props extends RouteComponentProps<any> {}
|
||||
|
||||
const Join: React.SFC<Props> = ({ location }) => {
|
||||
const Join: React.FunctionComponent<Props> = ({ location }) => {
|
||||
const [errMsg, setErrMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const { formData } = useSelector(state => {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ interface Props {
|
|||
onUpdateEmail: (string) => void;
|
||||
}
|
||||
|
||||
const LoginForm: React.SFC<Props> = ({
|
||||
const LoginForm: React.FunctionComponent<Props> = ({
|
||||
onLogin,
|
||||
submitting,
|
||||
email,
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import { useSelector, useDispatch } from '../../store';
|
|||
|
||||
interface Props extends RouteComponentProps<any> {}
|
||||
|
||||
const Login: React.SFC<Props> = ({ location }) => {
|
||||
const Login: React.FunctionComponent<Props> = ({ location }) => {
|
||||
const [errMsg, setErrMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const dispatch = useDispatch();
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ function useInitFocus({ bookLabel, content, textareaRef, setTriggerFocus }) {
|
|||
}, [setTriggerFocus, bookLabel, textareaRef]);
|
||||
}
|
||||
|
||||
const New: React.SFC<Props> = ({ editor, persisted, history }) => {
|
||||
const New: React.FunctionComponent<Props> = ({ editor, persisted, history }) => {
|
||||
const dispatch = useDispatch();
|
||||
const [errMessage, setErrMessage] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ import styles from './New.scss';
|
|||
|
||||
interface Props extends RouteComponentProps {}
|
||||
|
||||
const New: React.SFC<Props> = ({ history }) => {
|
||||
const New: React.FunctionComponent<Props> = ({ history }) => {
|
||||
const sessionKey = getEditorSessionkey(null);
|
||||
const { editor } = useSelector(state => {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import React from 'react';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const Actions: React.SFC<Props> = () => {
|
||||
const Actions: React.FunctionComponent<Props> = () => {
|
||||
return <div>Actions</div>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ interface Props extends RouteComponentProps {
|
|||
noteUUID: string;
|
||||
}
|
||||
|
||||
const DeleteNoteModal: React.SFC<Props> = ({
|
||||
const DeleteNoteModal: React.FunctionComponent<Props> = ({
|
||||
isOpen,
|
||||
onDismiss,
|
||||
noteUUID,
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ interface Props {
|
|||
note: NoteState;
|
||||
}
|
||||
|
||||
const HeaderData: React.SFC<Props> = ({ note }) => {
|
||||
const HeaderData: React.FunctionComponent<Props> = ({ note }) => {
|
||||
const title = getTitle(note);
|
||||
const description = getDescription(note);
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ interface Props {
|
|||
onDeleteModalOpen: () => void;
|
||||
}
|
||||
|
||||
const Content: React.SFC<Props> = ({ onDeleteModalOpen }) => {
|
||||
const Content: React.FunctionComponent<Props> = ({ onDeleteModalOpen }) => {
|
||||
const { note, user } = useSelector(state => {
|
||||
return {
|
||||
note: state.note.data,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import noteStyles from './NoteContent.scss';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const Placeholder: React.SFC<Props> = () => {
|
||||
const Placeholder: React.FunctionComponent<Props> = () => {
|
||||
return (
|
||||
<div className={noteStyles.frame}>
|
||||
<div className={noteStyles.header}>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ function useFetchData(
|
|||
}, [dispatch, noteUUID, search]);
|
||||
}
|
||||
|
||||
const Note: React.SFC<Props> = ({ match, location }) => {
|
||||
const Note: React.FunctionComponent<Props> = ({ match, location }) => {
|
||||
const { params } = match;
|
||||
const { noteUUID } = params;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ interface Props {
|
|||
submitting: boolean;
|
||||
}
|
||||
|
||||
const PasswordResetConfirmForm: React.SFC<Props> = ({
|
||||
const PasswordResetConfirmForm: React.FunctionComponent<Props> = ({
|
||||
onResetPassword,
|
||||
submitting
|
||||
}) => {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ interface Match {
|
|||
|
||||
interface Props extends RouteComponentProps<Match> {}
|
||||
|
||||
const PasswordResetConfirm: React.SFC<Props> = ({ match, history }) => {
|
||||
const PasswordResetConfirm: React.FunctionComponent<Props> = ({ match, history }) => {
|
||||
const [errorMsg, setErrorMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const dispatch = useDispatch();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface Props {
|
|||
submitting: boolean;
|
||||
}
|
||||
|
||||
const PasswordResetRequestForm: React.SFC<Props> = ({
|
||||
const PasswordResetRequestForm: React.FunctionComponent<Props> = ({
|
||||
onSubmit,
|
||||
submitting
|
||||
}) => {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import styles from './Request.scss';
|
|||
|
||||
interface Props {}
|
||||
|
||||
const PasswordResetRequest: React.SFC<Props> = () => {
|
||||
const PasswordResetRequest: React.FunctionComponent<Props> = () => {
|
||||
const [errorMsg, setErrorMsg] = useState('');
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [processed, setProcessed] = useState(false);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ interface Props {
|
|||
token?: string;
|
||||
}
|
||||
|
||||
const Content: React.SFC<Props> = ({
|
||||
const Content: React.FunctionComponent<Props> = ({
|
||||
data,
|
||||
token,
|
||||
setSuccessMsg,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ interface Match {
|
|||
}
|
||||
interface Props extends RouteComponentProps<Match> {}
|
||||
|
||||
const EmailPreferenceRepetition: React.SFC<Props> = ({ location, match }) => {
|
||||
const EmailPreferenceRepetition: React.FunctionComponent<Props> = ({ location, match }) => {
|
||||
const [data, setData] = useState(null);
|
||||
const [isFetching, setIsFetching] = useState(false);
|
||||
const [successMsg, setSuccessMsg] = useState('');
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
|
||||
|
|
@ -14,7 +32,7 @@ interface Props extends RouteComponentProps {
|
|||
data: RepetitionRuleData;
|
||||
}
|
||||
|
||||
const RepetitionEditContent: React.SFC<Props> = ({
|
||||
const RepetitionEditContent: React.FunctionComponent<Props> = ({
|
||||
history,
|
||||
setErrMsg,
|
||||
data
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import { Link, withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import { Link, withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { BookDomain } from 'jslib/operations/types';
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import classnames from 'classnames';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import classnames from 'classnames';
|
||||
|
||||
|
|
@ -12,7 +30,7 @@ interface Props {
|
|||
setRuleUUIDToDelete: React.Dispatch<any>;
|
||||
}
|
||||
|
||||
const ReptitionList: React.SFC<Props> = ({
|
||||
const ReptitionList: React.FunctionComponent<Props> = ({
|
||||
isFetching,
|
||||
isFetched,
|
||||
items,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
/* Copyright (C) 2019 Monomax Software Pty Ltd
|
||||
*
|
||||
* This file is part of Dnote.
|
||||
*
|
||||
* Dnote is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Dnote is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Dnote. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue