* Onboarding avatar creator or upload (#2860) * add screen to onboarding flow * update base * add icon * fix icon * fix after merge * create flatlist * add emoji list * add state context, pressables * select/update * add camera icon * add photo selection button * image selection * cleanup * add most needed icons * fix icon naming * add icons * export path strings for emoji * canvas drawing for web * types * move breakpoints to individual steps * create canvas * canvas working 🎉 * update state * it works! * working on both platforms * remove comments * remove log * remove unused web canvas * animate picture selection/removal * compress images on web correctly * add times icon * scrollable horizontal flatlist on web * prefetch * adjustments * add more assets * remove unused smiles * add all the icons * adjust color options * animate grow/shrink selections * change layout on tablet/desktop * better web layout * fix path * adjust web layout * organize * organize imports and cleanup styles * make generated images smaller * implement design changes use row for buttons on web use RNGH FlatList random color at start improve logic update dialog for web update dialog style on mobile some more progress create dialog simplify context start implementing design * rm change * cleanup imports * trigger a pr label * Formatting --------- Co-authored-by: Eric Bailey <git@esb.lol> (cherry picked from commit 087186e3867b0eefb11a056b0b644f5585fa16bd) * UI tweaks * Revert layout change * Gate avi upload * Support returning to profile step * Add Statsig --------- Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
331 lines
12 KiB
JSON
331 lines
12 KiB
JSON
{
|
|
"name": "bsky.app",
|
|
"version": "1.81.0",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=18"
|
|
},
|
|
"packageManager": "yarn@1.22.19",
|
|
"scripts": {
|
|
"prepare": "is-ci || husky install",
|
|
"postinstall": "patch-package && yarn intl:compile",
|
|
"prebuild": "expo prebuild --clean",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"web": "expo start --web",
|
|
"use-build-number": "./scripts/useBuildNumberEnv.sh",
|
|
"use-build-number-with-bump": "./scripts/useBuildNumberEnvWithBump.sh",
|
|
"build-web": "expo export:web && node ./scripts/post-web-build.js && cp -v ./web-build/static/js/*.* ./bskyweb/static/js/ && cp -v ./web-build/static/media/*.png ./bskyweb/static/media/",
|
|
"build-all": "yarn intl:build && yarn use-build-number-with-bump eas build --platform all",
|
|
"build-ios": "yarn use-build-number-with-bump eas build -p ios",
|
|
"build-android": "yarn use-build-number-with-bump eas build -p android",
|
|
"build": "yarn use-build-number-with-bump eas build",
|
|
"build-embed": "cd bskyembed && yarn build && yarn build-snippet && cd .. && node ./scripts/post-embed-build.js",
|
|
"start": "expo start --dev-client",
|
|
"start:prod": "expo start --dev-client --no-dev --minify",
|
|
"clean-cache": "rm -rf node_modules/.cache/babel-loader/*",
|
|
"test": "NODE_ENV=test jest --forceExit --testTimeout=20000 --bail",
|
|
"test-watch": "NODE_ENV=test jest --watchAll",
|
|
"test-ci": "NODE_ENV=test jest --ci --forceExit --reporters=default --reporters=jest-junit",
|
|
"test-coverage": "NODE_ENV=test jest --coverage",
|
|
"lint": "eslint --cache --ext .js,.jsx,.ts,.tsx src",
|
|
"typecheck": "tsc --project ./tsconfig.check.json",
|
|
"e2e:mock-server": "./jest/dev-infra/with-test-redis-and-db.sh ts-node --project tsconfig.e2e.json __e2e__/mock-server.ts",
|
|
"e2e:metro": "NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo run:ios",
|
|
"e2e:build": "NODE_ENV=test detox build -c ios.sim.debug",
|
|
"e2e:run": "NODE_ENV=test detox test --configuration ios.sim.debug --take-screenshots all",
|
|
"perf:test": "NODE_ENV=test maestro test",
|
|
"perf:test:run": "NODE_ENV=test maestro test __e2e__/maestro/scroll.yaml",
|
|
"perf:test:measure": "NODE_ENV=test flashlight test --bundleId xyz.blueskyweb.app --testCommand \"yarn perf:test\" --duration 150000 --resultsFilePath .perf/results.json",
|
|
"perf:test:results": "NODE_ENV=test flashlight report .perf/results.json",
|
|
"perf:measure": "NODE_ENV=test flashlight measure",
|
|
"intl:build": "yarn intl:extract && yarn intl:compile",
|
|
"intl:extract": "lingui extract",
|
|
"intl:compile": "lingui compile",
|
|
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android",
|
|
"update-extensions": "bash scripts/updateExtensions.sh",
|
|
"export": "npx expo export",
|
|
"make-deploy-bundle": "bash scripts/bundleUpdate.sh",
|
|
"generate-webpack-stats-file": "EXPO_PUBLIC_GENERATE_STATS=1 yarn build-web",
|
|
"open-analyzer": "EXPO_PUBLIC_OPEN_ANALYZER=1 yarn build-web"
|
|
},
|
|
"dependencies": {
|
|
"@atproto-labs/api": "^0.12.8-clipclops.0",
|
|
"@atproto/api": "^0.12.6",
|
|
"@bam.tech/react-native-image-resizer": "^3.0.4",
|
|
"@braintree/sanitize-url": "^6.0.2",
|
|
"@discord/bottom-sheet": "bluesky-social/react-native-bottom-sheet",
|
|
"@emoji-mart/react": "^1.1.1",
|
|
"@expo/html-elements": "^0.4.2",
|
|
"@expo/webpack-config": "^19.0.0",
|
|
"@floating-ui/dom": "^1.6.3",
|
|
"@floating-ui/react-dom": "^2.0.8",
|
|
"@formatjs/intl-locale": "^3.4.3",
|
|
"@formatjs/intl-pluralrules": "^5.2.10",
|
|
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
|
"@fortawesome/free-regular-svg-icons": "^6.1.1",
|
|
"@fortawesome/free-solid-svg-icons": "^6.1.1",
|
|
"@fortawesome/react-native-fontawesome": "^0.3.0",
|
|
"@lingui/react": "^4.5.0",
|
|
"@mattermost/react-native-paste-input": "^0.6.4",
|
|
"@miblanchard/react-native-slider": "^2.3.1",
|
|
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
"@react-native-async-storage/async-storage": "1.23.1",
|
|
"@react-native-masked-view/masked-view": "0.3.0",
|
|
"@react-native-menu/menu": "^0.8.0",
|
|
"@react-native-picker/picker": "2.6.1",
|
|
"@react-navigation/bottom-tabs": "^6.5.7",
|
|
"@react-navigation/drawer": "^6.6.2",
|
|
"@react-navigation/native": "^6.1.6",
|
|
"@react-navigation/native-stack": "^6.9.12",
|
|
"@segment/analytics-next": "^1.51.3",
|
|
"@segment/analytics-react": "^1.0.0-rc1",
|
|
"@segment/analytics-react-native": "^2.10.1",
|
|
"@segment/sovran-react-native": "^0.4.5",
|
|
"@sentry/react-native": "5.5.0",
|
|
"@tamagui/focus-scope": "^1.84.1",
|
|
"@tanstack/query-async-storage-persister": "^5.25.0",
|
|
"@tanstack/react-query": "^5.8.1",
|
|
"@tanstack/react-query-persist-client": "^5.25.0",
|
|
"@tiptap/core": "^2.0.0-beta.220",
|
|
"@tiptap/extension-document": "^2.0.0-beta.220",
|
|
"@tiptap/extension-hard-break": "^2.0.3",
|
|
"@tiptap/extension-history": "^2.0.3",
|
|
"@tiptap/extension-mention": "^2.0.0-beta.220",
|
|
"@tiptap/extension-paragraph": "^2.0.0-beta.220",
|
|
"@tiptap/extension-placeholder": "^2.0.0-beta.220",
|
|
"@tiptap/extension-text": "^2.0.0-beta.220",
|
|
"@tiptap/html": "^2.1.11",
|
|
"@tiptap/pm": "^2.0.0-beta.220",
|
|
"@tiptap/react": "^2.0.0-beta.220",
|
|
"@tiptap/suggestion": "^2.0.0-beta.220",
|
|
"@types/invariant": "^2.2.37",
|
|
"@types/lodash.throttle": "^4.1.9",
|
|
"@types/node": "^18.16.2",
|
|
"@zxing/text-encoding": "^0.9.0",
|
|
"array.prototype.findlast": "^1.2.3",
|
|
"await-lock": "^2.2.2",
|
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
|
"base64-js": "^1.5.1",
|
|
"bcp-47-match": "^2.0.3",
|
|
"date-fns": "^2.30.0",
|
|
"email-validator": "^2.0.4",
|
|
"emoji-mart": "^5.5.2",
|
|
"eventemitter3": "^5.0.1",
|
|
"expo": "^50.0.17",
|
|
"expo-application": "^5.8.3",
|
|
"expo-build-properties": "^0.11.1",
|
|
"expo-camera": "~14.0.4",
|
|
"expo-clipboard": "^5.0.1",
|
|
"expo-constants": "~15.4.5",
|
|
"expo-dev-client": "~3.3.8",
|
|
"expo-device": "~5.9.3",
|
|
"expo-file-system": "^16.0.9",
|
|
"expo-haptics": "^12.8.1",
|
|
"expo-image": "~1.10.6",
|
|
"expo-image-manipulator": "^11.8.0",
|
|
"expo-image-picker": "~14.7.1",
|
|
"expo-linear-gradient": "^12.7.2",
|
|
"expo-linking": "^6.2.2",
|
|
"expo-localization": "~14.8.3",
|
|
"expo-media-library": "~15.9.1",
|
|
"expo-navigation-bar": "~2.8.1",
|
|
"expo-notifications": "~0.27.6",
|
|
"expo-sharing": "^11.10.0",
|
|
"expo-splash-screen": "~0.26.4",
|
|
"expo-status-bar": "~1.11.1",
|
|
"expo-system-ui": "~2.9.3",
|
|
"expo-task-manager": "~11.7.2",
|
|
"expo-updates": "~0.24.10",
|
|
"expo-web-browser": "~12.8.2",
|
|
"fast-text-encoding": "^1.0.6",
|
|
"history": "^5.3.0",
|
|
"js-sha256": "^0.9.0",
|
|
"jwt-decode": "^4.0.0",
|
|
"lande": "^1.0.10",
|
|
"lodash.chunk": "^4.2.0",
|
|
"lodash.debounce": "^4.0.8",
|
|
"lodash.isequal": "^4.5.0",
|
|
"lodash.omit": "^4.5.0",
|
|
"lodash.once": "^4.1.1",
|
|
"lodash.random": "^3.2.0",
|
|
"lodash.samplesize": "^4.2.0",
|
|
"lodash.set": "^4.3.2",
|
|
"lodash.shuffle": "^4.2.0",
|
|
"lodash.throttle": "^4.1.1",
|
|
"mobx": "^6.6.1",
|
|
"mobx-react-lite": "^3.4.0",
|
|
"mobx-utils": "^6.0.6",
|
|
"nanoid": "^5.0.5",
|
|
"normalize-url": "^8.0.0",
|
|
"patch-package": "^6.5.1",
|
|
"postinstall-postinstall": "^2.1.0",
|
|
"psl": "^1.9.0",
|
|
"react": "18.2.0",
|
|
"react-avatar-editor": "^13.0.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-keyed-flatten-children": "^3.0.0",
|
|
"react-native": "0.73.2",
|
|
"react-native-date-picker": "^4.4.0",
|
|
"react-native-drawer-layout": "^4.0.0-alpha.3",
|
|
"react-native-fs": "^2.20.0",
|
|
"react-native-gesture-handler": "~2.14.0",
|
|
"react-native-get-random-values": "~1.11.0",
|
|
"react-native-image-crop-picker": "^0.38.1",
|
|
"react-native-ios-context-menu": "^1.15.3",
|
|
"react-native-keyboard-controller": "^1.11.7",
|
|
"react-native-pager-view": "6.2.3",
|
|
"react-native-picker-select": "^8.1.0",
|
|
"react-native-progress": "bluesky-social/react-native-progress",
|
|
"react-native-reanimated": "^3.6.0",
|
|
"react-native-root-siblings": "^4.1.1",
|
|
"react-native-safe-area-context": "4.8.2",
|
|
"react-native-screens": "~3.29.0",
|
|
"react-native-svg": "14.1.0",
|
|
"react-native-uitextview": "^1.1.6",
|
|
"react-native-url-polyfill": "^1.3.0",
|
|
"react-native-uuid": "^2.0.1",
|
|
"react-native-view-shot": "^3.8.0",
|
|
"react-native-web": "~0.19.6",
|
|
"react-native-web-webview": "^1.0.2",
|
|
"react-native-webview": "13.6.4",
|
|
"react-responsive": "^9.0.2",
|
|
"react-textarea-autosize": "^8.5.3",
|
|
"rn-fetch-blob": "^0.12.0",
|
|
"sentry-expo": "~7.0.1",
|
|
"statsig-react-native-expo": "^4.6.1",
|
|
"tippy.js": "^6.3.7",
|
|
"tlds": "^1.234.0",
|
|
"zeego": "^1.6.2",
|
|
"zod": "^3.20.2"
|
|
},
|
|
"devDependencies": {
|
|
"@atproto/dev-env": "^0.3.5",
|
|
"@babel/core": "^7.23.2",
|
|
"@babel/preset-env": "^7.20.0",
|
|
"@babel/runtime": "^7.20.0",
|
|
"@did-plc/server": "^0.0.1",
|
|
"@expo/config-plugins": "7.8.0",
|
|
"@expo/prebuild-config": "6.7.0",
|
|
"@lingui/cli": "^4.5.0",
|
|
"@lingui/macro": "^4.5.0",
|
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
|
"@react-native-community/eslint-config": "^3.0.0",
|
|
"@react-native/typescript-config": "^0.74.0",
|
|
"@testing-library/jest-native": "^5.4.1",
|
|
"@testing-library/react-native": "^11.5.2",
|
|
"@tsconfig/react-native": "^2.0.3",
|
|
"@types/he": "^1.1.2",
|
|
"@types/jest": "^29.4.0",
|
|
"@types/lodash.chunk": "^4.2.7",
|
|
"@types/lodash.debounce": "^4.0.7",
|
|
"@types/lodash.isequal": "^4.5.6",
|
|
"@types/lodash.omit": "^4.5.7",
|
|
"@types/lodash.once": "^4.1.7",
|
|
"@types/lodash.random": "^3.2.7",
|
|
"@types/lodash.samplesize": "^4.2.7",
|
|
"@types/lodash.set": "^4.3.7",
|
|
"@types/lodash.shuffle": "^4.2.7",
|
|
"@types/psl": "^1.1.1",
|
|
"@types/react-avatar-editor": "^13.0.0",
|
|
"@types/react-dom": "^18.2.18",
|
|
"@types/react-responsive": "^8.0.5",
|
|
"@types/react-test-renderer": "^17.0.1",
|
|
"@typescript-eslint/eslint-plugin": "^5.48.2",
|
|
"@typescript-eslint/parser": "^5.48.2",
|
|
"babel-jest": "^29.7.0",
|
|
"babel-loader": "^9.1.2",
|
|
"babel-plugin-macros": "^3.1.0",
|
|
"babel-plugin-module-resolver": "^5.0.0",
|
|
"babel-plugin-react-native-web": "^0.18.12",
|
|
"babel-preset-expo": "^10.0.0",
|
|
"detox": "^20.14.8",
|
|
"eslint": "^8.19.0",
|
|
"eslint-plugin-bsky-internal": "link:./eslint",
|
|
"eslint-plugin-detox": "^1.0.0",
|
|
"eslint-plugin-ft-flow": "^2.0.3",
|
|
"eslint-plugin-lingui": "^0.2.0",
|
|
"eslint-plugin-react": "^7.33.2",
|
|
"eslint-plugin-react-native-a11y": "^3.3.0",
|
|
"eslint-plugin-simple-import-sort": "^12.0.0",
|
|
"html-webpack-plugin": "^5.5.0",
|
|
"husky": "^8.0.3",
|
|
"is-ci": "^3.0.1",
|
|
"jest": "^29.7.0",
|
|
"jest-expo": "^50.0.1",
|
|
"jest-junit": "^15.0.0",
|
|
"lint-staged": "^13.2.3",
|
|
"metro-react-native-babel-preset": "^0.73.7",
|
|
"prettier": "^2.8.3",
|
|
"react-native-dotenv": "^3.3.1",
|
|
"react-refresh": "^0.14.0",
|
|
"react-scripts": "^5.0.1",
|
|
"react-test-renderer": "18.2.0",
|
|
"ts-node": "^10.9.1",
|
|
"typescript": "^5.3.3",
|
|
"url-loader": "^4.1.1",
|
|
"webpack": "^5.75.0",
|
|
"webpack-bundle-analyzer": "^4.10.1",
|
|
"webpack-cli": "^5.0.1",
|
|
"webpack-dev-server": "^4.11.1"
|
|
},
|
|
"resolutions": {
|
|
"@types/react": "^18",
|
|
"**/zeed-dom": "0.10.9"
|
|
},
|
|
"jest": {
|
|
"preset": "jest-expo/ios",
|
|
"setupFilesAfterEnv": [
|
|
"./jest/jestSetup.js",
|
|
"@testing-library/jest-native/extend-expect"
|
|
],
|
|
"moduleFileExtensions": [
|
|
"ts",
|
|
"tsx",
|
|
"js",
|
|
"jsx",
|
|
"json",
|
|
"node"
|
|
],
|
|
"transform": {
|
|
"\\.[jt]sx?$": "babel-jest"
|
|
},
|
|
"transformIgnorePatterns": [
|
|
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|@discord|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|nanoid|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|normalize-url|react-native-svg|@sentry/.*|sentry-expo|bcp-47-match)"
|
|
],
|
|
"modulePathIgnorePatterns": [
|
|
"__tests__/.*/__mocks__",
|
|
"__e2e__/.*"
|
|
],
|
|
"coveragePathIgnorePatterns": [
|
|
"<rootDir>/node_modules/",
|
|
"<rootDir>/src/platform",
|
|
"<rootDir>/src/third-party",
|
|
"<rootDir>/src/view/com/util",
|
|
"<rootDir>/src/state/lib",
|
|
"<rootDir>/__tests__/test-utils.js"
|
|
],
|
|
"reporters": [
|
|
"default",
|
|
"jest-junit"
|
|
]
|
|
},
|
|
"browserslist": {
|
|
"production": [
|
|
">0.2%",
|
|
"not dead",
|
|
"not op_mini all"
|
|
],
|
|
"development": [
|
|
"last 1 chrome version",
|
|
"last 1 firefox version",
|
|
"last 1 safari version"
|
|
]
|
|
},
|
|
"lint-staged": {
|
|
"*{.js,.jsx,.ts,.tsx}": [
|
|
"eslint --cache --fix",
|
|
"prettier --cache --write --ignore-unknown"
|
|
]
|
|
}
|
|
}
|