Commit de355bf3 authored by Ben Hsieh's avatar Ben Hsieh
Browse files

Bump to 0.9.0

- 將Auth的SSO機制由Storage移至cookie storage
- 將FacebookOAuth2Provider的錯誤拋出以便Auth.onError可以正常的處理這些錯誤
parent 9f39f938
......@@ -10,20 +10,20 @@ In `./sandbox` there's a super simple environment that simulates an isomorphic R
Try to import and debug SDK there.
you can simply run the following command
you can simply run the following command
```sh
$ yarn run debug
```
The script will start watch changes in `./sandbox/server.js` and `./sandbox/source.js`,
The script will start watch changes in `./sandbox/server.js` and `./sandbox/source.js`,
every change in both path will be bundled i to `./sandbox/sandbox.bundle.js` and `./sandbox/serve.bundle.js`.
Now, navigate [http://localhost:3000](http://localhost:3000) to see the result.
## Debug with other projects
To generate output to external projects, simply add an environment variable
To generate output to external projects, simply add an environment variable
```sh
$ external_project=/some/project/folder yarn run debug
......@@ -34,4 +34,4 @@ $ external_project=/some/project/folder yarn run debug
You should always write unit tests, and make sure every units are capable to work in JEST.
We've already set several debug configurations in VSCode which helpsg debugging easier.
We've already set several debug configurations in VSCode which helps debugging easier.
......@@ -3,14 +3,19 @@ import './common'
var d = 'font-weight: normal';
var b = 'font-weight: bolder'
console.log('%c ',
';background-repeat: no-repeat; background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTguMyAzOSI+PHBhdGggZD0iTTI0LjQgMzguNGgtMy42YzAtOS41IDcuNy0xNy4yIDE3LjItMTcuMnYzLjZjLTcuNSAwLTEzLjYgNi4xLTEzLjYgMTMuNnoiIGZpbGw9IiNmZmI0M2UiLz48cGF0aCBkPSJNMy40IDM4LjRIMGMwLTIxIDE3LTM4IDM4LTM4djMuNEMxOC45IDMuOSAzLjUgMTkuMyAzLjQgMzguNHoiIGZpbGw9IiM1NGI1YzYiLz48cGF0aCBkPSJNMTYuNiAzOC40SDEzYzAtMTMuOCAxMS4yLTI1IDI1LTI1LjFWMTdjLTExLjggMC0yMS40IDkuNi0yMS40IDIxLjR6IiBmaWxsPSIjZTAzZjE5Ii8+PGc+PHBhdGggZD0iTTUxLjUgMTEuNXYxLjNoMy43Vi40aC0zLjd2MS4zQzUwLjcuNSA0OS4zLS4yIDQ3LjkgMGMtMy41IDAtNi4zIDIuOC02LjIgNi4zdi4zYzAgMy42IDIuMyA2LjYgNi4yIDYuNiAxLjUuMiAyLjktLjUgMy42LTEuN3pNNDUuNCA3di0uNGMtLjEtMS43IDEuMi0zLjIgMi45LTMuMyAxLjctLjEgMy4yIDEuMiAzLjMgMi45di40Yy4xIDEuNy0xLjIgMy4yLTIuOSAzLjMtMS43LjEtMy4yLTEuMi0zLjMtMi45ek02My44IDBjLTEuNC0uMS0yLjcuNi0zLjQgMS43Vi40aC0zLjV2MTIuNGgzLjdWNi4xYzAtLjggMC0yLjYgMi4xLTIuNiAyIDAgMiAxLjcgMiAyLjZ2Ni44aDMuN1Y1LjFjMC0yLjQtLjgtMy40LTEuNC00QzY2LjEuNCA2NC45IDAgNjMuOCAwek03NC42IDEzLjJjMS4zLjEgMi42LS41IDMuMi0xLjd2MS4zaDMuNVYuNGgtMy43djYuOGMwIDItMSAyLjUtMi4xIDIuNS0yIDAtMi0xLjYtMi0yLjVWLjRoLTMuN3Y3LjRjLS4yIDEuNC4zIDIuOCAxLjIgMy44LjkgMS4xIDIuMiAxLjcgMy42IDEuNnpNODkuNCAwaC0uMmMtMy43LjItNi41IDMuMy02LjMgNi45LjIgMy41IDIuOSA2LjIgNi40IDYuMyAxLjMgMCAyLjUtLjQgMy41LTEuMSAxLjEtLjggMi0xLjkgMi41LTMuMmgtMy44Yy0uNS43LTEuNCAxLjItMi4yIDEuMi0xLjQuMS0yLjctLjktMi45LTIuM2g5LjNjLjEtLjMuMS0uNy4xLTFDOTUuOSAzLjEgOTMgLjEgODkuNCAwem0tMyA1LjJjLjQtMS42IDIuMS0yLjUgMy42LTIgMSAuMyAxLjcgMSAyIDJoLTUuNnpNNDYuOSAyOS44bC0xLjguNGMuMyAxLjIuNyAyLjggMSA0LjZsMS44LS40Yy0uNC0xLjctLjctMy4yLTEtNC42eiIvPjxwYXRoIGQ9Ik01My4zIDIzLjhsMS41LTEuNGMtMS4zLTEuNi0yLjYtMy4xLTQtNC42bC4yLS43LTEuOC0uNmMtMS4yIDIuMi0yLjcgNC4yLTQuNyA1LjlsLjkgMS44Yy40LS4zLjgtLjcgMS4yLTEuMXYxLjJoMS45djIuMmgtMy40djEuN2gzLjR2Ny40bC0zLjkuNi40IDEuOCA5LTEuNC4yLTEuOC0zLjguNnYtNy4yaDMuNXYtMS43aC0zLjV2LTIuMmgxLjl2LTEuN2gtNWMxLTEgMS44LTIuMSAyLjQtMy40IDEuMyAxLjYgMi41IDMuMSAzLjYgNC42eiIvPjxwYXRoIGQ9Ik01MSAzNC4xbDEuOC41Yy40LTEuNC45LTIuOCAxLjMtNC40bC0xLjgtLjRjLS4zIDEuNC0uOCAyLjktMS4zIDQuM3pNNzEgMzFoMTUuNWwtNS45IDEuOHYzLjVjMCAuNi0uNC45LTEgLjktMSAwLTIuNy0uMS00LjEtLjJsLjYgMS45YzEuMS4xIDIuMy4xIDMuNi4xIDIuMSAwIDMuMi0uOSAzLjItMi42di0yLjVsOC42LTN2LTEuNkg3MVYzMXpNNTcuMiAzMS44aDguNWMuMyAwIC41LS4yLjUtLjV2LTYuOWMwLS4zLS4yLS41LS41LS41aC04LjV2LTQuMmgxMC4xdi0xLjhINTUuN2MtLjMgMC0uNS4yLS41LjV2MTkuMmMwIC4zLjIuNS41LjVoMTEuOHYtMS44SDU3LjJ2LTQuNXptMC02LjNoN1YzMGgtN3YtNC41ek04OS42IDI4Yy4zIDAgLjUtLjIuNS0uNXYtNC40YzAtLjMtLjItLjUtLjUtLjVINzMuN2MtLjMgMC0uNS4yLS41LjV2NC4zYzAgLjMuMi41LjUuNWwxNS45LjF6bS0xNC4yLTMuOEg4OHYyLjFINzUuNHYtMi4xek04Mi43IDE2LjZoLTIuMXYyLjlINzAuM3YxLjdoMjIuOHYtMS43SDgyLjd6TTk1LjggMzcuOWwxLjcuNGMuMy0xLjcuNi0zLjQuOC01LjJsLTEuNy0uNWMtLjIgMS45LS41IDMuNi0uOCA1LjN6TTk4LjggMzNjLjIgMS44LjMgMy41LjQgNC45bDEuOC0uNGMtLjEtMS42LS4zLTMuMi0uNS00LjhsLTEuNy4zek0xMDEuMiAzMi42Yy41IDEuOS45IDMuNCAxLjIgNC41bDEuNi0uOGMtLjMtMS41LS44LTIuOS0xLjMtNC40bC0xLjUuN3pNMTE1LjIgMzIuOWgtNC43di0zLjRoNS4ydi0xLjdoLTMuM3YtMi4zaC0ydjIuM0gxMDd2MS43aDEuNFYzNGMwIC4zLjIuNS41LjVoNi4ybC4xLTEuNnoiLz48cGF0aCBkPSJNMTE3LjggMTcuNUgxMDVjLS4zIDAtLjUuMi0uNS41djIwLjloMlYxOS4xaDkuOXYxNi43YzAgLjgtLjQgMS4zLTEuMiAxLjMtMSAwLTIuMi0uMS0zLjQtLjJsLjQgMS44Yy44LjEgMS44LjEgMi44LjEgMi4zIDAgMy40LTEuMSAzLjQtMy4yVjE4Yy0uMS0uMy0uMy0uNS0uNi0uNXoiLz48cGF0aCBkPSJNMTA3IDI0LjdoOC43VjIzSDExNGwxLjItMi4xLTEuNS0uOS0xLjkgM0gxMTAuOWwtMS45LTMtMS41LjkgMS4zIDIuMUgxMDd6TTEwMS4yIDI2LjljLjEuNS4zIDEuMS40IDEuOGwtMy4xLjVjMS45LTIuNyAzLjUtNS40IDUtOC4zbC0xLjYtMWMtLjUgMS0xLjEgMi0xLjYgM2wtMi4zLjJjMS4yLTIgMi4zLTQgMy4zLTYuMWwtMS44LS44Yy0uOSAyLjYtMi4yIDUtMy44IDcuM2wuNCAxLjUgMy4yLS4zYy0uOSAxLjctMiAzLjQtMy40IDQuOGwuMyAxLjggNS44LS45Yy4xLjMuMS43LjIgMWwxLjgtLjRjLS4zLTEuNy0uNy0zLjItMS00LjZsLTEuOC41eiIvPjwvZz48L3N2Zz4=) left no-repeat; padding:4px;'
)
console.log('%cfe-sdk %cv0.8.4', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#0077ff;')
console.log('- 新增SSO.cacheValidUser避免重複取得profile')
console.log('%cfe-sdk %cv0.8.3', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#0077ff;')
console.log('- 修正當sso cookie和auth.state同時存在時造成無法觸發認證的錯誤')
console.log('%cfe-sdk %cv0.8.1', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#0077ff;')
console.log('- 修正%cFacebookOAuth2Provider%c無法被SSO cookie初始化的問題', b,d)
console.log('- 修正%cGoogleOAuth2Provider%c無法被SSO cookie初始化的問題', b,d)
console.log('- 修正%cGoogleOAuth2Provider%c在使用%cSSOCookies%c時使用者切換錯誤的問題', b, d, b, d)
\ No newline at end of file
if (console && console.log) {
console.log('%c ',
';background-repeat: no-repeat; background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTguMyAzOSI+PHBhdGggZD0iTTI0LjQgMzguNGgtMy42YzAtOS41IDcuNy0xNy4yIDE3LjItMTcuMnYzLjZjLTcuNSAwLTEzLjYgNi4xLTEzLjYgMTMuNnoiIGZpbGw9IiNmZmI0M2UiLz48cGF0aCBkPSJNMy40IDM4LjRIMGMwLTIxIDE3LTM4IDM4LTM4djMuNEMxOC45IDMuOSAzLjUgMTkuMyAzLjQgMzguNHoiIGZpbGw9IiM1NGI1YzYiLz48cGF0aCBkPSJNMTYuNiAzOC40SDEzYzAtMTMuOCAxMS4yLTI1IDI1LTI1LjFWMTdjLTExLjggMC0yMS40IDkuNi0yMS40IDIxLjR6IiBmaWxsPSIjZTAzZjE5Ii8+PGc+PHBhdGggZD0iTTUxLjUgMTEuNXYxLjNoMy43Vi40aC0zLjd2MS4zQzUwLjcuNSA0OS4zLS4yIDQ3LjkgMGMtMy41IDAtNi4zIDIuOC02LjIgNi4zdi4zYzAgMy42IDIuMyA2LjYgNi4yIDYuNiAxLjUuMiAyLjktLjUgMy42LTEuN3pNNDUuNCA3di0uNGMtLjEtMS43IDEuMi0zLjIgMi45LTMuMyAxLjctLjEgMy4yIDEuMiAzLjMgMi45di40Yy4xIDEuNy0xLjIgMy4yLTIuOSAzLjMtMS43LjEtMy4yLTEuMi0zLjMtMi45ek02My44IDBjLTEuNC0uMS0yLjcuNi0zLjQgMS43Vi40aC0zLjV2MTIuNGgzLjdWNi4xYzAtLjggMC0yLjYgMi4xLTIuNiAyIDAgMiAxLjcgMiAyLjZ2Ni44aDMuN1Y1LjFjMC0yLjQtLjgtMy40LTEuNC00QzY2LjEuNCA2NC45IDAgNjMuOCAwek03NC42IDEzLjJjMS4zLjEgMi42LS41IDMuMi0xLjd2MS4zaDMuNVYuNGgtMy43djYuOGMwIDItMSAyLjUtMi4xIDIuNS0yIDAtMi0xLjYtMi0yLjVWLjRoLTMuN3Y3LjRjLS4yIDEuNC4zIDIuOCAxLjIgMy44LjkgMS4xIDIuMiAxLjcgMy42IDEuNnpNODkuNCAwaC0uMmMtMy43LjItNi41IDMuMy02LjMgNi45LjIgMy41IDIuOSA2LjIgNi40IDYuMyAxLjMgMCAyLjUtLjQgMy41LTEuMSAxLjEtLjggMi0xLjkgMi41LTMuMmgtMy44Yy0uNS43LTEuNCAxLjItMi4yIDEuMi0xLjQuMS0yLjctLjktMi45LTIuM2g5LjNjLjEtLjMuMS0uNy4xLTFDOTUuOSAzLjEgOTMgLjEgODkuNCAwem0tMyA1LjJjLjQtMS42IDIuMS0yLjUgMy42LTIgMSAuMyAxLjcgMSAyIDJoLTUuNnpNNDYuOSAyOS44bC0xLjguNGMuMyAxLjIuNyAyLjggMSA0LjZsMS44LS40Yy0uNC0xLjctLjctMy4yLTEtNC42eiIvPjxwYXRoIGQ9Ik01My4zIDIzLjhsMS41LTEuNGMtMS4zLTEuNi0yLjYtMy4xLTQtNC42bC4yLS43LTEuOC0uNmMtMS4yIDIuMi0yLjcgNC4yLTQuNyA1LjlsLjkgMS44Yy40LS4zLjgtLjcgMS4yLTEuMXYxLjJoMS45djIuMmgtMy40djEuN2gzLjR2Ny40bC0zLjkuNi40IDEuOCA5LTEuNC4yLTEuOC0zLjguNnYtNy4yaDMuNXYtMS43aC0zLjV2LTIuMmgxLjl2LTEuN2gtNWMxLTEgMS44LTIuMSAyLjQtMy40IDEuMyAxLjYgMi41IDMuMSAzLjYgNC42eiIvPjxwYXRoIGQ9Ik01MSAzNC4xbDEuOC41Yy40LTEuNC45LTIuOCAxLjMtNC40bC0xLjgtLjRjLS4zIDEuNC0uOCAyLjktMS4zIDQuM3pNNzEgMzFoMTUuNWwtNS45IDEuOHYzLjVjMCAuNi0uNC45LTEgLjktMSAwLTIuNy0uMS00LjEtLjJsLjYgMS45YzEuMS4xIDIuMy4xIDMuNi4xIDIuMSAwIDMuMi0uOSAzLjItMi42di0yLjVsOC42LTN2LTEuNkg3MVYzMXpNNTcuMiAzMS44aDguNWMuMyAwIC41LS4yLjUtLjV2LTYuOWMwLS4zLS4yLS41LS41LS41aC04LjV2LTQuMmgxMC4xdi0xLjhINTUuN2MtLjMgMC0uNS4yLS41LjV2MTkuMmMwIC4zLjIuNS41LjVoMTEuOHYtMS44SDU3LjJ2LTQuNXptMC02LjNoN1YzMGgtN3YtNC41ek04OS42IDI4Yy4zIDAgLjUtLjIuNS0uNXYtNC40YzAtLjMtLjItLjUtLjUtLjVINzMuN2MtLjMgMC0uNS4yLS41LjV2NC4zYzAgLjMuMi41LjUuNWwxNS45LjF6bS0xNC4yLTMuOEg4OHYyLjFINzUuNHYtMi4xek04Mi43IDE2LjZoLTIuMXYyLjlINzAuM3YxLjdoMjIuOHYtMS43SDgyLjd6TTk1LjggMzcuOWwxLjcuNGMuMy0xLjcuNi0zLjQuOC01LjJsLTEuNy0uNWMtLjIgMS45LS41IDMuNi0uOCA1LjN6TTk4LjggMzNjLjIgMS44LjMgMy41LjQgNC45bDEuOC0uNGMtLjEtMS42LS4zLTMuMi0uNS00LjhsLTEuNy4zek0xMDEuMiAzMi42Yy41IDEuOS45IDMuNCAxLjIgNC41bDEuNi0uOGMtLjMtMS41LS44LTIuOS0xLjMtNC40bC0xLjUuN3pNMTE1LjIgMzIuOWgtNC43di0zLjRoNS4ydi0xLjdoLTMuM3YtMi4zaC0ydjIuM0gxMDd2MS43aDEuNFYzNGMwIC4zLjIuNS41LjVoNi4ybC4xLTEuNnoiLz48cGF0aCBkPSJNMTE3LjggMTcuNUgxMDVjLS4zIDAtLjUuMi0uNS41djIwLjloMlYxOS4xaDkuOXYxNi43YzAgLjgtLjQgMS4zLTEuMiAxLjMtMSAwLTIuMi0uMS0zLjQtLjJsLjQgMS44Yy44LjEgMS44LjEgMi44LjEgMi4zIDAgMy40LTEuMSAzLjQtMy4yVjE4Yy0uMS0uMy0uMy0uNS0uNi0uNXoiLz48cGF0aCBkPSJNMTA3IDI0LjdoOC43VjIzSDExNGwxLjItMi4xLTEuNS0uOS0xLjkgM0gxMTAuOWwtMS45LTMtMS41LjkgMS4zIDIuMUgxMDd6TTEwMS4yIDI2LjljLjEuNS4zIDEuMS40IDEuOGwtMy4xLjVjMS45LTIuNyAzLjUtNS40IDUtOC4zbC0xLjYtMWMtLjUgMS0xLjEgMi0xLjYgM2wtMi4zLjJjMS4yLTIgMi4zLTQgMy4zLTYuMWwtMS44LS44Yy0uOSAyLjYtMi4yIDUtMy44IDcuM2wuNCAxLjUgMy4yLS4zYy0uOSAxLjctMiAzLjQtMy40IDQuOGwuMyAxLjggNS44LS45Yy4xLjMuMS43LjIgMWwxLjgtLjRjLS4zLTEuNy0uNy0zLjItMS00LjZsLTEuOC41eiIvPjwvZz48L3N2Zz4=) left no-repeat; padding:4px;'
)
console.log('%cfe-sdk %cv0.9.1', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#0077ff;')
console.log('- 將Auth的SSO機制由Storage移至cookie storage')
console.log('- 將FacebookOAuth2Provider的錯誤拋出以便Auth.onError可以正常的處理這些錯誤')
console.log('%cfe-sdk %cv0.8.4', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#AAA;')
console.log('- 新增SSO.cacheValidUser避免重複取得profile')
console.log('%cfe-sdk %cv0.8.3', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#AAA;')
console.log('- 修正當sso cookie和auth.state同時存在時造成無法觸發認證的錯誤')
console.log('%cfe-sdk %cv0.8.1', 'font-size: 12px; color:#555;', 'font-weight: bolder; font-size: 12px; color:#AAA;')
console.log('- 修正%cFacebookOAuth2Provider%c無法被SSO cookie初始化的問題', b,d)
console.log('- 修正%cGoogleOAuth2Provider%c無法被SSO cookie初始化的問題', b,d)
console.log('- 修正%cGoogleOAuth2Provider%c在使用%cSSOCookies%c時使用者切換錯誤的問題', b, d, b, d)
}
\ No newline at end of file
{
"name": "anue-fe-sdk",
"version": "0.8.4",
"name": "@anue/fe-sdk",
"version": "0.9.1",
"description": "Anue SDK for developers",
"types": "./defines",
"scripts": {
......@@ -43,24 +43,7 @@
"git add"
]
},
"size-limit": [
{
"limit": "3 KB",
"path": "build/Auth.js"
},
{
"limit": "3 KB",
"path": "build/index.js"
},
{
"limit": "3 KB",
"path": "build/react-native-preset.js"
},
{
"limit": "3 KB",
"path": "build/web-preset.js"
}
],
"devDependencies": {
"@babel/core": "7.2.0",
"@babel/plugin-proposal-class-properties": "7.2.1",
......
......@@ -363,6 +363,7 @@ class Auth {
if (retry && !profile) {
this.clearCredentials()
throw {
status: 404,
message: 'Failed to renew authorization token as the user profile does not exists'
}
}
......@@ -443,37 +444,42 @@ class Auth {
);
await this.consumeState();
const providerCode = await Storage.getDriver().getItem(
Keys.Auth.Storage.SSOProvider
);
if (providerCode) {
this.mSSOProvider = providerCode;
}
const promises = providers.map(provider => {
const providerName = provider.getName();
this.mConnectedProviders[providerName] = provider;
try {
provider.onLoginStateChange(ctx => {
this.syncProviderToken(provider, ctx);
});
const providerCode = await Storage.getDriver().getItem(
Keys.Auth.Storage.SSOProvider
);
// in lazy mode, sso provider should still be automatically initialized
if (lazy && providerName !== this.mSSOProvider) {
console.log(
'%c[Auth] drop provider [%s] as it is not sso provider',
'color:gray;',
providerName
);
return Promise.resolve({})
if (providerCode) {
this.mSSOProvider = providerCode;
}
const promises = providers.map(provider => {
const providerName = provider.getName();
this.mConnectedProviders[providerName] = provider;
provider.onLoginStateChange(ctx => {
this.syncProviderToken(provider, ctx);
});
// in lazy mode, sso provider should still be automatically initialized
if (lazy && providerName !== this.mSSOProvider) {
console.log(
'%c[Auth] drop provider [%s] as it is not sso provider',
'color:gray;',
providerName
);
return Promise.resolve({})
}
return provider.init();
});
Promise.all(promises).then(() => {
return provider.init();
});
await Promise.all(promises)
this.mIsReady = true;
this.event.emit(Keys.Auth.Events.Loaded);
});
}
catch (err) {
this.event.emit(Keys.Auth.Events.Error, err);
}
};
lazyConnectProvider = (...providers: AbstractProvider[]): Auth => {
......
......@@ -145,16 +145,11 @@ export default class FacebookOAuth2Provider extends AbstractProvider {
// consume tokens in url and `authuser` in storage
await this.consume();
try {
if (this.mClientConfig.rpcUri) {
this.mRpc = this.initializeRpc();
await this.refresh();
}
} catch (err) {
console.warn('[FacebookOAuth2Provider] failed to grant credentials', err);
this.mContext = null;
if (this.mClientConfig.rpcUri) {
this.mRpc = this.initializeRpc();
await this.refresh();
}
this.emitStateChange();
return this;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment