Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

generator-wolmo-bootstrap-rn

Package Overview
Dependencies
Maintainers
23
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

generator-wolmo-bootstrap-rn - npm Package Compare versions

Comparing version 1.6.0 to 1.7.0

generators/bitrise/bitriseREADME.md

11

CHANGELOG.md

@@ -5,2 +5,13 @@ # Changelog

## [1.7.0] - 2021-03-19
- Update to `redux-recompose` v3
- Updated some files and libs to support React Native 0.64
- Fixed iOS base schema
- Updated some files to support React Native Reanimated v2 (`babel.config.js` and `MainApplication`)
- Fixed React Hook Form validations
- Deleted `android.enableR8=false` (deprecated)
- Updated Firebase dependencies
- Updated `installPods` task with `npx pod-install` command
- Refactored some files
## [1.6.0] - 2020-12-22

@@ -7,0 +18,0 @@ - Fixed errors in the `Login` screen

27

generators/app/tasks/appSetup/coreFiles/androidProjectSetup.js

@@ -60,3 +60,3 @@ function updateAppBuildGradle() {

'# Add any project specific keep options here:',
`# Add any project specific keep options here:\n# Hermes\n-keep class com.facebook.hermes.unicode.** { *; }\n-keep class com.facebook.jni.** { *; }\n\n# react-native-config\n-keep class com.${this.projectName.toLowerCase()}.BuildConfig { *; }`
`# Add any project specific keep options here:\n# Hermes\n-keep class com.facebook.hermes.unicode.** { *; }\n-keep class com.facebook.jni.** { *; }\n\n# react-native-config\n-keep class com.${this.projectName.toLowerCase()}.BuildConfig { *; }\n\n# react-native-reanimated v2\n-keep class com.facebook.react.turbomodule.** { *; }`
);

@@ -68,13 +68,27 @@ this.fs.write(`${this.projectName}/android/app/proguard-rules.pro`, updatedProguardRulesContent);

const gradleProperties = this.fs.read(`${this.projectName}/android/gradle.properties`);
let updatedGradleProperties = gradleProperties.replace(
const updatedGradleProperties = gradleProperties.replace(
'# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8',
'org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8'
);
updatedGradleProperties = updatedGradleProperties.replace(
'android.enableJetifier=true',
'android.enableJetifier=true\nandroid.enableR8=false'
);
this.fs.write(`${this.projectName}/android/gradle.properties`, updatedGradleProperties);
}
function addRNReanimatedConfig() {
const mainActivityContent = this.fs.read(
`${this.projectName}/android/app/src/main/java/com/${this.projectName}/MainApplication.java`
);
let updatedMainApplicationContent = mainActivityContent.replace(
'import java.util.List;',
'import java.util.List;\nimport com.facebook.react.bridge.JSIModulePackage;\nimport com.swmansion.reanimated.ReanimatedJSIModulePackage;'
);
updatedMainApplicationContent = updatedMainApplicationContent.replace(
'return "index";',
'return "index";\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tprotected JSIModulePackage getJSIModulePackage() {\n\t\t\t\t\treturn new ReanimatedJSIModulePackage();'
);
this.fs.write(
`${this.projectName}/android/app/src/main/java/com/${this.projectName}/MainApplication.java`,
updatedMainApplicationContent
);
}
module.exports = function androidProjectSetup() {

@@ -85,2 +99,3 @@ updateAppBuildGradle.bind(this)();

updateGradleProperties.bind(this)();
addRNReanimatedConfig.bind(this)();
};

