@quiltt/react 2.1.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -0
- package/LICENSE.md +1 -1
- package/README.md +25 -6
- package/dist/{QuilttContainer-3c14e032.d.ts → QuilttContainer-15c62db4.d.ts} +9 -4
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{useStorage-6f448a5a.d.ts → useStorage-d28cfd32.d.ts} +5 -3
- package/package.json +2 -2
- package/src/components/QuilttButton.tsx +18 -3
- package/src/components/QuilttContainer.tsx +20 -2
- package/src/hooks/useQuilttConnector.ts +78 -20
- package/src/hooks/useScript.ts +105 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,77 @@
|
|
|
1
1
|
# @quiltt/react
|
|
2
2
|
|
|
3
|
+
## 2.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 24f6df1: This introduces a new Javascript API that can be used instead of or with the DOM API, giving exposure to exit events. There are a few ways to use it:
|
|
8
|
+
|
|
9
|
+
## 1. HTML5
|
|
10
|
+
|
|
11
|
+
If you're using the HTML interface, and need to upgrade to using some Javascript code, you can; but all event registrations are on a global level. This means that if you have multiple buttons, you will look at the metadata of the response to see which one you're reacting to.
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<head>
|
|
15
|
+
<script src="https://cdn.quiltt.io/v1/connector.js"></script>
|
|
16
|
+
<script language="JavaScript">
|
|
17
|
+
Quiltt.onExitSuccess((metadata) =>
|
|
18
|
+
console.log("Global onExitSuccess", metadata.connectionId)
|
|
19
|
+
);
|
|
20
|
+
</script>
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
<button quiltt-button="<CONNECTOR_ID">Click Here!</button>
|
|
24
|
+
</body>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 2. Javascript
|
|
28
|
+
|
|
29
|
+
Now if you want to do something more complex, and expect to be working with multiple buttons in different ways, then the Javascript SDK may be the way to go. With this, you can control everything in JS.
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<head>
|
|
33
|
+
<script src="https://cdn.quiltt.io/v1/connector.js"></script>
|
|
34
|
+
<script language="JavaScript">
|
|
35
|
+
Quiltt.authenticate("<SESSION_TOKEN>");
|
|
36
|
+
|
|
37
|
+
const connector = Quiltt.connect("<CONNECTOR_ID>", {
|
|
38
|
+
onExitSuccess: (metadata) => {
|
|
39
|
+
console.log("Connector onExitSuccess", metadata.connectionId),
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
connector.open();
|
|
43
|
+
</script>
|
|
44
|
+
</head>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 3. React
|
|
48
|
+
|
|
49
|
+
With these new hooks, the React components now support callbacks.
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
import { QuilttButton } from '@quiltt/react'
|
|
53
|
+
|
|
54
|
+
export const App = () => {
|
|
55
|
+
const [connectionId, setConnectionId] = useState<string>()
|
|
56
|
+
const handleSuccess = (metadata) => setConnectionId(metadata?.connectionId)
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<QuilttButton connectorId="<CONNECTOR_ID>" onExitSuccess={handleSuccess}>
|
|
60
|
+
Add
|
|
61
|
+
</QuilttButton>
|
|
62
|
+
|
|
63
|
+
<QuilttButton connectorId="<CONNECTOR_ID>" connectionId={connectionId}>
|
|
64
|
+
Repair
|
|
65
|
+
</QuilttButton>
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Patch Changes
|
|
71
|
+
|
|
72
|
+
- Updated dependencies [24f6df1]
|
|
73
|
+
- @quiltt/core@2.2.0
|
|
74
|
+
|
|
3
75
|
## 2.1.2
|
|
4
76
|
|
|
5
77
|
### Patch Changes
|
package/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) Quiltt
|
|
3
|
+
Copyright (c) Quiltt, Inc.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
6
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @quiltt/react
|
|
2
2
|
|
|
3
|
-
[](https://badge.fury.io/js/@quiltt%2Freact)
|
|
4
4
|
[](https://github.com/quiltt/quiltt-public/actions/workflows/ci.yml)
|
|
5
5
|
|
|
6
6
|
`@quiltt/react` provides React Components and Hooks for integrating Quiltt into React-based applications.
|
|
@@ -34,14 +34,22 @@ By default, the rendered component will be a `<button>` element, but you can sup
|
|
|
34
34
|
#### Example
|
|
35
35
|
|
|
36
36
|
```tsx
|
|
37
|
+
import { useState } from 'react'
|
|
37
38
|
import { QuilttButton } from '@quiltt/react'
|
|
38
39
|
|
|
39
40
|
export const App = () => {
|
|
41
|
+
const [connectionId, setConnectionId] = useState<string>()
|
|
42
|
+
const handleExitSuccess = (metadata) => {
|
|
43
|
+
setConnectionId(metadata?.connectionId)
|
|
44
|
+
}
|
|
45
|
+
|
|
40
46
|
return (
|
|
41
47
|
<QuilttButton
|
|
42
|
-
connectorId="
|
|
48
|
+
connectorId="<CONNECTOR_ID>"
|
|
49
|
+
onExitSuccess={handleExitSuccess}
|
|
43
50
|
className="my-css-class"
|
|
44
51
|
styles={{ borderWidth: '2px' }}
|
|
52
|
+
// ... other props to pass through to the button
|
|
45
53
|
>
|
|
46
54
|
Add Account
|
|
47
55
|
</QuilttButton>
|
|
@@ -59,14 +67,22 @@ By default, the rendered component will be a `<div>` element, but you can supply
|
|
|
59
67
|
##### Example
|
|
60
68
|
|
|
61
69
|
```tsx
|
|
70
|
+
import { useState } from 'react'
|
|
62
71
|
import { QuilttContainer } from '@quiltt/react'
|
|
63
72
|
|
|
64
73
|
export const App = () => {
|
|
74
|
+
const [connectionId, setConnectionId] = useState<string>()
|
|
75
|
+
const handleExitSuccess = (metadata) => {
|
|
76
|
+
setConnectionId(metadata?.connectionId)
|
|
77
|
+
}
|
|
78
|
+
|
|
65
79
|
return (
|
|
66
80
|
<QuilttContainer
|
|
67
|
-
connectorId="
|
|
81
|
+
connectorId="<CONNECTOR_ID>"
|
|
82
|
+
onExitSuccess={handleExitSuccess}
|
|
68
83
|
className="my-css-class"
|
|
69
84
|
styles={{ height: '100%' }}
|
|
85
|
+
// ... other props to pass through to the container
|
|
70
86
|
/>
|
|
71
87
|
)
|
|
72
88
|
}
|
|
@@ -104,10 +120,13 @@ A hook to manage the lifecycle of [Quiltt Connector](https://www.quiltt.dev/guid
|
|
|
104
120
|
import { useQuilttConnector } from '@quiltt/react'
|
|
105
121
|
|
|
106
122
|
const App = () => {
|
|
107
|
-
useQuilttConnector(
|
|
123
|
+
const { open } = useQuilttConnector('<CONNECTOR_ID>', {
|
|
124
|
+
onEvent: (type) => console.log(`Received Quiltt Event: ${type}`)
|
|
125
|
+
onExitSuccess: (metadata) => console.log("Connector onExitSuccess", metadata.connectionId),
|
|
126
|
+
})
|
|
108
127
|
|
|
109
|
-
return
|
|
110
|
-
<button
|
|
128
|
+
return(
|
|
129
|
+
<button onClick={open}>
|
|
111
130
|
Launch Connector
|
|
112
131
|
</button>
|
|
113
132
|
)
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import { FC, Component, ComponentType } from 'react';
|
|
4
|
+
import { Callbacks } from '@quiltt/core';
|
|
4
5
|
|
|
5
6
|
type AnyTag = string | FC<any> | (new (props: any) => Component);
|
|
6
7
|
type PropsOf<Tag> = Tag extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[Tag] : Tag extends ComponentType<infer Props> ? Props & JSX.IntrinsicAttributes : never;
|
|
7
8
|
|
|
8
|
-
declare const QuilttButton: <T extends AnyTag = "button">({ as, connectorId, connectionId, ...props }: {
|
|
9
|
+
declare const QuilttButton: <T extends AnyTag = "button">({ as, connectorId, connectionId, onEvent, onExit, onExitSuccess, onExitAbort, onExitError, ...props }: {
|
|
9
10
|
as?: T | undefined;
|
|
10
11
|
connectorId: string;
|
|
11
12
|
connectionId?: string | undefined;
|
|
12
|
-
} & {
|
|
13
|
+
} & Callbacks & {
|
|
13
14
|
children?: react.ReactNode;
|
|
14
15
|
} & PropsOf<T>) => react_jsx_runtime.JSX.Element;
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
/**
|
|
18
|
+
* QuilttContainer uses globally shared callbacks. It's recommended you only use
|
|
19
|
+
* one Container at a time.
|
|
20
|
+
*/
|
|
21
|
+
declare const QuilttContainer: <T extends AnyTag = "div">({ as, connectorId, connectionId, onEvent, onExit, onExitSuccess, onExitAbort, onExitError, ...props }: {
|
|
17
22
|
as?: T | undefined;
|
|
18
23
|
connectorId: string;
|
|
19
24
|
connectionId?: string | undefined;
|
|
20
|
-
} & {
|
|
25
|
+
} & Callbacks & {
|
|
21
26
|
children?: react.ReactNode;
|
|
22
27
|
} & PropsOf<T>) => react_jsx_runtime.JSX.Element;
|
|
23
28
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Ke=Object.create;var g=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames,w=Object.getOwnPropertySymbols,We=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable;var ae=(e,t,n)=>t in e?g(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=(e,t)=>{for(var n in t||(t={}))K.call(t,n)&&ae(e,n,t[n]);if(w)for(var n of w(t))ue.call(t,n)&&ae(e,n,t[n]);return e};var O=(e,t)=>{var n={};for(var r in e)K.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&w)for(var r of w(e))t.indexOf(r)<0&&ue.call(e,r)&&(n[r]=e[r]);return n};var pe=(e,t)=>{for(var n in t)g(e,n,{get:t[n],enumerable:!0})},A=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ge(t))!K.call(e,o)&&o!==n&&g(e,o,{get:()=>t[o],enumerable:!(r=qe(t,o))||r.enumerable});return e},x=(e,t,n)=>(A(e,t,"default"),n&&A(n,t,"default")),ce=(e,t,n)=>(n=e!=null?Ke(We(e)):{},A(t||!e||!e.__esModule?g(n,"default",{value:e,enumerable:!0}):n,e)),Be=e=>A(g({},"__esModule",{value:!0}),e);var l=(e,t,n)=>new Promise((r,o)=>{var i=p=>{try{u(n.next(p))}catch(h){o(h)}},s=p=>{try{u(n.throw(p))}catch(h){o(h)}},u=p=>p.done?r(p.value):Promise.resolve(p.value).then(i,s);u((n=n.apply(e,t)).next())});var at={};pe(at,{QuilttButton:()=>je,QuilttContainer:()=>Ue});module.exports=Be(at);var y={};pe(y,{QuilttAuthProvider:()=>oe,QuilttButton:()=>je,QuilttContainer:()=>Ue,QuilttProvider:()=>st,QuilttSettings:()=>V,QuilttSettingsProvider:()=>ie,useAuthenticateSession:()=>G,useEventListener:()=>He,useIdentifySession:()=>q,useImportSession:()=>W,useIsomorphicLayoutEffect:()=>le,useQuilttClient:()=>ot,useQuilttConnector:()=>E,useQuilttSession:()=>_,useQuilttSettings:()=>te,useRevokeSession:()=>B,useSession:()=>ee,useStorage:()=>Z});x(y,require("@quiltt/core"));var C=require("react");var P=require("react"),le=typeof window!="undefined"?P.useLayoutEffect:P.useEffect,fe=le;function He(e,t,n,r){let o=(0,C.useRef)(t);fe(()=>{o.current=t},[t]),(0,C.useEffect)(()=>{var u;let i=(u=n==null?void 0:n.current)!=null?u:window;if(!(i&&i.addEventListener))return;let s=p=>o.current(p);return i.addEventListener(e,s,r),()=>{i.removeEventListener(e,s,r)}},[e,n,r])}var me=require("react");var q=(e,t)=>(0,me.useCallback)((r,o)=>l(void 0,null,function*(){let i=yield e.identify(r),s=i;switch(i.status){case 201:if(t(i.data.token),o.onSuccess)return o.onSuccess();break;case 202:if(o.onChallenged)return o.onChallenged();break;case 422:if(o.onError)return o.onError(s.data);break;default:throw new Error(`Unexpected auth identify response status: ${i.status}`)}}),[e,t]);var de=require("react");var G=(e,t)=>(0,de.useCallback)((r,o)=>l(void 0,null,function*(){let i=yield e.authenticate(r);switch(i.status){case 201:if(t(i.data.token),o.onSuccess)return o.onSuccess();break;case 401:if(o.onFailure)return o.onFailure();break;case 422:if(o.onError)return o.onError(i.data);break;default:throw new Error(`Unexpected auth authenticate response status: ${i.status}`)}}),[e,t]);var ye=require("react");var W=(e,t,n)=>(0,ye.useCallback)(o=>l(void 0,null,function*(){if(!o)return!!t;if(t&&t.token==o)return!0;let i=yield e.ping(o);switch(i.status){case 200:return n(o),!0;break;case 401:return!1;default:throw new Error(`Unexpected auth ping response status: ${i.status}`)}}),[e,t,n]);var he=require("react");var B=(e,t,n)=>(0,he.useCallback)(()=>l(void 0,null,function*(){t&&(yield e.revoke(t.token),n(null))}),[e,t,n]);var H=function(e,t){return H=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])},H(e,t)};function ve(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");H(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var J="Invariant Violation",be=Object.setPrototypeOf,Je=be===void 0?function(e,t){return e.__proto__=t,e}:be,Se=function(e){ve(t,e);function t(n){n===void 0&&(n=J);var r=e.call(this,typeof n=="number"?J+": "+n+" (see https://github.com/apollographql/invariant-packages)":n)||this;return r.framesToPop=1,r.name=J,Je(r,t.prototype),r}return t}(Error);function c(e,t){if(!e)throw new Se(t)}var ge=["debug","log","warn","error","silent"],Xe=ge.indexOf("log");function R(e){return function(){if(ge.indexOf(e)>=Xe){var t=console[e]||console.log;return t.apply(console,arguments)}}}(function(e){e.debug=R("debug"),e.log=R("log"),e.warn=R("warn"),e.error=R("error")})(c||(c={}));function a(e){try{return e()}catch(t){}}var L=a(function(){return globalThis})||a(function(){return window})||a(function(){return self})||a(function(){return global})||a(function(){return a.constructor("return this")()});var xe="__",Te=[xe,xe].join("DEV");function $e(){try{return!!__DEV__}catch(e){return Object.defineProperty(L,Te,{value:a(function(){return process.env.NODE_ENV})!=="production",enumerable:!1,configurable:!0,writable:!0}),L[Te]}}var N=$e();function m(e){try{return e()}catch(t){}}var X=m(function(){return globalThis})||m(function(){return window})||m(function(){return self})||m(function(){return global})||m(function(){return m.constructor("return this")()}),$=!1;function Ye(){X&&!m(function(){return process.env.NODE_ENV})&&!m(function(){return process})&&(Object.defineProperty(X,"process",{value:{env:{NODE_ENV:"production"}},configurable:!0,enumerable:!1,writable:!0}),$=!0)}Ye();function Y(){$&&(delete X.process,$=!1)}function I(e,t){if(!!!e)throw new Error(t)}function _e(e){return D(e,[])}function D(e,t){switch(typeof e){case"string":return JSON.stringify(e);case"function":return e.name?`[function ${e.name}]`:"[function]";case"object":return ze(e,t);default:return String(e)}}function ze(e,t){if(e===null)return"null";if(t.includes(e))return"[Circular]";let n=[...t,e];if(Ze(e)){let r=e.toJSON();if(r!==e)return typeof r=="string"?r:D(r,n)}else if(Array.isArray(e))return tt(e,n);return et(e,n)}function Ze(e){return typeof e.toJSON=="function"}function et(e,t){let n=Object.entries(e);return n.length===0?"{}":t.length>2?"["+nt(e)+"]":"{ "+n.map(([o,i])=>o+": "+D(i,t)).join(", ")+" }"}function tt(e,t){if(e.length===0)return"[]";if(t.length>2)return"[Array]";let n=Math.min(10,e.length),r=e.length-n,o=[];for(let i=0;i<n;++i)o.push(D(e[i],t));return r===1?o.push("... 1 more item"):r>1&&o.push(`... ${r} more items`),"["+o.join(", ")+"]"}function nt(e){let t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if(t==="Object"&&typeof e.constructor=="function"){let n=e.constructor.name;if(typeof n=="string"&&n!=="")return n}return t}var S=class{constructor(t,n="GraphQL request",r={line:1,column:1}){typeof t=="string"||I(!1,`Body must be a string. Received: ${_e(t)}.`),this.body=t,this.name=n,this.locationOffset=r,this.locationOffset.line>0||I(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||I(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}};function Ee(){return typeof S=="function"?Y():Y()}function rt(){__DEV__?c(typeof N=="boolean",N):c(typeof N=="boolean",39)}Ee();rt();var On=typeof WeakMap=="function"&&a(function(){return navigator.product})!=="ReactNative";var we=typeof Symbol=="function"&&typeof Symbol.for=="function";var Pn=typeof a(function(){return window.document.createElement})=="function",Cn=a(function(){return navigator.userAgent.indexOf("jsdom")>=0})||!1;var M=ce(require("react"),1);var Ae=we?Symbol.for("__APOLLO_CONTEXT__"):"__APOLLO_CONTEXT__";function d(){var e=M.createContext[Ae];return e||(Object.defineProperty(M.createContext,Ae,{value:e=M.createContext({}),enumerable:!1,writable:!1,configurable:!0}),e.displayName="ApolloContext"),e}var z=ce(require("react"),1);var Q=function(e){var t=e.client,n=e.children,r=d();return z.createElement(r.Consumer,null,function(o){return o===void 0&&(o={}),t&&o.client!==t&&(o=Object.assign({},o,{client:t})),__DEV__?c(o.client,'ApolloProvider was not passed a client instance. Make sure you pass in your client via the "client" prop.'):c(o.client,29),z.createElement(r.Provider,{value:o},n)})};var Oe=require("react");function Pe(e){var t=(0,Oe.useContext)(d()),n=e||t.client;return __DEV__?c(!!n,'Could not find "client" in the context or passed in as an option. Wrap the root component in an <ApolloProvider>, or pass an ApolloClient instance in via options.'):c(!!n,32),n}var ot=Pe;var ne=require("react");var Ne=require("react");var Le=require("react"),k=require("react"),j=require("@quiltt/core");var v=require("react"),T=require("@quiltt/core"),Z=(e,t)=>{let n=(0,v.useCallback)(()=>{let s;return(s=T.GlobalStorage.get(e))!==void 0?s:t},[e,t]),[r,o]=(0,v.useState)(n()),i=(0,v.useCallback)(s=>{let u=s instanceof Function?s(r):s;r!==u&&T.GlobalStorage.set(e,u)},[e,r]);return(0,v.useEffect)(()=>(T.GlobalStorage.subscribe(e,o),o(n()),()=>T.GlobalStorage.unsubscribe(e,o)),[]),[r,i]};var Ce=j.JsonWebTokenParse,Re=new j.Timeoutable,ee=(e="session")=>{let[t,n]=Z(e),r=(0,Le.useMemo)(()=>Ce(t),[t]);(0,k.useEffect)(()=>{if(!r)return;let i=r.claims.exp*1e3,s=()=>n(null);if(Date.now()>=i)s();else return Re.set(s,i-Date.now()),()=>Re.clear(s)},[r,n]);let o=(0,k.useCallback)(i=>{let s=i instanceof Function?i(t):i;t!==s&&(!s||Ce(s))&&n(s)},[t,n]);return[r,o]};var Ie=require("@quiltt/core");var U=require("react");var V=(0,U.createContext)({}),te=()=>{let e=(0,U.useContext)(V);return b({},e)};var _=()=>{let{clientId:e}=te(),[t,n]=ee(),r=new Ie.AuthAPI(e),o=W(r,t,n),i=q(r,n),s=G(r,n),u=B(r,t,n),p=(0,Ne.useCallback)(h=>l(void 0,null,function*(){(!h||t&&h&&h==t.token)&&n(null)}),[t,n]);return{session:t,importSession:o,identifySession:i,authenticateSession:s,revokeSession:u,forgetSession:p}};var it=process.env.QUILTT_CDN_BASE||"https://cdn.quiltt.io",f,E=()=>{let{session:e}=_();(0,ne.useEffect)(()=>{f||(f=document.createElement("script"),f.src=`${it}/v1/connector.js`,e!=null&&e.token&&f.setAttribute("quiltt-token",e.token),document.head.appendChild(f))},[]),(0,ne.useEffect)(()=>{f&&(e!=null&&e.token&&e.token!==f.getAttribute("quiltt-token")?f.setAttribute("quiltt-token",e.token):!(e!=null&&e.token)&&f.getAttribute("quiltt-token")&&f.removeAttribute("quiltt-token"))},[e==null?void 0:e.token])};var re=require("react");var F=require("@quiltt/core");var Me=require("react/jsx-runtime"),De=new F.QuilttClient({cache:new F.InMemoryCache}),oe=({token:e,children:t})=>{let{session:n,importSession:r}=_();return(0,re.useEffect)(()=>{e&&r(e)},[e]),(0,re.useEffect)(()=>{De.resetStore()},[n]),(0,Me.jsx)(Q,{client:De,children:t})};var Qe=require("react");var ke=require("react/jsx-runtime"),ie=({clientId:e,children:t})=>{let[n]=(0,Qe.useState)(e);return(0,ke.jsx)(V.Provider,{value:{clientId:n},children:t})};var se=require("react/jsx-runtime"),st=({clientId:e,token:t,children:n})=>(0,se.jsx)(ie,{clientId:e,children:(0,se.jsx)(oe,{token:t,children:n})});var Ve=require("react/jsx-runtime"),je=o=>{var i=o,{as:e,connectorId:t,connectionId:n}=i,r=O(i,["as","connectorId","connectionId"]);return E(),(0,Ve.jsx)(e||"button",b({"quiltt-button":t,"quiltt-connection":n},r))};var Fe=require("react/jsx-runtime"),Ue=o=>{var i=o,{as:e,connectorId:t,connectionId:n}=i,r=O(i,["as","connectorId","connectionId"]);return E(),(0,Fe.jsx)(e||"div",b({"quiltt-container":t,"quiltt-connection":n},r))};0&&(module.exports={QuilttButton,QuilttContainer});
|
|
1
|
+
"use strict";var He=Object.create;var E=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames,C=Object.getOwnPropertySymbols,Xe=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var fe=(t,e,r)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,x=(t,e)=>{for(var r in e||(e={}))q.call(e,r)&&fe(t,r,e[r]);if(C)for(var r of C(e))pe.call(e,r)&&fe(t,r,e[r]);return t};var P=(t,e)=>{var r={};for(var o in t)q.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&C)for(var o of C(t))e.indexOf(o)<0&&pe.call(t,o)&&(r[o]=t[o]);return r};var de=(t,e)=>{for(var r in e)E(t,r,{get:e[r],enumerable:!0})},O=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $e(e))!q.call(t,n)&&n!==r&&E(t,n,{get:()=>e[n],enumerable:!(o=Je(e,n))||o.enumerable});return t},T=(t,e,r)=>(O(t,e,"default"),r&&O(r,e,"default")),me=(t,e,r)=>(r=t!=null?He(Xe(t)):{},O(e||!t||!t.__esModule?E(r,"default",{value:t,enumerable:!0}):r,t)),Ye=t=>O(E({},"__esModule",{value:!0}),t);var m=(t,e,r)=>new Promise((o,n)=>{var s=u=>{try{a(r.next(u))}catch(f){n(f)}},i=u=>{try{a(r.throw(u))}catch(f){n(f)}},a=u=>u.done?o(u.value):Promise.resolve(u.value).then(s,i);a((r=r.apply(t,e)).next())});var dt={};de(dt,{QuilttButton:()=>Ge,QuilttContainer:()=>We});module.exports=Ye(dt);var S={};de(S,{QuilttAuthProvider:()=>ae,QuilttButton:()=>Ge,QuilttContainer:()=>We,QuilttProvider:()=>pt,QuilttSettings:()=>K,QuilttSettingsProvider:()=>ue,useAuthenticateSession:()=>H,useEventListener:()=>ze,useIdentifySession:()=>B,useImportSession:()=>J,useIsomorphicLayoutEffect:()=>ye,useQuilttClient:()=>ct,useQuilttConnector:()=>w,useQuilttSession:()=>A,useQuilttSettings:()=>oe,useRevokeSession:()=>$,useSession:()=>ne,useStorage:()=>re});T(S,require("@quiltt/core"));var R=require("react");var L=require("react"),ye=typeof window!="undefined"?L.useLayoutEffect:L.useEffect,ve=ye;function ze(t,e,r,o){let n=(0,R.useRef)(e);ve(()=>{n.current=e},[e]),(0,R.useEffect)(()=>{var a;let s=(a=r==null?void 0:r.current)!=null?a:window;if(!(s&&s.addEventListener))return;let i=u=>n.current(u);return s.addEventListener(t,i,o),()=>{s.removeEventListener(t,i,o)}},[t,r,o])}var Se=require("react");var B=(t,e)=>(0,Se.useCallback)((o,n)=>m(void 0,null,function*(){let s=yield t.identify(o),i=s;switch(s.status){case 201:if(e(s.data.token),n.onSuccess)return n.onSuccess();break;case 202:if(n.onChallenged)return n.onChallenged();break;case 422:if(n.onError)return n.onError(i.data);break;default:throw new Error(`Unexpected auth identify response status: ${s.status}`)}}),[t,e]);var he=require("react");var H=(t,e)=>(0,he.useCallback)((o,n)=>m(void 0,null,function*(){let s=yield t.authenticate(o);switch(s.status){case 201:if(e(s.data.token),n.onSuccess)return n.onSuccess();break;case 401:if(n.onFailure)return n.onFailure();break;case 422:if(n.onError)return n.onError(s.data);break;default:throw new Error(`Unexpected auth authenticate response status: ${s.status}`)}}),[t,e]);var be=require("react");var J=(t,e,r)=>(0,be.useCallback)(n=>m(void 0,null,function*(){if(!n)return!!e;if(e&&e.token==n)return!0;let s=yield t.ping(n);switch(s.status){case 200:return r(n),!0;break;case 401:return!1;default:throw new Error(`Unexpected auth ping response status: ${s.status}`)}}),[t,e,r]);var xe=require("react");var $=(t,e,r)=>(0,xe.useCallback)(()=>m(void 0,null,function*(){e&&(yield t.revoke(e.token),r(null))}),[t,e,r]);var X=function(t,e){return X=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[n]=o[n])},X(t,e)};function ge(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");X(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var Y="Invariant Violation",Ee=Object.setPrototypeOf,Ze=Ee===void 0?function(t,e){return t.__proto__=e,t}:Ee,Te=function(t){ge(e,t);function e(r){r===void 0&&(r=Y);var o=t.call(this,typeof r=="number"?Y+": "+r+" (see https://github.com/apollographql/invariant-packages)":r)||this;return o.framesToPop=1,o.name=Y,Ze(o,e.prototype),o}return e}(Error);function p(t,e){if(!t)throw new Te(e)}var _e=["debug","log","warn","error","silent"],et=_e.indexOf("log");function D(t){return function(){if(_e.indexOf(t)>=et){var e=console[t]||console.log;return e.apply(console,arguments)}}}(function(t){t.debug=D("debug"),t.log=D("log"),t.warn=D("warn"),t.error=D("error")})(p||(p={}));function c(t){try{return t()}catch(e){}}var N=c(function(){return globalThis})||c(function(){return window})||c(function(){return self})||c(function(){return global})||c(function(){return c.constructor("return this")()});var Ae="__",we=[Ae,Ae].join("DEV");function tt(){try{return!!__DEV__}catch(t){return Object.defineProperty(N,we,{value:c(function(){return process.env.NODE_ENV})!=="production",enumerable:!1,configurable:!0,writable:!0}),N[we]}}var I=tt();function y(t){try{return t()}catch(e){}}var z=y(function(){return globalThis})||y(function(){return window})||y(function(){return self})||y(function(){return global})||y(function(){return y.constructor("return this")()}),Z=!1;function rt(){z&&!y(function(){return process.env.NODE_ENV})&&!y(function(){return process})&&(Object.defineProperty(z,"process",{value:{env:{NODE_ENV:"production"}},configurable:!0,enumerable:!1,writable:!0}),Z=!0)}rt();function ee(){Z&&(delete z.process,Z=!1)}function Q(t,e){if(!!!t)throw new Error(e)}function Ce(t){return M(t,[])}function M(t,e){switch(typeof t){case"string":return JSON.stringify(t);case"function":return t.name?`[function ${t.name}]`:"[function]";case"object":return nt(t,e);default:return String(t)}}function nt(t,e){if(t===null)return"null";if(e.includes(t))return"[Circular]";let r=[...e,t];if(ot(t)){let o=t.toJSON();if(o!==t)return typeof o=="string"?o:M(o,r)}else if(Array.isArray(t))return st(t,r);return it(t,r)}function ot(t){return typeof t.toJSON=="function"}function it(t,e){let r=Object.entries(t);return r.length===0?"{}":e.length>2?"["+at(t)+"]":"{ "+r.map(([n,s])=>n+": "+M(s,e)).join(", ")+" }"}function st(t,e){if(t.length===0)return"[]";if(e.length>2)return"[Array]";let r=Math.min(10,t.length),o=t.length-r,n=[];for(let s=0;s<r;++s)n.push(M(t[s],e));return o===1?n.push("... 1 more item"):o>1&&n.push(`... ${o} more items`),"["+n.join(", ")+"]"}function at(t){let e=Object.prototype.toString.call(t).replace(/^\[object /,"").replace(/]$/,"");if(e==="Object"&&typeof t.constructor=="function"){let r=t.constructor.name;if(typeof r=="string"&&r!=="")return r}return e}var g=class{constructor(e,r="GraphQL request",o={line:1,column:1}){typeof e=="string"||Q(!1,`Body must be a string. Received: ${Ce(e)}.`),this.body=e,this.name=r,this.locationOffset=o,this.locationOffset.line>0||Q(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||Q(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}};function Oe(){return typeof g=="function"?ee():ee()}function ut(){__DEV__?p(typeof I=="boolean",I):p(typeof I=="boolean",39)}Oe();ut();var Dr=typeof WeakMap=="function"&&c(function(){return navigator.product})!=="ReactNative";var Pe=typeof Symbol=="function"&&typeof Symbol.for=="function";var Nr=typeof c(function(){return window.document.createElement})=="function",Ir=c(function(){return navigator.userAgent.indexOf("jsdom")>=0})||!1;var U=me(require("react"),1);var Le=Pe?Symbol.for("__APOLLO_CONTEXT__"):"__APOLLO_CONTEXT__";function v(){var t=U.createContext[Le];return t||(Object.defineProperty(U.createContext,Le,{value:t=U.createContext({}),enumerable:!1,writable:!1,configurable:!0}),t.displayName="ApolloContext"),t}var te=me(require("react"),1);var j=function(t){var e=t.client,r=t.children,o=v();return te.createElement(o.Consumer,null,function(n){return n===void 0&&(n={}),e&&n.client!==e&&(n=Object.assign({},n,{client:e})),__DEV__?p(n.client,'ApolloProvider was not passed a client instance. Make sure you pass in your client via the "client" prop.'):p(n.client,29),te.createElement(o.Provider,{value:n},r)})};var Re=require("react");function De(t){var e=(0,Re.useContext)(v()),r=t||e.client;return __DEV__?p(!!r,'Could not find "client" in the context or passed in as an option. Wrap the root component in an <ApolloProvider>, or pass an ApolloClient instance in via options.'):p(!!r,32),r}var ct=De;var l=require("react");var Me=require("react");var Qe=require("react"),k=require("react"),V=require("@quiltt/core");var b=require("react"),_=require("@quiltt/core"),re=(t,e)=>{let r=(0,b.useCallback)(()=>{let i;return(i=_.GlobalStorage.get(t))!==void 0?i:e},[t,e]),[o,n]=(0,b.useState)(r()),s=(0,b.useCallback)(i=>{let a=i instanceof Function?i(o):i;o!==a&&_.GlobalStorage.set(t,a)},[t,o]);return(0,b.useEffect)(()=>(_.GlobalStorage.subscribe(t,n),n(r()),()=>_.GlobalStorage.unsubscribe(t,n)),[]),[o,s]};var Ne=V.JsonWebTokenParse,Ie=new V.Timeoutable,ne=(t="session")=>{let[e,r]=re(t),o=(0,Qe.useMemo)(()=>Ne(e),[e]);(0,k.useEffect)(()=>{if(!o)return;let s=o.claims.exp*1e3,i=()=>r(null);if(Date.now()>=s)i();else return Ie.set(i,s-Date.now()),()=>Ie.clear(i)},[o,r]);let n=(0,k.useCallback)(s=>{let i=s instanceof Function?s(e):s;e!==i&&(!i||Ne(i))&&r(i)},[e,r]);return[o,n]};var Ue=require("@quiltt/core");var F=require("react");var K=(0,F.createContext)({}),oe=()=>{let t=(0,F.useContext)(K);return x({},t)};var A=()=>{let{clientId:t}=oe(),[e,r]=ne(),o=new Ue.AuthAPI(t),n=J(o,e,r),s=B(o,r),i=H(o,r),a=$(o,e,r),u=(0,Me.useCallback)(f=>m(void 0,null,function*(){(!f||e&&f&&f==e.token)&&r(null)}),[e,r]);return{session:e,importSession:n,identifySession:s,authenticateSession:i,revokeSession:a,forgetSession:u}};var G=require("react"),ie={};function lt(t){let e=document.querySelector(`script[src="${t}"]`),r=e==null?void 0:e.getAttribute("data-status");return{node:e,status:r}}function je(t,e){let[r,o]=(0,G.useState)(()=>{var n;return!t||e!=null&&e.shouldPreventLoad?"idle":typeof window=="undefined"?"loading":(n=ie[t])!=null?n:"loading"});return(0,G.useEffect)(()=>{var u,f;if(!t||e!=null&&e.shouldPreventLoad)return;let n=ie[t];if(n==="ready"||n==="error"){o(n);return}let s=lt(t),i=s.node;if(i)o((f=(u=s.status)!=null?u:n)!=null?f:"loading");else{i=document.createElement("script"),i.src=t,i.async=!0,i.setAttribute("data-status","loading"),document.body.appendChild(i);let d=h=>{let le=h.type==="load"?"ready":"error";i==null||i.setAttribute("data-status",le)};i.addEventListener("load",d),i.addEventListener("error",d)}let a=d=>{let h=d.type==="load"?"ready":"error";o(h),ie[t]=h};return i.addEventListener("load",a),i.addEventListener("error",a),()=>{i&&(i.removeEventListener("load",a),i.removeEventListener("error",a)),i&&(e!=null&&e.removeOnUnmount)&&i.remove()}},[t,e==null?void 0:e.shouldPreventLoad,e==null?void 0:e.removeOnUnmount]),r}var ft=process.env.QUILTT_CDN_BASE||"https://cdn.quiltt.io",w=(t,e)=>{let r=je(`${ft}/v1/connector.js`),{session:o}=A(),[n,s]=(0,l.useState)(),[i,a]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{typeof Quiltt!="undefined"&&Quiltt.authenticate(o==null?void 0:o.token)},[r,o]),(0,l.useEffect)(()=>{typeof Quiltt=="undefined"||!t||(e!=null&&e.connectionId?s(Quiltt.reconnect(t,{connectionId:e.connectionId})):s(Quiltt.connect(t)))},[r,t,e==null?void 0:e.connectionId]),(0,l.useEffect)(()=>{if(!(!n||!(e!=null&&e.onEvent)))return n.onEvent(e.onEvent),()=>n.offEvent(e.onEvent)},[n,e==null?void 0:e.onEvent]),(0,l.useEffect)(()=>{if(!(!n||!(e!=null&&e.onExit)))return n.onExit(e.onExit),()=>n.offExit(e.onExit)},[n,e==null?void 0:e.onExit]),(0,l.useEffect)(()=>{if(!(!n||!(e!=null&&e.onExitSuccess)))return n.onExitSuccess(e.onExitSuccess),()=>n.offExitSuccess(e.onExitSuccess)},[n,e==null?void 0:e.onExitSuccess]),(0,l.useEffect)(()=>{if(!(!n||!(e!=null&&e.onExitAbort)))return n.onExitAbort(e.onExitAbort),()=>n.offExitAbort(e.onExitAbort)},[n,e==null?void 0:e.onExitAbort]),(0,l.useEffect)(()=>{if(!(!n||!(e!=null&&e.onExitError)))return n.onExitError(e.onExitError),()=>n.offExitError(e.onExitError)},[n,e==null?void 0:e.onExitError]),(0,l.useEffect)(()=>{n&&i&&(a(!1),n.open())},[n,i]),{open:(0,l.useCallback)(()=>{if(t)a(!0);else throw new Error("Must provide `connectorId` to `open` Quiltt Connector with Method Call")},[t,a])}};var se=require("react");var W=require("@quiltt/core");var Ve=require("react/jsx-runtime"),ke=new W.QuilttClient({cache:new W.InMemoryCache}),ae=({token:t,children:e})=>{let{session:r,importSession:o}=A();return(0,se.useEffect)(()=>{t&&o(t)},[t]),(0,se.useEffect)(()=>{ke.resetStore()},[r]),(0,Ve.jsx)(j,{client:ke,children:e})};var Fe=require("react");var Ke=require("react/jsx-runtime"),ue=({clientId:t,children:e})=>{let[r]=(0,Fe.useState)(t);return(0,Ke.jsx)(K.Provider,{value:{clientId:r},children:e})};var ce=require("react/jsx-runtime"),pt=({clientId:t,token:e,children:r})=>(0,ce.jsx)(ue,{clientId:t,children:(0,ce.jsx)(ae,{token:e,children:r})});var qe=require("react/jsx-runtime"),Ge=f=>{var d=f,{as:t,connectorId:e,connectionId:r,onEvent:o,onExit:n,onExitSuccess:s,onExitAbort:i,onExitError:a}=d,u=P(d,["as","connectorId","connectionId","onEvent","onExit","onExitSuccess","onExitAbort","onExitError"]);let{open:h}=w(e,{connectionId:r,onEvent:o,onExit:n,onExitSuccess:s,onExitAbort:i,onExitError:a});return(0,qe.jsx)(t||"button",x({onClick:h,"quiltt-connection":r},u))};var Be=require("react/jsx-runtime"),We=f=>{var d=f,{as:t,connectorId:e,connectionId:r,onEvent:o,onExit:n,onExitSuccess:s,onExitAbort:i,onExitError:a}=d,u=P(d,["as","connectorId","connectionId","onEvent","onExit","onExitSuccess","onExitAbort","onExitError"]);return w(e,{onEvent:o,onExit:n,onExitSuccess:s,onExitAbort:i,onExitError:a}),(0,Be.jsx)(t||"div",x({"quiltt-container":e,"quiltt-connection":r},u))};0&&(module.exports={QuilttButton,QuilttContainer});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|