Skip to content

Commit 5688993

Browse files
author
andyfaceplugin
committed
Initial files
1 parent 13625b2 commit 5688993

149 files changed

Lines changed: 42260 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CODE_OF_CONDUCT.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
2+
# Contributor Covenant Code of Conduct
3+
4+
## Our Pledge
5+
6+
We as members, contributors, and leaders pledge to make participation in our
7+
community a harassment-free experience for everyone, regardless of age, body
8+
size, visible or invisible disability, ethnicity, sex characteristics, gender
9+
identity and expression, level of experience, education, socio-economic status,
10+
nationality, personal appearance, race, caste, color, religion, or sexual
11+
identity and orientation.
12+
13+
We pledge to act and interact in ways that contribute to an open, welcoming,
14+
diverse, inclusive, and healthy community.
15+
16+
## Our Standards
17+
18+
Examples of behavior that contributes to a positive environment for our
19+
community include:
20+
21+
* Demonstrating empathy and kindness toward other people
22+
* Being respectful of differing opinions, viewpoints, and experiences
23+
* Giving and gracefully accepting constructive feedback
24+
* Accepting responsibility and apologizing to those affected by our mistakes,
25+
and learning from the experience
26+
* Focusing on what is best not just for us as individuals, but for the overall
27+
community
28+
29+
Examples of unacceptable behavior include:
30+
31+
* The use of sexualized language or imagery, and sexual attention or advances of
32+
any kind
33+
* Trolling, insulting or derogatory comments, and personal or political attacks
34+
* Public or private harassment
35+
* Publishing others' private information, such as a physical or email address,
36+
without their explicit permission
37+
* Other conduct which could reasonably be considered inappropriate in a
38+
professional setting
39+
40+
## Enforcement Responsibilities
41+
42+
Community leaders are responsible for clarifying and enforcing our standards of
43+
acceptable behavior and will take appropriate and fair corrective action in
44+
response to any behavior that they deem inappropriate, threatening, offensive,
45+
or harmful.
46+
47+
Community leaders have the right and responsibility to remove, edit, or reject
48+
comments, commits, code, wiki edits, issues, and other contributions that are
49+
not aligned to this Code of Conduct, and will communicate reasons for moderation
50+
decisions when appropriate.
51+
52+
## Scope
53+
54+
This Code of Conduct applies within all community spaces, and also applies when
55+
an individual is officially representing the community in public spaces.
56+
Examples of representing our community include using an official e-mail address,
57+
posting via an official social media account, or acting as an appointed
58+
representative at an online or offline event.
59+
60+
## Enforcement
61+
62+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
63+
reported to the community leaders responsible for enforcement at
64+
[INSERT CONTACT METHOD].
65+
All complaints will be reviewed and investigated promptly and fairly.
66+
67+
All community leaders are obligated to respect the privacy and security of the
68+
reporter of any incident.
69+
70+
## Enforcement Guidelines
71+
72+
Community leaders will follow these Community Impact Guidelines in determining
73+
the consequences for any action they deem in violation of this Code of Conduct:
74+
75+
### 1. Correction
76+
77+
**Community Impact**: Use of inappropriate language or other behavior deemed
78+
unprofessional or unwelcome in the community.
79+
80+
**Consequence**: A private, written warning from community leaders, providing
81+
clarity around the nature of the violation and an explanation of why the
82+
behavior was inappropriate. A public apology may be requested.
83+
84+
### 2. Warning
85+
86+
**Community Impact**: A violation through a single incident or series of
87+
actions.
88+
89+
**Consequence**: A warning with consequences for continued behavior. No
90+
interaction with the people involved, including unsolicited interaction with
91+
those enforcing the Code of Conduct, for a specified period of time. This
92+
includes avoiding interactions in community spaces as well as external channels
93+
like social media. Violating these terms may lead to a temporary or permanent
94+
ban.
95+
96+
### 3. Temporary Ban
97+
98+
**Community Impact**: A serious violation of community standards, including
99+
sustained inappropriate behavior.
100+
101+
**Consequence**: A temporary ban from any sort of interaction or public
102+
communication with the community for a specified period of time. No public or
103+
private interaction with the people involved, including unsolicited interaction
104+
with those enforcing the Code of Conduct, is allowed during this period.
105+
Violating these terms may lead to a permanent ban.
106+
107+
### 4. Permanent Ban
108+
109+
**Community Impact**: Demonstrating a pattern of violation of community
110+
standards, including sustained inappropriate behavior, harassment of an
111+
individual, or aggression toward or disparagement of classes of individuals.
112+
113+
**Consequence**: A permanent ban from any sort of public interaction within the
114+
community.
115+
116+
## Attribution
117+
118+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119+
version 2.1, available at
120+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121+
122+
Community Impact Guidelines were inspired by
123+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124+
125+
For answers to common questions about this code of conduct, see the FAQ at
126+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
127+
[https://www.contributor-covenant.org/translations][translations].
128+
129+
[homepage]: https://www.contributor-covenant.org
130+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
131+
[Mozilla CoC]: https://github.com/mozilla/diversity
132+
[FAQ]: https://www.contributor-covenant.org/faq
133+
[translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Contributing
2+
3+
Contributions are always welcome, no matter how large or small!
4+
5+
We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project. Before contributing, please read the [code of conduct](./CODE_OF_CONDUCT.md).
6+
7+
## Development workflow
8+
9+
To get started with the project, run `yarn` in the root directory to install the required dependencies for each package:
10+
11+
```sh
12+
yarn
13+
```
14+
15+
> While it's possible to use [`npm`](https://github.com/npm/cli), the tooling is built around [`yarn`](https://classic.yarnpkg.com/), so you'll have an easier time if you use `yarn` for development.
16+
17+
While developing, you can run the [example app](/example/) to test your changes. Any changes you make in your library's JavaScript code will be reflected in the example app without a rebuild. If you change any native code, then you'll need to rebuild the example app.
18+
19+
To start the packager:
20+
21+
```sh
22+
yarn example start
23+
```
24+
25+
To run the example app on Android:
26+
27+
```sh
28+
yarn example android
29+
```
30+
31+
To run the example app on iOS:
32+
33+
```sh
34+
yarn example ios
35+
```
36+
37+
Make sure your code passes TypeScript and ESLint. Run the following to verify:
38+
39+
```sh
40+
yarn typecheck
41+
yarn lint
42+
```
43+
44+
To fix formatting errors, run the following:
45+
46+
```sh
47+
yarn lint --fix
48+
```
49+
50+
Remember to add tests for your change if possible. Run the unit tests by:
51+
52+
```sh
53+
yarn test
54+
```
55+
56+
To edit the Objective-C or Swift files, open `example/ios/FaceRecognitionSdkExample.xcworkspace` in XCode and find the source files at `Pods > Development Pods > face-recognition-sdk`.
57+
58+
To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `face-recognition-sdk` under `Android`.
59+
60+
61+
### Commit message convention
62+
63+
We follow the [conventional commits specification](https://www.conventionalcommits.org/en) for our commit messages:
64+
65+
- `fix`: bug fixes, e.g. fix crash due to deprecated method.
66+
- `feat`: new features, e.g. add new method to the module.
67+
- `refactor`: code refactor, e.g. migrate from class components to hooks.
68+
- `docs`: changes into documentation, e.g. add usage example for the module..
69+
- `test`: adding or updating tests, e.g. add integration tests using detox.
70+
- `chore`: tooling changes, e.g. change CI config.
71+
72+
Our pre-commit hooks verify that your commit message matches this format when committing.
73+
74+
### Linting and tests
75+
76+
[ESLint](https://eslint.org/), [Prettier](https://prettier.io/), [TypeScript](https://www.typescriptlang.org/)
77+
78+
We use [TypeScript](https://www.typescriptlang.org/) for type checking, [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and formatting the code, and [Jest](https://jestjs.io/) for testing.
79+
80+
Our pre-commit hooks verify that the linter and tests pass when committing.
81+
82+
### Publishing to npm
83+
84+
We use [release-it](https://github.com/release-it/release-it) to make it easier to publish new versions. It handles common tasks like bumping version based on semver, creating tags and releases etc.
85+
86+
To publish new versions, run the following:
87+
88+
```sh
89+
yarn release
90+
```
91+
92+
### Scripts
93+
94+
The `package.json` file contains various scripts for common tasks:
95+
96+
- `yarn bootstrap`: setup project by installing all dependencies and pods.
97+
- `yarn typecheck`: type-check files with TypeScript.
98+
- `yarn lint`: lint files with ESLint.
99+
- `yarn test`: run unit tests with Jest.
100+
- `yarn example start`: start the Metro server for the example app.
101+
- `yarn example android`: run the example app on Android.
102+
- `yarn example ios`: run the example app on iOS.
103+
104+
### Sending a pull request
105+
106+
> **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github).
107+
108+
When you're sending a pull request:
109+
110+
- Prefer small pull requests focused on one change.
111+
- Verify that linters and tests are passing.
112+
- Review the documentation to make sure it looks good.
113+
- Follow the pull request template when opening a pull request.
114+
- For pull requests that change the API or implementation, discuss with maintainers first by opening an issue.

LICENSE

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Faceplugin LTD
4+
Permission is hereby granted, free of charge, to any person obtaining a copy
5+
of this software and associated documentation files (the "Software"), to deal
6+
in the Software without restriction, including without limitation the rights
7+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
copies of the Software, and to permit persons to whom the Software is
9+
furnished to do so, subject to the following conditions:
10+
11+
The above copyright notice and this permission notice shall be included in all
12+
copies or substantial portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+
SOFTWARE.

android/build.gradle

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
buildscript {
2+
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
3+
def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["FaceRecognitionSdk_kotlinVersion"]
4+
5+
repositories {
6+
google()
7+
mavenCentral()
8+
}
9+
10+
dependencies {
11+
classpath "com.android.tools.build:gradle:7.2.1"
12+
// noinspection DifferentKotlinGradleVersion
13+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14+
}
15+
}
16+
17+
def isNewArchitectureEnabled() {
18+
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
19+
}
20+
21+
apply plugin: "com.android.library"
22+
apply plugin: "kotlin-android"
23+
24+
25+
def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
26+
27+
if (isNewArchitectureEnabled()) {
28+
apply plugin: "com.facebook.react"
29+
}
30+
31+
def getExtOrDefault(name) {
32+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["FaceRecognitionSdk_" + name]
33+
}
34+
35+
def getExtOrIntegerDefault(name) {
36+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["FaceRecognitionSdk_" + name]).toInteger()
37+
}
38+
39+
def isAGPVersionGreaterThan(version) {
40+
def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
41+
return agpVersion > version
42+
}
43+
44+
android {
45+
if (isAGPVersionGreaterThan(7)) {
46+
namespace "com.facerecognitionsdk"
47+
}
48+
49+
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
50+
51+
defaultConfig {
52+
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
53+
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
54+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
55+
}
56+
buildTypes {
57+
release {
58+
minifyEnabled false
59+
}
60+
}
61+
62+
lintOptions {
63+
disable "GradleCompatible"
64+
}
65+
66+
compileOptions {
67+
sourceCompatibility JavaVersion.VERSION_1_8
68+
targetCompatibility JavaVersion.VERSION_1_8
69+
}
70+
71+
}
72+
73+
repositories {
74+
mavenCentral()
75+
google()
76+
}
77+
78+
def kotlin_version = getExtOrDefault("kotlinVersion")
79+
80+
dependencies {
81+
// For < 0.71, this will be from the local maven repo
82+
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
83+
//noinspection GradleDynamicVersion
84+
implementation "com.facebook.react:react-native:+"
85+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
86+
87+
// implementation files('libs/facesdk.aar')
88+
implementation project(path: ':libfacesdk')
89+
implementation 'io.fotoapparat:fotoapparat:2.7.0'
90+
}
91+
92+
if (isNewArchitectureEnabled()) {
93+
react {
94+
jsRootDir = file("../src/")
95+
libraryName = "FaceRecognitionSdkView"
96+
codegenJavaPackageName = "com.facerecognitionsdk"
97+
}
98+
}

android/gradle.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FaceRecognitionSdk_kotlinVersion=1.7.0
2+
FaceRecognitionSdk_minSdkVersion=23
3+
FaceRecognitionSdk_targetSdkVersion=31
4+
FaceRecognitionSdk_compileSdkVersion=31
5+
FaceRecognitionSdk_ndkversion=21.4.7075529
58.4 KB
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)