@@ -5,2 +5,3 @@ module.exports = function babelConfigSetup() {

plugins: [
'react-native-reanimated/plugin',
'import-glob',

@@ -7,0 +8,0 @@ [

module.exports = function cleanTargetsFromPods() {
let podfileContent = this.fs.read(`${this.projectName}/ios/Podfile`);
let numberLineTargetTest = null;
let numberLineTvOSTest = null;
podfileContent = podfileContent.split('\n');

@@ -10,15 +9,9 @@ podfileContent.forEach((line, index) => {

}
if (line.includes(`target '${this.projectName}-tvOS'`)) {
numberLineTvOSTest = index;
}
});
podfileContent = [
...podfileContent.slice(0, numberLineTargetTest),
...podfileContent.slice(numberLineTargetTest + 4, numberLineTvOSTest),
...podfileContent.slice(numberLineTvOSTest + 8)
...podfileContent.slice(numberLineTargetTest + 4)
].join('\n');
this.fs.write(`${this.projectName}/ios/Podfile`, podfileContent);
this.fs.delete(`${this.projectName}/ios/${this.projectName}Tests/`);
this.fs.delete(`${this.projectName}/ios/${this.projectName}-tvOS/`);
this.fs.delete(`${this.projectName}/ios/${this.projectName}-tvOSTests/`);
};

@@ -11,3 +11,2 @@ const schemeBase = require('./schemeBase');

this.fs.delete(commonPath(this.projectName));
this.fs.delete(commonPath(`${this.projectName}-tvOS`));
};

@@ -6,99 +6,98 @@ // eslint-disable-next-line no-template-curly-in-string

return `<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1130"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Script"
scriptText = "cp &quot;${PROJECT_DIR}/../.${envName}.env&quot; &quot;${PROJECT_DIR}/../.env&quot;&#10;">
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "${buildConfig}"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "${this.projectName}Tests.xctest"
BlueprintName = "${this.projectName}Tests"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "${buildConfig}"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "${buildConfig}"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "${buildConfig}">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "${buildConfig}"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
`;
<Scheme
LastUpgradeVersion = "1210"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Script"
scriptText = "cp &quot;${PROJECT_DIR}/../.${envName}.env&quot; &quot;${PROJECT_DIR}/../.env&quot;&#10;">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "${buildConfig}"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "${buildConfig}"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "${buildConfig}"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "${this.projectName}.app"
BlueprintName = "${this.projectName}"
ReferencedContainer = "container:${this.projectName}.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "${buildConfig}">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "${buildConfig}"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
`;
};

@@ -18,3 +18,3 @@ module.exports = function packgeJsonScripts() {

packageJson.scripts['android:build.production'] =
'cd android && ./gradlew clean && ./gradlew bundleProductionRelease';
'cd android && ./gradlew clean && ./gradlew assembleProductionRelease';
packageJson.scripts['test:watch'] = 'jest --watch';

@@ -21,0 +21,0 @@ packageJson.scripts['test:debug'] = 'node --inspect node_modules/.bin/jest --runInBand';

@@ -7,3 +7,4 @@ module.exports = function babelConfigSetup() {

singleQuote: true,
trailingComma: 'all',`;
trailingComma: 'all',
arrowParens: 'avoid',`;

@@ -10,0 +11,0 @@ const newContentPrettier = `bracketSpacing: true,

@@ -5,3 +5,3 @@ function addConfigToAndroidFiles() {

'// NOTE: Do not place your application dependencies here; they belong',
"classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
"classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
);

@@ -8,0 +8,0 @@ this.fs.write(`${this.projectName}/android/build.gradle`, buildGradleContent);

@@ -42,3 +42,3 @@ function configureGoogleServices() {

'// NOTE: Do not place your application dependencies here; they belong',
"classpath 'com.google.gms:google-services:4.3.3'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
"classpath 'com.google.gms:google-services:4.3.4'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
);

@@ -45,0 +45,0 @@ this.fs.write(`${this.projectName}/android/build.gradle`, buildGradleContent);

@@ -5,3 +5,3 @@ module.exports = function firebasePerformanceSetup() {

'// NOTE: Do not place your application dependencies here; they belong',
"classpath 'com.google.firebase:perf-plugin:1.3.1'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
"classpath 'com.google.firebase:perf-plugin:1.3.5'\n\t\t// NOTE: Do not place your application dependencies here; they belong"
);

@@ -8,0 +8,0 @@ this.fs.write(`${this.projectName}/android/build.gradle`, buildGradleContent);

@@ -5,3 +5,7 @@ const runCommand = require('../runCommand');

return runCommand({
command: ['pod', ['install', '--repo-update'], { cwd: `${process.cwd()}/${this.projectName}/ios` }],
command: [
'npx',
['pod-install', 'ios', '--non-interactive'],
{ cwd: `${process.cwd()}/${this.projectName}` }
],
loadingMessage: 'Installing Pods...',

@@ -8,0 +12,0 @@ successMessage: 'Pods ready!',

@@ -26,6 +26,5 @@ require('colors');

// Login and SignUp next steps
console.log('● A basic login feature has been added. The probably next steps there are:'.cyan);
console.log('● A basic login and signup feature has been added. The probably next steps there are:'.cyan);
console.log(' Add proper validations and styles to the login form'.cyan);
console.log(' Integrate login and logout with API'.cyan);
console.log(' Sign up?'.cyan);
}

@@ -32,0 +31,0 @@

@@ -5,5 +5,5 @@ import 'react-native-gesture-handler';

import { persistStore } from 'redux-persist';
import { PersistGate } from 'redux-persist/integration/react';
import '@config';
import store from '@redux/store';
import { PersistGate } from 'redux-persist/integration/react';

@@ -10,0 +10,0 @@ import App from './src/app';

@@ -39,2 +39,3 @@ const { defaults } = require('jest-config');

'!**/node_modules/**',
'!**/.history/**',
'!**/build/**',

@@ -41,0 +42,0 @@ '!**/migrations/**',

// TODO: Uncomment lines when you start using them
// import analytics from '@react-native-firebase/analytics'; TODO: Use later when you want to catch some redux actions here in this middleware
// TODO: Use later when you want to catch some redux actions here in this middleware
// import analytics from '@react-native-firebase/analytics';
import { Dispatch } from 'react';

@@ -4,0 +5,0 @@ // import { ReduxObject } from '@interfaces/reduxInterfaces';

@@ -7,3 +7,3 @@ import i18next from 'i18next';

const emailRegex = /^(([^<>()·=~ºªÇ¨?¿*^|#¢∞¬÷"$%"≠´}{![\]\\.,;:\s@"]+(\.[^<>·$%&/=~ºªÇ¨?¿*^|#¢∞¬÷""≠´}{!()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
const alphanumericRegex = /^[a-zA-Z0-9]*$/g;
const alphanumericRegex = /^[a-záéíóúäëïºöüA-ZÁÉÍÓÚÄËÏÖÜ0-9 ]*$/g;
const onlyTextRegex = /^[a-zA-Z\s]*$/;

@@ -13,18 +13,28 @@ const onlyNumberRegex = /^[0-9]*$/g;

// VALIDATIONS
export const validateRequired = { required: i18next.t('VALIDATIONS:REQUIRED_FIELD') };
export const validateRequired = {
required: {
value: true,
message: i18next.t('VALIDATIONS:REQUIRED_FIELD')
}
};
export const validateEmail = {
pattern: { value: emailRegex, message: i18next.t('VALIDATIONS:INVALID_EMAIL') }
pattern: {
value: emailRegex,
message: i18next.t('VALIDATIONS:INVALID_EMAIL')
}
};
export const validateAlphanumeric = {
pattern: { value: alphanumericRegex, message: i18next.t('VALIDATIONS:ALPHANUMERIC') }
validate: (value: string) =>
!!value.match(alphanumericRegex) || (i18next.t('VALIDATIONS:ALPHANUMERIC') as string)
};
export const validateOnlyText = {
pattern: { value: onlyTextRegex, message: i18next.t('VALIDATIONS:ONLY_TEXT') }
validate: (value: string) => !!value.match(onlyTextRegex) || (i18next.t('VALIDATIONS:ONLY_TEXT') as string)
};
export const validateOnlyNumber = {
pattern: { value: onlyNumberRegex, message: i18next.t('VALIDATIONS:ONLY_NUMBERS') }
validate: (value: string) =>
!!value.match(onlyNumberRegex) || (i18next.t('VALIDATIONS:ONLY_NUMBERS') as string)
};

@@ -42,3 +52,3 @@

validate: (value: string) =>
value.length === equalValue || i18next.t('VALIDATIONS:EQUAL_LENGTH', { count: equalValue })
value.length === equalValue || (i18next.t('VALIDATIONS:EQUAL_LENGTH', { count: equalValue }) as string)
});
const Generator = require('yeoman-generator');
const completeREADME = require('./tasks/completeREADME');
const bitriseInitialization = require('./tasks/bitriseInitialization');

@@ -51,2 +52,3 @@ const nextSteps = require('./tasks/nextSteps');

end() {
completeREADME.bind(this)();
nextSteps.bind(this)();

@@ -53,0 +55,0 @@ }

{
"name": "generator-wolmo-bootstrap-rn",
"version": "1.6.0",
"version": "1.7.0",
"description": "A project generator for react native applications with some boilerplates already configured and ready to use.",

@@ -29,3 +29,3 @@ "files": [

"acorn": "^7.1.1",
"apisauce": "^1.1.1",
"apisauce": "^2.0.1",
"colors": "^1.1.2",

@@ -32,0 +32,0 @@ "deep-extend": "^0.5.1",

@@ -82,32 +82,4 @@ # Wolmo Bootstrap: React Native

For bootstraping your own project using the template generator script you'll need to follow these steps:
Follow our Kickoff guide [here](./KICKOFF.md)
1. Clone this repo
2. Run `yarn install` inside the repository folder
3. Run `yo yourPathToWolmo/generators/app/index.js` outside the repository folder, you'll need [Yeoman](https://yeoman.io/learning/index.html) installed for this. Also, the argument `-v` can be used for logging.
4. Some prompts will pop up on your terminal. Pick whatever configuration works best for your current proyect.
5. After the script is finished, your project folder will be successfully generated with all the necessary yarn dependencies installed. Do `cd you/project/path`.
6. Start budler using `yarn start`.
7. Run `npx react-native run-ios --scheme qa` or `yarn ios` for iOS and `npx react-native run-android --variant=qaDebug` or `yarn android` for Android.
8. Start working on your project!
### How do you have to configure Bitrise?
You will have to complete the [`bitriseInfo.json`](/generators/bitrise/bitriseInfo.json) with the next Info:
```
"repositoryUrlSsh": "", // What's your repository url? (ssh only)
"publicApp": false, // If true then the app visibility setting will be public, in case of false it will be private (boolean value)
"repositorySlug": "", // Write the repo slug (The name of your repo not the url)
"repoOwner": "", // Who is the owner of the repo?
"gitProvider": "", // The git provider you are using, it can be 'github', 'bitbucket', 'gitlab', 'gitlab-self-hosted' or 'custom'
"gitToken": "", // Please, write your git token (github, gitlab ot bitbucket) with permissions to create ssh keys here (write it with the format 'token <access_token>' if it is github, 'Bearer <access_token>' if it's gitlab or bitbucket)
"bitriseToken": "", // Please, write your bitrise token with permissions to create ssh keys here
"bitriseOrganizationSlug": "", // Please, write your Bitrise organization slug
"projectPath": "", // projectPath in case that you want to add the bitrise.yml file to your local repository. This param is in case that you run the script without running the bootstrap
"projectName": "" // Project name to complete the bitrise.yml file with correct info. This param is in case that you run the script without running the bootstrap
```
To run only the bitrise script you have to run: `yo yourPathToWolmo/generators/bitrise/bitrise.js` you'll need [Yeoman](https://yeoman.io/learning/index.html)
## Contributing

@@ -114,0 +86,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc