feat: add nx build system

pull/506/head
Jonathan Edenström 3 years ago
parent 89081bc4ab
commit d90cfd2a3b

@ -0,0 +1,13 @@
# Editor configuration, see http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false

@ -0,0 +1,35 @@
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nrwl/nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"]
}
]
}
]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"rules": {}
}
]
}

106
.gitignore vendored

@ -1,4 +1,108 @@
node_modules
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# dependencies
/node_modules
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db
# React Native
## Xcode
**/ios/**/build/
**/ios/**/*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
## Android
**/android/**/build/
**/android/**/.gradle
**/android/**/local.properties
**/android/**/*.iml
## BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
## fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
#
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
## Bundle artifact
*.jsbundle
## CocoaPods
**/ios/Pods/
/
## Nested node_modules
node_modules/
apps/skolplattformen-sthlm-e2e/artifacts
## Nested node_modules
node_modules/
## Nested node_modules
node_modules/
.vscode
output.json
.DS_Store

@ -0,0 +1,4 @@
# Add files here to ignore them from prettier formatting
/dist
/coverage

@ -0,0 +1,7 @@
{
"singleQuote": true,
"semi": false,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false
}

@ -0,0 +1,3 @@
{
"presets": ["module:metro-react-native-babel-preset"]
}

@ -1,8 +1,22 @@
{
"root": true,
"extends": ["@react-native-community", "prettier", "plugin:react-native-a11y/ios"],
"plugins": ["prettier"],
"env": {
"jest": true
}
"extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"],
"ignorePatterns": ["!**/*", "public", ".cache", "node_modules"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {
"@typescript-eslint/ban-ts-comment": "off"
}
},
{
"files": ["*.js", "*.jsx"],
"rules": {
"@typescript-eslint/no-var-requires": "off"
}
}
]
}

@ -40,7 +40,7 @@ public class MainApplication extends Application implements ReactApplication {
@Override
protected String getJSMainModuleName() {
return "index";
return "apps/skolplattformen-sthlm/index";
}
};

@ -1,9 +1,11 @@
/**
* @format
*/
import 'react-native-gesture-handler'
import { AppRegistry } from 'react-native'
import 'react-native-gesture-handler'
import App from './App'
import { name as appName } from './app.json'
console.log(AppRegistry)
AppRegistry.registerComponent(appName, () => App)

