mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-23 23:57:55 -05:00
ae2bc24ffd
Safari < 14 does not support Intl.RelativeTimeFormat which is used in the moderation messaging. Adding this polyfill to support it. RelativeTimeFormat depends on Locale, which is also not available in Safari <14, and PluralRules, not available in Safari < 13. There is a trade off between adding locale-data for all users that load the page regardless of what browser they’re using and whether they get muted, and only localizing the most common languages. In the last 30 days only ~3% of users on scratch use a version of Safari (13.x) that doesn’t support Intl. Of that 3%, these 7 locales would cover over 60% of the users. English will be used by default if the locale data is not available.
166 lines
6.3 KiB
JSON
166 lines
6.3 KiB
JSON
{
|
|
"name": "www",
|
|
"version": "1.0.0",
|
|
"description": "Standalone WWW client for Scratch",
|
|
"scripts": {
|
|
"start": "node ./dev-server/index.js",
|
|
"test": "npm run test:lint && npm run build && npm run test:unit",
|
|
"test:lint": "eslint . --ext .js,.jsx,.json",
|
|
"test:integration": "npm run test:integration:jest && npm run test:smoke",
|
|
"test:integration:jest": "jest ./test/integration/*.test.js",
|
|
"test:integration:remote": "npm run test:integration:jest:remote && npm run test:smoke:sauce",
|
|
"test:integration:jest:remote": "SMOKE_REMOTE=true jest ./test/integration/*.test.js",
|
|
"test:smoke": "tap ./test/integration-legacy/smoke-testing/*.js --timeout=3600 --no-coverage -R classic",
|
|
"test:smoke:verbose": "tap ./test/integration-legacy/smoke-testing/*.js --timeout=3600 --no-coverage -R spec",
|
|
"test:smoke:sauce": "SMOKE_REMOTE=true tap ./test/integration-legacy/smoke-testing/*.js --timeout=60000 --no-coverage -R classic",
|
|
"test:unit": "npm run test:unit:jest && npm run test:unit:tap",
|
|
"test:unit:jest": "jest ./test/unit/ && jest ./test/localization/*.test.js",
|
|
"test:unit:tap": "tap ./test/{unit-legacy,localization-legacy}/*.js --no-coverage -R classic",
|
|
"test:coverage": "tap ./test/{unit-legacy,localization-legacy}/*.js --coverage --coverage-report=lcov",
|
|
"build": "npm run clean && npm run translate && NODE_OPTIONS=--max_old_space_size=8000 webpack --bail",
|
|
"clean": "rm -rf ./build && rm -rf ./intl && mkdir -p build && mkdir -p intl",
|
|
"deploy": "npm run deploy:s3 && npm run deploy:fastly",
|
|
"deploy:fastly": "node ./bin/configure-fastly.js",
|
|
"deploy:s3": "npm run deploy:s3:all && npm run deploy:s3:svg && npm run deploy:s3:js",
|
|
"deploy:s3cmd": "s3cmd sync -P --delete-removed --add-header=Cache-Control:no-cache,public,max-age=3600",
|
|
"deploy:s3:all": "npm run deploy:s3cmd -- --exclude '.DS_Store' --exclude '*.svg' --exclude '*.js' ./build/ s3://$S3_BUCKET_NAME/",
|
|
"deploy:s3:svg": "npm run deploy:s3cmd -- --exclude '*' --include '*.svg' --mime-type 'image/svg+xml' ./build/ s3://$S3_BUCKET_NAME/",
|
|
"deploy:s3:js": "npm run deploy:s3cmd -- --exclude '*' --include '*.js' --mime-type 'application/javascript' ./build/ s3://$S3_BUCKET_NAME/",
|
|
"i18n:push": "./bin/tx-push-www --execute",
|
|
"translate:urls": "node ./bin/get-localized-urls localized-urls.json",
|
|
"translate:files": "node ./bin/build-locales node_modules/scratch-l10n/www intl",
|
|
"translate": "npm run translate:urls && npm run translate:files"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+ssh://git@github.com/llk/scratch-www.git"
|
|
},
|
|
"author": "Massachusetts Institute of Technology",
|
|
"license": "BSD-3-Clause",
|
|
"bugs": {
|
|
"url": "https://github.com/llk/scratch-www/issues"
|
|
},
|
|
"homepage": "https://github.com/llk/scratch-www#readme",
|
|
"dependencies": {
|
|
"@sentry/browser": "4.4.2",
|
|
"bunyan": "1.7.1",
|
|
"clipboard-copy": "2.0.1",
|
|
"compression": "1.6.1",
|
|
"express": "4.16.1",
|
|
"express-http-proxy": "1.1.0",
|
|
"lodash.defaults": "4.0.1",
|
|
"react-helmet": "5.2.0",
|
|
"scratch-parser": "^5.0.0",
|
|
"scratch-storage": "^0.5.1"
|
|
},
|
|
"devDependencies": {
|
|
"@formatjs/intl-locale": "^2.4.13",
|
|
"@formatjs/intl-pluralrules": "^4.0.6",
|
|
"@formatjs/intl-relativetimeformat": "^8.0.3",
|
|
"ajv": "6.4.0",
|
|
"async": "3.1.0",
|
|
"autoprefixer": "6.3.6",
|
|
"babel-cli": "6.26.0",
|
|
"babel-core": "6.23.1",
|
|
"babel-eslint": "10.0.3",
|
|
"babel-loader": "7.1.0",
|
|
"babel-plugin-transform-object-rest-spread": "6.26.0",
|
|
"babel-plugin-transform-require-context": "0.1.1",
|
|
"babel-preset-es2015": "6.22.0",
|
|
"babel-preset-react": "6.22.0",
|
|
"bowser": "1.9.4",
|
|
"cheerio": "1.0.0-rc.2",
|
|
"chromedriver": "86.0.0",
|
|
"classnames": "2.2.5",
|
|
"cookie": "0.4.1",
|
|
"copy-webpack-plugin": "0.2.0",
|
|
"create-react-class": "15.6.2",
|
|
"css-loader": "0.23.1",
|
|
"email-validator": "2.0.4",
|
|
"enzyme": "3.10.0",
|
|
"enzyme-adapter-react-16": "1.14.0",
|
|
"eslint": "5.16.0",
|
|
"eslint-config-scratch": "5.0.0",
|
|
"eslint-plugin-cypress": "^2.0.1",
|
|
"eslint-plugin-json": "2.0.1",
|
|
"eslint-plugin-react": "7.14.2",
|
|
"exenv": "1.2.0",
|
|
"fastly": "1.2.1",
|
|
"file-loader": "4.0.0",
|
|
"formik": "1.5.4",
|
|
"formsy-react": "1.1.4",
|
|
"formsy-react-components": "1.0.0",
|
|
"git-bundle-sha": "0.0.2",
|
|
"glob": "5.0.15",
|
|
"google-libphonenumber": "3.2.6",
|
|
"html-webpack-plugin": "2.22.0",
|
|
"i": "^0.3.6",
|
|
"iso-3166-2": "0.4.0",
|
|
"jest": "^23.6.0",
|
|
"json-loader": "0.5.2",
|
|
"json2po-stream": "1.0.3",
|
|
"keymirror": "0.1.1",
|
|
"lodash.bindall": "4.4.0",
|
|
"lodash.clone": "3.0.3",
|
|
"lodash.defaultsdeep": "4.6.1",
|
|
"lodash.isarray": "3.0.4",
|
|
"lodash.merge": "4.6.2",
|
|
"lodash.mergewith": "4.6.2",
|
|
"lodash.omit": "3.1.0",
|
|
"lodash.range": "3.2.0",
|
|
"lodash.uniqby": "4.7.0",
|
|
"minilog": "2.0.8",
|
|
"node-dir": "0.1.16",
|
|
"node-sass": "4.14.1",
|
|
"npm": "^6.14.11",
|
|
"pako": "0.2.8",
|
|
"plotly.js": "1.47.4",
|
|
"po2icu": "0.0.2",
|
|
"postcss-loader": "2.0.10",
|
|
"prop-types": "15.6.0",
|
|
"query-string": "^5.1.1",
|
|
"react": "16.2.0",
|
|
"react-dom": "16.2.1",
|
|
"react-intl": "2.8.0",
|
|
"react-modal": "3.11.1",
|
|
"react-onclickoutside": "6.7.1",
|
|
"react-plotly.js": "2.4.0",
|
|
"react-redux": "5.0.7",
|
|
"react-responsive": "3.0.0",
|
|
"react-slick": "0.16.0",
|
|
"react-string-replace": "0.4.1",
|
|
"react-telephone-input": "4.3.4",
|
|
"redux": "3.5.2",
|
|
"redux-mock-store": "^1.2.3",
|
|
"redux-thunk": "2.0.1",
|
|
"sass-loader": "6.0.6",
|
|
"scratch-gui": "0.1.0-prerelease.20210202035926",
|
|
"scratch-l10n": "latest",
|
|
"selenium-webdriver": "3.6.0",
|
|
"slick-carousel": "1.6.0",
|
|
"source-map-support": "0.3.2",
|
|
"style-loader": "0.12.3",
|
|
"tap": "14.10.8",
|
|
"url-loader": "2.3.0",
|
|
"watch": "0.16.0",
|
|
"webpack": "2.7.0",
|
|
"webpack-dev-middleware": "2.0.4",
|
|
"xhr": "2.2.0"
|
|
},
|
|
"jest": {
|
|
"setupFiles": [
|
|
"<rootDir>/test/helpers/enzyme-setup.js"
|
|
],
|
|
"moduleNameMapper": {
|
|
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/test/__mocks__/fileMock.js",
|
|
"\\.(css|less|scss)$": "<rootDir>/test/__mocks__/styleMock.js"
|
|
}
|
|
},
|
|
"nyc": {
|
|
"include": [
|
|
"bin/**/*.js",
|
|
"src/**/*.js"
|
|
],
|
|
"all": true
|
|
}
|
|
}
|