diff --git a/package-lock.json b/package-lock.json index 8943fca3e9..117e35d236 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4078,22 +4078,41 @@ "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" }, "css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.1.0.tgz", + "integrity": "sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ==", "dev": true, "requires": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.14", + "postcss": "^7.0.17", "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", + "postcss-modules-local-by-default": "^3.0.2", "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.0", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz", + "integrity": "sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ==", + "dev": true + }, + "schema-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.0.0.tgz", + "integrity": "sha512-4JfkJmuT78xkJAZrYivuu6RNfX57ul5u+jsfxwRAdWw5eE1qIY/i4go1A3zAdJlTwYXLbvWHWXVvoYu3PjGf9A==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } } }, "css-to-react-native": { @@ -5341,13 +5360,25 @@ } }, "file-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.0.0.tgz", - "integrity": "sha512-roAbL6IdSGczwfXxhMi6Zq+jD4IfUpL0jWHD7fvmjdOVb7xBfdRUHe4LpBgO23VtVK5AW1OlWZo0p34Jvx3iWg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.1.0.tgz", + "integrity": "sha512-ajDk1nlByoalZAGR4b0H6oD+EGlWnyW1qbSxzaUc7RFiqmn+RbXQQRbTc72jsiUIlVusJ4Et58ltds8ZwTfnAw==", "dev": true, "requires": { - "loader-utils": "^1.2.2", - "schema-utils": "^1.0.0" + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.0.0.tgz", + "integrity": "sha512-4JfkJmuT78xkJAZrYivuu6RNfX57ul5u+jsfxwRAdWw5eE1qIY/i4go1A3zAdJlTwYXLbvWHWXVvoYu3PjGf9A==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } } }, "file-stream-rotator": { @@ -6022,8 +6053,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6079,7 +6109,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6123,14 +6152,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -6560,7 +6587,6 @@ "apollo-link-ws": "1.0.8", "calculate-size": "^1.1.1", "codemirror": "^5.38.0", - "codemirror-graphql": "github:timsuchanek/codemirror-graphql#details-fix", "copy-to-clipboard": "^3.0.8", "cryptiles": "4.1.2", "cuid": "^1.3.8", @@ -6608,6 +6634,14 @@ "zen-observable": "^0.7.1" }, "dependencies": { + "codemirror-graphql": { + "version": "github:timsuchanek/codemirror-graphql#801ec32683c38d6dc0f8f7bc19014a111edc9ebd", + "from": "github:timsuchanek/codemirror-graphql#801ec32683c38d6dc0f8f7bc19014a111edc9ebd", + "requires": { + "graphql-language-service-interface": "^1.0.18", + "graphql-language-service-parser": "^1.0.18" + } + }, "graphql": { "version": "0.11.7", "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.11.7.tgz", @@ -7118,12 +7152,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -9065,7 +9093,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -9075,15 +9102,13 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true + "dev": true } } }, @@ -10244,7 +10269,7 @@ "dev": true }, "parse-server": { - "version": "github:parseplatform/parse-server#82e24cb18d58d92e918f590c3b2e71d27c87d2a9", + "version": "github:parseplatform/parse-server#1b5c04570684746208c22578ef0651f627f8f230", "from": "github:parseplatform/parse-server#master", "dev": true, "requires": { @@ -10826,14 +10851,23 @@ } }, "postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz", + "integrity": "sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ==", + "dev": true + } } }, "postcss-modules-scope": { @@ -10847,12 +10881,12 @@ } }, "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", + "icss-utils": "^4.0.0", "postcss": "^7.0.6" } }, diff --git a/package.json b/package.json index a226a7bc9d..cfdf1b57ee 100644 --- a/package.json +++ b/package.json @@ -79,11 +79,11 @@ "babel-loader": "8.0.6", "babel-plugin-transform-object-rest-spread": "6.26.0", "core-js": "2.6.5", - "css-loader": "2.1.1", + "css-loader": "3.1.0", "eslint": "5.16.0", "eslint-plugin-jest": "22.9.0", "eslint-plugin-react": "7.14.1", - "file-loader": "4.0.0", + "file-loader": "4.1.0", "http-server": "0.11.1", "jest": "24.8.0", "marked": "0.6.2", diff --git a/src/lib/getFileName.js b/src/lib/getFileName.js index d5c74d5f0f..386c88b3f0 100644 --- a/src/lib/getFileName.js +++ b/src/lib/getFileName.js @@ -11,9 +11,6 @@ export default function getFileName(name) { if (name instanceof Parse.File) { return getFileName(name.name()); } - let offset = 37; - if (name.indexOf('tfss-') === 0) { - offset += 5; - } + const offset = name.indexOf('_') + 1; return name.substr(offset); } diff --git a/src/lib/tests/getFileName.test.js b/src/lib/tests/getFileName.test.js new file mode 100644 index 0000000000..72aa20fb80 --- /dev/null +++ b/src/lib/tests/getFileName.test.js @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2016-present, Parse, LLC + * All rights reserved. + * + * This source code is licensed under the license found in the LICENSE file in + * the root directory of this source tree. + */ +jest.dontMock('../getFileName'); +const getFileName = require('../getFileName').default; +const Parse = require('parse'); + +describe('getFileName', () => { + it('get filename prefixed with hex', () => { + const actualFilename = 'profile.jpg'; + expect(getFileName(`7b16230f584b360f667665fcb7d7a98b_${actualFilename}`)).toBe(actualFilename); + + const parseFile = new Parse.File(`7b16230f584b360f667665fcb7d7a98b_${actualFilename}`); + expect(getFileName(parseFile)).toBe(actualFilename); + }); + + it('get filename containing underscore and prefixed with hex', () => { + const actualFilename = 'bg_img.png'; + expect(getFileName(`7b16230f584b360f667665fcb7d7a98b_${actualFilename}`)).toBe(actualFilename); + + const parseFile = new Parse.File(`7b16230f584b360f667665fcb7d7a98b_${actualFilename}`); + expect(getFileName(parseFile)).toBe(actualFilename); + }); +}); diff --git a/webpack/base.config.js b/webpack/base.config.js index f2789d5d92..e816b65da4 100644 --- a/webpack/base.config.js +++ b/webpack/base.config.js @@ -33,8 +33,8 @@ module.exports = { { test: /\.js$/, exclude: /node_modules/, - use: { - loader: 'babel-loader', + use: { + loader: 'babel-loader', query: { plugins: [["@babel/plugin-proposal-decorators", { "legacy": true }], '@babel/transform-regenerator', '@babel/transform-runtime'], presets: ['@babel/preset-react', '@babel/preset-env'] @@ -42,8 +42,19 @@ module.exports = { }, }, { test: /\.scss$/, - use: [ "style-loader", "css-loader?modules&localIdentName=[local]__[hash:base64:5]!sass-loader?includePaths[]=" + - encodeURIComponent(path.resolve(__dirname, '../src')) ] + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + modules: { + localIdentName: '[local]__[hash:base64:5]' + }, + importLoaders: 2 + }, + }, + "sass-loader?includePaths[]=" + encodeURIComponent(path.resolve(__dirname, '../src')) + ] }, { test: /\.css$/, use: [ 'style-loader', 'css-loader' ]