diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 000000000..c76a936d7
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,31 @@
+version: 2
+jobs:
+ publish:
+ docker:
+ - image: circleci/node:8.10.0
+ steps:
+ - checkout
+ - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
+ - run: npm publish
+ test:
+ docker:
+ - image: rishabhpoddar/supertokens_website_sdk_testing
+ steps:
+ - checkout
+
+workflows:
+ version: 2
+ tagged-build:
+ jobs:
+ - publish:
+ filters:
+ tags:
+ only: /v[0-9]+(\.[0-9]+)*/
+ branches:
+ ignore: /.*/
+ - test:
+ filters:
+ tags:
+ only: /dev-v[0-9]+(\.[0-9]+)*/
+ branches:
+ ignore: /.*/
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..e1764c7a0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+/node_modules
+package-lock.json
+.DS_Store
+/.history
+.vscode
+coverage
+apiPassword
+releasePassword
\ No newline at end of file
diff --git a/.mocharc.yml b/.mocharc.yml
new file mode 100644
index 000000000..54a8c2fa7
--- /dev/null
+++ b/.mocharc.yml
@@ -0,0 +1,7 @@
+exit: true
+spec: test/**/*.test.js
+reporter: spec
+slow: 20000
+timeout: 30000
+require:
+ - isomorphic-fetch
\ No newline at end of file
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 000000000..a34626ed2
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,15 @@
+**/*.ts
+!**/*.d.ts
+.git/
+test/
+hooks/
+.circleci/
+lib/tsconfig.json
+.mocharc.yml
+lib/.prettierrc
+lib/tslint.json
+addDevTag
+addReleaseTag
+frontendDriverInterfaceSupported.json
+.github/
+.babelrc
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..d6637e049
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..9f87f5cd2
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,73 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies within all project spaces, and it also applies when
+an individual is representing the project or its community in public spaces.
+Examples of representing a project or community include using an official
+project e-mail address, posting via an official social media account, or acting
+as an appointed representative at an online or offline event. Representation of
+a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at team@supertokens.io. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..0e28ebda2
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,3 @@
+# Contributing
+
+TODO
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 000000000..e105852e8
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,191 @@
+ Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+
+ This software is licensed under the Apache License, Version 2.0 (the
+ "License") as published by the Apache Software Foundation.
+
+ You may not use this software except in compliance with the License. A copy
+ of the License is available below the line.
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and limitations
+ under the License.
+
+-------------------------------------------------------------------------------
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/README.md b/README.md
index fafef179d..137d36d9d 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,25 @@
-# supertokens-auth-react
-Authentication module for SuperTokens
+
+![SuperTokens banner](https://raw.githubusercontent.com/supertokens/supertokens-logo/master/images/Artboard%20%E2%80%93%2027%402x.png)
+
+# SuperTokens ReactJS Auth SDK
+
+
+
+
+## About
+ReactJS SDK that provides login functionality with SuperTokens.
+
+Learn more at https://supertokens.io
+
+## Documentation
+To see documentation, please click [here](https://supertokens.io/docs/supertokens-auth-react/installation).
+
+## Contributing
+Please refer to the [CONTRIBUTING.md](https://github.com/supertokens/supertokens-auth-react/blob/master/CONTRIBUTING.md) file in this repo.
+
+## Contact us
+For any queries, or support requests, please email us at team@supertokens.io, or join our [Discord](supertokens.io/discord) server.
+
+## Authors
+Created with :heart: by the folks at SuperTokens.io.
diff --git a/addDevTag b/addDevTag
new file mode 100755
index 000000000..e4d6d7c2a
--- /dev/null
+++ b/addDevTag
@@ -0,0 +1,66 @@
+# get version------------
+version=`cat package.json | grep -e '"version":'`
+
+while IFS='"' read -ra ADDR; do
+ counter=0
+ for i in "${ADDR[@]}"; do
+ if [ $counter == 3 ]
+ then
+ version=$i
+ fi
+ counter=$(($counter+1))
+ done
+done <<< "$version"
+
+# get current branch name
+branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
+branch_name="(unnamed branch)" # detached HEAD
+branch_name=${branch_name##refs/heads/}
+
+# check if branch is correct based on the version-----------
+if ! [[ $version == $branch_name* ]]
+then
+ RED='\033[0;31m'
+ NC='\033[0m' # No Color
+ printf "${RED}Adding tag to wrong branch. Stopping process${NC}\n"
+ exit 1
+fi
+
+#Sync tags with remote
+git fetch --prune --prune-tags
+
+# GET Current Commit Hash -------
+if [ $# -eq 0 ]
+then
+ commit_hash=`git log --pretty=format:'%H' -n 1`
+else
+ commit_hash=$1
+fi
+
+# check if current commit already has a tag or not------------
+if [[ `git tag -l --points-at $commit_hash` == "" ]]
+then
+ continue=1
+else
+ RED='\033[0;31m'
+ NC='\033[0m'
+ printf "${RED}This commit already has a tag. Please remove that and re-run this script${NC}\n"
+ echo "git tag --delete "
+ echo "git push --delete origin "
+ exit 1
+fi
+
+# check if release version of this tag exists------------
+
+if git rev-parse v$version >/dev/null 2>&1
+then
+ RED='\033[0;31m'
+ NC='\033[0m'
+ printf "${RED}The released version of this tag already exists${NC}\n"
+ exit 1
+fi
+
+
+
+git tag dev-v$version $commit_hash
+git push --tags
\ No newline at end of file
diff --git a/addReleaseTag b/addReleaseTag
new file mode 100755
index 000000000..08218286b
--- /dev/null
+++ b/addReleaseTag
@@ -0,0 +1,153 @@
+#!/bin/bash
+# Expects a releasePassword file to be ./
+
+# get version------------
+version=`cat package.json | grep -e '"version":'`
+while IFS='"' read -ra ADDR; do
+ counter=0
+ for i in "${ADDR[@]}"; do
+ if [ $counter == 3 ]
+ then
+ version=$i
+ fi
+ counter=$(($counter+1))
+ done
+done <<< "$version"
+
+branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
+branch_name="(unnamed branch)" # detached HEAD
+
+branch_name=${branch_name##refs/heads/}
+
+git fetch --prune --prune-tags
+
+password=`cat ./apiPassword`
+
+
+# we get from the server is the tests have passed or not.
+testPassedJson=`curl -s -X GET \
+"https://api.supertokens.io/0/frontend?password=$password&version=$version&name=auth-react" \
+-H 'api-version: 0'`
+
+
+if [[ `echo $testPassedJson | jq .testPassed` == "null" ]]
+then
+ testPassed="false"
+else
+ testPassed=`echo $testPassedJson | jq .testPassed`
+fi
+
+if [[ $testPassed != "true" ]]
+then
+ RED='\033[0;31m'
+ NC='\033[0m' # No Color
+ printf "${RED}All tests have not passed. So stopping process.${NC}\n"
+ exit 1
+fi
+
+# check that current commit has a dev tag and that it is the correct version
+# get current commit hash------------
+if [ $# -eq 0 ]
+then
+ commit_hash=`git log --pretty=format:'%H' -n 1`
+else
+ commit_hash=$1
+fi
+
+
+# check if current commit already has a tag or not------------
+currTag=`git tag -l --points-at $commit_hash`
+
+expectedCurrTag=dev-v$version
+
+if [[ $currTag == $expectedCurrTag ]]
+then
+ continue=1
+else
+ RED='\033[0;31m'
+ NC='\033[0m'
+ printf "${RED}This commit does not have the right tag for the version you want to release.${NC}\n"
+ exit 1
+fi
+
+releasePassword=`cat ./releasePassword`
+
+# now we call the patch API to make it release mode
+responseStatus=`curl -s -o /dev/null -w "%{http_code}" -X PATCH \
+ https://api.supertokens.io/0/frontend \
+ -H 'Content-Type: application/json' \
+ -H 'api-version: 0' \
+ -d "{
+ \"password\": \"$releasePassword\",
+ \"name\":\"auth-react\",
+ \"version\":\"$version\",
+ \"release\": true
+ }"`
+
+if [ $responseStatus -ne "200" ]
+then
+ RED='\033[0;31m'
+ NC='\033[0m'
+ printf "${RED}patch api failed. Please try again.${NC}\n"
+ exit 1
+fi
+
+git tag --delete $currTag
+git push --delete origin $currTag
+
+git tag v$version
+git push --tags
+
+
+response=`curl -s -X GET \
+"https://api.supertokens.io/0/frontend/latest/check?password=$password&version=$version&name=auth-react" \
+-H 'api-version: 0'`
+response=`echo $response | jq .isLatest`
+
+
+if [[ $response == "null" ]]
+then
+ RED='\033[0;31m'
+ NC='\033[0m'
+ printf "${RED}error while determining if we should push to master or not. Please do so manually if needed:${NC}\n"
+ if [[ $branch_name == "(unnamed branch)" ]]
+ then
+ echo "git checkout -b forrelease"
+ echo "git merge -s ours master"
+ echo "git checkout master"
+ echo "git merge forrelease"
+ echo "git push"
+ echo "git checkout forrelease"
+ exit 1
+ else
+ echo "git merge -s ours master"
+ echo "git checkout master"
+ echo "git merge $branch_name"
+ echo "git push"
+ echo "git checkout $branch_name"
+ exit 1
+ fi
+
+fi
+
+if [[ $response == "true" ]]
+then
+ echo "pushing to mater..."
+ if [[ $branch_name == "(unnamed branch)" ]]
+ then
+ git checkout -b forrelease
+ git merge -s ours master
+ git checkout master
+ git merge forrelease
+ git push
+ git checkout forrelease
+ echo "Done! Please delete this branch"
+ else
+ git merge -s ours master
+ git checkout master
+ git merge $branch_name
+ git push
+ git checkout $branch_name
+ echo "Done!"
+ fi
+fi
\ No newline at end of file
diff --git a/frontendDriverInterfaceSupported.json b/frontendDriverInterfaceSupported.json
new file mode 100644
index 000000000..08bd2c750
--- /dev/null
+++ b/frontendDriverInterfaceSupported.json
@@ -0,0 +1,6 @@
+{
+ "_comment": "contains a list of frontend-backend interface versions that this package supports",
+ "versions": [
+ "1.2"
+ ]
+}
\ No newline at end of file
diff --git a/hooks/pre-commit.sh b/hooks/pre-commit.sh
new file mode 100644
index 000000000..8d37c0dd8
--- /dev/null
+++ b/hooks/pre-commit.sh
@@ -0,0 +1,156 @@
+#!/bin/bash
+
+# checks if locally staged changes are
+# formatted properly. Ignores non-staged
+# changes.
+# Intended as git pre-commit hook
+
+#COLOR CODES:
+#tput setaf 3 = yellow -> Info
+#tput setaf 1 = red -> warning/not allowed commit
+#tput setaf 2 = green -> all good!/allowed commit
+
+echo ""
+echo "$(tput setaf 3)Running pre-commit hook ... (you can omit this with --no-verify, but don't)$(tput sgr 0)"
+
+no_of_files_to_stash=`git ls-files . --exclude-standard --others -m | wc -l`
+if [ $no_of_files_to_stash -ne 0 ]
+then
+ echo "$(tput setaf 3)* Stashing non-staged changes"
+ files_to_stash=`git ls-files . --exclude-standard --others -m | xargs`
+ git stash push -k -u -- $files_to_stash >/dev/null 2>/dev/null
+fi
+
+npm run build-check >/dev/null 2>/dev/null
+compiles=$?
+
+echo "$(tput setaf 3)* Compiles?$(tput sgr 0)"
+
+if [ $compiles -eq 0 ]
+then
+ echo "$(tput setaf 2)* Yes$(tput sgr 0)"
+else
+ echo "$(tput setaf 1)* No$(tput sgr 0)"
+fi
+
+npm run pretty-check >/dev/null 2>/dev/null
+formatted=$?
+
+echo "$(tput setaf 3)* Properly formatted?$(tput sgr 0)"
+
+if [ $formatted -eq 0 ]
+then
+ echo "$(tput setaf 2)* Yes$(tput sgr 0)"
+else
+ echo "$(tput setaf 1)* No$(tput sgr 0)"
+ echo "$(tput setaf 1)Please run 'npm run pretty' to format the code.$(tput sgr 0)"
+ echo ""
+fi
+
+if [ $no_of_files_to_stash -ne 0 ]
+then
+ echo "$(tput setaf 3)* Undoing stashing$(tput sgr 0)"
+ git stash apply >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]
+ then
+ git checkout --theirs . >/dev/null 2>/dev/null
+ fi
+ git stash drop >/dev/null 2>/dev/null
+fi
+
+if [ $compiles -eq 0 ] && [ $formatted -eq 0 ]
+then
+ echo "$(tput setaf 2)... done. Proceeding with commit.$(tput sgr 0)"
+ echo ""
+elif [ $compiles -eq 0 ]
+then
+ echo "$(tput setaf 1)... done.$(tput sgr 0)"
+ echo "$(tput setaf 1)CANCELLING commit due to NON-FORMATTED CODE.$(tput sgr 0)"
+ echo ""
+ exit 1
+else
+ echo "$(tput setaf 1)... done.$(tput sgr 0)"
+ echo "$(tput setaf 1)CANCELLING commit due to COMPILE ERROR.$(tput sgr 0)"
+ echo ""
+ exit 2
+fi
+
+# get current version----------
+version=`cat package.json | grep -e '"version":'`
+while IFS='"' read -ra ADDR; do
+ counter=0
+ for i in "${ADDR[@]}"; do
+ if [ $counter == 3 ]
+ then
+ version=$i
+ fi
+ counter=$(($counter+1))
+ done
+done <<< "$version"
+
+codeversion=`cat lib/build/version.js | grep -e 'package_version'`
+while IFS='"' read -ra ADDR; do
+ counter=0
+ for i in "${ADDR[@]}"; do
+ if [ $counter == 1 ]
+ then
+ codeversion=$i
+ fi
+ counter=$(($counter+1))
+ done
+done <<< "$codeversion"
+
+if [ $version != $codeversion ]
+then
+ RED='\033[0;31m'
+ NC='\033[0m' # No Color
+ printf "${RED}Version codes in version.ts and package.json are not the same${NC}\n"
+ exit 1
+fi
+
+# get git branch name-----------
+branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
+branch_name="(unnamed branch)" # detached HEAD
+
+branch_name=${branch_name##refs/heads/}
+
+# check if branch is correct based on the version-----------
+if [ $branch_name == "master" ]
+then
+ YELLOW='\033[1;33m'
+ NC='\033[0m' # No Color
+ printf "${YELLOW}committing to MASTER${NC}\n"
+elif [[ $version == $branch_name* ]]
+then
+ continue=1
+elif ! [[ $branch_name =~ ^[0-9].[0-9]$ ]]
+then
+ YELLOW='\033[1;33m'
+ NC='\033[0m' # No Color
+ printf "${YELLOW}Not committing to master or version branches${NC}\n"
+else
+ RED='\033[0;31m'
+ NC='\033[0m' # No Color
+ printf "${RED}Pushing to wrong branch. Stopping commit${NC}\n"
+ exit 1
+fi
+
+no_of_files_to_stash=`git ls-files . --exclude-standard --others -m | wc -l`
+if [ $no_of_files_to_stash -ne 0 ]
+then
+ echo "$(tput setaf 3)* Stashing non-staged changes"
+ files_to_stash=`git ls-files . --exclude-standard --others -m | xargs`
+ git stash push -k -u -- $files_to_stash >/dev/null 2>/dev/null
+fi
+
+
+if [ $no_of_files_to_stash -ne 0 ]
+then
+ echo "$(tput setaf 3)* Undoing stashing$(tput sgr 0)"
+ git stash apply >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]
+ then
+ git checkout --theirs . >/dev/null 2>/dev/null
+ fi
+ git stash drop >/dev/null 2>/dev/null
+fi
\ No newline at end of file
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 000000000..c10750f87
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,3 @@
+import SuperTokens from './lib/build';
+
+export default SuperTokens;
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 000000000..b7f377fc8
--- /dev/null
+++ b/index.js
@@ -0,0 +1,20 @@
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+*/
+"use strict";
+function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+}
+exports.__esModule = true;
+__export(require("./lib/build"));
diff --git a/index.ts b/index.ts
new file mode 100644
index 000000000..4ae635f84
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,17 @@
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+*/
+import SuperTokens from './lib/ts';
+
+export default SuperTokens;
\ No newline at end of file
diff --git a/lib/.prettierrc b/lib/.prettierrc
new file mode 100644
index 000000000..ade91fab1
--- /dev/null
+++ b/lib/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "tabWidth": 4,
+ "semi": true,
+ "singleQuote": false,
+ "printWidth": 120
+}
\ No newline at end of file
diff --git a/lib/build/index.d.ts b/lib/build/index.d.ts
new file mode 100644
index 000000000..d90c5667a
--- /dev/null
+++ b/lib/build/index.d.ts
@@ -0,0 +1,2 @@
+export default class SuperTokens {
+}
diff --git a/lib/build/index.js b/lib/build/index.js
new file mode 100644
index 000000000..4287b3f42
--- /dev/null
+++ b/lib/build/index.js
@@ -0,0 +1,21 @@
+"use strict";
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+var SuperTokens = /** @class */ (function() {
+ function SuperTokens() {}
+ return SuperTokens;
+})();
+exports.default = SuperTokens;
diff --git a/lib/build/version.d.ts b/lib/build/version.d.ts
new file mode 100644
index 000000000..664c88535
--- /dev/null
+++ b/lib/build/version.d.ts
@@ -0,0 +1 @@
+export declare const package_version = "0.0.1";
diff --git a/lib/build/version.js b/lib/build/version.js
new file mode 100644
index 000000000..35e2ffd33
--- /dev/null
+++ b/lib/build/version.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+exports.package_version = "0.0.1";
diff --git a/lib/ts/index.ts b/lib/ts/index.ts
new file mode 100644
index 000000000..b600af6f3
--- /dev/null
+++ b/lib/ts/index.ts
@@ -0,0 +1,16 @@
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+export default class SuperTokens {}
diff --git a/lib/ts/version.ts b/lib/ts/version.ts
new file mode 100644
index 000000000..f77f0a12d
--- /dev/null
+++ b/lib/ts/version.ts
@@ -0,0 +1,15 @@
+/* Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved.
+ *
+ * This software is licensed under the Apache License, Version 2.0 (the
+ * "License") as published by the Apache Software Foundation.
+ *
+ * You may not use this file except in compliance with the License. You may
+ * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+export const package_version = "0.0.1";
diff --git a/lib/tsconfig.json b/lib/tsconfig.json
new file mode 100644
index 000000000..9ca26c386
--- /dev/null
+++ b/lib/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "noImplicitAny": true,
+ "allowSyntheticDefaultImports": true,
+ "strictNullChecks": true,
+ "noImplicitThis": true,
+ "module": "commonJS",
+ "outDir": "build",
+ "moduleResolution": "node",
+ "declaration": true
+ },
+ "compileOnSave": true
+}
\ No newline at end of file
diff --git a/lib/tslint.json b/lib/tslint.json
new file mode 100644
index 000000000..6eb02acec
--- /dev/null
+++ b/lib/tslint.json
@@ -0,0 +1,101 @@
+{
+ "jsRules": {
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "no-duplicate-variable": true,
+ "no-eval": true,
+ "no-trailing-whitespace": true,
+ "no-unsafe-finally": true,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-whitespace"
+ ],
+ "quotemark": [
+ true,
+ "double"
+ ],
+ "semicolon": [
+ true,
+ "always"
+ ],
+ "triple-equals": [
+ true,
+ "allow-null-check"
+ ],
+ "variable-name": [
+ true,
+ "ban-keywords"
+ ],
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-decl",
+ "check-operator",
+ "check-separator",
+ "check-type"
+ ]
+ },
+ "rules": {
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "no-eval": true,
+ "no-internal-module": true,
+ "no-trailing-whitespace": true,
+ "no-unsafe-finally": true,
+ "no-var-keyword": true,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-whitespace"
+ ],
+ "quotemark": [
+ true,
+ "double"
+ ],
+ "semicolon": [
+ true,
+ "always"
+ ],
+ "triple-equals": [
+ true,
+ "allow-null-check"
+ ],
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ }
+ ],
+ "variable-name": [
+ true,
+ "ban-keywords"
+ ],
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-decl",
+ "check-operator",
+ "check-separator",
+ "check-type"
+ ]
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..43ab8f267
--- /dev/null
+++ b/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "supertokens-auth-react",
+ "version": "0.0.1",
+ "description": "ReactJS SDK that provides login functionality with SuperTokens.",
+ "main": "index.js",
+ "dependencies": {},
+ "devDependencies": {
+ "isomorphic-fetch": "2.2.1",
+ "prettier": "1.18.2",
+ "typescript": "3.5.2",
+ "axios": "*"
+ },
+ "scripts": {
+ "test": "TEST_MODE=testing npx mocha --timeout 500000",
+ "build-check": "cd lib && npx tsc -p tsconfig.json --noEmit",
+ "build": "cd lib && npx tsc -p tsconfig.json",
+ "pretty": "cd lib && npx prettier --write --config .prettierrc \"ts/**/*.ts\" \"build/**/*.js\" \"../test/**/*.js\"",
+ "build-pretty": "npm run build && npm run pretty",
+ "pretty-check": "cd lib && npx prettier --check --config .prettierrc \"ts/**/*.ts\" \"build/**/*.js\" \"../test/**/*.js\"",
+ "set-up-hooks": "cp hooks/pre-commit.sh .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/supertokens/supertokens-auth-react.git"
+ },
+ "keywords": [
+ "auth",
+ "authentication",
+ "authorisation",
+ "supertokens",
+ "chrome",
+ "firefox",
+ "IE",
+ "safari"
+ ],
+ "contributors": [
+ "rishabhpoddar"
+ ],
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/supertokens/supertokens-auth-react/issues"
+ },
+ "homepage": "https://github.com/supertokens/supertokens-auth-react#readme"
+}