@ -370,7 +370,7 @@ PODS:
- React
- RNDateTimePicker (3.4.3):
- React-Core
- RNDeviceInfo (8.3.3):
- RNDeviceInfo (8.4.0):
- React-Core
- RNDevMenu (4.0.2):
- React-Core
@ -378,7 +378,7 @@ PODS:
- React-RCTNetwork
- RNGestureHandler (1.10.3):
- React-Core
- RNLocalize (2.1.4):
- RNLocalize (2.1.5):
- React-Core
- RNReanimated (2.2.2):
- DoubleConversion
@ -409,7 +409,7 @@ PODS:
- React-RCTVibration
- ReactCommon/turbomodule/core
- Yoga
- RNScreens (3.6.0):
- RNScreens (3.8.0):
- React-Core
- React-RCTImage
- RNSVG (12.1.0):
@ -420,9 +420,9 @@ PODS:
- Yoga (~> 1.14)
DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../../../node_modules/react-native/React/FBReactNativeSpec`)
- Flipper (= 0.93.0)
- Flipper-Boost-iOSX (= 1.76.0.1.11)
- Flipper-DoubleConversion (= 3.1.7)
@ -444,52 +444,52 @@ DEPENDENCIES:
- FlipperKit/FlipperKitReactPlugin (= 0.93.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.93.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.93.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (~> 0.8.1)
- libevent (~> 2.1.12)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Core (from `../node_modules/react-native/`)
- React-Core/DevSupport (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- "react-native-cookies (from `../node_modules/@react-native-community/cookies`)"
- react-native-restart (from `../node_modules/react-native-restart`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-simple-toast (from `../node_modules/react-native-simple-toast`)
- react-native-webview (from `../node_modules/react-native-webview`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- RNCalendarEvents (from `../node_modules/react-native-calendar-events`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
- "RNDateTimePicker (from `../node_modules/@react-native-community/datetimepicker`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNDevMenu (from `../node_modules/react-native-dev-menu`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNLocalize (from `../node_modules/react-native-localize`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNSVG (from `../node_modules/react-native-svg`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
- RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../../../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../../../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../../../node_modules/react-native/`)
- React-callinvoker (from `../../../node_modules/react-native/ReactCommon/callinvoker`)
- React-Core (from `../../../node_modules/react-native/`)
- React-Core/DevSupport (from `../../../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../../../node_modules/react-native/`)
- React-CoreModules (from `../../../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../../../node_modules/react-native/ReactCommon/cxxreact`)
- React-hermes (from `../../../node_modules/react-native/ReactCommon/hermes`)
- React-jsi (from `../../../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../../../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../../../node_modules/react-native/ReactCommon/jsinspector`)
- "react-native-cookies (from `../../../node_modules/@react-native-community/cookies`)"
- react-native-restart (from `../../../node_modules/react-native-restart`)
- react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`)
- react-native-simple-toast (from `../../../node_modules/react-native-simple-toast`)
- react-native-webview (from `../../../node_modules/react-native-webview`)
- React-perflogger (from `../../../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../../../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../../../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../../../node_modules/react-native/Libraries/Blob`)
- React-RCTImage (from `../../../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../../../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../../../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../../../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../../../node_modules/react-native/Libraries/Vibration`)
- React-runtimeexecutor (from `../../../node_modules/react-native/ReactCommon/runtimeexecutor`)
- ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`)
- RNCalendarEvents (from `../../../node_modules/react-native-calendar-events`)
- "RNCAsyncStorage (from `../../../node_modules/@react-native-async-storage/async-storage`)"
- "RNCMaskedView (from `../../../node_modules/@react-native-community/masked-view`)"
- "RNDateTimePicker (from `../../../node_modules/@react-native-community/datetimepicker`)"
- RNDeviceInfo (from `../../../node_modules/react-native-device-info`)
- RNDevMenu (from `../../../node_modules/react-native-dev-menu`)
- RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`)
- RNLocalize (from `../../../node_modules/react-native-localize`)
- RNReanimated (from `../../../node_modules/react-native-reanimated`)
- RNScreens (from `../../../node_modules/react-native-screens`)
- RNSVG (from `../../../node_modules/react-native-svg`)
- Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
trunk:
@ -513,95 +513,95 @@ SPEC REPOS:
EXTERNAL SOURCES:
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
:podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
:path: "../node_modules/react-native/Libraries/FBLazyVector"
:path: "../../../node_modules/react-native/Libraries/FBLazyVector"
FBReactNativeSpec:
:path: "../node_modules/react-native/React/FBReactNativeSpec"
:path: "../../../node_modules/react-native/React/FBReactNativeSpec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
:podspec: "../../../node_modules/react-native/third-party-podspecs/glog.podspec"
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
:podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired:
:path: "../node_modules/react-native/Libraries/RCTRequired"
:path: "../../../node_modules/react-native/Libraries/RCTRequired"
RCTTypeSafety:
:path: "../node_modules/react-native/Libraries/TypeSafety"
:path: "../../../node_modules/react-native/Libraries/TypeSafety"
React:
:path: "../node_modules/react-native/"
:path: "../../../node_modules/react-native/"
React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker"
:path: "../../../node_modules/react-native/ReactCommon/callinvoker"
React-Core:
:path: "../node_modules/react-native/"
:path: "../../../node_modules/react-native/"
React-CoreModules:
:path: "../node_modules/react-native/React/CoreModules"
:path: "../../../node_modules/react-native/React/CoreModules"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
:path: "../../../node_modules/react-native/ReactCommon/cxxreact"
React-hermes:
:path: "../node_modules/react-native/ReactCommon/hermes"
:path: "../../../node_modules/react-native/ReactCommon/hermes"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
:path: "../../../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
:path: "../../../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
:path: "../../../node_modules/react-native/ReactCommon/jsinspector"
react-native-cookies:
:path: "../node_modules/@react-native-community/cookies"
:path: "../../../node_modules/@react-native-community/cookies"
react-native-restart:
:path: "../node_modules/react-native-restart"
:path: "../../../node_modules/react-native-restart"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
:path: "../../../node_modules/react-native-safe-area-context"
react-native-simple-toast:
:path: "../node_modules/react-native-simple-toast"
:path: "../../../node_modules/react-native-simple-toast"
react-native-webview:
:path: "../node_modules/react-native-webview"
:path: "../../../node_modules/react-native-webview"
React-perflogger:
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
:path: "../../../node_modules/react-native/ReactCommon/reactperflogger"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
:path: "../../../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
:path: "../../../node_modules/react-native/Libraries/NativeAnimation"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
:path: "../../../node_modules/react-native/Libraries/Blob"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
:path: "../../../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
:path: "../../../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
:path: "../../../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
:path: "../../../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
:path: "../../../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
:path: "../../../node_modules/react-native/Libraries/Vibration"
React-runtimeexecutor:
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
:path: "../../../node_modules/react-native/ReactCommon/runtimeexecutor"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../../node_modules/react-native/ReactCommon"
RNCalendarEvents:
:path: "../node_modules/react-native-calendar-events"
:path: "../../../node_modules/react-native-calendar-events"
RNCAsyncStorage:
:path: "../node_modules/@react-native-async-storage/async-storage"
:path: "../../../node_modules/@react-native-async-storage/async-storage"
RNCMaskedView:
:path: "../node_modules/@react-native-community/masked-view"
:path: "../../../node_modules/@react-native-community/masked-view"
RNDateTimePicker:
:path: "../node_modules/@react-native-community/datetimepicker"
:path: "../../../node_modules/@react-native-community/datetimepicker"
RNDeviceInfo:
:path: "../node_modules/react-native-device-info"
:path: "../../../node_modules/react-native-device-info"
RNDevMenu:
:path: "../node_modules/react-native-dev-menu"
:path: "../../../node_modules/react-native-dev-menu"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
:path: "../../../node_modules/react-native-gesture-handler"
RNLocalize:
:path: "../node_modules/react-native-localize"
:path: "../../../node_modules/react-native-localize"
RNReanimated:
:path: "../node_modules/react-native-reanimated"
:path: "../../../node_modules/react-native-reanimated"
RNScreens:
:path: "../node_modules/react-native-screens"
:path: "../../../node_modules/react-native-screens"
RNSVG:
:path: "../node_modules/react-native-svg"
:path: "../../../node_modules/react-native-svg"
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
:path: "../../../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
@ -656,12 +656,12 @@ SPEC CHECKSUMS:
RNCAsyncStorage: 9b7605e899f9acb2fba33e87952c529731265453
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
RNDateTimePicker: d943800c936fb01c352fcfb70439550d2cb57092
RNDeviceInfo: cc7de0772378f85d8f36ae439df20f05c590a651
RNDeviceInfo: 8a06046616c6b5c03787b04f265fa3b52b37c80b
RNDevMenu: fd325b5554b61fe7f48d9205a3877cf5ee88cd7c
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
RNLocalize: 7f1e5792b65a839af55a9552d05b3558b66d017e
RNLocalize: 74b82db20cc3895ccc25af992c644879bcec2815
RNReanimated: ad24db8af24e3fe1b5c462785bc3db8d5baae2ee
RNScreens: eb0dfb2d6b21d2d7f980ad46b14eb306d2f1062e
RNScreens: 6e1ea5787989f92b0671049b808aef64fa1ef98c
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
Yoga: aa0cb45287ebe1004c02a13f279c55a95f1572f4
@ -669,4 +669,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 85f5a2dfa1de342b427eecb6e9652410ad153247
COCOAPODS: 1.10.1
COCOAPODS: 1.11.2

@ -493,9 +493,9 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-app/Pods-app-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/double-conversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes/hermes.framework/hermes",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
@ -631,9 +631,9 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-app-appTests/Pods-app-appTests-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/double-conversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes/hermes.framework/hermes",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (

@ -42,7 +42,7 @@ static void InitializeFlipper(UIApplication *application) {
} else {
rootView.backgroundColor = [UIColor whiteColor];
}
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
@ -53,7 +53,7 @@ static void InitializeFlipper(UIApplication *application) {
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"apps/skolplattformen-sthlm/index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif

@ -1,15 +1,13 @@
module.exports = {
watchPlugins: [
'jest-watch-typeahead/filename',
'jest-watch-typeahead/testname',
],
displayName: 'skolplattformen-sthlm',
preset: 'react-native',
setupFilesAfterEnv: [
'<rootDir>/setupTests.js',
'@testing-library/jest-native/extend-expect',
],
testPathIgnorePatterns: ['__tests__/Classmates.test.js'],
transformIgnorePatterns: [
'node_modules/(?!(jest-)?@react-native|react-native|@react-native-community|react-navigation|@react-navigation/.*|@ui-kitten/.*)',
],
}
resolver: '@nrwl/jest/plugins/resolver',
moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'],
setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],
transform: {
'\\.(js|ts|tsx)$': require.resolve('react-native/jest/preprocessor.js'),
'^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$': require.resolve(
'react-native/jest/assetFileTransformer.js'
),
},
};

@ -1,27 +1,36 @@
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
const { withNxMetro } = require('@nrwl/react-native')
const MetroConfig = require('@ui-kitten/metro-config')
/**
* @see https://akveo.github.io/react-native-ui-kitten/docs/guides/improving-performance
*/
const evaConfig = {
evaPackage: '@eva-design/eva',
customMappingPath: './design/mapping.json',
}
module.exports = MetroConfig.create(evaConfig, {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
// const evaMetroConfig = MetroConfig.create(evaConfig, {transformer: {
// getTransformOptions: async () => ({
// transform: {
// experimentalImportSupport: false,
// inlineRequires: true,
// },
// }),
// },})
module.exports = withNxMetro(
{
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
},
})
{
// 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: [],
}
)

@ -0,0 +1 @@
/Users/edenstrom/Projects/Private/skolplattformen/node_modules

@ -1,5 +1,5 @@
{
"name": "skolplattformen",
"name": "@skolplattformen/embedded-api",
"version": "0.0.1",
"scripts": {
"android": "react-native run-android",
@ -17,84 +17,51 @@
"postinstall": "yarn extract-licenses"
},
"dependencies": {
"@eva-design/eva": "2.0.0",
"@eva-design/material": "2.0.0",
"@react-native-async-storage/async-storage": "1.15.2",
"@react-native-community/cookies": "5.0.1",
"@react-native-community/datetimepicker": "3.4.3",
"@react-native-community/masked-view": "^0.1.11",
"@react-navigation/bottom-tabs": "5.11.9",
"@react-navigation/native": "5.9.8",
"@react-navigation/stack": "5.14.4",
"@skolplattformen/api-hooks": "3.0.0",
"@skolplattformen/curriculum": "1.4.2",
"@skolplattformen/embedded-api": "5.4.0",
"@ui-kitten/components": "5.0.0",
"@ui-kitten/eva-icons": "5.0.0",
"buffer": "6.0.3",
"deepmerge": "^4.2.2",
"fast-fuzzy": "^1.10.8",
"formik": "2.2.6",
"hermes-engine": "0.8.1",
"i18n-js": "^3.8.0",
"moment": "^2.29.1",
"personnummer": "3.1.3",
"react": "17.0.2",
"react-native": "0.65.1",
"react-native-animatable": "^1.3.3",
"react-native-calendar-events": "2.2.0",
"react-native-dev-menu": "^4.0.2",
"react-native-device-info": "^8.3.3",
"react-native-fix-image": "2.1.0",
"react-native-gesture-handler": "^1.10.3",
"react-native-localize": "^2.0.2",
"react-native-markdown-display": "7.0.0-alpha.2",
"react-native-modal-datetime-picker": "^11.0.0",
"react-native-reanimated": "2.2.2",
"react-native-restart": "^0.0.22",
"react-native-safe-area-context": "^3.2.0",
"react-native-screens": "^3.3.0",
"react-native-simple-toast": "1.1.3",
"react-native-svg": "12.1.0",
"react-native-typography": "1.4.1",
"react-native-webview": "11.4.2",
"valtio": "^1.2.3",
"yup": "0.32.9"
"react": "*",
"react-native": "*",
"@testing-library/react-native": "*",
"@testing-library/jest-native": "*",
"@eva-design/eva": "*",
"@eva-design/material": "*",
"@react-native-async-storage/async-storage": "*",
"@react-native-community/cookies": "*",
"@react-native-community/datetimepicker": "*",
"@react-native-community/masked-view": "*",
"@react-navigation/bottom-tabs": "*",
"@react-navigation/native": "*",
"@react-navigation/stack": "*",
"@ui-kitten/components": "*",
"@ui-kitten/eva-icons": "*",
"@ui-kitten/metro-config": "*",
"hermes-engine": "*",
"react-native-animatable": "*",
"react-native-calendar-events": "*",
"react-native-dev-menu": "*",
"react-native-device-info": "*",
"react-native-fix-image": "*",
"react-native-gesture-handler": "*",
"react-native-localize": "*",
"react-native-markdown-display": "7.0.*",
"react-native-modal-datetime-picker": "*",
"react-native-reanimated": "*",
"react-native-restart": "*",
"react-native-safe-area-context": "*",
"react-native-screens": "*",
"react-native-simple-toast": "*",
"react-native-svg": "*",
"react-native-typography": "*",
"react-native-webview": "*",
"formik": "*",
"moment": "*",
"personnummer": "*",
"yup": "*",
"@testing-library/react-hooks": "*",
"valtio": "*",
"i18n-js": "*",
"deepmerge": "*",
"buffer": "*",
"fast-fuzzy": "*"
},
"devDependencies": {
"@babel/core": "^7.13.15",
"@babel/runtime": "^7.13.10",
"@react-native-community/eslint-config": "^2.0.0",
"@testing-library/jest-native": "^4.0.1",
"@testing-library/react-hooks": "^7.0.0",
"@testing-library/react-native": "7.2.0",
"@types/i18n-js": "^3.8.0",
"@types/jest": "^26.0.22",
"@types/jsuri": "^1.3.30",
"@types/markdown-it": "^12.0.1",
"@types/react-native": "^0.64.2",
"@types/react-native-restart": "^0.0.0",
"@ui-kitten/metro-config": "5.0.0",
"babel-jest": "^26.6.3",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.2.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react-native-a11y": "^2.0.4",
"is-ci-cli": "^2.2.0",
"jest": "^26.6.3",
"jest-watch-typeahead": "^0.6.2",
"metro-react-native-babel-preset": "^0.65.2",
"mockdate": "^3.0.5",
"patch-package": "^6.4.7",
"prettier": "^2.2.1",
"react-native-clean-project": "^3.6.3",
"react-native-codegen": "^0.0.7",
"react-native-oss-license": "^0.4.0",
"react-test-renderer": "17.0.2",
"typescript": "^4.2.4"
},
"private": true,
"resolutions": {
"react": "17.0.2"
}
"devDependencies": {},
"private": true
}

@ -1,6 +1,7 @@
import moment from 'moment'
import 'moment/locale/sv'
import 'react-native-gesture-handler/jestSetup'
import '@testing-library/jest-native/extend-expect';
import moment from 'moment';
import 'moment/locale/sv';
import 'react-native-gesture-handler/jestSetup';
moment.locale('sv')
@ -16,3 +17,4 @@ jest.mock('react-native-reanimated', () => {
return Reanimated
})

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"types": ["node"]
},
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
}

@ -1,21 +1,23 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"target": "esnext",
"module": "commonjs",
"lib": [ "es2019"],
"allowJs": true,
"allowSyntheticDefaultImports": true,
"jsx": "react-native",
"lib": ["dom", "esnext"],
"moduleResolution": "node",
"noEmit": true,
"isolatedModules": true,
"strict": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"skipLibCheck": true,
"resolveJsonModule": true
},
"exclude": [
"node_modules", "babel.config.js", "metro.config.js", "jest.config.js"
]
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"exclude": ["node_modules"]
}

@ -0,0 +1,15 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*.spec.js",
"**/*.spec.jsx",
"**/*.d.ts"
]
}

@ -0,0 +1,3 @@
{
"babelrcRoots": ["*"]
}

@ -0,0 +1,5 @@
const { getJestProjects } = require('@nrwl/jest');
module.exports = {
projects: getJestProjects(),
};

@ -0,0 +1,3 @@
const nxPreset = require('@nrwl/jest/preset');
module.exports = { ...nxPreset };

@ -1,6 +0,0 @@
{
"packages": ["packages/*"],
"npmClient": "yarn",
"useWorkspaces": false,
"version": "0.0.0"
}

@ -0,0 +1,3 @@
{
"presets": ["module:metro-react-native-babel-preset"]
}

@ -1,6 +0,0 @@
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
}

@ -1,19 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser', // Specifies the ESLint parser
parserOptions: {
ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
sourceType: 'module', // Allows for the use of imports
project: ['./tsconfig.eslint.json'],
},
extends: ['airbnb-typescript/base', 'prettier'],
plugins: ['prettier'],
ignorePatterns: ['*.test.ts'],
rules: {
// Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs
// e.g. "@typescript-eslint/explicit-function-return-type": "off",
// '@typescript-eslint/indent': ['error', 2],
'@typescript-eslint/semi': [2, 'never'],
'max-len': ['error', { code: 120, ignoreUrls: true }],
'import/prefer-default-export': 0,
},
}

@ -0,0 +1,22 @@
{
"extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"],
"ignorePatterns": ["!**/*", "public", ".cache", "node_modules"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {
"@typescript-eslint/ban-ts-comment": "off"
}
},
{
"files": ["*.js", "*.jsx"],
"rules": {
"@typescript-eslint/no-var-requires": "off"
}
}
]
}

@ -1,31 +0,0 @@
name: Release
on:
push:
branches:
- main
jobs:
release:
name: Release
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Europe/Stockholm
- name: Install dependencies
run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- name: Build
run: yarn build
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release

@ -1,26 +0,0 @@
# This workflow will do a clean install of node dependencies and run tests
name: Test
on:
pull_request:
branches: [main]
jobs:
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js and run tests
uses: actions/setup-node@v2.1.2
with:
node-version: 14.x
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Europe/Stockholm
- run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- run: yarn lint
- run: yarn test

@ -1,9 +1,13 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
displayName: 'api-skolplattformen',
preset: 'react-native',
resolver: '@nrwl/jest/plugins/resolver',
moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'],
setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],
transform: {
'.(ts|tsx)': 'ts-jest',
'\\.(js|ts|tsx)$': require.resolve('react-native/jest/preprocessor.js'),
'^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$': require.resolve(
'react-native/jest/assetFileTransformer.js'
),
},
testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$',
moduleFileExtensions: ['ts', 'tsx', 'js'],
}
};

@ -1,9 +1,8 @@
{
"name": "@skolplattformen/embedded-api",
"name": "api-skolplattformen",
"version": "0.15.0",
"description": "Since the proxy was blocked (and also deemed a bad idea by some), this is a reboot of the API running in process in the app(s).",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"main": "lib/index.ts",
"files": [
"dist/**/*"
],
@ -19,43 +18,7 @@
"run-dev": "yarn run build && node run",
"publish-package": "npm publish --access public"
},
"peerDependencies": {
"@skolplattformen/curriculum": "^1.3.0"
},
"devDependencies": {
"@react-native-cookies/cookies": "^6.0.7",
"@skolplattformen/curriculum": "^1.4.2",
"@types/base-64": "^1.0.0",
"@types/he": "^1.1.1",
"@types/jest": "^26.0.22",
"@types/luxon": "^1.26.4",
"@types/node-fetch": "^2.5.10",
"@types/tough-cookie": "^4.0.0",
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.22.0",
"eslint": "^7.24.0",
"eslint-config-airbnb-typescript": "^12.3.1",
"eslint-config-prettier": "^8.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-prettier": "^3.4.0",
"fetch-cookie": "^0.11.0",
"https-proxy-agent": "^5.0.0",
"jest": "^26.6.3",
"node-blob": "^0.0.2",
"node-fetch": "^2.6.1",
"prettier": "^2.2.1",
"tough-cookie": "^4.0.0",
"ts-jest": "^26.5.5",
"typescript": "^4.2.4"
},
"dependencies": {
"camelcase-keys": "^6.2.2",
"change-case": "^4.1.2",
"events": "^3.3.0",
"h2m": "^0.7.0",
"he": "^1.2.0",
"js-htmlencode": "^0.3.0",
"luxon": "^1.26.0",
"node-html-parser": "^2.1.0"
"@react-native-cookies/cookies": "*"
}
}

@ -0,0 +1 @@
import '@testing-library/jest-native/extend-expect';

@ -1,5 +0,0 @@
{
"extends": "./tsconfig.json",
"include": ["**/*.ts", "**/*.js"],
"exclude": ["node_modules"]
}

@ -1,20 +1,23 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"target": "ES6",
"module": "CommonJS",
"declaration": true,
"outDir": "./dist",
"strict": true,
"jsx": "react-jsx",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"include": [
"lib"
],
"exclude": [
"node_modules",
"**/__tests__/*",
"**/__mocks__/*",
"**/*.test.ts"
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}
}

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"types": ["node"]
},
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}

@ -0,0 +1,15 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*.spec.js",
"**/*.spec.jsx",
"**/*.d.ts"
]
}

@ -0,0 +1,3 @@
{
"presets": ["module:metro-react-native-babel-preset"]
}

@ -1,17 +0,0 @@
module.exports = {
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'prettier',
],
parserOptions: {
project: './tsconfig.eslint.json',
ecmaVersion: 2018,
sourceType: 'module',
},
rules: {
'@typescript-eslint/semi': [2, 'never'],
},
}

@ -0,0 +1,22 @@
{
"extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"],
"ignorePatterns": ["!**/*", "public", ".cache", "node_modules"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {
"@typescript-eslint/ban-ts-comment": "off"
}
},
{
"files": ["*.js", "*.jsx"],
"rules": {
"@typescript-eslint/no-var-requires": "off"
}
}
]
}

@ -1,33 +0,0 @@
name: Release
on:
push:
branches:
- main
jobs:
release:
name: Release
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Europe/Stockholm
- name: Install dependencies
run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- name: Audit
run: yarn audit
- name: Build
run: yarn build
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release

@ -1,27 +0,0 @@
# This workflow will do a clean install of node dependencies and run tests
name: Test
on:
pull_request:
branches: [main]
jobs:
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js and run tests
uses: actions/setup-node@v2.1.2
with:
node-version: 14.x
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Europe/Stockholm
- run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- run: yarn audit
- run: yarn lint
- run: yarn test

@ -1,9 +1,9 @@
{
"printWidth": 80,
"tabWidth": 2,
"singleQuote": true,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false

@ -1,4 +1,13 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
}
displayName: 'curriculum',
preset: 'react-native',
resolver: '@nrwl/jest/plugins/resolver',
moduleFileExtensions: ['ts', 'js', 'html', 'tsx', 'jsx'],
setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],
transform: {
'\\.(js|ts|tsx)$': require.resolve('react-native/jest/preprocessor.js'),
'^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$': require.resolve(
'react-native/jest/assetFileTransformer.js'
),
},
};

@ -2,8 +2,7 @@
"name": "@skolplattformen/curriculum",
"version": "0.1.0",
"description": "Swedish curriculum codes to plain text",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"main": "src/index.ts",
"files": [
"dist/**/*"
],
@ -17,21 +16,5 @@
"build": "tsc",
"prepare": "yarn build",
"publish-package": "npm publish --access public"
},
"devDependencies": {
"@types/eslint": "^7.2.9",
"@types/jest": "^26.0.22",
"@typescript-eslint/eslint-plugin": "^4.21.0",
"@typescript-eslint/parser": "^4.21.0",
"eslint": "^7.24.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-prettier": "^3.3.1",
"jest": "^26.6.3",
"prettier": "^2.2.1",
"ts-jest": "^26.5.4",
"typescript": "^4.2.4"
},
"dependencies": {
"deepmerge": "^4.2.2"
}
}

@ -0,0 +1 @@
import '@testing-library/jest-native/extend-expect';

@ -1,9 +0,0 @@
{
"extends": "./tsconfig.json",
"include": [
"src/*.ts"
],
"exclude": [
"node_modules"
]
}

@ -1,20 +1,23 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"target": "ES2015",
"module": "CommonJS",
"jsx": "react-jsx",
"allowJs": true,
"esModuleInterop": true,
"declaration": true,
"outDir": "./dist",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"sourceMap": true
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"include": [
"src",
"src/**/*.json"
],
"exclude": [
"node_modules",
"**/*.test.ts"
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"types": ["node"]
},
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}

@ -0,0 +1,15 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*.spec.js",
"**/*.spec.jsx",
"**/*.d.ts"
]
}

@ -0,0 +1,12 @@
{
"presets": [
[
"@nrwl/react/babel",
{
"runtime": "automatic",
"useBuiltIns": "usage"
}
]
],
"plugins": []
}

@ -1,15 +0,0 @@
module.exports = {
extends: [
'airbnb-typescript',
'plugin:jest/recommended'
],
parserOptions: {
project: `./tsconfig.json`,
},
rules: {
'@typescript-eslint/semi': ['error', 'never'],
'jest/no-mocks-import': [0],
'max-len': [1, 110],
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx', '.tsx'] }],
},
}

@ -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": {}
}
]
}

@ -1,27 +0,0 @@
name: Release
on:
push:
branches:
- main
jobs:
release:
name: Release
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install dependencies
run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- name: Build
run: yarn build
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release

@ -1,20 +0,0 @@
# This workflow will do a clean install of node dependencies and run tests
name: Test
on:
pull_request:
branches: [main]
jobs:
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js and run tests
uses: actions/setup-node@v2.1.2
with:
node-version: 14.x
- run: yarn install --immutable --silent --non-interactive 2> >(grep -v warning 1>&2)
- run: yarn lint
- run: yarn test

@ -1,7 +0,0 @@
module.exports = {
presets: [
'@babel/preset-env',
'@babel/preset-react',
'@babel/preset-typescript',
],
}

@ -1,13 +1,9 @@
module.exports = {
// Automatically clear mock calls and instances between every test
clearMocks: true,
// The directory where Jest should output its coverage files
coverageDirectory: 'coverage',
// Indicates which provider should be used to instrument code for coverage
coverageProvider: 'v8',
// The paths to modules that run some code to configure or set up the testing environment before each test
// setupFiles: ['<rootDir>/jest.setup.js'],
// The test environment that will be used for testing
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
}
displayName: 'hooks',
preset: '../../jest.preset.js',
transform: {
'^.+\\.[tj]sx?$': 'babel-jest',
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
coverageDirectory: '../../coverage/libs/hooks',
};

@ -2,8 +2,7 @@
"name": "@skolplattformen/api-hooks",
"description": "React hooks for accessing api with cached results",
"version": "0.0.1",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"main": "src/index.ts",
"files": [
"dist/**/*"
],
@ -18,46 +17,6 @@
"prepare": "yarn build",
"publish-package": "npm publish --access public"
},
"dependencies": {
"luxon": "^1.26.0",
"react-redux": "^7.2.3",
"redux": "^4.0.5"
},
"peerDependencies": {
"@skolplattformen/curriculum": "^1.3.0",
"@skolplattformen/embedded-api": "^5.1.0",
"react": "^16.11.0"
},
"devDependencies": {
"@babel/preset-env": "^7.13.15",
"@babel/preset-react": "^7.13.13",
"@babel/preset-typescript": "^7.13.0",
"@skolplattformen/curriculum": "^1.3.0",
"@skolplattformen/embedded-api": "^5.1.0",
"@testing-library/jest-dom": "^5.11.10",
"@testing-library/react": "^11.2.6",
"@testing-library/react-hooks": "^5.1.1",
"@types/jest": "^26.0.22",
"@types/luxon": "^1.26.4",
"@types/react": "^16.14.3",
"@types/react-redux": "^7.1.16",
"@typescript-eslint/eslint-plugin": "^4.21.0",
"babel-jest": "^26.6.3",
"eslint": "^7.23.0",
"eslint-config-airbnb-typescript": "^12.3.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.3.4",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.23.2",
"eslint-plugin-react-hooks": "^4.2.0",
"events": "^3.3.0",
"jest": "^26.6.3",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-test-renderer": "^16.11.0",
"regenerator-runtime": "^0.13.7",
"typescript": "^3.9.7"
},
"publishConfig": {
"access": "public"
}

@ -1,15 +1,23 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"target": "ES6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
"jsx": "react", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
"declaration": true, /* Generates corresponding '.d.ts' file. */
"sourceMap": true, /* Generates corresponding '.map' file. */
"outDir": "./dist", /* Redirect output structure to the directory. */
"strict": true, /* Enable all strict type-checking options. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
"sourceRoot": "./src", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
"skipLibCheck": true, /* Skip type checking of declaration files. */
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
}
}
"jsx": "react-jsx",
"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"
}
]
}

@ -0,0 +1,13 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"types": ["node"]
},
"files": [
"../../node_modules/@nrwl/react/typings/cssmodule.d.ts",
"../../node_modules/@nrwl/react/typings/image.d.ts"
],
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}

@ -0,0 +1,15 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*.spec.js",
"**/*.spec.jsx",
"**/*.d.ts"
]
}

@ -0,0 +1,47 @@
{
"npmScope": "skolplattformen",
"affected": {
"defaultBase": "master"
},
"implicitDependencies": {
"package.json": {
"dependencies": "*",
"devDependencies": "*"
},
".eslintrc.json": "*"
},
"tasksRunnerOptions": {
"default": {
"runner": "@nrwl/workspace/tasks-runners/default",
"options": {
"cacheableOperations": ["build", "lint", "test", "e2e"]
}
}
},
"targetDependencies": {
"build": [
{
"target": "build",
"projects": "dependencies"
}
]
},
"projects": {
"api-skolplattformen": {
"tags": []
},
"curriculum": {
"tags": []
},
"hooks": {
"tags": []
},
"skolplattformen-sthlm": {
"tags": []
},
"skolplattformen-sthlm-e2e": {
"tags": [],
"implicitDependencies": ["skolplattformen-sthlm"]
}
}
}

@ -1,13 +1,126 @@
{
"name": "root",
"private": true,
"devDependencies": {
"lerna": "^4.0.0"
},
"name": "skolplattformen",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"bootstrap": "npx lerna bootstrap",
"test": "npx lerna run test --stream",
"lint": "npx lerna run lint --stream"
"start": "nx serve",
"build": "nx build",
"test": "nx test"
},
"version": "2.1.0"
"private": true,
"dependencies": {
"@eva-design/eva": "2.0.0",
"@eva-design/material": "2.0.0",
"@react-native-async-storage/async-storage": "1.15.2",
"@react-native-community/cookies": "5.0.1",
"@react-native-community/datetimepicker": "3.4.3",
"@react-native-community/masked-view": "^0.1.11",
"@react-native-cookies/cookies": "^6.0.7",
"@react-navigation/bottom-tabs": "5.11.9",
"@react-navigation/native": "5.9.8",
"@react-navigation/stack": "5.14.4",
"@ui-kitten/components": "5.0.0",
"@ui-kitten/eva-icons": "5.0.0",
"buffer": "6.0.3",
"camelcase-keys": "^6.2.2",
"change-case": "^4.1.2",
"core-js": "^3.6.5",
"deepmerge": "^4.2.2",
"events": "^3.3.0",
"fast-fuzzy": "^1.10.8",
"formik": "2.2.6",
"h2m": "^0.7.0",
"he": "^1.2.0",
"hermes-engine": "0.8.1",
"i18n-js": "^3.8.0",
"js-htmlencode": "^0.3.0",
"luxon": "^1.26.0",
"moment": "^2.29.1",
"node-html-parser": "^2.1.0",
"personnummer": "3.1.3",
"react-dom": "17.0.2",
"react-native-animatable": "^1.3.3",
"react-native-calendar-events": "2.2.0",
"react-native-dev-menu": "^4.0.2",
"react-native-device-info": "^8.3.3",
"react-native-fix-image": "2.1.0",
"react-native-gesture-handler": "^1.10.3",
"react-native-localize": "^2.0.2",
"react-native-markdown-display": "7.0.0-alpha.2",
"react-native-modal-datetime-picker": "^11.0.0",
"react-native-reanimated": "2.2.2",
"react-native-restart": "^0.0.22",
"react-native-safe-area-context": "^3.2.0",
"react-native-screens": "^3.3.0",
"react-native-simple-toast": "1.1.3",
"react-native-svg": "12.1.0",
"react-native-typography": "1.4.1",
"react-native-webview": "11.4.2",
"react-native": "0.65.1",
"react-redux": "^7.2.3",
"react": "17.0.2",
"redux": "^4.0.5",
"regenerator-runtime": "0.13.7",
"tslib": "^2.0.0",
"valtio": "^1.2.3",
"yup": "0.32.9"
},
"devDependencies": {
"@nrwl/cli": "12.9.0",
"@nrwl/detox": "12.9.0",
"@nrwl/eslint-plugin-nx": "12.9.0",
"@nrwl/jest": "12.9.0",
"@nrwl/linter": "12.9.0",
"@nrwl/react-native": "^12.9.0",
"@nrwl/react": "12.9.0",
"@nrwl/tao": "12.9.0",
"@nrwl/web": "12.9.0",
"@nrwl/workspace": "12.9.0",
"@react-native-community/cli-platform-android": "6.0.0",
"@react-native-community/cli-platform-ios": "6.0.0",
"@react-native-community/cli": "6.0.0",
"@testing-library/jest-dom": "5.14.1",
"@testing-library/jest-native": "4.0.2",
"@testing-library/react-hooks": "7.0.1",
"@testing-library/react-native": "8.0.0-rc.0",
"@testing-library/react": "11.2.6",
"@types/base-64": "^1.0.0",
"@types/detox": "17.14.2",
"@types/he": "^1.1.1",
"@types/jest": "26.0.24",
"@types/luxon": "^1.26.4",
"@types/node-fetch": "^2.5.10",
"@types/node": "14.14.33",
"@types/react-dom": "17.0.3",
"@types/react-native": "0.64.13",
"@types/react": "17.0.19",
"@types/tough-cookie": "^4.0.0",
"@typescript-eslint/eslint-plugin": "~4.28.3",
"@typescript-eslint/parser": "~4.28.3",
"@ui-kitten/metro-config": "^5.1.1",
"babel-jest": "27.0.6",
"detox": "18.20.2",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-react-hooks": "4.2.0",
"eslint-plugin-react": "7.23.1",
"eslint": "7.22.0",
"fetch-cookie": "^0.11.0",
"https-proxy-agent": "^5.0.0",
"jest-circus": "27.0.3",
"jest-react-native": "18.0.0",
"jest": "27.0.3",
"metro-react-native-babel-preset": "0.66.2",
"metro-resolver": "0.66.2",
"metro": "0.66.2",
"node-blob": "^0.0.2",
"node-fetch": "^2.6.1",
"prettier": "^2.3.1",
"react-native-codegen": "0.0.7",
"react-test-renderer": "17.0.2",
"tough-cookie": "^4.0.0",
"ts-jest": "27.0.3",
"typescript": "~4.3.5"
}
}

@ -0,0 +1,12 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../dist/out-tsc/tools",
"rootDir": ".",
"module": "commonjs",
"target": "es5",
"types": ["node"],
"importHelpers": false
},
"include": ["**/*.ts"]
}

@ -0,0 +1,26 @@
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": ".",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"module": "esnext",
"lib": ["es2017", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@skolplattformen/api-skolplattformen": [
"libs/api-skolplattformen/src/index.ts"
],
"@skolplattformen/curriculum": ["libs/curriculum/src/index.ts"],
"@skolplattformen/hooks": ["libs/hooks/src/index.ts"]
}
},
"exclude": ["node_modules", "tmp"]
}

@ -0,0 +1,221 @@
{
"version": 2,
"projects": {
"api-skolplattformen": {
"root": "libs/api-skolplattformen",
"sourceRoot": "libs/api-skolplattformen/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
"libs/api-skolplattformen/**/*.{ts,tsx,js,jsx}"
]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/libs/api-skolplattformen"],
"options": {
"jestConfig": "libs/api-skolplattformen/jest.config.js",
"passWithNoTests": true
}
}
}
},
"curriculum": {
"root": "libs/curriculum",
"sourceRoot": "libs/curriculum/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["libs/curriculum/**/*.{ts,tsx,js,jsx}"]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/libs/curriculum"],
"options": {
"jestConfig": "libs/curriculum/jest.config.js",
"passWithNoTests": true
}
}
}
},
"hooks": {
"root": "libs/hooks",
"sourceRoot": "libs/hooks/src",
"projectType": "library",
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["libs/hooks/**/*.{ts,tsx,js,jsx}"]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/libs/hooks"],
"options": {
"jestConfig": "libs/hooks/jest.config.js",
"passWithNoTests": true
}
}
}
},
"skolplattformen-sthlm": {
"root": "apps/skolplattformen-sthlm",
"sourceRoot": "apps/skolplattformen-sthlm/src",
"projectType": "application",
"targets": {
"start": {
"executor": "@nrwl/react-native:start",
"options": {
"port": 8081
}
},
"serve": {
"executor": "@nrwl/workspace:run-commands",
"options": {
"command": "nx start skolplattformen-sthlm"
}
},
"run-ios": {
"executor": "@nrwl/react-native:run-ios",
"options": {}
},
"bundle-ios": {
"executor": "@nrwl/react-native:bundle",
"outputs": ["apps/skolplattformen-sthlm/build"],
"options": {
"entryFile": "apps/skolplattformen-sthlm/src/main.tsx",
"platform": "ios",
"bundleOutput": "dist/apps/skolplattformen-sthlm/ios/main.jsbundle"
}
},
"run-android": {
"executor": "@nrwl/react-native:run-android",
"options": {}
},
"build-android": {
"executor": "@nrwl/react-native:build-android",
"outputs": [
"apps/skolplattformen-sthlm/android/app/build/outputs/bundle",
"apps/skolplattformen-sthlm/android/app/build/outputs/apk"
],
"options": {}
},
"bundle-android": {
"executor": "@nrwl/react-native:bundle",
"options": {
"entryFile": "apps/skolplattformen-sthlm/src/main.tsx",
"platform": "android",
"bundleOutput": "dist/apps/skolplattformen-sthlm/android/main.jsbundle"
}
},
"sync-deps": {
"executor": "@nrwl/react-native:sync-deps",
"options": {}
},
"ensure-symlink": {
"executor": "@nrwl/react-native:ensure-symlink",
"options": {}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
"apps/skolplattformen-sthlm/**/*.{ts,tsx,js,jsx}"
]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/apps/skolplattformen-sthlm"],
"options": {
"jestConfig": "apps/skolplattformen-sthlm/jest.config.js",
"passWithNoTests": true
}
}
}
},
"skolplattformen-sthlm-e2e": {
"root": "apps/skolplattformen-sthlm-e2e",
"sourceRoot": "apps/skolplattformen-sthlm-e2e/src",
"projectType": "application",
"targets": {
"build-ios": {
"executor": "@nrwl/detox:build",
"options": {
"detoxConfiguration": "ios.sim.debug"
},
"configurations": {
"production": {
"detoxConfiguration": "ios.sim.release"
}
}
},
"test-ios": {
"executor": "@nrwl/detox:test",
"options": {
"detoxConfiguration": "ios.sim.debug"
},
"configurations": {
"production": {
"detoxConfiguration": "ios.sim.release"
}
}
},
"build-android": {
"executor": "@nrwl/detox:build",
"options": {
"detoxConfiguration": "android.emu.debug"
},
"configurations": {
"production": {
"detoxConfiguration": "android.emu.release"
}
}
},
"test-android": {
"executor": "@nrwl/detox:test",
"options": {
"detoxConfiguration": "android.emu.debug"
},
"configurations": {
"production": {
"detoxConfiguration": "android.emu.release"
}
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
"apps/skolplattformen-sthlm-e2e/**/*.{ts,tsx,js,jsx}"
]
}
}
}
}
},
"cli": {
"defaultCollection": "@nrwl/react-native"
},
"defaultProject": "skolplattformen-sthlm",
"generators": {
"@nrwl/react": {
"application": {
"babel": true
}
}
}
}

16197
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save