From e03518f85b756443159c8936356163e11f59549f Mon Sep 17 00:00:00 2001 From: Bogdan Carpusor Date: Thu, 2 Oct 2025 16:15:52 +0300 Subject: [PATCH 1/3] Fix padding --- src/theme/DocSidebarItem/Category/styles.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/theme/DocSidebarItem/Category/styles.scss b/src/theme/DocSidebarItem/Category/styles.scss index c42d4c5bf..822ba443c 100644 --- a/src/theme/DocSidebarItem/Category/styles.scss +++ b/src/theme/DocSidebarItem/Category/styles.scss @@ -26,6 +26,9 @@ .menu__link { display: flex; align-items: center; + &:not(:first-child) { + padding-left: 1.6rem; + } } .menu__list-item { From 4625d99cc9b4f61270b0b3703f13740153ef4906 Mon Sep 17 00:00:00 2001 From: Bogdan Carpusor Date: Thu, 2 Oct 2025 16:16:01 +0300 Subject: [PATCH 2/3] Add user profile plugin docs --- docs/additional-verification/captcha.mdx | 4 + .../user-management/user-profile.mdx | 352 ++++++++++++++++++ src/components/NewBadge.tsx | 1 + static/img/user-profile.png | Bin 0 -> 155556 bytes 4 files changed, 357 insertions(+) create mode 100644 docs/post-authentication/user-management/user-profile.mdx create mode 100644 static/img/user-profile.png diff --git a/docs/additional-verification/captcha.mdx b/docs/additional-verification/captcha.mdx index 8f0f7d458..ceef31bfd 100644 --- a/docs/additional-verification/captcha.mdx +++ b/docs/additional-verification/captcha.mdx @@ -105,6 +105,10 @@ SuperTokens.init({ }); ``` +:::info no-title +If you are using a captcha input that renders an input on the frontend, you will have to [disable the use of shadow DOM](/docs/references/frontend-sdks/prebuilt-ui/shadow-dom) when you initialize the SDK. +::: + ### 3. Customize the plugin By default, the plugin performs CAPTCHA validation on the following authentication flows: diff --git a/docs/post-authentication/user-management/user-profile.mdx b/docs/post-authentication/user-management/user-profile.mdx new file mode 100644 index 000000000..a60619201 --- /dev/null +++ b/docs/post-authentication/user-management/user-profile.mdx @@ -0,0 +1,352 @@ +--- +title: Profile Management +hide_title: true +sidebar_position: 4 +description: Add comprehensive user profile management with customizable form fields and account information display using the profile details plugin +page_type: tutorial +--- + +# User profile management + +## Overview + +This tutorial shows you how to add comprehensive user profile management to your **SuperTokens** authentication flows. +The guide makes use of the `plugins` functionality which provides a complete profile management interface with customizable form fields, account information display, and automatic third-party data integration. + +The functionality integrates with the [progressive profiling plugin](/docs/post-authentication/user-management/progressive-profiling) by default. +This allows you to: +- Gradually collect user information through the progressive profiling flow +- Display collected information in the profile details interface +- Keep both systems synchronized automatically + +## Before you start + +The profile details plugin supports only the `React` and `NodeJS` SDKs. +Support for other platforms is under active development. + +You need to start from a working **SuperTokens** setup with the profile base plugin already configured. +If you haven't done that already, please refer to the [Quickstart Guides](/docs/quickstart/introduction). + +## Steps + +### 1. Initialize the backend plugin + +#### 1.1 Install the plugin + +```bash +npm install @supertokens-plugins/profile-details-nodejs +``` + +#### 1.2 Update your backend SDK configuration + +The backend plugin exposes new endpoints which, in turn, get used by the frontend implementation. + +```typescript +import SuperTokens from "supertokens-node"; +import ProfileDetailsPlugin from "@supertokens-plugins/profile-details-nodejs"; + +SuperTokens.init({ + appInfo: { + // your app info + }, + recipeList: [ + // your recipes (Session recipe is required) + ], + experimental: { + plugins: [ + ProfileDetailsPlugin.init({ + sections: [ + { + id: "personal-details", + label: "Personal Information", + description: "Your personal details", + fields: [ + { + id: "firstName", + label: "First Name", + type: "string", + required: true, + placeholder: "Enter your first name", + }, + { + id: "lastName", + label: "Last Name", + type: "string", + required: true, + placeholder: "Enter your last name", + }, + { + id: "company", + label: "Company", + type: "string", + required: false, + placeholder: "Enter your company name", + }, + ], + }, + { + id: "preferences", + label: "Preferences", + description: "Customize your experience", + fields: [ + { + id: "avatar", + label: "Profile Picture", + type: "image-url", + required: false, + placeholder: "https://example.com/avatar.jpg", + }, + { + id: "theme", + label: "Preferred Theme", + type: "select", + required: false, + options: [ + { value: "light", label: "Light" }, + { value: "dark", label: "Dark" }, + { value: "auto", label: "Auto" }, + ], + defaultValue: "auto", + }, + ], + }, + ], + registerSectionsForProgressiveProfiling: true, // Optional: defaults to true + }), + ], + }, +}); +``` + +##### Supported field types + +The plugin supports the following field types: + +| Field Type | Description | Value Type | Example Use Case | +|------------|-------------|------------|------------------| +| `string` | Single-line text input | `string` | Name, title, company | +| `text` | Multi-line text area | `string` | Bio, description, comments | +| `number` | Numeric input | `number` | Age, salary, experience | +| `boolean` | Checkbox input | `boolean` | Newsletter subscription | +| `toggle` | Toggle switch | `boolean` | Feature preferences | +| `email` | Email input with validation | `string` | Contact email | +| `phone` | Phone number input | `string` | Contact number | +| `date` | Date picker | `string` (ISO 8601 format) | Birth date, start date | +| `select` | Dropdown selection | `string` | Country, department, role | +| `multiselect` | Multiple selection dropdown | `string[]` | Skills, interests, languages | +| `password` | Password input | `string` | API keys, secure tokens | +| `url` | URL input with validation | `string` | Website, social profiles | +| `image-url` | Image URL input with preview | `string` | Profile picture, logo | + +##### Third-party data integration + +The plugin automatically integrates with third-party authentication providers to populate profile fields. +When users sign in using external providers, the plugin maps provider data to profile fields (if the fields are configured): + - `firstName`: Maps from `name`, `given_name`, or `first_name` + - `lastName`: Maps from `family_name` or `last_name` + - `avatar`: Maps from `picture` or `avatar_url` + +:::info no-title +You can customize how third-party data maps to your profile fields by overriding the function `getFieldValueFromThirdPartyUserInfo`. + +```typescript +import ProfileDetailsPlugin from "@supertokens-plugins/profile-details-node"; + +SuperTokens.init({ + // ... other config + experimental: { + plugins: [ + ProfileDetailsPlugin.init({ + override: (oI) => ({ + ...oI, + getFieldValueFromThirdPartyUserInfo: (providerId, field, rawUserInfoFromProvider, profile) => { + return rawUserInfoFromProvider[field.id]; + }, + }), + }), + ], + }, +}); +``` +::: + +### 2. Initialize the frontend plugin + +#### 2.1 Install the plugin + +```bash +npm install @supertokens-plugins/profile-details-react +``` + +#### 2.2 Update your frontend SDK configuration + +Initialize the frontend plugin in your existing configuration. +With the following setup the `/user/profile` path renders the profile details page. + +```typescript +import SuperTokens from "supertokens-auth-react"; +import ProfileDetailsPlugin from "@supertokens-plugins/profile-details-react"; + +SuperTokens.init({ + appInfo: { + // your app info + }, + recipeList: [ + // your recipes + ], + experimental: { + plugins: [ + ProfileDetailsPlugin.init(), + ], + }, +}); +``` + +:::info +The user profile page gets rendered by default on the `/user/profile` path. +If you want to change the path, you have to initialize the `profile-base-react` plugin with the `profilePagePath` option. + +```typescript +import SuperTokens from "supertokens-auth-react"; +import ProfileBasePlugin from "@supertokens-plugins/profile-base-react"; +import ProfileDetailsPlugin from "@supertokens-plugins/profile-details-react"; + +SuperTokens.init({ + appInfo: { + // your app info + }, + recipeList: [ + // your recipes + ], + experimental: { + plugins: [ + ProfileBasePlugin.init({ + profilePagePath: "/user/profile", + }), + ProfileDetailsPlugin.init(), + ], + }, +}); +``` +::: + +### 3. Test the implementation + +Authenticate and then visit the `/user/profile` path. +You should see the new interface that renders the profile data. + +Progressive profiling setup interface + +## Customization + +### Custom field components + +To add custom rendering behavior for fields you have to pass an override during plugin initialization. + +```typescript +import ProfileDetailsPlugin from "@supertokens-plugins/profile-details-react"; +import { CustomStringInput, CustomStringView } from "./your-custom-components"; + +SuperTokens.init({ + // ... other config + experimental: { + plugins: [ + ProfileDetailsPlugin.init({ + override: (oI) => ({ + ...oI, + fieldInputComponentMap: (originalMap) => ({ + ...originalMap, + string: CustomStringInput, + }), + fieldViewComponentMap: (originalMap) => ({ + ...originalMap, + string: CustomStringView, + }), + }), + }), + ], + }, +}); +``` + +### Custom user interface + +To create your own UI you can use the `usePluginContext` hook. +It exposes an interface which you can use to call the endpoints exposed by the backend plugin. + +```typescript +import { usePluginContext } from "@supertokens-plugins/profile-details-react"; + +function CustomProfileComponent() { + const { api, t, fieldInputComponentMap } = usePluginContext(); + const [profile, setProfile] = useState(null); + + const handleGetDetails = async () => { + const result = await api.getDetails(); + if (result.status === "OK") { + setProfile(result.profile); + } + }; + + const handleUpdateProfile = async (data) => { + const result = await api.updateProfile({ data }); + if (result.status === "OK") { + console.log("Profile updated successfully"); + } + }; + + return ( +
+

{t("PL_CD_SECTION_ACCOUNT_LABEL")}

+ + {/* Your custom form components */} +
+ ); +} +``` + +## Next steps + +Besides profile details management, you can also explore other user management features: + + + + + Progressive Profiling + + + Gradually collect user information through customizable forms. + + + + + + User Banning + + + Implement user banning functionality to restrict access. + + + + + + User Roles + + + Implement role-based access control for your users. + + + + + + Plugins Reference + + + General information on how plugins work. + + + diff --git a/src/components/NewBadge.tsx b/src/components/NewBadge.tsx index 83e929f0f..a220abbad 100644 --- a/src/components/NewBadge.tsx +++ b/src/components/NewBadge.tsx @@ -8,6 +8,7 @@ const NewPages = [ "/docs/authentication/enterprise/tenant-discovery", "/docs/deployment/telemetry", "/docs/post-authentication/user-management/progressive-profiling", + "/docs/post-authentication/user-management/user-profile", ]; const NewCategories = ["Plugins"]; diff --git a/static/img/user-profile.png b/static/img/user-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..30ba5a23985ed60cf96c5841e98e55871ed26674 GIT binary patch literal 155556 zcmcG01z45a)-@#|(kMu78Vo{8Iwh186h%rpq`OlDqy$7dq!gqCq)X`#B&53=r2Aj* zMm?eD-ur#u{m*&MBL_FUYp*ru7-Nn(*Y;PClf*htavlKz0ZUp+{4N3liXiy!GCC^w z&h?X)N8k@c>${So2sxk07Qp`~=sl3umz71h0=`B^KtjYvK!#od{zZ6Zgn$D78UcYG z{E2{ooP_wt-zFjb_*)dgB;=o8Uxr@TL$5sne#t{4zZrpF*}%A zKrcYxci;tIn(Em+hB=r%F|+1%5TJ&?f){)ZeVc_E27if-i2(HjSp}Gwxs@J_iZ_*UhYH&VI>{-y^PPtz%_mVPj-&27`X@V{LO=8v$x+=s`dKIa{ZVk^Ub~ zGPC~vw!j-?f&PYtjhU6@=kEqT$`5^)SKi7<4?G$A{eo=#@K^rjd*7eK&jLOCPm4Kw zr||EBw<>s^pXKMa37)^KF@c7FAdDa_E~4y!xLk=g%<=HvoaR~^-wWxQP*mK|RD2X< zsR%Na3osEyWd)U!HzsN-YBH3B>UhZRw)bq<#aYN(0Jy_p(gjwHxtVQe_Jy6!` zTAr2VR=s$b#hX!`tdT} zp;yU12}+e0ZpT)hKn$Zi$8lE;ZdYxD`$WyX;_~iTA6Mm{8;+5M*r9D9L_3`)9 zd4Ph~ZCV4Zao(EE&=|(nCQ#|QMiTc~a&C>$^nGc4jckdmI5Aal>-8C=VS8ichEU7^ zj0shpUP5ndR=VmEA8NWoHU_-_Q8X9F+r31mm5k9%@O|wNK!0)hGcG+VEkCltV@xEe zk56AW7$F6Q8lxFOhnR?C*3t)?_n;G=j0#ODi7t%p3>Fy*3ORQ?Qz2GjjVObV93S?O zh4q4K^3>Ktf0cH0bPP&_JToTfXy9v2?r2PU>siOT`#lQct5XUK(-~oxS*N%NsFULJ zhUJ*&IXKE9*rvU-70SLwA>B$wmT6{S)@eG&Zq4Eo(q2~k=q8P}CN8(8cZ~|JXm>1w zgqD;8MS2%A0>01f-sMdcVyfQYZtxTzLCWEXT#-)1J05lURE?Rl|d^Nj;U(4xZR)xd7+&uXAk#@c!pTS&B2 zk%2J4pu{LJI%q(=fWChtP!TN@#vw6~F5!W9*R=nA0EhyA86~$m*$oof%m-eyS&t+%==95|Q)&4Llryk=Jy~qx2EW8Eh1Gj zcRDJ5+|XIrisF!^soOt;LLn)egRwXQ({M=|8N{eUAX*|2oIAI zA@6vrQl=a2sNx0s0+?A9YOOVnsFof3Q-llX?I<*bRH3xj&`HzJvx;VtCy6M5uoWy} z()3P3jzsX+5e=Ty@6s1_^`^hwQL=$3CGtk-QzH3_xouY4>UAoUyYKx%@1K4jg*DxJ@?IQ<1=0kYa z^(&KtkbKdng0frJBXdP+&_pfV3Q#aEV03sX52FZsDdfjFzJ^ZnF$o7}Xy=@F>^Dwy zUM-B!n_Sa9H8Nji-k67m7k+9$qoSKQk*TC1L#gU_EaPVEL}P`aoHsa+0lm)(MJ1Zc zrWz2U+}yOWEIGORX`##H2{;(iINf5|IFhL57!1>liZvNyCc3pHep5Ax7nlM2^G;&t zL88GfR!0Fa+sgy!F#ahylgk0qK-XHebM}IUcby8pe)m=oGBNHqJ>nE>n22HEd)Xjp zy?J^Uy&F*RqtlQ4VkbGJl=D%f?|%xOgoiGnId zd{;Q653r%w);iuFrd`&44Zg|ngsUwzt#j>5!lK!#Q5>{*mJwq1(UiK&fHa`#`ixid z>Qtldh0>%btQ^k!vTXARO5gljiLE?w?C+*A+SG*HQq<^_@bs!o?Z}-n!R6nD(Y6n9 zT(0p5HM&EqJ-2-HbYM+CITeUER?EHJ#qgO6y>Nq&1SI?oQ%VJ2->hh zQ^DQKzR4hn1-WfTLOep(5fON3ym-)yp`X`nw15XPH;tON{xAqAQnIv#vNff7Ja#ko z1Uuc^j1-AN9@mQ=ONN{ZyeHKLS8IwE))^&T%Ci06P15;85 zZ|T3+7d0*GElt_#VaO@i5RsBD5mH)1M}^kDiiNR-fsTRfd07;Wjb=SPQWCMRpttau zUmcK!++2#aeT2rg4V*N@ua9019cn(uw<5!$OIVsj{3?e#RT%8{-HqqX&~Ee9Cm{=x zWg0_x!Ig2&^z%5UlndQsF4?i09*9($zHEyC+8P*#deA{wVm-Pa-S437nBEz3+~9DG z#kfm{8rDlCX-Qy2fcGRIWh*n;)!S(*g>I0yo;{8|;PLo#@{G?ILyNbxq)P7H?0$<* zojxS<5e^tce+LZv6N;zp3@8w26iR~#K?=&?cm%flw)B;fuMarEI=^GF;IQ<|*PVz$ zmu@+Vke)klcN7&ceMuTMR~DDL9_<2w6n+AwGDK6eI&j{=G&9~@OOor(t#LW7z{7*k zZAAJe2#lLt^HP*^r%C3PE*-q$OZr<+gS%bvl6irEV4NT!6sfZzwSg9SpazBX1#5Y8 zguZc`0nQK63S+2}3!Z#Qg3n0U0C!x8^#s(xIHgbk4`_4{&;ovJH=77orU2$?b;J=e zp^~ppDBKHKMr}-5$ixi)280A4JXvGGw^0C1Q}3tOqlEg%J|cP!vftS9u+ksO{2lEb zd?=`$k&xY0yoVL3+HT&?RM!PspeOxNJm2kdLCdGZ@szd;9b?R1{_~jR8AB6{TF7w5#sjy+1!po~9xY4@VHi=k}=6c2>1=eBGEBw{AzW zEjWqYCVcu&0MayjLDT(T00`a1v*&f2xAnmmI$y#3bv}Lv5MlrzVi~9edhuL>tQTGK zr<9LqOC>>SluvDu_`$TDa!1~HKv7IS0>T4j?gJiJELWfa4uCsXGSVoiSidJ3kF4kc zm)vIDA_LNlQQzw?`e*!8yfV{y@^u}>2%`6jNignG%*oj^=g=P13?x` z6r#Ti7=O^89${(Cv-mUIumypP@1(PIqhiJccil6T!@OG;D9rS127f$Z{DdB3n|uHp z!3_%+Ax@cpyn+R(OeB$Oi1>}ZXJoLAWff6X;ew-Hvf&w@3Xo#d-D{Wz(BFuq7BT?J zr`ZzcAl()ys=^(rK%la-FbUVf?+g8TZs$7janQGjdj%~~j8$@5U8$Vjc=K;OgN zq{v(KY;@4IV%N)_({0G%^fDsV#IX~_Wr!yvjUl=jcDX=8DrEtVzOv|5tn90tmonlv zzN~&xJTSBRvCiCRilS$Ho{6AHLcxQt+bjLws6GnSRA#a9${+Q;b0g_7~Ww zjT=nqmAU-o%BQqUBQT=%ZQq1(p+|p+s1qkP5KPvGCWnC13Vs+#S6awm*$9+(&`toFO zdz|*myi(VR#n?8rh_D-}=Kw^p==_`-6q^XP@f47p)Ry>3Y%GwJ7hDF~ZO`IOW`1ol z@7LBjIC%9C#9bE#n8Wq1G6)@pvG&qh8W)0gW$1wiE)YM6p#2R8G){IqbHdl0=uu{MA1-{#qSY|572MMhJ z1l;7G`#~G4^lwUH+Nv&h08{iiZ~-KZ^bgJw?_LdYnd{WrG=mtXCactax*~wNO#K? z9J?$RRCUe+g}_ReSOS8ht*sJQkZTFmd?L`#Rb&{Pv!)2Tta$=4fG)?V+vNySxL58K zbPzxhEB8ypp7FYtHCft}v!Pb$amMR(e@ z9DYuXynAEiT6R%nidPhUs1iR`A^nLkdmr@lrIZ zE6aiiAcD!o%!Fam4%*Z2&F4iDU0(C89b)cbbVV0bcG~ zoe_E`!V>b!FWCQrV*fv^63K;>jmqjQMAr_8Idd}#zdH3U2_yPWHAsr=USLk04O@^* zNtd`W=mJ5v#q7eQ4cKE1fVV4yKp^}*Up429rfvkNDYQxUk={)rwn2EiR}aMcPXSg0 zIXki4UZbvFeXxy}J_8)CQ-CR4E;qbEmck`Td7?xEQjY7%!+HRk;^|C6lj#mv`1h`f zg!Sf~nNc}B5HL?lmNxgOGxeg1iP&4WfV2xsYh2*pvLwkt`tt>Mjl|Af`H}UVK%} zbs`UC^Tn(S3VEDQu1{r~Vb=8&TCgh|=X^^uxRWro%4~wnsJ*URL$Mq62Px`Hsgv}e&euf%3ia2p%brffjFJl@t_zkn3Q zT-g9}x2X2dxhrM>f!dqHLN>UQnzDq&q;P@PL-|M>$n^0~a%}S+IL|T%$FIk|Xg3mx zWe10?DIF!-&5aE*@73c#UJsOHwiYfMD_?sbHPe zT94h!6-(pQI#>GD?wDX*=@9`1mp(c7hSQW7F5z8na{5GwJUTNTg9P-l9`gHiPK!o8 zgNzg0e`%bk|L>#XkLu?SiQSnJ`aLS9k-kPZZ14#l z9U{RXNJe-f-vp4Sj&=Gw&VAQB6eY-u)^E=2lgs~^eez!_gT6;J+|Sd86^COwk)5F( zINKWD){Uv7SiXl@c{PUbC2laY{o!j!#AjY zhw<+FHYtD~uNnUlKe!CmNgzEGn{G}9xP|2tu`S>hod{E7$Qt&&o+Ses5&TN?jcz&> zC#VsJ_{hzRz|HnA^hf8aS9I#_gp&*IPBH0AkW3@N?L`%%p#i`&PcgI0=REJ$`0OF6 zHwLNHd^hA`LI&FeQr?T4FYP{drl3{8WeL|;@8ivyqd}-JCU;uHEeVW&87kyL>C~mS z!fH(je55uIKcR&A%%K5UYZD7sU!8Mav4cl^Z@RaxvT6#Mi`PN2*dG5^Aue#(=+Z+M)OE^sBqCGafus6VD?yeZ=%MYe6mHJhPLW)KxSMA zO650CP(e;61&XzYLE4xa5coE%VH~DZ7y|i%0@im^&x%ih_oQUr=~>J&EoTauq?b?gij*g;+D& zRmPQrx@b#~W|g<_p!8h2l3k>+%?kta?A>PJO<+683RzC+Ja}h_ii&^B)kzvP2#eO~ zL2QkUWf?;HoxTWq>ezwRxSO|g4{pNc*I@oj4G``~gHGQ(z`?Z|+Eh}}fqqA5fTj$n z{#^RMn?X<^^_mCDQlZJK7%4^vjll2Tw|+y8K#Tr1({3L?ixaNk*DcsEM*3J(t_afD zZ~Tbz7 zhX_gOv*yImLS$Ssux0Vj3rIpWYV=Rif$O|I3x<2(JsdqCoS`{n4xZTqy%;SNs+ooN z?dMowxhjvTF5#5O}qin=!dfGq2qx+yJvzbp&_4106dxBl@ z*HWmba!Fy%<~yL=CwTEWuJ2WFR~Gh}I>@UYc>}eY>M0!=ng?R#pPmqNgnE?8T6_-<(KEJ5sa-J^9-pV(iowi{v?-oQ#2xO|+G`$h3G_k|deZJROKs){L z-9V>{o(eD{>{;Pxs29*@NjY3>AS9j~L}mgZq*c068yoS>yL#;Tom~c!^oZ{^XfSs0VGwb%%c20l80-?i002WeOOYA^jPq|*bRoca zR>bWA^`7eT&U#N!Yp;A3Zq}b+tDNH)L~QeTQoruBG1Ma{{N!ivGB4{i0zf*3&vOB5 z90!xy}(>`eF&r$d| zc@>-kg?NW=Q86AO?L?&&GX^98pF!r@pBvQup-RZ?56>zuiLv>eXr($({iAH=zk$|n z8~KNla#W4e?({S|ZcqkoP?+sN!3JA?bKSRN_UKU$K$BgZRsQH7YR~++&Rq!VwwzVP z;hY|p!Xg;1{WLt_&1&qLN?Zx9 zO$Q=0>-3w!eK5yS>5`IYBWhqNc1O}{gNi^#H3%P!Ec7Tc7B)eCRecIFd}aaV$IJp` z(gs5&?b(*EMC`^(Ur*B=e5h(7a|<*@zw=4@wo(=#UIjj>eLyVz4`f~$#!P>Yj)VZv z(IJsE+IL*--hgUkbOUi306)L=>5`?I-P)w1K?6!N;qG?-IHPUA>;@-#f-~;xkE_U_ z6FOoUK#D8;w;s$t7?Z9z$Ese&)hmu7#1q^l={?lz zQ8foir?GBoYG{)qY_i$Tfs^`mBA^ZohJYq%F3cyLTRsqUp7>?b)Pdf3nK>{A?>lF} zi@ZPe*Tv4v);#c}4FQfkwVg-I^PDgL9KbHPIu;hHnrV>lertrKxZ#nhONrH>-=|xk zej$BAUwEhswPC-DBPfA;?%p2la~v!I-Z$aqUtL@Hyp32vu)XDlQY8*w5D}}=C2w9h z;)96T{1AQ)46(?Xv8xILmsxVEMilB-4r%XY219*!3YfgmEtB#nxLqB$@L%m`joWr*Q{+L*P+^$4nF z2@8HM+szWxaXUJ4Ex;7p`xcSeh${J3i6aEggSZ#%C=ozoB$$dD28I|~V+o-yDuyZz zd@SkLi57)180agy>mC9{3;;u%<`pnE1t|V1t5M0LzM9K$0-sQ)tiMlzpTEYvM-Lb4 zIaZ_%Dpc*N+uy)jz|CbLKQr*o43wX(hXqx!^HA$rs+|FHApbjaEs_g+6eJIr53dt# z#r%Z=1wkA1W_Ipf(BJoXz5417uvc{f#wGhFW5ey5Vs?VTdV8pD`G*mwe^Z#R3D%l~ z?%n?QB&G`L>Qr6O>4CXkdH3Y7%?bJ4(15}>dEQv$5 z-&}Ly{6Ai$lmc;y4Ei5j^4B4ks-z&VyVLaMkW&f~N~&WlJ($F}VQNGz0h8`eO}j=7 zDwi9m*ID6e9hlKTXXAdvhgr%r!TS+lb|hu1M(DjOHm5cirg;4V%vpI+guvY~4-lAn zpSvf4RV1^NaUTbmFPZVnn@kksQEdw5F7v=4o4>1tL{BYTjLmbqJRlZSJwHteL+k4h zbj1BnCtiAd5W*~8q&kK{PVK*#cuBEw!5JxjRBaG_f+B5#1>>grUM8Zkp`vAM--9|g z3O&bGV6_%HmyZ;Q$`E93%8KW)0p0BTt8RuY-uq>vp-6!8rRrIrQ2yCHfrj-4;w}~P zc>iZs-cIb~Hg{70D`Khp&&cX!L2D_G={HY(k~6dIt4vGCblJAxxgsI2R$sZeKOk@X zd#7X|Hjbis$+<`=EfAwDV=!#jm+nX!saXDN=zvccu20BiLeP=V*n&C8sF0Thwbmdy z37a*Ix$wPH;Ys^AJo3FC*y9%B!W!VVobjNhw=g;wF#BQjs(VAs``2c<6XBn%5BcX{ zAc!?PQ570bcw_gzBg4U_CgHKq4SZQ=oxnVD#9b(Gfi|<46ed z2&7N@Aw%!dri>gkBG>Gv-~r&1k=@w>bg#RHNgutMxUT8#fdh|f0%A~z3rGhdgn{XX zl;=R0+H%O{c7mmgjT>Lx+(lrETOkT~mKUvVCRJ59lC525yTx76u4XkfxN zWv+yR6-zr5Mu8Py;an1i#$EK$_n$pYb8Z02v??r*fwB*k6;`)|!-)hFnOCss+GRqU zN&wR?`+IZgW5l`Dp4hJbp1QUm5B~*zXqZdg0*xF+?s8(VT)WCU5kM+2DsFcqgPl%% zn=0n5^0{PRktj!+B$$#%A8zcTQC#IR}2@*(^|!g4#WR zrwt#PZn$78=?4-d{+qWt@zIP6?oPv3J%`pl*f?^s_g)_d9V@NN&Cg~AVAOMD(J=?| zeS@LlkH5}N{@wSD9n64Y1G!07>JPUdeVbHCR&l;2ig|~VFa*1wJy6l+h@xzCk2S6$ znQ*81%vDQp4901D?^&?Jd!KMn&Mk_;ZPx!ha8;CSzVFWN@?SERj>v`7DvyOPp2SUK6&NpknBBxLp7_z7eTmC;7?5Hc3&RXcfVmmtjpt z2T`V=zmqhDUAUxn36lK|t0GOk86prJdgG&AMhS)4;1;I8g{BZ<&2+}XP~n3XGcqv#YRA@h>bK3TB$S?huZ2-w5%6vh}=TU&g*t$kafTPmC zqM|ANYh4H`@bl!v-St(zpr_~T%NBsPr=k4NdngFUp7P9^e_1I5)jF3Oqpkrl7ikzl zDG9sX5LsN49Up$#tjEWa{6<#kUifzn$2q{TF zLp9fsa6R7MmpI`aqLMt2^?jel1`XU{khbUca`s`5{Wdv<_`+%tb#|?J}%%xbkQIWwQ2ci1H?wWaq*g zkSm^+fs78u)S|Ch8fc&n{Z&k#z(&WDa6(=?d92+k;*>f!N%SV6NT4A} zg*1o(%@@dtrQ87vWkh|cF@FYibU=A|US15w1$oFfgI0dCM)NbhwK_C!4K+Rqge3fN ziSa3VKc@L1gyms=)KCPC?2(}lH)|nYVOyog1H59PR3cD|KeW+oa3&iLOOg~AIr)~&YTSyDq;9yD~0OEVG#Eq=u9z6xCHU8(K_ z;l-%WCJjgtiJ&b39V}kJ-y4Ml8kEt2=Okz-e&IOQ0S(0?o*rya)hgdBcL7TmK&Lcu z!d*py&&zqNz4A_FqB_g`ewd`uR)vlqo+5nwR2p)#ny9k5Qz4{!lO-GYx)U+BD(wo` zw}>l;vx@xi8S2sT_SQGKLSQ60P3f~^d=L(D{kvg-7|@8aY4**X0d|MQY5ti+rLTm1 zXvSIAAIok6Ub~jO@lFk*U6Sl<$&U*J^a)MWVBNY8caeaFuu5F$36P}wLl=Bj52IAN z0h%0N{LAF{-^zb5pxphrOI7Cz=)czR{*)lUL6Sid+LIS~H*6ywnY$2QjctndOWOYy z1psioG9wT^-xa?l3Mw~%f7cX2Y2T(`?*r(ypGl~{9`VGAD|+e2O@in>w%b0SynSgK98zrp*nh4X8$pOhjVdXE&bP4QZfhD4BVfSVY<*U*2clyty}|pXhunf~!oU}t zgXRNT9!AJOxtaa~jwwH7h`zioDEIRiIGx84_&VvW)o{7tqg9Uy@N&LCAv|$A~Mu2v9WW-d`4F@A=d5ui*akvIAPWNJj1au+6;s`S*xE)WM`&L!p}3goqL^nf?oUh9Bv z@Qiaquw-ipy^;*p`O3v*IEjg%cAzHz|K^p<~&ph zI5a5(w*LcIvlb!NG0cIleDA!dq0?p^ z2J*jrZ7)eTDQuPmOA2^wG{V$0;IvXLg|5NTWS)BqN>fi90RVx5WI7P@2%r|IfJ+_V zHj=gc$IAV7eBg(0UkPpQO_nwQ%?qGWChUFqHrKw2^5pD-kCDNCp7^_559!u22?6 z8CbmrAul80g9OeE3UR3PeZlm92$Yor*SAoV{A@rE8dU$Or~7NM4vkyuc#B!yX*&l7 z+WlX%R&EC4M5Un7Jz#ohpm+tka}d=q8_OqDHR+!!4j?7eA|M=Mo=7{{Cjj)CF5IjU zx_04Qt_Wy?vYY+9K^ zZxql#3Gzo0{bBW`oZWZe7E1X5-Hpn+v^N8~#yjItA2z7GTh38fYxHP-1{g9ZiRN;o zlL-Y1uY3rw=UFQ=o__S=I-k05?f*7#vk|0{7;+05xH-Eh=cS?fXRxjZ+Y|LwKAQsQ zH)XzoIS|xZ9jp=?2xHGdQ13~8)Va2v1uh;=_fcMbW$MzDWQCX>OY#zG8i_7Eg)FxR zZR|Wyf$%5c3Iz9)8;w5;u>Xsea`&bgm@xM69P8c(G7vOkzso>KZ^nI9c?+(0{fT4* zYj!)~Ix6(WilY^vv-VG3Wy>D{b}t7fFUrX<&-ajO0Np3T_HIl2jNE@mj!l6)|ARO= zPKR!%?EG>&1>Pf|S~mY)2gaH>R#IIAEFm$ntPP;If16qHHP9F0y+Y4Gt>B&>hK)6P z6bN*Q3#}Tod@z99@u_D8NsBjmYKC+yzQruJGzTip9O!?rPB;|gthGMW-&qGhN$4!x zc89LDbydiQgPVBKA2{%6LTR6L-Ms`Em6yFQL7bE1U~^`SJpLcI%c1thZ?FWesMd)w zkBouIzrQ_}0SqPdx64&iDb0-U#Em1Np?=16puZvfujik_e^e04rXX_1oGeu1DJ#iE zE(-(+j;jZ+HbwVvtphkeP@B)q&5|Q(5=>rvQYL6w)8|l52*y8CYGjGOtWj&deR4o= z`Bm9rHQEP*lAu)=4!qEQL*8mS z`7S9gpWhn6=W!?geJxS3@*PxSR99;K**i6op7{pLinIE@&H}rQ5$-Er<&Y(CMde!` z>i`vv-3UgR z(s9Syp?P#v*Y|i?&CL3h4RC$;Sf_!&PJi!d?;`V(?9D3%7|{ieF>(^8him#@Rp9#2 z1!?IaoLJrdayRa`BVOR3qYFvss6YBGq=Y)%g5<8#182}Q17;!af59vaoJ6c5>ir7a z$i*mrDK$zg-)4+JfF4~G4qex5e*g5GASvZHlxeSz3-<m57#fvr7iD7&MEmvX~9ru+XF?g;>&s?GZP?Em=n-Lkt z<@J2Ge~heSAvN|*y782ne)b(kYxYma3C`-J?InWd&pJ2r{fo*k5}9UZ#Cy2GIIj~U)+H8*DiLcy6%mcWU)Ygv_1XGs;m#VCZ2sM|BnqF)Cx z7pFTxEpjyo^d<~rPS}7l{?m<Rd6j2S%5N z`WikRuq19PA6tXD&UJ$;3!UTb9dEKlYWgr=GVTO?#hy{+($J=Dp>m=PBs@ARJs&)~ zF0&6V1NgqRo3s+iNYI>pb*aNJ2=x0quOv*^ut?Z{C`}?w^eh^pPO+I9C;g_;LWR7g zPWH^_%6uiv>|_y{i7?4x4^=~$otboja;XCmZw30B@w z-u<-2Ex6NX!`pf;-pMUmlb1h*Q5~@E!DS;txKx+8ra)dg0vrk-flpeEWTc# znTS;?xf1!^&AtM&;$b!~tia`h6jO^Y<5Ue#*YlZ}{bKo^x@0rZx_`aEUP~QJ+#D#? z?jWaW`FP+Tl z#zuIwKGQmzQd`N3&agc~WbjX-{C+;zI`H zOO+5wI2ZF3&8ZMx4lYA?*RuaS>H-6Rmi>o-BV-&T(0q_uHk*<6CGf#210Zt>c`Env{wv~ zor;D}zlSDra90lI@SkpJ>j$UUkKE|<4n=v&T(;piP0sH<5TdXB);@XMK)*I_G5tsybM!{!NzcPs;W+!W{o>xLtG-B;>b#mU%ZS7;8pCq$ zOi8S}RV}sv@>#e&|8~=#uBI(MBwL}oaJD0ss!@)(MryN-WM$Jc>~-?H0crXPxvw&> zKnciuPGfK{RO7V`l8sgi|CTCvv$#=%pFebz<8Nb2Hb@!qY(E%9m-gm~GAZxlar4j_ zy}VMSfvXdejeX6Jl<%b`A^F}dQy4-6y^ldpbTcB$tIt?_B*lKY*G76D_e89-Vbj)H zwNI8TSaI>NYMzdH;Q6u|Jv@)$-yyK*ud6sZPi&k=YgYG)-lV39U+4N`!8>2~3ZJ0A zKThz!@an0oREz4&HT{X%*qXSg5O#Lvc$T3qfxD{_ey9dJMXf_sK%2iFTz=u+d|x(A zV8-z?o_%`-#$33IjBXa5lpChgx6mt!yZQR5gUl!(I$%%Hn3nC4z9A(uPD{M&W$lbpq#Yd z`2K}e@!_oMZMl0^wdpSxFzU6C+pa5Rs`H_(_1blH;>(s8GJb;JRC@h!6Uf#W+aIm2|5AuZYU;e0(LK{7OA+OTm-hP<*s$$i(7gOVSbBM8- zYDP948k)O&wSF>Ml$sFpEs6r|Krh0s6)mjeeNg^Lomh0@tD>3g8 z3K)t;_Z-N|mY6@X$_^qAuF(-~(OrXl-*@HuL!0@SO4UOt1q+sgZyU2tchrlsPKIdA zl+rdGe%TUegWA?=o)W3wJ^n^nmF%<}u5ph$*L^E(AB$z5B2TcZkYT?s_h)r{U+BL{&SLPh%-p4jXq$kyv^#-kz^5Q3D0j^~W0{d!brs z(_y7S9Z*|!`6W01w|w;k!M>E>jAW-zQ!R6G_m7WK))WQyOw0%60yh7$y+1bl>CN@V z4yQ-kV%0}siv)=WYO)b)q)Rj|bCM=5p+a+5^rmR_Tc*j4(csNxrtSw1&Cb#3DwGPx zYd#bNR-Rs&_rrk$mnRIlItvQsPI1ol-C5NRU1FJ!Mzv7U3_AmN6qi^$rhU>BAqNk=0G-UNlRlx#~C4tTrwqQk@Y@{MEM zaOC%CdXrc(J;GFijQkrBz#1qB&&6zazq}-IJSNRRk(F>TgcBeeg49P%_iI#nit$-I zd!$x*FqK#?Y0Xls{cvn-#RFqENpw*T^A#p|61lf(dD#J?|5wX2Z<1Vz^#-&SdA5U4 z%r{-rh(29@U7pR?Wl^{swwv=?Gc`~55ASL2r_Du6J(K!NK7G$Fk7{K5;}(SNIvA*@o|j@vXNZ_P(VLO<8)SPMM}nXwL?rEF<0m+UHyjm!z6F!WBzx6)B4<}r6c zdN;AZEu}JSq3`X==Z&5sl8j95DW>*SUdbs|$vY}IJGYP|#$f0DV(gmx^TpUIX2I?$ z+zy4U3%~BVRsiyt(-`T!F{?2aRdctV+Y9Q)`(K7JzY=YqE^CYs<%Br8e4Rq2N6fB9 z7p7RHkS@bFGxJ{ZTD5HDNM0x-te#3qUJjTu(L0Y?T57sm;;8L}49QrMcLyOmvl43t z<%6zW-DioQ5?Q`q+$?n*|j<=Q6|aXl;YeGmy0Mv zu}C4Z7^Prutz%0R7g2`QU9>JdbKQRn^O*_f79B_a?KEPWn#@g(c<^HdwJ)OXP%dSZ zk767p3OQsf240O*Qzdr%8?2oj1E%%(u(e#a+w@~i-?8n9hJe*rwADL`Wq726;}1r* zU#BAn`k_fDRos6vPEMJ9ZAl4buv)|ZBp3ugR|<;mxHz0>(&E6V3+wm7;4&93+a|u_48`0#AZ``aJ)&5uS;zwVhmiJiur;6UDb zI;KX&#W}q*vX_)(Bb?XIR#cmHI&WqpV_bTA>lk^=b!f3r$<*!BI&BXl_OHhYBa51@ zG0KR0An?tTo28SuOoebY{%H@=8;usl{_%McZcm+;BMoRb97j^ChrBJZ@mI{uIM&9c z!lRe+onBDpy1TA;uiA%~#z-Xo4i*p%&{p01mU=0#u@&aOK2SX^_h62l*-SsEpm7yJ5ePIn%Njo7K@xPMrN;8C6#sYWF-6eJ^gJEh@j;- z2eD_xj*Pcl{nj2*p5$zBgC`I< zeL9)NOvbzZH;OvLP-QeT+wQED$mvH*JC@u!Tleg(X*8!~vGZkPxf7q`^9x|wg;czD zNR8yL8nn1QiRs2cN`g77V~DgHlvC_>NYEYN@H^v>dy%g90*^tl}#^ zr);AMB%{-;CFWeAhSobB@g#wv0>f)^l(X4KjlVj0>&$2L)w4^aQ4GK{tJ@*I`$Bv7Amx&?KA@8lk)SrL$ z$0j0DqRH_X?P}ndTck3cj?mQWN|2r_NlYn8v59#;(jbYvDD!+I@lyOt((1YlSy<+8 z7ZSN#vl_3pTUF|;&KizKcP=xVFauTY{UeKEt>K2owl&{=Iqk^-uM&IBJ%YK5Grxxi zd)P?C6zQhOIv$<36Q6hRWN=qz$R|=t;3fAvn(e5A{)4&2w2Fx9wDh4q$<%Lu$tyIp zZ`WV9s*%-`r}biC>yH>ur6Ag-=^ba(gX;mi%pSQT3cF4*R~3It`FYA{!)vE;B;e{r zB7HS#W8=x~`0K+m2G8Az&>X|09O(OA%l)2N! zfpaqXoFzx&5GQx6&fGOC_l?}m+HrenbHWvQjg1x+u`fz;JZWV+MY#{vXNIjON>tVp zPiL<8(wr=%WQMqGrNmx3-HUnEH>#;TvbbY!rmg9;8GFxtCql^Z^VoKdy~^5Y4O;9b zdq;(+ZFlUjt`ZT$FYnjF(KgAoAi87IaxyMRm-Q)d|2Qt?kL*1-LX~t{^uUApBu=N0 z9#2p@+iZ{SR#r#X=(rt8W<7K37IO;UpJrfrL$TwxHd@!=K9ZFgE-&b4U0D~-#WLl* zu$ic?zMZL}_ep;P$8BA#w@+}qR-jTzUZCjUdG*1P>=EVIUV8gJ<#Dr87Q^WmrI@8h zJ*3p`Wuv$Qv~|+IoT{1}nG|<|FL$EvT~}{%@S&NlPaBTcj#3l3c*-?YA9JaFR{u8AOY`>aQ{Uz2K(P1v{Zczd#FB%eEa zJi2?oxMW{;DfZAj*UZ9ushgQd!{PCEwfmfO?;XvPmV-^M95sPVH?%rgvu|{jM+W?x z4|_8NT^|!vcayIv#6Ox7+_9|g?-4jOPyE^{>AB=SvCTE{Xn68Ymic}kp?lD)s zedVD*uWi-%;Jt&2aQEZlV(ty)%^6L*)pqU$n|QLX zdEX$xQo?r4c_igP_?U-+#c`mOdkXv{_mj`N@kgzXM(-YfH5Yp8)Zsj)GIC;9{I+Uo zVoXDQ;=D?~%B5d%3!qL-b_#js_fJ$X72k2#oVrr}wm^Mj1wj~7w7_$R1dkYh^(AF( zP4~&cLT`xR0fT+h*v4o3d+ys?2Fe*diOAn3=LE{jv@6*{DHq}|jeT1Qd82Vy#yzcI z?J|m~sTS{cVAQL0I^WzIWN!1Ry?@Gm+dsAgwtqZ!5(IL&v{C=ba&u9x>q>lAU)2s} zOi)O*V?#lv&`GuXV4y(B30{Px+Zc}W=?UfOfSUWb7^QLWD>W;l_S1EWQ%sGcF8w0| zip}}OS{xT)>jXi*83wmSgV@cZ#_p5Z%l8h-PPTJ~p14#TldttRGY#xHbnlzzP<+cC zQ*_-a$ihjJ9W-~^6uMXa(A;ZyC(BG-V8Q+LwAY^@A?i^B+b_Bza#6TUrA;$EP>wqp zx(V#shq7RqxbeljlsgQ{&LIOqyy7a=jM(*2Yz++1Wg?Md@j+g4I~qH6HRzs-E9l7i z%(q6;Ym^Z`7^<#37BzN&Z9ke^u_>@xFu);|XlXffRsAim&N1^-`M$N~y%=)`t!;mK z7pn|<&7(yEcbdc)3VFe_Q;}>I*Zr$pu@o!%_T_!9+(%4qI}Z&wN%?u^*n~Fw7de+Y zuy`hXbnYD}M()sd)s_Knx!h!Y5%I` zJ=bI8LrMj{bd{c8YT=qLa*GO#TV3zTrF3oAsPEWfUPx`{7A%V;-FGt3p;^->mPuM_ z-ZMc6cRND!Y23XT^V0pmAgklE)RsZKqyF~dtI9m53G0N1$5SR6`I{z|W9p}j(oWz5 zfpOgCKeam^D2DV^FQ)Zg)i|nHwB6pw7dnojPdIVt6r=pWW1d(s5j3ZQbNa#jt;WvB zx%(`xC)R^vUHjGvhr4|Hny$}=*3>edZeVR2e5$W-|nxLY+hk~P;S^x<38 zc5aj`56inojm>XF_sox;soXC;6`^AeaP8zl+OBw+6uViU{Ib<<+eDu;ST!#OL zu=y#N#=lJ>lp)Hpc|VKhz*oiBOw=1b4bHLc@LfLv_4uHJFaZsXW`$;SfVuLakV}U+C4qEQu&Dbn6a(8 z@|Zl<;c!~RzWUMjnEM{uQ1a_dhU1fPZpU1gZIeu*%4xmWrK~t-Gu!*eIYFy5mEluH z?kDc{AFGGDN|)lR%SMMwo!Apx_CAfBjx0)WSL#{E&#p%nSDDU9+S&O?Xrxk_Hm~{e zETm5L${*K-a93ZZZ%!M#w7DsCsMP!EbSZ^oyYVpjXIhMRZG~AK8j{&wsxBjo8mO9x@w|& zQ(&!}=QLr>#bMhufE+LWT8-2>MMTg zP%fo!Qwh)9DpNJvP}fI)|n(kRlB!_X;UA>A$A zgER~tguhji=VL*1GR?KWu9z?jtXFXu79a zW=W{Ih)`fm6Rt*Xm;XtY5F$YhRrJ6o4=%a|7%B%kumb`9ONB?pQwJYN1$oA?vl{?| zbcQegba|dL*)B-e!PmBG!jBpsA%uFh=PZGscX|BjkO7t+&xH{j&AP~BUOKKV`Ueq{VgdFxqtp}qv{ zAi~4FMUX11Yb6icqatYL%+q{iih?+K&dlue!a$dXT)bZBQd38pU(3roMLF7?w(KMEC49UIQIeuA6V7cjMRf@U+c&2HnAa^Bmt-G6#5(KAWbyW!bv%9 z=Q`~h+crBxtWW%0&)N8$#pt_Lp#^31Ul0P}v#sxZwSQlaJ_*vTHiIC@HW2K8}&j*fdf^GPg_FVT@ z7+kM#2b5rAjs2_=0t6fbE@t8H1JC>CP@q<%wfU9a7!%3^#g}33chIF_Bpq=2lckSy zENSlW{@~g5Y0U11&xPt`sh#;@Rg%PknovuPPe%oy658Y6T6Y#Se8HB@5FD0%(M#cX z{c%;p`Kk~p5wKlfdd$vg2QdeKYI@&2B)$C$`4zq4{~Cy}i8aAUoBxPuIhsT1T=oQB z*?=x%q5^8L)91hj=%B$u`N95y)@iMVS^7VBo2N{@^-*#ARm$g*DlU4nIM0(o`G|;U z*>U_tDti7($Y0o&L6u`sp@a2Eo()&eLi}NN=E>!g=!MHcZvCj!%rR$t6+$7uKDD$8 zr-RF@0sj)2x&ZWc)@2`yem(3mqjW&9sm#aV(vn%CajhK6IYt9<@j)|DoF{SxWMB&} zGd-Ks&^xVx0ier$)YY}m+1C11#nmxy%PAG!MAJODw4xaJ``8)hXp#+8$R0?P9*+g2 zyL6C@Ey!I~OtXz1*~sp~OO0od9)nz?#K4Osq<(#qj@I=rQFu|nCNZpnHtK&8g#Y!2 z(dysPm;uVn<?RWB^=U>=$iE#_;*g1x zt-s_A-1i+5lH044S=qt|WSxI&o&QoRkl+Giq6 zz{xYs*r4Jw{3>Yvx$ytTIg+F&mz;kut%})03pno$Hh6|bW*l%vEnNEPY|+GaN>kiL zzI(Jtg=3*I+15$2822ZcX`7qq`yUPhr*C7k3Rq;k|F~v=i~fCn9(WEOhvce4L~8gYv_@*{rX+yMr8 z`2h>#^6rhgsJiRvoD8Z1r=nVS;R$#YCNq;6RX*{m14nUTL&@Cza}ao8}PXpSXNKQyXpVvH$TGL`;pC*aqal6E3vgbW}RqK;TBX_&E=JF z^)JcPf2@c<)8sRG!@RUKP9xDW8=*nI>d|sALgko|vuf3e;~+6b>V>Lo>14M5)DV;Y zYu@!6SiTwjd*(mxAhgTR8HOIw3Pc{Dy z?(?U7w_1}e^&eixpAKVuLyQ=-hAsV4%H2xteM4D~%ZGqx-P+%FK61JEe|Q{!pfU388%_D~ML#}ooANqI$qUflu|3Gf34f0kf%?=o9{k}n%DDaE zMtdBQJM;o`LVI<<+%{TiS0huqT1!o(~kI4H4qcJUF!P#c`naC z)&%a0+7Q9+LX$9-9Wz>tefazEStowiCdZZe6q8{cVbYqHZBfwVTDGUg>d zuurAgV0X)@)<*Z4)y?|pl`NAVO3ocWLaTs=lc$qHb)o`~{R=&g|0Tf3bj_*({#Eo( z&jZ)X50=_0aZ(y?8Zeqf(p1PhoUk0V_K0jx*Pq63?iAS>-Ei{tlYXoF*G@>5w(#ir zR^b-P3{_q{? zFb4<;zhrQYt=HXFm(e~3MiqUkN?)$0ynmY%7F@*B_3>NH{$!LVTy1OKsD^VYBjos&?U`I1M2ApKMNkcfx4~f63<* z!8NIz=ouJgxVm2aZE**M<8Ni&TS$V|4CLShNLW3qE zac(Xnixf1+K)rHe9{g>6-zEPxsbe_o&x2zr9*Uabs;NHHDfh01`bwoS5(O%{gcPiBIXxe{((e^f-?{iL+Qi93Dr zuEu-v2KTMW&Y^>su@H9*)SNQruV!Q*1pn+xi0SBTvH5E(5sf+#4&oNJGk)~+u|EDO z6H6EJoXQom_TGgf;8%mQwQoTQJ~E$=y{v`U%8ifS{cQ`W|T-!G#xsQ>djhNY$xna+`(mghBY z0mv+PlX#Hw3%s#)W$Ze5U6f94y7% zQ>6*DrufaiR^`R~%x5mZG2#hmeXtUuKW?`H22ESe0a7Z<7slWBG(n|=dS<416MI1E zYiqMlY-H-?=GX1Eb8)X9|J8HiWsLjZ8orStx{+@=-d~wM0~^{nOZKgE0GR>`X8q;? z1zr&6tc};>JL7q?$GzUArMp>;f=biq-O5<6@m_Fo!Da8AT}yiS^sdQ0C7-$GvN1qG z`mgw-S7m8&6`yKiH3L{-CNo2QM_QF0Q72$&c0?`rlV~l-usI`c2xKkORrQHXpSF?d z3kiK~k_qDU0CAa0J#mT86tjBix0Roy@9e)lQ)<~0sb|oFOeoUP~Ij6 zTr-}Y_5fdHfXD4ZsLgjN&Bn{J+n)<3+i&Mj$llBFFy+%^NU$TT7)pDV+ce!KTelU{ zqhmims}A19>YI5lzSCXzXLqie||4!Xyo;{#>!`bu2KBQ<%;@&)){5N zKD9@q-p1Ab^Ft0jGaF4(GaJAjoonbbQEuI&v%|_hh!FH*_n@q$-|@<18*}c7o~}I~ z5_JaTTs$#2m)$6MoqCO|JfC({G;**8w`80{Z8xF~5s&4nw084mMI+WO#4^tgy-ZCf z>iO$88X>;3*6-2U?@Om_`ssJ4{WprOKMRd*oC%lz3YDcV>C3D^d&2ACl&Qu|&dhN1 z%*tMB?}4B}JxnIE0t9!T3z!G_%Lu`RdJwMW*XaX?`t-9&0_HyLOA}5>;+S_m@vS~( zVpB)yDb)dx0RY(CW~O=7D!{Q&(+X}FXDIPPHpQyT^u(r#E5jzT3hAhyX%JZh29>Q& zj&EhM3+a?yrq?@YxBiM*mZJ5oU%1}UGUmn%_-n(nm4=)*$|ki#uQO5){@EMJYR|KibMyItjPq@lP=M zEhL)YQt1N*G}=HcK^Cr^?QieXJMPw*0i0R1#+eK?ZJya9(=O+PQT14CXV2>b+BY_iG7XDd)`wE#D%2Cd(F8_bP5)iF0l3 z!quIX841X7Rlk+`t``8_eM>Q zC-NdUuP!YPGRl4)-D7Ytfb{*Uw(XleS_;R36=P=`t@+TA2-uISD^$E*%y!lm%o*m} zno&Gl=WbCrd-(w;^Fe24v4SsQ*c#bS|K>~8bcZM~ zZY-2lA9cpkt2+vCcKCjjJ)8YF4}9-!K8SBn4W#duqNF3HYTqRF=boW~9!7)6vcxW$ zU8lW!gS@q-*JuugTZ91EOccLIgxaZM{DQa{|BJxA33hn7xZJy0ap zDawDsve`;}&g@Zz*gWoBfH|C5Jn)lqXY6O9XF$|2R$KFo@#EgB=awSz@AvNb&}dzc zVmh$_o1Mth1M1RkQ&cKi4$(w@JVdcR87kRwnTJoE8o|SatJz{4d0(FwV6J69e67mB zxam;u=RYQ7uF|pkSmC$DH}ay#F^Ug)>(Z652Z^}H7>)53rc(i@tI`WOmH*)mEZ!i` zV{ui%C{94f$5K7JSZ=)W8)%==5|f0DZK{3^Cer?eaW(NFR(k7dh0}e+X$lc}w$78`w(H~gG}G<1(r=gxe*1pd*XHlSNlXx^ee)gMjA0)a_=NyDANg>LbP z-;-F0q1KXR3uq3Tp=SSwQ@HQF({`|e&*E>ls|Hh2@9~>I-XtuON!s3Zsl~D7Wwu;4 z?x9|{94HX$nTcixSpGR{1YrDCQg!8{k(j{hDJAV-b?-j|SU3eSBC0vvJ@#l_32HMt zE8(O$PUKl(bC^+=k1ra$Ylo{aXu~q$@MF(UjgwCEpZWjy=%c+Sm946%)6YtO>42ph z9=IOR?8LVoaTiT#{q=kxln7->OgwNbSBj{qQu-yK02pQUrDc{)G zA8bCMxb5B5t#nNi`8VbnKQW>SAV^CgO(y;0n;ovC@kZm6kh7t)pY7Wp_@sX%3M`)f zQC-Fmd6`j?{d4qL85{hh<();h+C=>R)XBM3laVKz5N}6Nl;5PTihaDY^?_can!l;V z!}*6Jjm;ZK;A6iB@3$i?*fBX@{bNQle@lBh@1b^9$m3R)v_WG7__VO7FuHo|gi zX1dh_?|-B$O$ukzR{m=!|DNePrqbQQ*tb^{r~TwpGw)f3<7cd;%k4Y1J%7hP0RY9D z)w>P)Tniq?~?wrS&MF4@=&<}a~W!rQ-20r(S%I(0PTDlVWi4O!?gKy{9D|nc#iZ~74`ZVAX-$u(QlKx={^Hd~2H~I8Rr}7q?>;74 z%tLS~VMw`*2pMp^zM7GdD=M@x1Iyf(0*4UdSn*i1k!&KOS(T3G^k0(cEyN53k0L!= zn&>WET8dq!tca)JD=rx^J=aKQJ!kLj8R?ORzu@?bM{U7>Ow?z&Ehnc{hjhn#j?V8_ zk6eK{2>hyZaGlCDI$-`^s!w?s0s*%DRiK|exMwC%4~>;*F7_G0A?9;ik@YhcraoKw zV+*n?Qe!gnXAopr^-vk}Ma05O9OPV_cF^iIz3?xif+I!&ny}FGxhCkcl#PUC*5!^( zY3tQYYw0`&Mxko}L(r6-2VPG61{aE3wxVUO3!(59l)is^Eu^*)HbPcmKDVanSrmZk z(<(-s6#~#(NE|z*e5`RJ(^&494YRPC?^!6jfil<4xLyw|hHbT%dWk*={1f!Uga5UC zp3h%jA+hGCVJ(#dYOIc-^QVdu&CTlE>y-Z$O}35S^dVIxuB+Xy4!LmNttozdl#7m} z$ObJxH^&Y5iw?!^WEFNcK<>||Z-G*Qka^{X{SLTpeba7vNz=lv=GX$@s8MFryQAV# zAN^4x(_C)-WdN48q#m}rJ0<~Ky*X&zYsrEMMIwAy zTO3wzz1Sla~{hPr+OH{6jcGgQq@i0JcLT%l$H&A~3Hp00)Yi%B>i} z%MoNVEhz5^J}8jE@&!BU`q-V<$M0EV_cinSw|SM3F^R=`oi!}PygG%f~10+fN93>q;K>g z=JfwPr<<`+7kd$YH3(Ywj}ibemasZ08u4CB>PY1$U8|o`qGzY-EPk&tgl@Dha*pA+ zYbLGyE2?8j3x{fHlS)8r<+|5F7p(!y>Efr-EWcw4gALOa zt1L^3`&%+Q(R1}x+*!autL~xfpJWgQW4vvlB_WnG&12U7No8p)C` z3`MPHpVyjREFf-e8;Loqu6aohd`&3THB?m{;vBDfp`*Ga)S;S*eHa}1^f13yQ)JF+ z3|Wg6M%KBl-EKeB=2RoVRN~|H$uCMU>;3RQCzmb&t6^={R~HKvYfIuQt@tnH+|)x; zM4ocgbF|~77$w@qQW}VSRYUxwm{-!_{pU*9EDrB}uNaG|_g%o@EB>;iwDM&NCcr4g!(QZHm_si%_!bEp*>Ph`m9GS@|dQC$RglMW)omQ9fK!k#WpdP0A}P^JnYw#aL@s zzI_qmeYo}lFZhG9ycUBL#kxsxEAbU;xHMqNdbp<7z{nR~$c!J#MtA5Y^2*R_PaP+_BdyxQ=Tk z^+rYr$YDE2OH9*NpvC3sq$#SO2=G{M{Lht1bqhmkiXB>Nk4QHU$TUh}SDzZVmI`5r zB%Y9>IRXhWmeeIV-sbQ3W<*WT3#+JBIk3f$slVlfgAdhT?xbq)m6!kIH|AeAZjXky zW^3oGB24QS?q0|qwlVc*9+RaNX?MxHJgYdbbe!>ko?rFY?n2SJ^_l|WIhM1hDkWE` zwcC0rlHj>0l)8+^PM-G>ZHb7t@h|K#nfv-yVTol5{n4%`u(WWdDyVp-20TMvukn(F zK$hJF@kK7atbV~ai`n;(P8|D_!*9Jz%Ka)xt=P+mUJi4-a=h5$S!~Y)%~TdKRYX)- z4QzEAqw;?L*3}CbOh_sYQs`On?XETJt(BNlbd0onQJCqT6N|dg+F|y3Wg%@;U7$4j z3`4j>cRcK0GF|RDPhFN-X%#-5WGB+~m49omB`j#f4syp_+QSwgqe?JQ!M!F^d&6H%HnNXa)^GG z(sliUKr)ZjP+PKT$5N-R>s>&pnp0m7x$nbiYPLp&TLPZt2ynp|pkm%+klxrAvs-b3eRG$4Xr)QnJintA4{{df^%+QfJ4+AAYO$Ziwf8l&zV z)AsRBaT1(t!b}qd13s7X5?NcjI2y{kEj#xDaZO~VT+w_Lc{~1hsc{;g{+-p*4wEZf z9$v!i;@Hy){u4v|L99_s;qfgm)$ew3xm(!MitiY}X)+9ZLX4&)J0_pa9+;kKwb|z$s^4eo%~} zQ{z7FrIX9K4LWlk#>Z%9jpFBWca+xIk9|0?-pgmp3VcC^93$1FC?3*r*FKZsch-(Q z|KMlN;=4>Y=C?mn@hQ9y-7xCPw23Pl$y+PM8(m`dT6G<>#^ybaPh@&t+>VJhMl~k| ztfAacqng>Ep`B+!utVvDM}{J{Nn+T8G$C)~FMIn1NJQ*Nl@$o-(^35Oa*UCqU%>xx zingR5w?I!k z5Lkx(Ns*G)9ca?Y!8F0Lq|^X%qBM7P07|&DTcTI~%Zj3el4VHz>GQ3XvVoLT35Ta} zz}ZXTQf@8w=!yAnv<9EEB+WUYVzv@w9NE6QPJS2^>r~#?|Bu zPr6bU%^aB89{%1cv2!3#Y`~QS5G#hqud{wU_8goBfBjipm_^NIzfXKD80NUp=XH*2pE#uY7P1tYWWGp0!J>_+;?CrHCiti|0Ye)-~s z|EmRXpRNf1|7>05-Cmuj{afTNlS71BU`m_0^&c~-hKIF9`{nsiIT@26KwZ6Z!}C%X zr}C#63F+tKMBR9er|6#7**C2EU;5ct{Iv6l;jtQ-4kMOJ7s=fXXL@3sQ~QkWmY0e= zo{!$y?o&AMJkMz6SwWKW_vLwF7LpR)U+meq4Vdbp7q3kY3eHB3l@e`p{2ZE+U4DuX z`WcujU|f$lVUj6w*jQN>+5H&>)Z2x+_%dzAoCn2)?2vwYw{QcJ| z-+!K|@cqoVsagFQ%fIeh+EhTo*reU7ywQ#NAng{>0Ntsr?b zs%S!G&bG(PNi0Q)KV4adukpmgtmdHZR*}uF&#&ZLP7p`-e97-rWn4GI5Bc*lR1`H- zZoESHnK9UOW(6LK)$F}vaHZV-Ok5agdrsA+qQ+lP5CgWI(AR50a~-7_=JXl%J0zBw zwwmcl6@d9`1NlEof4cT({5Q)t@9p`>Tiizx*oxn;rr3D&kSqBsE*iTSqA_aIB36gyFd|B3GiLo{}c!CLXKHBvr#1woUiP5tbs4PSmCv zza=c-!ux@#+Y8p~LpA(d5h9-i{Vanm65;gaAJ8dsgf&LfdlMlJ0C)NM?Y{ zESkXEPv~8?62wk_vT-=<_V#iahCD+^ZBTsYy!g6B%pCCT3FroECWnKqGS*>rbCKV< zHk|pIGo~ z>W_QHnq=l(zAWtBUt=LR6@!*tt*xbER8`?E>wovyDudbkn52baRDXUI0RvHBttOpI zV7+51|5^8S$)?zuX8K{6}DAAf;R3iybudp@LMhu-OnK{cFR{S=?lNc+(Wmn z-ZpAp1xknGbD+H_e?!6cqhAw(yPnm~zOFmekJo0rh@N;ou>HnHi>YFshuu+VqgKdl zapaz%p`rU#qfO64&2rM^veyObc0OxoHeQbrZAFy4zMEIRw(YIqc8`cv(*1WPVN5t* zTvI%WmsiBc8l76(4{3L9Rn#_1T$7qH?e&|><6XHb(45mM@b$vR__;$b6B&w>V;*Af z8vmDrni+IRSS$JfhBh4- zt=<^Q)hpH4`H4jr^R_-5Pka}uWUbEy-k#=sVCyoT5Od42JEHLIi}0ATh&QU&zs%*w zO7z$2SqaTV9ZRSkGMfW@CLkH^x+{uo8k&m}%}$Gi#!8W=VI}(=-DZWAE8Im}fF92+ z#`LR|-<4rX&1J^*k&yr-kJ&vbVGGy6=~}UHb27ifKDlDs^!D4{a;UN?P?5=0)$jF5 z%XGdld*mIEZu1RdTm65YH#b&kRCk}z+=f|4{Q4w zA2bmh^^-7;fXMn+@{9U?e(QmFK@IAj3-1PZvdjO33^#7RSnMV7dyuaGO#jgIJ`p>a z;gcp%0knu-&}f{O5{I2x=!5f5(}HzRxZ&RXGh0jw0afEa|JIpCEhqsPFv7r(}z&8EUnM*iU!< z%#L1Cyw=NOIV)>x?G_*KHyzi*4x-Kf`o_D$l)`6OCh%Ct*yup-KObo}N&95^Cw>fs z42-kF%32+_A%iZsUrz7-M2PYVtS_5920vJEy(jp;CHph|-(ST-5EAq85pXvWxW6?0 za)RvJ<Vum8M1_}#c-J??5=Ykkph~?iEb{cF_}lk( zv56T;xR$(1Z?sr|K2;|BdK>hIX0D;y_Jc%C%IbD7*c^vqT0O#?#N{ zczBFlzYmVYRGu;a-&XRUSiOPUVqb&IaBt0LtmExBP8rJbkCZIdt|Y`#CJZQO@RW;? zTY152(&pjYbpQN#)@ah3A?EhI{VzU8b=|joG!^iGit~ujg8@{;Lf{H@%~+gu9~?h(CrF zDMt))lH0|B7NPhMhSkkOH@N-B+BUV_Ggf{~z-}Lhw2Lr{dWh=XUVJ=5#^D)wa0`{4 z_xC$||LK@NKUm-35wQ$KC;UilAbkC;@?B3k*WSnMkDVuX#A-C|l$c6JIMY)CxnEenmoTdx$HTaF(41CI@+D=ls2d4`k(76PtGcjuZW3`k)Y);x2V zVI48Y?)O-9ed}hqC-6kiysV=YyRJ0d;!CkR*%${q+uL}ZM$_O!dS6ig!rX5y1JA}+ zmMDr&;!9@WS-Dp#7NH2aET5@6f5`BZokaFx5|lYR`jPB9WE^75Qq0=tR#jEC*{%TR z3eyv{8Du}Z;$9bQ&v%!gW`VYjOy*9v{9(Qpk>wr3Gn-se%Z`$QPUh8H z4s`F6du%#!1H>9d_72RY6Hhb#p}GFC@yeB~8^KX|$jdu;ZwTHAFaYB&ycmx=k7{sP z8DwC)RE;m3*#~)TmXA+NjuM*LX*^QF0|XRIf!0SyqZYJwr)vtReckg1t|u0>z>fzq z#Wz@{duYe!TT(a}V|o2gx;({}qee25kJl!iZ9!(7zRx%}c2j%z3FaA3tZW{t;Z01o zh9?eRx9oqc;EJM`3kIAYe)=An4WuZ<#Z?Tlu*1Wfx{&uNiwFfhr_bB~efBOz zNouAZl_O%MN|(R80hSXU?D|ZU@`?9mV`1U_C!S6eLLNG04=O@a<*}=y&PAHL^uMn! zK&MKe$M$1YbTq2G&$FuVr*n;MnDh5ZYTpNl zzgWMjjy9^bRShGhE%*{wIC4Q4j*F&yhNsb6?#Hjl?2aeDh#hY%C}(~ZmxDg;qtI7b z;Zk3sN zUHyf!^UGFpfz=UW(1yVGTzZLB-$?~rFICw6PX3|`F)^gaj=I=`-j{xFK5@ix6_)Cp z=7>s6OFv3eM9`1td(NMSMs82)CxpwfD@7HS8`r&BQ6$sNJOa{<9W3>jBPI{x>;|Fk z_Tzb#d{+*uuaVP@>@%)GTv{pFA4G;cI*`>ut=z6_)9swHA~IQ<+~}3tmORPLae`HfVdj;1>m*}(Q1<4fGZ>Rt1y34AZTt%bH6n9)^98wq1Y zW(n&qted5%0PP90IqBLW-M-k8$eNK2tEE=8Q|T-S#PJNETlU&41OBnh7)C3-J6&sR zO4|{*tuLj7)*E5FlHt?*Cd)S86MpuYIb-!)*soLBsO~LI?J6ohFX~iQV)@88-azht z;er47RAdEZ<3~;xPPa}rK2vB76cCnX@^hxnxiFAcAm1{|P62i2Dt>xjKTF9bux76% zCFN#Qw`R_+EK=>YYV7tVJ}k1^73fiYg+(KIxKS9O(yQ)70Y8DVH!yL#$$j8hEl*_i z4=ge*tH`@Lw*fV?6%C3F>KtR!Vt%kry9EUZ@XmpIpJe<1yM<}G?p;%&`g$0 zfL$LLq>7)j=(Q@xr2EdTe-kjlD6M_JZrW^JY&_fh^acs5S#4eWor>Zu;ArlQlmgKf zfp{>vrcEcq6lD%uhY4ak^+3C$bpd1(-|kwI(8PYIicZRl@7KnsegW7s&)-kZeP#SQ z7iwZEjL#q?4j(EiqCWa{EyQpkVO$GoF_v7y73F?WwiY64bJdE%Ivbu2vJ328t_epM z=jOR%w#^^OkR!KY0L2TbRIv4Me?n<7xYYXi%-|UfF^O&e=O=WvZ0u(uxFY_{EWZ=+ z!6l2G$8Jo$EcZ3B%nvv6q|7B^Lz`yn`SnVQBG-V8d$4s>mlNRA!jGLXhjGH~Kx|k2 zg+%s!%(*DI0@8+g+qf{mQy<0{BvS__!z zs93rFUQ1;Fy55dbpV1)Op2%-KGpme8Z8@oqq#B&uX_-X-s=A?Sf zb>#nY&+70p7GzN2r1HQ!x*}#}lMCYcHcIfgdxoXNhw4ELFDt_Akj3}#MS{>!j-&@| zy61gj%OQPD^HUdZx;lQKix7hso9XPe$<@IXjZFRd7VCAgNuzzOn@Qpwcr$v%a9}_Fi1VJ}q}8sq*V_!+v7^BklGaMNMlA>QwEUy}T#9;G zxH3IjZenxxH9;&SP`xL1ewA0N>+5};D$WO7n$Wx?GhYKjJg3$(dS-#RF5oYvQol-E z=BhQPRFI`NQi0kBIc1>x-Hw4+EYo*OKpK+{aNlYpJtf9^?tIISn-l_fo;7Y^`E^~^ zW>^B=5Vz!G6&A|2M%<^1xeCvf)ZlP;7(qgFSFJ) zW;so@9#*i1wFSLbv!S*|BnB{D83;Rb5j#w~Wf1O2ULFsi+{di&H;+es5Cau0g&(-I zN4(8E4)0}0Fi4c1P`!>}HEspLKR=k;?-Ui%NgCRvQF84c2MH^EP{jZ*#J~Uullgg) ztGq4Lt>{IvpTw$k3?<)-uXzZy3K+w0*O&J%mpCRizwS6ZFW`$v6Hb|~vs1B254e3a zt+6dR$y2;RVp_~W?6`_mTMJsIC&yEfe}#aeZ*HhCNnZJ`H%|Qae03cD4EnKxUnL57 z8Czullj*Qu&a?B&M7}g8clr%648dlOrDc?e@D&-Rg%suJ#0tywYVnDj8By98e0WN0 z?j=YpvQC&~GO#J)N?*~06`|rbuU&$D#Xpr<@PxFUh)APXnUAr?EIcV#AW2S!Pd~|Q z50!#H%74Gu4X`G|7P*(J1^Zq~To0Nwq&crx9^v73u`oDRi#`8D@PPin6B&pvUE%13+Jl1%e@`{o#ofjwdQGUQ?lQZ)F{cUjjjcc%iIVd~1=cbR@ zf~c;ke?xe z2o%bk(HKI`{lCJoL_?@D7uA zm#F2VsYtWq{_T(ucD1}ng3L8QRm!!8auC04%gOjT#X6L<+H^80ono62P--DHIQC&-%FJ*`Xfgo4#c{|(91Ez9bqA`<;QShmYd-?&Bg@-QpymLH1Gf8J4 zt93Yr9L^5cPWu8W*Ep1aJPmj~588+*nO0`z3Z#q@i8&E5Qeb@G8Vy?x`g*ZguANT> zlzUVWu=?fMsydaI_eG5F=@&B+4+4rq>aqA}u!<&5|0ydd{#9g+BuT9PzE1NtS-N6-! z%><{qedjO-o+UX-n!BbGneec`|BCS5dD)ff1Y5dYVw5kUBL94xJEoWnK|!}C5NYq_ zvp;W~@RMWIXmxAjn<1#9^g&b?8_Ls(rAt2`UTEV+Y##p3#b)Dm$6|aOlz7G*G$t>O zE#fC`>QtF-3%=_2X9i)J$@MJufxnH>a#OQSiA8J%5O(e6b7J1_grh6MCBUh$P1iRny)RXfpR z3^S42+xs0y@SLR!0y9J!$}bO3Z3tT>#11JKyk){(Kkt=5KUU+n#TwZupQBb zhB8@XkRQMSB!azh{%3%B{~j`^vg4YJ`9ohLrA4C{i$2x0)2{;lnlgqOYq6B~hd4&F zAg$}#H1F+xEo|YiQ-n5ozjCa6Ogb%HJNt~?CbVOHMWO&n7Cl>aO>$sJ`X@k*;s4OXFTu1NJTEF$2_J(vrqIsWX|XOmM?@uvh(onQW4;cjw`_VZ9RcDe4RCH*3w?L zq5v;G*Gu=?w>xD+3h(F$d2~Ei0bC0&F69!-=O<1AezLpD{28$5YSl zbYc7|&r1e`$Tbs29Ig0oa-TJ^t0+R1U0xQdNkto^&h#&kWpE@5ZPXA&T~N=gIcM^! z1S#(&xb1O92cj~9w_kraJd}_>HtL{hV)nD1fjFx!#)I^ZPz%|*r2 zabB)5@5L$D180p_q~+zZLO)X92<*>>HdFH?$+v49${*eUR;mj4NoJ;f@HMk&ObNP3 zjxC%x%+u%g=HmexajHZs1ndvQ6M9SUy31d!2L(yG#vUJ&f)^W(w|^HG<8g?nE}LgQ zWc`V)XhBlZyrvTkprRNfQzwglvlVulCAq~vITiZ`A>BuzU=w@xyW&ts($!*n3`cSh zuxXt4OwO+UU_94qL4@l4e23)GW*+{1gy+WW+49trPZOg(mG5icS3X1aAT*JmMLGNW zitwWlBwBFTzI6V9E;CK&+l{Aqq3# z1fXs9$QK(6;eWEXPI-&LyFX}jsGE$TDCjGM+xX4PNtf1mJ1z;+z{XVlLndG_P0yNO zU3;Gzo;y|1u*!IRbg{@ttVuPMaI~HBVSEF8i@OxLJedHNtbOP(khnSYT`YckJf7Km zpF9>UylMwCc_tG3w1ACqH7GJpg@JkNA@pZlCYB}>g{#Q$7?1IHP3KhR@ZsovxR9~$ z&LY#XJlyx0gRU-cJHmj!$!a=$bbh7D{f=|$w(H66^D$CC40*A9YWbU=SlPq3i)XUC z8_wbg`Sdmhuj5ZMd9D1=3=<&{JvA+Z=wcg@d=2f-5q#YH#;dRP;x=;AJcw~H{qV7o^N5CS8d)o`V4y&f($6-^)I}GSn2wPn zF_Y98c^hoWBuvrTnhJ5I>k^Aox>jz}itR1aYmwH9F@Y-#KU6q)$ZulyL)cg8$|-)$ zqF$3mYEy9Zy?g&syYI)WWD%&t!j-@MJ+f<8#Ncmz%;1@SylJbmhipjLv_FEeSVfV@oDS1#{w??8er~QgXy~nFzkb>M`4*p&s9(iTIKAC?wUz|e*m`lGem%W68+w(vS+;L% z*UB94k;bXrj|&H2xf^_w8dvAH&z`B4wdK}00n5FZB*vCG2S6hAw>FORbr9j3%;Pr$HM{f z!Z?7$@?xKkAIT5dp@|`89372aEFHHap2>bQ<)&L=XMf|SCSvrW!1&8g*6mT{lD45( z^{`>PClxnGV5ScKy^$)5W`K|^NO$c0$3iIuZ0+<*Pu?txp$QBELVK0@mLArrrhIdw zv~kuu(Qzk{ZQ1XiQPp^LHGf(EK4p4BYa28wG|}YoG#?^qQuVP9E^GAcL&Ra;R7xHs z-MrG^L)xHsXJXkByMt~olpM?0Z-jTKYsl>nId(m*Ej!XMmhxP_*owgyAyX~XX!hs= zkU!|Q{!Xq)p3}- zlZ%)yJjo;W>WnFSEE*1P{kD8}&W$WQtJ$m1E%z2(Ef+?&asGMXtmQkgFQO_xH1@E=&WVE-`%9cOPQX^p<*c8QWuPq{(98XA`r6vlqJg6$Rs9d1AeN;`yXJ$34 zKubL-;;yML=G_a%Dn2*2v?I?y18mB@cUc?nqZ@5Iw=aH|8;3_OQHF}>aZTEg2lUkz z#W__(S@Cb^?hQystbUS`qj8seMgw?69#g*VD|A1$qYioLiI7u5Y_M}7NWyfZKfj$ zzi*k+Brs|ya>iSC=Z%Ei|HIZdhUc}l-L^qvt3hKmZfrER&Bj*K7!4ZRw(T^wZQDj; zo|TPv@2~q@SAINyGS}oiZ;UafU@XsDdJK)!(0&BYX8fIIhZO+?o@QSDbDf_()otfasJRn`>4qawBJV}i zpH!xLOCi%aZk_K=ffUlCu10sMvR-YSn8JbDBNnHu ziv}JFIvabcD;j60Z0SfR(~`L&M*N1LjS#6{I1t7YrgNu0%}!gXlS@@g4%0C}ba(b9 zi8bp2YZQ}HkUyCU^O|}x+g4oCabdcbzXe{EN>PXq&iT;^?M?Wb&}5kAvwV$K>8Djn z3RZ&lj(rB(WU3?@RoHWk+Ez%88~W|frB3xN>^9|6Gil`AvrWNZ5oYqapqk(A1WgHq zFik4mdg0l#9CU~W3XT{DGt)YKp9*~27BAU;89ZUEQyd2OIVesfG_7t1Qk?-+UIuFnMtg*@0-{L5+heaaT@ z1M8uvK??l@Zwr4U`#0mF8SVL@*|88B;m$oIH0fXLc=RBJvRTezhSe{`G9*vo_`cTR zr>P$`iQJr?xTdwCs0N}DoBgZ7LbcW&&d^+O^^ftKvgSNSsg-s0J=gg-#l%Wmvu>@z z%VWOM+(i3TJy1=)C&8x<+8sbeO3@$a-E>`zeeQFLK{Bot)c=OvjOKQsIZLGr#cOvw z;VBFsqG%Rz2B#!h7QvL;G06*$ILJEmNW9 z+?S)u$Nc??_i@vb=)&%ck~Ox2gUjKcNfw$v6jGWd<^QNx-PEiHioc!?4V#hCAwOlv zO-TY*LGW8q?IoMJY5FS|)tcE;ly6E+iw9cGK2n~A(`7ym(_&0qdelukgl%yiV{`DM zPY@lw?M>&r`!+g)@ug_eVcd_0I_DUNcYmso{^}SrzUr>CPqEs* z)3RaRs|_#kiqi|wUqPQtH&Y+K)>OUR2>)RxRF`#_~O+xq9G!Gnb8!I(YwrvXxGEgkulZl_yPU zdZHxM!>koVNT=APL3FL*6iCYRbK9@(mx-Pwa#sR%dk~5*$NTl;>{KwNjuedkIK1wQ ztc3*q2o@Xr&a^r9!@dpgjlG^k;y3ue=Dw;gYkBcp7{0fWNDX-!Xk5ynSrqy z>^-TJ@oQ?=BEUJvra7+mt!A_-KxmRy>YK_t@@zGPbF!==s1_^ZRP?o+Znm6;?llJ6 zFO1-b|6(G2{01FN!y0~gBQYCSVjXR!P&?n-eXuZ*Um)m+Z{F~b6vX4L?F1oaCWG@FDIO`tbHCB-y zqg|A#`t5ll+lrHmR3a})lFb}B3WyF-_Wj6s5U|^`keG{VxFn8$q`8uHo))d!TJ$<& zrR^9M)p-m1^d;gTpP_N+!)2ez@~>NfUVSdpD9Ca)VWZjR#7Eyi-%`RJ97M^fp|YiqyWmUWiCXiF;aBc2gE)E zkd2}GySKR(!8IWzsnpsyFH4b0>3)5YYu_c)~y1t~er=78*Vm>Mb z;vU4*uJaK&-M<%)#9OSt>ZK+snZ52*O?6(hW8a-KW2=m*vyYDiW0t7g;@nU7tNvQr z_$89aiIlCj0ogx-CAY81IS(}Va8ZB06lQs(8V&&mSck6VY+)R&uPs#fiJ3{g)o7s$ z88OO51Bs-Xj_32n{q`Y?BQbpwdIi7WFGTi93~OA32Ql zj2qEYX4QXcC5@ap=jtUK>@as{(k?Jzio4`Vj)PFiNe^UcEk1b2WF011av{p8yO;_EyXs~B!t}RQzbR5B>Bz?eO^JP49 z`wI*RzKk_wA7RL$qkA(fXj~0_q4KX&6G<(Zh`Kh^Y+`xT(k&-+ z5s#|Kwirf^_&sC#GN;_;RT)N+v|}0Ruf5QuQ7fDwnuu62E}TgnFL2zWrI{CUXRAFA zinH@>ydq=#uy?QMOV&!rK6OF(IE5;q_QYH=B6EHH_K4_>4|h=*!H7rY@-soAi)LGr z0l~!K%0q;nuTZc@Fpb-En!<&nbJ8|~iPvOr;jpDqi-#vdQN|2Np5|Sh71O9%xJT`M zvD3v;h(Z7cy@d(~U6@90eIIHpg1c%d2%eyv{9cQASS~y@p~qRQ1f_(y(s8=HZn=## zY1!9E-h-7=iss91!i9Plo`7P8hFP)KNcL~0(qAwrUV239b#DMzS7NjR#-{O_bY^V) zO8J$geVSMjmdQ;))67#;Ze{m%=C+zc?(%I$HZ1H$&8k@EDuh)lJiT%8Y{#;U9@^vs z4X?x|*D}PXJ7hQksl;bD@a2moM#Y=!w~~9a0f#1&GZNn(FLq%}+PqPw+(QCQs_iFn zYjFEYxgMq!uoTxecrYz8Qxo&r;D3m8E%|l9qsei|A5u?40dim(&yOmj( z@r_O#1SeOz{IdiHO~@z3Fi~m37!a}LklS$P9(`)MnUP--MNTtboGhO((X^)Pkf=4Q zqG(*q#m1VPr^P2MKtT@eIh{4l8h+*MPwmc(7dC-~T{u2GUz@h-4T{-4eu~+f;ES57 zC`QN}q&ZRydybEkisNQa5VLu9L9mB?C+HQJdBj+x?K{%yz*$B+;V*S4CqIodRz$<~ z{OsyXrtT5FL;epw_fOQHrz_!F2gEno=^0EbA!~m-jGmwQrd5k>?shpp#Hu~WB7f9` z)U-8gx>uJc8d0BhLVHVus91ea-1=6FW46e&?JS&I*LdDCqNGkx20FCl5FU6jh3+&c z<`~IRA(EmCKu*u>*4hZJa?zcLBpf5{=`~4Hi7n*oOKJ_z1CQ+%#ToYVFdD(N)iJ^} zs@Wc)&ZZ7Hol=h1rIES*jZ5_Vep*(=b!-;;!CyN17$blvD+LpiyDW0W5U*kBeUoGy za&`j@wuVATC!%=NZM51Bco*4_ZUWD|5=sg9^W3_U=~?E8C3)|PMusJIKz&OSeEClT z>kM!K7%h?Xu50&8X)pF8MHe1Ws91$b{lU_u5+@V`mg<7zAr#3WVbjuxmV45sReQyundZ z5vIaux*0yw|J&*t$Sq1w)+J>t5S$4!i~&uBtI#|Mv9Cz$mLUkI&gdWeP4jE;<%Ha~ z$bUsH^%!eFm+wzdtIl0kmpTTCSIY;}|AQZXMOAukk*-OGcmDXgn_1|v#VLc8=ih|j zD!{~On&Hs28DsZ8bVDS-Dj>uWD)R&67ROuFO;D)+gJZn#=1qlQ&5pX;Fmy?u0!6yV zdBDCc$1vlJ8&e)(t|Pn?75V-3|wP zStgc}inu@8v3CLOXohlCfvZ8EJ02KBHqcsGc>e;P1{uHSCP67y%|eNEXAA=Z?#)|4 z2;M2B0sz7P25912XCon|Q8%oj6C>-@=(tJSbIKfe`tNC0P+DW$mJfb;l7-1yjKj#e zqYEVR@WMIyGJtZH=}Mx1?68VX&6}Q%7=GB~-^iiGw~ux7&(3;_NKOYP;a>GIj6=Ww zy0r+G{F>LNIql@f;_{m!Dl^aJ(k7~ph;QM^_;=m4yr8EQqtkryE~d*}tcm=9N?D1TN;JgZ-b?_yaci7G&Wis$@l)SHoPAOJ)lgdF_2R zzPkCfKSElxz^Up{jwnxHXUAyd2bbRF!URTN$7zDTxBo--{&m>B_<1!dIc)|xWi~t^ z9|F#09Z|;taH^bX-Ar0!HiETC9b6Nv>hl{fh5x&w{`mK^HmECJpC`^+a!&a1YbNd^ zE|DeyOf0_|DC1CzNetcxkAPzZqzlL|+(5MqBd{jW{O z%ZmhgbI}>5*M=$_^*-BB`CRsASZ2teoc>Lp+ZyQG(77^1FS0QBP^zulKuBo?K@cTR%}^^#mSWgnJm#$dq>h!Phb5|MW8bJM!5w^`)$5Sf(aK zphRBUF$@?tU0|nAZx&~#;@XhyiAy$;?ti-*8U6kC`~7Bp05^L)ci=Te+n3G+F>VO1 zrI0m51~^7I)mr#%?Ur^Cex>Jmh~a;>*560s?lZ3||L7C{DEPavTViIvMhIw)z;fwt z{S_2DTn>EjK{>HU@gZl;ncckNwWmA0Z-J|R0&%X=fa7>RDuMC34e_5vW=)2g%9p*f zK1t28;$}|*xp$$m#!%#SiXnUg!Rj zbh$TfAiesACkTQ-yhW5o)!CXq0x*;+x*+&QNhd8ind6bKGBS|=vI~FC#v10^bHS@# zA^;9GgT0Rnc>|nc+7q8VAp}PiAJt0WC3WF|*RQ*)ppO-VjH~ld2e`*RO~KCpw<}PH zXVV6kygwlbGbcqg_^iA9Y(zvhF0vL+MGJr?V#x|Okaa%^868?^RO(qolZojvy}SDF z>UKcgp42*}w}B$9FORTYOS3|7tNir1___0aDd)YBCo-#yc+B@@Dn3-L?dL6&vUp2CaHVq=0!K)V{h(uwV3;TNEx?YQfv zNRBTP3V=vXIpVij4I3yX%O!kbX*~1Q7H=R81dhd;j#pzjuVK`<5||9Uw<~X2sK*;= z_R;w79reG-5dF;iC^+gSgaGD@Pssiy4fQ8#(r9YV>*wsk-DA}N;P!)wsBR^S`sQXT zho#)XY);-J$En9>j2oV?P?KfCj%)xAI|=X#?q+@}$bD@jM-xg!+VH_~<& z27sdSPU^LmIis!jsVj~TZdlBZ2ms7Aec2A=_XHZ3!myt&4`-v(1k$fPnHvNJJ(0 zlR>YY{bPQ1$T@$l1HHrXg5*U4qrp4T@+{#xUhB_{jOH?7@3f}E8te`bGs{&fGKuB2 zg+g%4F36-(g}Q_C3chiOUEF{0#%%}!B!kHmi)B)Q(mTCcBaP;Ck$hw9!VG|4J(wvd zxqiW73O#AMaxPS^W3Dk@2_|MGB;pDG{UoL9Ada=9tu&OYu|TahAR;xJ{?u{9X;zfT zQH%bHos;pg?+b1YK8T+5r{eQ3NXGr4nl;Ky)V?Z}%@YSwQgWD^BX*@vTUE3L%#~|< zqGa}2QoS`W1LVrJ=GHu}dD^QCdszh9va3}OW48hF`GUW4+bK55Br;mr(rwn--inD2 zVhSP`hc{P!ou#R{@t|$Nl~X9x4+z)8`5$-V@94#oY^~^UFUvYE6O@Qq!e}rDKMImR zmFVn?tWH03-+(uj_b1VraOvxs=ud1AlJa^u#^5uxdF#dm>NmO!> z4T$>#n0w--92IY}WVb{OXtA@c3k3|>zO*CBE@nRPb0&ZzF%T;42~qMIXB9&DlEnDu zN@7g{ppA5)Z`s*khDyhC6;WbwG=h~{{#$NWR|o{m;wu+up5PMl@-Xs9@S%^lzpM&N zqv4*<8165UG6*cJ|7%CY@t4RhhsLbi@8>|lfdw-|GE2-v2J!{i95>WnO?~!-{VUQ? z@7SAU*3^94Grf>~K3z>ue2||eA}QO2TE3;GGRxOqt@6_3J`C0}9S-L>{UC6|dB&PD z5ERQU50Ixbd7iN(z}D3uEJ`qcqeH%&u&8AYeZ|LoacKdf(2&c^5MJ}#hc zL7uTdU7QcaPl=`ypi!*cfj;b^@O$4@!J@yf+=xpv7Jm(du*$`VX4L&kAP~+t9N{NU zpp-f2o0m0#1h46I;X%n5Sk4D_JO68dlU0!^I4u%tZF7HB>m2PLZDeRrz^W;0=?w3tWts<>-q3+5{S$)aCAe z1z98C{b=Iwp^$%%GH`Igs;e+tuF@UU^kFk2foQ+Bp?q@lkYdbtZLj>h@xy+o7APKn0x8My1w_ptUT(u)!cZk zct6#$?{-L2WIdiTGyZ-|-avLqwdD*tX1`-K=j{Z+dza`-l|=XQOA~9evZ3{QH}BK+ z;L0jDKl|^U|IRxErqK{$FFl%*9uF5RH;xjM3K>8b35o~b9=hzG=#;wt$G1;?Vf3;K zgAUFYQ^~|OSP-cHJ?XF3Wle-=Z9_wY?1{iXLVVNxEx2ql8z$bA&cqQgwZan2oK;H&sHm`-C}C~j`M zQDiWND;Yj`FfKr%we#9BlsXvX-;LWFFla*0Y$$6;PU%M#X`i1QF`o)AKb|3F*^jLq2-jI7QczI{(o_hc z=#BdP$1V;t*`ej-j2wIS-?6Yk`Rf(%IO${_eXC&d|8$0wRIVefp@dNT z%e6O$00?qF&El>h=5SLe2`$t#?t>oup1XMiNsRecdPx)*1n8z(&fz;g7g$dOj1CP2 zIMYju-XEW63LBVaadppR3)G2Z@&413bRDF#p`1$z8S_VtB7pa&%)xqwDH%VqZ5 zgPx|#OE`sUV_6FAmgI`2yNVA)7gnuz?;18L#R)GE;$Zi`&Q}^3cjWWH$I)cq{WHmk zqHPRu6AXM2%!#(IooUNv%591cSIeZ2r`G#h3t;vVsvue!f|Nh=`zOVlJ_RW2c<$7; z340fP$}V8fZ_#>g4=T&Nh?mOng_)H#1>awBB{AE+$-bF?GQK)s`h@METgI?g>VoI5 z#=}%YceS^W!0upPcF=r#fNiJs(#dj$g!T^lpS_!ok39CA{`If{Z=`3$ZPrWIYE2>Q zCaZQPCV4R*j+0tKGPM28#NGR-pu$gLuu2SJYvH;G(F+1|G4GDWT*;)Pi7iQqzqfti zT^n|ISELnuyX{h_Se3f~knmmE8&?Hil>o*8`3{Vu?KF>&Y(eqZv5FFP`Mgc`{KsaO zn~A+on^W#Ru_cTfH$3}O@>0;XHYd>(s(~wx$2mGmr&S|a;4m*a%Z(250mvi@&r>Fo z0RIJ3AT@h`#4|k zp^T2r;z&4N_Y1SBj17{Ty*xinWgG@X$HWNcu;rJ#^-3vPT~D1?oBT37m_Hl}w|^N* z#<8V>pg+z6sL_n>Q>X2fNlwng+BnhgA7-tV!Y1qh<(@)`+(Gko{J`vfy%!}25XTF@<9zID$LiiQvSG>L`MmY?4uEOeSYVGFe|narcn+DhqI{=b^x03(cR` z;Aj{~PUl7it)WmOQf?@o-+pOhkS5s>X1}P=6K4havx^L}1hB5Q1lGG2ECo6pTnL<> zkJ%maCPz5q3`Y__Ocai??M4L~#<%eW1?W9ze&KJG-9Bx)d8@cN4#z$=UcleD=I;My zuzl;}q(VUOSo}~H-GKGkW+N?khK)y<%v*$yP0u@viYdxkF5(t>!PugD&p1-Z)#S># zjK|AK1s5cHK*gn$!k^ycNSpXDx~~sbRG7(9K;6+t*b$4_)n~x@Bu9B#$qV;|My=Qj zw^`~$lz}uPM^(N@7GPcMKl|aqn9z8J;n9|mV&F%?cuvn*u}2tRQL8`>semo`&m zbHo30f2^J1>)29|jP~lwVJfB^zLU-A)--17RKRy)>-TQ+6BP~h3g?oamT~!9*vLi) z&H{4M0wD&(kEcPxZ;qg4KmdsaKQOUaD$%dGlIg;D4QZjKQ~pY&YLXb*_DtXQY(b8f zYJ%WDunU;YlxF1$;|T&X03s-4k{N(h4kZlF-I2I*>Rb%lL*6nV-H#$~HVtdd- zuSYr?ATA`w(x?k%J>SOQHoaIX+MlM>6&wem6?skCO0j1^gaFQFOsi|R*el;|!Q-jK zVfuPp7&ra%4`^92F=#Hw(G&`+qgyD`qL--efq=jeJ3TOAwC~jGZAlcDZjQ!e=^Ef_ z|FQ8hbda|P3W-QR0U-rXRjbT;C5B?~deg1ChOR^b(cpf;>GveQ3JhV|XS@Xvgr8wU zSkE;1e0q3=-1lqZz0DC>K_HW7Z>S=}veW$F@?7w61V%Y;2)SHexQNZnsGhApE<4XQ z^C8oVby^^^0dzU#;X>>0YZh9ko5t|@B5I>%rk9+@5@_b+{fBPZY%^2g7cQp_A)vIs zOzwx~8QpbtC?vtPqV$HeI~9{MIPW(mic0f#wVfsBDJ@o9ekmR-6%a95tti0nkCUZl zMt2k_et2NH04#S8mf6Zf}v+Z;!&pVleh&R&GH& z)~e&+2h*)C{nXq{4EAX=o4tE}Zdd8!ldTA%vgUJUxBG1tfHk}-3ves4dN}Vtm*G|F zZc{K-ZWSI{!Amt4$QPjxZ`5!Sr`wJsxOoKu1iXo2^~G7+E}?2DrE*3LN8DK6sU5O|v)`1!$pAr)bv(+RjjJ;5d3j7} z%QJc+H=xR!L?_!kF4#bAgGPxXle8$~p<6g{QZ| z^D9O5(`gXy5FnrTM#;J#%KB(pS(2@(+(n`nY=tomy?!L zf-B$m^^KwwvV=zK%21*D7aPTkwHA3rcQwtCp(fLjD;wX$h?y+sWGn!zK4}eC&W&ny zu=W*YP+`mM0QSK#{kOv@C4=0TgI@~CLqk;e$=;t{s5ON!V1G_2z&ZVMG^`zg8b{oS zo0(Ng%wgzgSq(ZK+NW_(M#azOaz9-%3DXXt^cLinChhjE!DDaBj{>E9>(r5|=j}ph(x2_XM0tLIj{_SM2Jopm>fcB~Pwd zU|_b8j%c@t0hP}^4OgCm;$}1X5m{XoWMx&$KTS|#XqCD38Gn=#j$Vk8G5(+CThA1&2H0n`9o*oHm!1~)8PR*JGHNyZ$jIo==g(DEei{1U~Y zx6xFx6MbY#nE4R@BvR{<`l8w(Uf=^EUCBGE5en-f_m`AoE>3xhKF)YO0*dSNUsAt> zAQ%lV-N2Q)+7tQ3E_KJ7IpTLvsn`NJyDVcDk3Vh|39zkU;@aQ~6rdrcr=w9+zmE_ns)47fj@iJD)wq@(^frdUHlgrJ8? z7Ab<7@!I13Fx`~@Lm$>P9u#L{cCSM>bKMiN5f|^r1Nj0-m&o3jPdJNzcfR*GiS<%2-+>a~=cKa-Q_jdKnKGY(W_5S<7hxS?-ktJ&Jti#iZZ zEfGj162(>#KA=w=a+Bbv<->i5!B01WW*BN*SuSaWU#?&-c4_Esfg_d`^{G?RT|_0pcid|zLwv#zVw z$b8ly^~s~tH-ypXAuHh>Tn9h!W_+Cd>P5M3VFUZm$@$ZAf+v2rr|zsn%7VB1LA+nWOa@Sh?KzIb zJ}qov3j5`z6C(H|b%~`K^=G$%uB#QxN9WmdfOFiSB%B6Yvg`VC|;aY`Y64_w@u=Ur`gX@HlA1#n8aYD~w2Ur9|1aW%B2*r>k; z5MAegw#V*EaL(XOZ|XZNJz4M#=GQ!St{_v zFQ>b6MI!ts(}b!5!WT#NGb&lL0)P$lExM}=(_!opyrBWbGyIZzIVC(UEcLxJiUEmW zYrhxIzb}Z4KetMuOo_>K67cBG_ac{N57Ym11fkL2+Bmv>b6#FAPt>KhCgT}j0DKjy zskiV+YQM1X3Tq)@Ugo-f_90*tglYQwYbnCmS!UJw7fgK|smGJoGa@n4+ij_mYM-Ok zE~S!8V@slEs50Ii(PT6o>VoVP4#6zD(2tlj7*w7Be;NtQ-yF(Us)2UIQom1w*Pw4v(-&dxcr6Lp{QT4+ zqgF={FvzgD-xEsy4KUORdrM#@U4Tvwc{8^iuiJHSJtwqxSD;dv)b8wZ0(|8XE1RT$dVI6Yl~lAXWk}x8Z0zK0)3J;S=d$$IxglvD_j4`!s|n z{~h5a*$CcW!^SWDfyHuaBGm; zP=vef+DK6!y~4qM`{R`WE4Iw}V+a!*RUx0QIDEzCJps_cAFC80;);5F(;svMYx_@Z z`gg4i-UUR7hq)5p1O&%ct`Y-#`0!V!XP5|`4d!~ldugBeVc@Pbf*p<}!ub8J1#+~+ zI#+tb;6RSKFYk@tF>(O?boWHp(5xJrTCI`S=NO>iEgWzPZL8o^8^;*eYQ*LB-|NgA zQe|1&7IsNO&JYTL;XF_&XCl|B;wUK9VzAx%-3Y&dbQIuq z?M(N0ztoS8%PNJ%QqlH~70ifr@y&*UxcfC!xy4Y2d5zx4ji`C3dm1V*s@@ZUo5&r? zXk+0q+~21K8vm^g7HC@b`A9Tg(&dQxR()uv<%0qS$%-%}cVMlc6JbDi#Ad*<6aj!x z3hm6*NV=uwQ3jQH`+Gy7Dj;{bN95&MtWDYwg~4{x1Z7%@{8u$g5+y-tiHL=A-L=WGQl04uqZoOQ!#I zt@9{;5liJ47qVW=X-vvGG-uT!6(rAchv(+|zj_1$2AE)SH~x2M(v+{&L)r06!Lv;? z42VDWA+Y!0aaehgSy!t~unmp}GY_UIbJCWayUKh_c;cSo73ame@8&zMO zwWn%I?@-Fdg+_)v+ux8Ge6P0Wrw2fYh=dRi^Dk3}i0~Hkslq|pupQFX--VPfG(8D@ zDIo9AX;vs9;ixw8IOx~6TIO0qlG=sR3oaxJ^bPgz{OrbZ`$eCX6=X60n&*ojZSCH- zdhxVt8Grc6@OmH**LWf;D+RoMtbU{rpP+`N?#Ic{Lt~Hj^+-(GI^tXe)#m3EH1ZV4V zx{MYh^rKyg;CI(w2Z~4LtIFMG;W`#vZ1%9>XoJ0BfA>K};=eZ`f9U_rTc6XvmZWwh zKmYClR&|_sZUDy(P!^ce(E zQ&{wusmNnNW!AIx47*VQLFmuli6SPCDVqgg`TwQ7`Byf?(-9JfU{Ya&4`rq2(*{u! z`GAeS2BFxtv7jMeOZ~p#H(6Lf)i#g{^}iBNOtGIVYA2sIDmZNn-KsAa&j7- zMrV`QFEDBUX5DnuHxdg9P?V!p^T&?v3i2HfyhMVF7Uiaoo-+Pp7RD)BN7^z#`Frx|(1rz;X!$!x#S$BF^h`#OaKCrz`b z;oJ~-Di8LxmOc2D3vHH>aMkFzd+bAqeGnRKz3fr6}%q}p&W$G^Y^7xCZ0SS8XpnTZ-2 ztn(DjchGaC?fAH35@92n`l1iq^?lHF(f1a~;j7p!g1;O#c=GuQtCGsQf^J6)BLafZ zh!~!D?l>b^A1Ee6W;II}9FCVfwVd?mLU6b|rH;l)$iEI$s{$1eB=%fIhC>u>sMw)x z-fmoYUArN8VleQtkq!@x$=DK(TPR083i;e>ihHB>*7-$2g?c&gLixtrs(^(ujRHcr zpJz+{kHblIV?B~d1^we8#v5C&1r{{-2~F`39o2GcC?-8FgQ_bLy$Y*^V7BNEkLpF7 zMf$n0LPg3~!%DbC1PX>sBEwmd-*9qC9>C>7Z}JeDqEIPdL!nqGAoCbYy;$ISN6&dc z!LJz?Lm7h*+duOB1Y!KOhZ)()V8AD|XQ9=jm4Z^W(oqE4t^Dh*APyXKB@lZ}?g#bQWto*IPtF;Qp@_|ij&7@BtPs5IV?#;;vLRU~5CBO#=L3g>&GH4{!j62c zL-b^QJ>j063E$yuyH3A9i1e*=D|@z$W{ ztWEanb-ahS5CYeSfKYmP2_XL_&HVsv07%E9Q7T7)iLrk(FT(NOXV@htD><$xF=pX_ z5955s;eb~+`IQTMf9#@dLRWVWxnleDeRqIzT!hDJslPfWJSkq-}eS;kMkb^uVy z%5>N>F_J{gddvU{K$CC)^`~zB?b-1gevh153$+TO1few7d!~N3JV1_ZZa%5#QalYf zZlb(62NOBs>{YhQFGlV3g-SJq9P>Z+((c4f0NSc9`wRBUH8U+JxnB~qc=9o^Y#(M$7O zYIq)9Ls95D(nK=gL>sB*qg0|M-DrQD0ga;*QEmBTs8;J50_`gzBPe7C1dF0E0bC*2 zGo(IymZf8Zq)0)#8t&`M zopi|Oh<$EA@C*VTC;i)g5^KB+tGWkLH*t`#%}{c4xHnn>u_wlU+*yP(eRB>X1FHSu zB+FOp&mg23Z!te<_9;+>&R7N$>g#)J^fXCoT6!m?nZmZ=OR>ce%xm>g32D=`wCyKa@ z!gJp-a%r;Dd;PqxqQ>bciR4I0e2smldZ( zjXBHR?Ey@&Wgv^Ev_%(xx=dMp+wJT;?s6Yvb(~2V9(E?;Lw}KSojsk$ekB?pIX=2y z(0j6p-$`fh2S4uSuv)xOyx!J%XyqY7c5@^Y2jBGl9oKo&LLv^PNxAJbmh)D{u7dhq z872fd4eKe@x8#Hv(J(I8I@^X7HxI~=G`b(}xa{&MT%Jl06wWpy-#*RNvM+@N)#G`7 z9|5?*>3~cnCANaWBLoOHit$u=EHu4878IRC!ZiZK!7U5%OFvp~lhdRx1ux;YeBNkW zh}d9kSq}Vh;vs(|uNN4_mT>Lk9Cz*2czXmKa#Q%55aK&NDxMkj8sqFxv+3eYJLY_C zc{gpPGSR$ii?2c!BIW!bl-rJ7-of_ac(?Rex@-_?UCfxO^kyT3zyZhc7?`+-F^gGZ zGGjU03%+>#P?QmBHd~CP+p1s7mK#7(G&HGbII4+r6c$Xc+WMsmD@E2v*sj{rNx}Lu zCRi#WJq$jb{H^S>dObx7s65GDzL4jsBb?#msV=;=b-M6Tth-rnHpL=`)w9Rc^<1vl z1~+^x&f-0J4ec)fJ&itRRNCU-VlXHc!-O4YYM~Xdd;8Sr4gV#*@Vz!2@8paO& z>1A}qsjXj8(c{s4Rnk66@)U~N$7jVQW~E33;$!BSvaAf!+qXGth~RvQ`QInNKN9*+ zWX~c-@`{vYo8KF%Ki@3Pv-~pLNo6@5Sz@v9IQ^B7a%0K1>(FXdn_P9X0_2(30^dlt zzwArX%)F31+g&I)pYxRMbFl!gEIgPp3#6p-od+)HTwc92muQx1E*5%~UUGruj>Zde zdT%~M;01|qzIdH|QXM9rHw_Z_&h&X0to|esuXoXaeO;C4;Uq=HesYQB8qe%RSy?^L zo0a=?wk!=7BJEduKyqyCTu(k{N@`ve&;9MBv(f-N6Pi1qiCN)$3k~9g-!@p__yQ*d z)Tl=*yjz7SE-PVD(KbFjlVCLwZ^AIav~v^|QBIrt)R-oSWIaD$)*Ua_$qsL+6erPW zO=PlwUfrK_kWtO#pRNa5rnxt2no5VoqM6xkbgHjh>__i2S{@mvgnxNzb|GU%-R9!G zUE3yFG)EK1I;*KG_8XNCn__=KW+>e>ARi*HB{r@RLxdAyBG4+6dtthYq+Rj{je$zC zNMEd4Htg=0!Ql-kEvfXNBJ7 zXweN%^5>+&w1~%F@BQFByG|P&Y58TFXimw{b*T~;;IkH-L@cRi8oZC+ch=O!epx0+ zhOY+Pd2$nwCV?MDYG-&?i{`*11?Lh0t1I>_Piro#6MBm-qnaCoIzQX0S5myeS6KAs z#xiVhAC4P^A2kF~0=^DbX~DrAv{tCAT#H#gC#j$2P8TVSNBH3hB$+o6ET0XolCZR) zK?;bZ7X{tKB?xr-Ax!i`rY^TJaChJ&&#mPp+#*Ot#(UX&V3(F%kjVcG{TgvNeT1Ca zpg}aZZNGBET32>S^7iKlM-%ZoGQ+tzhvVtR7LQMExYXJea%8lQ_RwSs*^*%-i=3U^ zJAGYaJ?INSP#(?mRttpH=>WDyz|r^KsYY!yKgzHumM4Uc2=)0IC9qS)Znfugu%J8! zd)2CD;EzPDObYo;&al`T)xq);d}Lm506Tw&vPRah^wbLx^{&BqT(>5d3(0s`S=tqo z*{ov*ts+)IQmHohPQe9vGiZ=)Jbdw*br=_#C)^BfN6;`ax~G6PdKXfk3) zArvxfM^#^kvn=yw@0;HE+(@WrZx&fVlR9ptQ7=WUrCk(l^aOcTFKf0qU|3{5hX7_e z6>9}}N4JPQqYZ;!s|R+fY#hdkCMAlTH9k<|u)6JIiQh zl7|bKX2$i{8eC=U#ZJ({{=2+XRF}X32O3sCOW7(O$H`G>G|nM8(I5t?CsVBSC}~dL z()+uzyG8PdB+Y)7*qScl%e)Wg#ZoL+NhUfz+Do38YQ3 z8#OE|pBs-Wxjwk+6o;+8B@?@isC(`-EP%aPbbZXdtU7crLBRuLwx>O_R&hu8@WntL z1(4x)ob=?lcO@@6aGUItZywj&_#9~iX))^Z-6(aF_Rd=fnv8nF+na`pxJ&}xSxF3t z%R9;|uJlE*fPdi3XX9qj8`@hxcyNY>`>>?V!}Q|@4s*jL5_;5kEdc{%I+YLx{bJHk zgzKA0zI!q?84t7U%iWeYi`q6ZxD~FNynIe;T4(6+YA6a5p2tN!E}2z+p;2yr8UkOh zAD;9ycC^&{)(9zz^DCpY(FvYTNAI~1mOw5NQ@`V$Lrj)Ofe-HNXtWRut{p;rxw3y$ z`UpLd4vh3hxtiWj-JGPLgQLQHLYK_KQ)`G1YE(;5K|O?L z3%o>hX#IuVS{*F)ZAG+%HZ?U1q5c7M*(iQ0L8nW`+8^&k18hAp2E}guEJxl3+}g5m#zw(oZ0pu>1KyA&a_kX7V1PH z9uV*M{1NwYqVGRuVEyYPk83C-@OA{4s2}P9&*VvapHZU5JiaE#Hm@sZy?Sd z$>+?&(p&gEIcWpVale>dScr9;$*VcC&AH%7%!EyU$WPts*j(Ehgl59l3r@US|B##? z&tT-4D2XO+e_@+w9v5!iieHjCn(mM)NNOQqDux9<|M|mf_U+Obq~J^1dm!I)6ykMBjk^H4`4QCf#csAglYP=eI!GRBj3KF+_(J5d zmyTvMP0lg5<<)Cfc2}0iD-GV1IsNtmn7V?t9vc5kzW9)qcl(6!*HQ2I@=xL7KSHzL zeyV&H?tfP!_{S)Kfv9v}3Zj)_b-fStI9mK4ZnR|0+VR%0BN3X-G+)>AgTyBrF>-}j-*Z~ILkPkZ}bF$BrE(4PYU66fCu zbr#;E>im@o$HxFsG_}gQV5QoS4$2*`Lh6F-j!e~v!Xa&}C*h`okYR)ZldV(vqU-lR z0;eYx6#jVx39B9GA6Yg;DE&svYGXQDG#qbdoBSIZ))5)%%fS3O{2m$9EzUqN;STM} zcS}N)oon~C8d$>l5?u%y1PrdySuwVx)lVZQ@SOjyZ>{= z?|c5w=V07%26*?`v39IE=UUqVYD_@}JqNy;n8Il~JybZL-qQXbSPK^>Zi}Fh69Iei zNmEKpCa0oQ_6@-N`vf@%n=i2f^}|Ir^nPZ~8Pt zP?NmcVx}Khfvp}ldRF)wpp@f-yxJivoy^t5!EuWp$znkH4TmDDHk-Q)M;;BgT;;$* zJZF4U{ka4)23K7pbF-fImO|0Ievsr#5y9P@`*L%l z-kf3+9;)N$+~=|HQfmY*ed5`)ZOy0$kf?1>1DAex)Tj{jWa;_r`T4!uS7S!0-^gds zM{lG=*e@|3ZQt4^^%^A|zc<|~l7ggH=CH*b52F++gEqk&`kPx3AXEVln4JWyAU_Qi zcf2w8t$WbQ7udHtESo+|;MBQe5T(Cg`->?1{ftDR3##?;RzPe<(h7s_s0d()!bf`k zc_huY|9>w38KLFF0TvCHGNYYbbk$}iSF|DbA zQn2i+IWqyRu#1BKHHihC1Lw21k&*;e{}|_gI+hSQi0z;@=$a-)Lf=Nk60if4lJ>KF zx?);Q?a()0U=x>W8_+4~tC;$Y>IlwART_WK#y>ij5(WG~uj}a8i1C|^_)5d*P&!R2 z#a+@!j--1KP(p3Ddt%7R=MWbE1HMU<0{K5j^XYk%1lliBP>TZAwnxLg*-q9yNFRmT zR)4#sfl{`N!BsS-C+NBVf2#aX0ol;bj769DqpyWyy_X_NX+Ep6I8ZRHvbe92j8TXL zsz#4j2qgNPfK$gpl5|D;L16q{gfisaF-7KWr6T-urTn^YJ^B8ap#_%yP~2=3e4qLB z{56KYtD|lPqnl*F#;mM};jI3T)+>U8G3p4sdw8!JRBgO#iTjQw3k`QRxe!!PQ`KpdR;GhbR9gskIP6 zoW?3&q#A9A0TaPOO8L)PnnO1F{q5wmnxK|e(%tqN`MVPSCkwWJ?!O8L@40u~`dZuqjijUb z4;;I@MOhaJIlVWnkNF$6l)nuRNxYMouHG1Xd%R@aM-htrE++TMMmj34T$a2n%v>C? z*Y#`wY39=yBZUa0!VcRAi+RTq@<2fTrqo`eR$U2Nj!n`cLq*^vMfIUEACMmt!J<=- z+i&uAb-`94ip_a|VugQo(1vg4&Bwd7k-o1XJ$>v1A#;?!fIbm$)_NA;f=z7zSbmmL8|6WWzAgLFEezbcUv1 zFM3&8Z@$AR$)UCdiU?jg{?5%n!6(eE=P$3aHEF8rIw9zbT_< zKCLLwLAS845Vp2C`VNwhTkPa$`xaKyH-Pr|N$9-_^vTYqJbgJ*FCus#SCKRJSMR)APQlba2(yOSr> zJKDL`TqfqQr^6q5i8tF35i#cmWCo7!rOPV2|5zCwzSsA(*a^szN9iM_=wE)@AhD0~ z-;t29PSQ?>iV=d#_!50XRgwo4%hC!jB0|O;sPVA^Fc?c1O{byAV4cEDS8(3DZAAb+ zRc}DheF^Cb?W0fU8P1nl|FPn(cZ)?&jyK(Ih#O1np^%~@i=QV(-1>_9Zf{@2euYlx z%xpId{j8p#Loolu4{JIC;@3WqRfuejO|q9P%J z|H2xZ&pZf!2)I_mei3xHhSf4T*IrnqytKp5zB9>3kMN~OYhnk7^1}Uw#h8mlHz)P% zxn;Ly-?MbMk*Rwfk9%6)`Hgvuv~t@)^s_E8)SV9cM|$nYQ4-nlZ)$e&%h+6ZqYx&! zFU9seFCWk4v3abKhSK>n)zuRwoE{H(?jL?Y;b%`zv(4E>rc3y-eMq48AxLA)0KlT1 z*?X~xBxLD2R|}|f%OXJG2B>fNrInXew9ewwUrhM4Amk#F)90%2X};Oj@K+~DlUU|6 znP8#OXWz~pq~o`O5`j)6ybW0oh8)A9yT+-zU03NL&jOgRYd^_;pokndF?z;*}TzTe{N}ar{)= zW!&INT346vXJ9>)qXaK6FQ05t@pXKx-LslLT)yc|t{WVlAG5M*(YSBmOh{|pndvBG z%oQ8^f{`ve-t@@tTXp1TlA{pIx78fi%#>w2dzKo>&(?c4;nu7Gr8`E zHyD2odT&3QeY;nKQS|i3#SN zRj;9GExz>j7|Xj;rRJ4VoQbH1^RqS`&#VU;HCdJ7W8V8+_Ys<n#^Q*0K;QVS<>1492K=lz8Xt6O(dK#VV z7_8+<{ifZM&~tP6_F2#Q^6ldeeo4v1Pov&o_euhjGP$A%6X!a-4_~j&+zv+iMu~jS zZl_c<-^9mPw>kiEPeDemxV9_pEKW<{b2fqHJL#8vlgw`#j}tV)3iGMDstt$Kn>TW- ztZ7d2P>NeGuPpu zH&Q#(6AuLry_(}Z&l6wQ*&A?Mw7*Bazw0jFo^rw%cU(^~`BAR7jKR;N&)j_GL@=S> zF)KYXyR888W$7iWXj6v*Gxe3TktxkvM#~<)n@4;^?S@i1orx6jvv*2mh05{PYDb&u zb06$c7jGwK;fpRJ=u%pYY0EA4vuY!jR4>=*xr_4#OAl$4YU`;?e$d`bq@pJ7HYYA= zNEH%P6SW;5qwH$wNOPO>2_ypO#Qx41^-=*U0%m??hu47WobiWPzRY@S+Iw{}!(xW z^f92bka4F%B4trGIW#2l)lj+9E@W?(55%^{k95Iz@2ZDTIbR=lcj#mTL%W+#=ZVut zVArU<+id^{Id}5Z)xZ~7vy{?}dp4PCC>BI9VlJPWe+l0LNF#ciA zsdBNXx|)6e)1Zv~-r-@kG~1F~efea6%nq}m347Yv5kkgdSFLEPzQE(d(rXYzNv%6X3BH> zGMocE?fV;wtujT?f7*{3sAv;dHQYODAa`6j-y~yfN3=Xh&D@;@np*i%-E6rO?w!<| zY3wwoT8=$}@m*~97%zJ`QY<~L_ZMas@;WX?2f*Wtrw<&65y<8g^olMPR?sCJ>3S_m zMQ@tE3U;c%xo(G7bc>KuW`1)Ab@>Ghw6^IC)ikaITy9&<9F`c#RXwJZz_u0k4Qn7| zb#(A#4)e0H&FlHh3H2oMi*w0N-J{2+iSy#Synp3!xKUmA!_l`mw>I?Pwohs?&%gkO z^`fL;aQM5X&S?gryHtA9$BP9=LcHo3>l7xB=UTZ5&DLxBP^|0g7+#izQ|0L_hR!7E zZX1}*YWu7;T}RrkA`By{F1lKU;|&>9Q_DJ!?iTnKOvIlOgV@qe43Z_{&JH!iLK8lb zlZh*&tUl%7$x?!L&c^C+`yo>=rpHpi@Mc0r7y9OE8E)#Pp-OSI2@^FA_Dhqq?eYxa zxLn>n`9t-(_6r(-4M3v>Te6OebgeIbO+es@HjgTxQ$(+#Z5JyMa!0^AIWuvDEOZ_g z4SS9Q+#;8eQ=I7`n0SB0J(+cJUZjkZq5SU4$@J1z;i1bxNA5zO3Pz5o+q3K` zl^eh^svcj3$xW4zw}M5SxOf5cl0dccu5K5LV4+=osBU*#Q?>`{bNdM5f(OUq#jJhv zYIjmZwf@cay_hOHh0+$iWxiWQ5RjMgVf`a2TS2AHeZ)l<8|RMi?^B*I%u%FuA%AZ= zwqyWywh09iq=(>pN0I%m$QM%-5Z0~+a%PmayW_!(zT!giHPnbUm)spLB9q0#+$M{5 zI+6!#N2bGR{w%g1ZoC?Bo4sEnQNn>sCejra6wH$6eMi`i?t9G6EbES}Va1Cq!6G

AP`tHjWmUUXI)c&)>&Os}?j&-q|Ia$hHBp*hee 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 literal 0 HcmV?d00001 From e06a8bd7ac941357bb8ed1052b194d774f9e5ed3 Mon Sep 17 00:00:00 2001 From: Bogdan Carpusor Date: Fri, 3 Oct 2025 15:08:52 +0300 Subject: [PATCH 3/3] Update references --- docs/references/plugins/captcha-react.mdx | 4 +- docs/references/plugins/introduction.mdx | 15 + .../plugins/opentelemetry-nodejs.mdx | 14 +- .../references/plugins/profile-base-react.mdx | 394 +++++++++ .../plugins/profile-details-nodejs.mdx | 388 +++++++++ .../plugins/profile-details-react.mdx | 754 ++++++++++++++++++ .../plugins/progressive-profiling-nodejs.mdx | 22 +- .../plugins/progressive-profiling-react.mdx | 10 +- .../typedoc-text-replace-plugin.mjs | 12 + 9 files changed, 1588 insertions(+), 25 deletions(-) create mode 100644 docs/references/plugins/profile-base-react.mdx create mode 100644 docs/references/plugins/profile-details-nodejs.mdx create mode 100644 docs/references/plugins/profile-details-react.mdx diff --git a/docs/references/plugins/captcha-react.mdx b/docs/references/plugins/captcha-react.mdx index 7b1d8fff9..fb08e2607 100644 --- a/docs/references/plugins/captcha-react.mdx +++ b/docs/references/plugins/captcha-react.mdx @@ -489,7 +489,7 @@ Defined in: [supertokens-plugins/packages/captcha-react/src/types.ts:82](https:/ ### EmailPasswordCaptchaPreAndPostAPIHookActions ```ts -type EmailPasswordCaptchaPreAndPostAPIHookActions = Extract; +type PasswordlessCaptchaPreAndPostAPIHookActions = Extract; ``` Defined in: [supertokens-plugins/packages/captcha-react/src/types.ts:66](https://github.com/supertokens/supertokens-plugins/blob/main/packages/captcha-react/src/types.ts#L66) diff --git a/docs/references/plugins/introduction.mdx b/docs/references/plugins/introduction.mdx index 57837a6ed..ec35ec9ec 100644 --- a/docs/references/plugins/introduction.mdx +++ b/docs/references/plugins/introduction.mdx @@ -60,6 +60,21 @@ You can check the documentation reference pages for a high level overview of the opentelemetry-nodejs + + + profile-base-react + + + + + profile-details-nodejs + + + + + profile-details-react + + progressive-profiling-nodejs diff --git a/docs/references/plugins/opentelemetry-nodejs.mdx b/docs/references/plugins/opentelemetry-nodejs.mdx index c0cf28e72..c58aecaea 100644 --- a/docs/references/plugins/opentelemetry-nodejs.mdx +++ b/docs/references/plugins/opentelemetry-nodejs.mdx @@ -39,10 +39,10 @@ Defined in: [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts | `getTracer` | (`this`: [`PluginImpl`](#pluginimpl)) => `Tracer` | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:34](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L34) | | `getTracingHeadersForCoreCall` | (`this`: [`PluginImpl`](#pluginimpl), `req`: `HttpRequest`, `userContext`: `UserContext`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:62](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L62) | | `startActiveSpan` | \<`T`\>(`this`: [`PluginImpl`](#pluginimpl), `tracer`: `Tracer`, `spanName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>, `fn`: (`span`: `Span`) => `T`) => `T` | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:24](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L24) | -| `startSpan` | (`this`: [`PluginImpl`](#pluginimpl), `tracer`: `Tracer`, `spanName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => \{ `addEvent`: (`eventName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `AttributeValue`\>) => `void`; `end`: () => `void`; `setAttributes`: (`attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `AttributeValue`\>) => `void`; `setStatus`: (`status`: `SpanStatus`) => `void`; \} | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L10) | -| `transformErrorToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `error`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `AttributeValue`\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:50](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L50) | -| `transformInputToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `input`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `AttributeValue`\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:38](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L38) | -| `transformResultToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `input`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `AttributeValue`\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:44](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L44) | +| `startSpan` | (`this`: [`PluginImpl`](#pluginimpl), `tracer`: `Tracer`, `spanName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => \{ `addEvent`: (`eventName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\>) => `void`; `end`: () => `void`; `setAttributes`: (`attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\>) => `void`; `setStatus`: (`status`: `SpanStatus`) => `void`; \} | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L10) | +| `transformErrorToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `error`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:50](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L50) | +| `transformInputToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `input`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:38](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L38) | +| `transformResultToAttributes` | (`this`: [`PluginImpl`](#pluginimpl), `input`: `unknown`) => [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\> | [supertokens-plugins/packages/opentelemetry-nodejs/src/pluginImpl.ts:44](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/pluginImpl.ts#L44) | ## Type Aliases @@ -66,7 +66,7 @@ type OTSpan = { addEvent: (eventName: string, attributes: Record) => void; end: () => void; setAttributes: (attributes: Record) => void; - setStatus: (status: SpanStatus) => void; + setStatus: (status: BaseFormSection) => void; }; ``` @@ -79,7 +79,7 @@ Defined in: [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:5](h | `addEvent` | (`eventName`: `string`, `attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `void` | [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/types.ts#L7) | | `end` | () => `void` | [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/types.ts#L6) | | `setAttributes` | (`attributes`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `void` | [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/types.ts#L8) | -| `setStatus` | (`status`: `SpanStatus`) => `void` | [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/types.ts#L9) | +| `setStatus` | (`status`: [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)) => `void` | [supertokens-plugins/packages/opentelemetry-nodejs/src/types.ts:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/types.ts#L9) | *** @@ -117,7 +117,7 @@ Defined in: [supertokens-plugins/packages/opentelemetry-nodejs/src/index.ts:5](h | Name | Type | Description | Defined in | | ------ | ------ | ------ | ------ | -| `init` | `any` | [supertokens-plugins/packages/opentelemetry-nodejs/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/index.ts#L5) | +| `init` | `any` | import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api'; diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG); | [supertokens-plugins/packages/opentelemetry-nodejs/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/opentelemetry-nodejs/src/index.ts#L5) | *** diff --git a/docs/references/plugins/profile-base-react.mdx b/docs/references/plugins/profile-base-react.mdx new file mode 100644 index 000000000..b1812eb89 --- /dev/null +++ b/docs/references/plugins/profile-base-react.mdx @@ -0,0 +1,394 @@ +--- +page_type: plugin-reference +--- + +# `@supertokens-plugins/profile-base-react` + +## Type Aliases + +### RegisterSection() + +```ts +type RegisterSection = (sectionBuilder: () => Promise

) => void; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:24](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L24) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `sectionBuilder` | () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`Section`](#section) \| [`Section`](#section)[]\> | + +#### Returns + +`void` + +*** + +### Section + +```ts +type Section = Omit & { + order?: number; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:21](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L21) + +#### Type Declaration + +| Name | Type | Defined in | +| ------ | ------ | ------ | +| `order?` | `number` | [supertokens-plugins/packages/profile-base-react/src/types.ts:22](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L22) | + +*** + +### SuperTokensPluginProfileConfig + +```ts +type SuperTokensPluginProfileConfig = { + profilePagePath?: string; + sections?: SuperTokensPluginProfileSection[]; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L5) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `profilePagePath?` | `string` | [supertokens-plugins/packages/profile-base-react/src/types.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L6) | +| `sections?` | [`SuperTokensPluginProfileSection`](#supertokenspluginprofilesection)[] | [supertokens-plugins/packages/profile-base-react/src/types.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L7) | + +*** + +### SuperTokensPluginProfileNormalisedConfig + +```ts +type SuperTokensPluginProfileNormalisedConfig = Required; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L10) + +*** + +### SuperTokensPluginProfileSection + +```ts +type SuperTokensPluginProfileSection = { + component: () => React.JSX.Element; + icon?: () => React.JSX.Element; + id: string; + order: number; + title: string; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:12](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L12) + +#### Properties + +| Property | Type | Description | Defined in | +| ------ | ------ | ------ | ------ | +| `component` | () => `React.JSX.Element` | - | [supertokens-plugins/packages/profile-base-react/src/types.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L18) | +| `icon?` | () => `React.JSX.Element` | - | [supertokens-plugins/packages/profile-base-react/src/types.ts:17](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L17) | +| `id` | `string` | - | [supertokens-plugins/packages/profile-base-react/src/types.ts:13](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L13) | +| `order` | `number` | this is needed to allow controlling the order of the sections, because in some cases the registration order is not the same as the order of the sections because of async initializations | [supertokens-plugins/packages/profile-base-react/src/types.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L16) | +| `title` | `string` | - | [supertokens-plugins/packages/profile-base-react/src/types.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L14) | + +*** + +### TranslationKeys + +```ts +type TranslationKeys = keyof typeof defaultTranslations["en"]; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/types.ts:26](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/types.ts#L26) + +## Variables + +### default + +```ts +default: { + init: any; + PLUGIN_ID: string; + usePluginContext: any; + UserProfileWrapper: () => Element; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/index.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/index.ts#L6) + +#### Type Declaration + +| Name | Type | Defined in | +| ------ | ------ | ------ | +| `init` | `any` | [supertokens-plugins/packages/profile-base-react/src/index.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/index.ts#L6) | +| `PLUGIN_ID` | `string` | [supertokens-plugins/packages/profile-base-react/src/index.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/index.ts#L6) | +| `usePluginContext` | `any` | [supertokens-plugins/packages/profile-base-react/src/index.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/index.ts#L6) | +| `UserProfileWrapper()` | () => `Element` | [supertokens-plugins/packages/profile-base-react/src/index.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/index.ts#L6) | + +*** + +### default + +```ts +const default: Meta<(__namedParameters: { + sections: { + component: () => Element; + id: string; + title: string | Element; + }[]; +}) => Element>; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx#L9) + +More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export + +*** + +### default + +```ts +const default: Meta<(__namedParameters: { + sections: { + component: () => Element; + id: string; + title: string | Element; + }[]; +}) => Element>; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx#L7) + +More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export + +*** + +### DEFAULT\_PROFILE\_PAGE\_PATH + +```ts +const DEFAULT_PROFILE_PAGE_PATH: "/user/profile" = "/user/profile"; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/constants.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/constants.ts#L6) + +*** + +### defaultTranslations + +```ts +const defaultTranslations: { + en: { + PL_PB_USER_PROFILE: "User Profile"; + }; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/translations.ts:1](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/translations.ts#L1) + +#### Type Declaration + +| Name | Type | Default value | Defined in | +| ------ | ------ | ------ | ------ | +| `en` | \{ `PL_PB_USER_PROFILE`: `"User Profile"`; \} | - | [supertokens-plugins/packages/profile-base-react/src/translations.ts:2](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/translations.ts#L2) | +| `en.PL_PB_USER_PROFILE` | `"User Profile"` | `"User Profile"` | [supertokens-plugins/packages/profile-base-react/src/translations.ts:3](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/translations.ts#L3) | + +*** + +### enableDebugLogs + +```ts +enableDebugLogs: any; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/logger.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/logger.ts#L5) + +*** + +### init + +```ts +const init: any; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/plugin.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/plugin.ts#L27) + +*** + +### logDebugMessage + +```ts +logDebugMessage: any; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/logger.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/logger.ts#L5) + +*** + +### PLUGIN\_ID + +```ts +const PLUGIN_ID: "supertokens-plugin-profile-base" = "supertokens-plugin-profile-base"; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/constants.ts:1](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/constants.ts#L1) + +*** + +### PLUGIN\_VERSION + +```ts +const PLUGIN_VERSION: "0.0.1" = "0.0.1"; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/constants.ts:2](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/constants.ts#L2) + +*** + +### SECTION\_ORDER\_INCREMENT + +```ts +const SECTION_ORDER_INCREMENT: 1000 = 1000; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/constants.ts:4](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/constants.ts#L4) + +*** + +### usePluginContext + +```ts +usePluginContext: any; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/plugin.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/plugin.ts#L18) + +*** + +### WithoutSections + +```ts +const WithoutSections: Story; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx:28](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx#L28) + +More on writing stories with args: https://storybook.js.org/docs/writing-stories/args + +*** + +### WithoutSections + +```ts +const WithoutSections: Story; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx:22](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx#L22) + +More on writing stories with args: https://storybook.js.org/docs/writing-stories/args + +*** + +### WithSections + +```ts +const WithSections: Story; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx:34](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections-in-card.stories.tsx#L34) + +*** + +### WithSections + +```ts +const WithSections: Story; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx:28](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections.stories.tsx#L28) + +## Functions + +### ProfilePageWrapper() + +```ts +function ProfilePageWrapper(__namedParameters: { + children: ReactNode; + style?: CSSProperties; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/page-wrapper/page-wrapper.tsx:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/page-wrapper/page-wrapper.tsx#L8) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `children`: `ReactNode`; `style?`: `CSSProperties`; \} | +| `__namedParameters.children` | `ReactNode` | +| `__namedParameters.style?` | `CSSProperties` | + +#### Returns + +`Element` + +*** + +### ProfileSections() + +```ts +function ProfileSections(__namedParameters: { + sections: { + component: () => Element; + id: string; + title: string | Element; + }[]; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/components/profile-sections/profile-sections.tsx:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/components/profile-sections/profile-sections.tsx#L9) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `sections`: \{ `component`: () => `Element`; `id`: `string`; `title`: `string` \| `Element`; \}[]; \} | +| `__namedParameters.sections` | \{ `component`: () => `Element`; `id`: `string`; `title`: `string` \| `Element`; \}[] | + +#### Returns + +`Element` + +*** + +### UserProfilePage() + +```ts +function UserProfilePage(): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/user-profile-page.tsx:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/user-profile-page.tsx#L9) + +#### Returns + +`Element` + +*** + +### UserProfileWrapper() + +```ts +function UserProfileWrapper(): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-base-react/src/user-profile-wrapper.tsx:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-base-react/src/user-profile-wrapper.tsx#L8) + +#### Returns + +`Element` diff --git a/docs/references/plugins/profile-details-nodejs.mdx b/docs/references/plugins/profile-details-nodejs.mdx new file mode 100644 index 000000000..2365495d8 --- /dev/null +++ b/docs/references/plugins/profile-details-nodejs.mdx @@ -0,0 +1,388 @@ +--- +page_type: plugin-reference +--- + +# `@supertokens-plugins/profile-details-nodejs` + +## Classes + +### Implementation + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:13](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L13) + +#### Constructors + +##### Constructor + +```ts +new Implementation(pluginConfig: SuperTokensPluginProfileDetailsNormalisedConfig): Implementation; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:39](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L39) + +###### Parameters + +| Parameter | Type | +| ------ | ------ | +| `pluginConfig` | [`SuperTokensPluginProfileDetailsNormalisedConfig`](#supertokenspluginprofiledetailsnormalisedconfig) | + +###### Returns + +[`Implementation`](#implementation) + +#### Properties + +| Property | Modifier | Type | Default value | Defined in | +| ------ | ------ | ------ | ------ | ------ | +| `buildFormData` | `public` | (`this`: [`Implementation`](#implementation), `profile`: `BaseProfile`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `BaseFormFieldPayload`[] | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:172](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L172) | +| `buildProfile` | `public` | (`this`: [`Implementation`](#implementation), `formData`: `BaseFormFieldPayload`[], `existingProfile`: `BaseProfile`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `BaseProfile` | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:153](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L153) | +| `defaultStorageHandlerGet` | `public` | (`this`: [`Implementation`](#implementation), `userId`: `string`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](#baseformsection)\>; \}\> | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:43](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L43) | +| `defaultStorageHandlerSet` | `public` | (`this`: [`Implementation`](#implementation), `userId`: `string`, `payload`: \{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`BaseFormSection`](#baseformsection)\>; \}, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:57](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L57) | +| `getFieldValueFromThirdPartyUserInfo` | `public` | (`this`: [`Implementation`](#implementation), `providerId`: `string`, `field`: `any`, `rawUserInfoFromProvider`: `any`, `profile`: `BaseProfile`) => `BaseProfile` | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:84](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L84) | +| `getPluginFormFields` | `public` | (`this`: [`Implementation`](#implementation), `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `any`[] | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:72](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L72) | +| `getProfile` | `public` | (`this`: [`Implementation`](#implementation), `userId`: `string`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`BaseProfile`\> | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:114](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L114) | +| `getSections` | `public` | (`this`: [`Implementation`](#implementation), `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `BaseFormSection`[] | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:185](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L185) | +| `sections` | `protected` | `BaseFormSection`[] | `[]` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L16) | +| `updateProfile` | `public` | (`this`: [`Implementation`](#implementation), `userId`: `string`, `payload`: `BaseFormFieldPayload`[], `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:130](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L130) | +| `instance` | `static` | [`Implementation`](#implementation) | `undefined` | [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L14) | + +#### Methods + +##### getInstanceOrThrow() + +```ts +static getInstanceOrThrow(): Implementation; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L27) + +###### Returns + +[`Implementation`](#implementation) + +##### init() + +```ts +static init(pluginConfig: SuperTokensPluginProfileDetailsNormalisedConfig): Implementation; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L18) + +###### Parameters + +| Parameter | Type | +| ------ | ------ | +| `pluginConfig` | [`SuperTokensPluginProfileDetailsNormalisedConfig`](#supertokenspluginprofiledetailsnormalisedconfig) | + +###### Returns + +[`Implementation`](#implementation) + +##### reset() + +```ts +static reset(): void; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/implementation.ts:35](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/implementation.ts#L35) + +###### Returns + +`void` + +## Type Aliases + +### BaseFormSection + +```ts +type BaseFormSection = any; +``` + +*** + +### SuperTokensPluginProfileDetailsConfig + +```ts +type SuperTokensPluginProfileDetailsConfig = + | { + registerSectionsForProgressiveProfiling?: boolean; + sections?: BaseFormSection[]; +} + | undefined; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:3](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L3) + +*** + +### SuperTokensPluginProfileDetailsImplementation + +```ts +type SuperTokensPluginProfileDetailsImplementation = { + thirdPartyFieldMap: (originalImplementation: ThirdPartyFieldMap) => ThirdPartyFieldMap; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L10) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `thirdPartyFieldMap` | (`originalImplementation`: [`ThirdPartyFieldMap`](#thirdpartyfieldmap-1)) => [`ThirdPartyFieldMap`](#thirdpartyfieldmap-1) | [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L11) | + +*** + +### SuperTokensPluginProfileDetailsNormalisedConfig + +```ts +type SuperTokensPluginProfileDetailsNormalisedConfig = { + registerSectionsForProgressiveProfiling: boolean; + sections: BaseFormSection[]; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L14) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `registerSectionsForProgressiveProfiling` | `boolean` | [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L16) | +| `sections` | [`BaseFormSection`](#baseformsection)[] | [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:15](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L15) | + +*** + +### ThirdPartyFieldMap() + +```ts +type ThirdPartyFieldMap = (providerId: string, field: BaseFormSection & { + sectionId: string; +}, rawUserInfoFromProvider: any, profile: BaseFormSection) => BaseFormSection[string]; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/types.ts:19](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/types.ts#L19) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `providerId` | `string` | +| `field` | [`BaseFormSection`](#baseformsection) & \{ `sectionId`: `string`; \} | +| `rawUserInfoFromProvider` | `any` | +| `profile` | [`BaseFormSection`](#baseformsection) | + +#### Returns + +[`BaseFormSection`](#baseformsection)\[`string`\] + +## Variables + +### default + +```ts +default: { + getProfile: (userId: string, session: SessionContainerInterface, userContext?: Record) => Promise; + getSections: (session: SessionContainerInterface, userContext?: Record) => BaseFormSection[]; + init: any; + PLUGIN_ID: string; + PLUGIN_VERSION: string; + updateProfile: (userId: string, profile: BaseFormFieldPayload[], session: SessionContainerInterface, userContext?: Record) => Promise; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) + +#### Type Declaration + +| Name | Type | Defined in | +| ------ | ------ | ------ | +| `getProfile()` | (`userId`: `string`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`BaseProfile`\> | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | +| `getSections()` | (`session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => `BaseFormSection`[] | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | +| `init` | `any` | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | +| `PLUGIN_ID` | `string` | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | +| `PLUGIN_VERSION` | `string` | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | +| `updateProfile()` | (`userId`: `string`, `profile`: `BaseFormFieldPayload`[], `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L27) | + +*** + +### DEFAULT\_REGISTER\_SECTIONS\_FOR\_PROGRESSIVE\_PROFILING + +```ts +const DEFAULT_REGISTER_SECTIONS_FOR_PROGRESSIVE_PROFILING: true = true; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:12](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L12) + +*** + +### enableDebugLogs + +```ts +enableDebugLogs: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/logger.ts:4](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/logger.ts#L4) + +*** + +### HANDLE\_BASE\_PATH + +```ts +const HANDLE_BASE_PATH: "/plugin/supertokens-plugin-profile-details"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L5) + +*** + +### init + +```ts +const init: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/plugin.ts:20](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/plugin.ts#L20) + +*** + +### logDebugMessage + +```ts +logDebugMessage: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/logger.ts:4](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/logger.ts#L4) + +*** + +### METADATA\_KEY + +```ts +const METADATA_KEY: "supertokens-plugin-profile-details"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L7) + +*** + +### METADATA\_PROFILE\_KEY + +```ts +const METADATA_PROFILE_KEY: "st-profile" = "st-profile"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L8) + +*** + +### PLUGIN\_ID + +```ts +const PLUGIN_ID: "supertokens-plugin-profile-details" = "supertokens-plugin-profile-details"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:1](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L1) + +*** + +### PLUGIN\_SDK\_VERSION + +```ts +const PLUGIN_SDK_VERSION: string[]; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:3](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L3) + +*** + +### PLUGIN\_VERSION + +```ts +const PLUGIN_VERSION: "0.0.1" = "0.0.1"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:2](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L2) + +*** + +### SUPERTOKENS\_PLUGIN\_PROGRESSIVE\_PROFILING\_ID + +```ts +const SUPERTOKENS_PLUGIN_PROGRESSIVE_PROFILING_ID: "supertokens-plugin-progressive-profiling" = "supertokens-plugin-progressive-profiling"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/constants.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/constants.ts#L10) + +## Functions + +### getProfile() + +```ts +function getProfile( + userId: string, + session: SessionContainerInterface, +userContext?: Record): Promise; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L10) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `userId` | `string` | +| `session` | `SessionContainerInterface` | +| `userContext?` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\> | + +#### Returns + +[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`BaseProfile`\> + +*** + +### getSections() + +```ts +function getSections(session: SessionContainerInterface, userContext?: Record): BaseFormSection[]; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:23](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L23) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `session` | `SessionContainerInterface` | +| `userContext?` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\> | + +#### Returns + +`BaseFormSection`[] + +*** + +### updateProfile() + +```ts +function updateProfile( + userId: string, + profile: BaseFormFieldPayload[], + session: SessionContainerInterface, +userContext?: Record): Promise; +``` + +Defined in: [supertokens-plugins/packages/profile-details-nodejs/src/index.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-nodejs/src/index.ts#L14) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `userId` | `string` | +| `profile` | `BaseFormFieldPayload`[] | +| `session` | `SessionContainerInterface` | +| `userContext?` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\> | + +#### Returns + +[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> diff --git a/docs/references/plugins/profile-details-react.mdx b/docs/references/plugins/profile-details-react.mdx new file mode 100644 index 000000000..7d8463ecc --- /dev/null +++ b/docs/references/plugins/profile-details-react.mdx @@ -0,0 +1,754 @@ +--- +page_type: plugin-reference +--- + +# `@supertokens-plugins/profile-details-react` + +## Type Aliases + +### AccountDetails + +```ts +type AccountDetails = { + connectedAccounts: ConnectedAccount[]; + emails: string[]; + phoneNumbers: string[]; + timeJoined: number; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:24](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L24) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `connectedAccounts` | [`ConnectedAccount`](#connectedaccount)[] | [supertokens-plugins/packages/profile-details-react/src/types.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L27) | +| `emails` | `string`[] | [supertokens-plugins/packages/profile-details-react/src/types.ts:25](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L25) | +| `phoneNumbers` | `string`[] | [supertokens-plugins/packages/profile-details-react/src/types.ts:26](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L26) | +| `timeJoined` | `number` | [supertokens-plugins/packages/profile-details-react/src/types.ts:28](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L28) | + +*** + +### ConnectedAccount + +```ts +type ConnectedAccount = { + email: string; + provider: string; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:31](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L31) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `email` | `string` | [supertokens-plugins/packages/profile-details-react/src/types.ts:33](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L33) | +| `provider` | `string` | [supertokens-plugins/packages/profile-details-react/src/types.ts:32](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L32) | + +*** + +### FieldViewComponentProps\ + +```ts +type FieldViewComponentProps = { + className?: string; + options?: BaseFormSection["options"]; + value: T; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:15](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L15) + +#### Type Parameters + +| Type Parameter | Default type | +| ------ | ------ | +| `T` *extends* [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection) | [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection) | + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `className?` | `string` | [supertokens-plugins/packages/profile-details-react/src/types.ts:17](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L17) | +| `options?` | [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\[`"options"`\] | [supertokens-plugins/packages/profile-details-react/src/types.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L18) | +| `value` | `T` | [supertokens-plugins/packages/profile-details-react/src/types.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L16) | + +*** + +### FormInputComponentMap + +```ts +type FormInputComponentMap = Record>>; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:20](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L20) + +*** + +### FormViewComponentMap + +```ts +type FormViewComponentMap = Omit>>, "password">; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:21](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L21) + +*** + +### ProfileDetails + +```ts +type ProfileDetails = Record; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:23](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L23) + +*** + +### SuperTokensPluginProfileDetailsConfig + +```ts +type SuperTokensPluginProfileDetailsConfig = undefined; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L6) + +*** + +### SuperTokensPluginProfileDetailsImplementation + +```ts +type SuperTokensPluginProfileDetailsImplementation = { + fieldInputComponentMap: (componentMap: FormInputComponentMap) => FormInputComponentMap; + fieldViewComponentMap: (componentMap: FormViewComponentMap) => FormViewComponentMap; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L9) + +#### Properties + +| Property | Type | Defined in | +| ------ | ------ | ------ | +| `fieldInputComponentMap` | (`componentMap`: [`FormInputComponentMap`](#forminputcomponentmap)) => [`FormInputComponentMap`](#forminputcomponentmap) | [supertokens-plugins/packages/profile-details-react/src/types.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L10) | +| `fieldViewComponentMap` | (`componentMap`: [`FormViewComponentMap`](#formviewcomponentmap)) => [`FormViewComponentMap`](#formviewcomponentmap) | [supertokens-plugins/packages/profile-details-react/src/types.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L11) | + +*** + +### SuperTokensPluginProfileDetailsNormalisedConfig + +```ts +type SuperTokensPluginProfileDetailsNormalisedConfig = undefined; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L7) + +*** + +### TranslationKeys + +```ts +type TranslationKeys = keyof typeof defaultTranslationsCommonDetails["en"]; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/types.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/types.ts#L14) + +## Variables + +### API\_PATH + +```ts +const API_PATH: "plugin/supertokens-plugin-profile-details"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/constants.ts:34](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/constants.ts#L34) + +*** + +### default + +```ts +default: { + init: any; + PLUGIN_ID: string; + PLUGIN_VERSION: string; + usePluginContext: any; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/index.ts#L5) + +#### Type Declaration + +| Name | Type | Defined in | +| ------ | ------ | ------ | +| `init` | `any` | [supertokens-plugins/packages/profile-details-react/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/index.ts#L5) | +| `PLUGIN_ID` | `string` | [supertokens-plugins/packages/profile-details-react/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/index.ts#L5) | +| `PLUGIN_VERSION` | `string` | [supertokens-plugins/packages/profile-details-react/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/index.ts#L5) | +| `usePluginContext` | `any` | [supertokens-plugins/packages/profile-details-react/src/index.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/index.ts#L5) | + +*** + +### defaultTranslationsCommonDetails + +```ts +const defaultTranslationsCommonDetails: { + en: { + PL_CD_DISABLED: "Disabled"; + PL_CD_ENABLED: "Enabled"; + PL_CD_IMAGE_ALT: "Preview"; + PL_CD_LOADING: "Loading..."; + PL_CD_NO: "No"; + PL_CD_NO_EMAIL: "No email"; + PL_CD_NO_IMAGE: "No image"; + PL_CD_NO_PHONE: "No phone"; + PL_CD_NO_URL: "No URL"; + PL_CD_NONE_SELECTED: "None selected"; + PL_CD_NOT_PROVIDED: "Not provided"; + PL_CD_SECTION_ACCOUNT_DESCRIPTION: "Here you can find all your account details that can be used for login."; + PL_CD_SECTION_ACCOUNT_EMAIL_NO_EMAILS: "No email addresse"; + PL_CD_SECTION_ACCOUNT_EMAILS: "Email addresses"; + PL_CD_SECTION_ACCOUNT_ERROR_FETCHING_DETAILS: "Error getting the profile"; + PL_CD_SECTION_ACCOUNT_LABEL: "Account"; + PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS: "Phone numbers"; + PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS_NO_PHONE_NUMBERS: "No phone number"; + PL_CD_SECTION_ACCOUNT_TIME_JOINED: "Join date"; + PL_CD_SECTION_ACCOUNT_TIME_JOINED_NO_TIME_JOINED: "No join date"; + PL_CD_SECTION_DETAILS_CANCEL_BUTTON: "Cancel"; + PL_CD_SECTION_DETAILS_EDIT_BUTTON: "Edit"; + PL_CD_SECTION_DETAILS_ERROR_FETCHING_DETAILS: "Error getting the profile"; + PL_CD_SECTION_DETAILS_SAVE_BUTTON: "Save"; + PL_CD_YES: "Yes"; + }; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/translations.ts:1](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L1) + +#### Type Declaration + +| Name | Type | Default value | Defined in | +| ------ | ------ | ------ | ------ | +| `en` | \{ `PL_CD_DISABLED`: `"Disabled"`; `PL_CD_ENABLED`: `"Enabled"`; `PL_CD_IMAGE_ALT`: `"Preview"`; `PL_CD_LOADING`: `"Loading..."`; `PL_CD_NO`: `"No"`; `PL_CD_NO_EMAIL`: `"No email"`; `PL_CD_NO_IMAGE`: `"No image"`; `PL_CD_NO_PHONE`: `"No phone"`; `PL_CD_NO_URL`: `"No URL"`; `PL_CD_NONE_SELECTED`: `"None selected"`; `PL_CD_NOT_PROVIDED`: `"Not provided"`; `PL_CD_SECTION_ACCOUNT_DESCRIPTION`: `"Here you can find all your account details that can be used for login."`; `PL_CD_SECTION_ACCOUNT_EMAIL_NO_EMAILS`: `"No email addresse"`; `PL_CD_SECTION_ACCOUNT_EMAILS`: `"Email addresses"`; `PL_CD_SECTION_ACCOUNT_ERROR_FETCHING_DETAILS`: `"Error getting the profile"`; `PL_CD_SECTION_ACCOUNT_LABEL`: `"Account"`; `PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS`: `"Phone numbers"`; `PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS_NO_PHONE_NUMBERS`: `"No phone number"`; `PL_CD_SECTION_ACCOUNT_TIME_JOINED`: `"Join date"`; `PL_CD_SECTION_ACCOUNT_TIME_JOINED_NO_TIME_JOINED`: `"No join date"`; `PL_CD_SECTION_DETAILS_CANCEL_BUTTON`: `"Cancel"`; `PL_CD_SECTION_DETAILS_EDIT_BUTTON`: `"Edit"`; `PL_CD_SECTION_DETAILS_ERROR_FETCHING_DETAILS`: `"Error getting the profile"`; `PL_CD_SECTION_DETAILS_SAVE_BUTTON`: `"Save"`; `PL_CD_YES`: `"Yes"`; \} | - | [supertokens-plugins/packages/profile-details-react/src/translations.ts:2](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L2) | +| `en.PL_CD_DISABLED` | `"Disabled"` | `"Disabled"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:9](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L9) | +| `en.PL_CD_ENABLED` | `"Enabled"` | `"Enabled"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L8) | +| `en.PL_CD_IMAGE_ALT` | `"Preview"` | `"Preview"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L10) | +| `en.PL_CD_LOADING` | `"Loading..."` | `"Loading..."` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:3](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L3) | +| `en.PL_CD_NO` | `"No"` | `"No"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L7) | +| `en.PL_CD_NO_EMAIL` | `"No email"` | `"No email"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:13](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L13) | +| `en.PL_CD_NO_IMAGE` | `"No image"` | `"No image"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L11) | +| `en.PL_CD_NO_PHONE` | `"No phone"` | `"No phone"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L14) | +| `en.PL_CD_NO_URL` | `"No URL"` | `"No URL"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:12](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L12) | +| `en.PL_CD_NONE_SELECTED` | `"None selected"` | `"None selected"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L5) | +| `en.PL_CD_NOT_PROVIDED` | `"Not provided"` | `"Not provided"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:4](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L4) | +| `en.PL_CD_SECTION_ACCOUNT_DESCRIPTION` | `"Here you can find all your account details that can be used for login."` | `"Here you can find all your account details that can be used for login."` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:22](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L22) | +| `en.PL_CD_SECTION_ACCOUNT_EMAIL_NO_EMAILS` | `"No email addresse"` | `"No email addresse"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:26](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L26) | +| `en.PL_CD_SECTION_ACCOUNT_EMAILS` | `"Email addresses"` | `"Email addresses"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:23](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L23) | +| `en.PL_CD_SECTION_ACCOUNT_ERROR_FETCHING_DETAILS` | `"Error getting the profile"` | `"Error getting the profile"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:29](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L29) | +| `en.PL_CD_SECTION_ACCOUNT_LABEL` | `"Account"` | `"Account"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:21](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L21) | +| `en.PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS` | `"Phone numbers"` | `"Phone numbers"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L27) | +| `en.PL_CD_SECTION_ACCOUNT_PHONE_NUMBERS_NO_PHONE_NUMBERS` | `"No phone number"` | `"No phone number"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:28](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L28) | +| `en.PL_CD_SECTION_ACCOUNT_TIME_JOINED` | `"Join date"` | `"Join date"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:24](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L24) | +| `en.PL_CD_SECTION_ACCOUNT_TIME_JOINED_NO_TIME_JOINED` | `"No join date"` | `"No join date"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:25](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L25) | +| `en.PL_CD_SECTION_DETAILS_CANCEL_BUTTON` | `"Cancel"` | `"Cancel"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:17](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L17) | +| `en.PL_CD_SECTION_DETAILS_EDIT_BUTTON` | `"Edit"` | `"Edit"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L18) | +| `en.PL_CD_SECTION_DETAILS_ERROR_FETCHING_DETAILS` | `"Error getting the profile"` | `"Error getting the profile"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L16) | +| `en.PL_CD_SECTION_DETAILS_SAVE_BUTTON` | `"Save"` | `"Save"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:19](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L19) | +| `en.PL_CD_YES` | `"Yes"` | `"Yes"` | [supertokens-plugins/packages/profile-details-react/src/translations.ts:6](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/translations.ts#L6) | + +*** + +### enableDebugLogs + +```ts +enableDebugLogs: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/logger.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/logger.ts#L5) + +*** + +### FIELD\_INPUT\_COMPONENT\_MAP + +```ts +const FIELD_INPUT_COMPONENT_MAP: FormInputComponentMap; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/constants.ts:36](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/constants.ts#L36) + +*** + +### FIELD\_VIEW\_COMPONENT\_MAP + +```ts +const FIELD_VIEW_COMPONENT_MAP: FormViewComponentMap; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/constants.ts:63](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/constants.ts#L63) + +*** + +### init + +```ts +const init: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/plugin.ts:39](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/plugin.ts#L39) + +*** + +### logDebugMessage + +```ts +logDebugMessage: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/logger.ts:5](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/logger.ts#L5) + +*** + +### PLUGIN\_ID + +```ts +const PLUGIN_ID: "supertokens-plugin-profile-details" = "supertokens-plugin-profile-details"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/constants.ts:31](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/constants.ts#L31) + +*** + +### PLUGIN\_VERSION + +```ts +const PLUGIN_VERSION: "0.0.1" = "0.0.1"; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/constants.ts:32](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/constants.ts#L32) + +*** + +### usePluginContext + +```ts +usePluginContext: any; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/plugin.ts:26](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/plugin.ts#L26) + +## Functions + +### AccountDetailsSection() + +```ts +function AccountDetailsSection(__namedParameters: { + onFetch: () => Promise<{ + profile: Record; + user: User; + }>; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/account-details-section.tsx:13](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/account-details-section.tsx#L13) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `onFetch`: () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `user`: `User`; \}\>; \} | +| `__namedParameters.onFetch` | () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `user`: `User`; \}\> | + +#### Returns + +`Element` + +*** + +### AccountSectionWrapper() + +```ts +function AccountSectionWrapper(): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/account-section-wrapper.tsx:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/account-section-wrapper.tsx#L7) + +#### Returns + +`Element` + +*** + +### BooleanFieldViewComponent() + +```ts +function BooleanFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:12](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L12) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`boolean`\> | + +#### Returns + +`Element` + +*** + +### DateFieldViewComponent() + +```ts +function DateFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:160](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L160) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` + +*** + +### DefaultFieldViewComponent() + +```ts +function DefaultFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:149](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L149) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops) | + +#### Returns + +`Element` + +*** + +### DetailsSectionContent() + +```ts +function DetailsSectionContent(__namedParameters: { + onFetch: () => Promise<{ + profile: Record; + user: User; + }>; + onSubmit: (data: BaseFormFieldPayload[]) => Promise; + section: BaseFormSection; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/details-section.tsx:15](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/details-section.tsx#L15) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `onFetch`: () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `user`: `User`; \}\>; `onSubmit`: (`data`: `BaseFormFieldPayload`[]) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\>; `section`: `BaseFormSection`; \} | +| `__namedParameters.onFetch` | () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `profile`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `user`: `User`; \}\> | +| `__namedParameters.onSubmit` | (`data`: `BaseFormFieldPayload`[]) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | +| `__namedParameters.section` | `BaseFormSection` | + +#### Returns + +`Element` + +*** + +### DetailsSectionWrapper() + +```ts +function DetailsSectionWrapper(__namedParameters: { + section: BaseFormSection; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/details-section-wrapper.tsx:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/details-section-wrapper.tsx#L8) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `section`: `BaseFormSection`; \} | +| `__namedParameters.section` | `BaseFormSection` | + +#### Returns + +`Element` + +*** + +### EmailFieldViewComponent() + +```ts +function EmailFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:119](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L119) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` + +*** + +### FieldView() + +```ts +function FieldView(__namedParameters: FieldViewComponentProps & { + componentMap: FormViewComponentMap; + type: any; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:171](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L171) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`FormFieldValue`\> & \{ `componentMap`: [`FormViewComponentMap`](#formviewcomponentmap); `type`: `any`; \} | + +#### Returns + +`Element` + +*** + +### getApi() + +```ts +function getApi(querier: any): { + getDetails: () => Promise; + getSections: () => Promise; + updateProfile: (payload: { + data: BaseFormFieldPayload[]; + }) => Promise; +}; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/api.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/api.ts#L7) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `querier` | `any` | + +#### Returns + +```ts +{ + getDetails: () => Promise; + getSections: () => Promise; + updateProfile: (payload: { + data: BaseFormFieldPayload[]; + }) => Promise; +} +``` + +| Name | Type | Defined in | +| ------ | ------ | ------ | +| `getDetails()` | () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | [supertokens-plugins/packages/profile-details-react/src/api.ts:33](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/api.ts#L33) | +| `getSections()` | () => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | [supertokens-plugins/packages/profile-details-react/src/api.ts:35](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/api.ts#L35) | +| `updateProfile()` | (`payload`: \{ `data`: `BaseFormFieldPayload`[]; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | [supertokens-plugins/packages/profile-details-react/src/api.ts:34](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/api.ts#L34) | + +*** + +### ImageUrlFieldViewComponent() + +```ts +function ImageUrlFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:80](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L80) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` + +*** + +### MultiselectFieldViewComponent() + +```ts +function MultiselectFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:38](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L38) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`[]\> | + +#### Returns + +`Element` + +*** + +### PhoneFieldViewComponent() + +```ts +function PhoneFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:134](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L134) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` + +*** + +### SectionEdit() + +```ts +function SectionEdit(__namedParameters: { + fields: any; + id: any; + onCancel: any; + onSubmit: any; + values: any; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/section-edit.tsx:12](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/section-edit.tsx#L12) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `fields`: `any`; `id`: `any`; `onCancel`: `any`; `onSubmit`: `any`; `values`: `any`; \} | +| `__namedParameters.fields` | `any` | +| `__namedParameters.id` | `any` | +| `__namedParameters.onCancel` | `any` | +| `__namedParameters.onSubmit` | `any` | +| `__namedParameters.values` | `any` | + +#### Returns + +`Element` + +*** + +### SectionView() + +```ts +function SectionView(__namedParameters: { + fields: any; + onEdit: any; + values: any; +}): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/section-view.tsx:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/section-view.tsx#L11) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | \{ `fields`: `any`; `onEdit`: `any`; `values`: `any`; \} | +| `__namedParameters.fields` | `any` | +| `__namedParameters.onEdit` | `any` | +| `__namedParameters.values` | `any` | + +#### Returns + +`Element` + +*** + +### SelectFieldViewComponent() + +```ts +function SelectFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:62](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L62) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` + +*** + +### ToggleFieldViewComponent() + +```ts +function ToggleFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:25](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L25) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`boolean`\> | + +#### Returns + +`Element` + +*** + +### UrlFieldViewComponent() + +```ts +function UrlFieldViewComponent(__namedParameters: FieldViewComponentProps): Element; +``` + +Defined in: [supertokens-plugins/packages/profile-details-react/src/components/details-section/field-view-components.tsx:100](https://github.com/supertokens/supertokens-plugins/blob/main/packages/profile-details-react/src/components/details-section/field-view-components.tsx#L100) + +#### Parameters + +| Parameter | Type | +| ------ | ------ | +| `__namedParameters` | [`FieldViewComponentProps`](#fieldviewcomponentprops)\<`string`\> | + +#### Returns + +`Element` diff --git a/docs/references/plugins/progressive-profiling-nodejs.mdx b/docs/references/plugins/progressive-profiling-nodejs.mdx index 597946367..372779f43 100644 --- a/docs/references/plugins/progressive-profiling-nodejs.mdx +++ b/docs/references/plugins/progressive-profiling-nodejs.mdx @@ -28,20 +28,20 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-nodejs/src/imple | Property | Modifier | Type | Default value | Defined in | | ------ | ------ | ------ | ------ | ------ | -| `areAllSectionsCompleted` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `recipeUserId`: `string`; `tenantId`: `string`; `userContext`: `any`; `userId`: `string`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:357](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L357) | +| `areAllSectionsCompleted` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `recipeUserId`: `string`; `tenantId`: `string`; `userContext`: `any`; `userId`: `string`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:360](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L360) | | `defaultStorageHandlerGetFields` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `pluginFormFields`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<`FormField`, `"id"` \| `"defaultValue"`\> & \{ `sectionId`: `string`; \}[]; `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`ProfileFormData`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:59](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L59) | | `defaultStorageHandlerSetFields` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `data`: `ProfileFormData`; `pluginFormFields`: [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<`FormField`, `"id"` \| `"defaultValue"`\> & \{ `sectionId`: `string`; \}[]; `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:85](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L85) | | `existingSections` | `protected` | [`FormSection`](#formsection) & \{ `storageHandlerId`: `string`; \}[] | `[]` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:13](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L13) | | `existingStorageHandlers` | `protected` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, [`Pick`](https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)\<[`Parameters`](https://www.typescriptlang.org/docs/handbook/utility-types.html#parameterstype)\<[`RegisterSections`](#registersections-1)\>\[`0`\], `"set"` \| `"get"`\>\> | `{}` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L14) | | `getAllSections` | `public` | (`this`: [`Implementation`](#implementation), `input`: \{ `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`FormSection`](#formsection) & \{ `storageHandlerId`: `string`; \}[] | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:156](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L156) | -| `getSectionValues` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `data`: `ProfileFormData`; `status`: `string`; \}\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:293](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L293) | +| `getSectionValues` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `data`: `ProfileFormData`; `status`: `string`; \}\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:296](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L296) | | `getSessionUserSections` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<\{ `sections`: \{ `completed`: `any`; `description`: `SharedFormSection`; `fields`: `any`; `id`: `SharedFormSection`; `label`: `SharedFormSection`; \}[]; `status`: `string`; \}\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:164](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L164) | -| `isSectionValid` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `data`: `ProfileFormData`; `section`: [`FormSection`](#formsection); `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:333](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L333) | +| `isSectionValid` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `data`: `ProfileFormData`; `section`: [`FormSection`](#formsection); `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`any`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:336](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L336) | | `metadata` | `protected` | `any` | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:15](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L15) | | `registerSections` | `public` | [`RegisterSections`](#registersections-1) | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:129](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L129) | | `setSectionValues` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `data`: `ProfileFormData`; `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\< \| \{ `errors`: `any`; `status`: `string`; \} \| \{ `errors?`: `undefined`; `status`: `string`; \}\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:193](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L193) | -| `storeCompletedSections` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `sectionsCompleted`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `boolean`\>; `session`: `SessionContainerInterface`; `userContext`: `any`; `userId`: `string`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:367](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L367) | -| `validateField` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `field`: `FormField`; `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `value`: `FormFieldValue`; \}) => `string` \| `string`[] | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:314](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L314) | +| `storeCompletedSections` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `sectionsCompleted`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `boolean`\>; `session`: `SessionContainerInterface`; `userContext`: `any`; `userId`: `string`; \}) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:370](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L370) | +| `validateField` | `public` | (`this`: [`Implementation`](#implementation), `__namedParameters`: \{ `field`: `FormField`; `session`: `SessionContainerInterface`; `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>; `value`: `FormFieldValue`; \}) => `string` \| `string`[] | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:317](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L317) | | `instance` | `static` | [`Implementation`](#implementation) | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L11) | | `ProgressiveProfilingCompletedClaim` | `static` | `BooleanClaim` | `undefined` | [supertokens-plugins/packages/progressive-profiling-nodejs/src/implementation.ts:17](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/implementation.ts#L17) | @@ -88,7 +88,7 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-nodejs/src/imple ### FormSection ```ts -type FormSection = Omit; +type FormSection = Omit; ``` Defined in: [supertokens-plugins/packages/progressive-profiling-nodejs/src/types.ts:14](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-nodejs/src/types.ts#L14) @@ -99,9 +99,9 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-nodejs/src/types ```ts type RegisterSections = (payload: { - get: (session: SessionContainerInterface, userContext?: Record) => Promise; + get: (session: SessionContainerInterface, userContext?: Record) => Promise; sections: FormSection[]; - set: (data: ProfileFormData, session: SessionContainerInterface, userContext?: Record) => Promise; + set: (data: BaseFormSection, session: SessionContainerInterface, userContext?: Record) => Promise; storageHandlerId: string; }) => void; ``` @@ -112,10 +112,10 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-nodejs/src/types | Parameter | Type | | ------ | ------ | -| `payload` | \{ `get`: (`session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`ProfileFormData`\>; `sections`: [`FormSection`](#formsection)[]; `set`: (`data`: `ProfileFormData`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\>; `storageHandlerId`: `string`; \} | -| `payload.get` | (`session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`ProfileFormData`\> | +| `payload` | \{ `get`: (`session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\>; `sections`: [`FormSection`](#formsection)[]; `set`: (`data`: [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection), `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\>; `storageHandlerId`: `string`; \} | +| `payload.get` | (`session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)\> | | `payload.sections` | [`FormSection`](#formsection)[] | -| `payload.set` | (`data`: `ProfileFormData`, `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | +| `payload.set` | (`data`: [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection), `session`: `SessionContainerInterface`, `userContext?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `any`\>) => [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> | | `payload.storageHandlerId` | `string` | #### Returns diff --git a/docs/references/plugins/progressive-profiling-react.mdx b/docs/references/plugins/progressive-profiling-react.mdx index a9e710fc4..fcfa4a247 100644 --- a/docs/references/plugins/progressive-profiling-react.mdx +++ b/docs/references/plugins/progressive-profiling-react.mdx @@ -9,7 +9,7 @@ page_type: plugin-reference ### FormInputComponentMap ```ts -type FormInputComponentMap = Record>>; +type FormInputComponentMap = Record>>; ``` Defined in: [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:27](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L27) @@ -20,7 +20,7 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-react/src/types. ```ts type SuperTokensPluginProfileProgressiveProfilingConfig = { - onSuccess?: (data: ProfileFormData) => + onSuccess?: (data: BaseFormSection) => | Promise | undefined; requireSetup?: boolean; @@ -36,7 +36,7 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-react/src/types. | Property | Type | Defined in | | ------ | ------ | ------ | -| `onSuccess?` | (`data`: `ProfileFormData`) => \| [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> \| `undefined` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L11) | +| `onSuccess?` | (`data`: [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)) => \| [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> \| `undefined` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:11](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L11) | | `requireSetup?` | `boolean` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:8](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L8) | | `setupPagePath?` | `string` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:7](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L7) | | `showEndSection?` | `boolean` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:10](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L10) | @@ -66,7 +66,7 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-react/src/types. ```ts type SuperTokensPluginProfileProgressiveProfilingNormalisedConfig = { - onSuccess?: (data: ProfileFormData) => + onSuccess?: (data: BaseFormSection) => | Promise | undefined; requireSetup: boolean; @@ -82,7 +82,7 @@ Defined in: [supertokens-plugins/packages/progressive-profiling-react/src/types. | Property | Type | Defined in | | ------ | ------ | ------ | -| `onSuccess?` | (`data`: `ProfileFormData`) => \| [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> \| `undefined` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:19](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L19) | +| `onSuccess?` | (`data`: [`BaseFormSection`](profile-details-nodejs.mdx#baseformsection)) => \| [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\> \| `undefined` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:19](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L19) | | `requireSetup` | `boolean` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:16](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L16) | | `setupPagePath` | `string` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:15](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L15) | | `showEndSection` | `boolean` | [supertokens-plugins/packages/progressive-profiling-react/src/types.ts:18](https://github.com/supertokens/supertokens-plugins/blob/main/packages/progressive-profiling-react/src/types.ts#L18) | diff --git a/scripts/sdk-references/typedoc-text-replace-plugin.mjs b/scripts/sdk-references/typedoc-text-replace-plugin.mjs index 7e76e122c..9eb6ef869 100644 --- a/scripts/sdk-references/typedoc-text-replace-plugin.mjs +++ b/scripts/sdk-references/typedoc-text-replace-plugin.mjs @@ -43,6 +43,18 @@ export function load(app) { pattern: /# progressive-profiling-react/g, replace: "# `@supertokens-plugins/progressive-profiling-react`", }, + { + pattern: /# profile-base-react/g, + replace: "# `@supertokens-plugins/profile-base-react`", + }, + { + pattern: /# profile-details-nodejs/g, + replace: "# `@supertokens-plugins/profile-details-nodejs`", + }, + { + pattern: /# profile-details-react/g, + replace: "# `@supertokens-plugins/profile-details-react`", + }, ]; app.renderer.on(MarkdownPageEvent.END, (page) => {