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 + + +chat on Discord + +## 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" +}