diff --git a/.gitignore b/.gitignore index 9b83612..ddb4e54 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,6 @@ npm-debug.* web-build/ -apps/testing-nx-e2e/artifacts \ No newline at end of file +apps/testing-nx-e2e/artifacts +apps/consumer-app-test-e2e/artifacts +apps/dayily-rotine-e2e/artifacts diff --git a/apps/consumer-app-test-e2e/.babelrc b/apps/consumer-app-test-e2e/.babelrc new file mode 100644 index 0000000..61641ec --- /dev/null +++ b/apps/consumer-app-test-e2e/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "@nrwl/react/babel", + { + "runtime": "automatic" + } + ] + ], + "plugins": [] +} diff --git a/apps/consumer-app-test-e2e/.detoxrc.json b/apps/consumer-app-test-e2e/.detoxrc.json new file mode 100644 index 0000000..80e69c0 --- /dev/null +++ b/apps/consumer-app-test-e2e/.detoxrc.json @@ -0,0 +1,100 @@ +{ + "testRunner": "jest", + "runnerConfig": "jest.config.json", + "apps": { + "ios.debug": { + "type": "ios.app", + "build": "cd ../consumer-app-test/ios && xcodebuild -workspace ConsumerAppTest.xcworkspace -scheme ConsumerAppTest -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' -derivedDataPath ./build -quiet", + "binaryPath": "../consumer-app-test/ios/build/Build/Products/Debug-iphonesimulator/ConsumerAppTest.app" + }, + "ios.release": { + "type": "ios.app", + "build": "cd ../consumer-app-test/ios && xcodebuild -workspace ConsumerAppTest.xcworkspace -scheme ConsumerAppTest -configuration Release -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' -derivedDataPath ./build -quiet", + "binaryPath": "../consumer-app-test/ios/build/Build/Products/Release-iphonesimulator/ConsumerAppTest.app" + }, + + "ios.eas": { + "type": "ios.app", + "build": "npx nx run consumer-app-test:download --platform ios --distribution simulator --output=apps/consumer-app-test/dist/", + "binaryPath": "../consumer-app-test/dist/ConsumerAppTest.app" + }, + "ios.local": { + "type": "ios.app", + "build": "npx nx run consumer-app-test:build --platform ios --profile preview --wait --local --no-interactive --output=apps/consumer-app-test/dist/", + "binaryPath": "../consumer-app-test/dist/ConsumerAppTest.app" + }, + + "android.debug": { + "type": "android.apk", + "build": "cd ../consumer-app-test/android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug", + "binaryPath": "../consumer-app-test/android/app/build/outputs/apk/debug/app-debug.apk" + }, + "android.release": { + "type": "android.apk", + "build": "cd ../consumer-app-test/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release", + "binaryPath": "../consumer-app-test/android/app/build/outputs/apk/release/app-release.apk" + }, + + "android.eas": { + "type": "ios.app", + "build": "npx nx run consumer-app-test:download --platform android --output=apps/consumer-app-test/dist/", + "binaryPath": "../consumer-app-test/dist/ConsumerAppTest.apk" + }, + "android.local": { + "type": "ios.app", + "build": "npx nx run consumer-app-test:build --platform android --profile preview --wait --local --no-interactive --output=apps/consumer-app-test/dist/", + "binaryPath": "../consumer-app-test/dist/ConsumerAppTest.apk" + } + }, + "devices": { + "simulator": { + "type": "ios.simulator", + "device": { + "type": "iPhone 13" + } + }, + "emulator": { + "type": "android.emulator", + "device": { + "avdName": "Pixel_4a_API_30" + } + } + }, + "configurations": { + "ios.sim.release": { + "device": "simulator", + "app": "ios.release" + }, + "ios.sim.debug": { + "device": "simulator", + "app": "ios.debug" + }, + + "ios.sim.eas": { + "device": "simulator", + "app": "ios.eas" + }, + "ios.sim.local": { + "device": "simulator", + "app": "ios.local" + }, + + "android.emu.release": { + "device": "emulator", + "app": "android.release" + }, + "android.emu.debug": { + "device": "emulator", + "app": "android.debug" + }, + + "android.emu.eas": { + "device": "simulator", + "app": "android.eas" + }, + "android.emu.local": { + "device": "simulator", + "app": "android.local" + } + } +} diff --git a/apps/consumer-app-test-e2e/.eslintrc.json b/apps/consumer-app-test-e2e/.eslintrc.json new file mode 100644 index 0000000..734ddac --- /dev/null +++ b/apps/consumer-app-test-e2e/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/consumer-app-test-e2e/environment.js b/apps/consumer-app-test-e2e/environment.js new file mode 100644 index 0000000..e2e63ab --- /dev/null +++ b/apps/consumer-app-test-e2e/environment.js @@ -0,0 +1,24 @@ +// setup from https://github.com/wix/Detox/blob/master/docs/Guide.Jest.md#e2eenvironmentjs +const { + DetoxCircusEnvironment, + SpecReporter, + WorkerAssignReporter, +} = require('detox/runners/jest-circus'); + +class CustomDetoxEnvironment extends DetoxCircusEnvironment { + constructor(config, context) { + super(config, context); + + // Can be safely removed, if you are content with the default value (=300000ms) + this.initTimeout = 300000; + + // This takes care of generating status logs on a per-spec basis. By default, Jest only reports at file-level. + // This is strictly optional. + this.registerListeners({ + SpecReporter, + WorkerAssignReporter, + }); + } +} + +module.exports = CustomDetoxEnvironment; diff --git a/apps/consumer-app-test-e2e/jest.config.json b/apps/consumer-app-test-e2e/jest.config.json new file mode 100644 index 0000000..1d9956f --- /dev/null +++ b/apps/consumer-app-test-e2e/jest.config.json @@ -0,0 +1,12 @@ +{ + "preset": "../../jest.preset", + "testEnvironment": "./environment", + "testRunner": "jest-circus/runner", + "testTimeout": 120000, + "reporters": ["detox/runners/jest/streamlineReporter"], + "setupFilesAfterEnv": ["/test-setup.ts"], + "transform": { + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "@nrwl/react/plugins/jest", + "^.+\\.[tj]sx?$": "babel-jest" + } +} diff --git a/apps/consumer-app-test-e2e/project.json b/apps/consumer-app-test-e2e/project.json new file mode 100644 index 0000000..3250a15 --- /dev/null +++ b/apps/consumer-app-test-e2e/project.json @@ -0,0 +1,92 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/consumer-app-test-e2e/src", + "projectType": "application", + "targets": { + "build-ios": { + "executor": "@nrwl/detox:build", + "options": { + "detoxConfiguration": "ios.sim.debug" + }, + "configurations": { + "local": { + "detoxConfiguration": "ios.sim.local" + }, + "bare": { + "detoxConfiguration": "ios.sim.debug" + }, + "production": { + "detoxConfiguration": "ios.sim.release" + } + } + }, + "test-ios": { + "executor": "@nrwl/detox:test", + "options": { + "detoxConfiguration": "ios.sim.eas", + "buildTarget": "consumer-app-test-e2e:build-ios" + }, + "configurations": { + "local": { + "detoxConfiguration": "ios.sim.local", + "buildTarget": "consumer-app-test-e2e:build-ios:local" + }, + "bare": { + "detoxConfiguration": "ios.sim.debug", + "buildTarget": "consumer-app-test-e2e:build-ios:bare" + }, + "production": { + "detoxConfiguration": "ios.sim.release", + "buildTarget": "consumer-app-test-e2e:build-ios:production" + } + } + }, + "build-android": { + "executor": "@nrwl/detox:build", + "options": { + "detoxConfiguration": "android.emu.debug" + }, + "configurations": { + "local": { + "detoxConfiguration": "android.emu.local" + }, + "bare": { + "detoxConfiguration": "android.emu.debug" + }, + "production": { + "detoxConfiguration": "android.emu.release" + } + } + }, + "test-android": { + "executor": "@nrwl/detox:test", + "options": { + "detoxConfiguration": "android.emu.eas", + "buildTarget": "consumer-app-test-e2e:build-ios" + }, + "configurations": { + "local": { + "detoxConfiguration": "android.emu.local", + "buildTarget": "consumer-app-test-e2e:build-ios:local" + }, + "bare": { + "detoxConfiguration": "android.emu.debug", + "buildTarget": "consumer-app-test-e2e:build-ios:bare" + }, + "production": { + "detoxConfiguration": "android.emu.release", + "buildTarget": "consumer-app-test-e2e:build-ios:production" + } + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/consumer-app-test-e2e/**/*.{ts,tsx,js,jsx}"] + } + } + }, + "tags": [], + "implicitDependencies": ["consumer-app-test"] +} diff --git a/apps/consumer-app-test-e2e/src/app.spec.ts b/apps/consumer-app-test-e2e/src/app.spec.ts new file mode 100644 index 0000000..730d607 --- /dev/null +++ b/apps/consumer-app-test-e2e/src/app.spec.ts @@ -0,0 +1,13 @@ +import { device, element, by, expect } from 'detox'; + +describe('ConsumerAppTest', () => { + beforeEach(async () => { + await device.reloadReactNative(); + }); + + it('should display welcome message', async () => { + await expect(element(by.id('heading'))).toHaveText( + 'Welcome ConsumerAppTest 👋' + ); + }); +}); diff --git a/apps/consumer-app-test-e2e/test-setup.ts b/apps/consumer-app-test-e2e/test-setup.ts new file mode 100644 index 0000000..a4e12aa --- /dev/null +++ b/apps/consumer-app-test-e2e/test-setup.ts @@ -0,0 +1,5 @@ +import { device } from 'detox'; + +beforeAll(async () => { + await device.launchApp(); +}); diff --git a/apps/consumer-app-test-e2e/tsconfig.e2e.json b/apps/consumer-app-test-e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a7ccc6e --- /dev/null +++ b/apps/consumer-app-test-e2e/tsconfig.e2e.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": false, + "outDir": "../../dist/out-tsc", + "allowJs": true, + "types": ["node", "jest", "detox"] + }, + "include": ["src/**/*.ts", "src/**/*.js"] +} diff --git a/apps/consumer-app-test-e2e/tsconfig.json b/apps/consumer-app-test-e2e/tsconfig.json new file mode 100644 index 0000000..08841a7 --- /dev/null +++ b/apps/consumer-app-test-e2e/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.e2e.json" + } + ] +} diff --git a/apps/consumer-app-test/.eslintrc.json b/apps/consumer-app-test/.eslintrc.json new file mode 100644 index 0000000..f5788be --- /dev/null +++ b/apps/consumer-app-test/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*", ".expo", "node_modules", "web-build"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@typescript-eslint/ban-ts-comment": "off" + } + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/consumer-app-test/app.json b/apps/consumer-app-test/app.json new file mode 100644 index 0000000..2ce7766 --- /dev/null +++ b/apps/consumer-app-test/app.json @@ -0,0 +1,30 @@ +{ + "expo": { + "name": "ConsumerAppTest", + "slug": "consumer-app-test", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "splash": { + "image": "./assets/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "assetBundlePatterns": ["**/*"], + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#FFFFFF" + } + }, + "web": { + "favicon": "./assets/favicon.png" + } + } +} diff --git a/apps/consumer-app-test/assets/adaptive-icon.png b/apps/consumer-app-test/assets/adaptive-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/apps/consumer-app-test/assets/adaptive-icon.png differ diff --git a/apps/consumer-app-test/assets/favicon.png b/apps/consumer-app-test/assets/favicon.png new file mode 100644 index 0000000..e75f697 Binary files /dev/null and b/apps/consumer-app-test/assets/favicon.png differ diff --git a/apps/consumer-app-test/assets/icon.png b/apps/consumer-app-test/assets/icon.png new file mode 100644 index 0000000..a0b1526 Binary files /dev/null and b/apps/consumer-app-test/assets/icon.png differ diff --git a/apps/consumer-app-test/assets/logo.png b/apps/consumer-app-test/assets/logo.png new file mode 100644 index 0000000..e9b9b6e Binary files /dev/null and b/apps/consumer-app-test/assets/logo.png differ diff --git a/apps/consumer-app-test/assets/splash.png b/apps/consumer-app-test/assets/splash.png new file mode 100644 index 0000000..0e89705 Binary files /dev/null and b/apps/consumer-app-test/assets/splash.png differ diff --git a/apps/consumer-app-test/assets/star.svg b/apps/consumer-app-test/assets/star.svg new file mode 100644 index 0000000..901053d --- /dev/null +++ b/apps/consumer-app-test/assets/star.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/consumer-app-test/babel.config.js b/apps/consumer-app-test/babel.config.js new file mode 100644 index 0000000..9d89e13 --- /dev/null +++ b/apps/consumer-app-test/babel.config.js @@ -0,0 +1,6 @@ +module.exports = function (api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + }; +}; diff --git a/apps/consumer-app-test/eas.json b/apps/consumer-app-test/eas.json new file mode 100644 index 0000000..5922677 --- /dev/null +++ b/apps/consumer-app-test/eas.json @@ -0,0 +1,28 @@ +{ + "build": { + "production": { + "android": { + "buildType": "app-bundle" + } + }, + "development": { + "developmentClient": true, + "distribution": "internal" + }, + "preview": { + "distribution": "internal", + "ios": { + "simulator": true + }, + "android": { + "buildType": "apk" + } + } + }, + "submit": { + "production": {} + }, + "cli": { + "version": ">= 0.55.1" + } +} diff --git a/apps/consumer-app-test/index.js b/apps/consumer-app-test/index.js new file mode 100644 index 0000000..0602236 --- /dev/null +++ b/apps/consumer-app-test/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './src/app/App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/apps/consumer-app-test/jest.config.ts b/apps/consumer-app-test/jest.config.ts new file mode 100644 index 0000000..245de13 --- /dev/null +++ b/apps/consumer-app-test/jest.config.ts @@ -0,0 +1,13 @@ +module.exports = { + displayName: 'consumer-app-test', + resolver: '@nrwl/jest/plugins/resolver', + preset: 'jest-expo', + transformIgnorePatterns: [ + 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)', + ], + moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'], + setupFilesAfterEnv: ['/test-setup.ts'], + moduleNameMapper: { + '.svg': '@nrwl/expo/plugins/jest/svg-mock', + }, +}; diff --git a/apps/consumer-app-test/metro.config.js b/apps/consumer-app-test/metro.config.js new file mode 100644 index 0000000..00d4a24 --- /dev/null +++ b/apps/consumer-app-test/metro.config.js @@ -0,0 +1,25 @@ +const { withNxMetro } = require('@nrwl/expo'); +const { getDefaultConfig } = require('@expo/metro-config'); + +const defaultConfig = getDefaultConfig(__dirname); + +module.exports = (async () => { + defaultConfig.transformer.babelTransformerPath = require.resolve( + 'react-native-svg-transformer' + ); + defaultConfig.resolver.assetExts = defaultConfig.resolver.assetExts.filter( + (ext) => ext !== 'svg' + ); + defaultConfig.resolver.sourceExts.push('svg'); + return withNxMetro(defaultConfig, { + // Change this to true to see debugging info. + // Useful if you have issues resolving modules + debug: false, + // all the file extensions used for imports other than 'ts', 'tsx', 'js', 'jsx' + extensions: [], + // the project root to start the metro server + projectRoot: __dirname, + // Specify any additional (to projectRoot) watch folders, this is used to know which files to watch + watchFolders: [], + }); +})(); diff --git a/apps/consumer-app-test/package.json b/apps/consumer-app-test/package.json new file mode 100644 index 0000000..06cccad --- /dev/null +++ b/apps/consumer-app-test/package.json @@ -0,0 +1,17 @@ +{ + "name": "consumer-app-test", + "version": "0.0.1", + "private": true, + "dependencies": { + "@testing-library/jest-native": "*", + "@testing-library/react-native": "*", + "react-native": "*", + "expo": "*", + "react-native-svg": "*", + "react-native-web": "*" + }, + "scripts": { + "eas-build-pre-install": "cd ../../ && cp package-lock.json ./apps/consumer-app-test/", + "postinstall": "rm -r node_modules && cd ../../ && npm install && npx nx sync-deps consumer-app-test && npx nx ensure-symlink consumer-app-test" + } +} diff --git a/apps/consumer-app-test/project.json b/apps/consumer-app-test/project.json new file mode 100644 index 0000000..d377a94 --- /dev/null +++ b/apps/consumer-app-test/project.json @@ -0,0 +1,108 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/consumer-app-test/src", + "projectType": "application", + "targets": { + "start": { + "executor": "@nrwl/expo:start", + "options": { + "port": 8081 + } + }, + "web": { + "executor": "@nrwl/expo:start", + "options": { + "port": 8081, + "webpack": true + } + }, + "serve": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "nx start consumer-app-test" + } + }, + "run-ios": { + "executor": "@nrwl/expo:run", + "options": { + "platform": "ios" + } + }, + "run-android": { + "executor": "@nrwl/expo:run", + "options": { + "platform": "android" + } + }, + "build": { + "executor": "@nrwl/expo:build", + "options": {} + }, + "build-list": { + "executor": "@nrwl/expo:build-list", + "options": {} + }, + "download": { + "executor": "@nrwl/expo:download", + "options": { + "output": "apps/consumer-app-test/dist" + } + }, + "build-ios": { + "executor": "@nrwl/expo:build-ios", + "options": {} + }, + "build-android": { + "executor": "@nrwl/expo:build-android", + "options": {} + }, + "build-web": { + "executor": "@nrwl/expo:build-web", + "options": {} + }, + "build-status": { + "executor": "@nrwl/expo:build-web", + "options": {} + }, + "sync-deps": { + "executor": "@nrwl/expo:sync-deps", + "options": {} + }, + "ensure-symlink": { + "executor": "@nrwl/expo:ensure-symlink", + "options": {} + }, + "publish": { + "executor": "@nrwl/expo:publish", + "options": {} + }, + "publish-set": { + "executor": "@nrwl/expo:publish-set", + "options": {} + }, + "rollback": { + "executor": "@nrwl/expo:rollback", + "options": {} + }, + "eject": { + "executor": "@nrwl/expo:eject", + "options": {} + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/consumer-app-test/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/apps/consumer-app-test"], + "options": { + "jestConfig": "apps/consumer-app-test/jest.config.ts", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/apps/consumer-app-test/src/app/App.spec.tsx b/apps/consumer-app-test/src/app/App.spec.tsx new file mode 100644 index 0000000..485394b --- /dev/null +++ b/apps/consumer-app-test/src/app/App.spec.tsx @@ -0,0 +1,9 @@ +import * as React from 'react'; +import { render } from '@testing-library/react-native'; + +import App from './App'; + +test('renders correctly', () => { + const { getByTestId } = render(); + expect(getByTestId('heading')).toHaveTextContent('Welcome'); +}); diff --git a/apps/consumer-app-test/src/app/App.tsx b/apps/consumer-app-test/src/app/App.tsx new file mode 100644 index 0000000..b0e6a2d --- /dev/null +++ b/apps/consumer-app-test/src/app/App.tsx @@ -0,0 +1,482 @@ +/* eslint-disable jsx-a11y/accessible-emoji */ +import React, { useRef, useState } from 'react'; +import { + SafeAreaView, + StyleSheet, + ScrollView, + View, + Text, + StatusBar, + TouchableOpacity, + Linking, +} from 'react-native'; + +import Checkmark from './icons/checkmark.svg'; +import Book from './icons/book.svg'; +import ChevronRight from './icons/chevron-right.svg'; +import Blog from './icons/blog.svg'; +import Courses from './icons/courses.svg'; +import YouTube from './icons/youtube.svg'; +import Pointer from './icons/pointer.svg'; +import VSCode from './icons/vscode.svg'; +import NxCloud from './icons/nx-cloud.svg'; +import GitHub from './icons/github.svg'; +import Terminal from './icons/terminal.svg'; +import Heart from './icons/heart.svg'; + +const App = () => { + const [whatsNextYCoord, setWhatsNextYCoord] = useState(0); + const scrollViewRef = useRef(null); + + return ( + <> + + + { + scrollViewRef.current = ref; + }} + contentInsetAdjustmentBehavior="automatic" + style={styles.scrollView} + > + + Hello there, + + Welcome ConsumerAppTest 👋 + + + + + + + + You're up and running + + + { + scrollViewRef.current?.scrollTo({ + x: 0, + y: whatsNextYCoord, + }); + }} + > + + What's next? + + + + + + + + Learning materials + + + Linking.openURL( + 'https://nx.dev/getting-started/intro?utm_source=nx-project' + ) + } + > + + + Documentation + + Everything is in there + + + + + + Linking.openURL('https://blog.nrwl.io/?utm_source=nx-project') + } + > + + + Blog + + Changelog, features & events + + + + + + Linking.openURL( + 'https://www.youtube.com/c/Nrwl_io/videos?utm_source=nx-project' + ) + } + > + + + Youtube channel + + Nx Show, talks & tutorials + + + + + + Linking.openURL( + 'https://nx.dev/tutorial/01-create-application?utm_source=nx-project' + ) + } + > + + + Interactive tutorials + + Create an app, step by step + + + + + + Linking.openURL( + 'https://nxplaybook.com/?utm_source=nx-project' + ) + } + > + + + Video courses + + Nx custom courses + + + + + + + + + Linking.openURL( + 'https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console&utm_source=nx-project' + ) + } + > + + + + + Install Nx Console + + + Plugin for VSCode + + + + + + + + Linking.openURL('https://nx.app/?utm_source=nx-project') + } + > + + + + + + Nx Cloud + + + Enable faster CI & better DX + + + + + nx connect-to-nx-cloud + + + + + + + Linking.openURL('https://nx.app/?utm_source=nx-project') + } + > + + + + + Nx is open source + + + Love Nx? Give us a star! + + + + + + { + const layout = event.nativeEvent.layout; + setWhatsNextYCoord(layout.y); + }} + > + + + Next steps + + + Here are some things you can do with Nx: + + + + + Add UI library + + + + + # Generate UI lib + + + nx g @nrwl/expo:lib ui + + + # Add a component + + nx g \ + + @nrwl/expo:component \ + + + button --project ui + + + + + + + View interactive dependency graph + + + + + + nx dep-graph + + + + + + Run affected commands + + + + + # See what's affected by changes + + + nx affected:dep-graph + + + # run tests for current changes + + + nx affected:text + + + # run e2e tests for current + + + # changes + + + nx affected:e2e + + + + + Carefully crafted with + + + + + + + ); +}; +const styles = StyleSheet.create({ + scrollView: { + backgroundColor: '#ffffff', + }, + codeBlock: { + backgroundColor: 'rgba(55, 65, 81, 1)', + marginVertical: 12, + padding: 12, + borderRadius: 4, + }, + monospace: { + color: '#ffffff', + fontFamily: 'Courier New', + marginVertical: 4, + }, + comment: { + color: '#cccccc', + }, + marginBottomSm: { + marginBottom: 6, + }, + marginBottomMd: { + marginBottom: 18, + }, + marginBottomLg: { + marginBottom: 24, + }, + textLight: { + fontWeight: '300', + }, + textBold: { + fontWeight: '500', + }, + textCenter: { + textAlign: 'center', + }, + text2XS: { + fontSize: 12, + }, + textXS: { + fontSize: 14, + }, + textSm: { + fontSize: 16, + }, + textMd: { + fontSize: 18, + }, + textLg: { + fontSize: 24, + }, + textXL: { + fontSize: 48, + }, + textContainer: { + marginVertical: 12, + }, + textSubtle: { + color: '#6b7280', + }, + section: { + marginVertical: 24, + marginHorizontal: 12, + }, + shadowBox: { + backgroundColor: 'white', + borderRadius: 24, + shadowColor: 'black', + shadowOpacity: 0.15, + shadowOffset: { + width: 1, + height: 4, + }, + shadowRadius: 12, + padding: 24, + marginBottom: 24, + }, + listItem: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + listItemTextContainer: { + marginLeft: 12, + flex: 1, + }, + appTitleText: { + paddingTop: 12, + fontWeight: '500', + }, + hero: { + borderRadius: 12, + backgroundColor: '#143055', + padding: 36, + marginBottom: 24, + }, + heroTitle: { + flex: 1, + flexDirection: 'row', + }, + heroTitleText: { + color: '#ffffff', + marginLeft: 12, + }, + heroText: { + color: '#ffffff', + marginVertical: 12, + }, + whatsNextButton: { + backgroundColor: '#ffffff', + paddingVertical: 16, + borderRadius: 8, + width: '50%', + marginTop: 24, + }, + learning: { + marginVertical: 12, + }, + love: { + marginTop: 12, + justifyContent: 'center', + }, +}); + +export default App; diff --git a/apps/consumer-app-test/src/app/icons/blog.svg b/apps/consumer-app-test/src/app/icons/blog.svg new file mode 100644 index 0000000..b7618ef --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/book.svg b/apps/consumer-app-test/src/app/icons/book.svg new file mode 100644 index 0000000..af2d6df --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/checkmark.svg b/apps/consumer-app-test/src/app/icons/checkmark.svg new file mode 100644 index 0000000..fe2608c --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/chevron-right.svg b/apps/consumer-app-test/src/app/icons/chevron-right.svg new file mode 100644 index 0000000..3328794 --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/courses.svg b/apps/consumer-app-test/src/app/icons/courses.svg new file mode 100644 index 0000000..1a3d480 --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/courses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/github.svg b/apps/consumer-app-test/src/app/icons/github.svg new file mode 100644 index 0000000..266c1f7 --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/heart.svg b/apps/consumer-app-test/src/app/icons/heart.svg new file mode 100644 index 0000000..74c66cb --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/logo.png b/apps/consumer-app-test/src/app/icons/logo.png new file mode 100644 index 0000000..e9b9b6e Binary files /dev/null and b/apps/consumer-app-test/src/app/icons/logo.png differ diff --git a/apps/consumer-app-test/src/app/icons/nx-cloud.svg b/apps/consumer-app-test/src/app/icons/nx-cloud.svg new file mode 100644 index 0000000..0637cbd --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/nx-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/pointer.svg b/apps/consumer-app-test/src/app/icons/pointer.svg new file mode 100644 index 0000000..47cb0ed --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/terminal.svg b/apps/consumer-app-test/src/app/icons/terminal.svg new file mode 100644 index 0000000..2041db0 --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/vscode.svg b/apps/consumer-app-test/src/app/icons/vscode.svg new file mode 100644 index 0000000..70ae6e9 --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/vscode.svg @@ -0,0 +1 @@ +Visual Studio Code \ No newline at end of file diff --git a/apps/consumer-app-test/src/app/icons/youtube.svg b/apps/consumer-app-test/src/app/icons/youtube.svg new file mode 100644 index 0000000..b527eaa --- /dev/null +++ b/apps/consumer-app-test/src/app/icons/youtube.svg @@ -0,0 +1 @@ +YouTube \ No newline at end of file diff --git a/apps/consumer-app-test/test-setup.ts b/apps/consumer-app-test/test-setup.ts new file mode 100644 index 0000000..9f28ad2 --- /dev/null +++ b/apps/consumer-app-test/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-native/extend-expect'; diff --git a/apps/consumer-app-test/tsconfig.app.json b/apps/consumer-app-test/tsconfig.app.json new file mode 100644 index 0000000..c1c6922 --- /dev/null +++ b/apps/consumer-app-test/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "exclude": [ + "jest.config.ts", + "**/*.spec.ts", + "**/*.spec.tsx", + "test-setup.ts" + ], + "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"] +} diff --git a/apps/consumer-app-test/tsconfig.json b/apps/consumer-app-test/tsconfig.json new file mode 100644 index 0000000..d372ed1 --- /dev/null +++ b/apps/consumer-app-test/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "jsx": "react-native", + "lib": ["dom", "esnext"], + "moduleResolution": "node", + "noEmit": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "strict": true + }, + "files": ["../../node_modules/@nrwl/expo/typings/svg.d.ts"], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "exclude": ["node_modules"] +} diff --git a/apps/consumer-app-test/tsconfig.spec.json b/apps/consumer-app-test/tsconfig.spec.json new file mode 100644 index 0000000..ff08add --- /dev/null +++ b/apps/consumer-app-test/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/apps/consumer-app-test/webpack.config.js b/apps/consumer-app-test/webpack.config.js new file mode 100644 index 0000000..20f3184 --- /dev/null +++ b/apps/consumer-app-test/webpack.config.js @@ -0,0 +1,15 @@ +const createExpoWebpackConfigAsync = require('@expo/webpack-config'); +const { withNxWebpack } = require('@nrwl/expo'); + +module.exports = async function (env, argv) { + let config = await createExpoWebpackConfigAsync(env, argv); + config = await withNxWebpack(config); + + // You can override the config here, for example: + // config.resolve.alias = { + // ...config.resolve.alias, + // react: path.resolve('../../node_modules/react'), + // }; + + return config; +}; diff --git a/apps/dayily-rotine-e2e/.babelrc b/apps/dayily-rotine-e2e/.babelrc new file mode 100644 index 0000000..61641ec --- /dev/null +++ b/apps/dayily-rotine-e2e/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "@nrwl/react/babel", + { + "runtime": "automatic" + } + ] + ], + "plugins": [] +} diff --git a/apps/dayily-rotine-e2e/.detoxrc.json b/apps/dayily-rotine-e2e/.detoxrc.json new file mode 100644 index 0000000..0f1ebdf --- /dev/null +++ b/apps/dayily-rotine-e2e/.detoxrc.json @@ -0,0 +1,100 @@ +{ + "testRunner": "jest", + "runnerConfig": "jest.config.json", + "apps": { + "ios.debug": { + "type": "ios.app", + "build": "cd ../dayily-rotine/ios && xcodebuild -workspace DayilyRotine.xcworkspace -scheme DayilyRotine -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' -derivedDataPath ./build -quiet", + "binaryPath": "../dayily-rotine/ios/build/Build/Products/Debug-iphonesimulator/DayilyRotine.app" + }, + "ios.release": { + "type": "ios.app", + "build": "cd ../dayily-rotine/ios && xcodebuild -workspace DayilyRotine.xcworkspace -scheme DayilyRotine -configuration Release -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13' -derivedDataPath ./build -quiet", + "binaryPath": "../dayily-rotine/ios/build/Build/Products/Release-iphonesimulator/DayilyRotine.app" + }, + + "ios.eas": { + "type": "ios.app", + "build": "npx nx run dayily-rotine:download --platform ios --distribution simulator --output=apps/dayily-rotine/dist/", + "binaryPath": "../dayily-rotine/dist/DayilyRotine.app" + }, + "ios.local": { + "type": "ios.app", + "build": "npx nx run dayily-rotine:build --platform ios --profile preview --wait --local --no-interactive --output=apps/dayily-rotine/dist/", + "binaryPath": "../dayily-rotine/dist/DayilyRotine.app" + }, + + "android.debug": { + "type": "android.apk", + "build": "cd ../dayily-rotine/android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug", + "binaryPath": "../dayily-rotine/android/app/build/outputs/apk/debug/app-debug.apk" + }, + "android.release": { + "type": "android.apk", + "build": "cd ../dayily-rotine/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release", + "binaryPath": "../dayily-rotine/android/app/build/outputs/apk/release/app-release.apk" + }, + + "android.eas": { + "type": "ios.app", + "build": "npx nx run dayily-rotine:download --platform android --output=apps/dayily-rotine/dist/", + "binaryPath": "../dayily-rotine/dist/DayilyRotine.apk" + }, + "android.local": { + "type": "ios.app", + "build": "npx nx run dayily-rotine:build --platform android --profile preview --wait --local --no-interactive --output=apps/dayily-rotine/dist/", + "binaryPath": "../dayily-rotine/dist/DayilyRotine.apk" + } + }, + "devices": { + "simulator": { + "type": "ios.simulator", + "device": { + "type": "iPhone 13" + } + }, + "emulator": { + "type": "android.emulator", + "device": { + "avdName": "Pixel_4a_API_30" + } + } + }, + "configurations": { + "ios.sim.release": { + "device": "simulator", + "app": "ios.release" + }, + "ios.sim.debug": { + "device": "simulator", + "app": "ios.debug" + }, + + "ios.sim.eas": { + "device": "simulator", + "app": "ios.eas" + }, + "ios.sim.local": { + "device": "simulator", + "app": "ios.local" + }, + + "android.emu.release": { + "device": "emulator", + "app": "android.release" + }, + "android.emu.debug": { + "device": "emulator", + "app": "android.debug" + }, + + "android.emu.eas": { + "device": "simulator", + "app": "android.eas" + }, + "android.emu.local": { + "device": "simulator", + "app": "android.local" + } + } +} diff --git a/apps/dayily-rotine-e2e/.eslintrc.json b/apps/dayily-rotine-e2e/.eslintrc.json new file mode 100644 index 0000000..734ddac --- /dev/null +++ b/apps/dayily-rotine-e2e/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/dayily-rotine-e2e/environment.js b/apps/dayily-rotine-e2e/environment.js new file mode 100644 index 0000000..e2e63ab --- /dev/null +++ b/apps/dayily-rotine-e2e/environment.js @@ -0,0 +1,24 @@ +// setup from https://github.com/wix/Detox/blob/master/docs/Guide.Jest.md#e2eenvironmentjs +const { + DetoxCircusEnvironment, + SpecReporter, + WorkerAssignReporter, +} = require('detox/runners/jest-circus'); + +class CustomDetoxEnvironment extends DetoxCircusEnvironment { + constructor(config, context) { + super(config, context); + + // Can be safely removed, if you are content with the default value (=300000ms) + this.initTimeout = 300000; + + // This takes care of generating status logs on a per-spec basis. By default, Jest only reports at file-level. + // This is strictly optional. + this.registerListeners({ + SpecReporter, + WorkerAssignReporter, + }); + } +} + +module.exports = CustomDetoxEnvironment; diff --git a/apps/dayily-rotine-e2e/jest.config.json b/apps/dayily-rotine-e2e/jest.config.json new file mode 100644 index 0000000..1d9956f --- /dev/null +++ b/apps/dayily-rotine-e2e/jest.config.json @@ -0,0 +1,12 @@ +{ + "preset": "../../jest.preset", + "testEnvironment": "./environment", + "testRunner": "jest-circus/runner", + "testTimeout": 120000, + "reporters": ["detox/runners/jest/streamlineReporter"], + "setupFilesAfterEnv": ["/test-setup.ts"], + "transform": { + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "@nrwl/react/plugins/jest", + "^.+\\.[tj]sx?$": "babel-jest" + } +} diff --git a/apps/dayily-rotine-e2e/project.json b/apps/dayily-rotine-e2e/project.json new file mode 100644 index 0000000..2c9f41d --- /dev/null +++ b/apps/dayily-rotine-e2e/project.json @@ -0,0 +1,92 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/dayily-rotine-e2e/src", + "projectType": "application", + "targets": { + "build-ios": { + "executor": "@nrwl/detox:build", + "options": { + "detoxConfiguration": "ios.sim.debug" + }, + "configurations": { + "local": { + "detoxConfiguration": "ios.sim.local" + }, + "bare": { + "detoxConfiguration": "ios.sim.debug" + }, + "production": { + "detoxConfiguration": "ios.sim.release" + } + } + }, + "test-ios": { + "executor": "@nrwl/detox:test", + "options": { + "detoxConfiguration": "ios.sim.eas", + "buildTarget": "dayily-rotine-e2e:build-ios" + }, + "configurations": { + "local": { + "detoxConfiguration": "ios.sim.local", + "buildTarget": "dayily-rotine-e2e:build-ios:local" + }, + "bare": { + "detoxConfiguration": "ios.sim.debug", + "buildTarget": "dayily-rotine-e2e:build-ios:bare" + }, + "production": { + "detoxConfiguration": "ios.sim.release", + "buildTarget": "dayily-rotine-e2e:build-ios:production" + } + } + }, + "build-android": { + "executor": "@nrwl/detox:build", + "options": { + "detoxConfiguration": "android.emu.debug" + }, + "configurations": { + "local": { + "detoxConfiguration": "android.emu.local" + }, + "bare": { + "detoxConfiguration": "android.emu.debug" + }, + "production": { + "detoxConfiguration": "android.emu.release" + } + } + }, + "test-android": { + "executor": "@nrwl/detox:test", + "options": { + "detoxConfiguration": "android.emu.eas", + "buildTarget": "dayily-rotine-e2e:build-ios" + }, + "configurations": { + "local": { + "detoxConfiguration": "android.emu.local", + "buildTarget": "dayily-rotine-e2e:build-ios:local" + }, + "bare": { + "detoxConfiguration": "android.emu.debug", + "buildTarget": "dayily-rotine-e2e:build-ios:bare" + }, + "production": { + "detoxConfiguration": "android.emu.release", + "buildTarget": "dayily-rotine-e2e:build-ios:production" + } + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/dayily-rotine-e2e/**/*.{ts,tsx,js,jsx}"] + } + } + }, + "tags": [], + "implicitDependencies": ["dayily-rotine"] +} diff --git a/apps/dayily-rotine-e2e/src/app.spec.ts b/apps/dayily-rotine-e2e/src/app.spec.ts new file mode 100644 index 0000000..e212f6d --- /dev/null +++ b/apps/dayily-rotine-e2e/src/app.spec.ts @@ -0,0 +1,13 @@ +import { device, element, by, expect } from 'detox'; + +describe('DayilyRotine', () => { + beforeEach(async () => { + await device.reloadReactNative(); + }); + + it('should display welcome message', async () => { + await expect(element(by.id('heading'))).toHaveText( + 'Welcome DayilyRotine 👋' + ); + }); +}); diff --git a/apps/dayily-rotine-e2e/test-setup.ts b/apps/dayily-rotine-e2e/test-setup.ts new file mode 100644 index 0000000..a4e12aa --- /dev/null +++ b/apps/dayily-rotine-e2e/test-setup.ts @@ -0,0 +1,5 @@ +import { device } from 'detox'; + +beforeAll(async () => { + await device.launchApp(); +}); diff --git a/apps/dayily-rotine-e2e/tsconfig.e2e.json b/apps/dayily-rotine-e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a7ccc6e --- /dev/null +++ b/apps/dayily-rotine-e2e/tsconfig.e2e.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": false, + "outDir": "../../dist/out-tsc", + "allowJs": true, + "types": ["node", "jest", "detox"] + }, + "include": ["src/**/*.ts", "src/**/*.js"] +} diff --git a/apps/dayily-rotine-e2e/tsconfig.json b/apps/dayily-rotine-e2e/tsconfig.json new file mode 100644 index 0000000..08841a7 --- /dev/null +++ b/apps/dayily-rotine-e2e/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.e2e.json" + } + ] +} diff --git a/apps/dayily-rotine/.eslintrc.json b/apps/dayily-rotine/.eslintrc.json new file mode 100644 index 0000000..f5788be --- /dev/null +++ b/apps/dayily-rotine/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*", ".expo", "node_modules", "web-build"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@typescript-eslint/ban-ts-comment": "off" + } + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/dayily-rotine/app.json b/apps/dayily-rotine/app.json new file mode 100644 index 0000000..fffbcea --- /dev/null +++ b/apps/dayily-rotine/app.json @@ -0,0 +1,30 @@ +{ + "expo": { + "name": "DayilyRotine", + "slug": "dayily-rotine", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "splash": { + "image": "./assets/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "assetBundlePatterns": ["**/*"], + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#FFFFFF" + } + }, + "web": { + "favicon": "./assets/favicon.png" + } + } +} diff --git a/apps/dayily-rotine/assets/adaptive-icon.png b/apps/dayily-rotine/assets/adaptive-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/apps/dayily-rotine/assets/adaptive-icon.png differ diff --git a/apps/dayily-rotine/assets/favicon.png b/apps/dayily-rotine/assets/favicon.png new file mode 100644 index 0000000..e75f697 Binary files /dev/null and b/apps/dayily-rotine/assets/favicon.png differ diff --git a/apps/dayily-rotine/assets/icon.png b/apps/dayily-rotine/assets/icon.png new file mode 100644 index 0000000..a0b1526 Binary files /dev/null and b/apps/dayily-rotine/assets/icon.png differ diff --git a/apps/dayily-rotine/assets/logo.png b/apps/dayily-rotine/assets/logo.png new file mode 100644 index 0000000..e9b9b6e Binary files /dev/null and b/apps/dayily-rotine/assets/logo.png differ diff --git a/apps/dayily-rotine/assets/splash.png b/apps/dayily-rotine/assets/splash.png new file mode 100644 index 0000000..0e89705 Binary files /dev/null and b/apps/dayily-rotine/assets/splash.png differ diff --git a/apps/dayily-rotine/assets/star.svg b/apps/dayily-rotine/assets/star.svg new file mode 100644 index 0000000..901053d --- /dev/null +++ b/apps/dayily-rotine/assets/star.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/dayily-rotine/babel.config.js b/apps/dayily-rotine/babel.config.js new file mode 100644 index 0000000..9d89e13 --- /dev/null +++ b/apps/dayily-rotine/babel.config.js @@ -0,0 +1,6 @@ +module.exports = function (api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + }; +}; diff --git a/apps/dayily-rotine/eas.json b/apps/dayily-rotine/eas.json new file mode 100644 index 0000000..5922677 --- /dev/null +++ b/apps/dayily-rotine/eas.json @@ -0,0 +1,28 @@ +{ + "build": { + "production": { + "android": { + "buildType": "app-bundle" + } + }, + "development": { + "developmentClient": true, + "distribution": "internal" + }, + "preview": { + "distribution": "internal", + "ios": { + "simulator": true + }, + "android": { + "buildType": "apk" + } + } + }, + "submit": { + "production": {} + }, + "cli": { + "version": ">= 0.55.1" + } +} diff --git a/apps/dayily-rotine/index.js b/apps/dayily-rotine/index.js new file mode 100644 index 0000000..0602236 --- /dev/null +++ b/apps/dayily-rotine/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './src/app/App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/apps/dayily-rotine/jest.config.ts b/apps/dayily-rotine/jest.config.ts new file mode 100644 index 0000000..6782368 --- /dev/null +++ b/apps/dayily-rotine/jest.config.ts @@ -0,0 +1,13 @@ +module.exports = { + displayName: 'dayily-rotine', + resolver: '@nrwl/jest/plugins/resolver', + preset: 'jest-expo', + transformIgnorePatterns: [ + 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)', + ], + moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'], + setupFilesAfterEnv: ['/test-setup.ts'], + moduleNameMapper: { + '.svg': '@nrwl/expo/plugins/jest/svg-mock', + }, +}; diff --git a/apps/dayily-rotine/metro.config.js b/apps/dayily-rotine/metro.config.js new file mode 100644 index 0000000..00d4a24 --- /dev/null +++ b/apps/dayily-rotine/metro.config.js @@ -0,0 +1,25 @@ +const { withNxMetro } = require('@nrwl/expo'); +const { getDefaultConfig } = require('@expo/metro-config'); + +const defaultConfig = getDefaultConfig(__dirname); + +module.exports = (async () => { + defaultConfig.transformer.babelTransformerPath = require.resolve( + 'react-native-svg-transformer' + ); + defaultConfig.resolver.assetExts = defaultConfig.resolver.assetExts.filter( + (ext) => ext !== 'svg' + ); + defaultConfig.resolver.sourceExts.push('svg'); + return withNxMetro(defaultConfig, { + // Change this to true to see debugging info. + // Useful if you have issues resolving modules + debug: false, + // all the file extensions used for imports other than 'ts', 'tsx', 'js', 'jsx' + extensions: [], + // the project root to start the metro server + projectRoot: __dirname, + // Specify any additional (to projectRoot) watch folders, this is used to know which files to watch + watchFolders: [], + }); +})(); diff --git a/apps/dayily-rotine/package.json b/apps/dayily-rotine/package.json new file mode 100644 index 0000000..36d5224 --- /dev/null +++ b/apps/dayily-rotine/package.json @@ -0,0 +1,17 @@ +{ + "name": "dayily-rotine", + "version": "0.0.1", + "private": true, + "dependencies": { + "@testing-library/jest-native": "*", + "@testing-library/react-native": "*", + "react-native": "*", + "expo": "*", + "react-native-svg": "*", + "react-native-web": "*" + }, + "scripts": { + "eas-build-pre-install": "cd ../../ && cp package-lock.json ./apps/dayily-rotine/", + "postinstall": "rm -r node_modules && cd ../../ && npm install && npx nx sync-deps dayily-rotine && npx nx ensure-symlink dayily-rotine" + } +} diff --git a/apps/dayily-rotine/project.json b/apps/dayily-rotine/project.json new file mode 100644 index 0000000..b19db73 --- /dev/null +++ b/apps/dayily-rotine/project.json @@ -0,0 +1,108 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/dayily-rotine/src", + "projectType": "application", + "targets": { + "start": { + "executor": "@nrwl/expo:start", + "options": { + "port": 8081 + } + }, + "web": { + "executor": "@nrwl/expo:start", + "options": { + "port": 8081, + "webpack": true + } + }, + "serve": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "nx start dayily-rotine" + } + }, + "run-ios": { + "executor": "@nrwl/expo:run", + "options": { + "platform": "ios" + } + }, + "run-android": { + "executor": "@nrwl/expo:run", + "options": { + "platform": "android" + } + }, + "build": { + "executor": "@nrwl/expo:build", + "options": {} + }, + "build-list": { + "executor": "@nrwl/expo:build-list", + "options": {} + }, + "download": { + "executor": "@nrwl/expo:download", + "options": { + "output": "apps/dayily-rotine/dist" + } + }, + "build-ios": { + "executor": "@nrwl/expo:build-ios", + "options": {} + }, + "build-android": { + "executor": "@nrwl/expo:build-android", + "options": {} + }, + "build-web": { + "executor": "@nrwl/expo:build-web", + "options": {} + }, + "build-status": { + "executor": "@nrwl/expo:build-web", + "options": {} + }, + "sync-deps": { + "executor": "@nrwl/expo:sync-deps", + "options": {} + }, + "ensure-symlink": { + "executor": "@nrwl/expo:ensure-symlink", + "options": {} + }, + "publish": { + "executor": "@nrwl/expo:publish", + "options": {} + }, + "publish-set": { + "executor": "@nrwl/expo:publish-set", + "options": {} + }, + "rollback": { + "executor": "@nrwl/expo:rollback", + "options": {} + }, + "eject": { + "executor": "@nrwl/expo:eject", + "options": {} + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/dayily-rotine/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/apps/dayily-rotine"], + "options": { + "jestConfig": "apps/dayily-rotine/jest.config.ts", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/apps/dayily-rotine/src/app/App.spec.tsx b/apps/dayily-rotine/src/app/App.spec.tsx new file mode 100644 index 0000000..485394b --- /dev/null +++ b/apps/dayily-rotine/src/app/App.spec.tsx @@ -0,0 +1,9 @@ +import * as React from 'react'; +import { render } from '@testing-library/react-native'; + +import App from './App'; + +test('renders correctly', () => { + const { getByTestId } = render(); + expect(getByTestId('heading')).toHaveTextContent('Welcome'); +}); diff --git a/apps/dayily-rotine/src/app/App.tsx b/apps/dayily-rotine/src/app/App.tsx new file mode 100644 index 0000000..55b9559 --- /dev/null +++ b/apps/dayily-rotine/src/app/App.tsx @@ -0,0 +1,482 @@ +/* eslint-disable jsx-a11y/accessible-emoji */ +import React, { useRef, useState } from 'react'; +import { + SafeAreaView, + StyleSheet, + ScrollView, + View, + Text, + StatusBar, + TouchableOpacity, + Linking, +} from 'react-native'; + +import Checkmark from './icons/checkmark.svg'; +import Book from './icons/book.svg'; +import ChevronRight from './icons/chevron-right.svg'; +import Blog from './icons/blog.svg'; +import Courses from './icons/courses.svg'; +import YouTube from './icons/youtube.svg'; +import Pointer from './icons/pointer.svg'; +import VSCode from './icons/vscode.svg'; +import NxCloud from './icons/nx-cloud.svg'; +import GitHub from './icons/github.svg'; +import Terminal from './icons/terminal.svg'; +import Heart from './icons/heart.svg'; + +const App = () => { + const [whatsNextYCoord, setWhatsNextYCoord] = useState(0); + const scrollViewRef = useRef(null); + + return ( + <> + + + { + scrollViewRef.current = ref; + }} + contentInsetAdjustmentBehavior="automatic" + style={styles.scrollView} + > + + Hello there, + + Welcome DayilyRotine 👋 + + + + + + + + You're up and running + + + { + scrollViewRef.current?.scrollTo({ + x: 0, + y: whatsNextYCoord, + }); + }} + > + + What's next? + + + + + + + + Learning materials + + + Linking.openURL( + 'https://nx.dev/getting-started/intro?utm_source=nx-project' + ) + } + > + + + Documentation + + Everything is in there + + + + + + Linking.openURL('https://blog.nrwl.io/?utm_source=nx-project') + } + > + + + Blog + + Changelog, features & events + + + + + + Linking.openURL( + 'https://www.youtube.com/c/Nrwl_io/videos?utm_source=nx-project' + ) + } + > + + + Youtube channel + + Nx Show, talks & tutorials + + + + + + Linking.openURL( + 'https://nx.dev/tutorial/01-create-application?utm_source=nx-project' + ) + } + > + + + Interactive tutorials + + Create an app, step by step + + + + + + Linking.openURL( + 'https://nxplaybook.com/?utm_source=nx-project' + ) + } + > + + + Video courses + + Nx custom courses + + + + + + + + + Linking.openURL( + 'https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console&utm_source=nx-project' + ) + } + > + + + + + Install Nx Console + + + Plugin for VSCode + + + + + + + + Linking.openURL('https://nx.app/?utm_source=nx-project') + } + > + + + + + + Nx Cloud + + + Enable faster CI & better DX + + + + + nx connect-to-nx-cloud + + + + + + + Linking.openURL('https://nx.app/?utm_source=nx-project') + } + > + + + + + Nx is open source + + + Love Nx? Give us a star! + + + + + + { + const layout = event.nativeEvent.layout; + setWhatsNextYCoord(layout.y); + }} + > + + + Next steps + + + Here are some things you can do with Nx: + + + + + Add UI library + + + + + # Generate UI lib + + + nx g @nrwl/expo:lib ui + + + # Add a component + + nx g \ + + @nrwl/expo:component \ + + + button --project ui + + + + + + + View interactive dependency graph + + + + + + nx dep-graph + + + + + + Run affected commands + + + + + # See what's affected by changes + + + nx affected:dep-graph + + + # run tests for current changes + + + nx affected:text + + + # run e2e tests for current + + + # changes + + + nx affected:e2e + + + + + Carefully crafted with + + + + + + + ); +}; +const styles = StyleSheet.create({ + scrollView: { + backgroundColor: '#ffffff', + }, + codeBlock: { + backgroundColor: 'rgba(55, 65, 81, 1)', + marginVertical: 12, + padding: 12, + borderRadius: 4, + }, + monospace: { + color: '#ffffff', + fontFamily: 'Courier New', + marginVertical: 4, + }, + comment: { + color: '#cccccc', + }, + marginBottomSm: { + marginBottom: 6, + }, + marginBottomMd: { + marginBottom: 18, + }, + marginBottomLg: { + marginBottom: 24, + }, + textLight: { + fontWeight: '300', + }, + textBold: { + fontWeight: '500', + }, + textCenter: { + textAlign: 'center', + }, + text2XS: { + fontSize: 12, + }, + textXS: { + fontSize: 14, + }, + textSm: { + fontSize: 16, + }, + textMd: { + fontSize: 18, + }, + textLg: { + fontSize: 24, + }, + textXL: { + fontSize: 48, + }, + textContainer: { + marginVertical: 12, + }, + textSubtle: { + color: '#6b7280', + }, + section: { + marginVertical: 24, + marginHorizontal: 12, + }, + shadowBox: { + backgroundColor: 'white', + borderRadius: 24, + shadowColor: 'black', + shadowOpacity: 0.15, + shadowOffset: { + width: 1, + height: 4, + }, + shadowRadius: 12, + padding: 24, + marginBottom: 24, + }, + listItem: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + listItemTextContainer: { + marginLeft: 12, + flex: 1, + }, + appTitleText: { + paddingTop: 12, + fontWeight: '500', + }, + hero: { + borderRadius: 12, + backgroundColor: '#143055', + padding: 36, + marginBottom: 24, + }, + heroTitle: { + flex: 1, + flexDirection: 'row', + }, + heroTitleText: { + color: '#ffffff', + marginLeft: 12, + }, + heroText: { + color: '#ffffff', + marginVertical: 12, + }, + whatsNextButton: { + backgroundColor: '#ffffff', + paddingVertical: 16, + borderRadius: 8, + width: '50%', + marginTop: 24, + }, + learning: { + marginVertical: 12, + }, + love: { + marginTop: 12, + justifyContent: 'center', + }, +}); + +export default App; diff --git a/apps/dayily-rotine/src/app/icons/blog.svg b/apps/dayily-rotine/src/app/icons/blog.svg new file mode 100644 index 0000000..b7618ef --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/book.svg b/apps/dayily-rotine/src/app/icons/book.svg new file mode 100644 index 0000000..af2d6df --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/checkmark.svg b/apps/dayily-rotine/src/app/icons/checkmark.svg new file mode 100644 index 0000000..fe2608c --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/chevron-right.svg b/apps/dayily-rotine/src/app/icons/chevron-right.svg new file mode 100644 index 0000000..3328794 --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/courses.svg b/apps/dayily-rotine/src/app/icons/courses.svg new file mode 100644 index 0000000..1a3d480 --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/courses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/github.svg b/apps/dayily-rotine/src/app/icons/github.svg new file mode 100644 index 0000000..266c1f7 --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/heart.svg b/apps/dayily-rotine/src/app/icons/heart.svg new file mode 100644 index 0000000..74c66cb --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/logo.png b/apps/dayily-rotine/src/app/icons/logo.png new file mode 100644 index 0000000..e9b9b6e Binary files /dev/null and b/apps/dayily-rotine/src/app/icons/logo.png differ diff --git a/apps/dayily-rotine/src/app/icons/nx-cloud.svg b/apps/dayily-rotine/src/app/icons/nx-cloud.svg new file mode 100644 index 0000000..0637cbd --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/nx-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/pointer.svg b/apps/dayily-rotine/src/app/icons/pointer.svg new file mode 100644 index 0000000..47cb0ed --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/terminal.svg b/apps/dayily-rotine/src/app/icons/terminal.svg new file mode 100644 index 0000000..2041db0 --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/vscode.svg b/apps/dayily-rotine/src/app/icons/vscode.svg new file mode 100644 index 0000000..70ae6e9 --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/vscode.svg @@ -0,0 +1 @@ +Visual Studio Code \ No newline at end of file diff --git a/apps/dayily-rotine/src/app/icons/youtube.svg b/apps/dayily-rotine/src/app/icons/youtube.svg new file mode 100644 index 0000000..b527eaa --- /dev/null +++ b/apps/dayily-rotine/src/app/icons/youtube.svg @@ -0,0 +1 @@ +YouTube \ No newline at end of file diff --git a/apps/dayily-rotine/test-setup.ts b/apps/dayily-rotine/test-setup.ts new file mode 100644 index 0000000..9f28ad2 --- /dev/null +++ b/apps/dayily-rotine/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-native/extend-expect'; diff --git a/apps/dayily-rotine/tsconfig.app.json b/apps/dayily-rotine/tsconfig.app.json new file mode 100644 index 0000000..c1c6922 --- /dev/null +++ b/apps/dayily-rotine/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "exclude": [ + "jest.config.ts", + "**/*.spec.ts", + "**/*.spec.tsx", + "test-setup.ts" + ], + "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"] +} diff --git a/apps/dayily-rotine/tsconfig.json b/apps/dayily-rotine/tsconfig.json new file mode 100644 index 0000000..d372ed1 --- /dev/null +++ b/apps/dayily-rotine/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "jsx": "react-native", + "lib": ["dom", "esnext"], + "moduleResolution": "node", + "noEmit": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "strict": true + }, + "files": ["../../node_modules/@nrwl/expo/typings/svg.d.ts"], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "exclude": ["node_modules"] +} diff --git a/apps/dayily-rotine/tsconfig.spec.json b/apps/dayily-rotine/tsconfig.spec.json new file mode 100644 index 0000000..ff08add --- /dev/null +++ b/apps/dayily-rotine/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/apps/dayily-rotine/webpack.config.js b/apps/dayily-rotine/webpack.config.js new file mode 100644 index 0000000..20f3184 --- /dev/null +++ b/apps/dayily-rotine/webpack.config.js @@ -0,0 +1,15 @@ +const createExpoWebpackConfigAsync = require('@expo/webpack-config'); +const { withNxWebpack } = require('@nrwl/expo'); + +module.exports = async function (env, argv) { + let config = await createExpoWebpackConfigAsync(env, argv); + config = await withNxWebpack(config); + + // You can override the config here, for example: + // config.resolve.alias = { + // ...config.resolve.alias, + // react: path.resolve('../../node_modules/react'), + // }; + + return config; +}; diff --git a/libs/rami/.eslintrc.json b/libs/rami/.eslintrc.json new file mode 100644 index 0000000..f5788be --- /dev/null +++ b/libs/rami/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*", ".expo", "node_modules", "web-build"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@typescript-eslint/ban-ts-comment": "off" + } + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/rami/README.md b/libs/rami/README.md new file mode 100644 index 0000000..4239717 --- /dev/null +++ b/libs/rami/README.md @@ -0,0 +1,7 @@ +# rami + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test rami` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/rami/babel.config.json b/libs/rami/babel.config.json new file mode 100644 index 0000000..7d30f8b --- /dev/null +++ b/libs/rami/babel.config.json @@ -0,0 +1,3 @@ +{ + "presets": ["babel-preset-expo"] +} diff --git a/libs/rami/jest.config.ts b/libs/rami/jest.config.ts new file mode 100644 index 0000000..82040cf --- /dev/null +++ b/libs/rami/jest.config.ts @@ -0,0 +1,13 @@ +module.exports = { + displayName: 'rami', + resolver: '@nrwl/jest/plugins/resolver', + preset: 'jest-expo', + transformIgnorePatterns: [ + 'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)', + ], + moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'], + setupFilesAfterEnv: ['/test-setup.ts'], + moduleNameMapper: { + '.svg': '@nrwl/expo/plugins/jest/svg-mock', + }, +}; diff --git a/libs/rami/project.json b/libs/rami/project.json new file mode 100644 index 0000000..4c742f5 --- /dev/null +++ b/libs/rami/project.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/rami/src", + "projectType": "library", + "tags": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/rami/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/libs/rami"], + "options": { + "jestConfig": "libs/rami/jest.config.ts", + "passWithNoTests": true + } + } + } +} diff --git a/libs/rami/src/index.ts b/libs/rami/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/libs/rami/test-setup.ts b/libs/rami/test-setup.ts new file mode 100644 index 0000000..9f28ad2 --- /dev/null +++ b/libs/rami/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-native/extend-expect'; diff --git a/libs/rami/tsconfig.json b/libs/rami/tsconfig.json new file mode 100644 index 0000000..ec346cf --- /dev/null +++ b/libs/rami/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-native", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/rami/tsconfig.lib.json b/libs/rami/tsconfig.lib.json new file mode 100644 index 0000000..82c3fc4 --- /dev/null +++ b/libs/rami/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "exclude": ["**/*.spec.ts", "**/*.spec.tsx", "test-setup.ts"], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/libs/rami/tsconfig.spec.json b/libs/rami/tsconfig.spec.json new file mode 100644 index 0000000..ff08add --- /dev/null +++ b/libs/rami/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/nx.json b/nx.json index 4e81f8a..455f7f6 100644 --- a/nx.json +++ b/nx.json @@ -8,45 +8,25 @@ "default": { "runner": "@nrwl/nx-cloud", "options": { - "cacheableOperations": [ - "build", - "lint", - "test", - "e2e" - ], + "cacheableOperations": ["build", "lint", "test", "e2e"], "accessToken": "YjdkY2NhNDgtNzJlNi00YTFhLWEwNWItZDVlN2NlY2YzZWY0fHJlYWQtd3JpdGU=" } } }, "targetDefaults": { "build": { - "dependsOn": [ - "^build" - ], - "inputs": [ - "production", - "^production" - ] + "dependsOn": ["^build"], + "inputs": ["production", "^production"] }, "test": { - "inputs": [ - "default", - "^production", - "{workspaceRoot}/jest.preset.js" - ] + "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"] }, "lint": { - "inputs": [ - "default", - "{workspaceRoot}/.eslintrc.json" - ] + "inputs": ["default", "{workspaceRoot}/.eslintrc.json"] } }, "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], + "default": ["{projectRoot}/**/*", "sharedGlobals"], "production": [ "default", "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", diff --git a/package-lock.json b/package-lock.json index 291f679..597e72d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7841,14 +7841,6 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, - "node_modules/@nrwl/webpack/node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@nrwl/webpack/node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -8022,31 +8014,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/webpack/node_modules/clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/@nrwl/webpack/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/@nrwl/webpack/node_modules/copy-webpack-plugin": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", @@ -8147,17 +8114,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/@nrwl/webpack/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@nrwl/webpack/node_modules/fork-ts-checker-webpack-plugin": { "version": "7.2.13", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", @@ -8220,75 +8176,6 @@ "node": ">=10.13.0" } }, - "node_modules/@nrwl/webpack/node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@nrwl/webpack/node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/@nrwl/webpack/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "node_modules/@nrwl/webpack/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -8413,33 +8300,6 @@ "webpack": "^5.0.0" } }, - "node_modules/@nrwl/webpack/node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/@nrwl/webpack/node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, "node_modules/@nrwl/webpack/node_modules/sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", @@ -20127,6 +19987,7 @@ "version": "16.5.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -35515,56 +35376,6 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, "node_modules/webpack-dev-middleware": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", @@ -35883,283 +35694,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/webpack/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/webpack/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "peer": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -42913,8 +42447,7 @@ "@graphql-typed-document-node/core": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "requires": {} + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==" }, "@hapi/hoek": { "version": "9.3.0", @@ -44653,14 +44186,6 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "optional": true, - "peer": true - }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -44821,25 +44346,6 @@ "supports-color": "^7.1.0" } }, - "clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "optional": true, - "peer": true - }, "copy-webpack-plugin": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", @@ -44896,14 +44402,6 @@ } } }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "optional": true, - "peer": true - }, "fork-ts-checker-webpack-plugin": { "version": "7.2.13", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", @@ -44945,52 +44443,6 @@ "is-glob": "^4.0.3" } }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - } - }, - "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -45068,33 +44520,6 @@ "semver": "^7.3.5" } }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, "sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", @@ -45145,8 +44570,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} + "dev": true }, "stylus-loader": { "version": "6.2.0", @@ -46291,8 +45715,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" } } }, @@ -46509,50 +45932,42 @@ "@svgr/babel-plugin-add-jsx-attribute": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==", - "requires": {} + "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==" }, "@svgr/babel-plugin-remove-jsx-attribute": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==", - "requires": {} + "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==" }, "@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz", - "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==", - "requires": {} + "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==" }, "@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz", - "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==", - "requires": {} + "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==" }, "@svgr/babel-plugin-svg-dynamic-title": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz", - "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==", - "requires": {} + "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==" }, "@svgr/babel-plugin-svg-em-dimensions": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz", - "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==", - "requires": {} + "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==" }, "@svgr/babel-plugin-transform-react-native-svg": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz", - "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==", - "requires": {} + "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==" }, "@svgr/babel-plugin-transform-svg-component": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz", - "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==", - "requires": {} + "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==" }, "@svgr/babel-preset": { "version": "6.3.1", @@ -47771,15 +47186,13 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "8.2.0", @@ -47834,8 +47247,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-formats": { "version": "2.1.1", @@ -47870,8 +47282,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -48261,8 +47672,7 @@ "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "requires": {} + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" }, "babel-jest": { "version": "28.1.1", @@ -50127,8 +49537,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "requires": {} + "dev": true }, "css-in-js-utils": { "version": "2.0.1", @@ -50293,8 +49702,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -50863,8 +50271,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true }, "yargs": { "version": "16.2.0", @@ -51679,8 +51086,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", - "dev": true, - "requires": {} + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -51884,8 +51290,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -52307,8 +51712,7 @@ "expo-application": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.2.2.tgz", - "integrity": "sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==", - "requires": {} + "integrity": "sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==" }, "expo-asset": { "version": "8.6.1", @@ -53178,8 +52582,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz", "integrity": "sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w==", - "optional": true, - "requires": {} + "optional": true }, "expo-file-system": { "version": "14.1.0", @@ -53208,8 +52611,7 @@ "expo-keep-awake": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz", - "integrity": "sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==", - "requires": {} + "integrity": "sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==" }, "expo-modules-autolinking": { "version": "0.10.3", @@ -54245,7 +53647,8 @@ "graphql": { "version": "16.5.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", - "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==" + "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "dev": true }, "graphql-tag": { "version": "2.12.6", @@ -54847,8 +54250,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "identity-obj-proxy": { "version": "3.0.0", @@ -56403,8 +55805,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "28.0.2", @@ -58171,8 +57572,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" }, "y18n": { "version": "4.0.3", @@ -58546,8 +57946,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" }, "y18n": { "version": "4.0.3", @@ -61353,29 +60752,25 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-import": { "version": "14.1.0", @@ -61480,8 +60875,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -61516,8 +60910,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -62509,8 +61902,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" } } }, @@ -63248,8 +62640,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz", "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==", - "dev": true, - "requires": {} + "dev": true }, "rollup-plugin-postcss": { "version": "4.0.2", @@ -66017,8 +65408,7 @@ "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" }, "utf8-byte-length": { "version": "1.0.4", @@ -66455,271 +65845,6 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "peer": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "peer": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "peer": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "peer": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "peer": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "peer": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "peer": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "peer": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, "webpack-dev-middleware": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", @@ -67120,8 +66245,7 @@ "version": "8.8.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true, - "requires": {} + "dev": true }, "xcode": { "version": "3.0.1", diff --git a/tsconfig.base.json b/tsconfig.base.json index 87abbfa..8357087 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,8 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@testin-nx/hr": ["libs/hr/src/index.ts"] + "@testin-nx/hr": ["libs/hr/src/index.ts"], + "@testin-nx/rami": ["libs/rami/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] diff --git a/workspace.json b/workspace.json index 4488454..248ecff 100644 --- a/workspace.json +++ b/workspace.json @@ -2,7 +2,12 @@ "$schema": "./node_modules/nx/schemas/workspace-schema.json", "version": 2, "projects": { + "consumer-app-test": "apps/consumer-app-test", + "consumer-app-test-e2e": "apps/consumer-app-test-e2e", + "dayily-rotine": "apps/dayily-rotine", + "dayily-rotine-e2e": "apps/dayily-rotine-e2e", "hr": "libs/hr", + "rami": "libs/rami", "testing-nx": "apps/testing-nx", "testing-nx-e2e": "apps/testing-nx-e2e" }