From 4cabde4d5c48adbf4520507b49696ac50e8dbadf Mon Sep 17 00:00:00 2001 From: adrians5j Date: Wed, 11 Mar 2026 12:59:04 +0100 Subject: [PATCH 01/13] wip:1 (c2ly1) --- .../6.x/admin/connect-custom-domain.ai.txt | 38 ++++ .../6.x/admin/connect-custom-domain.mdx | 85 +++++++++ .../6.x/headless-cms/api-playground.ai.txt | 43 +++++ .../6.x/headless-cms/api-playground.mdx | 121 ++++++++++++ .../api-playground-interface-complete.png | Bin 0 -> 98963 bytes .../api-playground-sidebar-location.png | Bin 0 -> 175401 bytes .../assets/api-playground-url-location.png | Bin 0 -> 139950 bytes .../assets/docs-explorer-interface.png | Bin 0 -> 189276 bytes .../assets/docs-explorer-product-fields.png | Bin 0 -> 254397 bytes .../assets/webiny-info-output.png | Bin 0 -> 60626 bytes .../headless-cms/graphql-api-overview.ai.txt | 101 +++++----- .../6.x/headless-cms/graphql-api-overview.mdx | 180 +++++++++++------- ...hql-api.ai.txt => using-webiny-sdk.ai.txt} | 0 ...g-graphql-api.mdx => using-webiny-sdk.mdx} | 12 +- docs/developer-docs/6.x/navigation.tsx | 6 +- img.png | Bin 110929 -> 0 bytes img_1.png | Bin 161694 -> 0 bytes 17 files changed, 464 insertions(+), 122 deletions(-) create mode 100644 docs/developer-docs/6.x/admin/connect-custom-domain.ai.txt create mode 100644 docs/developer-docs/6.x/admin/connect-custom-domain.mdx create mode 100644 docs/developer-docs/6.x/headless-cms/api-playground.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/api-playground.mdx create mode 100644 docs/developer-docs/6.x/headless-cms/assets/api-playground-interface-complete.png create mode 100644 docs/developer-docs/6.x/headless-cms/assets/api-playground-sidebar-location.png create mode 100644 docs/developer-docs/6.x/headless-cms/assets/api-playground-url-location.png create mode 100644 docs/developer-docs/6.x/headless-cms/assets/docs-explorer-interface.png create mode 100644 docs/developer-docs/6.x/headless-cms/assets/docs-explorer-product-fields.png create mode 100644 docs/developer-docs/6.x/headless-cms/assets/webiny-info-output.png rename docs/developer-docs/6.x/headless-cms/{using-graphql-api.ai.txt => using-webiny-sdk.ai.txt} (100%) rename docs/developer-docs/6.x/headless-cms/{using-graphql-api.mdx => using-webiny-sdk.mdx} (95%) delete mode 100644 img.png delete mode 100644 img_1.png diff --git a/docs/developer-docs/6.x/admin/connect-custom-domain.ai.txt b/docs/developer-docs/6.x/admin/connect-custom-domain.ai.txt new file mode 100644 index 000000000..fbd516da6 --- /dev/null +++ b/docs/developer-docs/6.x/admin/connect-custom-domain.ai.txt @@ -0,0 +1,38 @@ +AI Context: Connect Custom Domain (connect-custom-domain.mdx) + +Source of Information: +1. v5 article: docs/developer-docs/5.x/infrastructure/additional-resources/connect-custom-domain.mdx +2. v6 extension reference (Infra.Admin.CustomDomains component API) +3. Existing v6 infrastructure extension articles for style reference: aws-tags.mdx, resource-name-prefix.mdx +4. AWS CloudFront documentation on alternate domain names and ACM requirements + +Key Documentation Decisions: +1. Placed in admin/ (not infrastructure/admin/ or infrastructure/extensions/) — the admin/ section is not limited to UI; it covers all Admin Area topics. +2. Scoped to Admin Area only — v5 covered Website, Admin, and API in one article; v6 Infra.Admin.CustomDomains targets only the Admin CloudFront distribution, so the article is scoped accordingly. +3. Used Infra.Admin.CustomDomains declarative component (v6 pattern) instead of per-app webiny.application.ts domains() callback (v5 pattern). +4. Kept the ACM us-east-1 region requirement prominent — this is a common source of confusion. +5. Added a CNAME table for clarity — easier to follow than prose alone. +6. Omitted FAQ section — v5 FAQ addressed multi-app domain changes; in v6 each stack has its own Infra.* component, making this less relevant for a single-app article. + +Understanding: +- In v5, custom domains were configured per-app in webiny.application.ts using a domains() callback returning { domains, sslSupportMethod, acmCertificateArn }. +- In v6, the declarative Infra.Admin.CustomDomains component in webiny.config.tsx replaces this. Props: domains (string[]), certificateArn (string), sslMethod (optional, e.g. "sni-only"). +- The component attaches the custom domain as an alternate domain name on the Admin Area's CloudFront distribution. +- ACM certificate must be in us-east-1 — AWS global requirement for CloudFront. +- After deploy, the CloudFront domain name is available in stack outputs for DNS configuration. + +Related Documents: +- docs/developer-docs/6.x/infrastructure/admin/overview.mdx — Admin Area CloudFront + S3 infrastructure overview +- docs/developer-docs/6.x/infrastructure/extensions/aws-tags.mdx — another Infra.* declarative component example +- docs/developer-docs/6.x/infrastructure/extensions/resource-name-prefix.mdx — another Infra.* declarative component example +- docs/developer-docs/5.x/infrastructure/additional-resources/connect-custom-domain.mdx — v5 source article +- docs/developer-docs/6.x/admin/whitelabeling.mdx — sibling Admin article + +Key Code Locations (Webiny repo): +- Infra.Admin.CustomDomains implementation: packages/pulumi-sdk/src/extensions/admin/customDomains.ts (approximate) + +Tone Guidelines: +- Concise and instructional — no filler +- Technical but accessible — explain the ACM constraint briefly +- Follow aws-tags.mdx and resource-name-prefix.mdx style: short Overview, direct Configuration section, brief Redeploying note +- No marketing language diff --git a/docs/developer-docs/6.x/admin/connect-custom-domain.mdx b/docs/developer-docs/6.x/admin/connect-custom-domain.mdx new file mode 100644 index 000000000..f00efbacf --- /dev/null +++ b/docs/developer-docs/6.x/admin/connect-custom-domain.mdx @@ -0,0 +1,85 @@ +--- +id: bq7r3npm +title: Connect Custom Domain +description: Learn how to connect a custom domain to the Admin Area application. +--- + +import { Alert } from "@/components/Alert"; + + + +- how to connect a custom domain to the Admin Area CloudFront distribution + + + +## Overview + +By default, the Admin Area is accessible via an auto-generated CloudFront URL. For production environments, you will typically want to serve it from a custom domain. + +To do this, you need an AWS Certificate Manager (ACM) certificate that covers your domain, then declare the domain via `Infra.Admin.CustomDomains` in `webiny.config.tsx`. Webiny will attach the domain as an alternate domain name on the Admin Area's CloudFront distribution. + +## Before You Begin + +- Register your domain with a DNS provider of your choice. +- Create (or import) a certificate in [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) that covers the domain you plan to use. + + + +The certificate **must** be created in the `us-east-1` region — this is an AWS requirement for certificates used with CloudFront distributions. + + + + + +Learn how to request a public certificate in the official [AWS documentation](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html#request-public-console). Read more about [alternate domain name requirements](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements) for CloudFront. + + + +## Configure the Custom Domain + +Add `Infra.Admin.CustomDomains` to `webiny.config.tsx`: + +```tsx webiny.config.tsx +import React from "react"; +import { Infra } from "webiny/extensions"; + +export const Extensions = () => { + return ( + <> + + + ); +}; +``` + +Replace `my.domain.com` with your domain and `certificateArn` with the ARN of your ACM certificate. + +After making the change, redeploy: + +``` +yarn webiny deploy +``` + +Use `--env ` to target a specific environment if needed. + +## Point Your Domain to CloudFront + +Once deployed, Webiny will output the CloudFront domain name for the Admin Area distribution (e.g. `d111111abcdef8.cloudfront.net`). + +Add a **CNAME** record with your DNS provider pointing your domain to that CloudFront domain name: + +| Type | Name | Value | +| ----- | --------------- | ------------------------------- | +| CNAME | `my.domain.com` | `d111111abcdef8.cloudfront.net` | + + + +DNS changes can take a few minutes to propagate. Use a service like [DNS Checker](https://dnschecker.org/) to verify that your CNAME record is live. + + + +Once propagated, the Admin Area will be accessible at your custom domain. diff --git a/docs/developer-docs/6.x/headless-cms/api-playground.ai.txt b/docs/developer-docs/6.x/headless-cms/api-playground.ai.txt new file mode 100644 index 000000000..6d2115518 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/api-playground.ai.txt @@ -0,0 +1,43 @@ +AI Context: API Playground (headless-cms/api-playground.mdx) + +Source of Information: +1. Learn Webiny archived lesson: headless-cms/archived/webiny-api-playground.mdx (primary reference) + +Key Documentation Decisions: +- Stripped course-specific framing (prerequisites, quiz, next lesson links, summary bullets) +- Removed "Best Practices" section — too list-heavy and redundant with the interface descriptions +- Kept the five-area interface breakdown as the structural spine +- Authentication note moved to an Alert immediately after the access steps +- Added cross-link back to GraphQL API Overview for API differences +- Queries-not-saved warning kept as a Warning Alert (important gotcha) + +Document Structure: +- What You'll Learn +- Overview (what the playground is) +- Accessing the API Playground (steps + sidebar image + auth Alert) +- The Playground Interface (5 areas with images) +- Exploring the Schema (Documentation Explorer walkthrough) +- Switching Between APIs (tab overview + link to API Overview) + +Images (all in ./assets/): +- api-playground-sidebar-location.png — sidebar Support menu showing API Playground option +- api-playground-interface-complete.png — full playground UI with 5 areas labeled +- docs-explorer-interface.png — Documentation Explorer showing query type info +- docs-explorer-product-fields.png — Docs Explorer navigated into a model's fields + +Key Facts: +- Playground is accessed via Support icon (bottom of left sidebar) in Webiny Admin +- Four tabs: Main API, Headless CMS Manage API, Read API, Preview API +- Auto-authenticated as the logged-in Admin user — no manual headers needed inside Admin +- Queries are NOT persisted across page refreshes +- Auto-complete: Ctrl+Space / Cmd+Space +- HTTP Headers tab is how external clients add API key auth + +Related Documents: +- headless-cms/graphql-api-overview.mdx — explains Read/Preview/Manage API differences +- headless-cms/using-graphql-api.mdx — using the SDK to query content from code + +Tone Guidelines: +- Practical and direct — this is a tool reference, not a conceptual doc +- Short prose, let the images carry the visual explanation +- Accessible to developers new to GraphQL tooling diff --git a/docs/developer-docs/6.x/headless-cms/api-playground.mdx b/docs/developer-docs/6.x/headless-cms/api-playground.mdx new file mode 100644 index 000000000..f4e28c4f7 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/api-playground.mdx @@ -0,0 +1,121 @@ +--- +id: cms9play1 +title: API Playground +description: Explore and test your Headless CMS GraphQL APIs using the built-in API Playground +--- + +import { Alert } from "@/components/Alert"; +import { Image } from "@/components/Image"; +import apiPlaygroundSidebarLocation from "./assets/api-playground-sidebar-location.png"; +import apiPlaygroundInterfaceComplete from "./assets/api-playground-interface-complete.png"; +import docsExplorerInterface from "./assets/docs-explorer-interface.png"; +import docsExplorerProductFields from "./assets/docs-explorer-product-fields.png"; + + + +- How to access the API Playground from Webiny Admin? +- What are the five areas of the playground interface? +- How to explore the schema using the Documentation Explorer? +- How to switch between the Manage, Read, and Preview APIs? + + + +## Overview + +The **API Playground** is a built-in GraphQL IDE that comes with every Webiny project. It allows you to explore and test your Headless CMS APIs directly from the Webiny Admin — no frontend code required. It provides tabs for all three Headless CMS APIs (Manage, Read, and Preview), as well as the main Webiny GraphQL API. + +## Accessing the API Playground + +1. Open the Webiny Admin in your browser +2. Click the **Support** icon at the bottom of the left sidebar +3. Click **API Playground** from the menu that appears + +You'll see tabs at the top for: + +- **Main API** — Core Webiny GraphQL API +- **Headless CMS - Manage API** +- **Headless CMS - Read API** +- **Headless CMS - Preview API** + +Webiny Admin sidebar showing the Support menu with API Playground option + + + +When using the API Playground inside Webiny Admin, you are automatically authenticated as the currently logged-in user. No need to add authentication headers manually. + + + +## The Playground Interface + +The playground has five key areas: + +API Playground interface with the five key areas labeled: Query Editor, Response Panel, DOCS button, Query Variables, and HTTP Headers + +### 1. Query Editor + +The left panel where you write GraphQL queries and mutations. Features syntax highlighting, auto-completion (`Ctrl+Space` / `Cmd+Space`), and inline error detection. + + + +Queries are not saved persistently. If you navigate away or refresh the page, your work will be lost. Copy any queries you want to keep to a local file. + + + +### 2. Response Panel + +The center panel displaying the result of your query in JSON format, including any error messages and execution time. + +### 3. Documentation Explorer + +Click the **DOCS** button on the right to open the schema documentation. It lists all available queries and mutations, their arguments, field types, and nested type definitions. The documentation is auto-generated from your content models and updates automatically when you add or modify a model. + +Documentation Explorer showing a query with its type information and arguments + +### 4. Query Variables + +The bottom-left tab where you define variables for your queries. Using variables makes queries reusable and avoids hardcoding values inline. + +### 5. HTTP Headers + +The bottom-right tab for configuring request headers. This is where you add your API key when calling the API from outside Webiny Admin: + +```json +{ + "Authorization": "Bearer {your-api-key}" +} +``` + +## Exploring the Schema + +The Documentation Explorer is the best way to discover what your API exposes. + +**To explore a content model:** + +1. Click the **DOCS** button to open the documentation panel +2. Browse **queries** or **mutations** at the root, or use the search bar to find a specific operation (e.g., `listProducts`) +3. Click into the operation to see its return type and arguments +4. Navigate deeper by clicking on types to explore their fields + +Documentation Explorer showing Product model fields after navigating through listProducts to the Product type + +## Switching Between APIs + +Click the tabs at the top of the playground to switch between APIs. Each tab provides the same interface but with a different schema and capabilities: + +- **Manage API** — Full CRUD, all revisions, includes mutations +- **Read API** — Published content only, no mutations +- **Preview API** — Latest revisions including drafts, no mutations + +For a detailed explanation of how the APIs differ, see [GraphQL API Overview](/{version}/headless-cms/graphql-api-overview). diff --git a/docs/developer-docs/6.x/headless-cms/assets/api-playground-interface-complete.png b/docs/developer-docs/6.x/headless-cms/assets/api-playground-interface-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..5519158d2dcee5a56a0530fd7dc7874826ff6d54 GIT binary patch literal 98963 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 J96g8Y{{t?Zlal}d literal 0 HcmV?d00001 diff --git a/docs/developer-docs/6.x/headless-cms/assets/api-playground-sidebar-location.png b/docs/developer-docs/6.x/headless-cms/assets/api-playground-sidebar-location.png new file mode 100644 index 0000000000000000000000000000000000000000..65e6d71b1647b0c552d8848178e7750cdbe14479 GIT binary patch literal 175401 zcmb?@XIN8N7cP#Yh#=Sz5wHLvpa@8Bf+*5!LXajUAW{`VhbTz1fYL)pDMCVTQUcN; zROua+CZR-1h?J1KqciHveD`_okIOGja?aU%?X}l>*Sp?*LbNoL4jnvwkcNilkn(Ls z9U7YbXd0S*bO-i>Pe=t4r)X#%(I_j*>$#gOCI%H9Z`^hxO}ZnA{X$W99vu(V`5!iD+c?=OOBLn^lRThlNd zIZ{xf3fuSh=ZBe&9(u885D*;Pf6?s3-=AKWzH4>j{CQ~lKkl4LO8}2U%h&P#{kuo* zFW;&P{^wyla+fb(=HD9(ZhGnWo8Im_20eG){DjJ{=WF>^p&-OVFFI-1&!0E9jmf93 z#P>hHYhq&YO-shWYo!LUQWjPa;@tj9cdC?avyyLAo9bM%F} zdZ+TgjMA-mD?Da(=Y*f4&)(kQ!$%6XIDZ=Et;2!rgBIuhKr6D@3V;#(Ha0D6%TZU) zssqkqlU#d_*&PQ@?&tYAo$JIpc1QpusmsX5#zrtC@K#1Sm>N;}=hUtF0n=Ze3RUX~~`@;7?s z>?5d~G-wnu*`6&?g9^0H6+2|iw2{Lh*pdSlI5z0l^7Jcnk6!41!7;yI2@cIwHnmQO zoD*TTyaj!I#h*EyGvh#3@e?R`GS6>MJ|?4)_QFC7{=(~S6yHp;L6rRMbgp6r#Rl(R zj`LPyU0gfd7An3+d+hmI_@nahw~joM?Ywk}E{CIDP;VKF{%sT?>=zH>m$akKpM4rJ z!4AEYE5kUepsM;z*|Jd7qBd$+?^0c+5obPlhS6_pKz&AcAbVn>6OZe1`7NLE2ZGES zfsjKlG^}q52XRq^qPhMfnNxHRvzBXcB1iopxzw?K1IcL z#h?DkbFGW$bKxR0zY(U=@BHiL5I?*YPww|iK6YU4+ueUC$(OddtQv);PUIBV&&53+ z$5%0qig;7ADet!LrefH!ef_CgM*V|q%+BfVZ8RsHOtX!+sI$2G)0`>YUk>x?(xFwJ z0TX23NPU-`Cv}Co?$x#P{Eilf^)_Xlv0gr3D&Le2cuVd$_s#`WTYdP_KI-Sp z4!$^)yx8OW`cLhw&^F33XcVoC#&NwMg$EE*H>37_jx6uZ+cCWTyLu?zPpIl9JM7#9 zZTs*XV#7OqazUe1wrb=WF${r)m$Q_00OCFB`U(Cw6Mi9}*ik z-(os-&o}Pcu-$kCM9d!Y<-zL|$>X^GS(F?q8X5CV)MsokDz0Sa_R0XFqC3^@Z+5)-^hGDPhQFf=zlz zddpovn37j_=#LBLL<#eC*hM4W;-i7{YqPw+#uxWdJn&E50lP433(-I8v+0g;$01J& zY>?A4nyS{8y=K>iJ2!A)vZZefDvEa=_ph@E@6hCE{bkq23;`Wl+ZWg?Zur^k>g9K_ z^d_)$DcopqeztEz3RZQMoOy*Qhq(ZAH$SPkcP44y0d%Rur~{+)v=imU4l%YsBk|)R z--4=-DFW{!xMf?j^YO-Lto^8)IHFK6Isf310<94P$k99VLOJa(3z5NaAw%4Lv!9## zu(jVO-K_S&yReck$w-%iAk10U0g1#aNo=x@33E(>3IqDiz#{!-Ts3Pcfzs@Q@9Th2 zcd$M+7He30upCjC$G)jk;1R&!QZ$Y8V$Gu5J4(iP#2)5lCOyD))qK^Vs5>hLSyWMK zzJ#|Wc!m+Z>j-lr4q}ospOe>SNY#nPsJ9pVO;hROo_Yk+@%+nY3?%%rvzlM7J%Z!gBSiy72uz=818Nq1wVYYJZ7yjSS+kc>G+y)~ z!4NTm?B%&>;3oj%M&x0a_t!{&X^e3dai%298O1Q7tG9P)oxglq3Ljw~D8+g>e%;m> z6(Cg=*eB-d8=de>e{#`TmW^Yx`E zAvK5tfjd&L`ZJC{y5Ah?_Gio-UsDpKM^msq+n~tG17YcHSeJg*b^s$d=PD^@lQ0xY zE4MW?l~G&f+6q#rqD!nD1ne*HlDY;XWR?+L5yxdnbL3!`5j3~PKx2b%j`s6fw z!;(Fk@08jNxh~=ywhu768NX8@B2tA*Qlh+Q8w6a1Bm(Kx@@`GcH$(% z(GiSsS*O6Z*;tq_sy#4#hO*dI7!#Fq@ss*j^%D%qu8SBEePd^1opSzTr*<|U`7VYka;JjvJT&R&?$KIGJDAQZh&e4hYna!$axo#n#k)C_Z8l*|(hF`sg1E}G?%op5 zd2VXts9o!dwWnN6UsK`T+R5E_PR++O1-nQdAF6hnXlmqGYNGoq_>VqqT|~1wR`=If zZ5r&@^h{sx8h-O5ukqzcHx%2M%q3^e&q!5Gbwu3SZjM8e2kc|~w<_L53YMrfeN5A+ zo^k{!9PQ{N+17T=EQ%53;*%*|@0or8?YfjJyc8xqfVB8CrhI{H$3gk_Zsl0ju=Xd_m0aYV#R4KmCpAUTg&JNte>|bzB-&?KGW^ zvKLfjquOCo`Siv*V*JR&N`|i+LCU18?V8c#giU@1~CrxjuBm zDrC?)`<1e*drjZJ_3ZR`-H8fvn{=+BSVcd=vCEb9?wb%)Mh;?(W3KtDY!ns}r(fI) zYtwPxcvoexv@#``G)+Duowq2#buKFB*qABrDX6k1dHcD6vi)F=sbeTe0HzmD@xxC; zjgeCw%C&Lsn^F4PGfdLo@{!)exDqSMUZ#~$)fBF6>wTlGivpt>8+`|(&zaA}X~MYd z(|mY;p%I<@DYng147q-(kxxvrLalG;!61f)3;S*!)lx2hj-ZJ9`k7XHZ$2cv`%{I& zKjC&+UiO>QTm3nVvm_TAhs6Czw;hm_L@V708oWg=HTHyeE4^LP@h(;2b=k8a7s$@n zx)KZX7PmH_E z{m#^?^pJ~jQq0HI$HB1S*<;Z8hnIimWW7IX_fU*3LttE`w#Z29(F>t!l2ZnGh3Ak7im%Pd+UvlyU@e18?O1ASP|<#4)I`PpqI+ z>DJsm&l)!!kG1C^z6NU?A`aX9058JzPMv^6e@Cb@_WRAEjU22_m(SaNNjC$ZF~P2@bF%be)Xj}I;hxk;%(39I z8!%DuV9J-FPtB^ohT@4}6#t^t3-TRDUSxiD7GY^yqkGKqw8K)Yk?h^c@TVEdxG=Y^ z769Vs)lR6SOJRF2PN~W@} z%y1=+9f_q}Ut5Tr+)3_|&eYXOmSOkgoUcEdI5_SUF)0c*%$M{$eTJk;8Gmvq6h(2_h!nHD92uGVb_Re13olqB>=ozn)o4!$FOqe4rxp6W2 zB7;p`*K*3@<>orVTv~hJzM~)=A;WyUl=iXh4p-06!}BhARl&@nzPS+Qc2+fmkjt0% z+)HMnYX`7&zF58iCz7165@Y)-9vr=WLZwjz)8hqIzUx$bGiI5MuX-mtP3RMG*U=qb zh}S>P7AiS_Ce2lO>2Q!J}ByW7yLe0<+kI{bo!TzyL$8Zs0)}akZ^ZdE3ES}+qIj|)Q}Eg>eyF$ zuEY?0E+C{oNbj^*_*T*#BXzt#3J;9F+~(?01!f7HA7xy*kRTZ*JJFWcyFKh9Zy;FD zJN&#WdeV1JMp^ZUEU~>v!$%Qg2T(X{|KYz}`OaQf=^J&NbXg5|d7@fZ&ThoYnmo@} zi4{Uj9yFe6*1XLd0co6mH=)bh68M4@D@l9CJJ!a|Zas|TvBE|82GB8GpT_Jcp_+vM zB2&P74x@7Cvm;Z7Fn8=M-GwuTr5MfZL3e_IhA9dZcC5sqgezUmMqjO<{bJW76KCKV zW{|-z7lmUyQ%{Ox4tB;$Zua$(#Rv<0A))Fq3#LGHo3=%WI!tp zbEx9r5!D}cf{t3wSNsTT1q^5ZGD7kGMRz6H==)vSdS+2h<3z8rhZ5v=XEj~j2;|s) z?avJ%a{KNqzL`Tta9^445t)B?==BKugERot)OAo=rlyXa5_v`XN~Pm;Le8@otVKIp zsET9~(~q)AsK8^kdhU%!ty<<7X{5Aiab$kb{TF>>!(72(=cUu@^Oq zGWkr9Bid!DEd<>8n6I+9I$04f4|k2sWgg?hc{V}@#fc4N6CPc8&alyq30eK4N7Z-B zo1|Cob)^*|_48In_to>#RaioQ1`Abr}Pa-pz zySH|S0KYR%_tFwAA*pwLRsopG2xHUQz4n+OAV!L zp+fW&gM_})A+!ECk%b)=ivdy)0|F1S|1UbPU*oDv`1RH}ynD8VIk=iq)~tF0N=KR? zJ<^~1Vj&ebGUDSUs4R}?Lc%{kVAH%d?oc&+#`_*C!J4kTnnhT&yH~cXdUzH3;dH!6f+XsDJ)`ovI#taJO192e((TCYK`2~SfQi^|wWra{HW^k(Auu4k z>*|aHN0dVN;e>o$Td$+rW5Zbtke%^_KBhp3P=w9q(3`(8(F(WVI70je8>luft> znQBH~H>z|<)TKSbXZn-Bclk<7`)%8o+{R{T^|qTb@b|FUlAakgGGeTe=z?2s9Y(eb@==VJBBOdPCV7ugx?j!EAtcV1 zGTOu7H_~0KbO#5zI1jYx{hT4swJe1!@c>AGV)U-zyL+!tvKE157*l8GqTHiT+Y7gx zC!~eFHaM)vfrl!@BP%K-i_B+Kik#=FhfT^;ey761-wL?EATf>4Gbw(YbV(Quk5Zz} zTmLKkiKC^2uLA-lX8jGx+!Bbx1&C7#mm&N=lgio7Awh;pyW~?0=|U1oArB6qd0GC! zRvDNG0nGeS28}OFAnN@=B$}-($=!YFVe#>-^9Qb&O?gO6Tdosu;RW44(iQmRVcc!| ztS#t}i|t_JcV>gxvZhGU_{avPC;D3P`Lw42pz3K4d=Z~86&(EF-y|i1=eRx* z(cEZs3E$3ZuYH40ffsO;3O|?e5&j?aBA520)(#3Xq7Ve_NtUGrjCADBT9T%pO0SM| zzbQJ#(AX(6_=72+va5YDcUj)+o#f0n7X`Ha>~AbJf*Ps@kgM6OjE!plq*l|fWp+P( z35eCTU(@|gtSaXke0p-@fo|@H^5xiAKDu%3@^&6DQNVZp@jJi$<-vLT@o%p*t{-Qf z8CfSbwNmq;h^UA}VpMN__fwxNK()X8Mb+zFMA?NMZ+_3aEFUGESFW=Gr_q(16B9^S z{e#y^2axASeo_fEZ#7P{3MVuaSv5|`U_4!1{oaI^&y7v6Lj+B>x_G;&h*Ib_p!ts& z#{Xs>W#Ih6&?lRGUA9*MP22R4+Qcw_^&6XQ(sJt{S~_|2eLGkMjLJ_}rpb<(jXr4& z$bNmm=$n0Se&qaiXLViOKrel>v{mU@e`e^s26*!CeUP*HxGryhUe(vHnEwFZX#HGW zn!}cKQqa^k4Ug(ogDrsrZ8Ts&{lE1;a43k=sA( zX&TS~LR|W9A895tJv{(U1G+_$zsv`28sb?;wcPK|$AyU%Wml(u_-~`C!T$++73f}J z_WyIZ-@96EiY(LMJN~k*-N>v84#mI!__0!M12~~aB)VVZro<8k7TJ-&be@>{v)9rtB#bT)~G05-T zt4$jRhiDY!|FKu5J^91MWPh7EPV@U-En+zP?*Upn!uq?vFnomD+Am!x@@dv6f-i^` zd92=^?2MF`D*+5nB#Qy8^X=u-`oeRp6AyqthR1TqK0MmZnVdNV?M)-A*W^2 z2fcRZv^K7@l2Kf^WE$4|${CG4rXD(3irc0YKK#Z=OEWVKtsugFECmdFJI^ezZV}J9tm9rnZV;hqo zm-g?YUY+*utH1kIj>>-qz5dZS^8a>6?HF?!0X3Pkz$mB0i2t%#Z%>a-HJk>SEZF9~ zx*6kv-oB~WfQL?2*8Pg6)P1`p^aP^sQdyLO-(6ez(Cmd0?vm(oZlS%AxSCSa6+1sD zlh+#nno;MYP5wE!lpS|rG@kWzBCsj((cLRJJ04ac8R8B))k;^%%4U9T8ecN*aE(Gh z(z;iV%P5y<@W%@k9R>q>N3^*cvxX49!gvX z!KDHB-@!L!a9e*jLF}_9z`0;*|FQyTLp$;;B|-X6L30c$JD>03ZH4c4$Is5_Z=q7_ zWkr#@5|dfhG&HCNso;xdW+moc0A1b8Z zg%KMfG^Ok@Lag|{-Y%C=LsRz^I0+!r+C}8YbH0g`CFDzquP^H(MwEjyM$esxKK<7o z*!PqLY+jM6@2tce7f}i^LYRG7KjI1R(Xg_+Y+TxIc+_dJY!W59v|$`!av!8Qojy|T zuf{74H38;Mu)U|(WjZixUTOy6KFNo{-C~38vsN@7nR#fv5y?-mZsY2^Q)BkV^dtkC z)9GMol#_BNyp4lE)YGXk^$~6oh%nIQ)6dyxOUu3NW$`g3&Gq#n8r~-G?u!l}q6?1x z=aGxnP`LRS;K5#YD1O?vT^EvEa5lbds1P`{en(-`M-lU$0j5`qvi#r+1CF=v3^;CZ zAk(Tc_R%v-kX7zl`R7wR29X!eL;e0^{=YKKiEF2zGT*u{Sgm%6q~ad>mO5O;+$r<* z(Yad;S_GXQ4Gv=Cp9f!YZ7!~WMc0|sPjJ;Y@yRj0(ngwJy}{%-7c-i#Vj97JBUZ(5 z*_bp*pI8lIQtrQFlDS+_c7jdK3su=?x~BR;3*ZEwMFMk zVa&Xkp25hFn!X+U`itOGZvS;h$GcXLZiOe1cu_}D`;n#i^lP>o)#=~-OsM>S;-}=W z^)TiOm~dN3jJ+4dy(3STBwZ$a!MMmOr&sK}`B?uy*Y#()P}+5Uk@}$+pcMWri-5yN)v+DG+%}FgE)w^+YCP%^)}42tQ)Z zU_ad6c%Kfl^zdZhnjSG%9FKXv2c6P4Y`N-XH?=z!nODE zc*ia+d$^0b636I=cyfsYd4J}i^XBRQGIoQ%qOp(v-?qMcn9EEzcDV17B@Du^kJ%Yi ziik0X+{KR(N4}od{ zI;1e5#XHpp; z(b3V1(R(mC<1-8l03H^|XW2HkfzC&x-*ac~=$!+*eDB!{CF#OM2#gD>Td zchZ~#BPx&Dj;OZ2`5O}ZfnSfgEn*P+=>TAAOCO6_$MPor6HyKIO#^Iv{xJadO|?dT zyuWH}D&E7h7LFG2zU41(Unf?m7fiVnMp z&x|}^db3MO+t0?Vr+qJw*n9+V(BJSVSR;Y!Fi;1;Z2l2TsOr0W_uB2dKqb_m68#VG ziN}xckp>?RT=@;R{tq?XOlEnxffcmCnp&(R|32MER40W+{q{t#p?vlV|GU8ZF0$j+ z?xMOMEa11F{|t8j)d14TxPuRW*U!;>UnoFT{x8YkcM0D=iXiFRef?tMd)>jJ=NSKH zs@18>dt1KO)VF@O`=0Nk=KZbU;*tANmi|&a(ExyH7WIFx6aS-riYY@{(qFrSH-BHyFE^1R3bDuc;&YuBxR?#xH!_9<-Nq( zNyY4in4ShZL@x!!NTBVg?*)SwSpJu`fSg! z?(81Ulx`QO*==$hocDW1)jkdUUI>9@h!Mx&$>vDsn`KfL*aST>y}5e6#Ew&PE-G^` znF2SLnqDM-ZZfkyfgkp&<+! zg|A#N31(3|!qqNpOCS?Pj2woZ`!~(t`87AzN(jx%OwVEm?gJWliG@b|`Y;4g165I6 zYo@MbhL(2G`(P^ujgfmn6%T#!`@T5);d>Z3(Pkb1F;Cs7z=>c+3K8*Ct@uVQ{dsZF07v{@V;G%QA13Qw9 zRbt>kqFB6~NO$m)uDRvrj3OVt~Cun;zNG44Co zDPVUtQd*lCoD?Va+5q5LC28suLIQ9?Y6#ReW@F-covoQk4!-fCGS@KK<0YdE-V64< zrS;mKCG74kpG;5=7988PL8U8oWww>$_jUmei5N-ho%b#>o8r#2zcN>pYgjXpfc%uM zQQ6xmKFV*j9!6zFvB`3*f;gK>Kub6;*t?0_H+m5k%z(6Gs@P+_pc(s+u2J^PmbOm( zCh`Qg;?0J-U;T*h>=JQ?4((!)d$OWSClG>cN7*vUR3++j*Y@y{O~mr52jni@YZc8e zH0yuI(H!qa%e1j;s&Lx4%d_`#nFnHeOhh-slakDf2|wFp(u)uqn{XQqZz~&AZYZHDm#e!NK&PpEZi05F zdvOs+cIFP07MVryzu^f}Ht}!vlr^Jv?+nWErgNu{2(m*}VI_BK|8Vvxi&u+xWos8~ zPQ1%LvL;dWV2a!L5DiVr{o!JpB9Ct$k|um~mScdMzd^}S1gKwuzo)lfC*||D>I6W9 zZYWu4wyx~)pK#gos_s%XLA6)hDRNEJWzRT-wruLdA@!*sZD`vA*Jq<)T)yA%ig2jq zu=FO94cc1hCA6l3lijs^*W2}8Y;qM>;er*KcmGuJD0Gle$L|mkNj-g06`cBLp zHtVnPl2zhbRG!O5Qu@``%;!4q%$+e46%m=Am0jELF2z|_ke?U2O0OI* z^4WGZX5$TxLPI5L=s$;ZsY29g9`zJBeKqMne)#sFCr*#dOcM zC!*1Nk0*f8B~Dss5c1u{{I>$lJTh{4U9&nDAOGD4LFDx4)w+rKeA?3spUEq1mA-z0 z>%|#P)oEq6VJYR9Ae;JZ0`k-x+0I%+=Ih6L4Pz;<`NB3*plnTF8Y5Z}g*aZCHZG?c z?YTtl-}NwLeY5~Yd*yTz&zuG%sckc@B2rH@+P^f8&kayxd(!_oNV^_eYwd^i3D~ z%BnX!kyHz^QVe^bURx~I3)wU@TyMy)n#GepgcxwY!xsRvwM=7D!0(dJ zd9p&26`HOaT}1!GN~4daA~fZkb8EMN;Gjx!)ztW81|yo9W61ofpY6x0B(ie(LoUKE zD81P54Lyjii{x5K!}>g5b+K)l0zF8ankc|cV@NIP1ey<9dvZ#i<$*Rw4_X32 z--P`@j$vjcIR5}nXteXDA3`(Qj!ryJ{;K=77QWDsuf@CgtvvC{*HGoFE+94P-XCq1 zTV6*5W`TffAG+lJ+KpfQhArN)#;bXxSgMEKX&P3Me}AELX=3s9L>Fmg!&;KKF5Iz) zmLqySD49RTdLc+=Bc)4vyGnmzA_JN)h}kI>#o*TzOy`V(PnpuQL1nt9&W%f7wA4}{0XY#2v5XXU(cN4Z?!x1>TL<+gyQ=F4@86a+3vvIhUUPRGP06NepI?*~JO$s0-jE)}-O+ z#Y`*^e~rt4b&q^CJ8Ok90Gy?~YKe8fnSH3!?%jiH?J|_xJ#+NBK@jtr!HKV-i6AfR z3ZhuJo0HsEZ74837!jl*_dO#ouu8DOjrw`s7!QDN=X!W z*MMebKu@sl`1X|dNPx7tQwm7DD4SG3lhob`CVri9Huyd@;tcX!HPk9)x5&L9m+^$6 zNDzeDpZ6FWKnb(-?d7=`bqadfps=qpXu(2I>3|7@`$f5I6hGS>!q{S!0yjCEGN^2islv#3%A^PfojFq=QNly&xMe!{Z`O@K-UJp5l0QwTexPR z1sPh(Fsz!|JL%oFBkuc}MDZ-I%FoA_4AQzc3sml?%z1wfPjB04h6U&I4zAfx6gD!I zr-eFPyaLPbc4TEhTQc!VluquU^)iceU2!U51*KRmanX`7s~`8asVR_kAa{_(n4v|0DpSDLXzYl^cUE z!XZY$Ea5cHfT9HQ5$qID$l16qZYo*j+ckHNr1@m}0UYaP-ul3!lPGahVz9`^bXiQJ?lWP}Jry)$x)Fp7o2j&>gnS|d zpR1tT2TU_OebLUTXQq%ZJi7cCS9@X66HY~{_wr*#3=9{@N38R1RvQ;T=$%cIG&74j zR1v!19&S)!=bBUN_tz;6-Lv`SLbKT9N)s2hfMV3vo9wOD?+;PDa}Uql7OG zLgottITLev%bI`W10eM2OxaN=zvADZ79QH*P2vtG~*T-0_6BnXd?@ogte6?)+L7Bwb;@Xbr z(I;P=Z?c?(h6vR3bP-68X*pbR^>x`D@nzr0R2h5uZc}`RvD@Ta-ooz38)4tbC(mPW zMDKyPOS%z%Tt@%tBKLgzLp*{@ZXsVKa@eZ0x;^3DO7!w~>3r^u&=Nq_qr@nAX`qi}3JMy!#@OGF)g|gjCG86lk zm6vPcjX~@l{8RF~$;hk+BZk7`B+JhY$qA(c+NRG3`il;tUz@y13L^;>SyNKur=Kqp zSE+DL-D~+%X5xcro54>!j!h4P-h>jP&sUQ>E7g;kO;_=7+_#lu;Ym#7SbyB24S5GU zK{+%Iuf5bX#dvhXBzki4ELG-pBgkjkCuykrdhS%kf}>hCb7LXAt?KG-Xyx)suJP8Z znr7-D1m{kVL~KnCRR^_NlzCWhbzAtUO^v2l*Sc@#7^tOY7oDZz0j+M$DE{p#q53?b zRaT(Nl3RUu_}aB=UoyCqHXJ>dH<_zaly^m=C--g&#dsHJ?7C{6;5~i;6SqB=Jh44j zI!aitet(W2;L$m~wuraQ6JsK5CPr@SX5?kw+Fw9ixSzPQCQwnKX+(%xt-L@9t+MW# zyvl4c*67tSJ?U0B8HPE$@~PWwB4)3D%eILe*gA8rkwK&GDc1=@yvv}Th zs$+tHS+wCKlofT(Ph%NZrT7UYAkmLY3rws2u`1<6!jj_G1gaW}Wj@~~kci)oX>35Z zz5xQ-YP8f|+5R9K^u$zBpI2ASC~?6&YBJgAW!I_km=emP$I1wJ!i{S0?5O70OREy- zWK(Su4&d0qv|PsfwffHKp5yPsWIwEUux91xv{q)*i)GQTkiLRj4d~72x>jUGF)Otj zpN(W5F;5^QXv}#bBXNbuigsRA8kKh>ApC9jt6}C^(hdmDsR!!+&E{%`Cr@&als;iB zLjM)NX+hn5J#Q+kujiun-X{M^%KI!w@<0 z47>TA`aoPoCoGg)F)F^TucGU}{vtQ&D2sTHeNI+%8J*V)KQoAE-Yb6F&92Xl zkA*Em8P=8E&*c>@i>a_El2-v>dyM6o@SQWxv==q$Nk=aio;|+(fRu$W>k51UtK+7NE9b|f5= zdSi(GOhI_OtXXpXOohJ6`|Zw30@r0Sdxkf3N7koe5?WoHvH-idd+m}_^cYY7+&k&X z!ZSsG-lzz>3Vh?5z|e5DPv!CzzG)v>r*1=&{JgHzsD+40Db;gz+2)fGoVN$QPC?HFNXtE(?3p_<^Q;c6^v@o6K@s`%W681t6 zt3xe|Pt3Kl2wi7cMIF|CX%VApQ3hwrJMXmYV_EFvgwc%H-FszVRZ+t;vsSV(4+Jug8-Nshwro?fvFRyH&c_1+ zgoJ}%Rf{n|o{^I$p6tAonfR%gnSlH#pC`?K{20hAME5U89PdgE?m5B|+ltuGD0sKP><3 zl5IptP?^1BMptZVrGPj=@rnO@WQyYM1C%3`FPWU+ryZANhD)@mMZ5C>DI(r$W~9V6 zVne!ffKW|I{al|dXi-hv742Or6p0bA#~2hfRg&=4LfW!Y@IXUZGsq=^vUX8v;i0W* zVRe!jwq%>F!gFG*hwM5hJpc$#=wD!ir@5WC!TeHN^pNApwupW z&o!B^USiFB9vTC(p{uCB_Z!(o)-U6ZmAb^}xVL-Gvs^!FIl0%^>M|V0^=UZX5j%CJ zs|lP4OenV0JM)t3(K_O(Q2hDvYH^{;8)fvoHGJB8LLD*1^Lr^F$Uu8cTK3nJzABI{)=zYo0 zjwGpgFj-2yQQ^x&dDq_JC~K0zgv-phki8?j3c=aC*P0PW0px>*E?;1sp;t9aUNP6B z+Fz${&WxK-a+V64=j-pZc!m5qAVBnKlu+unt23iID0@4m4muA=qYknR`$jbz`_6^+ zuQHTx*!k$u1Qz{ZSR&Z^AseG3gKnzWyr3sAZTaw<8)ZHA_Fk1$k#@X!Z8_R=JT5S< zNtGyag$tX0i?3DI z0k0R9%83e9x8$Bbn+Q_c;O(*Z!+jiP-Mb$J4yvs0f1II)!joljv#S*jT3K&il@=bU zg0P1E_Ic~`v60BJ@aYY-xN{CQlI9ys?4OP*R4 z)9TYne$7uHDduHXbs22(FKxQ#6&I1FP2yVFp(treVNh&UnW-1HhB>Zf(q+rpkWwjf z@B8wGOHZ1a_DC*0FLEJjaRwivFP$N_bH45PbJH$j(##{h`uSH^-8 z7&vij0M6BJB5;mY!-XfT2A3r>!7<0YO+eciW>SmvOGO!@x;L%zTB`Lb5_!(W&SX%c zud2f@)n}&&ec|?JU(J~~t4i`-HgQpA&h*vtFqu+R@5t*Exie$fV0QcNaIO!2P~a^C zW8f#^5r9sb4CX+FYxI5bIvN%+DS^UbMuUZDE_vk#9JgOVBr_aj4hK8w z7C96r(z^P{j2}=6tVV-N7>j0Kbo}%ShSv*ge@1oD)4AxJGcz4pEK8ZM%YMtk`g+GC zV4TntmVCIJA+B9KN`B!gKuP;L=A6aHu{s;fJ*m1{bodF+ZMGuY!7Jl^cB7>oRYN3r zraCYE5va}Ui3`Ktq2LV5xP}+{&+DrmvG+5ae0;DZF&({o+-(xK&eeozch#%|XiG@n z8ILF}Tu*R_z~$#>8-Q6$fL_Y# zJJ-bn$X&~qJF|w4&LCPjarJ-HE`KS{N4{*0X23lW1ZN&J$a=U(mZ!8?qua#t>u-}z zw~F@hTvuEUz?*dIv1&s-oP`X18S3$5Pwn{P7)cD36T~`NW?D4jqF%L)JUQeS z`7A%Z+A=vd|M4fiE&|**&n2|AY;-9+^z`OHS*~MLM{_+-qiylSe%|p0d0&d9*6nJn zfG~%U@oWD3lwfdJ;6r~z@aePdE-!^mRmksp5AmpaWV8@&4Pkf<%rEOk^BbI&sho zILD^vh!MjXS+-k(b=e9&j7sBtZ=xSA5c`BHJbAQDgO5y|hPE=C86SvKes43s=`N6o zh18{8op!r3SSGtN-3xw|B^%=x7yyx1@z4wxkO~TzFHE>6iO1s=Vj^B_tzOS)aXx(F z`coiqNn&=Qa`ij67p-irQI*92DEWD@C|)*Q$D#A~d5#5%-9008olE$n-;<8JhgI32 z0Ug}88)c4knO4Xss=Qcaev|isw}?;Y72abDlrNV^b+Ob6s$6Nv*HWnM?EU;p{pC3U zo-eFA;&RZ;&)>?=a5QUn_ebzFoV6}*AwEzFfE2dFM4yA4+Z)7FtH|wD{3qS0#qB>f z6m*mcnshrZK7!+FhA-ART*KVKnPUVof!cV`pg@Op1zB^ew(evy0d$D~HM=A+r*KdM z%*}NRH7D*9Eac91atG9YynS;{Ls*^a?xUqOs71)dqBS9|asCGJK*-U%flFkrFw^Kq zZO2h8r%qO>eu;gWV_4=XUzRI?+ZJ7PyL_TXGkJOa$hC-kUj2vIi#PWLtZp9=D%1jy9~;fq%gY!@i)(H8^cv$-A78ETVBz_ zZRsZo%l#X5Q|-8Dd#gew2`UjI4m7ckJmt~RN?;8x5k4+_%Y#Rj{1%9S2QC0 z#~G%;!9;N~Ozw=Nnm&o=77X&X>r=kh3<>aV_&b#*zEQbJCsFBdx0T%vZN4PTz4JyX zloidc?!KH;BUz}IFzM=jJTIJHC@*WvC|mrZH>@NUkhUaFR8-o6p{Z|ra&D61Q1%}W zCtEh?kI7GaJRhN52K@w}0Ilim09HI}1q9>6RJ}O5OCb7 zZ~He~!T>>`e=hse#le(OLwL$%hbM;~wj8yL1E)%z@U0);F<@|uhm51|LmU0}A*G0z z`Tcq-E2m$uvC3*iU0(I#-G0`>fO<=MdP?Lv_q0@tfyzN5HHq2n4amm^)LA{gb*{Ez zxw*n_SjbpLfcF#mlBzYn0&4J@&#-O-0hC?GT>2B}=%*V>YzOi9SGV7$Zs&t7r`; zF5q7YfrJ^MmN^V%+l) zwP;Z)R#=Vr@y4h(K>liZ@@cLG+tsffX%&Sg$f2@(gvuHv9piIX%%a*)wFItAT@?3$ z)$jj^YfTZGbj{U`RIeZ|zH^&kUF<9JFIc^7XAI5(%^w!(PbudqTJQ0xe0MxgyA)iU z_Nw^`>p+{@2~?IdKnQ`IaR-FQX$-3U69O`hhe`2bRERm0tJ5TLyOVEuied`2%a~4= zPAcc>)olykFAaK|TmuecLQxO&4p?%>E|117S%>6WdzP9 z$o1E&wQ3cDAcc|ILqd|C^a%_D_t^qqXy2*3V#9pzo09~=$!feE!16lJl%UN z;2>JmapH5aKy(B*1*4hF9QAc~$IR$kk6l1%si=fe+rHsJC6aAFDMu}M#F~$vnr%4` zx197aagiI)6aMl9j4@z`>QJ)aJsujy3z1nh^LU$(xJ$>IK~F$)-gUr;ozhkFgaTY2 z)!m%z-jih=Rb9x%>)mz@!#g9R{L-hgZi0}NBz(?pSRS>>+4gPb#!z?$liY}|{`baQ z#Lt(CT?Q2bwGzlo;)ze8tqI{M6(oLWc2z5vqcwxryc}ksYB-&9UM~t-y&B}{zuWzs zMVKs^746}@MBMc)KU{idbo++v?d+JRI#svk>v#=xls0C&msUl7xXq?cXtOcsBoYGX z6E_-lqDA>Qfi<3={wh!m-dOS>vn%dxI-?hO{X%Zi5h4E@B(DF%*_($$`L|)?E$SPR zB1uAJ-$TfrQnF{6G4^CDLUvIIHdO1#|VV=q-+ETRLBl!>`N-Ut-KdktbJ{|scZG!x9y6C}o&X%Uy3`zt(=-Q; z%Cp^~x##9QC%ehX9`9E@R&8Hl5Y}yA!;?djI12td2=-*;I#S(8)6$5XM!HIY@B9Z(>Yp%Rd#6g~5#c%_2y<01he&2(WtHhZ*$ z-TF~IZ$af9U1IL%A{3#uP|_uz#d|vsI5j<4b)s2_8G^mFZPpd8r!QhKTv{TCB0pQ-1@tm*0rZP3fnaQL*!RxaJ#x#mqEe=Pk=<6>t zTxxau_b`zQKglDVHbJh58i~4o-r13W0t!YOwcwo-6F0u4ie&gD4O|jA@66H%roqS8 z#b^%KZ(N9edwZR?dk0~`QlbOWp`wtDt?UD}vHH3iugH*}=BoIk@fc`{q2G7zW0HE2Y7}oD^ld@(N)hJFSfR2LZqBy!OtIe~ha^2opRw!5!CG zBDGlAINQi0!XcVja~{-|w^-?vXKf9a+kZ>1S^|~K{Pl9A;Sa`|u}Ac) zT=Si_LD5N%k$ct!)u=J<%~&VYz-8O8>%tTEhvLRXmFe~~_jy)jDn^!dx+cC8?<#Ws zH4L$Q+=K}Ma|CYUjbgIwXV--=<-vaLg3p^f+#=&%ppew9HAL0LH~?Dqons*D?dNT| z?}Tbxh0+%E%*#?GAbZY<18No#Z2OoC%eaiE&zNvFz%{5MYrK6=vIm^I^(=4`o;H<- zOT7M)aC$QwRs}@)^ST+Nq87p}v8JaRz#e*xEep~CD^s(rEC*&!<$g0?#^dnnGV{Kh zp!QXO=e(wf!sO;%`mcHb$v@mjz5$|uM@-l3uXx%1QrUlAjny-3R#t(W5$GGL#OZ*f zf;`Tpx;xJvFj0*zYxm4Q+y>DgC~UcGJzJ+!`lc>Cd)(O*jcqXXJJvG}RFS>7TS0?+ z%BsLrlTx$DNi_0+RY#hplet%_Chs&}9D%xs>PQ5EVkoFmRQ45E;va2+94=YRG>7r@ zB@B-YV5Vv;86M9P^?heHKx{fUEn9Lisz45OZ0ZnNN)j@2S-A(0ayA9p{Iq6&sbyte zwbv`@$75_lBP7$wTupUGv=K$Y*JzRhy)Y*7*BeLzwG+sh>}(Auodu1�yi}WPbt} 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 literal 0 HcmV?d00001 diff --git a/docs/developer-docs/6.x/headless-cms/assets/docs-explorer-interface.png b/docs/developer-docs/6.x/headless-cms/assets/docs-explorer-interface.png new file mode 100644 index 0000000000000000000000000000000000000000..6e191ba418b6e5f20ea2867c634c70b8ed48587e GIT binary patch literal 189276 zcmbTdXIN9));5f~?Xr;#h=78EQi6zdM2ZcR(4-_7T0}Y_Akw=9P^lsyO+Y#%Apt^1 zKtWpQC4^!?MOrAKg#aP&E!^ikXK(j;zw3Qoekj*s&AH|rbKIlcW6W3gbnmbp<2}a0 z!osR~_qG8G%ONxi%fTZ@4gpV;7bvwXEKgW8Z{INTwwO=#Dmp_loUES1 zo*_@n94e@1yhD4rPc5V+sm4-M#|>#{KbQ1=J6~VlE|q|^z;T(iF~YYKq4@fpg@qI6 zgHPT(@}GY^jBjOGSzVp5J^2aq*XO_+6f6{Hk;=*%9WfP=a^pArvHy(P`z@cr>r1VT z|L;TVLZQD$|M)))wU+4cNcnkmY$@3G>+&P zPk~7K2koz~ZU4ur-)d;^*`Z7~X?7(sHpfe1LijviER*^WTN5)EmGlaDc^Bhhv<5mp z=D9rP;YPpL)SSoBU*%0SAb(9yfD@pBi%&l!4Mfu~9}Uw+ zwMVz|Kx*X+e-*!x)|m0j7+9Rl>*~l8=x0`Q2Mc&juD)~07K*!4piGwiuLJUzUX1^U z%;N8r6x(M=jBf=c>5jbwXYl26{X-UQjAI(cqLhyM35T~{blI~%??P)Zyy;%!2Gi94aR;qMwEJG}N?GAQrBWrR=fd%ME zKI%x2a_5u31JJ%iOdf4eQD&MRNSU2)oWmHmp6a)=Zb^UicztWmWrJLunPA~7=C|Ag z4;D?coeVhGn4&HgkyZgGA~1op=qjaxp9gX*1_BtADh-3#sy$_MYl-^>yMWL#TTvyW z1Ouoo^laTm{`|K){HBdr!;|f}j`d-$K+#bjl1d55!mpD$;@U~}v+xe^5$q%|j)f|O z8=Ph|Jm0Y?=?&+eqU3yy#&Kt(Bpg`c!@BwIo>xiN&X(gGl*)2=XA+uFZd_(~@9^KP zR?j(9k{sHg7ZDee1R_ zyBh)X!y+pl97`>v;|6l2kG(ID?t(lbMbX9&WDg3VZd`NaD?1_a3y_}Yw>^Yv;+WLk z(3RTtVG{R2=4Lm}T2GCs?b+X1VcV@jPo1x&kF7#bveMFTm|tJ05uB?Q*5_a8sU$IX z*n*ZIB?8QimSHBFvXSN;Z@LOSv_6P72WOyI|CGHAPwiR{c+`q+@vd-dldX}8-d(qq zf7~iuwPmxsw^YtP7SBs1V9{z2c3MYx{H;Rimz`e>SdR%;4!vfjdK8RA+^*>aIb`X` zw-1ibSV0hXBBP>g@9+mWIj4#f8Qa`-rx$9Wz^cvc+o|}kAD`pB#(eS&^jf~pz3kqe zv&$MJ0MGQv-Gn>x;wISJUegk=w@M^R(SJMpR5 zr4tZ^TU`k&jJVGNaCW_bsqk-jq8|LMLEb4bia)TOH<_(sF1NYLxLj~tka)jH;a^;; z?646h4B}~u$wV&5qB$4bhrSEBO~RQJ66nxiqNyGwBz^k=W5$=y*0l3WxnoVC8m)78 z14{Iqt>n->W&=Kc8a+OU;Wc$N%OMv_29%Tp&=8V(PG+0V@{d24ehIW$YB3Jx(J$-B z*O-jFtA7Ozp#5GqW`*5IUBieAaYDkymgvX&4@HFzV#0LtOGYVe9U#{!nAZNhbRW-h z>ds+nKBu+fB4$rxbUwJ>Yr#VyctO>dkj<131aGydjkT$+^wRLpPhrieVuLP0jGBA9 z?{eBv<@6L-8D%sbU3$%T^IQCa6+E!ABw)U4^)Vy`l6i7au)J|St$w&QGZJKz#a*Zq zQ%R{$Z>O5>5AvriHOK9ak|edls^1*CVkaEAYhitRbNze$Tn=rX^}VQr~orSmrsAX$k}&qL>VS zmKHcAV>!;C23^@^;?kLB8;l9B@d-yPv3!*J8dKjc2Gi%aj0h5K#Wj} zOUh_H`_2Y0JD<_Q71V81=$N024K~JzHwiN4A0{P)O8XXvVEen^PNJlLq6cpq564qF z6~+nj!|vfusU8ZgftzSJBtF%BrNA;>ZF@NyGO9xwe`F}S+vQcqx3kkE8OXC^@p#b( zI~6<@KqtQzUV8HU6ckAn!8;P!>M1GMf?_?h)SpWt^k83tgdn%XU)*^dncdfed6QvO z1Ro+%2Bb>|F_sXve<<5e)BlhQiAaE5BnP&bXUykYMWIImsR8sC3wzd)=&3pTZA#$L zJyGMhx7o5me8>`5d1F+KwUCgIbMz&~U`6_I8m`(`ow!~ng^n7LZr2#hy?F+(g-&bV zLm(04AXtt+4F_+n=w%7=w<(r=66hzB?PzaZx{81jW#itl$BV;<6%Rh>Ea&(KJ_n)^ zP_85h^~0)e`D6t0<|aL8sgbY_-(E==_T_VagH%PL=ZVJf$o1Be7plu`_jdQdF%k%% zrePg{tI2SzG5FnC0ipZyYu^a8_;(9;`=RNa1Pjzin&8jq0M#-?Mi`!t3ZS)_RTXc= zm$h8=ZFa6&@!j*C1r!r&i2jc_h0HMRJhN*DITsTC={xt_O0@Epw`h9B__LF8Hd`z8 z0T;6uN8MLvhhcWBtITq$k1kof+aS#S9d4TvT<~-6E3HSRz$rzLkE|6Le}HS<{=pY zxG8n^n%gApPfz%R&py<^HeUN;eL8O9r*YZ;cO3-0t!V9dJc$f-G<~;@vo{4yd2es; z>pDG;x{W4DNPNKJD*Q;V-W;}GU(}d$a9FFWb7w72&6p_TaP|_9(WsMx_`oh;4@2Xg zMysSLpt9*>ev&ntZ%y%My~gAQ>isw4>%g~s;GdRk^>w1gp*|;Wnf~;GCH52ksd5pQ zhtVt5VI?d7UU6y3`xql|3M8h$sQo3#uw^1TkLMpTS(7bXgWRfn>e-{;kLnbT|0VgdmnP&< z=YA7y-`w-yzL9Em7Jz-05S-$3;9ig~97qd_^!#PWkqnc+Z^AoU1;AJ4*-(gx4(Pz& zH-GYG*^hvOR@TGM-dPUFG)FfHz$NeQB{N;g5Dmjz$P0rVuKzlJ@ycBH51lOj;uSZx zA5nm;0byy`#_JPGDVdr!|4e{B;7-as?p(e)kv|t9@LUaR5t9idgLb!svQka)DE=~S zv~%{h_%CV-tj=}NdkRK$`RBVp_Br|CU~ATDTqXn!6)QpM4vnzn1W)o+J$tMR7%`zzgbIgicw{{L5;`+s^ zAIVq*-G)X+MNap%7pT#d`P(Vlhx_R8dj|;7F1hKx?PHlUlwy3ee+y_uL|NeQ8-=0YI!e`LO zOp|1sDc|^JjkjGD8mMgleqrzb)X7w@@%DccAGbw*?0yJ3`_~s{{-{}~4U(6YCL}`u z9sJ9m-q-ww4{Jpoy#laB|M{ubx`O`TAd~+9`q#C%C%kG!?f*&G?ElZZEHjt0_eFff z{Qc1<3~w{$*stS{;vKDJ?Y^84OoaSp0v7VcM95evkI_FDq0!R(xViJ(GuXkuyx(I! zn7z+>kI4D^(`T@<$EWe&UqAY)71V)ZvE};94A;Gm+7equ5m3N({pInK#S&rG2V+0E zoxeP0sXiV9VgF^xHagZ^{~UkQ8UnB=e;NDpOG`&${vmelL`e3&6Rnu7ylAI5=BlqL zi~AXK#Ln^I6J~f87Ur#*t#x`~z0dlm&hl>6-&j~e@}rI5vy5)r2gO-AG$L;w z%T_eBrT_VtiVELF78c*OMd^Q?^bN@+IDymOl!c{7U}Hz=pdgBcg^;D%PtOwD*x_Sg z**Y)|&-*&cE4#hP^5m0cYGfYdTRS85Buowqr+V*lR)4K12PTykkWJA^=e05~c z=dgpdAA`gUmyr8dt_OW(%yDktzQn>Z(DL7BeXxq0vUX!rRDOXYb-Q0=eITv@ak{_h zIm&9wwYGmZNBdI+aOBLVRGi^bY!M5~J%RD)+^-B57M2+{|De=oE{L9`=>sf>o)?}!t!2iiRp1H@Q+h0ER+dGFQ@-5>%S*P zvhwcuvwR%5QNXkYZ!QQDF({(0t^oe%AA7p+f8JBU4JQpQ9vv}TB8I%q zYO^)l?yGqP{SuSRf*#)#Cp#bMB(V+6`z$Q^(bPMJOH2h8mbJrm^}3%b zO^j;taJ+I1AAcoe>?U69|^UE_tAX} z3k=sHVMIv>7QSzEghC>u=lFJl^ucl9eEyV!UIU=R0sd;qkL{&jqHg*O`0*;o?4 zxC>RI1R_9EF^87+c;TN*F_CcL{@+cr?cP^J;m!ijU&cF5F5T^_bP$Q`$c46#0+G@G zLi=(LNymTaH43K07mCL@_S8dh0Q`lrn8mj7;}+!~%pX91g__#Y<18$+Wv2bHy4^$n zR)+FJtU;OA>hsbHI)P=5h%?giWqL@(QT1>}g% z|BEKKy)am9dm>Fq(us@!A-bv4qc3M6jvs&eg#Sm0o5@PQRSw)W8Ibv)TpLy{$oc@V zp8r>(Mw@D<*WQtL%c~Wiae?RY{lrMPZW2UnVSNC@yI2G(^KUBTYAk>agt}Ca|8Hep z9nw+YT>?-6EXf&$xdwS7ND&UeQ`qn6g5>sm)7ul`3ut-&nuXj{TOvc@i!@`YrTq69 zFZkl-lCTVEAU#Q3%O!+u*EGH6V_o$Eu#ylqHm2QXX#4kMjtZBk3E!hM8>#(6jP&@Z1`z> zb#R4&C>*@hCCfLKbQ_AehyGnL-IW*#TjQ~Wys={X@oHg@LabWWvYkP2 zEh$=e^t|yYj-Z`14IGl;TuHlJRnivq(-3-z+xwf@cJ$(Q8H4Ha;-+4!3#js8KT3ra z@@=GDN1Nve2g+u*z)0ET8OhlI7h2>9j(_niz+}Zv_ePi13l3H2z(w3cX ziTtg5(m0I(A&tK!`%l+aEu>yQurlYu z^j2KQOI9iy^UELy7vt%$&vFXnnADOV&l)~$O^q(_QZCi6Pniu{xBN>NE;G)Y>00KQ zHh&`?KJ3!ln=#g#_byd@?xK?OS!3n9<38!n8_J(YDV{eDl0JWH<_+4pHNft(Pl5$k zooS$eD-+2vuCrWR=tYQcIpfg>i?2R>CeRFPX8Tnt?=lZHYo+DARe#kw!#&KiPBK5T zD z*mbq-U^7@p4Yih=g2az*o5662^&6ibX{URCpG7T5GQUk0kxA*=t#RI8d-d$Hva-I_ ze(v)vsTgOxy1Dvo#FUC1U=T<gr>G>vvI8H?(Z>rP4Yb+4 z*mYnCJl4iuYTj{Kl%{?)gGp8`ulto8zYNze>ufeKrIvbOcdTztZ;hl-J0cA~AGN#G zIS2sli|R6S4x;b{su=aEYK>AhLF2jB)fqpRw*Dm?+ge+vIJeziGAq}-mijexbg}E~ z^Niy4zHl4>EgK8xdW-(fswil$+=J=0CymkF@hw9to)Xx~^{M%#30-knN}{+}a|KZX z2#VjI%}$1(sH38SO&A07`XGfPw#1pC`&~ews$>HtKVpzQ(myAAEycuF$97^yJjO$M zi^m1hnpZte@Xfb>>HA^bv6*1b(PgLzpEzLWa$kx?9GLl7B81t-&k*=S`1dtc>mzd- zcc@y-P-n-&@gd*o?cZ)XQ3kFZ_U&_N((y8)_!{0(n3|3nFG6XLL(C6UevJbwyPM?2erz#+r{MN!($8)zaov^dBKAJJ_r{=4A`%Dv~86b_Rg&p!Ez9ch7 zGeltwR$yukJsU96cP}^YYqSb&_|b{5rRv=n5j@EvNGPs$BOLD4bVeEv)*zGWnPgDi z@)vpuchF{vleP7Qfz5R8pd_6XycagoqAv_aTbtgMm=~XAP};3JFmFDcPS4u)USteY zEw&mrrj<_-f@q@&HwP>}xa4)9BAap19$!36*oZ{cKtJ(~K-q)iK^6OLA-fsNUt>hl zc*Yt#y~Yw!A2s_7e+an~>N>aG7*%*$TRO|%C@E;DWbA4Y1JalRnbRAsd-!&CUuP|w zlHeCDfy#~GD}jCMbIw)hZ_n>9G<1N-x0w8)pyV&rA2y_ny%rVF{Ae->c1j2)kWu+9!|ROj@OrzPV-0iv1Vud zf4uspVi7R0FnmY8P?wae+O%~_U2QWU66uv{OoaOw+R>S8M@N}InnqUCGt6-PGq3tR zd$9C_WyK;lXlpp^4V|R+CytsD2R+mj_$fE z#<@np(x?kOQgt85i7*-kzN27l+wsMwo?sU=Tvjnf@Y4k7>WGg(Wl6zrqO$@7=s3MD z&C-_0p%--7Sh#$2^~pS&YFS~xs7{*i`j+4e1-SH@kUZ+iV ze*c+FkoUm#qK`Sdf%~vC=+ykqzcjWPt97|jd7$@}ylWD$2N7y22@b4+Ds~ z3-qklNR?$xrqy^0?U)}c4V^+S`poSrZ{hkaANX`vB?o)e}9r|QpXwcOHkP>f=%EiGeot$ zvVJ8uO6S9X496wk++HP@aZ7-a#_P{g{sIC;xZ^q-8#)9x#?$KUBflv z0L|IaBURq8%FL9tEW4+)<*oA0wiCsMlomRJ;4!=vyP>2@=A(GQ`D2yV*JmoRfX92Z zjrSZ^Gj?_=kK{j@^3v>8i-qSdN~)^kGC6C|_llOrGXm0Vq7x)@$(?P1&QIoHJa>J9x~+J);L=tEvQ5ZR%r-aShf(p3~P{&_6zt!{m= zX=9`vHv9BAv;ts`p6D7#R)gfzf;%LbmujMe3N57AVIeTC8DNXMJytD;w@JZI>kqZp zrKN@GtLUH*SMFOwXN7Mn98JJgiVbijzZ<-b?EQGp_VuC3<#LrN0p6P}Hg`qA4TlzP zim`f~CD;-;icKPj3%NF992uThmJ=w07 zn@c=OPIOp)05=A7`{wcU;#|*&2{0wQ#eHqI@y-ur_21{`yh1G2ISuC+Pdi_lD0h!_ z#EH9~Q76?5CYpE-6CoZn=HS(J4@3qX$F%Oi;9<;^Rf!gtuXME^GfpYy>jfj&0NRc% zwK&LLOV58RKsl3l+GB zouXx>hY1_hPtD1XM(2JA?a`?huDL|cz+NL)QXI6Co~bi(EV^ku*@q}G}Z3MTNTo56#6|lp>T3A{8&Wn&0 zwb~U&9Xxp9a@7oKe#S6iiZG%B!&5NFaYtzG`~gX-R!OS6-ge)W-nbXGZmfEQs7_p? z1}QQ&B?IFNP0Bz6q_Vs?-4A33Db&|Yt)y2Hf`V|BB$p7RCYywn#N0dnicNrJew zlc+#?dV-)+sX3d{CXM7Oj|^9D7uh0RtHa~ID~1b8qJHB0mi zUbLfMZFg7J+Je#{b3RAY`q7~g5|>Q}$Xoz5K|1zVJb%~8_3ZWflVg3Q3&83Ou`?`? zuFv-UgBA{jame}fP5~{OPr43f2n22QT}jF-UpRE1VH=R!7J%<9Obm zAEgGm|Azd>^O zEX?z&pBCpGVS4m-l&RP)K9f^mr`xuqdg>;wsUo(g^hp^xUqr2-NLef0%C_Fl4+f8C z#N^1QMTtqmhqi-joVy^#r0u8S(QFDazAjs1GojZ4`wSKQt9gjlyOtB4_ryQVkw!W2|_?s z);9Vr8C3X=p(mp@z14YV?LyMV$&F(q8sHh5ZC8! z50@oBgd*#wpMKlg?4$<5hu6R3gt5^Rh*HC5ObPWVu3rof9+1H(A&rjyWRs~-dm;wR zOvkpl#XBgYiVH^i6>o&bjz~)H>u~S&hHz|x#R{cfH23ksCB}X1+>$LEbR+;`a3vR@8EHu&0@s4`Jq`0_C;)W-8p{^>5~(ePKwck zrR6+2XYZ?i&77B2%k=rfe0;eIlstFR(|oS(Iw_*>^oYU1t<8+q%Cd-)u5W+maTpQ) zzBb3(Na1xUoid8BdEZMXln)2srmp!10B*2^J~Ma4*dW3MZ3@&*uIGtzoF^V*KD=M3 zc_2~2`A`gi-(#C&k2)Wyhg&s!IGwbz{GyJ4&bA2<#lS-OPqBpUejD`ziYeB_CkC;V zu1T!#?1-loxuo1$Y8zCGi!)|^NA`1QtIx7K72%$y8SMKk8u{KiuH#Y9GyHPhiH~8+ z$g*cikZM?u&K-$M$)8gow)PvJ@Pqn&*UfE~4IK+e<<9d+ z8B(|{W3FzI$DYF_Tg&HGU+Sz^Mroh-Q|jqqO%PUekBWcOTkk32Kw=n-qZd>o-(!y> z=`puE*RtAhQoB7x=E6??tf2T;&V!Ia3hm1g(~9$T#eE!2BU6SOJo2--Zk+Um>P0!8 zoZTQ0>Bkej&F8TA7QKe@Fr7j1{Xe`UnHj>T%z;iyup2#LH$VkbFkwh(yY$*0aPZNZ z;COBqwS^Du4W2wg%br?tc}FhhK=BLU!=jB~kQG!+TD@0FI?B3d$dl&^+oJ@jDc)7 zkg|k~a~&y&B9bZyx)DY;L=OYL5n z`E+mGLulK*cx$B*`S6|-o1`mbJzrKJE@53G_%p+@(yb4@!wWCC0Pb$L z-Q$w4Vtbxx|LuB;UzYZScangr&bQ?}z0*)I-EP#Nd5re5MWhaM!gJR#=9cfHe0x?A zWQE@YzEy8Ln7-qhov12MhW2|oe>{f%| zCz9w8^7V~UTi$aHHTA_O<%e8?Go7|SgANn{OlRQ(+jtc+^thJh_fC*XYC%b+yU^+> z-7lq|XGaWh$N;_4h2Uo*w`s|54QpdyHV&s9)h`WSxbg0LW4Tx=*vwcsO8e!8?YKdg z*jDqnJEbhZk5(NUhl!emnGm02Fpp2Pg*@t8Z}J&`eHaW34!mCJbcpq+)hUL_A-N=b^Pw5=N8{Dytb*J=cHIA2cfHDT$ zz_A-I5_Zk5%Eub0ZQZTZwX_97))LJ_apUk&E_N=y_|PQTun{~m?6ZmQaM*m$M0W?# zI4;$lbRgQOyzOM)RsTsM>6qaf(2&;sA^<4WOW%a=tcrg!3afXsy?%-(tDyts+edrU z#9A@EzEBFg_^{D&ePame$sGau_AlB&{wP+eSm0L6(AM2z7_np5oeZDdwL5cO&|T7o zeRw$_ez2prT=DVe9wjtL+zJZg1nYl(W1%dnu#T zayS-qVhmHVyon)`$`t~1&W7K`*+7q~2TPn5hz6NgY9A)bSbNU;`^w-96JZdxBsJBh z3UfAfwliS>P67^>cB;L%BR%PI`A}<*Z8Ui6Qll040kL{SD~lSh4MK)zeTeHbrE1b2 zZIR2xZ)$l2RMUJ#n`%|ZH@*y?u4ygevV{_FO+)Bs0^w8OJzo)~EpjX1mV{?w&3ni1 z#z71vDc71EInz&jmB0_J*H>~4M3!;m$idrCpyD=@4XAGZcR9H1Mt?Rs|gn`Lu?A|LoS9m^46FGZSxIUeAUG5bo zj!mlNUG;?%zcKx!{*^95`&d9aiRH5nH^^7~WUH``1%yl)91eQMAj1ck|4Ie zVyQ3GbTi)Vf=FIN>%IL>p0~sf+*Wu~ZTV_7oe$jdP+_7P)^GU8w{u`dD7;7vENAd` zXduQlx9r5)g~E98ix~tYYlcZ~)E%nnoKWi{l8H8$-7dX8=O8i|dyw{2%I5IQLLeNB z%tWZqDcBe8Gd29kr&+j`Wdpy}obLRPxzpf`F|AFTv($U$SR%1FS|*$na5yYN7T}g_ zo9I-qU%s2Mc;|_K$C26l{I_SjLy>#zs?%%^>BqehRfnyqpQ|VyNPOdxf_!}{feeyNaq(kD*70_{S^$kpJqO<5ZbjQ&9DtM4ai~Ckd zd*gJDyT5SGnKh5_dlaR@UCz}G?z%T<KUXONnfQb6X8cyfjjXPg9`mCvnd0U|a#LfrR5Q+RBoE2v8bD9jQ7R*|E z5|L@L7NlTt2blhngh_AXL*DTMOa$zrmBy%b;N}Ep`C!cAu9HAy%zPqeG0rtx@Zq-W z%eZ1Ml}o5x(X&B3^E<>2kZB5df)Aa=={;gQr$m%NKXi9_{{n0M<$joAhTr+!ueR*c z^V|1L;)abAVL5YzXtKLDZ^hPOYOpz*>Xx3Y+g>`SK68}eZ!=|&{UphH4)98s9wLCk z*tCUVz64qAen8G|1M*sG4v2%|HQ_e%MK6}z3mwNxNNIcFpeVoAajlSihH`y6*$N%C ztL)xovnF<|iz@Obod_Zv`mtM4#!*Ivyg824(f%x^OUdA~SeWMSk+`XFxw_cEG0xl1iEAfp0?e1S}eeR40p$g(*0~VuYM7+5#eb@T*rWG!v zFxF#9DsPgY3`TnG3h9O3l^mVw1O-?~_mqad*(rD9&9l3NfHq-dke*FX^idyab{L)B z`{ApX>pj0`-}c=R*^NaT-v;iRaFVSN>1X}d3gQ=5xzkVATk9}qHn~wFu~oT9;Zz}> zBI&a1Axw$AcwydDw3g_by%ezRisOYs{1jarZwryAwt4WGT(TR|z4N040b%jv-Cd`|CS;*uW3zzT(#2=EO?|hM? z``gN#?;w76a7E~x+8{;ts*V`P zO4ebH)T#w_wW}5nMbUFKd2>vAJ#$#}vlDgvhpOlbZwi?96vWIBjk8$q(=@z3mE;!T z{CZ&UqA~gP94SOay$~@>4F^(~pUp`CQ3&j1_JXSX;(~TI9&RI!@aTuV zF(@6_YZ@!fihFD#*+$|56LaO_>Nda7LAmcbPQY<5Mbb9?^Mm#(gYiwGav27nXBEH4 zJsrdRAqwQAuSCH4~P37XQ_wd7x29T zv9F6S#!I2&Q1{YbofsTl^vORNAhM>i5);UDhHlECKng90!J-w~Xvn`>6-pmM7+BfF8~5|?Oas3L+7O+f2p!&Pid3|Y` zXTSF?YVI}wG*rqp>CY;iSKQ^n{~|2>Z|!Hlq?6SC5k+lnJstaK2GO^k<7t_h%M0^|vM&6mvU zPWNZ&zLQdQX$qLFru;uRY`K8m-c)%s=UXh&H&a_-pUFqV*x|k9iOHHXICC7Y^ow3B zLCpiu;JlGh9hR9d_syBQijmW|K4c4#+R;jS=7Q!jkwUw>p%J>H9+4XXaq`+E3;+JN z06;v-vd{J1RcH`*PWH|$1=0_NTdpIOr<1glpybj7bc{hS6(laZ6A6g&hB}mF>|V*TqS0D)XB6bd)!x zEvI1~rC4>d(7)s2yr5W9B2Kca_6Ox8#2RtUp%yeN4rfH0nXAJ!13OU_J6jb+<_^8v zs^ZR@-lBW4cd+)m-@ES_y^fNx(9(*z>NuXVuR&WWhjU;Yl~sNCtOpp2H8>3J4xAXR zDiK^$wYe!uP93aSnGDUrGP>Ay@Q!{lu$+lF&dr?sq9EYn2;_oM49ug2$&p@Ypu9zj zDxPb>%@Lh}M8fmS@|I!s4kz8mCuveEaut@LUj zNWZD5ZKo=&V_#^;AO^n(4Vcy&PD4GmnLfboTtAdMoHf@%o{s($-T_LzhD39zxD3(y zBc=3300*>ql$AU^_f#fFVZhEzJis5Iu*uh&wJx9DQua{Ul(R-gDykUe`@Qu35ZLAI zmrT81YFm51-q~2<(t%D*I~}uj^&zhwzJxt%4RpMYL(!iBBavm_34-UH`gcm9)cP7E zjS5!Ca7==@k^`ktpOafrz3*IQUb>H9On`QzXFN6z-D?A8AM^k{)d%}JijQI4jn_F% z6goleGG`?eUHay5E}Pu9G|PNs<%Ow*M?T?Q<#e?X#{RNskF6wQ4@Ir@9TVUKual zn=q%@pOc`CAx?5%JT*4Je(J0h^R-|e2GcsgE}xM}hpq)D53i6(}aR6y;AW6O7Z zNjl{Q)A=2Int(fy!C7*!1pc8Jdv3kfp5}Y`=2Rk9j!9k8t7#tcfgVfqz6N9p|LO-t3#0bt_q2*~IymIi?HZ9Y3*)gtTVXGnorF zIdtDWUc8u5Yk~+Xi!HH@uMG;SO{@|EcpPm0RUo*JQl5NA@MN6ee07RMsw$;w`y=fm z@$g;ehmqy6-Bp#2>9xPBD!tPxh=9>1ri1>VfLJpmWpvGb9r9QEsJr*eYWFS(W)TS0 zmiIURYzVn2{XDgzsU`Tw}%1bLdQwoXu^-4;^w_Q zN2vQn*8YBpUtBz(OvT@L?FzhRHW+r%fO?cQ{65|_WAM?c$87)#Dg*g}Rj{xh4$7*fRk(sgrUer{6Zd=sJF27$RfeYswa%XmlprNK)7G2@DePv*Fn>1lkG8S;n_HlbvQ})yZc-0+keo z*?6bfsEOHCv%?b#r>cAVBcswn`w=Ds210o7kQ~mPEljXC65V(0KHu1B1HvJs@v)d; zzb-aXR+P_d6Ng6cv)12=)jen`Ms*$m#_o*|5uCIBpOFeT6?8}R>>u7xxMK3!#I~Z4 zBS)?->_n)bVauRO$@=#aAZ%(i!_?Tn);OteM3!p6|=Fe_LsuV}kcA z9qeNlkvz(-11_ZJ8C$UGi%APbsd_lrq|aVkj0LnhC^*1+-0!Zx$SBL_`KffpK1wkzUq$muoL%-`d`)s5ces z_gQ0lG3d{@iErJy(|Q>pZKOd%VJw9%T2Amx`Fj&QHfUB)z* zOP`kA>G942V#HH8&E7)Se2ZIR{hY&C*W~7@z-NO7U&P*+dU&{0cHg-38~!@m)#ieu zhRtI(ipw1~mTKzrtyg-P&qsPHTbdogGBb3v4Rm<<)h+U^cK~GXRbL&wlV0ByA90*V zqS|>rBU{ighXY`B!L=f?oE|pQcMduA9(bH-kG&O&3E<{j&gF~*hZnp+m+H73QJ*Uv zzIDH0u$s&FZbvz({SmuWD5mbt*pa9hG32xbDFOK(=p=l8evs{pkrWs}!N9+K4$7h>=J z#ZwV6e}Ka+tCm>JNy%n(Jq>v`u77|SMA z{Vo2}lp)Uk@wY8gkrVN!YsWLc%tiKe*3@a$sU)4HSUHkUawRD>q@7#i5L3^MI^W-u zR!M8E?1}W%r&Q|#ePKCudI80?Y_$61(tDqiJ1#QM(sO_^OabovUKj8+o3?}TYbw$Q zOhsWEbXD3d*Ns`i`x{|+>IR%ivIJeNMRoec9G*QVn(!2WH5-i zHXXu#HLO``Rr8Iepw*43o&(X!JUfF!GGliTx03eR7;wgxYXPV#2D-b>mziAR(F~IX zg*`BEyqRQgQSUd)c78<^D=zcdfVKIJzJ8o<5xYsnUE7#KAFjD3__osRvdw_o5_p34 znN&a1TOIj85^Zu9;Ue}Jb=L&0eJFAq#}NnM?4;(F8T}f@_pC$?h0%ly;;Ro?8jCm3 zpB}BqF?yyXDI9QkElIR99ji85qvl`dD3J6Xj6Xg1O(eaot7?O?YMVNX}lWWNEemY26i(PbC zb!!~!`T+>s5Kss0bNw0<-zp_|!0NL*)(`Jjm!FOl3fL+iDE8th6@HuZTZH~+!@^}f z2_U%#mDi`g!~#@sj<2j?Qj9c>UjQ*c+}NTGeA?`AvK`K&xkkJUoD zv1cmExApTq*(B$DkGkY4eHShr*%^oXJPOi^a+|%8_9)#9KGRggS`nA>+2%obLTArB zVrJFc4qwLZmTcV{nU7W5>l^Csf$iN%N)KM(w*E~l^R5GRN>WwIcySIinM@H66TKYk zaKWm9n&t6g{pydQlf#Cki}#L6zqJOnDvkn_Yt_o>9ECWkoVcKy)Xu@Lpqpaj1B*Th z@RYNUzwiv_j#6XLvCjnU*J1A3p3R%>x2zMoQgQtb?!UXA2)o@^ZG0!aTz1rw`rM5s zd_elEr)iPmJ3aMavB%w{SG}}+gnDzr?iaf9QtL^H8G6jJ$IP-_=#g>&bCacoaXO^5n?o6 z-U<78YQG=1l+?P~x!WG?OZf>XMVoo^L#c-&Yh>k(Yj{l=N~s#tCc;_LlA_O_MX67J zCZ)`0k8zYAC!lyf1JH_TvT7zK8#68 z2?$7o)R2ORbc+JgGjx~I-Q6Le(%~Q=H8X&Kl$4Yp-AH%GP(#P>fZw{G`*}aleZT+c zN93Hd&)V0%*4k^YYn{I}Ro7M3Xj*}7FpN&n%AM=YC^i}+pH_@~$e?Bi2hQ+Jh@yU;#lVhz`#94=t8~LzbFI`LK8!lDfb<=T4vZL-7^; z-*C8t=6CYDfcVxQnz%n?2cLNVRnKK$@n!14xOw$fH5Xe+4N%-!0u=0nU2CycME}n_ z1zbmKcm6|3*B|zv|3k`k)spK!lgc?`C#&+fj#b|T+>Y48YaQr+cHysx4ONgHuP>qYfYoT#@hHeE0hp977Nmkf!N#K#K-_U+bGy;P69@;DQkY4b6ZX(B7h< zslG4q*z4kpzsqGi@io%pIk=t-@`sZ7BO^5!<^O6p2~6J8IaS~HcH^Af2oQXKpSgYn za3z)*n28=<^LU7jyOt<>aom>ak4q_YAZqb%VZ6%V%aYjyeq*4m7a^cg=1Oh=WZ-`J zFEp>jw}O>`*6^d2cu2f${l`B<*-lBYJdio0;4$pNG;sBQxv+NU2l-?;Vs~8ijk+M} z4^{cfBau5Z<(9*+F@XqJ3bfWX@Xh~nDe%lD`j0XHcI^~Gix6D)Glj^H+=e(4HdP@4 zkQLfJs;hV5B4&ZVyK7g8{RZv)Ky7SDLHG|1y1+}EQqX6#H075!j_ObqZDgv_N2xSG z6UCqRuCA7sZntPeJS6KPfI#WQ;+mEIIs6(&r-TM-#AJZzry86Gngjdf?iiiWhxK#=C z5i|p0&NxnS@g9#1FXVI2dDef6m2;zS7Jx#^@DHW{qg=+t$iMq zwEsCpG}qAJ{p)=%PS!t0A+!KJctqbI$fBcST0x5!?i738vu=GuNqi)zUSX|)_ld@5 zJ%C%$VyUji=a+H?lkaMu5!dd^Wfv$@w2Cy$ema-{KnO^#8*+=Ww?DkEBN_N|bRAeP z2C~=hs`QVydv>ixzxy822@<`5gFj!CNOvZ}_3X$pgCJ$lbNcRp<0kODebH3&%bKmF z(MxQrg!B5Ch*zb)TFb_xqTVL48<#$AS->B!n>H@J>;lssgM;cZf$j!Loqvu_0D9Ms z8?eU5Mtx4{BX0w{?GXv~eWH_kt4dQF-z$*Zx-yd3m39lw0Hgw;Em^BQg#6LWQXsfq zFJk-j`^-#HuvU%ld~%gH&}D&<*AB0r#uoS{^LrqS=B`?3?w9s-t2O8eJ0Bc_9g z$o%P={_jE1mi*z5oUnXrfjjy)H0WakvkDA?@i*W7H79pUEu5^_{s>n7&v9H?m>Gx0 z5)!VL0;ZmDdtTlLam3ODGR6)l@a>QSfEFFjX^VD;g! z!vazEQ$SMeIKEzdv9B3FKVjD~8ox>X>opv9coi0gevA6zc-+@jUf@AlOYN)Id@=y! z9ua&6$33Ihs7#?1ktq{7#K|E^Z^e^NkLu2y?)hcWJz+J~AY&%;(F;<3bTm*ZOhWOn zJGO{vZk{Eu4!sU1qeOR^GL6z>BY$)!H$8RJcjfV@OZAp^XLHF6F)6guIm z4Ak8;`r3NAV_j%5HzEf(oOC1Kl)4n1ZLI@_`}*&|yp|rxmC6!cqzUDAPhIPDR+PWTgXs53RiAmk6;TufcA+Vix?NhGW%Y1n%BZ6|u z?gq+lp>Wj)*E9Sk1f9w!)1d|kTv^pQw%oVh%YGd7+|VDboB3kQI)0_tn(#@ru9kBd z<>g!I&hK>>08%{sdn*@;B2c(Co;Tjyx#_3;$=37}`NG1=^$SH4!A)<2EsfwpKK<#v z8T$10!n&P%5=OluJdZQk^ZP7s za&4>ETUHICcnTj9P2}`oHt>Yn)ei8;G6KRddZL3fH@xuu# z+&lB-K#LyMw#}bsu34|Em!))#o_bt>RPw^hBSF{0dB~?A3Cs<#ty;g(`ACN=vfDgy z%4Q59JJH)LpU!NrllkZb$=)bd6pghO$`Wt@&~hh!mkD|?f^WT~FM8*C#l1<;VvO%( znXMopTVPpnL=Z3Xt*q1#35%g|t*m$|uUBWh&=VG#t!Og2rkcMz3VcN0SD5^|18*Ov z+0c2q8=K%#9E1N=<*v5RX4fd79*x=##~~p|1&>U)d7A3mw|~GcA?BOb=pKfqz_DZi;E zrGXq=_Lf;%t>s6&&!KaBre&7ZLh?Q1kEe8wa;v1;kKYP5WUEgn>AJkSsHJ>5Wy|ug zeAuKqV_kOSUH^v@ZsU_9^Uoe1-#Vz8%mT`E?CJ1%Mg5e`%8?sY0wE%ySH+hX6?ys- zUe&se&MNPB?7q*ol9a61VLPIN3uA+2KE{1?oZa0(m?oNqQaH*U^mRq{WKr%F=YEX+ z=-Efy@HRS&MO!!l5LSKo=(glO%1^@H6D@MQ0rNqC&0-GSBi4jZ&pITg8L}ou-jDzV zN%>qM+vA@8Cx@xXnj(wT{sD`(naIw~L!o!$xg`6l^=d_zPs&H#)A93bHaYejOeeF` zG*OE4qP73-Yk^ijo#cFhFY1%Pe3Q!7&yO8;W@D^%St7e&S&ICE6-AZX5tgjZ9F<n$i{>#bCS9yivWKCtI7jK9N*4uLsV*jOc%2an2)+ zrA0|;th3bxqUL8RPpg#yQKGiv$OXF5w!B$ns01y$iABzRe}#@s{)9K4!CU0>!6;Hu_f zkX2adr^lWcNt3PFW=El%O}8~H)K2ry_iGQFReL2dcMiFJ97-F-CJRDN9t*1(5TqSO z+wKwYMPTXL4^YM%N5yF0Ew>e1)G)!)v7cm*cks-Uvaa~>bod?ZYwK2)H}Ur?^F%G< z6-6#q?F!Eh^ps2>o4##Q>4+Y~q8*W+$N}t=e0|u6@52*)?`bBg^)^)ObN*5bxMuaj z+kCpSSNOmV#^mnb0Vt3MSuqDBrYo(nVEeIRKrAILgW%OC!og3(DbdW{x7l$YI+5Yd znKRy9XXXw3d)?{ALLep-)KIucbhlg~lsD7}V$OVM{Kb zu3P5a#O{hQekfpPZ$o{R#(e)!yK9t3ieGck2slxmJkTW_t8+OMG&4i^fVf@gY8S^a zXendgdXhbiup2y-d|n{$L)J02G|m}Gmu2!SUv!s9nq|}y##w?yok=pC6h#(R7QzZu zVlAo}SDm4#dbN=fRNzIWYV=}WEK`3lh|YTKpgP#`^Cb!QEvE~UZ>Pqb9W{Y5_pDhR zY_kfMf)4XvlWMaf{hG8R57;xOyFldd!ISCXKPSO;;?%(9hkN2exof(E*-&Fk>+e}m z66NCN27=UBv}xZ%py%3OTN?&T$eoi>L_`*U5MvPns7rJnK28L$F-wDW9sojw_g^;) z_pp@5gr;peO`gD|(&o0-$ZhcmlMgEB9(kRcT}PeiW?@l@^a?^e@_C+f`yr-Xu%ptU zpd7|g*Qw=C_+>LO8B{=Db?I!4+FK;)?^t7wkIvH(gHfuUK=BNarRNbtcF6SpbSpiN zFI0K29+8uhcd7OwbamY7?r)DGWyPf_TW>aS+!7McX(?p|`H7({6{J#PU75}2ZWd!J z`Y261dsodji%9$1kNxUGYZURxWOua)=d0ee(&1@x>oUotg^}e4GU*=WQ|?Fun+?~t zzJ^b1-<}4Iy}O~MR)_&k7VvHbZrTfoqiiGYs(6%D7K%`3KOU6CEq`?$9xZt;rK3I)QqJlzQohR5 zXGxqbK4?xX(zI$>FQ`6gr@i9oJxMo+TtP)#w6^_9z$Et7`(_g-&^@B-)ku~>iL%}~ zh%@dx9zYeW7v^m~+qCLzEuUgZGnNipwf)GXd%1J0;vreKS%i~Kr#2peb+9=s$#TD} zsGniWduFcPl`#jZnSGc?R1_I4Qe`%6J3W-?qdZbXr+My@aaa&nVqZOl=;t-X!^(qx z6wI)kd@Chg{mQEqc1j{G0Rm~Xin=x!R`sy?P)2?kDt?{r{o~U11gT%^lTT$jeu$_( zcFE8mxU>_dnCq}arQ1`U7CsPG$~@r~LtU1?zL$-Jm*pc9?@0nu!y<^xNZdWU?3Vpy zQM2`rhgixEryN4usbo|&V>Q1J50}s65|*zSLWwh+Nh~xp6lmKNv#LIDy&?U32LiNx za$c@Aln}cT-|@_q`4C|eDgJ0Ni-$HsummM79h+IukU*S=|B9&I#R{keC*;1UG(KrT z^e@1>-!GR}N2dD>2ffdJe}8BFD0eIM4=Sg93U5~$MyNcRZc-GAAJ^~0iE!xkVCQ~v zzT*Z|#H0Y#nJG#8i;q)u%D-__TLIFm2UPAVi=G*na@oHkqBvf0ot8_VO-2?)Y5lO{ z`5mg!cN#>DKtCuG$mnGES~|u*EfYk9=wXscj=0%IsiI+BsBi?M3I3G^A`uB>+qz_g8CbeSB72zFpy$s zDPp;0`!kr(JBRPllUaBh8?B_2a|C0l^LhJ|s8^84OqAt`hJ~v3-iz3i6QTCPsvOj9 zaQ%wV>a)Stlu?Jdy5VrfHY)kZ&T9$$7kceBohKz34nKbgqzJ)?B~OH+-I9-p(l zh>Bc_ND)bt{}idv*4J>$(IWe7R1i@xu|E2VZ&6vrzGs?|vyt%Ewe=Uw0dmem%O@pT zuM2)2(cZ~e|B>2L)(Ju-n)Q>fVO!(KHPykTS@4}H*GbP@HnT>`T%1LmFNg}RTE;{B z!-{NmQ?+a@hmS6K3Xb!4k52lL<&(Y7GFG0U>XA@%D%@67udyOzlTcsgGQF1P#)r%o z8~0^C}5R*bj+G;Y;7-mlkU|twR#psu3wGFA&`p zBE_wGfBKMgYnH;F%*-ICXXkWxT5;F}41qYiqU2qBP&EYge%Mo!B>pZ-ay@ zK+wcvB!3Mx)cyF?F_pNe-{Fq|&KeE{q0#~wgvC%{pxbQxh;U;Z^^$ME8n*7|i04^! z_rqT_&T`QPy}KLaAv&*H5D8iGtgZW`A&o)%ndSbV3F&u@G${B}Mi_Wi>@{<35eFpu zW~lU12J>qRBQUq!CyVI(?}m}1BCl6UXp&A_@Jbb}+u}9u*v*9Al5)I9xj*1LF!m@< zgZNQehJ@(r^#V+V9F2G^xA~-b&Y*`NxL=)Mn{UD^p57D^yR#mF9<@ zBN`hRa9`V!KU4F#X-MG)oBghXiQInL=+87v(nCZ$7-vp=Q7A;Z?Yh|TsToA!G1q$; zp)i?khlWIR3k*RAhv(ARnlH_B+JdBG%J}-9xX# z?^ePUCpyKv$@T+s+K#M6_@R@G9fgA>seNRJ#oZo{-x8LhZJal(9TMmLAxTaVG@pD> zzjxy}66YD$A>k@5?!C)>M@4==4Zq^JR`f>nxxE3-+Eoj5Wt^VdNC(tJv4{qG80Ry) zR!@?f_iuA9`sW0G@d5s+vEA)A!qqw?hDx>;2 zF6zUub8C-;{C7b~j;GBJZ(&r)hV68q=LPNzlAiD=-hr~;ra|yaDGAYUxQFrK>p0`_ zi5ANSt2YbH)&|u^oJXct9YwF6a;p|&)!+8_Y&|8Kl1^fk_&Ikx$G>7kT;mbf8+zJ1 zE&0nAUzn>~m9vh+_p!LUf}v04U7ri%+G3gR`V9d=ysQgsTr|-pJAG2TY0R*|qtV=p zkC`>DsZiPqucCtnV z+dSVa=cXxtxq72duM@y+)KTE86IE; zuqd%`6Q}vLd&cLhClJ9I6%H0o#gljt*&Iio+pFdh$)AUVpNa9dP&l_m)=0oMhAKik zB-MB}C><)r#JGyW&$mc!;v)ruSa>>$>+S1L^i-e<6%X}DFk-WJ7l$B-fM@2>QOJsu zi#%6gH-@pE>&pk$pAeK{>m=8cwuqVE)+&?srFg-F9SLhJU4>G(L5`BMLL-|pgvP|r zlua?ha|*)`Fh+BS?}Yx!@eA}=m~>y0mZNDBRCM>Av!lp(&~=>5Yzyr(W~vHmlV1*~ z&1j^*$sk~;BRoy=-ILJro}o17i0?ttJS&aDj5p@{TbndbldV5w3}ey-0PPH@zbV;9 zfR8Hf`fO!RoVlV4z3J1RR!xooTiB*jiOD)Wc7!wp-e25S8|;YJh~WCM z|MdIRjT2W2(bHb4fW#>(y#VI=;#@)Xq-lUFli$Xq8{%(me;lsOK)dbwRfbsvoUnF| z`M%$(=-|=P=b{@>-opII0a-+2efGZnY;w56-n19KopNDhhTCQI%MHWz^YsP9H=aI{ zB%`7Eo*J5OlVh#)^2df3OnD-`!JxBYk*McceGfxtKNes^mQHI${vt@WVvyb@flUfM zjx?f?_6Dvg5eDDg_dk(e?gK#cp{J;y#Ctc77D}>Bs)Tx$^n&;_;& zHpWfd+e4&9wZaps`Xrs_bD^WTPjBzM2uKXIh|Sk94Y>8>EJ0XGVTfd9icLVg1>}5$ zW0z+!%xd>NN7Pf-;7JR}3o?!4mNvuJgsMdsZ>P}D5RxWZYA^)wdqt=;NmF3_6qRs? zd?h1du5}fES6m^qP6vwD#_Y5yc_nJ01wNsTvWVT&I#`pYn^qoo*g11xZ^U6xauyp# zyC8-hff;4tomo}RCRa>LzjuXZo)r7WB4xzz8U7o}((YXO`1a2>Lj7*hVlCp|QYu_d z?Vomao!ARIcf8>~F?HOF)f7G<0vT=Dpmmw*W?=~DYZ{XdSgm%ZJFUVDUZB< zj-!8Nb`YZ*G$TEQ`rz}0Zs4adhkE@JCH}$>;oxnx2J!m)@R|6;jdPm-Z?uLcw$^j; z?|qlT1_02eXU=U7S|3Wr1-5<$bx0u^9hL!Wa*G-`Txcnp5ae6Rc1rt%zBU<>Z19OvXNCn8O9yNF6B9xytz}? zaG^BKAbjuBl!7}vrC#l35nJ3k)X42}PWMR1NL2S7=_z%1F)ieLbGl7^v0HO!x8`83 z%n;e87s*nJ3oxxy-f_qXM9oCWcX!Toc_Cy@}?a|PN*<9aKBqt&fh=Uh+ydE#+VL| z5dXno9FUKX$kWfI#Ao9q28xj(ac`ODyGoj9h4QV+p*i-_XYvH5>?UTm8^ZVi!P zUIV~#@(V*4<9#cU!33FTD#Ml4A3jeEv0falh*Nm`!c7 zsDj8i17z}7R*c(0i+YQGjOfsxjP(6R?k)_5Ks>pum(J>Y{q?Sen>i~I6afaX@nQ?Z z!qn7sE^lqxXAgs~>wOLga$~_!*}C)dArYL78FCy67Q@5KiNwZQ@KDaE^n)JhGUaL9 zDIz_4T4ND;>+zl)-W1h#p^`O~M?2+BP?(1E5Ki>3cu=mUF)>`sS~y>R4WKT{2j;4X zUF@CkWt<}VFn%*iC=;%}yS`<8oi90MUJHbw`541pU3Hs5 zL7%0B8`YVUe3H+f<>d;AjhqK;ieG@kY&MeMk6Zr~X` z6(Z}qi@t4kY4SY_!`o>`(tEkl?C9)H5+91{+T0d-!wq&Ma*^4pwjTx!ue7IPLl!PZbd$!*`NOyH0eJ z{Pt8WT{RqhM3xx|2APkQ7Tw$XddCd{IHx67c}ydGrmh|T-LHeb5H0>}M)$Fk@R#3z zPc)Km!AJ9MA1T!jpOv{cC5KFnTeHGe7vp$_gnf0Bi#8cQ@faY<{AJt(a3Z(MgQ|I| zow;>nn=m?5zGfN!fl@d)M)&a$!M4u+~v(j{g)AE*ZtS73+yL?)Wz@jqsI zezKq$7DA(;e8mO*M3@#T2qRLl$Q(AvD!-rIO3uit5pfXx*>fN6&V>m9BKQa6EfUdA zkuq9!qj;?8J9e+5yvUwuv^e^;25^L&P)>mYBEVvcC(1M5iJ|oPd|!G{6WV5O9QXh; zW|YHPza^m}ey~AIv4il{GH!Q$Q(KTkc+5K6x(T=)d{V&F-2V2gsEJo)VQ^eLNYxNY zBbGFuM6;1ReTrkW`UUT~Tf6;HO!0XQ4w#f%b)oMi6C|HE@DrM$)l6@wDZfxX5IHj4 z&KgI$M5;VMzF>TSXH@BXa7FGAt5LYB<%1&sXx@?&KM7 zx`pj5i;$RN_fkl>R1CLuJ23kg-Ojtjlt5>);2k3}zl+7w0;-v|ryQV17h{&BtP_OY z+mj*Nbz8NLH-~aS45PkKpGoXz;4Usf+tm;%hcWL0e0tQ*$0hN8CWa^7KAV!uZ!_^) zv|m0HahfvkK4cj^CA?e;1S3Nc1|geHiH(l)Cgn^#Oc8P2$15GDTG&SK(!nQLNP@*#g8klpJ|k^s5);Xw4;Vy;KER271Wdoe?6dVog<5f=ku z5(<>%EoR6^YfrH0T0WS(*kYwg(S2-QFj`00Bl$jjd!zG~)qCD``XrHpurQ{n!rIhI8gGL)P^V`ij1y1Mt&)? zS!qLUAQdq4; zxAgf2U;1TMk48Wu2X~SY@i5-$!x8Ra5eBKX#<+IE&|*~inmL>Ua>MOu=2<3uVwwr{ zb{(MAc=~oC&Fyo^Di$YmI>sCIhxfnt$P3{)PI8k`1DwFJx3|z-Ki{j@g9!v8m;@up z>Rg|TWJ@$!!fA51?fjB&5#Y7+(+|RUatMiTnE0U(TMKMBd|d(oG&-}siU%U&6;a5g<*G1lxO`%joi1~=jrC>m%4vu1seN8O0HeRdMf5Gynv!#b3E1Mj@5=@fJE z9O)${qPn5(MmZx!+8D+1nmI$p{mXYjObP$0#5fsD+%%Mf-#eRaw*d27LZmcd;yNv! zc#A9Q>cz6P)3ee6k`CZ#AxGxc!&W2>bq^s5KXZo%V@h^A@4E-hbbK9ECEnMj6LE~7 zPl2Zm4X0lYW!lWmqwxmMZq!|xd5?D##v6+f`SUU0_U<^&Ty2&_Zf*JW4pCX+?O@W8 zL(!)W)t%OCDn^Pj8v8SFMbpoE9p9P?B%-Ig=_Sw?QQ__ptl>L0_J9zvtFO@U7{0cO zG>>KB1!0uo?N7XvrEuG;jmf6*M}?q$nwsW2aH@yLiJ2|=Nw~e(5I&n|eO7r_ioX-j z=zU${D*)(&6hEZ3J8vLw>X278ZRQOg*nX9! z?!?K!+c^(G3rja0#fNV@;*WekH;&pCZWLS&RDAwZ*yO^Kmhds=QEj5%iEHvP55vGt zu@7^rE7|3if9oSDdoP)t+JX8kAEcs}t-bJu`Cf{cx9BW?m@l5#ryo8)gpW5{$0ERJ zr&N}>hUAvPT=65*6EY&}hDe`B7d{_|?{2@(g_5{VockSh*ypMsGJ!BttGj?d61>wC zDt-3d=cTg|&c<#87QuMA^!>}S<^fL2@393-CsggSrnR|>!uLg;UUUOrC(5lWR#D>8 zmWOh`+88SvSCzq_9etEXDO+Q^stK0#jsSmt^VrTWqYA=CSu*ur_0M|>ki{CoJ9ZAyfKo4-8vrT>WmU``SVx;#`c;)_DHxV4jr$i-?SautMS2}u{ z-)q~(Ns(}V?bvYzQ=RNfD%Q(~QG*DJDaRk}>^ivW&XsE%oJh}OI!H~ER>#K{=(n*FgIPLz`MGHw^KuI&5D3?E4U_g!>g}@reiaW03p3=s zj^TBf^7+`{HwHcxN`S4!nRynB9=F_}n3${BiRbgb4_Eue8Z;?E#f_n8rcXJ6jr-GH zf4k;|OWVg+c2Q3$FX)#?dV?So8j>d8Cq7VGtc#^Jo_y^8R-4-`70k$kH~Z>~$o4~j zK3r%znMfC2C-K~Us3A8k;wg}K3p3vq2-rsVr)ksKr|{g4Yk1f&-ZQ{atUjYWP~1`A zaG7LyBQOAY>$W0>x;QiyQ$j#*aOZ9nBgUcm@OqwQ_TE?UcXE6^;UsNqBqya?$hO7C zuk6r!j)`5!nq$58I{+@Inhv{(*5yCcimLj*i}_{VmY85uKSGS^;MiWWa{M_I?ha+Y zI4I)D*0|FHtB2ZsJL=fURsOv+_1+qRZCYU4gFg>6-Y4_uIKOEDMYX*}3L7t{o;-j@ z?{9Gw>GJ2L=N3MdqEohCB_5G2UTaCzKO7{Kcu{^8C2~urE@8ERKCoUV8bY5?ch=5? zjxwp!FvWAIENbVq-v+jqICzVcxBb5(EEQ-drm>4^>6^ON7V!mU?qG1jt+1Gbo>--& zfqhT;f`IJ?fRpEN>MV^#Vz^OtgtXi4qnA#L4gf&fq!3s!=dwXeQL#ZG_4EK9T-Hvf z=;pFf9+C=x8_ln%tQpvYT189Qr{c4ewGT$As`Tf=OicR=~G2Wyo z{We+?R|HtE7zEXb)vzyqW%)9Lo?xA&1!CKo+)<;K;yILxeqj}&Z2pJRa&^+$hR z*{X^r@A17)cmI7B$Dc61mlZFD&F=QKaW0k~8#FVM(RCqgqiLjQYT)m3WfsvTsF)UP zdB*Sef6e$ESB4l8!E21bFfKoQT^N;bF9Y{W4`;#*#Spn2>2jRV8f%L%YtRSl{&28E zG^eQLh>TB~O_$+_LiN3oAZFm4xM0`OY4m=s?_5>L^LvLn)M~=VU&4^%>s3@sln;0O ztIw?`rJYviJ{u7`SdK2f53{U+g>DtE&z(;85KBB*GVCsJc;V}=2-9_&7=b>e*RtCt6KKCCNO}0%AGXuN%FviUfx*YoIpf zw=7587+FB*`@3#I41`{vLlc)4!Rp0Wv^X*Q$kp0tm)ezYyd~E7#i0Euu4;-yFzVN> z@Osy>jxP^RYCKR>uOq>p2S;HpLHHkT1!%d?EjKCmX-v>hJdyc#I=tH1&j%S1U#B5M zlo2J(Z-MYFh^E?Wp;h5H1Xa$Z0-P={KMXIs=X+Q%$)vI!%PJ3*K?EG)NqxEvkhRq7 zuRNmo<0UT-23kNbi&CXlq7tQ6QaMdYg}#bw2!rvI*&$z*^#m_0!}C05S*mfN>J}o! z*4iH*d%DDD?9aRmabM3Q%Y$nWKjd%Z2z?i1*;;P(AY(+|Vd-Glvarkv*s==@BTQ>D z8@E)CXOzaPaWd|)A|0EhoX=q}kbPr)&pU}B7Iv-bB{^Uo9|7|SbK`Y{+=u`_QolYp z!h0i<OO&}4(A?qi=(NY9#8TzG_w*|KHK^p1__n0F1Op~{tb|!z-QRsr2T`7cmovCim?pQV)i#@ z?_19(gHbEzbV3*81mmUSj!}Sn-xlh>Lz$>Cboe0gSx)bsT!ZmXaJt*D2S(kma`qCT zCmY~uHty>0gq_~)`$aw|bS%^TdPJg) zSnDqfHD{B+_(?3@)vmcnKVcGC7A!q?tUgW5cUV=bU~uoPX>|Il{{VDBQ2^-tT)~T* z74AUYLn0Ugl|_7*nWmQ}&+b)64bpQrXNWAf1yq$xenSOEn}aK~ zYv+L#9gSg;9qwwQ(1ex}psM@0wTJQFydO2N@&9Zu@ejt502m9zJ@1)3f?3(PyE(-G zLQ-zLEpsZ?Ro6F)=MV~Jigp~59w~Az9Ivis=L!~~UY$5RwXHgldeH6I1t!S`At?+J zTU{Oq?hQ(@xch?4!H?$df7o!?XPGigR2M$av&8+`3|oN_A2@~=YMLgt;!!#TKfUMu zSS5k_nO*M#xPXpNl;stm7{p(N+<2>u_@IQKt7@F!^hxr5vDYwx4g3ul|J{$@yVfk; zds!N$m}KJ3u->+qwB4AgiaV)CvrXK#@vuniX|uz=7SMi7Vto6VVu?O3uyWVHF63@} z(hs^5t1{o!=dT$uJ)xGs9h|5$JxCQp2^s&GIP{4DJy;&XlmN zc~qM^;|@WscyFB!Nago>Hl=yGUA!c?qCL6A$!s8vtJ_bG__2p|XciOihP%@r2uXh- zwS*{XJ+)5}hIEwnBpMB^vX4Ir6IR4{Lv@>XRg*YU9muy>8AiNvZlMrO{hx1ob{;nj z^|_|!z<d=Zc32@^0{flb9;H)#A8thaCgN`oLQ8h} z3`L=+f4y%0^7JXC8eq$9N828bWNOSt2;y~MSmHyv_?Jdew8PDEvY-7H^LrR(--T`d zV$77YSn~MAdOKN+Euv7@I(U3Qs6{2fd9+Nm`EaXPk}`*(4_!jlsfC-xCK;+n)hp6> z*ZXX&(Gygjp(OQyJ#H@sIX?g9)|cs?Hv@VR;M&uv*?gv;cRKik?d|ROcexJv;hnoC z0FGV}Tp!HPcA-0RKAQiPu*s}(b$-2|glI3HO%Zh2z_%PJBxY4FB(fYv0K0H&LSkZK zGgTny&U*8_IO2)=^XLQY~=CYa>p)%TteHl z!e@X(Q$_#>v4nMS-a;uL+pzXCSAYAjokhf=IHEo72P1@XATz4R_Xj4w_SyVbM`55I zWGiFoW$(H86&GV_>CyOCY!{pR?JaT|&P(RTLo!v|_Z3}bi}`){<)x}` zM2yQr`x+xY9$YFR<^&F1(D>$5?Kq-4oS4}9zU2sUgxxc%#91Ws_?O}rmdW0c zQgpilKYwYcJ;GgHJvOn3d~i;8Tz`2gS_(vai@jH)?~EXZH`_Cn<1?L|-czn|Ow5Ji zOO(7+Vr6G1mT7@IrkA$wf0BJ}j6&QbA`inn2&z(4X%HT)X>;-gJUML?RRq|%e0SG@ zMXVtZ6joVm*mQT)=kns*3_M)Wb)48X-LF^S6R3OlJ(elER(YS+aQBxfFqpP#DM$RR z3g*0O-&SKsi>s=Bi>%TwF%KzeA648g zOX2d2msK*onh+-%&9Rn*bLQ<^@*S%t2J9h_j^kEtE62WbYK||mAU%wi?uA87e zrphfNDNB>U54I-FA##FFc{=;`=L(~DGh!klo~FK9Yq@g5C}Se{6~CO}UlkR-rgDHJ zFaEqfM!zCY!eArtN2|$i&PF?PEoSyKfv!U(rX8Jgh?I1V_*Zfau-gQ1gQ21N@K{Al zhH>ww7GE`WIe|rRz5fIvf}n-at0*i%y9X2>2qHINb3C&GoaU9ag5FU`6vGtC4H|A1 z+s{8QefG|Jx=yz}(2e#T8v3}nOm?Sq<0)`1uTim8Yf{|`bsOf;t}g85 zU5d+}j?}BQB>_GO2Ah0Nwsd$D+w*ffAW_f0pwe;tCPHQ zu{{fEhCW6^Ta%s(UQ^T}jT{5kBZZSC7qN;m$>9DO>8Be7htfUccf+tbzDZ2&S=!dH zx3}YtS_dFl@2wwiIC4g&+N`p3)R)A1=^?$h?TzZyzm4_1j_Ueret~UvvD=mqeE7iw zQ|T{_q@*3cJ=$+ng(@Lnv0YGM?Ffak;#$wcb|t_1^Mh2)c-}oi_=iPAKqz4|9>d_- z`U1~p{jD%Y*)z>rj{>;DjfNLMY0MC@y7PxknkDAcXKzZ_0{u`2)lHklC;QY^75+*4 zjdDff&R0xz52&b^_raxj_PRnHqNm3p;9AwfbLmUvn?lOt5^%0b0#7K?VCc}QcvBR$ z@T=dH)#RKZ@w^prpH;o!!E$*SH27Qe$tkdph%6XK2oss;`a-M4(%e+!sug?{NXqL~ ztj4~!*vMt^KFzwSVY|WwV-wmB2hzJ=9s}OsAAmU6>k*CYO0`The=}03tAdbSJXci* z>H$u+vlLDFgXqH;@r!1>pExd2*qg!kOm!PNM@!h-X}<`a9PyN#byp)3)13{O^EApV zh8}7gsLVITX$;j#%CKxX)#m4tUd-kiO`Qb;fee2}*BkRR)@4mF@%>pl4K}?JwXgLH zAkExJ?e@ajx>Q8d$=Q*r|NiTMPlMG+%7ZlVr_Hd42&}5%Jo0C+^E67$K2ngZ57o+0 zYvOV~)%fPza{kdCqOFOp$Q5UNxxvapAc^$WNN6HwP4tX--jRKME-0}psZ`nwb1Rdn zd=m}$n%^@#BK8GF09P1khN-d_uTkfIy?-fL+&+@Psn6l4IP~MG)i0U{98N)rIvR{d z@w+gIBcXvf=KWrJ#c%DZi;(^n7_|@EJEIt*(cSpDj=t%z8@G@pdthDfS0rR1O2A>! zcb=Zw4FUsv5j?$@d96t~;xwvseVv-3~!t=-ri*7&iJO7L*HyVoM ztT&vdKFGGgpv17{8bnT1jdLiL7p^_raEFx>YShH2>EW^%U(^ws@jG;xD_Q5f|j6=}gvslD65 z?WqUk1LFLi*ql95uPSk!I#u#e0zTF<#vxZ;82NxRei7pq29j^!i-Ma%)jjr?S&RLD z4LLqOK0FIXcv<=6ciQ5Llz=J@oEF&FL#Z2K;N%Dez`MtubG7Pd0Sk$5o^gz>OS53? zrGM@x1IXN^NvQ6olN=-LyHhc2ysP5n`xm*>eze@vL{cn5JOgnW!P~w*2MYt7Z63ls z@o#MF_x!B}vdn#}H)>ocO_He;lq%?DK%4F(U<8Pry|h*0sQy!el`icAI!@v>{D%Zn zcKDlLhI4X>qlQTVF9eM319d<~MA- z&7!e51{`Y}7}t?;cH4OSvwuNbhz&4!Vto>0w)Z&`i|utc%p|87RG+5$McWgVh{7NJ zFba@k_3cL+IAKD}<0TBoC-B}NAk*I#o2`!>;-w?2(JqxFUslM#Q19Vj=?_`fd(^~0 z=L?KZ{wBB3lQu#9W%^9w_$Q^`3!Do|3`q)Uyz#h(# zkgstku!6KEXr_3us)OA{fnmF0TT#baH5_z&A6`er(~T&>$++lUTB7n^G~d8;77ZqU z`mlh#=^XwP7@b8OiM~gfZn;tR5PE<<80^vvGCe({#wTP{cyKsz7Rrw zGJf*A6vGF@Vjt1}myZL08jquT3}5O==WKzWpB{EhO9|P{_z@L9;Lu@Sudo`Wdulxv z_nr@8UGUT>{!L|Qb%+S_X`06g|D5mTq3`B5wM^N<7FaISU3s{EcZ{pFy?jgfr0r>p z(7{_>mj-F|wi3W0eNBjN;Cb0Ku80WWS}-rF-6=-^xhvs&1|?qtdCbq*L@wtni>*&_ ztJ#LWosdbOHI}aHGo`bfMp2-$M}wYQ5iyEaVR_Lxda9fuQP4hs&HK{pV z*WiPmbR36KpEHC*pESp8I75}cCVRD}@{4cwW=QTMRQ{%?tB`ayB{(?Ps5^~c<*f?f zq*W2R)ewr|UC~9!FIXUm_@{)&_o&hhyZOBJ)+KZ6=>=#tsWKmRfxiJ>T4m^?EGFsrS-{0+w|v zRO?!yuA`>2`6M1o{qHcN1RJ29R?`xS-jWQXdkm|X7TMX^|I?7c!A*vzGrY;xzrN7s z27r}{v0NZh>MVZIi3Dq?FT9aRou&4%fJ9bI zQ*x}+n1R&=jfPWr*G-OhE(LVYgk1fHCBrraBXs$zorgzL5!oZMXHl0j#Lk-7(KC*{*OVSq#D? zRCq9y;h=cwr7~>Jl3yI9Hb~lT|-XDnW#{QI+#W9JTd`OoGtHYPw=d3Q)Hg*#|Dt zB8uJ~HW!0c1)IA#uR&^N2Bq&KGkbiOQ(Ub&+;T;nUVJB)8}{Du6kMQgft|&!9e)_S zDk}MMQZX&`KiSkGZ{6k84VM_<9fWQoUNKfV zaJHAo7k3jXZ#i7Zmnzp(TX)`#Uf!E6#$4at4zf2qWnEl$D?1h4t(+E@+;T<*(uCA# zwzO0)07Ya0hKeG)D+6=C2q#9W&)OA?W*b|~_TtvRx$i-=&$z{-3n^P##$G(pn&*xH zR~fd}IVgWEl@F*#Fvj8(UV6U2>9t*f?oH%CObh0P|1NHw22>5up6_heuyhDf?eGz4h2eH8BKXE zMXdbjk+N!4BjB7~8^0?N!%m9umPw#hk57}dZU!w>sW=LL{iz*ekB5l2e5iZsGS~As zyvI_=y1xr&F68{4Z_OB4^#X}`_q@W_VKCvN+2F1l2u^n{0HgVpGkFBl;|bzYlF z-yh=BtCQRkT~$u_go6O`xa7E47+q)aS*X*Gr3l zhfQb}|0Ht@j08D6xcoi$IGRsy$ppo{cx*B?zOIm{LqP-hRCu$S?;J7L^{7M4^(qas z_Qg_^x#X~9@IUu!YL3!Aw)}sDy>(cW>(>Tqprmw&(p>_ANJxjI^w0xJh=O#3LnEbh zNO#Q)gLH>BR!8^ z=uG;IvXgHA@i%_Ml~n~S0c=URS1J5J$Mk?{_Ta8H6Qt{8S}EMv|mx44(L1Njx~4g+J^iq~yK5LKP{IorN~aP&@JY$n4E z1tdd<{6qTQmc(cs04(t&XsNU5hM;@mqXO@I6uE3w`XC8anysh{wU)b&-HPW!#HQGT zK1R^h@QVEAQI*z+?Jvo4W%Z^WjvjmP(_~H8%MPB#$c3{Uk0PO5Pe8TDR-2Cx)2FOw zS^6IO?SMjE}=e|@Oqpkv!<3dLM;cBb?r+e|C zRR~lLmf~+cBp&u>CSq{$T!}uO7mXs0QQjK3KY`!02O0O~E6$90)i;|x zeQQbeA}>qrY8_+!3D3PZ6~A2Zz{km;>!s`B7B*+K3CIg8W-wgb4WchFK-5>c-BCRI zrNKm)@(q0O_&cpeih5|p@D@+C%B zB=F$hQooU!9{nvf{RW16^AO^&0@z|#`Hj`lc5{3ayC@xNf+lAGP2{%Gh{c4ROiVrh zPduOZ`S#eU4u#MrpCRK9bp|+~AYQCp8NU+=tp--gILlZMK8Ga2#L-VeRFmTyYoqf`8npg1viVrvu^pIi%Gp};bE0=#o+3)0b7UYaz~XFj z_r2UjAg-mEo=`o$?R)CPCz21q6=An@`kIS*vF_#t{1<&0ezXMAJa=Kp|rAb=r{Wh7H2n#j6?GTqi0c=DQo2 zhTlf^`(Q$#W9v6Q3}2EMJN%yNr!fV*tT6X^s?8VWo^CV4}hr8ZA$b{ zvq6!nHIjRO+cCd4RML8EJVDSDeE@EP;5nG-#)o4A?puYf;wTxmD;^}GIu zvHBOSd)_KFJT|3Z)NR&U%b7EAQU+oG%9{bjVu9gusJ4&u+}R6}>-DmQuPHUZT&o>s zT+=~~w)Ax8NyjD*!%dWQmeN$m4vnva+G8r@69-<}$_p zvzj$MMw@HblutpR-95vci{Lq3ah;al`1McW-T?MT5_Ny|8JU+W%zfVU7T!_OVBs%8|g%aLy;}C;<;e zQroT>IYMUR?xXM)TVHq~G~OZB+a}e-p?u6<@l!YDabI4&N=(affh~gn z$k{3-nq%V7fe2=Ab8l9Cx%5JY{;{zd{N6kz!ulH{sYgTrTaB9Q^Ejid_yjstZGxh0 zCg$-~^L$@UA{Ne~9m}pJc(!oartWc#Lm@K3$ZuVr+B;9cmk`c8_JDG+vXQ%dK>YNl zeAiY+AZUQ6N$?m&tZj=oBhp-9hL*DmX_9k8f%8`!tf$sjQ#T8EvytU||k@Aho0`)}ogbb+vx zED!W+x)*x^f>hEKWjB4B2pG;Kq_SAimF$Q;7Ax{QZ%hb+8=@FPq~z53-hS^OkQg$r zR~%vpIstxS#&(F6ku(p*2jHf64Pv`+J3%IzG81-fKeEw zV;SPt^cY{R)JIZSAu2x_5=~Yi2rvN>wi&vkH0HYX69*y)B!vpmefNzY-XHsGOYa4O z;u(q2Xf#^NzV3J9G$w%S?Y^*OXhnN?$1mLw`8P@tfHJy4Y*7Cqx|6>dg0@7jm}ZPH zl4VZLZ;D}r0ZvyvEy?hzH;wL&m^%~Xt3nHu8MA!KMCtQUuvV#whw85ZKViT=M|9By z9rL@*d{Fmp_?u)KLaCOmL{RC^=;BUkdpTg7GVWeDe2#CBKkB+Lqgb{A*6gMk((xL9z%A-?0R&x6sAu}>?=HhPNH3Fsqd+_p}sS7MXT z;r2dku{6eS;;<}o55@STK+=UQZnwh2FL%}dDOdl8zjCdT%cqJbLmegZ$<(rzVt%Cx z8(f~??Dcg~CU32!-h9~R0kS81z}?>t+scN7OH2ImMG8mAC?i@j`N37~IZM=`8^Z?-8f z>HJ>PbT-g52dUcAvt`w-QZ~{!MvW6wK8t6%;aG|b(`!^TL~QLk$}7FX6{(nIS7Ovy zOEzTbP8M4J>CpS#|9E_<5~zCkm#f@6R87fWlUuAz*$VkQzqU3o{cWm9-U5Z=-LN)~ zTUY=}|GzlpvmHrQ@la-&NA6B_u&tH?P3JRH77f2f6&tCAC(w%|S@TR1&G`@?!*;jc z!!6P+vadM=u(AzdI-LVbj`h9@i1)#)fEGo>y=eT&J6oXbV*qmwGQz)3zPpV>38aZo zy+9C^;HKdUr-z0Up2!c4=C1OQ#bkj==+nzN8h7J@A!!1tUoQAl)uPLq;s}OwDoVSN zX6SfwN>UZaHB-7&MwV78rfN|rgPa&);Y!#E!7%~HoY~Uk*#eHnX$66#gCKIcnBnnF zjx{6@{IKZ!1=m+lzk)=>P?u2)5)lZ}ZRP*1AUvj>qSaoCJ>am78lMotesVXKlYpP5 zHtN9D`CgpS@N0Nbtfl=Zj|z6d59g5r4Ze1(KF2NDeOr0J;P0rztys(4%6OKu3kc4U zN<0qIjEGINI>7RGS{uF>COtslhE(9V3Bn6?P>1P{o{#eB9AtG7utsY|BTw-;#NN1S zv@DEJ%xCle!)ytP{t<>8ejf9_@`XX;=hOqkDECw=Z(MhTaF!np&<+S~ z(($CNE$ZuNYp)DpC&lm|bno9zA*QEGpC&bMM{RVhyAwCL#?b)EH1aSc^yY z+8#f(`}#^+ZJ~JUd6bzY!cE^k1@@?>^x$kK>LtQly=}%#p|_gYkf{FwiAduRNA%@p zWi}q{j-(iH9Bww_-ewj-%9M2p!Ecnd!JV?l8)ukwCwG63{;WZ6I}*3{HlGV7|z zotWMv8c_x)QklXv8G|g|?vCFLGmw692j@O1vrImLdJ4 ziTXi$u8zu{r&NZoviVaS3NauojzK$7`@X-Qfqt(QnaAt{6v3}JeDKv*Sg7$q%BO8c zr}HqhzN(IqmyCu)$joo>tIx;rkJ3-wR*y_lD?30SWNK1OO86;tTHf(mn$hvw+_ z=EoRDcmFIseTw(Qt;R;FUVfvtP10ew1BYP+Uli`06LFBr{h+ttDxzZavC=u<89TO3 z6b^yKkvei#;&#}B5|)lQu_uqOuDF=ZIzGQ+;{Mxks&MGlCU2Csuk&;*zMFALy5F8eHqi>BDoHh?J}l|Kc8H6k{oKjaBR^4`(5J z7cC8g_eX1aqzJR8Qv>d=BW$Du=6ce!Z}AqTw5W*7_pWg-3*ZWW*u8%{1t6Z<{mrTo z{!m&uG8r@g1hD_}pGg!#ZE%M(wTLpb=>MyI06P36O>2Y?5N%~;E#&^CUc6=2d=~*7 z$JjbM6kD8wm3NUi9w@ z{-0NK!*c;_0vFcXD1I2-f4ljAJtH63qm&H7xaA*!5Bgun`kM`1H~<6=H*Ea>a-Y8s z0*JZ*mGM8+ii_tTWfSs0N&#&{P|f83Re=0OA?W~k4d4Iis{c8#0vYIX%Ig1&YrrvY zL<5;xEu5aj|39a0U7(m}NPs_M!|$sZq?~_sNY4kM~KaNEOY#S_HVv|j* zf0PbTRPG8k1%Z88z(2U!dS3pwuL51Oqa(!gYsrcL*T0u$3PM~f`@SY$qS5PbL4>l^ z&8cl0ZlKc?EsEh4Om36Dnv=v7DO(}ZK8nf_9&2Wmm%L~&!!#0F@PAo7nqMVwc}$R= zF!L9~z{4w>E4T}%#7*OH--fhigb;^M2uaq|j8Ab$XC_$@qkDM7tt4k8)a{kfN;2k> z3)nLOkVW>6x^A~k@uPpTz9<16%o88hIR7K}e-0qujHR;dU+Pl=Bn~_5oY@X%-rwZ;HPD?cOQuukofhauggG$lHrMS6 zhGQsIYe{O>F$J!0seU0iqqD>OC?K3|&b{`Jtd@08WX-ITUWK)!1qG9*4GOg zpT{Cj!CHD1N>o*m6N;t)jqC!P!VMW@A@nD>}I?5_|hdU%HH+ zYX7kmuR8;fE`yv;HRfIp5OMGswoN)2liGqh_L3~vN4!!zx08TSuX1T%##$!f?Kkyj&Ojvm%qwZQ33+k1q!P&2n6T{GVi9%_GK$e z6|$VyaDV*92WddjWmDDreC=eY9Zu~@my0FUoIxAwJn8c^IgUC=ewun8s9KH3L}FHX zU4Fi_86_uJTJc_bB~?y>A^6)9ZwPbq`O&rrmFvL<!lTnUoh$H|qG!|gvPj+Z?9GyZtd?tYJ^e({O)ocR}zDh&+NvqSGKDL|S}aDyy$ zYCaY%7G!eRq$K<&v3N1iY1~!&A+E*j*`y4Z_7Uo#yJdhl(FYd8k?-0GpKNlau6J)R zSX*?>d{ia;a~yt(C%ew2t5@l|dIHY|l&+`E`svp4vd&fwK|onn(Tc;O0qFar$s$jj zQ2Dl+iIdNFG7yH*TRnvF&hcspbd>qE*ea9<^tf6SuVOyD-9PoH6qa^(8FmnIR*AFt zRCkgw#DQr@Bu?&%NW;4-%pffBMq`^GhSAtrIw0$=U}#DoX%E7_0#DJhxZnM(?DT2= z#cK0-t>mY!lgwllfl`+*Ra#lw-%^1xwrtvAYu&%zeBD_YggO;mL=JfI-J1ejibf^W zI`WM|p)5qve`1!5cj`YKfL+pXC(G z?%BSJWYTEqa-su<4&$pbmM*Ef^-6YV@y?Kaj+CU{%143Kg4O9yg~LsboF@oj;;2b` zvZkG-B`bovFH9|oT6iF;eUJ2Y&Wf#{7y1RTJ!Ug(nUlw19V0V8#p*H5Lg0a~#m-I{ zmT}|lzo?ZXL6s!G>)B)PC4u!%3L&*6ZYrff0mVg?OKrcc5Yv_wBLzq9G^p#+x$dqLl{wp|*2uvpFJQ*U?()s| zgkFfr9e=*}0fwYQ@(a9C4m#2+ld$V|tzPb(ptkr^S2>VgGAeN-LydM0&5XI)B?)|UPKs#t2LlV5& z8XlASVhd%Phar(hsBrOnsq+_65?H$V7nie+I@#smM71M5d~U?H2I}bB?r-`r9xCB zUa|(j!|(H_>AL{r?{^$T6cP;D(F{%qV_E$DNKqOSG(o#kW=hO%$S# z)IRNwFwczFWm!1a?A&ob8+XReh4pYpUA`!k`$BS1X<2moTC;vDUY;eYO{1#zL+G2r zAY)PGVq1+CR<`Qw(?62Mo2CY+)_42Wn^{_pAWMdeI8P<#c$a0i8NokX zFNzH|95=rxmUYDvM_06Zes^fSle68rpsEev^)m)+J9{S^9>G*)I?y_Y{8ql#<6~N{G&sRMb^38nqc^#;O7Ht`y$Ir>m0>n_*rE+w?`be zY&CJ?j2|moNxxGE3UQc4VJ8i{A${;tEzJh_!|=A=Sb)V&lQ0Y z1g;nE_3bO(bFI=UHIK8~B7LxBE=?*3oMrZIuqCoU>?vbEi>3vt6vELnM_(i+s$)62*2^^Wl6C{X}&GDQk~@$rPa6B*h(;lb0ub zsH`$)I8yj*G9ZL^nudRQcofhO?Hxzz1{x{7(!2`nyXMO(z4%ntg~GEeq9oL&mUCj7 zu3wJ`jBk6++$z&%las=z_+esHEg6evyGoCHs@*|hU(g%w1o1QtIOIJhSpFEpqhZbQ zY|ia#Bxq0(N)pSW$yi}2S>zPLL;-9xhwION)%HIdIJkJ*y%m=*LW*>pB)T^ zV>3UcU_jg%^0r`U){UeVOUJWpINnvqRL6O<1`KO;Fjs@(L|pOsM}M3X=ZzSA(rG8) z8SYP7v(1;Rz@{a+H~K$%5Kj-bK3Df$@VIU4Y4|V%<^`7p*P@057`%)MfKgumM7W(M zL_4McP_?4cC7t7?tCp)--q}p`aR7h|Zry218gCq$3q8Y!i8@cVgzRv_sskvsSQnP2 z%xsm&Ek?dwS>cHkjjgHmPpokt(lEeiF!(~9{3y>Lb+InI~GB563(5GNT1(*e0@4? zV#lsXd#bS1nH~tL8xl!Sio;%8mH?}9OA#X#iv5CiwBs=2)^*OgHgK&tP<07P7XCGv zkSJ`yQ9G(u;PYI4YTasUJ+IAay^-}*@D%JYcuLm=%NNwJF@y$P2zcv~mo*UWoF=)K?em8JE38Jk(j z?!U^sBuuIabd$I9Xnn)p-@Q$C%@S(3um*_~wlXOideJ0)>vXkIQ~39K$52>b(l&?n z;q%Iqt8GbbKLT;~04iT&qwCxZ%a^x7Q^4nzqz$?cF@BgtJK zbznXok*;<;Tc!-6Gz0-_c=Y_Mg;1yI5fxYOm8umQfKB>geqn~A)!6fqWLQqs7O8NN z;{}+I1JGuI>R*5gF^(UIVH{hlZNFMPK1n zESw3P=uhj|%~eP{+s0k4Cjcu)R`jL^^vwfoclx=eR+)gU6H1V8I||f<(86C9rbk(T zZu{fWpQ>5#rc9AxqR~HnpT!66;>lVCD!AtsyVy#U&ias(837wJk@5-@pk1A#SN8%Y z>KeYE2|g*-dH^uESx#Zn)+c8kpI2zlHw@PB;})lvAK?~~4<+_hY555gy^?b7bZOj; z5s<@pfh)h!_eJZ0Qu6AasUCzb+VmUTd%MI(54ua9TGFx$<>E7dI=m_7CVYtC*;@ETcN z_Dfxt^9FUw!zo18V2@QuLeFqvxLeTURJX-6Ug4C%Ga8qGNn|6dkOj9Cd1rZbO=Qj% z^r>aIL+wNCX#cKdAzFo)y&5^E4~anlg73-GG5nNXQyFgN{MO@O)fD|DuJ?s_>(7kW zffQ&RIb(U-z+A|7%%OAZdk@bY?-R>Z^2r3lk^0_GjOQ8O492S?b-*9oFy{HcA9g4k zf>@~KT#O7Y--97)x`i0)!EVUujFgN0MmmZV40;W6r>doJGuwGkl8KNn>ptX$Y#7}5 z16eo&?OpT&pu5wmb*Ml2__6Q=ptV)h^%(l*x*Y}3hBUSGSlmytwAeUU!i~OLaM6fgT!G+;u~t#7e-X#SzN|? z4y&o?7bvAZ_37O}XPYT^feM-d1;CO( z*GCCAPG^o8jHJ^_<7njs;3UBH0HrZCH?WsR@sLL2XEmmOHj5q+_6M6gA!K~-r+^a5 zukd=PG&To2nTl_t#k7SPt2Y^#Z)^U9Ws43g9JLfx0 zjzIPsgA!$4<pV=aWWz{<-z;GfBD&@?jHp zKKs^j-0X|af-PIvhk;gs$8{T333?XnbydM^(z7gfdT3NEl2o3@?WMdk3^@5cWpZ%u zRj>P>0Qo%`!iplON%sM2cY8-hEUguBWAeN;solu_$XmUcb4;3hlZF;Or+0iEB`zoK z){GU=Yb3dKcx>!gAme@sM+7RPF{0W?`b9LQ@E)wLtka{0$bPj08Gak47Oau|QD<6G zD%qyc3{_Zmm0LeL;@0>z>7F)5<*WDk@SE+k!y{)!76V;ePRaxM*kW|I1#eb_(sbyn zuUWvzdjFB^#{I>YT<1EQmXYV`=;hg3eohZN3%A}IJU9}P*#Byb(N<5FRD&}OG}gzfzUA^zOZ!?7-_fNyOB(+pVurAOQP^Qu)?<(y-r z>H!{X_{lG!oYC@*0gHY(AcR@yh_ z)nDA$Cj&W6JTr^)MFM(lKY6fWhevYl4b*%HFNw8agg28ZIZeXs^A1}LF=sJ;?4LF= zk9Hpz&1lhjuKE9VcK_hx5>H`<+xBA_xA~%(Bof$h@SPP|bxg`O=~N^3g;6c7cPFQE z?nkSc5VhF?|2r%P&(K+`ln+GUvIgtR0+bu6^i~rpnmHa=$yj7xCcH=KD7?= z_0&bRYxy}S=mC~H@4cBGrlFef9$_(9Hbi1?QfH&MxVr=C2j~mdEiW&9V=VEcHwmVT zF?v1*fuLkmUvsX=VVHotr<=qZ#w_WhP@ln=>{9nB_}njtKH2CTRz1GJbrwISd@hL| zhg-fo8<9ptFxIOMZ#;f@`Ku=<)M`sN$sSmW7Cml$OE3JB)qpsC0wlN|a$xxOCl!uu7t|Jk}6>%Wc^)_)P-BgXdb zvG&y>A#;>S&CYcz$7n{0KoGFGszdqSH$aBo-yk6Vb>Nt2RI6uzFy+_0x2A+zmn5b}f_XSoi#ev6FE+ce@X4;dssWhZ3;$ z?LJs-F^fboq0RTgF@u0LfkJA>cT|+Ee6}$=r}SO(u`~nf6M(pr^B753A&q8zBAmOe zmYuuJ)+~f3FMvjZ@lGc2Rdy;UVVh|SZ|Oasq;vKm=_mARSAN0DA4=8*RXM~*$@tUU zcrcw|-%B6s+)niqxqx>a;*VK?1uIwTe43s=;&4}o&s&rZa{gUW0JcY=x>j8bNXU(Q z8W6^SbyR&y-u}Ao*3TBE+|G3 zzSni>6XumG!Nd*9_7y=RaMeWl% zJBUI<>7%P9OQTiUBEiN^R>{Sr(J&Fv40y`q!})GYdr^gJC1VdYZq~J}>;nOxQiLla zTUwuC6<`cfx!QboP@khMNCW10Tl+&Knltx4j%@v*f}bn)n&@}sVk?WfjFUQvk|sOO zsky;1{C9^dm`W^BVi#NmUNt7Uz?`FaFUP_2;~IR=NI$n>2``5G+nhp@xi=GEnG=6- zw%uFIK}L-(cf|MZ0S2&4c9{uS8rgWa{0s|+e8@Z-(NKNgzv%JP6l&jJ#aoXuCL5YC zQu^wr@u_hq6(})JVag#*X3ojqnUo%qZNY?b??(82l6d^GWb8qhyGpU-_Qjsx^t<83^R{*5-)cJ;wwK6=ooKM_?qZRSp+LSqIeNRdWl z_=0*pXgb!>?_QjDxeDSqPpv`B_sK!OUIiWBue)~EaP4IU!&To=Q_Gxv^Qr>yn53CT_Gf=Kb3LU ze+9WCKm@FqgK;AG8Sf}zmyGS3WC2tM_QYi~3vkJ7x_Ce{F@!%rkbh@*LL@@Qot?Hstdv1(5 zUE0w%H1-j_L(A=iG)hzO? z8l~9m8q9ZPU0`6f-(vR*9@%|09tOe1E$Pi?NnA!{rAz(qqzdLzaZ;D0O@^Y$`rD!< zxVrI(h-{ZC2*S9MVAzO9+tdLPTKB*D;My(=t2G3p8+HTb%lly4yk=7JrMod~f{6=> zPw+ai5hG)VL8)~u;@=Z;^e8)w{cA|;?tAfRbtAu246`<*qlec5levfQ3jv zHVH5@&Hq^L&zd4BJ75hlpF-=qwOyW5bt)!$%q0!YsFeVL_9IN5+{XLRmr3U0scX4p zYG}nKqj$-enj~J6FacAh5^lvpzWl>tpHxi%-0O}cDVh~uDzBZxgS(fUWy~1g=?GxM z?*wZcx`lDEe(1X*C=SV}^y4?F5vjd|2I`1RVquqxN$`N|C{V(1C9yWbicS(E6~>yw38;iF-QG^Jg`No`H3}!lFJH z)#2P4B@a+v+~UQAuqzQat9xY9Hb>WyzkALZtZJ{zBWNCE%3%0(Df3l)CK6_vdaU>M zsop~a&z}#3Ib->;=)8PsanUN#QP38tPFiC>PmS++;ml9%S)9f!NeJ7^vwqZc@wl9` z3Uw{ZF?Hmrev+R#;sg~ov2arA+t91t>JwHX00bYB7wlY*-tslJv-D3FvCO=6XW|JZ z6lE!KzTf>#N@|g6;qJ9~RGbCXDko?D z8Ft_jbYPpP7JY9p6fWmzU{jmkohXfU4y7@S`U)~^oOZgi<|mLz@M672^qQp#b^l2m zo@cIR8_G&kRG)qkhMh&40yznouq6`o-41i9B4p(J#j!-s(1W`sqiszEaPbo2N$T1h z7WpFzzg00()#JD}^kWR9r~5Y4+`jpHn_h%0IK$l-l;RZwe_8N`T(Eja;okD|Y@nnK zdo8McGud5{dNZ{i5qJVNe$v1>bVqJ70^WFsm$0Xay`;7(g!J(JPrH8a3Y0G5xaS3{$@3@Rka+!ASm$@C!oyK+eVWjj>; zh)Bg%Zf_N<(gR-6iR<&-R5q)3NK8Fc6Z!K?!&RJx4yPYv`w*9MbdOS8=Mz(Fm*Y3p{f@YG6T>fS&p3ldMN>vzQrWF@j;h@5VYq<1RX##p;bW|^YpdDHV|e%=h60i5&{g+eTA3o1Xu8do6pKO^kCO#u%~ z08LhyLi4t&o*o-J?EJVMypa7&Tw5ysUZ#`8Vu)rl!HpP9Cc(GphGnu5yKzA}g57Ev z?Uomw#8DtR8BR?in$PM%qM0!6Dd3+_`-PnoxJ>^E__1~ta5C>q$e4Tjanf<;sVfuo=F#FW{yIt=4Qw{K zQcaKBvCOz-^m8?t2W(ICs&u4OUwQg;f9c4vSMRHAVUY4SzAytibh((3X%Zf-rxKV zpFFQ)lQ2M(0WUIWr@H-xr^EGCx%_mA)PFnU?%*A9fxJDE>lj*Ly$a1~PMc)#=q~X4 zfy!y%a#P~*rC*24Q)FD2&RKWK4js#kgj(ie$$yMhThFIETX&;$e3z!MtL5NW=zz+& zh`|Njd~;{63(?+Omx14x7qAzP=H=TCuSsH*SCq*E?+Lvga|oC`{oi(u0u@X3tq@oF z;;$Y@(x+EbLkahJ$s9h3fV3UX4oGcW4&2Zx_K<*rZ^@5Ro9OH!XtmzJPL@fzcqwO8 z05EtMR_itmEzHc!>@RP*y=yX0ZZng(p0Y*@%3z0GRuRNsdS!B{HpPGr5aR`rtGuow zic~VX{?S_q;m{@u91aBg_f0K*FUBxAbA7`AQ;ro9my`<)tm>y%*&o?2tb&K=c;Km2 zpNBevH-CDxbJ-;TMxNZMj*5v1>N0D>i>>$={9nGEhH>=l*kyf)Y+fF0Z^IUi6(qb^ z%0ag7+`$s&w&*RPv9|6Btlk8s9lp`Ma?6L!VtN!I&C}Tl6AV~^RerF9vp2w!kn7A2 zs7F;9;G)2N5B>@d8nyux1-B^}2nbKmWHge5++qNa?|94vd*5XbaW&}kh%g$1#JNqf zi?~)bv->9wj>&>Fvb;I8dA4=NT(QHmj-`PIbckNCx3skU4;Q!>0lMD4z7*-WzMQ)b z^te8s!@n?P0)B+f%-o!whleMy09g3HYTOV77{D6Xhm`07mbL z30HSD;JA9m0DHN`Zxmb3pbe_cEH@Vdd{aiZaoey*dx_d|lI9<$_3|_(ijgd0A;Wg- zWTA)O-q#X3CYWj@=)T8oq>SxN_Hu$mkP2_yix~;0N-u%K7<2FzLk!es=vZ2m;As;xk|uA1QUbTpKcNUK-e@{?!S4#dr2qTCEcrpD0VC>Y_O8XRfyn>~A)2 z+@=}2^Mx5k_wR27GFpKf8s9|r7!(tbS&`WfC2f#~_A>!Nfic8=58bLcgcW)bi(Xj% zh_){#Z}lj!A#T)nPU^LWAMKwU&#vuY;%}Mmc3s`PDX~Rx-~Ssi1oaWYrohaC*;v%) zaxkNf)H!0$pyq0}G-=7anEWQ#0*lZXsI>j)!~gp5(c2G4A~Y{MSax<7APZ-K`#Nwq z6w_bwF#i0;+@yXt9~w89oj*ucgbc!-X$I4_1%w+hRILs=rNSU;19lC{&)*FOt0vAL zHq7G$4*X`UocuG{H249yGb}|xb~o1RK;e?oD7A;0H>Ur{Rb3>B3EYF4X+nZiv&AJl z_oOlpG6}U1K;ru-bppTx_M|O{XhA(y&XEqX+rb?TYJRx7w3Rezx6 zwcO$`kVyQNa^PK&et+dQv7%AGxw&leG}Z1pwIu%4rgv$!{D@5~eAq z0nU+yr~VWK0c*20u_~?LQ6R`e?AQWnp*`Qn`{TuXR@SEuV7+zxn=FqT!F9KTMNJ(D z3OA1={rizwxw$fW#Cg9HL8yCx~ounsTr$rN4CrI$Yp-YTF{);2-{c7 z8aA00d4Gko)M&B2 zT%;gL$!{m>st11SWWTTSAwG8?K~7&V?Wtb`em>c@+tk(PjyyXOz4ZqzagFjvM{h7V z2rDOf8C&Q_ckew|VXs2!a_g3TBA6=Mw2meaAH?~)+PsNbv|r)(fUmywgugWgq<;W( zKjulT-ccSxmXtJ>wdPS#YEILybm}Ms4ZnV#G3~cLJ^PYiWtR`+b-=zd8R&oB9X;%b z@)aY+Sr3=ZWpmy_d|?Xz>cueD?(9WA;%nRr2hkzWg+!2i z4_yR9D1;a$OSkEWpXo0{X?-&(|GxE7*>|yWm><2xy}2+|CL_mFP7WQ+k=bFOpoH_e zXG_B%-f1=i2_2yqyQG@0Zv9969{rzSxksQ~>f%vXu|D!3eQKzWjhh(Zwq-Mv9)=Qj#)SAj>v>JbIoNmn9u6?q!VAw z)wI=BnvD2sPi=0}?)AZyqT5nFD^9z&;cD_zXS)0orP#EI^6UZ=sGj?&8F8LtN7#2k zmzNPLI9>eE;dN9>h|Vxh%uAR zi_ZB#$)EywzJkU;|Kj9cy1jXd`!q`3l z{r;I{wW2KoI`w6m(cpSDTc4{FYM0`5Q-j`^7Deu#)LI`7vg$jLo4!Pf?{+MJZF^bl z`jrd!`k8Ly-6JS)i@;Wr(xYy&Q$sO%KQ8PdeMf7k(GG&yJn{z&Uvk^ zeDcZ4Ab4SDsnSqeF_~>>ijXL_{S-m**)*>9QGf`fjuEUuo!&DYqAzlA=;z3P#(9i0 z6<_U`!a70~0%-3~7xqWovOeop%%_e6KMviaASVa66Mj|I8(SUHAq+I8AXID1ZVOly zM7pn{EMs)8Xgl+JT&;BXwQc=4(greLduh}A-tC-{W0Jb7d%d;KWq|asfi~SJCwXCz z{+OS^_XW;BLDI&iumaA0mLi}wjS?99VUI;#eFa4P!a`P~bbC^%GcQEQDz+fp61SkB zrY-^Y>`&(Q!ViO+bti(PmB6^iwY3VW&V_tw@OvEYMH)fgDOVOr;D^+nFTAd`s=7uf z8t*u87adn1Uv3LAZ@JQUg^(dnPVD2}<3`9>`MU)5w=ITh$fxZ#6vTEOJ+%$(P>1CD zRB)dAH&>j-Y1?8WF1Vkgo8T*H(97Mg`0!iIX1}<2!?h(ee zBiYp2rPRk2V2`25p-o#!;=H{H^P?cmjB~e5XI5|qd()m`B01qA#8IC1Mpjx?yo@UG?&ex23iE(+ z)UQZ|Csgac23-Ps(JGKYqlNlUq%r|j4c>XF{?FC>voSGq0>~ZjWa(h|QX2WQHhMu& z1H}ot&aSSfQ6S8hWMMwnw6kB)(b1TrE+HL?n&%#pUCREa1qXZd{Qj9gygr{E9*|9J zRpMyM+l-u_PK4xAqR}1LTu;eo4c~;X(_@50PV*VK&3LA^{;L!jb5S{YxWn(OAB~`# zNH~1boyx%8*&YfanVEa#kxXADEX2(qoo*7QZcBMD3>3x&y&6qvHV$Qny{;`CAE=K2 zIg9Y=FP9yT@j1F8r30uF@7I27be}Ww2?rT`>b0|w$Z0E12_|^pS7!|3T9MkFH@Idu z8Ih*Eo>5Um`=~!z1;>yUsqOsC!lLPihT5o|trbaSSQ#)OtpeXfE*AKu6k5B+) z#Tdk5rva&3_KX5ivX9TpYi#m;=Rm!p{-&;7RD`@}F&uE)`$W2FnEh4aRf&Ivs)?M2 zSKD=s9HOAWu4{i(PsfF^kH6F4sx7wY^HtSlh;5{?$;eZ+my=6StIYGE6}3Uyz6RQQ zUCS}*r8NDVE~tTfnM$3AC!v$J0R?XP<)>tDK`<{^!;3xgeUPbeJ8^wnoDpS)!H4a; z-Z&~6xN7{>O6_*3$S|bRVeo!#C$$@HzVH6kd0&0ekf=8RV`Y;1Dyuq(T(89LxoXAR z$zVButOJLb%jEBijlQg&PAq1L-nYG8EmYNbre8Gu$F4>2P7XFA2?GOC$oqLxA>HZS zJ+6F&0$DppgfG+_yk15}l`CFc$0(ixUQTzF1q@u>QK|@jQ+bO<#BU?4JmV8rHY|KY zKW{;SB7V7b`~P9i@ez~jAb!||T$Cc}nN|wE+g`|%V7N(?T zih6Vf(jq$dPX4X&XzDq&RuM3IwdrupKO+&Wf?twyUp_shmKTwY<&pl$t7Fv*zY};i z`nS`paa8|w)HZMOwzsqTiX#4QeGG;*%y|1O-QB|E;^{5mT`nkG^5o{`ercKXw;j7i ze@{sN+417^6_{he`t;e37H@qcrb;(iSi2Cu-KbeupOz$V=(+SZeXrNTCbt z8fdfxf_@f8D>Ugjvk?FvWc1i*cvpL3}HQL{81jtFopX)dTk{71ZxFQczL~R;vB&FRt;_ zbwB^F{j5|B5g`1i3uta%ojp9?yW7Yck36#t=AZ^DL*JuF|Bt!Cj^HG$2R^dP>y9b^ zibdUa(aZxt;l8kL?@I>P7*>AZk>HF-`-~-M9@|()YBa`5OktD23TDR4SiIC$LKnPJ z9IY((J_=Ka_kerhP)gyDV3ELTu(+|8YGz~}jICk71pn2UzQ2VP%B;GZPw{oy^ge4m z@@7wFih2rPPYImPY2(*MIO%AUWjeA!pO$=jpRn_sSh=&P*+%J=Qa7qdNS`gLPd@KJ z@8o%9sJ@O{bHaWcJwjo&qgCNnDLBRVcN6bpY-tIcY&w5By?H01d(K%cv)S;M9qt#$ zxl;4UDW=3ngJL5k6d|N~weO9_=fP&wAdhZdU&m7IQUYqru5nY>9I%1jD-`;j;_uOb z=>4AwEw%S2Uv%Mv?{x+J$Y^fqnAw@SCiq^wO~{D zuBAo$-uV#he#R14JW}`I*?OhjzB0mL@=ac@0AETJviePcC5kiJqx)$@Zo7%fY<4!c zV}M8U`Sff1gec@qQWfAdk0_SuPM-eRNiaIK?r_ly;$NpAF@;?09F&`2d}A|fH(9co ziw}LeWx=se-g0&9$v;VGE?3UPrq^5snHKkfq}0^4xCuNM#jVi5e?O(B?)O$Tu*U-# zav^*6EO*yap^}i@6;^ik3$qx$E#7d(9QuSGU}e9J4E+k^lVP5c5jR*Xy(ps*F$Umb zSofsoxFdGQPx5}vQ;eIhb@0U3)O&6``?4e(-Q*2?!dX0q}xSkva+uv@y%>gQDiFpDvM4AS+AwUH@!0)Cbr$X2O9 zD&bAeh~dQYuG;$-jnQ31-f=mzp1 z!a;74BfY7Y9Oa#KoA?@FT%*-j%s>~=NdY+-ip%K+5g-htXSsF)+&`UI_VA@3<@JYZ zmWsOxN^jHg>I8E=?0-}^RU%e0m(hw6Uhuk_R}10!|wWvuJdY4_vS=I?yUQOaQHIp^aGY>a8yu`M~b#B!Vjs?U+K2LIAgNf@PMvQ6334d38srXPU=zs_6}NEsj-XNU&h5DWBdA&GVmXlL1|F_JcgP*~v!R82G>F-Ub1Sk$a^jIANP~ zW$#^P8Y7nH==D0Cw~Joq>?yF-T6`MH8Pl&MJh!%vnZ+X~bk+QoIcQv`wUZAwPX1_9 zet-@WWC?Yx1^{#g_D%5nOg%Ktuodbwx-%w%_ciqh)K`gG=zk6^ut-W$1# z&PCvL9Fg8A?8U6{0WFIi$*Q_)nf_qk&!J1jdu=<@b@P9L2|%W4oIjRU=Dktv*Qcsu zdO!Kw+NGJz^s?FOK2PLNS0QQF&kZWXX2ma4EvdFLEY)^ z)Kx2NAsiZC6T^p)MHf>?tjhF|1*WI)=#j%cdU`?HRRK-Le}bSX>Ni3oKoSf&8j1iH zIqmRS3}Nn~o&rwbo+m|3b|?3%0!@a05UM4?ce15LzN@OZu{yl-_F*$wj@;kqeuYM6>p>^SRoz^q{htW z8gLhnQdXiJwT2Sn^+<0-ILb%07SDCbrf}R4mzJJQqP_R6bZIG>$ZKy&Sm^e&{nZq+ zUf=BAz8|!#4-`c3AWMH}X;%p1TxfJYF7gvgs@!Yim-2mvLKBu6%mSJX+_FHzb4iM%sNZ|M3FH zrr%9d$PLBbv~9Wao~mu{0ypSwYnranTcziRM`w~Igan#n09Yu}$l<_$Q9N|=53&Rn zaKOaX@VRLcXXR7Isy;h=HuLvSkH-?h;q;q;LM595bb2Wh%c-quNhAQ}Y{AeUU%2t? z95l^`wgRuJLKnZ+>vs7>5!1PThi?fdb-R;HLfBflF>|W!af^7gI}Ib(1H#b>6{|S( z#}|FtdUei&Hi6>DWX0dqs8LTr-n1d)7Yoh5xk^xqGvI&w)MhXmf4;r^&|*8hsaAH- ztO%9?xEkKSl<+yE92MG;@cE&sYzt`ChY3E3DN}WIMGh_n8T!*+=R*j32h1igb~zy> zh4UJ=37&?fm|%fSgEX)h!QU3uxIYK%ty85r?sjR(o^`RNzl{U?G_+sJn1ZssoI(aH zjNGVKdUgFbDmO+vTiv!jnM0!r^x-|;Mxj(Q?D9GO11y=$RjjL?Q``Q1Ac8!Vi5e-H zO2Pxv_07;B$LdXZ>jTRagK|ci&AvptLe5OA`4&D)==YB6mx0w?L&64Z|CdzxKkWN$ zbfO#74F_&55wk%}9w-5*&Y3$k`8R#StFbYh#UtEP;9f{>KMKksYZIoKGEC|NDnK_1JWhuhTNM#Q@hUg&S` zuQZ)HO*n9VP35VKo|ppcJq@(*A0_W!y(z7PO%gYvUryoUJ4Jcd8{ENM=_!{jgJ5M9 z$)^sz@ufI6{pm{p9r%PKjTxcF1MehGFY%GFkGu;0ZSkUsqOb@o?!w_jnH(}N7)(%Oxyv#HFzEoi>uM~LKEAZ2xn8(}vdQ`={M zAnodiD4HqD2N-?!konH^s$PZv(OCbrqgBR(S8`vfM%E!dJY|vGP3RwRL+>0|M7cdC1+y!ktzhW_8 zNL^R0>H!kw`a7c1O>fr{H5`8c3+3I>0RuWVed&#>8X;k*u+xQ(jtN!5@}~_W!3B=~ z$F?YzD8zzaz37|$gw(_KXN`XQX0BT;=e=;4KVJ8m-WPx6j`f?%ewsfof3gI9>#9;L zc#}b}T23lFZFc_?_k4tEp&r6~)2@;*k4HD1f5Q%eYa_gYiVbyCnHGOspl4d5RZ3vBZMj9WV&%r{Y2&u|o7vEMkJ+-0 zRi(x~S9*;2#O3H%A{KWVd%@>W`oaD4o!v z!0EG$e{HpCcmmI%9RITfKuLq`W3Sbr1gPa(!ybv8Q`#`m(T`Wypa zrM-WzyUCsa<{V0j`cz(im-dhV6U~(hA@H^pR^5PSp+o*0-?~`(O6)60wY4zv|yvySel&1)rba|ZN73iI}>)7JgPl}pdYIsP^8Mt6oevDeiIKE}Nm zGvmV2a`f|Cxa+fL#8kLD-m=ozvwO6BW!p1dsIm&8=DmpDml#Qv6A}{fll)m zd*oJCdGwohJ9I-RDLF~2y0f$3C=Q?u4AWP_uV&c_Q)yl10ct&V8rY1EQv&n1vhjZa zsutw~MTXNq7Dx6G4~b^dw-a9ei4Yt)7MN?F;C$F8haj_HbVYHGjE!4@Tie+zud*EL zf9lL7SfX&3aw^006wqM_V9_qmSfB5B=!vyEAIXnCMj@j-&!<2d{>|33*E*u)`9#%` zd#USm9M)u;PQgAA+`;6dzjKg;_Vh%>zx%b9kF-;rd2o>(>FRu~*}1Q`xyt}G0ldtV zfB9-a?WcToC-fjCau~U5=b~mYzRc?9lV#5U7=`}I`zXLEAPcm51l$p&ju&{7RRU5|*|JG;xf()^+b2Y-SaF~ukukO+Ph`8?@=RnvGX1&1Vp97A5a<0c-v z+EzY0k_+|Fq2-7M?Z`$zym%7y9~B!VEP_c`J0Qo<3g}0{+u0ahYMcnmb^{Rfl0k}X z_C&ld{~Sf#YbPlw0wDyx1TQ6S;GB~+8n>c59tm{?7&untgZIANc z+GuSzaGpa?{Zw`RF)a^b*g&XjC!E2z*Cq#=P0)`BJFMQQv42w^scMx|zB8dp z!#KmLmyqWE@WaK{AJ_Br#THxiI+a1%&7ovPtOaX%Bm2t8_q}E{iSYFV@Veh1r+CX= zn{d=FG$4Ds6n0-_`MsFd(&r@u$S;XkmD9=dVvZYGf0Q9*SQcieRTKy?ApjNxVTHf; z2Eg(MFouzRtnQgrgipeeqw4{iFC-o6cGMSNXZ{;oDu#M++zCa$8c+s@-* zl(J;QAp<-1DO;vMiG=O<2g>tH**>rtAGC@YuB7eb%Tnrs2j3g^ce(6Hl~cf}k2l(t zb871jv=4W^x<~=X0|hqktWz)oElnm0w7*{&zqCe(#;;oIpO=WpRH{YdH1Rh}(m+we zd$fJ8mCH?$LN7 z6Ufx|$_xr#GzHFl+&>}me~~$3W1jP!VXBV&tg64 z?<(@WWE$8mazQ%B=)?r;cB{`Uks?;k9;zfo_^)p{fA-k&ZbZ_(Alf*aq{0hDRoz?g zlKu0L4Z*DYhH*D$PV1{@xbp5x_s>fc-ctBC*l%Qq`)p`t`u2A&bD+NDc-1a6w7Cb_ zR}ZzlbkR07Wy1+vg1&eEbN=0aX45(lXZ0Q?vY=K|2Ni5s!#$#CI`VEM$)?=bJBl!M9>En4eGx&@8pp z52_w*aC^FoU#$dR$hG_z8vA=3jMDyvKi97Djh{FTof^gk^;Su0ceqv&4S`5{KY{66 zVf0^G0yA&n$~<81ng_Yyg)n+adHwDvbEi`fsw51Nc;NR9=ONyJz;F>B%|N?Qxfp`^ zuE0cWI~8)ea7b3nD}O~p2pgf?Bo;IlM2d!`*;=Z-hC=S};?gf3EF){4Eu>REVcj z;a|ni&s?+Aj8D1zPK6Ns?uI(iy?pwRu4~77g09rv9f1`-^<_hgFI3B3uwPTk^L2Bm zKUg5gd;A{lo_nTGR&4Fv5{ zjk~s;!v4$+YbmVD>&@D5knPn6ZNG3-+)ANv7(t72Mo^8{eJZ#=-j3atunko-4f$$- zIg<19U>6Typ2V_}WnpKy(e?I;?i%J9$9B6tK2%0sILo3fD%fa?V4-qfvx{7uA#H+3 zk_KOLM1P3xZi{0)s=HR7#?Xwnd*U}yn_PX}0oOA@3t5{By9GA%^-0eRtV$(Ufl&uD z=@+=&l3V4l@!>sEfD(*6n)dcEN2zlwoetps^WHsM|EshcOhjC<}B9sHQc z)?D_-7ANE0=tSwZc`iahWc5@VS7jx)RIS|RC`>MZ=wTXeD{-(r*~Plf6Oj1#=f8@z zL;5EIyPw>Skzft~)8{v~gx)L)QiVW*y}C$n{kdB0fw$@SeFX7XTD<9=3M7}^*S|aB zlWIheZ@=^NVc52P69K{f@=eN;h(|<=8`Ijm#JKOR&0rf!54(C_RX_fnR3hWJ3)}fHwsv z^gS&6hV^SESK^J3*@z=~Um|$MMJWN8UZL6K&RrGVa($n&YEw+fCixJwxk-IKxN?Tx zFjlz|i?pN^$dP;SUb&uT@>=Iu=8LKDx$>bf)XrgGp4(GDYEcPI;BIT$y%A6yB>ota z(emi=TjJ4Mx?@e3BjM-(g(rFER2JB?(|zDuNYf3^H8FzKjJg%T$-S=9U?}D8$q(EF zA~b#W_K9O5nwzFXS%$+`V{JZ(*$m@8CMHto-}EHtEA^lH&?WOCZvA7*7SFZi4PWZ< zj^>v~Vd577xPK4q|FK>E%hV6pti}OgtLoYZx;^@(gaDygccPx32zrp)(H2Zgl=$jx zcIp=G;hiW;OUeNE*E`{~$niiZaTD+-(+@)D4d^X=SMk&k*S$Zq=LWbNqL3AnhYw1+ z$_ED=ez0Y~)|tkr)fX4U@E!cg)_!N^kgJw|TfEHc1C>*lM2yNZUEob8OeO3S61{yNmAL3rpd1d|vtDaKmi+{M&G*KIHd%gOiO28*B z5T7&3ibyFe?@%{bq)=(+Xh0VFGMh^xa0Z<1p~h#_Rrqz-bT!P*%%$BF{b1{0NeBN+ zpo`2<<0gA&nRG8TnA08xIFE@Eiph;q`w=a)Bwo){O_bhVR^;p9n9|% zz_Vv!fi;Xz9(Z-~m!Rys+4;rDDSEm=L=hS84;EyzvSE0D0lk}w=u1gEJ<*^WV4qy2 zr-}qht83wdnpL=5KsR1>hnO(hDZ;B#$$=Wzb4A=P2&^?9di+kPf9Nd%*?mQu-1)Sl zbsU@^992a*{khCOE=Co>cSm2JF^f`&dOpxr$U43I8YmuJ^skgf@d-1Y#a@Z97jb|O z=r(rUy=5=jvp_Ynk~Sh7SsOMM zRT52oyLdG4RBTWU(wSk5ucK6g<_NjBqql{BWTvF>)(co}sdZYDGJJG=BJ+s7UNaMs zrG@Nt=0O*Kz!9_uR4z6UNP8Rk7w+#GO#T5nNsLV!*D>kGKQRS9F z^~6EUt8cUx4shbtK+Tza2<94X>t}OZ%(B|M0J3*|mVJL)0%wr3_X~;7w0`zMX)maJ zDTAOuq0hvKh{ZI;%ivuI9){&#xIRPPTs7@AL4vU2{rLOI;BN-=4x zGk;snFP3(esNbD#k2yuc zZ_k=8Yv8f#jflPMZHSu9>0Z*Uw?_Ihkbpd{G-}Hyj$#mlA`>L0F-a!mpVsG-FOsuP zMrWnfzz}Mv8K#refPqWqq~1MX^?aD`?m!D@YS+`m!5Cy!{M2~&rK5y_X>^BVctPjC zn-m~_@{0ffMnH9HALy^U#valNj3t933pC*`v~P`&;NU)%Z7IuP!f%cFVecxyMgXXA zun-%dPJ_(aEZ#tK^ch=m!nOCvAHlxU0hRdx?`%x+A>md=+CC@Qo@Mk@S&GSi0@&^a zlBM6psgtlzmZ1jK!K$pmd3ZD$!3q7C;2Qx4 z6Fx5;r=z{lJeJ_58&j56l;81o*i6{qMDcuHOlP@*tk7YnCIYgVoD#GiDbO$^$?nq) zEa6Ks{Rv<`aBoksH3pHd6^VxIgQnVsoFM>H*@?ten_3%swZ*x^!jX%kdwX%REcAoe z7vxm>1&>KcAFZ7%ZRyn?qbw)>cE(uCV`#I}V@jlaq48J_KAfrC*ObA=@9Fw7fRk{_ zmr{ED;|VzQ1adN=#XD*5hS^weu!p2~=r(&wa_Z9>m_kZz5nj8>O7OHrR0^KM$ zRx{9}=qyu<9r2q!+u1S+4FI4i8>urv#!{2}ku5wNJP0?jOoEI0;ug>Ko9gk7P}GDN zf(wyO&4GYZ9g!v>-c9R&{;D3ja?WLREUZ3^3>>X-Y*48~!cR7+_oY&pGM9O^>X4v% z+pG*^OpJ>P*W_-D%-3;l9!c7d9{?)%F&yFY^I#lnDALXc@FT2?nF^zo{|5X2iioBw zK;#6t1cfcfI?TKMV<*b-9}2$6A&Ss!^TSK+!wJDl#lKmO;vW@ki$Mqc?Bq~zsqB?9 z%t9h{7pTWiFd}$5Nue}Sa}rkZs!i>I4D@>aQlB1HbOogt81e8oS>9EFKuV8NC2oay z?Fp>L{gJmp#80Q7z$lgVhw(Ks;6y3NRjof zjD!*s>alVFgE{sD9a6bdxiRT1xoSMTW^Bh#in3sw@w z+wPm7l*LNL4w`f|ey~mYL(mkX%<29&gm+^D1{0C{J|v*oS4|O%KmJ_~5sE@e{@Ld9 z1FMnue!nxq&&iK~d^@<0rp_AzMr^o39MwO9UK^@`_%xP>dYjc5x22=Vug zn;esy3Q7WQn3LPmWd`)r<)516}EJlPRn|63iZ=1sxDaRU| zNWfv|R`Dr6+u*@>h*e~5;V7HWw!|PC-pmD~jWB6!1eJe~;is4^X@l4Vdsv={sfFA# zNGXQJOfc?4Ads(cViZ*ZU=1E-X<(qZ%t|WZ2amk^r|jE41rPwrwr!pix|p%E#y^+4 zQV9$9DYub1x;+HCcnrOW>)bpoAMMzP2ZJ1#23yfJQ9~|c8AIWU3)vw89o|2@JI-M1 zhq~T_#_K$0Zy0=Q7!G{3^R5pWMc|MjC&5O$rEN$Rx@fSUl_di2)GB2qdh4z%d&aS% zdIGqpq_;o}@f-@))dhJlh(8*nfVtFQ7Qe6GU0iT3_~?r6v@n=^WkA!`1Z^bAAq%6{ zrC@TlRe=Qeg4rzTco=dUVY+^DiCL4|e6er$_m?K~w!WzvWKpNe+_@-41M$mBSFFqMh;O>fd{9b<@a?r#7BbOf)d8O51t0E5;yk^C9t4kx^J4;`VBTKM-RF{BDff=l zTXww;{5e!JT~&;p{+}iL+Wz{uP{X*e-jebJ23Xg>+-ucG2mYE#1lYru${TD%XW!{c z2%_A2L72O~u0iA>kL+X;OVmSwnk%^3dw4@4jJE%XhkDFJ29%V{3Wd6#)?{rbx~?pc z=~lhWHPMWlYm*hj^A?Ph!aE>0jRtMBzkdVlp#Z%+_9D%oL7@NhTk-x*^KtKBd%T0} z1?p4LK{!3`q1x2?-$GQqS8mUUX4p8tXX0yG&TI<}+q`ul2f=x4%GhR)s^bIWu$~M2 zA)yKJK09dXi-}OyPjH@1b zLyuOY%z;Tl0C`mNeqv?dr!74 z=VG5MDYG@sgb6Fi??Wq87XJf(6cvPSkBIKic=;ul96I^#CW_-nE_r4AUVu*EdwtS7oC-66i>k9q*LnkPv|+5ur2TTi{i zi;J}%1y=uJmNcU0xUbC;d-XOqQ;w z6D&T&m;i2to9E!^-3uS?-|bmrsUkt_1Tq{5a$g&ffoZi`5Kf%{KMntkMW6TscSJxh z`tz|N|4YE|xr~+mh$V3T%_Sqib|k%hv1Y59aQ2kaIN+5!hrL+~OKd$nWmm>%heDbI za=L{maFe5LgChqA9hM$+Z(mI4lvz^VGD3|`|Ms&Q_h^M)1xS6@=~2?DU%%ZYR+b(Z zQqp~aKzz>GEZqA2?(DP{IrcF%1L3kPpbn$G00J8m2K8C4_@6gDrUFsB(`ZH1x1Eue zdlFLyk6QJz*&-xft1FT9E;T#m*_V|@&9rtmM41M9Z0mKF9U~j00_$KRZ| zrcSu|_^49;qn!1^-9m!Nh}__(Wcp7+%-Rz`>xp274Ym&gDzS;s2W#KjBGV1(q z!MunsEtpk$a*XqqC-`c^%{VRE@Iy=^6=P%65TU^!qKEK^AOQJkx3V+cpOp@vjI{-w zHyA77p3ta3);kvqJ9SHz?w00~I2Ia1Iwb-`FDFFCeu;OzKn7fn%q8+fYU8Gz6b1sy zNsldS|IY$EC->k4faAMp6aIYG9$?-^&Pr-U`tZy|JMy3Ngs?=;-~Ii7Pi`J1vq9X{ z-30vBQG<}=75;NMp)Oi>08nVV+}XVM{wT8EN}%;#En+T3tkqCqT35$fg)-cibW`Dp zd|3&0_!@88&FBsF+2eIlAB&vnkFblzoQZoe0>d6O9^6v)MdF_pXE#3>L*qBmC4kjT z7P^R6j&RO&y9jqj=o6hHERQFX!6QDBtIVWtTA3d)#88fRoJ*fQO^o{{eqz#&l~q%9 zCr-ybmh<-r^6KJG!m=_F_fQl-^krm&EZ=@Nz;dpSa5~1`=W69%AC54h9)*zciC<$;dA-Gs24fZZ^bluF&oHcH9 zAcE9fBe6useA$9_0osxWn4v+-@<_$`q{SW(hJmmPiDoz!-J#@2ebc&d*>?Hjs_;!T zOakrhOt`FXndC3?-cN-Qz{64kN6vd~U%NU{B5vwN*I7b%(R*aW@~M(8FJ)%5lDvj# z{ZO(>oFbfFM=wqX7iMIa!VN|3c6RDgNntKi7V~e{n~xbIEX4}q>j&zJos!&1wRQ*Q zIi$OLDM`-7jgx=Pf4f^DcZI}wSDyDAw@_^V7$9rT$6|+_Dz|+Ut!B^rZ$gh3IWxY? zr0kHD2b?9Xo$DvhMlR?Fcl(CO^G`4Rsd_S?Fsgn;A+X{V;f=CTF)k9I7Y z>%eTkH%D1{#QC7mWnmleX~k=MnUxx9O5;F|-eawr-^2yIV@{JgkY(j$<=9_+V6fxl}%vPpuIaa2J;_aL723cO!|2yZY3lSvFRWeQhZ#NpXCW2cR!1r@E zTSuJ;N4XI=c;N!WZ^g4%j$)ecN%T1VzrQOm{0-S%; zC2kgkM7?RPKsZXR8P#(V)^rCC2W6suR=)o85n_=+Cdgh@m6?Hv9!rKN{uL&WTXr1M z4m)RM2+X)X-It>7nQnV8QADV;(ObgSZ!MAS`Zy3m3-JtY#DqZ0+i)tqH5QvYGx|6t zEoS3@gB|Y$>P5r7?+IeV8=l4w#>TO472BnJl`k3sVyY6rUjqcg7bZ9@h6Gip%S)t? z`K(qH54^f+1-U-6@?-4tS)gGyHB%lRJ;xrcIN# zN4yD7d53lJKyOdBa3W*ODvtsAyPKk5L+`l$<}OKsmR4Gc?00y;YZh%FQSmz}-Ith5 z?M(cu*&ntC{&b>Rad9Wpn*nOKcJ6ocBcpe@teaUUS0$wznTs*Cq9P}kL94C+?ISzI z&0W@ZOy?i)R7nV}n76C8XGy886Nhu02I_Kd_c%Pb$K2P{QdP)`7`q5sV!3VkPfi+T z5)WRW&RJ2RspjQ;YIrphPFIll7U$bM-0xt{Z}RB#E8}e;4up>ujB9`BdtM1COQB*a zUycVoZ`{QkwvV5F{Y)*7S?I36hB3{3OEt(1l}F$**#hbf(%`}r3ke3M9RB0G2^!^n zux7|J@b<(y{Y-3l0+^I1g1J(x(Ew;@^!3Y{(6q0W3lgZT@_ysqQa`N#$4Il}6?mok zX7O}pk&8Cml68xt5Opncel|j3MhaGUI!+`~?Ew{-NAKLN)d{dn%m2(ET)RZ#0o8tm z(`*S|Zny)P{}CW7UV88%g;RyapaN@QZ$^5N-&@r6Px4CjkrtgXI1_hMKt=$wa9NZ@FWFo&>r5%t6eSfO0|Rq`h?`WR^ZJW zOA&yFN42D396Yao9UVLQ&Z^URETz-9$v`G8WDLw7G1-30s_Q1J$hVa+7N&5WF|UEp-qzy!2)ma_ktpx1ho#BIb&~ZGP^Lt;GZqq z174CcVsCwVQH1GvLe3yF#^OS{Pt=uHAy2j5$_zR$SW^RZdqC(rdGpy^U=-=3%H=KT z*RN=h73r>VR4Q}tLK44Q1Hix^Zmix4ITc;mry;v&{B$rzD*9A3Hez(|0Hy($x6z^j zYj;B?iIw-lw+V5=j?IC8-j?3G`@zqoF3IH$(&aDLB|zi-*`_ z8q-XIZZ-m*a*N`Ry{?RCg>c8Z-echMliYUiXY8~wAJD6bleMMgceZe|5wKmlF4`{A zgu%^l$`2eKGH!R=0P73+D)Mc?+by~3kD$%d8F?BO;X@4Nz7zN!G_=;op&ahMO>%j;D8l~RrOdg95d?HR$#UP>qTYV%Rdo?+A znZCW_z!8!FzLSRW7h6qif${2ECnAP=HHM7cjeft6QKQ4JV3~IE8<*-f)0&KQAAb?Z zW|>3@UXDqKzsQ-TlfqN5I!poC>q5aYR|d;JdIpa;s1>2@Pm7W2%;I0>D;+P1J!o`! zSqVQM=DBOgQ}sAZ<`sVze`@R6BPNob0QLdNH#+_Z>`Q!WIL{XiyDvnJ>`r?~!mO0- zH*eN#p2E=pi+ieFJAV#G45~Stv|^^CdJ5iIf|Yjg%UZrToH7b(8TzLs00_6Zekz42 zbzK|?5;)-Y!pA!nGw&b8N?!_yputR{pLBJqPB}+xbp7G__-6No?U^XzNBz(~fX|H8 z#ksDathN_CPx@)?v7!T~u1D|nD4~EqjRKWwA=j|;JmiUP91d*#m&%fW6{#9JFjDpJgx3Il&SMs3U2YOZ4d6ucvlMhHT+;9_#!JZ;&WCY@_U~sYa zemjr<3sh9&=LS*kA^mFo$sP=*+^GuYJ7C3uk8K_2f^w{Wd+Qd_!c_H{T7w(Wd$4j> zn3IY%j@h<1Hh^WmxIRE3kL}5-^0;&38{I^hINPeCyq&a7hP@@BxJpi?o-y*03gdAM z=0~VS4>fMYF=~w~)diy`7-4L>cMe?Ax(|azH6uphyKEyE*3~L`?1!O-vzw`&>McX( z^uAf|fbYEG;!rFdrP<1tg#1<^IBgN|$h(Q^xTcQ_F@={1Tv_hc2kPcJ-BMLN3@E=# zDKU8k_*W-N$9lvPZb z60h2WNtzAfB*S<0%&6sVirRO~{nego-?Iiah=arnC7g9YFgg5$H$eVriU*3>naL`< zylNPZI<$+B8FDSpAR-=uE`NB$6eGq~W|@Oo|JhFwbku<8GTdBw6jvT^u3g)zzhK9+ zX>;l1QfaqQM_<`HhnBi}Q-jF^vIcD?&ysk;RqHKD95t_MGu73#Y9`{=zUUFISWS*t zP#Vv<)k3cdc=`M0*+DKc)l;@)T7=w)JnV~P+!UmEJxlHUof0FD##*L3Whp-OlcZ-2 z#62L>*OTsdERzgEQ=e-^9LHlU8hJk|M#e~e%p2;Px(K9< zkM;%PbJ98)$7uvWe9AO-jmLlXM=yLTuf0sUPSYmf8)W99H0!{6XpL{yz4n43BZ^L8-R7eCd|5! z+M~uTbfsCA8GDD!c$4EbQ|kyzuZFFkdAye9&b34x;W|bx0;jqLjH@qhe^;^n^lQmc zB(Oc(^ZPZ8)U@1V&#ZS8dJ>5=8biPyymmqLocW}IAzx;FnsX5-^d73Lwy;p?X1q#( z6&U*KrM;|nEVB1Bjf1SVW!Y|5Nv{u-5q+9>K5QbkoA}(_=4du(jcZ<{b3Q~gI)tM?37Em3c-Hv-6=_B!Ti`T{!_NLaK{T&AHmexJA^n^cxB<)b88$ zXfef_c1gYK{N4FCp;c+c<6RZGNW+%p0>dxssS_@LGFLP8VU-)&0r9D=ze>92;`s+n zcs)OV1l80h$KlmT1TMo#a(Zhw5!4OwW zTRCb0Bq7`~2v0 z?NZWU9O-Do^=P_l>n`E7Ba$629(?U@m2#wGWn=F5Atw?Yyf(AA;-$Giy3t?w6ELqX zH$7b^2jjSIFMMTg7(zzl-=ZGhOV0_fmVBdup?#y3zaq=_8F-0-_@&WkCRldh;;<1q zt+d;7*Xm3XEOM6hTFeQxD?QIQO)s(h9GF{)^bwe1>XkMFl4pz~##e@w#+LqRHYpqc zCF7#i+t9+#=Yb05_soi8<=ZV#R#YK>5{87E97G7)mJi@sxeCtHe#zJ;mPjuY!UiBN z#?9)d6vVsR1N0y-2Mf68DdM0$Vv6s#%u>LH*gpBq}60qPew zX|dr!O=6ZSAuQ;$n%T8Cw!ET`+>}28?_-zywx|I^P-2Jk&mnh!pe{0hQs--1=6>k{ ztL@u5tpTo+ffrtU7Vm{av>x`rkE@Qno?R?fS^2^~AudK9bC{oGAWXKMF4lFSHnnE0 z*y^=CBu0TaOPZgTDyK|zZ42ubX?hi{Ri{F8w8Xj6hn|!$FWuJ6~Aoa>QuOHS_=7AdX(0Y745?~701gTQ#<$;4mqrk+5-9+#od zCqoZ|PNqj7?~A7*845r{!8tH`??kSF)Jc*`h6q|%n-q|oo9FJ>|8w}lqf zYWRWSkhas(4aD6n%|v9T@Mb^&|91r(1vkls7lXSKP4c2$V^ zpS}Mod1i`l;_Z%)t~g-z`|Y|JknE>1hV(TIjUA+nC$yQ5aZgADqxyK)A6;qcLQ3oL zO`ikl1#bR`Z37LZ!>TnqPl?Gc67y+b2q^m!0OE*q@vb+V|4Z~597SJP0*4wa#HQqbdwM^B*a>t;d5=(3svR{RK82Dv z2e**b>sBli^Z3}Fd0HNR$Zw_qMFh|?bC89;rC@#B%Bgpm2Izo~Tx1;vV--6GWz;M! z?~bkyG|aFdECGvBXxv-U^_AY^^T)NZYsMehYbA|`Q3-;W0~Kxn$_*P$u<==Oij3EJ z_JImm6aD#t*;icvO8brdY&28XvR$6lRTvONUP{zFdJJ~-8)r1+oyV3UV2-ZS(;jp~ zwsoVwfs^rNHh~6~pXMdF;#8R1?ad5x$8fC+ia?o(*pxqsj?=iyN=HklB@pi3ypRb@ zcAR-9UUYPXn+zrmOI1et&D*$OH~g5D^7C^R0onK2Y|GspJg-S?R^`W zDa$(L--#DA;t~cFDPfjyX+_b}eKU>umvv|>%Ag6Kt)b1%-PPYwP3Pv5D;VyI?h)(HIDWfApA>K_muqj1|Mi+v|tdiyowl8D1p0-#5#1`rGAO}6o8P)Bx7>%zn>7y)o)gxsNuzeK+DD%@fLLn}5cLqMgclW!bNqiM9KtyiA)lvQ z^zT7lYH~L>eJvQ%luN9Vc-k5RXi2vAVs^>VImPUV+(Ew7m_Ieq^cio%Jgte9%FqGa^| zp=G!aFOr|1zAKqIYm#=O zX6pcvagYDU)>lVG`F&r5qNIQ{h;$Aq2nY@!4FZxg3@xo7pdvApN~eT$3P{ZiEz%$@ zIZ6$UbazP%ybt>M)^ELQ`G?Dei~Bs!x%Zs2&))lXV{%JDvcjf~;x-V4f6kpkX7P9C z=tOUFz7ULp*hRNcm0MAD^|k@Ii3Heom{p!wmuS(!EuBKoU{S3b zX}QnCdiZI4>thN`#AcXwBF%+u^$h0#jv{~Mib3+V{W5@t{M<%;?Qt~>{4V6$>LuRoww0sGeSd zsCf`;&Z9(`okPm_a2cU>v)8@SW`_6PWe>Q_wiB?9QdKt?X?afoLL0N>hGEW?xk9Qz zvJZ^A3G^mCUax-Pk!>`JqkciTbPmagGl|>FJ0C@?G~RW?Oi-yD+n8T>)Wv^(*-a)y zv*>kk8|$t%w`l^lA#AiwnT zysZ-e4YLVfHtZ<%YyxI3+DN&MJdbcm2dmd!2SjTkWdDDgREy_-1Z;DGyhs9E;6cdc za`Vxm&5Y1z{$Bw*CHLV@E9}${%`Hu9C6aX%j^G_ARU4FkoOF1C8ZH(P&TrVhtBF<^mu)tqJnUDbWsI7r)-#*V0WHsB<;NU5r-Qc#l^Cs|)VGJ8npKEb*^FePsl5gXG0Xcd4}iryG!qY*eN|<$9fL#W#q# z4#X;_8-Te1xeix5Md?!d>#Co6cq3aUE~v>86bLpC2wS<3KQJg5!=P%{?M|s#J>%-lAL%ZRiy0e%(t+t;L1iU{1Zei2uYa_O`*c-DX*j*Ap|2XnMpKHtR%Jk2l2+ z%yoIs02619oAqCMi(9=75SIYl@vUAD(YN9b4WH^1{C@B*iA+5nZAcq_6X4UO%lIgp zFky?Y7uVPNJIK}(FsC|)r~R-4fGSCJ7|>GP=AGoalEwCo<69kyHnOwDm(?`9F@&T_ zC=CUo_HhA$smb~Wz-(z+P_AHoA5F#mjIt@~FD z`;Yvh3(xSzn-e@K>10l+5fv@94#2Hf7a=`xc9>HCz3c-iTj9tO&FE%uLs@sRf~TC= zTS%gsq1#E)Oi|?opde8}$AzqOOX*RsU0G!580k1xY2~A?)iOR-{9P>?Y0-CNE;XTX zqKp#kD@POyvLPzAT{lGw%m(<5B!Ie%90q{l_vH2(3s!P5IYmlmghB z(TMG;%$+RIzcqgkCWny`nClat^zDyylyTiZ9-ePC@ z(>hGGOGl@nz!>FN(T(7VdHH4IINQ^L_IAptrcOh3e!WXDI2j*3T-1OlIL-e1?du}ZX0+|vd~uFJQx2Y#KB2B;SOv6C8H zSNy$V0+^5eWR01l0DUNSZ!w>Eb34?Oc=p`pD+T_$qi1#RjO>40T8N0*fvpr^4Y)3Id@Pg(vnPBYw>A~hy9ivm;DL(ozg7Aic8trK z9CT%kO7|Sc_#zGBJ0TVXQ1Lu((Se-qh&+Dn+R0RWnl}e1twZ_7-QzFk4v&jB`OQ-| zb!Ye1Yag6)B@_1F>#sC?VkBcQ^|Io(992bqO-;6f#IFAxXD4bj>BjPvG&7#^(p&bF zr1@3ba+D!$)HddA)GQY82P~3KVGxIAqTkc0|vaYt3zAf#sPU3 z!Foo8H3*tx@)+G?Z(G2KIqJ$2`L9y52e|riOGx=c^0UEWJ!gZ|yzJ$7S(YuIY1`xP z)^=g82g`COM`bS9ClUd|QpKaG%54@E$(yq*5-ASC+OObP-=xJhSp(A<(~Nn*Z1?4` z4XD~SWxZByaazt8H81uX`y)py9MI%#fXHGmGaE#4%d@4<8c&xr8YnlOG=8$;aMk6>aUb~d49uNzkF0cBVbq{+!d0T1fudTd z=CV^F9h*tud5b|{dAImUL!^jo#}gm6n1b4Bm7wcG>mno{ z8Spf9Q3wq`7&TQx`pmMTb|!FT^hZ`QO`04ou&$8h@Q*UR_7yeJG&Ci%&tvd|4T~Hz z@b6FnM*0wY;#hYmI?nMiW+Y8L>q7(ETwY-)gxu_96PYG_l1KgKF8HDQ3`XTE{OJlT zho9aO0=6o4Zf4=(hbmnUhlrKJ+V2yxQ6S%Bg`rWFbU_vjqWpiBU8wpaE;W^}xUhEo zWj|_Q;>70(9&o$w6vnQUs$iuFxasDpN9JBzMfUQypL;I*Zc{IEUSk@Sr#zmPfetOo zKs9aq8>O)L2QXAvPyulJ(e^C;t@-wRy&12lc2J%gc?>M@GcokHRfsea_^nAD1mO_i zWodvY?n8oc?+2z9{7}jpmpQxr#muxosEo)?uQ_L}Ig2dRcC(h#6jh7V6M9aiKqv1V z6!T&nwcM^*lr32S0xmZtiFKbGZ2!*f)U~;nR5#UC2MBDFOZ;!w)dUBExeF6^;LTX5*3cTzhE?Pq% zaz~$@plYsOr$rlRQdZHS=?v2>6D4Lwj!trI#_?j_R>elJ$?i=4O8&XuP|zc~#0i~k z2#{v@A_P_#<@0Q0UZM56-`jYzaPppbNFYw9lq+BQ`krDMs@NPI58rOyA6s5yd5yGpD4?%gG9nhCw=7XXN1klFWq6;lBL<$#RN^7RlFX z7c(#EFgp!uBny${R9YiS`onR7xjD?GS9VxsLPmjUkD6!~HJcuJZ@}A9(8v%C5V?A% z5x2Z$HOiNm9ff7UUPG9W-6)T+nF4=tPnmBi5t$dC`J&oDD9RDVsfrw~{+)9RzeL#Z z^l5Rk>+aqBrC`H#k0Yjc)#A2$R!>a92L8+`8x-04!p=vcb|u^ySzB0@@6!HgVCV8` zDq2$O@|T7Ev#s#{y{)>0-%)$p#($P+1JQ}IYRno8{Z8XAd(5!d`6T{Z5|I_}#jPB1 z66+nhW;+6L&xz8NtD9IATUuF=jG6u+mck!$BB^3+rG+}j9DdN{Gv4fsp=6484T?(T zii{_4R=uf7K%h@M$5Q;Taa^0^`UaM4h)&`jKxYkwywO7J#^I&jp3hg$5st|HE#Vs( z^;$~hhMoUxlkmG17Bx)r-tUTmb+v|m;dQ2s+WFks8kgyiIV7$uq?W#{x|Su6ya#8HI$$df=1spPb(6Ww`+FIeLn2;%fIzFKD=|!Z1VUUc@5M<{N>wP zjL~QVHSzd9Irr|g$B$Yk+I6q+B{FzzB6Y_ifS0)3XzpES81;V^j`rXlY?L?mz!W&v zw}F~Oku4}!u-Eo!4&6goBOM6^FA>!-sG5uYS3{9a5tD7W^9w?07Kqqi|LkxBgx?``5C zst{HD`5vC_F_W6TvLdD9F&ki55~J&}8{oBVCS@~ZkrZ_E-vPO}xX9UA0pjs|*n|#c z83T^)nAVObF*i5wARDA(Iia_AMBZCO)SIg+vN(U@*`Yu_0$VhzqWmmIdiZcUjN{fb z1PPuK#9XsEE!oGm;B@doapTs5Y(+k`{D^=b)h2*yAAOQz>c}4nB*3{2ipaEYWG*1H zdN5K0_d0H18M;IAtu{;Y&pCsGCR|uIqa`PcE(y2x{Z<`uDt$BJ&0_0=2yeOy-Vy~g zt_YcB!j=H8m2~%0D(HS!#SOoNS|@Ub7&4)|mA)w9cNWJ_NB<;;%0OI2`uZq+*6j~o zb)&~6^h>j2Jj)&tytb_mZ`+I-+xvp8xPWwF>LYVcdEEHaC8&W!PQ~17QeqA1_eLL0 z7YcbqE6t*+n$>#^ljGe>Ho|CG>`7KFzNt4w8Fl0@6TCv)@==hYqoV4Zg_W=+vhnMe zC*(xK=d~da&jNW*yI&6<^^t*~fu`%FUSyZbrhD4@XMV7VQ}W^=Z_g6fK}9hX;T~={ zMB_0fkb>JXAY3OWH`tafi>u>Oo#O&?7yNayUmS^%Ds>K|mzTR=WFmXp>r281Akv?4 zvX7JbiL{&&tawirZshP=ESQqts9BCYj|FbwIGH$3&{m&v+!dVIRsv+&kmAuShfR!vVy?!X@$ zyTP@Oa)<@-@QC89gtW~@%T7ZfJ3R7@3?GQCg6=VNxR$sMyblSIDJ?$5&WVzI6Xw@r z3jDPv(xQM;pkFIE;TZW9LEjL`h;-Y8Swcpo>D-Ft!00FBWshlDaTEi2wW?y#E{f9K9&vO~g0FAEF`0Jc||)bcu=4x3m}}kHdb^4~r^WQXh5SVwyes zZdIAHC&L|e$0q}41lI;pD&N8?zqNXZ+lLRn-cd`$ewooSl*K@Sm}N}NVM8NF4_!1IB^fswj}D#3({yAnQ%v_3RhT?u;>? zR`%T^d_T(hgg|nUwLK1NOpm*0kYOKCmD@i1A8p5GA;T?021;EC`Hm$BpG%r{df6`} z;bNvgd9&mxz`YBu1LH|Hw{<)`gC{FEGr?$}=y~?EEX;x~NKMI)i~eS*2%!azzwZ(I zvxZu2b4v*S(_h0AN`xd)JBpvs!i}xu`55HYcds9xG!d}>mJ}-NE=AxF^g2Y;zOJAh zB!qiC8W(a*dX0kt!8-T!TL9+99&5t4>PQ*=?Fbf@w$Ia5ME%)vHTGXfA3|lzh~~)l zR6rS$!g=gu)9juzX1^rmd;-!3d+NWLG=FSce*p^7AQ%jkvX==JGgG#rX!?E@bGmB; zr09PR0pOlyp{&3*oWl#qODF}&AswZBa+cr^r6i9I4ZrtW)Oh4Uq&B`C-XRY?mRahV zju_GjKli)*+5Eo1`#8}qZbWzW6uV?LcgQqX-!p@(JU4EjCAZWrAtPs^Tto;nqNn%# z12{ZL*KBZR*gdxN(e)nfAfIiVgK#nV8qdgoeev%uWYadM<2asC(e8YB5bu$OB7zXJ zQ!zTOMWCjX595T2LC^@r5QqqWI#k&*9`v-3YTIL&Mv2DTm}Z$HP}0ClCnY-P-W(_H>|RmWCVzwo(C7;JQc>sWns>%DWTK*g*>o~#|BRezK=xn{ffTXwp|>Aw-cFy49ok-j z-`X!0vOHF(iQ21s3$z(QZ#~kq>E9hwPqPxxhoEbJ0oA>l@Q+r5YeLO9zeM38xE>`> zZ*}==(>i5)bf}{CC{Lf?y=U8kqO!@k+UY4lW zENGf;N&AKQ6s1myu$I9(6uQQ?20u_T7;T&a z?9rtE>``x8vz%~oo$PQ;SEX&)$FTxXcua&S@+m=E$vo?mZ*)Nwk9LxMlgX@@WRSC; z*W}CFKxveI<-z%VaoK^)YhxNLOl3rvM~2z$AZpZ|ewsUy&EiC@qwCZ`nw^A25Ff#0 z(mq}=m`CW(H!kKo^L$!BCHd<;E_-Dn?MK=-zCER{1|vl7Qru$s=6R@PNhANd@T9CQ zMHpy!y@WSR{5>+#dD=l9vp=z|4gmqGkC?bTc^W-BHVAGqp+6-){Q>kKt5g1moxZJO zMqkKYnhtfIX>Nyy9Mk9cy-`ca>rDiV8TTw2TY1K&?D$ zh@EyIha5TxYjofKS36vg#%W9T9)f4hU zGkk7_ZTnoRbR0GSmnuV2M*3-mE%g@;u`-DPCWm>ciG1n^_UM_jb9(H`* zypr#MX5K9KarTVEHZ!zh>^rV!En+QRqj-d*YR$g7cD%sW-7hK{ltBTDaEszG_V7>0 zbk1x&=r@ReW#SMuKi8G=m7w*(vQ$2!6|Ypab^>)q*O&do`-#|9O#DIyrBWuES}EAz zj!hu9OsssO6xq%YNUDCIV7;oped4W=w88LZ(c8oqzTH0QA5)8tHXW8+rZGxgr?)fM zvSwTh(g673Ub7{2t1!vOFg#5-96pzV9AS2?eK|<=9Art2o5K)cQKippP4@G#1e3BH z5UF&z7QKo!i7E^Mcyx}pziRXyQzBP1lA+_3FYkIdeBuXShmO!%GYbS`YXO_^$$OXA z+O$pQm>!(adk8zZ(Xx(Oce*@Q78XT@ddGvWm2%g}<=qQsn{Y@*$u*w7%mWAfQt&wh z)BAN4XWYQE3>C9zL;O3J=!8KYT#~@e07t!UN=O@`Hp4Jp6^+<%NmN|UPYm~BGUxK$?a#LyQwat@zAb8LGZ<&! z=fjDq48;c8Pj}5hFA4cTPeJk64GDT@82qiXL1sw8w zly9vkF<<|6yVX>N`3xj{q%Wx}nP{Ck#UVnZ;z|BK_X<+*DIl&(XzTeAJPyu;I9Fm{R+M z`R!bF<1viMu)?DQUhr|U>t^ETXKW=ki-u#FgDR?J-Rr%eUjO=~l<5(lbG80Rs#O+P zQFTdPhS){y!LHjBb^1c}uh7K<)6LDG{dOWPUw&^TzQ}CU;@9u@FYlCVp$yeJ!iU!b zE4r3y*UpMW6&2w!G)r%q-8UNJq63tI6TW*1rMfq4Fz@py@emkNx0fGvml;6M$aKZ{jCWhD{oRY6ijz)X;JaacA&4rJhTEknzF>OTbNJCF=E0(K_BP3505->^^@F1wp%{ewLgPMO87P^ALA1-} zMR3dv`UjNuybZJ`{%j_vgT?qxSsO_B4d6f!9 z`a?VlUTAYjBv@!(xX<6d_vrfZjVyeN@t1kAMmPO=fr{o@;myTTtD?>6SN){jyuj^` zNkXzbZAnhmoFxJTMRCEUM&JEsjkkmGRDFaxC>((HwwHQO*x3_X`p+qUSBg&~osVq< zdj&j9#|je6i3U~;wj(?`7@@)}C4$)Gz$E$OEEz2wX`m6u6(eDOhoN7>+ctp2y%Y93 zCFeZ2SeeSncon$c#^aqX!%X0eAEjiXVw&%9l)%iv5qSmG3^9MQBXvM6k@<{HZ?DNT zSBQG2VP$qGkBP~ybNY2~sO9NVoa?xkK+mT7bIL393Vp%6Q_ z@D}1uhX<9WL?mDBNLsq27woy)ZxHaR8`E1XJeEnbB_^(29?aDn_8YDgAz@zB`!3}{ zTWAMnWn>BEalMTsLfejC>ub4ltAq)_*k^z92xSYuGqZ$@#oFpd@K&3!%XBwNJSi)I zyJdb{roE}1aM#QxT#h{a+qrX>tKjru(7Kt)g8A1QwUQWmSE7ol$7t?VLO0%tuBgiX zMhl$%*Dso#rw?^;^m|GL_cFvaUM_alKe=j9=YdFuD0hgT2;;O8OcWlo@Vb3tQM)++z|jQMDmR~bFtD`Ici>q)=)mzW zW*YcGM#OvL)eXDcPt0^Zyj00d<3KIzPAcoLb5%9idWu4Erf&|o68+3c9SA$XR^?-6#o^JqWfhg-9ve^0iUe9 ziaeFKHiJV)s#(UrO%P;!q)MR5cxaFPyMHW-OM?ig!?oS24Hm3?U1NgkBVP*9U8lR} zTbsr`>7NM;6q9>WDnPCNDcT)^heq$*Zbb{hCO| zok_kUzUiK%%rd=AvEhB85 zn|*4X=?HeXo?)Aon&_4X*K+weDh!ewhM~Hxjv`VgF9Xr+{La#bwb-o z+Hu9u`;k1Nd-TO06FX>NWQ>bToE@w4wiD@wl?s7WC-j~j&?;lIQ8w8J*sOv1kUa_z z6yl}Wy#F0ClTy_(_|U|KMjdsH03TMqNH6-Cd4#{HK@9)$<#1=i`1;t`3UM5Y*-ZLt z?vspdsq4&ThzI-IZmEt!sg6W@HX$m!ql+V8*?T2=-+ zMyN6jLPVW;+4?N=#hNin{<|(5>+XEN8~A&e9}P@F=y2da;yANX&=JrP&)#0NVd*Rx znsp8E6!u2gB+(MB-+a0f{3;2r7zk{f0fA!JtGL$|M z#r+Ld>F7i{Tr1hrHc`22k%BY$bw#7{taZ!2_0jH`yh zQTV?YL2=I5-XkLbV7a_35?k{Fnr6<`dFuyK)B*E+Qo`n*3oDzdCO=y7=hD~~*x#g2 z-=w;$Ue$xSRlbjETpZINcD}#XeX4>Pn@9S?Ahk}Vy?U)f?QAiY@suCPEiOlnijD&I z%;tfQNF89-mJH=&MpM{?JG)0j06Ol~A>QeelqvI$682+*~p|@v=R7j_WoXQ8D2h}=EWVNsx=#((&rr0>= z6wB~F{fmB#B4k%GC(1h3-V(A{NT#T?v>uD-aV6fRb9oU4bG4cB?`P<7oxbpSW#j0K zktuj^@bxEttFUI&Ctg|EOlf3D9tTv6>glBaaUhdlN%1H10Cm4zMn4lrHb(gu&EHAq z%gk=FOMve^?HvjXvVONdKfWW3^Sf$`o{GxD{@c@uVlP=Zmr*^o?K(*dIjVl?0SS!T zgXK|ln3!)|vlTg$w6HJcEB+krvES~~%M}{{yoJsAxM?$QTK1W0lNXa@2ZP419Za=& z+BywoBzkl*(hx`s?^%(Y`dH4)42%oJDV;>%ehGYltHm%y`JLEf-l9H9eOUbm*+FRI zJ?O?J3#NdNgCoYnPpr*j*9qlV%<@KFpY*I>uHYf~p-xbJxMxwrH!s|Ezhji3AN>6` zwMSRiaX>Ijr!cR&q9w!>je7hUcH@Xyn%m6tp~4rR7Mh|*`_IGM*_+OOxZWK0mxZzS z9FV_j6Mb8O{^a>K)u*2tnE93+)B-4ae5UFz{7_;~UjT;}VU`axyGexJieFrq((`a? z!ouPBImP_44Xs;31+dC}j9W4Y8bh8P_<5flXkxyNJ~nWBMStzKxRx|CalmclLAR_)x}8tdvNs5XwoAg4t?6gL zSV1B)X>x>O1E#x4 zZ8)t`BvWR~ocBlucYd~mfFfM#3a+P8MSTpJ13KD@W$I;XC_=R9D>(xD{s!ZuJWMiozVEPbN-|jD%Rpw;@2-r zOFlVT!IS&hFD@iD&I*p6g8F}FNlVmC3$N$Q*xy4w*cW<|F(ak!-G+$0^$~G)g5>Fy zTq7RG|4)=q(@EO;0mn!^VAuGyo=*y*r zR)3WxAxA;9I>^{N_1vTp+n#c?*q-ejj?EaUDPQx|fxPUkX2Of!6A+y|T=rE00%?^G zaFA~ADtVJxqo3dwr3Zy1ZG!xx17EFJ@fp9VC;*rLC^Tr?&$qoB&c{qrSV$QRqvj*| zRB!IUcq-PjWG)nl)V3mKfy!yW8qbS*lbE<@cx;!cwK|tx659O{8QI7JHZ>d`L&+{n zIXE&WUduAd9NF#;bJLCHGkzV6Os7Jtn&_73z0@@^oa(D59f!>~c;^0qH0^z7%dfYb zVMa*}np&b5XYz%TF@$j0-zH_p?qbtUq?qo*fg6yZ=LJ`kkO8ICJR)FTMk&xY?nVjF zQa;Y&TC5xqQFjPyv<6>=1sgXTFj_z`3?xIIGuwq$LAPD;c;|GT8rfl+(l3Y~p|L*U z=jT<6$;z_%X!8Ucfjl7^N!opDGej6<$1L_{65RZlgn1>6x$=;cy9B`UZOneYauH+! z#!sBkpUJA37n23%wH>6U3sM#K^9yUIOUV$C7r*8vYzU6B!SOgA>Mi)Ha*|700z=gVa2 zMzZ`ANB*!Qbm0+O&n>sRUo6VPo-14mt~Q7xMfu)w|hXV~lZZ3qzjB4)g49;?uM88n-I&7uVo{I1{=0kJDJ^4Bol zY-ja{*A3mG%wtwWYy?U?&}O{?<&|n^oIsO7oWPf+hrA_wZ#;L(Zjd9pMQw+NPBx+* zCs%%O*x2r3pnBhVDp9|fc4~myZnY7x?`E|WbXc@EFI%U^RHh#q?+9Rw5RdLdCR9sg z#WXm79AV;zO>;Nl4X%+7e|?*cn`4KQ)=udsAV$=jh2)!L_lvOx@fcEiM%=ZZwi%$siEG~^{O zN2t0#WHz$wL+uz7GF2|muPaQZ)cH2?d+nNMK7a$8=nk?S!Q2RODJFY${+qB2t{(Kg zchVsa9-~o)_{3r!bf94Pb2fgfe9~orz2HUvWwrdCT!fqtf#KHaveMYx!%Yz-6bQT< z)2mP|S=s2*81IOq+YaiSaIm4xBI39KmlOfV)?cRab2q(#kg<~unW9c7nL1OZl}*!b zac#Q{&WpiSrjh-rvj}64J*zVrTJH(H-?5Hl0x^!m72jUU4y+vaV^D`Ot6TdAf^}LB zKIF>Ldss}(HyLLVOtfQM;}ahvAJVZ~PYC4mdl^d7{2^1OC;zU1^I(Mq z;&Prg5CM(|DotrPw?WtAb^P+in{g>ih?v31LG+;CsCTB_H4;O=hV9bIuUCsd{ zH=X##b`k?wGJqz#PV+?xmhJPEj801ppExz=B$O4}K@E@b(fq-^7!y_;Rxp%0~}Z(e?q6m#7>6)fEOZPJ~49~tyso0c6wnq8f8-i zmkC)cNAOhyZ3_o zkl{|Jluf@(#S*S;K$iDd=D^LfK3A>b69g=<)Ytw_fX|z5s**3I$2n$q&c?)wO~2-U z;h)$oM@C$QDcJwIwO)uG;-0q9G@NK4%66YQ(|MX8v1z!jaV zAK&3q?Cm-y!U9isei&-IKncNc7TC{Z81Tbn%pp>1Lgg0U`A!z#^C%IouwO2 z+%vb4_V4Sf0I<UALzAwKH-hC;D3Au#GasxURMa9J8i!tn z0l(a((kdxP^+&*VivtLRB$>_QZTT~N0lsl7$9rJZxree3v4h^u?>DDNJxU|rc6z`v zV$Dc%hCmnY%|CPd;PG}sr%Zf4)| z9&njj(4pvB_4mp(=XfT0f@HgdRH}@=xM{i56WvCb3yzjhzyM#h_c%ZIp5SPPM&grX zo7>tR_H`t~`0t74d8@rU3g(CUB>9QZo3!>GGQr^9T_}8s22Uyg{AE1_TV1+k>REp` zNr*^mdk1XJFFe9%aaY*R%w`7>i;=7u<0k{6SHp@e*^;`ETMbp)b$Zc$oNLBSQVWAL z9vbR2V)4Zvz6F6u8ythT_n#rdARUGVJKj1ZXNXe80t*Z|o90r{#=-(*(cAuuPHWw; z5~@X7XF5LqZshv!+j`_-+9-JfS=9TB>p1x9r>C`Tj6mO_7L`%nGi*WuIZ;7X79X|5 zo2(OEFUY*U7`(>I(Gd6YB2Gp6z~I#{&EwJM*o5R+K2tW`%0#OE_1AkNNB75{Iu~F* zV^=AV_t9Jd5^qk2`a6kSWDQ2h#MeDo(1Qb=eZsdQKB;*^A*PF>NSr_1t^e#!hH^Uy zNZT3soQeR?@b9A+t5`zLK1=~Y3>>YjQtjV3q0g_y@SDG>&=W*U>h`eO@?O&$&P7{a z#2>m57~o`SIQs8+7njwxfhHb~^b5H~S-rpO1~m%?BVQJiA6D+%JRZeqp`ZY2Exat% zcF-M^mePoc&c#o~K`*!=vB6Z5m0lYNUB=2k*Rnklk!u8w!x~{?PF#v9Rt^qg|YTwRyFBb^8nawOZz_*R)RDzy|{23Z<7%E-WYgaF$RalMXZ?-IhK^}5I zsqHRIJ@=^09@t)SnnDg3DvnU#j~ZJR0LdmuOQap~act}ZOzh2Xm;rsG0`X1*EOL4z z96-kh{v=0o5F z0O~@6DKp0%j@NsG!59;*eYaMV<{mhyT{6@bW87r4$ZOrY^twYi&;FI@za43V6e zoPW%`6c@jJUX~se9c_QdK^8!MX9`H{@^yT{0Kw?2aP%0TyTo#P+XPbplF}13Pn30! zzo((V@vIz;+9P*LVf#xB0bZ8|#XszmGCRl=Ygt&d#WHve_|Y7XiJszy9su2>Qw3@} zt7Rt@l;>=FqKS=Nf0}EzQ)3@V{*n?~JEB`pENlE_vG(H6_B~WVcSWkw*q&Fq2!Uw7 z$7{EtFUcNWP{2@e>&$|W&ivOS15^(Z@g~2Ae*ZGO`7=j zVOep5UeHMR;?yDmU?^G9&`gEqgP{DDZz(c4D-V6yr9i&C+wRgyde6WHt+n-@K}aNR zSU=r-ebg@m(hYx1ZMgm5WM|{`7T>0m4tz<$Va9|!KA1M79By7BST}N;ut(HZ@~}rj zR=47b4SX++8-%P)G8A=F@&Fl+YnU-FQrEpT`xtem8=z{iBJUt;Vcvzc*%a-)6>q_; zo$AqsC_UDT_bRXzKvlNXcAvIvtP0U;4E z`&p#d#_N|HSQpmt$6K~2^h#7P6p4Ii9R|7d+;>!o9xvTxH!xJ7M1G5pv@*rs;jdB1 zNd5ek_tK-*kc=g5rVa>3z1v6-DOzIvx(BNOw7yuM4CK+#3sIy<|1#3yU9kKDH%&`l z)CnjXx+=vSy#dTrtXQ1fg~qot-k@yVuDO#&5v2<*AooO@Lg%Lz0_S(%Kq!ZBMjjbT zNQ!$rlw`6Bg9RQYxi|c5s_#hXoU-~lqI~#bZ|?D_s=?Lsdu-t|K~7;NhnS;;X^Y}B zi=>->)CoNnIDohUs8+B3a1knUKv`G)s4wU&(LifVmv=8#qs)G9sPi-3aJeh~Nkc(` zm?EGgV1-yWa-k3IksRG&E-!W;d!c72*j?4MQrxujaA1G68*v8MafU!X0hQH4vdWWG zPWQ*#f(CRCl~C6piAQSAtX419@!=neM9zFLh9;pD$OSB;caN(;FdU;E#SURCbbWyf zR0`FS7?^iz-Q}L;dPx-6ASCz!?rW_J#V43*U zqzsSy4xg}#+H8BQ<7$y8CUnDAn(e1moi2}p7&OB~pjEUZV;;2H0EK({7l3U`yZ}%* z%G0SVY!5;7VQkqTp7ze+t?oT*0+kIR`VZ(7iJT|tgub$*@dgWH`mY;H-4>N>?*={p zhNn4Dfhb=?Tn**^N*}HSBOF%>5&#eT*SEfcrqkiukF(ae*1e8L%P5s4Tkk`Gk}b$$ zE%Pdat!8WL1zuq$f8s^$8qiiR7`EH}6}vnVX+!XhxLabjd~#uj^O+X|Ja$PPBtX6! z6edjh409bm&3Qum-)ETSN3TiMd%W)_r#r66LmYOCjE%#cr`-|-^ryz09r+fy$Q*duifT zrp3DHf(m8*xK<4zI$f631!QGw5BtW$0FA(Jzt;_#Y~Ng+?8lmGrrlGkK4uPOW0Y`@{yF8Zt3?Yb9Jp#G3$X&-f$Ju>$6@S8>(Kk$R;- ziRXu^ttp^tb6vUbdCuiDKDs|J!Qpqt%m~Uud&*5tB67|r-!9Ck~Ca34*R9v06 z2Ff(N0sK1qpN(}?xq!08@XgB485Y9~hyrlAd=7WtOBpTi1K!rJt3xVU5JU#>JjVC^{wQ2^#uYXEdP;gUB#F_$1?=!^=Cv9 znlY#3$gS1AcT`AEQbwCNPGS#dP57Ll14+)}^3rClnh^4<=^2A7{h#Pc>Iebp7qZ2J zSRlcR>Nl&#<>T+3MztZ9Xvh(M;Xu?aazo4hZq5H<(D4HQ7Ox2~Xw$vOVl5&0X8wvj zq|%BLPCiP=57OjQ3~8~R7M1-z{DB>CY@AyNu= z0nzr%j+<}@fW#ec8oG)vmw&HGTKDdE-`k6*)p>a#U;M!Cuw+>!SZu2&U!dPJ?n#ukA_tbZlI18_-$R*ktgd_|mR__TeFR3^43(cUI6I%2p6vs9k6alJ%vf+b0MY%1w zPBg$Nj{pw$)xTZDKNK#Y8XF3R4ZHtt{qShm?mOMRmqU2V`+#hYf{SX(+khMXggWW8 z&Bd~XU90;o8MA~bkpZBOGx245;2Hbx)$%_x1H@u#gi#>*V}!kG2IQ6!$`ha*?WORE z+tDAkQpCd`Z>)joX6t{t*MD{C%se`YP?aN{vw$xu{E zYmK|K@FXfXSn~S3&8{GqbMIpxpU<$sAMZR(|DH#AFq2VUO zqRwk)Orvg^J%BYzj(Y9T-8zJhS zMSBmNO>`Yam3tr}yQYHb26#no6U)Z*Hh(I&-~S=aeT6|>hp$RHfaMJgS9QLuPiwt) zSnq!#(~kfuVaKXQ>e*H9H)HTusEzf+94{Zii!6{8PU>Td^+-DJIpj@rxY zowhZp07j_}Z zDvT#}Up9N^TuuiV!0R0KUskO5HA3TxS2&1VNFTbYW57>`8~S-w>azWbBOQPh-&Yh7 z5o!CGqY`;u@PFB^n(@H6_CZvbVqwO0m9F}2aR)v?WH-Ao^Gb_0$JF%sSXMANl}N*P zgFf^eJS|gVKY3udw|`xslfm&{2Zf&?bV{Jn)p+nWk|EnJekK|6zySg9;j)*Bk!{}% zM#5)=#sqF+SELQA`mB1|elVAOl&8i+GGE%It{e=#HWc@ovQw5_ONQ(q7_j?f)>ECA z)oQ*$7@Bz5(^0*-pj6`!S?tMn$M1$6YNWVE>yxp#G{QL}4EVFwt3=E%h5?WwBMv-RDOY18uiC`G1vb8j4)5HaUr(0ysK3AIa0x zAhKM8;o>Q;2oWKBN`Q|(#RYWhCA>X-WqVHXO!|NvCC!`k`gdUst3V*cz6`7n-T0d` zfwMf;k~$doOCgXC>-r{Y@c6R5nr6#2N|-r;6E|UQNMM+ifYnITU5 zHf*s-a_?~7JlyW(R7Yxh13A|W9q5=!@=q;!ge zbk4v?w}6OU2qGmQAYIbkzZ=wZ&hvfOdjC7ib@d2hY<@S0nVd)0U#XHEDxK+oXck zngj17kxzu;#&N@-hr_xoFc)8+tX>W8aA?plwZe__15{#t=A;aAKy_0;suH7f{-YBQ z4i0wa;j^r;lc^o)8#{00b;ytpo-c5=<_YadGe}Pi*@PZ@Z5h!-*7zJ1=yJUcfxm})~2$hnz)>EG~IPL2b%1K&&9 z!fjcTGMJfZaDNyVL)^nPGuZ`EZvJM%e;7_?lnc~j8}LximAz`SB4yrBwXC5$g5O^O z-PtUy5Ti1s%j@Y(3j*#sTC|6%E)1r3Ytwteep@AASlFyWHBlaxoj1DaNsRP*z(K=2 zwUW8377!+eP`0hquKkQ&y;va05SZXc0VEkKtWN7T?Dok*bnjWc_fhNIZR)A}GEpxU zS`d4WitYLcGo;QH0~oxe`Z#VlwQ@=4bo)!;4R84{Ze8I1fa1^$d>7n?;}kdN9b>0S z?G&Be1q+R^8;>6|o^H=K+!)$rf)pdxo1AJ=4<@d)))-R;*<|dfngW5imXMIZ#LnK{ z5rzNHi&s{rl7YTU|LVJ6n2I5vPT>yK@~kuN|0hz)BqR-oVh#CD9AKG`%ne!6)n;?l zm2Iiztj0!}xNIKPpZWhjAa3BCLH$I$PfHed>Yyc3BDRq)(Mu|*HwW|)Wk<5Ze%K1) zz+wD@U!UK+QV(Kt6aQXi7(Uc3U4kr+ql^BEzFnm>v||&Zarqxv;Jg=T4h7G1%5d1~ z09Q^4ny{S-sd>OH?Yl8cnLe7xZdF%NIv9Q&Zl2(qzEJxxS*Ue^OZi!vG9_}UuN1-f zI@N^XYH|l@ySfoCdMTzUsX2Z9htKka;J7h3do}8Rj-ttRQjj7J8vKNuf+ShD2U4y| zyrbxL1^UlQRPg|8+(FEbxAEwe2)hx2>vuJpT}K)-Vf*z9V`uJa0&;#GdvKo^80{_fQ9B_SLYsj zEF-2lg;RxwTLa^ww5r>JG{wcc8IeH#UL_6LKkvmd6+X-OLoSkA;`LB$ygoJRa?aqH%pQ>6ZG+ZX!h+&G1Wg^SHFpr675As;-n7IRmW8kK`hFJ3y> zH(?Aviwr7pa|5}Ff@H?Ko{U0wAIy0r_|}8?ykPrdm<%Q2`~QuOz$?^GxO`p

cTD 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

2+U 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 #c4xL z)pVq_r!R)$Bj|`|Qi~5u>UY(~99MOBeCuJ(#=EV9m$_Tut>YV`hTPhZnp=KtP6TZJ z*)ZzphT}7k$cbMv8{{v7>o$2nJ9s~^6a9pb^m;KRP9ElnnJKYHT+{5Ln%yFeN_)O+ zgfjt{{bGe&?K=*#=nl5q&4%(PUWREJ|8{28&ptx_Oi8TUIf&MsnJ19(cC8l!d%lKIw&kt~YWhb2kj9Rdhyqo&mVU zOe6Xl1>ao%QxzZ_Cv#9g(8pqP8BGBpH1SVW4XX~ZnU~B`Ob;vlEutN0itSN<4p^Ah z_<5>MwxbA>lftrR>&U!6*Kjk*(+Zb#g!p&xo>w*AMhwdZh6=2sx#b104dV66L*x3; zM{8fBRQxZKFDv0QEd`vCCtfiRZ#tiZJ4=m>p(n&jX!uPd23MR!CCS;Oir;YOkWex{ zVJfZlhgM>mKH*U#AdLm|UdOQ|Lf@4VoY0PF#GKt4(++7g>cAUq*JI>N0#zq1j zvTNVffnq1GvdDuEL6E~?I}`>=rNd4h6jkGn+SHl8aBxyxgz&=xeh7d7h!5}KXK94dU$Sez)!!ZYLr`5< zv6hO!@<}U6eFwseX@Wv$`ZnxX(IqGqljOL6vRRHhc@#Vm7mWfBHqlzLS_*?gV8n#o zVE(WG#`*i4Z5|-~X&`P70k+V_rrVdbiVCYu!$&zYfbrs%XOjBf+fgp>#U0FLWzBsW z7cXACN8)g6McxRyGyB9Igw+pL&`iX6#LSu|^wvI*1W!oUf0?mGie`Uc==LF7^II~< zOlTvkRjhgQg!tOb;Dq#WaYA(<$Qkhpaso{Kepn35$T@W=ip0Z4B3RhY0?DdE^Pe#6M*<=}xhd*z0jbtiUTK&`EtH^eJu2$~I!&4)|Z+ zus=k*nmDLd_kiRKS4W!Ve~W1bvPy%!54ODo7xGD(2nF=bkUPPo#>kD-kad*ybKSU? z%II7w1Gp$(e-$+P{2#9H_qqDgBWyQ>6%`RGz*xnGj<+GSL=`TMnh3BkR;G2vA1QJ& zda@Gm!jbkPDimNf)BFbaT}_PVcNwYf!kg*4PDX))dlwF?qHNp@*}h<`<(kHGRHqLb zS9vz^*(-hxTqpj`($vb~)x-v8R#2U$1B71uM|Uu;j_Z#y%7May-!RgIfG|^)(T3!4 zK#9$G7vnBF!-m8KXzkiq2LgezzkZ07@QrrSo)G9m(wZDv@H60Oyin|q<>j=s$*Z~q zZ5(mEn^Dc@Fq9`NV9P0TDMU|gYTY>aQYftiU4u zCIZN)!28q+e^t^$K$BqNpcR=VOaehs7GKjS@Nx78Jgg4Z*Bw<+rAZOSO+?lA^iQi> zq=TLWW7GRd$;u=9s{`lCro67pz%26F9`_h~bQJfa2=p5A39-tBcd=Np{hpWDLNh4I zg>G2+AL**^^$eZKKlf9Mod8v#%V6=svRq^E4KO zPQ}fT48%dh6&->YE%AX(T#+n0HM5gUIN?i~+UX1ZSQOSsx@rRQ`RYtqz<5os#$^YGV|?N~zJ)yoLqQxr^B3l%wu>QLeg`kc~XfbVjA z{d_}!qtL@~v-C|BHIzj({Wa-1smabmHCPa9iiMZ#!OL&aMk6EAxf}%{iJqA#Yztt~ zS8KZG#i{lc9zBU>Z-qJhQ>xK6;Ny1oFOL9flD<> m=N|rh_Z;Hy3pC5P8@Gyo9sN8GylrU7{=Kf>m+U_N-~R(gI~6DZ literal 0 HcmV?d00001 diff --git a/docs/developer-docs/6.x/headless-cms/assets/docs-explorer-product-fields.png b/docs/developer-docs/6.x/headless-cms/assets/docs-explorer-product-fields.png new file mode 100644 index 0000000000000000000000000000000000000000..06a82514a8056907685adfb5e943fcdf3652f399 GIT binary patch literal 254397 zcmb5WcUV)|*9MB?hz&#qR6sx}B2A<#brfl#mjnYsL^`3UG^w#r6e&_d2?Ej~2_1rf z5CsJ3HH01!kP@0e2m}K6;QZ$I%{bq^&;9tr$LDa)K6|gd)_ULd?sa%&sISRn5r|075)cyTkdLeBbS-kl8 z>bqkilegdfcIWaRN6uy(`we;Qtk!L|vu7{G#Qh-<6U-3faqedFw1?!v6E+r=9C)H0g*GtKZ8{{PP9*mFD;$WhVyZB=A318s59QT4Vdr@y5JtvHFVH zip2{4%mUY3DQnWvUzZl{I9@|({rJ_e4L+yt$>XWwjC_s#W*hbN7ZYVTb6Qnho00tZ zR8gW5-7PnW`E|MZv23?&=|_g{6rOwiH2ay0wQlm7#>faQ z2mLz4RfERH?0wPaT_#u>?dXULq;75M%;M&`7r#zMiTM<`+myJUIve-tq`kn4@+v20 zE-Rg4r|7KIIi=5N_ji`|1W{Fe#^{mUh-VJVx R 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
k+I`Z z?`P||58a4*S@Iz)Q^P-0%8&0f&&3%D1lP$TbB1KKd&Ygg{v3Vv_-WG7kOcVH-JJgV ztShTBhE<7~&5_y}@}qGG|JDTeE*9;n*`|SJ&nsA{t5g3%tW1FxT&NqCVHlMuaXNaTfWmq^G zd_>sl2lzkOB3dLh@xZoK^{4AhyM&ou_!y4SDX8e_`~+L}3le9y_0*W_V$i^zEvKl% z?QDabVk`J?CzJQ^i+s3})91+3Zt~!sgmRjtdH<}(*t(rHykMukERHITy*I<|t*Ob3 z{r30fDxNP)>CDRBNvG;hzf3<{)(3VlRo=IfgbZt!N|{cOC{26 zmVT`UfmKQpY0t|I4~;Ai6jH670RfrKS?>hR_G@dcyvTlE&clj$=<_R_YG6-asFtDXpK zbt^yg$%R96=siUYf1~!7V|N(N6vOWU2mg#``1D<3@nisP`FDFY#3a>|xG;Xq60(G+ zL2?F-D~N_Cxs^YDcw(F`YIFFiz#t`OrYQfK|2xdj%SbVgk>knK135oUk50D@Wh$kl z3L95kGs`IFN(Vuj>jdPM^{}YE(s**{T<*2)t)mSSN%AYWHF z7L^2Loa+f2a@@L+q0siD-G<-j>%!eT;3!a0)3d%*MQ}%DzOWYpIz<0EDZ;3a;9S z8Aa&G@amw`tP#|2KH>L$nsmoxphhDC`Us5=eF<>R!jBQ1o1y;LZg%e`m(yRuF;<-e zWBblmH9YZX%T*TJz;i4silZZXJ&TPvw%EwE8yx6L1sz*;ew5&5Rf}1634gaXa45R( z{!D$TcB7rf>O&%UCW4%(!AO;&N zS+}CAGm@l8HJn|G#MQ8FE@$nIqsxag4x42Temx9>jp_GkozywHLirGeI1Gc2l?M7c zzG0EH&-V#b&#Ihgb#?FmT4qTV3%4GX)@Su}GhJUh>(;$VQHmqPCR|_i@CUUOg;T(s z0JCp4(a5$mbT{{@dSQ$VX2}FqfX~?gnQw`S=c#xq3~g7M^VmyPS3zg*HYPa9|Ei4J zqiY>x?%DRL6Rj6``rFZhT};cf)6MwOy7&B%9OMU!Nx{+eZ2Hm0ea*9|I_mB;)19sw z57H?_gxyZJ9%~Fd_&BYuGOK@3zF|b{doPc$S&2ZIxbdo+jFl<b>LwJCwp7{Ar}6iHPb6e+ z3WEgfnz%T+fnlaLI{8QT8AW8{RrR_*W5}fmMXB;l__2uD6@n_Vo2U1!A!n<;CP@cqb<)hjF|K_U@(@b z}Cj8$C%v?rNB;*g~T?uf=6qGco*qQla*O)Ey zx-{Bwu~Y-x-FA`oHezgt!)%C16IL8hwaXj~?xjy_KO^tnWL)-HUK_qX=@&To9X#R_ zhGS9QtQ?-&kEgP$aa7-WBqAo<*va3d@!vwn6EF|j0|^Z#X4^yV+FKzmJN;*rSzz_M z^N%xX2#4=J6%QLcYCs>PfQOob*xbc0wNRM~(OAYO&ZD_@D<6;EUA7XsWYq|>?BbP` z=Rw^*TI)!ib~mRY@(EQ|DO6;`i0B>9%1<__7^FS^1?UB`E<*~pJ+}?~I^6bhf!c~M zD-7V0N|unpLj%7@lob$BlDk$8GaNHlYBpX!hBPZ1IqHO@$e{3kd^7tdN4{z82>11N z@kfijibpCQUst4-Wi3w?wnFh+F75HrY5TCPw10|+d(o1-=jIOAePct0*negVvV=TH zlPiGhwLuwMWOX$wNuRl%M0dW4CeDMy|Q+#=h#SU@{ZU=odxl6}ZmEtD%*;&Zf zK*4UN@)gobmF~Lo{CWwxpziB7@!liKC#lR5&cUgK$M5!QM(@VX?2q)rM&CdazTLrq z1bFgD8m)qZ-L_xQMiri-CaprC{7x3LrTLA!7ktlUop#XeNoa-kzZ)tS(#2KW&Z{xY^qR_OzHhRn`L>wB+#f zrXRAPRR6pAjLUYzf`V$VCBL7f_>_3^SmKB?zlzg6X91ZLGjST3?@f=6zw5z9xcO)yHzYzyc#OH-M zx?%{&r!d3&`9>8wx1!He3c1l{am4&^f}j0X_IbGHbNo#X6~qjwTSqG*ZxK`t9iix} zGKFz!H%pZfW`S3#Pmem%E%v;idjuf({xh?(Dj>%@!*BqE>FP2HU>;t=oO{Zze+dKr znT|cgM`fBxBe(D55kcY_3ye9Li=Q1?`e01Knr6dRwlmK-Ve{!!)F?e_rprt1 z+~BAN;j53k(o9E@9!5Zq`3ff=Yef$X7!c+jT=)z&l867|M)-Y>XG0UQ@OuqUXk*E0k)z#*zQ>w8IMtLso!J# zjZD$ORV!buXEfy>t`2Taa$|-VE*TD9cN5A?f6uECja3l1S$ss`QnbE2*_omhTJrrt zEg~(@*Ai|huauMm3@e*c6@IFfHyxxmhYF&+BjsB+q!lSSPf+jg0vtc{+<|+0h84-u z$O8bmSyE8QpD_8e(1)AU(Fv#f$dpHT&O05pMBF?0^&iJ$c~#Clmhs)#V*Y(hcUu3*u7~GqQIGVMbY=> zGbtlo1a^k<^58662u2!8{a z1JuXnpAPb86nyy@39BHbhS;5mU;S2iW&dsEj#l96vx~Y2)~|Cn)>lW3CaIz5HT%x$ zpPn`2qNj9^{h4Pk9U%G9I!{UR;NcpdfxSfG+l0fR#a{7ZG_S87F%5x5WAO={rIiC4mPyT^CTUp;XEFF2zVe6v?e2~@MuA#`&z4YL}vX!aiDv$ zGoTE)sQ#b~gMTqH@gg4%HU$6egY=4qh6W6!|2mALBE!vwQN1JS0S|VV4^XD?OMm3Q z|7lIne>`V}%9OV1zI!os1_sZ7q)QU6s>l4frRzc;g0rT|JaPi;zcbtiOdn|YZ)7}h zlQWt~_bDME_a2u*=u`g3|7shsOb1yX$QibW#rC7c5)W1u&|*q|(qjL?47U)xm)j1q z_hDd9ulnT9m*D*?e!c&xe|`TKFJ9OjZIQu514q}K=2BBUl{0NJkzx(DqT(OL>p!<5 zAZ`C3zgp2>16{(3r;>C7r~W^G(tzfhvLnDbG85cK6+#$9xDC+JE4DoUcV*Szn>d`^5QRM zx8KvSu;Bi?fB*eQaiEq@OBD$g>pFgw$=V8{@YfXXcT1uGTAh~ORd*p;{E=|k;rRdZ z`^UR=7ZVsodBi&oZr9bw1w?d`00T0#t?Rgtl4qPDR3}vG$`%dr2 zt=YcwWOUXX70FxS%aia=JG9@4J4BddVtQ&{Rc+-#qPyA7f@-(YU-|y>Y;&9Ns!aPq z>A0&ro*->Ocm3R)s7r{w)t*CtwU$XB$yc`{FX#ce3bL}7p)!=JLsk%WCy>8>({eul zoy>N11MrIDh+bR#nl^G8awO--t$BhIQ zIPyS7bKVsDwx#6{tFuzq{$emdT5?tD$?`Xn zZIJ8JXKP^xTz{)05teHzBcj0S8z-o4qLQ{+cN2*+Ml9I$6<+c6iEn@9xv#zMFj@gX z1{N^@SpO=``bnn~D%8?gvSw!uZxjk11EZQ=Z6vB^?;%6le6yOPqAQkK7-2YD)YgiJ z#X=H)bA+H*Un)KYW>XaoGn(nh94!loY}j?1xfy*I5%XG8QSs>CkIP?|V?GRLhsQ~| zsp`XY3pH)?H}d+2Y&54etXrTk&kTxmRQoE&ahbaaR?6mX0^2$0xMvoDI{%2qM#+-{ zwStEwLOaArFE$1qnxY#7l$^w79dGUJ%L88*t(qy=NTvsJ+sj}a2{WRqmG69 z^W{eu0kOg>-FmaMVrn*)EA}T~69p#quZ`TLSIO#I0Qtn-xswIyX-vFfuX$gE7Y-8h zV|wBMmd;ypLJcMEl6rWAkSJPyHC|HB585U#odMdZZ3ku@*TuXgHn*VYQ~=>WvD*5i z!T)=f^;a>11CHtqg)iewnRD~-ke=~6p=h==BjQNb=_ip)=cMR#?90U^?PV{N8@&Qt zyfs^3fYp+MwJbYweKuMNH}!QH-r0AQy(8M9+hJMHaCm?0Ve;Sy`$E8ocJ~aEzpAiv`jknR@7%Bt-4 z4Ri+#XOGy-DYDD<^(X;UyP)SP82RZ<${{QV!f_cQqTh$`)ZS+^CxB6u`W=s z5I>FVcJpe*w}}N<^qJ>$j}5^GU#%aCJ!!91i&3u@GY^BN;0$W0RdT7>*cJyB?R+Mg zVwAmTHd5-R=XX6qr1qu)W{1d6TYPPh@N&1po##Y>G_Fgq$7V7k(h2Vj56=>g-3cKq zk$Nw-u6x^lKH{#kec|c}Ve78BwbgHTmDAGEXuX$UjZyHM5vda+FFN&I_nCmCM+U;O zqyZRfA*=3$h@mjRMq^)eR`w%P^d&fUS2aY~m`QE`thvjZ(tCY%nU~NPl(Tb&UTGOZ zyzYB%3hcxGez<#JT} zV|kGn6Ss_Nk6%oA!`ix6hWn@xEK_FOSj*>3G~7VnJ*OlVk5=KCWt7MQx!hkW*1xT^ z!Ms^Jc2VA5S|wDJ$Tq7Fed#Z=u7$1KW9Mz( zUm2r+T^%b0#q2F_^C*`bf;~50PcWrUJILD{5+V}NGblv#lRjQ&EaoEKhw`F^I5JD1 z0K45z4CCuBQJvyq6cW$5a2kO~#&w|6EYz^V*1k=T6Fj`MXeJ=&wjgvZuv^SJz|Y$G zyA-cl!9DK?#z-jwcfM#-^Y4g9Tg0R(gf70Wg8!qoFHOxor(uQVkD_1#x z^ZEW_{}(P8Q}4HkB#~BSM8=PqJXyCJb!5fd^zPSplr15h5s78`C3-`)iKd z@IOoAtO(ki!!TNnV6h4*jed{reI-ZDh(~RUX6&Y&{FJkmET!OUiE?r~5i{Np4z)K7 zft@oO<(o%Zu}jDyvoKK%V*c@^F7IQ^JWz=KnAg4UCG`Qxmo#Qzt9Jdla*pvd^NE<{ z+7heo!&MX(&;iSc{ITX^spJQ~1c3|ovtms#Dq3}bgQDWiXE}c!iOl*Pnoams@Tn+Y z0{LzC*Xoc&fD+rR9Cc;ll@fb+dZ;NY(*q z9AQ7y_VW~i1HZTM??_6G6QS4El)c-aFkZ<*LX5)&ELK$QO#aM7-`<)VQ?;tG^9!lRnxoUvOa2(|?r;Qg*^)%eE z{w9KqAgagBi9!qzAedVkdwsKg?J~@ARchU!f3S7<^wk^N50lkuBSaH45Fw$vpO|iH zU|`S>0`@qUB^;jY+slST4VAanh)-VJ>gGb1E{UTbJ3wq91flH%Tn zZNc8n!{pM2fcd=F4A>-HL6nvi1RZ&c$FXI{Nm~Cdpbm?0;#TNY^-5htUS<}M1}?I? z#SG~s%I-(Sm$p@%V4aanilyp?4a*H-i_1Ov00bcIm$_wthzIu;os0D71155C42)I6Nm)n>NzwF{l;a%6j>fa$fI3zcw0R-M#yc~$Q_lHJyH?wQtI ztb+SN2LJ#bdh%Z@l5Fe|E{84)o5E1>M;6nL+O+;6x&xmMaHZM}>5&1uGJ^4w2EkaLvLEWI?)FXiUe&v7)3oHx$9-D!Yf+jU52 zc?Ie{Ubk#)(5D&q=9~10Tm=>&klr4&-`INDtp?0083k;-%FdGAlvRlA=;1q1Lly^q z6LhvRpq^ro255Eq0QLCweV{Lx99T~-QP?;xUE~?4g<|vqG$2-)Tt`1+FA}(ZI`4J8 zf$_{_0{oERp}X+Vii7$GZoj#=B)LpZCkZ#Ki&@<-AjGR7)}?lDxPSX{F&AxD=x~aQ z8}lxwYqG!yT|b#~9ilikwx1K*AvV*HW;?zOD3 z#9ZBeZ#^QTa_n1MFjEU58+#Buxb6pRy%QYenOO}4h1lrUlmOUrNh~eGYL_CHS5i466av@7F+4!dMb_M z<;GcS!HxQ^n>JxTS5lklq2klxD5-ZH$g{UR+n~`7CKxUY!uspL{upS@j+kwhii)8M z;Kcq0Mn#!>A3%Rk9zHRzrB%2o|0rFDYUL9R6s;|mNmA}gUl;||L-)^$x$X~Za-I^_ zf!|+Pd|Md8ym4`M@2q>|R?t6`i|AQcF6C*b*oaX;=|sPup%gsvhO1sXM!ecJVgTl> zH}jC`y~lM^m1}-IWi|t6V~F%9)B9quE1#K)?yJ3pg=HwHmtVaxaiRW^>3*bfR zI&q}OY6w`FUL<(sn(&gG6T+d4F#bDM-BTyKo-RdmpW^V zG)w)L1UqH$AH>G>Gi+UECM7qV2nG5w&RxRIuIcRBhBewL>?2~2>{EY@$>}w*rcznh16f58GfjF| zl?RuG4nXecf;ayOkPWR@tQ4#wTnI<%s&)6cd} z1-nz28d16~;D&CayK5cNVFrrr{RyL3@@f^^n3>$&j6G9{(AA5~lkzW?DUzWSrLld9Ih>;UPY#6=yx@R8v^hHB^-fN|g zo+^~r&n*684fQy22MW{QjDGOEv9WL~Wqd=RCzt8#LIpr56KHod%THp0+R&CpBSIio zaLfLVgPLr;+3lZelCq%F-tgQQ{zz5Ww{wCO3Fzf=$$XunskNaoku<4y8cmllm67Sh zXuAKkl)}KF+ZEQRCx0cuTrSQaTA# zKtIs zdaxlVTG845W^ldHH?eu&s~-*BBVY!$??WOdYjZSL_nz6=ESIMpec{_+H@Db1yq~Lq zMDg{1Fz89=y?2Gfzr%4wxba85~7=@JwoQ`%trma_6GO`+cJ?5 zw6i9w%Zc#UVh3?~TJBoAH!)4_s(Q7QWsIu+UMSJ9%mIGZ)HSPeK3wjl?&Aq=%zT+k zX#c{z0sE#R&&?;dtVv8`49RPTT}K>_qZSh8CCY zzy{fzn2Why-RC>mG@OvA+%2OKxuPk?UV4M+9zQ!mzR;?sz8NINHxYJ0a$59z3bgE} zi!$z0Vl7{x`_$LKNI}1ElDB-VQ1dimYs#;SV3~K7fC{_%$_(Lx>9*hPjdUN?&bRAE zE}e8*`A3vx1AT5t%`x@Hh>nN3AI+plH!AO7ykXB3ccrL#u1V4&5~~_0u{>K218oAG z6&a`u;6&#rng6#}L|(czuh++tyJeb05qq_4li$|)=LgcSew5mFma`y4#;Vm6Z_#Ft zT31jiPqX9@1dC?9oQ+$CqY0lNv+RXhvBEo|XVwvpj(zX$vZD5g5f+hilgxzM zvN-&J!I)tj6){1Wo?S7JhnBc(4Kr)?%N+^G9VI=0q<9wM#7{xI836L};fgp>c3S@? zPs8W8R#yyMO0h3GDjEX% zOvi7=Egz$^G7@w0Y=5ui_WDY3!7bG?Y;i54;BA92&E4YXISPZXs`JfP*;_8(?CyKy zj3)(!bH7M{cPVHWd?{4=4#ay7rV%)9IJ7HTQjVf>uTJL#j zR}V2lm9HypUBS0wqRr7ZVNbJuvU+|FH^Dru|MDKPv~}-7H0)>%FOeQ3*t^E%s@f!C zOsONfx@ITG)%cC5v(4@WiBgjs?)Xx-*Trm4j_*bpMR7b3T#`1ABTMrPpRhzRA%^+$ zsa$?ZBYdF$kz2d;NwHE!kTXU~PcF^2_5hiDF3&cWwuy8Dq|fYT3OUc8(>ID!5EBg= zDX-6cY(d&v?JTThyIV zYFYyFB^rastd#AS})E?8la-^g_B9#7`*SD#!%^8pD?`|=)(THreRmj zwiDizatlH_r4xMOBu%o|?MYo|PZtz>T8lmKvFK?RZk;#Vj=i&MX60ILBh&XR;pV#> z%n|A}mvyT%mn1#<8Q#uUCEFEhIvlmZqrW|N-0)U^-%?7&cn8Af@5*5vk$JB?f%}*XQxQO*EW^It8WC+Yh4G>|e{iUBpt@R$W@|ibt?)s~(!~0{n zScbn>wh$qntBrC0JKA%wjs-FPTARPS?;7_O$3fbR)T;59#1^vSdSwGZUwI z2-A!h8Qcl7nmpg`LTOm1eJNIoJW|J2cZ?(Us^_3Iq*EVgb(zU?m}HCh2c0=0wGTAz zvvUYyo~o0|&-hJzMT(T?W{;%m*c*=SZ(k;&gbWa+kQN@#IoWbQ6>(p}u+#ZxJ=V&b z8)`>#U&dHm@lgmUGyKHL>Da4nX2FpE9v{#bNQc8a!9A0-K0Wg4PJv2IYU#Y-d6T$vaxXOylBuqo7sTA+ zVZPq$))**aVNdRFrsuTeh@B_vBtNOfT3%`HRE^ETO%W0rz@3)ej zYCU?f`U{H79ndR$au&7Fl3{7O$Tkz5zKc{ar@l!{dKYeXAhB86;w8u-lF1F!$^L<# zf6!V;)UKmSRz!nkO0LSKo1<1)1TlcaO%033-`qs%Jsfe_=S1Zu$w~)ZHiH7!KF4(}1Z-{_1Pjn7H@Vq{`x{eTO#L z;F}+x+*`;iY`^R<@@NURYk_W9-`!%qqESoQ!b^)>&92+iG*}g;0i*KP)({4NSSAe$hQkGDZ6z1&`Pu@hj|Flqr ziiX4@LMnghjb!L!;NXCT{x#3L3pOqMyl2GHmxb-lK$|3=B@43I9_TjwK5w}G<^3ei zX}IkEbg2Pic>OhI7byS)xSmJ?rU z8_z8gq_UV_YD%6Iny{W99ZH`pj3jM0{t~4tR7Dcm(*bch?DW^nIy-HxzG*&19`VGV4jp^Y0_-VIm!2)8@q@2 zV?OWElJ8V}nIm@UB2Wb6MGLL9bb=Wr;NEU2BhS! zpij5jus@&I4$3(vTe8n#1fHYBan4L^8`Jz4^VP-T=@P8!6NfQQu4bnb$#GW_;LJME z{t_KtM0Ft-;}r*)W@j{LlD1Yde8X)NfGg3yl_FP>o!@QuS}a=sXzfBt9W`3Y)e`=3 z{Zu@>*mrQwzJ`u7LGXP7M=vqrYh~dM&*+>?*!^1~ErOT=_xzGpUW_?4n`?f1I>|&0 z0BfAZt!P;8$lir`xD1=FHl*^6s&4LqT8plW(aZ|-fa$6seup&7FN?@4dM2%E(+==bOzS?Gm&=_`<5T4LFRl2c#c=S~K9Xi^TccXx= zczp-%TnP?h)4k4OYe*)2B>g*Uh(UFT@&y6k+b4}LVX(##w9S__9y2c9z@tGDEArGMMjo^vWU{^m*k&)0y5~Dff3JIlq(H6Kbs-~Z z3DC&G#TYnlkX+|v?e#u~L1Ux0-g9=q@YGL_1Yjz5U7d`VXlWo;{#EGMUK0~5!m0j# z)>=Xz_KlzHnhpvL#iYqad%t`2E_OD4@VJV=&31zRqQCZt2@>+ca8@tsdGzv2!5095 zT%c|I24+OW^aS(?sl}-w%nH#C#8EIwBAHCgRV8@wFx*9<+PYUJH%#Omzd&%R8&)j7 z1-p*|Qbb7VV2A3+f?smf-I~>u$yO02Hof6ae5>gg~53fXwS0OLYaWh_V zZF1eK$qeh5G5R*ZaIVK|x>y$ot5 zy^P#)s$8J=R>uro9-khTgALHUd1?0zOqb}5N^HB1t~wB}0v2rCVy|e;n}8j71L94# z$z?;1wCOj>%HhY{ip?5syTi6?g(4*j60L8X2j@ASi6<2E`6E#!McRJ)MqXK6aNvh4 zW#8$E+pNX&>ql#{!1#&Q5slodpn|BON=!4CoA(4{LE96HwxX$_0*1M^i6omZOl}p-j-J>H0y)rgPGA{s(#(epjmK*{ER8WNjo{aP-0_KA@ils zZdJGi2=V#E=re38&}X}g+5fY0oH%^EcoxfVE0@9EWxV>sD@L|Y53ey=h`?`xMs}|z z&^rma8PX#Oj(|67$?+Z68d8P?=)?P1qpdEp)~Ze@imd7%Iomd@sr^;g67sH0tGw}) z<)b)m*oWCsDu^iGfubC?VNCF$atquovOqZMd~llg^sCcUco3dB$bJsUc@Z9SJeq zOj6OJf4W^A%9am0&yAFAcy06g<_%E^PgLH2NPMQeLu`qMZ~290UIXn%zud{4e-Y8l z)6Trh`G&4ME@u0MuQWH?q!En0bR1{{QZ^VO!@S5gSqbCM^SaBh{_x>x(I_K-QQN{FH0%>lI7ou2B?q9q`ux8D-@GU-li;b+-Oc& zfL@VDZ~YqauEqvY^J_z`VwcPr@~>BFr5HR^`42IoiYL(AD^Q*M1FK{PBGp@O{-NbR z5MO3i0R`~zpP&0BFx0=sMEW}l{tMO|2Fj`#%|Fz+coi#%Pgcs`39fZ9A2pfMwdbuat6}Z@1pn|+=YF_LN zHExD?P6=m-k-u zjs3urX-|)Yyu|`h`Cr=M{#UJgZ)^+1Y5H3bwYl~@O~9*5kzd!%hRM36-q>kXcRzq* zY&{cNce1oz#Nx3*u_Z8vx`wi(S&|s!)vzINj~|#`@&#J+!x+Nmjus4kx+{mGA_|)t zKRC^dL_HszmIUZ8pEd%pc_oA*C#-d9w0U+$hCJ)j6&>Aw(ZG)Rzgv1(j@|xRTLb#c zKbHt$3;aBuW0P^%xlTdK5;9|+$j&*d1rrBNwZZC^i8d>Zk{_fghdTb_$Ph`Z#v6+9 z@XRx|jz@o<{g+K2zAW44$AL~L7|c5u8)PrUH$PY6-D~2ee>3E+qrcmTAlaacXbiw! z9iXOF1P!T$qm{mCl$m}Xr-!~WxCSgf!yefcK(xM`-X@6VRGyljJj1fhZ5Zp2Vy-F8 zlVT6c9i_)8$kpY9%@b2=B-7lrJFd>&?QZ?-|ZtyjWNx1tGru(p>Hq1Nb> z0~KxRG>8RY)B{K!MLgG6nJbE{+7Q14hiwI$Z|$u-80^Ur9AWD3Kc}u74vW=auTfph zcW(kBGRA%sm80Gl{yGz2zI4d4uyXw)>St#HdfiL=vs8l7H0FVG+I1IS@#bDx@&=cNm&L{xydTBKWDLqnD;zQbPeZ0mACp!*vY-j<^2?G6;F$whmNLR&Bd4Hf*hNWNFO zb0K_ytSIkeOv1@{j;F+RKMIHcnqgM1mC)8#YdlSCzJ2vD@O1DzLQ86B7t+hv$@28a|}Elf~N_l$fMn67aMpr zhtd{wzYcYwrEMG>EdQI*92DE!T@%5=sMjvfEzD!*rp z&4QlwTO;ouKLJ96f}wPuIWUK8+koOt5cS*%4dZcULeKFBpG(9P^ICpX*Qh*R(#d9tB;$BA zUt@A(8z~`aVRQbH!u@)s&Lo)_*cg2?W@%}^fwuF3IFjNEZ*1PSBjJ6i|4aWX{$MJ0 z(UdN8@GZBv@Y39+pQ2V*Dm>qc7Fa=`>DYy@qCzTfLr|spT%t*DY0~u&{m04=t7jF~ z6^Xo-ir(@+0>r@sbM|dA<4-1n`7xDh26xVX)CYq&ej|h5{;!z-++r{Q+3Jt2w4S-$ z3R9I?nYp~4q;}O78G;vJgxxj+5*DAs7pNC@1AGP#^|w)d->pfl{c^GTV^YQ3q&|D( zI-39(n1VVZt9boB`ykB|z)g+Vko9d?pHUt30@Ra|<%#72I6M>~D->1VYTCy$u?^-V>w0H^YySELD8^BReOxwQ z#$PYP9Go#9B^#L4#0$%KwfkebG(XeaO04dMXG4GpPND5a2|>|N0j8dOOQ2w-6`EJC zKwbT$w%XFX<04MhWJ~8hxZzRBdS|#4=Uy=7=DQp2DH{9=)OavovkNHG(>8~%Z=UcF z)BCu^*u|8cDWZGHmKV&|_{ZpnhChUgZ_oTczP>sj%5Cc#EJP5L5|mH@=?-a7q$LDq zU`P>$A(ieBB@QJyARPh%Gjz9tbhosWG)Ommd(OG%y+@Dt`&*ouXFqGNz1A<*Zg9T= z(BIhdeZ@9liBOAjhTn7odWjfUc*|pq23l zW|(y`{eVQgfdy!3yEJ7aScI#Dn)NG?gr#U99VV7#3T5=sCo)!)_+AhT%L}~to6U$O zRXI~zhI+G4WogUTUR)*Bc!W{1-J-wW3MrVsVo89JpI8=#aDj5bl5#z8RnTWvv8GAT zHwpr}!UV4166ZIfWd}r9 zM8`Hh8j$;<52Bq%s69v70HzC;>a=M9NvP-*17G|0hep}A0nTg0fu0gcG~IUq9G5C? zsW^#klhB1dd!p9xGlaILHj5F>1M>wp#M3l|k+56{|2s7IUPc=jnkdqcSss3xD^2-I z0X6izn`O0g4is29G#2e~Qp%N3;~u0kknOoLi*7`)0e3$9T`x0Agj6ZVE**U#tYCpz z_R)kY7ypKbYfkUG&`>w7%a9b7Y~Ie!&SlPj72b_M{;~owHd@id7rlsULB^dWnC3+V z>J%<-b|c!yf5h-*r_jgq`40`b4wh7<=TPr?Jx0|k?y@Oqi?uLP;z6Fhd}D;1yoCWV zjwjoxibXE*M7?S~jJekWCPQHD71Rr<`&WFf)hCxZt^-1>`EJ5X#i|w@H)!v}!2mU- z!>iHf17vi&wmgOjbSUmL;H7~d?QXOS`tt&nI?|$5J@hg#Fh;C)Zw``ny}zR_*;-N7 z2EaMRJ+3xo)vO=6tN#4L%~nQ(%OUYxioiy`;F5bt=kCvn8Cg)w^(6@x1Vh?mK8Rz_ z*RPob3cpjR{9_dcQWpRqmg!V~{7r;JF|$31Iw#lF`3+B$0yM>k=6hnBYC50CqZ}aJ zAHAsxj_Ug>G96mx=nhJjq&8;CjW0u`Uc$Hcs-R;Qik?kgz%o6kRI*#jT7L%nj<}*F z0Q|Tqg@3C0E2a1*-OKGR-_gQf=6}nBDs>vNyVUZ&CzNJ1+(^bsTQYfU)u*j?#q@BP z0r$rysKv+yqSX50I+Mr9(AoWat9z{71~Xhv*v5p&j|WMTtS;?3z&))ZLCr%394K zoj>gpfnQkdM-$*%6@Svl4DP|j#oOq>Cm6+HiJNnYAd(dIGM>%FmvTNUwlBGli5D=t znXrdFJi|@3M}o-b75Il@*Jb9_}d;}|jz*7FG)t+BltNnNfb%n)wIdN02Bpel70 zi~-)7ltc_<7Hv?l9?QWaAUBjSvRLA)tkn;{dv1Q?G<`+>rC+}T$#*qZ?ZzE`3w6ve z5TWnodf(NRQj1;^VH07x!kmMe01nqjmj z!*oqA6`gpJda2fRyv}bPo^O1*3Igbq`6@Zi(~v!9ti>ua6!-dQmZTD;)n= z&&LoKk#NQG;O^}Biat%LY>*Dfo@-?xSyU^rh!3N05MDq5AEEok^%280*mqc*A{5)a-N+QOC?*ZcYtpsp9R|dTbGxDnQkOMF{Lp|dKLoO2v&H@EVUzhuJ)oIbm!vl|-);0uu zNzRy+G5w8Q^8cEXuj_A3V#+{sY#Qxn#$4RK!UznTS=se^iYzPDglme+cL@Iw(9#|L zW*%H-;96v6!o{o}&QwxkP&YcUioA)nP@PpPmEC}Ws$=&N(K1*>=B=YHu4`T$dP=(3 zPspAOmT=$%eo(q+nguLKee&I-Vv2k6%;Zq@FCGxygtGn)!nunQRdp7(aYiD<=PH@FOT0RGRD%_Ar6`z-vH~&|f z!{VRV8jMkp4I`%T^g^7oJr2Mv#kKrwmZ;rDl)vSgUO)ss0@a8+34!t#;C-<}!yc#AM&Uu;@64usX$UaBYC z8*GU(8YyIJ-MZf%?${osF#@I!meRFv-B%bgLBpdGmzK6W1#{My;L=e>S@Z+v`h!g7 z>oxroJT`qjp6fMTFMnW{6#Oy6w-MoD;!}k8O+nchDs}&vhShBIV@;pODIzT1m^%U3 zon(gzv+u`w-buHo$=@}Vml>VuY?HY#iPpiRnn{Y+o$MnzawJ}{*-MN5W7jPtpa`L| z>G*+KOKDTLU)C~S+5Z#&OM8OjzQVH!MZ4#Dq*xc%!Hvb=5TBoiHa$VUXDQz_yoY|A zqLN5jkGU)5mbge-V3Ybaso69t#Cqt}bfEmpc_iO`tJx_PSA=dDaR zvnjolf+p6jtFoG|*wR-c6eO5CI3mg}LRis-m>*m4C|SS5`oShXjsxcTbBD!13Iz7h zGe0ee2TF1a^Js z8OU2awdDwX{zAZs3c9H(=q8rFbyNG;${P~qqp_GI+Go7c6Mn9zXM^04`hNb@Bg9M+ zyRocJrWgJ&Zn{ea2U?JQ%e6~wb@et~?3p7!?4*VkeL;2;Gy&iq=Lm_ruVWz6zb@gO z)qLjCX(mK81(XRHB2?u~CL}xkrpV~2TeD2pOJz4$1G65#iZR0UVv>C%6Iyk}c=6F- zwF2V=nx*7r2DRpVqMOcwcvK1@O0`}}{E_D6=hJ@2cfnOQ4~`Ncrf=?ulhremT$_j8 z`}3aY&7*s|PoBYTw?^Hu4-YjThml)mnWy-Eznf)NKavndq+zPB;CJXk=M7=4-BzO@ z*6ke=S2k(gUbW*7FLvY&btw-oHmNG&VRP?B4@m!b3zo?~({GqAuWYDffaXqd{xW&7 z3Qtzf9r_y`bZVOE=!7)CC%Z)!YfQI&5J1yK_oga7q4LSoy)xAh^<7rJuebK5Y^Un8 z=Uj#E$l=jgJM7e-?&BJe29XR74i5D7%~PT5Fysb*SN5RRVoR`M)GD+Sw zE~HP`CvNG@@z&z2yy!mPQDf7G?>>v`pYQ05xt?3ivf0g-ub2+!ik9x#y?cmO-Dev> zY_is}4-RRvDqL!EL_~~o#?@a&w3D-}i8Xxuc%NQFZN?w4LGBZuly;{TnxF+CP?F zX*ND0(*Iy9eH-UV*yZSvJX+_@<;lmk_#A_o9G_dJ8p#g@MfTl_#4ES>O&2JjF_}4c zj7%j68ds?TPHH9lYt1TriQ(rg1lKGjc}^4gN*0b>YFW;@!t*S>)bBqyPJo>gc;j`a z9OPzYafxy#HebN3I3<+AYtYIUsyBhzQqrlVrTnZHO-OzUpXGZKAMr}%pWC&Y2Qt1g zWh2eY`oQoJ9d&mpgrlo0*b>)wu^z`*c8aHesHb{P)8qVHOqZ_NiGRd+_i>k&Y0^%w zjgY$=neMUr%^E>hS}K7)sSPq{FPyMD{7eIp`*D1Ws&xOI=*9~n`onH)ZB*IVXusej z*dd!Vxm?w^h{~j*Po*y45m?<%AI_L8Iy_9Yn$Zb(P+M-TOM|5FK@Tb*UVj# z^@LD7!<|oX{bhiq``c9b!^L|oK^tua76yYm=N~z&qp$eUPM>Uyj25q7B%-uFAl9{J zX*3uAu()-upw}+fmqD$=JS)J;^(MKcS^@q&l&j%modKj$6jdzy`Z13((tKgcZIsMsuv-Gr2ss*CvCk$?2BegeEv6_$|lh z-=99N;kc+NlILyQ%_M)OFj^oPAm#%h-ETpY7diP?W=I|3Q^ttercyRP_r~ku^tHax zn4(txtvUBb<5eqkQ88nRs#6yQ(bG*EFKB^ccg%udV!k{~^ikbVwuZ%86S`nATs&j+ ziYdh>I|HOv(v&R~hnDp6bmS#d)OvmiLhDNCMfx*>;EksD{u$_`_>+ka`_52qa#xtO z3WKXz46iD5B1?a4=%MPY>!E1T({`-e2C+Ps1|vU^upedZ&D~f*=s%o8g?9_NmuFfU7 zW2lSB%j|TURNtg@chA*0rk*)QH0q?bf6a$<>d^nJM!m+Ulxjr;AG52wLfc?^K7ViO z`!TS2e9IH9UmriOd-VCbTBGYTMK)B*=;>P8NLfwubl+ep>4yU| z9cO*^R%dWj7?Ykaq&hmZ&?U8INR00Dm3u7Htp9O7wDO{gs9Zz^&jc`vXKW{O1 zrW)JIu2w3Gz8M&)la9lG5g#=`3)%8WbRM`RNdcv=j5YFP7JV-WsTD7=_GpSxsquwC zvmcwSWXx@By9Y$-P8B6ZdgN%8mmorih|Ln-pSk(JuML6N;D^9#P7`63`SO9K`|-!T zBW3NdrVZiBIq7ZDW+6gJ&C9etJn@B4-~qIEbQGTArmL^Y5| z?3yjy8$xN6J`2|z)Rql>ca!}~Y4!J2?tOY2c5IVxu%|>;J00uKpi}8}FSX{#vm$EJ z51ibuqY9M^{UFje3SHj7)s4ZkbLpKa!Gz`Z;$}RuvKZP_y}N3vk0_ynR*X$kUh#E^ zB}umNRQ>buZK@AyLHp!9sV>K&MPSR^B%nrt445`)8??=d$p-=#ne!0p6n{UTm&EI6 z>@SHBoqxV(xBzt@A5LXf<_p4!<4K~UO{#u6+1NO@PG&QLwiW-4Na4wJo_e%g6#coh zxh5&>2i}rGv8A;GE^UYWCG+``3X5cT9v!MB)w*vgIzM24bf%y*e_5h}`km%}>vE%t zALId_yqWFgMt*UQW7pP#g%ifZd#df<((zDEo+zu&F(kT23`J}Sn!9mZdbZ;1e5`rS z-(z+uuh4c}n|E)vSXtZe=<|UTA}Bn`CW}~|JA&Z2JR$bfzWLXruOVa`i?Vzhto|(b zq_4%mNFg_%);|?f9MpZ*0!X#mx1~dO+B4ICSg;U;Qy*y(Che6uw5`}a_#U49fbxUf zUiQqHBOa=wwD&fY3HE^JJ9zb2a!($qqt+v94@w>5b<>!tJxRLhjsgT-8T5puM!`x8 zNi$>xTp}U*s@cFiNo+c*p?iGC`hfP4KRueeo)|XC?kvJm>uc5POagPN7~uz7+Vj;W z6-`w`>YP1=7vz3})oYYZb@w)dZ*kcRaNeKUy#u zD{BX9p1Md8k18_#xZJ5J7SL+rH9K3uhh_Zy?O377>KDpbEhz21fj4becSt>8B>1XTGclC-ZrFe{ko5?;W6PPs-$h&EToN=-0jb8P z>dq|)fYh+gI#X01|Z1$7+?0 zQ3szg>FANPi)MOb6;tIhf#`Sv2@Zijf$NWq{vA%174LxqQ~d}PIoS5=>QY|_W#(f0 z^^B%%Jx#L}X+b|8^b1N7YgwbJ#EM(8q4OY3A#CyWFY+{G8LezY685n>gCGZKlk&6{Ox72t5{f^L~@!wF%XxZ z@>(8E-*TN0rbK(9jcWkX<4-Uw~VpYc5js#0ZCQsAd*{B96 zY&dp@G-`YxlEKk=YJ`ztqs5ts^ZPO{7CyQ1WF6m9$T#ZfTM8yyiOgrZi7x59+V(V} z$3HqbVnjXG)syR@zA(5Fy}%6R{0$ z;EK^5tnB5FW6qgdP@>F<7*R6Y&eq$n70Q^~ZH zxCw1NduGoAPrCn_14r>(IF1!oe-nH@E+(>m@PK;Q-@y3iE&f@uvX-Zw`2)!20)ALQ zPjLrp7cfW$@n0xMA%5~3I9B?v-y{jzB`Jz@AMJQrENRxUsfqQAT`#ew>M`}?$x}kq z3+vzDFyK0M4_{1bK7etOr*U=lH0AwNoBs#}cdMS@|M^>sB<@NW&SWqDT9jTUTmq@R z+luBA7M6HK{9F$Z}|6Xzy|+wT1>$1ahL!Vfv>DT%2-=RQAI;G<$ZeRr&&kd z(r0UD4$cWZycBn!Gw;IQGJGWsGk==c_GP$fK~cl3p4+ON{sqWIO3R5N0UNFKyH@n3 z@;!oPPFeC>u|naVz6qifreRp7DUv4q-dgMREF{_o?0AOV0D9Ba+(tAf$}RX@Ba?7kp}=s3n~-z+2iYNNl^bvk4oR9NC{=yCP|KsK3jZJ!jVUxU=ge>~V-BD>d=h-YZ1e zLhY&nvLjv!{L(A#p$*9(rRAnC3*ehsh{;b(s|!Tn;s|Ij zYh|Vge*O6AkGJWxGHR~JX?Q5^!=;*j44f0++5Ba=ad>#xJ;!M(>zxtB6(VRs)s*gi zL$X|RD~Ib8yRt~J56la3HNJG4x@x=M(!V`LL6vrS2z*&Vliu|)EO+*+0aDt(OF9NVgou^*|4_AiTGZD{4o&w1HEP6jPFcfL`Ho-v zigpusS&$KWZhe>+JNObgXxFr+X1Y*|RTEkSeM3W_=5b~v=3e+56?AAdNhY+vu48)s z*%G!>=84R>o}=~lUgcVFBe!(ZgTVcWnH$Z5v;kCRE2(w0rGI#g7l}-ghIFQcEWARx zC&U{JzG-t25_h%~oEM(6pX}3eW?PUaJMU;;D|p*FyS0KNuJy8Z>c-;L{x6Pgowi$u zx~25XM7ilj4$b#qL)`-1uaa0Yz%g@$61rKdHPk&6e$sWI#a=ERGGqFtW_)g8-rSAN zvu0#ypg1X)(os~`c4C8#mM1WmGOzpn=*gR+b|p1>x`5&8SL?cs(@G}G8jO`QuhRJQ zGFncO7((nH7p^@Ch&+oWl36iotpd21%iSivQ*pTSqmNIX-;pBIiMrj4+_zNSClm79 zyA93qi&7Av8xCU?E315E@I9aTCM~=nf~4(~aJzcC-j*)jRuwu$pQN!OCee1(O7vrC zLoN|9nO+JrEnv%Q)7&ni^MnqGK5+NXbuTP_VRv}mYF<*23g$f(iSYyUYzgmHB1;~z zCFFa-^^*i^8c%5~Nqc*~lH#=Ub5@Sl4(7AG>+!#))F3cM2b7T)xwO{bR(lfpF$|x6 z_`_qf#lod5KVaQmIq9@v*E27wB?-(YyjR1Ah@c*)(-+?<5WPCn;}bnME3pt`YK}R^ zkL*4}kETBEZgxKyLxTpTk3Pa!e#*P7-DovJ^z%r1#FnlB(zZK0Thwn}%NbXKpzmOz zg48vQqdyUX^Ukifk+3TgesG}EAHALyouSdT$||OG_+5JJ01i>K5v?8`P}5g$;oIW! z6!2iy{gPCYWH7jFi9`2(WV;jht$ZX#C(iRQ8sCEWa2$N4^utll+qZFrF0DU zhWUR}+7>A6xLe1tZxmqZ6fod>Az;`|VtPb;Aa6~gVjdmSz>I_|w4ik^(CFyK>JB1dX}EBSVz%c2 z0eJ;S?Wr!})&V)_!JqTRr$GK)T(p}wWA-ZN4X{^Dydlxz{A2vu%;p8PBuP9^rd0wO zs0m`x0v*!@{n2R`t_@MB?tB7}Gwyr*5M>zKtT;zjY0!i0OhJ>xva*iELOpU-kX&zXaPAiunijnKqfAg^m6y3l+BU*YOb zyA0yvM1O!}#%BW5Z9*DkY28WD7jEwPGr}nO^U4Gl#{4w1r0TO{1Pc|d++IaE{Z$@s zhzN0D1ILH1*ig1Los(FE$z~hu$|PYR!eNsuX9@?$^MqROw)H0g^<`Y^gM~BhhHQ!{ zB>X}SI8qg8I6foN`PpnPKLIFTS}=lj(}IBoCZFF>>!$%gr-?EN!q?ErmlRpEoc_@h zw!RSVIF@6&B}eYAn<$r73qUYAt&z01B-YNKfApLjQp{?4bQP86{+T0P^roy&ng8DH zQ(=~xCT^lnR2Yyly&El0{0k=aOFULTj3C`GXk6Q`sT&yTatdKsHz!!+dFtdZC%9i%YYfH4zO@^iyFjt+YuJ$%5~UyM)f(^Lh)sk8Gn;kmizH|lR>Pn= zG9);1rhBn3!opD&21qi?;kRjX3k#yf@o-8G3}Qzvt=Z`MRIrsAI$q{!ooyXj&rHx< zo)FE*YxT#2BuC|3IGx1z{I->z?3|qI0Py{(7?uW;0RfETMb5VWh!&kaaVx*%4oIJ` zn2o(5exo}o$pFK1K5YxKe-~B>%89;nzgyqi%_p@3^y{MXx{GaM3((Lb93J#hDsKte z;1#^%g-a?TrhZ;Kw!=_U^eZv@E+3kkeCl#{8g~?>ksI~Ph0|Jcj+MsrVgyTVJTt|QPYPxMpYz2&9uR@h6o1!T_^5@^BpdMnbpse_kH zgSZg?+vWWg1#Bh#Yz}Mz+X{E*CNC9cny}Yjgv=SJ*z7n3*Pr0Z2GL(sGZ<8S*LzBc zdTOR_%)Ytnjpu>(6Seg)(l+L_)GPsbxvhnJgGJFyO%dJIWn5H8O>+1`Pd!@<%Wd9} zuxqGQ&+e}(z7SSEwVVfs3F|#mbthyCoLCwX^SeRJZ#&ScziGh!kzl?7)V}&DRh<~( z#miCAOs72NbHK8R+?tzn-ScE29iQ4<;sGL4psts;qgB)yDWYW3 z#N=|rXcdN3Vd7mw9TilK^UM(?1h<+W{V@*x==rkqu9-((%`mnF%hD*Wa4<8DC$Gk&vqLQU2{--hA(9;(9-}|Pu%s~S zv&JJEbXVb>p*Q4*@WVs2=^mk4 z0}-PyUXyD14@%srg99w3hJrbLq2I#&|4gj{0G1q68Dqt6|LQLYQh+Z=qfhae?<{`z zjB5EB{ZT{foka1=g?kj9d)^jD;NH-j32WKM$$0DSAFP#0@Le<;qo8XMdx13Zaz)UA zHj8X+Q(36vXbsEbA0?*b<|Zl$?&1rr?G$w71{FK~0T|~cFQv&cBhQZj zNhcXQxgaI)nNy~Ge7n(c;p^l>O#>uX6-)fNc-l~B+LL1k)&1z0V-=~k+%n30?wXB3 z6f)Ho&)qc0KzZGc_(q}LgwJLUQtvAaV0T)Otr0$}5k9KPx)9M_vTEGki*o}?zlmmk z8DiVO{ejRwFE6?yVI|v`vTKER=|VOB-Cupq{0`}c!?lze=4n43vfAGO6FVkn`_S^zE;K?_l;jGgL5{~Nvo|ZMX znL67t+oiIZ#zCimx5%_Gq!ksm1aS5(XgVrMG?HU@+gZ+jG@aN)=qm-xc`r}!cbF}Jx6T+3R&wU`QddEH;ls1XNT4%0(^*MV56!pxBH%Z5~ZnqZt zHgSa~$ymlKw8i4gmGGfoxVeYT1gfvy>woLgCN&wJtvPU3S^)SB}ehoD+be*K_ z(09iNue)Sd&U2f2TXV^S28-6e10BG86;=LEJn8=;uADHV`IytXr^Mt`FZ-oQx=Qgr zyrW)T$5z4YuP?O*h}%6CZ0M=6mvxxlosJV|6*!x{(&ogPx$RG+LOjf`K^C+f2dCrpMH>_gvJ&OeBf>NKDIm^8c%l;io z46X$ifl21r$9A;iXa zUcF?u#O>s^vHB9RFl|Ub7WyT#!X2T?wvq8s=X{?%J%zZ&7U>H8^X}l{dK_ENE;E#mvUV?)4*Q zb3dBr9@mUGu!7(G1VQVQ;o%cmLijAz5)a72BDhp57}To2yW65ib?zBT!Wb4$Tay}W zyB{87V@Ve+FPoW}np*R_{{1GvYc_eR1JV5zI&j(zW!Ke2zU*c;%*$Fid-enW} z0(OP#wtVaU7ffG?xD8l<{s&zK#}XD2Hr%n z^s$rQ7mkJfDI_Sr?Y7o+od3ojIpjs|x2BMv>iWOFb@?-4bc|)t+XtX2%%e^FdZgE` z&#^Wicc-)T%olR8S6h>`>s)V3YMfi>kXw_*y|-}c>*!4=_G=o!hV1EUIe!P(uMjvU zz`+M>ki6s{!#8C3-s8MKCluE?fBHQqi)YMN7(Fw89?wgkx!+m!W#}D{ik!4is0y~D zdfNW8=>{ez-~B4-1B$fWhv+tT6xSF&B~AU-^6`^@B2F;hEd5xs(Fsag zR>y}Rw#-!Y0odAqBNcA9afJn~%1qNcRkX^{YS>x0i;WcorBvPYWaJ$G`+ad2F%$X! z{%7K%Y$BTH9dd8kvUKi&^7yA?7#r(T&)@0k^4mwZiGLGWCkLUqJZUPk(*yxc>WJYV z&uAkTP3|fRF0X;C#EssrZ_Nrm80GQyjFufhGL=P5nKd84C@H~X6( zNUJ*Ga@zcc6aMdSS!P35eybI6aceWfz&e*F4rVT3NQ9;H-3T9&fG=z^+Y*oIfsR@9 zJ*bNUax32g&gvczl)o4|Qv@*jjuqp%Yno4pz|>j=hZ>OmIQhhD1Qw5s_WMA9oO##W zg0-~dqJ&E!{&NynsN8RZ#A*)wilYX+Z8lo9QQ-!=(|%j{Q-DT;GInPEjP4}H{&rSQ zmN~yEvy^-uk_+T#0aww7w?Wk{C1qw7BMTHh$(|sDjG+`irT@Qnibe4R4sC!uILPS- zrjtVGQ%u#PDW|BYPvG0(ei^4Z2}E~yFNeH(N!ZF);N=am(1HaAIUA4OMhu5e*Tg^O zIaeT*BZw5PQuKe$=97__iNjI7ul4}YH}9^TeeO+6{?aSjJpNHm?Mjs$m5P zmzi5vo}Ru+;{Z_AOXO+g5pC~aq=<4+(MTj0TK=K|sT)jPLqkoW{Ramg^Y2Qp4{I2Z zQ^FH~oOf|VHo9|Cix`YP?par|1+IHI;$E)$&^4_-(Zj5;pljus7$gcru@gTmxN3xK zMSYM1Th0LCi|i_QXYPbmv~RtnO4=@zG473VG*%nyRliHBLA;Z9a@}rH^eEh|snBid z-RD$bfQ~PW^|0x-v-PiQP0CBP7bd*Uhz8AS$%^~12!t`|Lq;!^!vO!~w2iXvk%nOL zaVI=o!F3mK$4^L(Xu?6RDN*PXGQIUxo9P?$dfOh#DF-KtiaS*$hvvcXy=k2V^gnob1|7U*uWrlRM1qSpws6yXPuT z3PyGsHq}h`y^=@Ho^5S!9#6&=wQ_4UPhs!7KdYP=65Fc|T#8idPR<$J+p~+@RhE?? zLb;5L3^G*LA-(ye#8ZB((zL85FNVi;++a|(DLGrHX93!sn7Q)pIeWmzS~mN$)+&u6 z2Z?1TB4jp4IT#B~;yo-|_hF!kb%Lscp6h6{-9w=u=M`PZ!)JtVw$8Oj6AU00v*J63 zr15OiS{7qtE?*mm<4@EA{W=POW5eaRTESnE5k8nu_%ZsD^og@=t(=yor&ZFTS>(o> zXlP`2$$x6hDEDq=#irXu`3FuXvE7}G&GQAZHUn;T)ht6&DXS5TfJv%|BDq8^FRcl` zp5yzL8XUX-ss;anWq!uMBhwMKf^`f6`IUTuv07?8R>nD*NPdD6wAPz@7-{3;$9<)T zW0B>|pUM2hKj;1d=k3K4G@loM$EhmRD(Y9Njp`-pnNr9NP^d0?Cb5UtHZ@QgyFP2A zHl3w-UJVcMioQ7aiCImvao7$3gdH=Vg6b|3EF2uMm=VNo7@Qm)x{EZKj?Z4+s%`kJ zo?IWWfb3Znlp2^!yjH{QA9eod0ujNBEA{v&i&>YQ1Da_T3F4|}dbI6+86iCCf`?}v&xio*due+IZb##i|($lqOfV=SgKAuMw z&OMxHp{k=VS5crF9~m9|KIoFnyMIAj7*LY~#NQT^7;cWI_(@bSM35Ew*;k8`0k}x_ z8mF#iqr&&iE$8Wxj|@2Fo_@WBcYtQDcJ+B-jx!RT)+Hd5HYZ=yc@>q~{;D8obqRH< zbL5nP90V{iWl*bg^tcI76P^}{o&C_#7XGAS>#N?i#aw*t(gofJx!M1}kbFd77nJN9 zy&9(ll>{7LYq(&=4|LYx7(t5#VHMi5Lc6%(WXDUT(+Fz(e)1T_g|qVx-Jmt3++vuYgDQ znx{i2x0`Vmj(eRl-dfwBv0y)aIatvA<7ZJ@6bFVxC>|f`a@CakRJfyD>Ocn6yrQ3$ zCi5Pe;KoeQd4UFz{>jYqKM*?U0EP?~O+9dH-Op%frxa?)w(3<*XVVk*890KyYa8CL zX%iixeB}*_0nb>=EA~^5YhE>|mF|7M3P=eSy-7}I(WX^Cwn;VxtgXJlAs7Nn&&pSA z$jrnfd42sQsCc}+A(~fIIR07p{S%|MDgDBeB#_L7Am6~SSVC**E^5`0nR=L>xiCo+A4`H}%fy8w9*GZ=@4(m?=T_f~$h(6DA8%?Xe_?f4^ zye`iG>6Mot{xD=rH99utQ&ODxMNhJZa)xV04>Y3GOi*jMv~aYnA%#r8(qkb_54i4-?NQy0LGDh`T;6wPbqK;Oo(aE}ZFZnsus>WSP7Z zIOcpz34cWl{v7qUeFk;+TlrlG(!-EpwoLP~jR>mtcVtq>iT{~#8;K8@oM8;88Ua%&gZBan3kEf&h|q-^-f3t*I?ZID6pp0aD6T6}%k38$ zTLM0$mV<23^{I;?RI(tAdpzs5c4m5nY6Qpk>1hQ-^@PVWaW-A*ElKRAt|*;gao>m~ zchm@Qa>;D@P>&XX03V3jCBjPA-s31?7$PZR1L)1w^}algg7f2^sY`n6&FF#Q)F zj#&X5Ny^Ictb6)_VKI>zZZ-Z|@`{nwUyqYF84MNZQU{iDr%@7_Quj z%+G%5OTCjef+r6<4yFFKs>tRAL<=+SdG)s4!_EB2v{C=JXsXsdVz6Ivp4$W~yeteF z0w~mkts+OP@5dFhcFZ4&$SV?QNsgi!`he za4cujIzMsPBg7Qa@XC|Gp^bE4w zPMl>>t8WVC2#6d5Ia#MfFhUSh15Sx)U@ZIBPy$w!ySu8|)~_2EzMlc+L3!}{dW><$ z*HEz`ylbSb1XCLdtSVsubidv`|gn4qUo)IoD@YDbX)$MLVga>}c@7(2p~ z=oZwqABF>O1wtp+I5mgV*KY14+v& zWQfvPXd9EWWTxMh5M)9Uwp$+@R7Xb{+%-U|9{%BR0{6UE;t@5H$d2ZYHe#)n756hE zgb?cH%YkzZlOCFRT0H^`rDhttBAh?wvvmDkL<%j?@5sp%|dde<&+Yy6NDbcwF z9_o*`g&#l z=uqczI8l7A>6FQ`F#OOlIYXgdGi^J_f7wKCYqWpOk?*}g%S`feMsz=p%-j1ZKy0WN z)u%?tZqKIwFl`|7l3Mj#(m)twI6m@Pq1CMJM;@pN#Mh&idQ4h!UqNZwO#E<8{B` zn57})8jAiv)MFnc0J`c)>c0w{|AVSLRfun|jo%6#F^+y3D;F)wtzaDOXCl@b{pQ*|S8x=?*^0FLXrgU%{;53!@v$zie{~}M{2F58ODfc_=67Au= z3816H*g#-~h?BU$&OJbvtMDp~-bIMNeH3^}Hmf}3F^nNrp_81HT}0zN&$+*6<{oa+ z5iPJK2~Nxh%=ehELf}qOeGuF%!EJ{q=G8$YYtMG zYbNJWGexRHN__~S!EPIe-5y4fV;t@WH^-4?>oS_iMYDlu{8hgv8pNh4#)zW0j5a-O zEG)gu+}w<)C^AIRg755~&!*ba!Awu)c=@3R>pzRknR&^|WnZYvTm-4z=Tm1Q{sb|x zz?V*?@AVQYCdruR*>cjiHx%Aguqgz1dVG5eFHR|q0fApK8P|+O zsuXB;)PTCA%MlBU@*x2#=#!a%Bn!u%0Y)4A8;J;p_mH&I-HC9`=!X#(E+y1=su$LJ ziN%-scNP06|GDlpf^Hf2y7a?Igj zmErwdSqY~2w+t1ZO$-WvKU>ygfIb!ue49FhFb~_$2I84Kg4c|Qi*h6>$(`}k=gcx_ zO(J1#fD+>5Jr!rF6$W<(_6UBF5-kpY5trCM6}?Y|VX82?PSa_qJM6R6>`o8UhW3{2 z{Y=mAcCJvMby(bpaWviPCYA-@YGdiCa0vq1^)RBjM1a1JB$pnWit_^QywzG_$hRCKu(o|4M3_Sa?#9jOWbOz9ggL6pbgJ0gK$MxD9pa zDS3#fDTPSOpSOj&5ePnaNrShl}dVi+9 zqmY_Az)bS#y91blG2u7VP*bKBx^8`WCFIK?pxI`S0H*aD#3cy6P<_+gt8^*HF%Co? zqL32x|l9OXZKe_k|>kSk>%WIpkTITYxBMJWKi8vOQ!e_V$ zvC-W551mUhmPi!v;|pQ|p45`F5qvCijD+ZRvWNPP)@K5y)NILX6c|I>y+Z@U5Nav+ z|JZY!ja|8tp`y_Xq`FtvC;tYDtN)VM!8+agY$lgE0DWF=NCT4njRI|9vrA9H+mN{u-YD;B7;9 z(ejqfT(WcDBI}Xg4&G~f*in7t35~M98d}_XHOh=SBH!{U|8(#Q*cQg{j9OyUt-sQM z%pt#1&mYS7c>A(E!Dr;t2rqWD{CSLIjPw9Yz-2PH%sf!xe_RJYox)Mdi z^ZcmIpFpG*ICYo^L@!Mk9E0v+p%s)Tu5W#Px$}7c)=sDno6fri)xGJYf|M$-V=n`Z z2%jY+e{bupXSknNmw8im5WLs(LQl{3QVq@zuyx00mV(G4GpkEMp5feh|sh?0+;uBQ_KB~XdOTbe*T;6pg zC&mYP;OBB3l;|M`&F97Tv*{v8zPS7VD6Q+SBI+{nmi`@(CzZLtw$P3PnT+I^?N5v-*n&645Dpt|iDecV~yln>2VXF=Y5!qHnHsA%qQyj}r zDdEoa0W?KbVF;)kPvIOjI8Zhx9WTO+zFm7`7=2^Oxzb??k*qqblrVSf2j~F&y?>1P z|LrRcGf9Rb`rW@Gf*z8r86+Q>~N^BQ#b0J z!J`Sb9)aR!#jLHO_I&QpzQV89pF}-Xa9}Jzi9E7uOSS3@P73~>uI#I@^kte=iHUR2 zyjpd83Y6a1xlqsrC4C6{(F_I1gq~6b9oDZxtlK2DX3KoVrhnV@@^w29!@9G-{tkSM z=che?-C;q5Z5MhztGP@jiX?EB`~6HWFv1EL-TdEOUG~rp zHcz`c9C;s)Htn_sCO&?&^6{Gi^BJ}j1X4i&n8oZ*{tq^B!WC$l!Ok9hU$>3HB(bIp zd2N=1|0#pGM}!QR(X#HKU`)@gI>4j_+zhcURDYauPf%vibcrAdK-h`7w2oih z76(5t>@^B7D6H#^@S&i3U8XR?qR>Y%!^kuVPfyHE?hfu%SB~hs1!DvlWI~=PsizMN za4LMaeEUTYh~!I)xZyAea3!l`1}^#yss9Cgtqpci8=CK@WxVr)#kaojECl$Vfh7FS2VR<8 zJ0PeJW~1!+WJX)yXaYamEA@DUx%0$a%Ed6FP}~W{T8S;9+d62Axyi zcCA&beUo5yXw9gpiSeK^9zA83EpLYgMBwKwvJV~wa*BNk3dQSmn*r}{jlS!AfF2*`x1EAQr@`pDnpNj>5rjX`D1)8K93!- z%(fN@W^@ajXfR|U?B%UsTX)suo#$YpR~sEzPRXVYfzoBiy0OB~9DF^kAA)*)OJIwg zyn%IrMd4Fg4U1!}W7wc!3SJ4&YsUm0z>kNURqU36QYd$ky2jS`F>2L@E*x%dRvkrT z%_h5G##g5E_Cd^zG56Phqt(sh;~A#kS$$->emsC98W3EG{bmE4%jCt14i!FC{L;31~;$7j0h#rD^xQ~ehT2i2N1cC4xyXC zLQv%iIk#N1QyY;_d{ujUGevw3Fv6Q%$h0oJgWv}~TUfy_ydtNeQ$(rw{NnptnFB{4 za@w+Aik(yDUMTonESze18cbp9Voi&^lNKY{%g0ynVC_D+e|r1rA$GjM9Do5akRQ7P z48#8Z%+H(?7|N%dgKlha1;oGipiWtTe7=1rd-ID)T6m+s!8t^%e8O-LE0}fng!cR` zt&LM)Al##x;?vWi{D!0`5xStSERK>X6ZmmmcX4mdD?z?V|YSF#=COm5qkd1)K-Xm z90*e0dz!TAjfhEg%ii+CqvbtI(wuL8kmFep|Dj-8nHkS5<6F~C`+9!sjOIKaUEMDX zbNjNeH(7@-c^C^mH$b#>Ojf=xCJ$J@Pmj;-?~Q%OEB^L$@N0iy&ZLNCN~SKT5qKYZ zoWPR4D+H4BGY+;EuO(fl%`%GjoFR0XPTx%R=q6T8Z<4-4cX~mIpnvd_rgqndWZ)S2 z1zNy#qP3W~`Njkx z>0JAl!}I@(C6R2`;yQQ^UmpBu&JAi<(m*2L`i-!kYx$GG-oDh(hx~Y9*ac9UUpd1d?G z;IHVY;l|iy&neioARPv3PpRBAd|NL?=J^+l$z9xR38Wr2ue~_b*AQP>NhTDL;vE8_ zvm7l(ZDQad>|K&=@b}!6aga;_1>@`K_>d9}nRyY#34?9M)jUrS`uh;}^+OttmjBA^ zTPT>kMXeiR3kx4;RG_zd*`tMS|*vHkK5 zjITic-IssZg?+sKP8ti+EPK$}3o5*<8-FYYd_-1ngpc=a0t%SS$3i zIO2J>sN~;E4e!}rYc#7w1aF8u1Lk_^J<*rXPw!S%ah`5M8f0aNK6t9c<uz?Hy`gnS?o($$bW8@zwMnKU;&<815wE{2(Op|p zWGS+&KBF-QQuq3PwHfvW_Kq z<}$F*ba3$k)rY+@ujAHy7BTQ`A2E0UZLIp%$g-1iIiDdf$}t9aD`%i- z^>R0q*~ks}!W>6B3(kxwadY!D607R3**Z0K=64KC*R{^91v>Q_95SL?4v!Z{i2NB1 zB97Pol7I=@k&yWGkZfPQ=1Cs!$#L$xdHmaR45);KHxuMm=bJd2nB3{yZ(M6)9TVAx zK&Y(0S!3-n5Xe(y%z(9xeLK`1R(0$YyV%x}<$v*&_sYe6%}wa2aO zyEgH+%y>a-;SbE!Y(sP4p+l`)l|zi)2OsFw<+h~S^;3^U3h(Kr4zS(UNg8B9rjB@ZmLF#=FHOwe(nG?sbU4h{$Z9S?S;Xge6+Wb#1 zl~H43V?J3wr_dsacLL}Z4cM*HcY1%p9$%t_1H&}I#U~fI!Pt>>7^ehb49|4=tOWNw zM2q%ntkEWR+vlqgJUeGgC$q~+^*pK^N&1)-of%akH>7_xb1ZLEK6Qy{KC=v)?FpT5 z*C1Rd4J}?*n5cw)H6Y+Fuh%;NvWXZ;^l7|+1|kb%srar%0@2SX(_>|}4{L}?ZJluh zTyI8hi-Cd7OyD!+%;hdz|F_v-uJ}rU=U;M-oA2UW&`up@8}iC!b)@cMb!;p=ftXvV zI9sg9C})ObHHdcZQ!U z$$FyJGh+QGB8LSoj|pgo&#>1}r!0LGACyS?C>q!n`C)}FwYK}4>cb(h4kq6~$t9W< zIjL2QxX~dRI3sKpxu<3yX85SZXY69g!!)J4_3{N)1`ZkJ9Zd|6X*Lyi5?L8WC>MJn z(Se7`!p)~vx(^q8ok_$bye!`0GjL<%f&0*qCtcMNt*{S!xFLspO zXBheJLvi^MKTWa8K9fC(@J)p9ylE!yhHz94L`Qqye~wlHF?Vz*rrQ&?LJuCPU1m=8 z;i{T7j^wcDI89mUJg4TZ_xF>wZ|bqV(f8%lD30WpbS>WXE9fAzv&{@wj#M2fvy127 ztS_%oG2hx?E}0+-irrJHaQU>a=-L%OmH;7#i565$J?jk}r>RpDUl?&o@7%&}MaNsI zFTCBG8b6O$PmQA^dk+X~EPb<>otAyN{mLccrXZ`}9a?Nh#MSM?7`x z(7LY%y-|>v3@JHyEbOzufwl_OZ)-a!JLh?4edPO!^s?mvmHWu;61fLVr|d0E%*+H` z^u>&LeknifKgy2`CxnoR!wUDzYChsGg|_4`O5pa=Jv3~GShV3jhQa0X?St(x%%J{| zkBEA!71`E^uFTvKTh<`+Tia^ZQq?ZC4qtheFEBQAp*11&sr_;v5sIzH?a;}yY>j(s zW+mw9Lab_xqd{~PRWH>F!{}V8aUI+B*CC4(ObNjhZ$(04SD92E?9_|NDtkh2V0XwM z%BuzZU9K4p0hM^SW1uW5I{zZ^a!zb~t_#M7OCt7)G-psvYNVqD*@53O7rOJ#Tk9xjbaW%z zC}r|c;ZE$WUD6BQ#q;*aXX}SojpsL!eG%%XrM?f^QK zUM&z9{7NrD_zfz2Y#Z4@gA&jqF3R~j_?0(l5vN17nw{E8VAx+E|KYz?`6B)^6F#%o ze3>j6&5D=h!ig>ve`kPiSM!RCfWgV3Ivj;L3;j}ykaC;rj}$Fp+ypa>|v3l`B1g-tHrxDq^`#hqv?obRPWoFB@pzFxqn%fu~l-JR@xwLK?;{nC9jcD><}mECvMTz5ze8{KH?YCO;*2H}gSxu6pCqn8woC!Viom`%?IHnjXl zu~yO;J4F(^i048HcS1I2`>LlFP|Rqyn8#tX0&kpiPZJoE|Mj;*cq#dp zQeVDQNb8$|wlOO5x(W0X6Qp^j#{scFTHc2GlcEsSFOTBhR^Y?BsHY8r;Tz^O>8Jd9 zZ4cXWv?9&PW%+BznJp;W;$%4lsfNY+>5tp7zPw4Zro^OBR1_`>i48a7D%VT*g)Hp3 z&LC^9S{w;DzmqdKEbyEU6OJmd_--*jW5!28B^bfZklCeI$rxY0IT|o+!r5bgl^Ovv zADH!B^MYE#mbzULi?gnR{lqcfzKiM&__%?3Yihv*YS=zyAa^Z~#s-wY6>Q5uP`!BR04M~ptn{$v~=obu@G+#W?lSKH@u4)|; zm&pw1DHwh@^|qu3^)$+5zvcMh66a$Gpoc{$c?()pPAocb1DD(1p#(mc?M1NCO!#Q$ zemN*!ksv|49!w2Y=Y>Lfq+E;xeQR(78HPHCVjIs#&ToA5eKc40xYc>m0M|8ZLI1p? z$|!z!A)L~1J&<{0&@*I)&`*KzjKwtv6NY z&Pxx~n0oBjX|&_ozV8j5wxxk_4(2xYZ8z#FY=)oOTG&LepgT7d*WzRiU&-xj&xh_0 ze%T=kYES>Br*K@KyWZ(>2UHH4_0oa}{h6*dl#Pr^f*JH>DXPGLASRbhboH>oIAUc% z9Hz#^ln}IR(sR9LT&be!=3+is)0`p?5lY_<3jd~0g`JIUMKTbqO?pB{zh(;G+XBU9 zOcj_@TH4ss{zTn+{~nE>UjFC1d8QG!QFCsLaFT9C&fz0I+Cjbf5B6ljal6wX+voDU z$ws`%$k9_JE$M5B^Mx4<)~sjqH$8d9Wz< z^7HU|pOHDwG&sPA&UH{h4d$eyJRiyX6*kJaklfM%N%6jvi<9ljnuU&#|!Cp}I zSYIS~r4j%D-B;%9`)cC3uf-`K>^pV`XMPJ8Xka`#ETTZm6k z$`&)%APpPbPn1?St=(P=%H{RVn&bbe%gpB*|^KJ@qkn<0fA z)|0#3Y`2KpM8maR8*;O?bCMhAd>7AWxKl#^bLrr4{71EC%nY*$r0i)Q($7AqzbAa# zN;;#qtG8mZSLo{MmOZS`0T(V$C%0gQxd?Zbyq6%^mHef?l(0jC zO{*oO_48Te9nol$5DdwDMlM^$)SaNreV;t_nX?tozBqT{!TGt{qY$){B)S~G2w2fA zf)ZwNZbMfvP5Iq#mC0eJ{yeMt7?WC4kDM|xV|f}5r} zt(TQfR|pmuw;i+(J~hH*3J#Hmb7RF@G;i>{&&4;XBzE~9R>dmt>WI zF0_@$EQnhB&X;c2CGd)pi^LiFLQsph6QX|-e9B-8cn~fbVaj!B_;cRLJvqS?Lz6a9g>PgliUru^eWmydQ^#+Hxa4mLq!LecSvb^!zEG zNAGn;yR}}6(cPLaJy+mR&!AFMIWW9hNv}Gx3wG5z1;&e3g9g-})-Du>BS*u{Iw~Cf z%NDC24+Z{Q* zeqglUOp3Z^-V;{@5!_qsjEiIMDPV@o@deQxTqo%P#q+^~kca!n%BQNX|GhErukkR1 ziJn|?pb9a*DxVq1SXN|7<0^Ma_foi{#7VSqi1pk47(%U_qoii^WT4W*)VlS~2Iy?o zJ|1e#^|x107!JNSw64waC^EARsv;g=t7GGJh9y;a#;cIaH@k==o<}L>>45I5^ty6x zr%JUh8e;7(YvdnH+I@cso|zXxO=JL5Y;_{P&Z7*V?<Kl=7Euc@+TF zi-^B}Z*MQ~hUOzePFCc9!!m$-z?UnA=ANYD{sX-LeEA0jgXgMlN3Z<=A|@uNxuDj9 z|M}InV8AZvuZZeD7nb@fLInusKR*iGBcg+}i zQs){u<(=obyHjja0&4tc-EM_MAd_4U_rrDvZPC+YqOa}6!H!Dpqhm^#lxJYKBtrkVtBAW~zHBU^YGQ;OHcb;-m{Z_bnN#cb(Om3pKAa2Q7` zf$`5f<;TO9uq?U^Yu6}f?OVPgTJd z`P%G@14Bl(U9Mf7vBY*|<>as;2E~Z!C|qP{aS{NeTiuYirwN0cBxMD4p$TdN01B!# zHf@uK91MmDG6J?ipnp0j!a9cj1!w8a{%IAF;o-kN?@; zf8xr)ms18IU22CwQ5`^`{QIw{=dXmLRp-JR-fy#uk)YT>@}5ki%Bg6e#6mk))au>6 zx=kW4Axq8^RnmBi353oyAG2d>)4VwN5ZJF+Qxnk_M`DI=%D&?g%A;fY24_y=0cnoH zfZW*nfX2C~A+6Z#I}aaC`U-6Xv9Rpn%mS?+YL>Ut7Zm2*m+BIYJJ_x8^I?xmzUR(m zPgLc**J2?Pv1?NQ`jIl$W2dpZXr>b>Gp|OJp3NDPQ)Y7nh%};x4t9DLJy4$qai8Pg zIJF-x^qrL%n&d7sDRm7MZrZQ!!bG;_>||35mYeVw2Hup^C1gVyo~>|Ze9-~`r<#UW zh1qWVU7L5Gz|IQ7uBOU;lx&QBEx2=+nSXY#^M2~bqJq(6nFC~F8(K1j7ZD}>++(&) zXn;Zi*I?BkTC0=*ab9UWk6Jg;W{Z>kBQpbwr?tdMP&P!L*R*+-wKT1kx^fEZvtNN% zaVi?O%_{Pa81rpm?ZadhNgZ;$98>*E2rp;(R(CBP9i;)x*L`ZK1L!EAGwHviPP;if z+#(f%Ntsj@9{937XCF(qTHV?2XBbiYm4GmWC-X`NQ|G@#tDInVEi&UPWWJw=DP^G>cS=s z_*dRCC}!Rj{)3%}Cz~&GFF=c3Kv}iA&c;erOq~icaVWPjql%o$^_#OjQ_p6y&qxv( z=y66ZOGy{)Ag{Y#-CY~tiH=C8h57&ga`S{Wp@!ZS}9yzz5?%tL+9kQ zdvI-SsLk2uqofcIBzS@I%y&s$r=`16nR;3DcK(ro9!D-_8_~~lb*((zBkfP18Us)f z4^&_LN?Seo7f}sVftdJN{u;U$p=O)h)1e*eG`Hk-3ayWIwY5hom7JnIC4Eb%%zK20 z!Ydi019iT?uEA^-Jyk#V$dFQV?NN-EG-yGAdSWy@kjCGC_lz@ zD$2e$gyXD3dtBQ5PDfoP`!UaBgo&u_vtr82un)MK#?9yXpJ2(kIEGy>#^IV%aPZGjz0?e_Q|9>?VunL?L)h>Q^&?`;H~H( zrO&PTJpe24l{7-%F5KG-+NpKyBJ4o^=CjlOfyHqc!e+LW;9Nah517QT+wM`MS$#9- zxs~6yM_J3yw8h8%^nzAVs?YJg`X|!J2mz-ufoc*g*5lz<>o7#GpWbHl$HDEE($z)M z0dKj`p`es`{j0ZlZDf*skH;q|q><8sE08OLvYAiR1Wl$%&Gx@hj8n_j5qTL3ExsIb zT4#u5C{}A!@TX){pkQD}2W~tNnGSB73AAH{*X6oKNQpS+nZLo2Y;v5vg&n$YPuw%9 zGT@sso2j!DYvj#AQA4*lPtJmF0dhvoU3V(@UUv7>wmroC=0ID!S1L!Y`ZEFN_!Jm6 zeFVy>f)|M>p9SUsm0Q!frdaOlCB}qDJm?mS#T>ITuQZ99;+HOndB`Jdr(3TlP{8IS zp{H;=WZ(0AWB)|i;G)`8Y4^t0`8=3*Ni6#NYUVMq-)_TslF!3b69Bg^aiRfykcDrk z;%SQ3>1^C%jo1(FymxR)ryqXs>ZZcl*#)GZZy4M^W6Y0xAw&Qf!3@PiUS`e-Wou z_H=ja`!Z}{dL`ihWYCJ%@gjB`A}8R#xi-Krx99tmU7}HF1)|Tu9ixJavf49{ zs{!bAWbsdq`lqbuK)n<*r+Pa~6CYwuawS$3l*^7z=a{pmW2T9MoF z_M{-eP*iSMEYdW->dctCZH3EZdDe@FDZtiOD~&>u+4A{-`er#o*fQ=3-L=heJU1wS zrm>UB9iV`bY!tOtD@9OC2?EyEq^5U_Y>q)KUq9|CkopDZ6~#GP_7F3o`ZGabq*(WH zJdpZtnXE`}Um-!s_o+5F6QdS+a{QXPO7FUHF>CmESy0qWT>aDG%<0T@gsP~zhQ=>c z;(u?%s@fgDMP4QsAUj3^$K^u>L%Org49fX#!5p^RMTGO45@A@WK{YUuMK+`^lWIQH zM8gf!>7ey6T+kWjSXLZcNl4-+KS^8cslC@i?vft|1w9aGBIq}I_5n^O3|>|l^j5^i zW83lPO+jZRR;7rM?%UXBev>qERK~-`l(c8##bvrZdwr0bW+Nmhx_s04BA3ACj+zlI zb!F*DN8x?&a#<8$r;3MgoH(DwN4Y+2!|QLL^sgURuU$?>_4HrDcm1y*=ET9v!2W%AXb4rfQsOduwxav)y!mZ^a)fEnt zVmHz=oMn~M=U_^l(=NV1XwaLn=q--YO1B@XtnT}Z8Bd>@Ei@x{wy=hCJHpJ_=Y2Q` zANF`c$+Mfo#_PtA*Dai?4o)lhW9-5LJd`Q3(mzx0* zmNKhz&5a+(OMvpLt8K?AqCPo-KNtb8$<49oDFF5Z=^>hZ28eFR;+8(4Zi$0TC|oIN zv%FH_XiHrU8mPHrvL7B=mV)i+vk`j6YsRfWq}mA_$r{?Rg{R=tGOxJt_XtWM7D-Fij*B&@4`-x1chrPuv^a^7{ zyBl~Be0D^liP6_^*zWqBuruOMCDdjwd$n3esRu2B)N3QjxF z5VG3N?uAY*1mw0fk-H)y@O{Pe>I3o1Uy{TXmR7i3mL02c^12~sq-h>h9b%o7wK`&z zM{_g%`*nbefL(L4(dOMD4N|;h0gr z{%Gq-f`aU_9{QnN#~d%NV;9Vy{JOQ5Ni=7&M~xWf|I9OY7?skPC%b#uXkRm@U4Vkh z%yvkd78}1rF8?vA299Cp51Oj9I@&X6k1g0-guFf8528=h++S4XH?j620nH#T{@xCI#p`)m z2qEBHGs0vYeV8Qp_J+R%EP^rl}6%eg}covdMO1(UEw^~x~eG0aH0JkFTJ2D>U zLKvNCV+a+CAv*gr@nbxVhcrFuA+uv^?hFyNn=_xGGmEr)6|dh1x4jRHkh_yF+>KYr zgkkeDH4pjCyj%F~J?Xgl)02;Z9l&zv!+pKIssfk?zZs|Q3bh~;o_!zT{)XEcmGJ0exB5E z{(=|ON{ggLKjRLDmprg}F*API3z~l%>gm?u_#xx;;3!;;sg+br57-3Ow%$FfSFt-@ z_479LJC&As?}qN4ety|6((AtqSt*2&jHN*Arkr$GQ9JI#ZU>!2ByX!waX6lzj35zj zD-QLjy`HVufd{vp8-(<%MREj8ab*Vfi4*AL4ri_GsBZN#XSj3>kpaXI1J#+ri95@53N&KnGY52+d;>H3uzAkESzmZ zJSy-xF1{l(5LryRgHVad?VP3ZHC=7ALflC4+vAO68-0y+yoc)+o<7;h|l zb_@nqW$A0P!woO4JytA4BI&rUg6b_JX#C=-anTm_2 z^ZTIY?H|hhp7J)=D6cMe{f+|sH>(u^wvV&Ea|(|2o?=zeFC0Dl|o8=k^< zCMQbOzkd%*$ zwv*JyiBE!`^grk|K*i$yCf04}!2fZt0S(s5_v&{XAo#4IH?++87sKR%``VjDgbjIyJ)S|dD!q0dsV3qYsr)mG_jFv)5`A&!KOm-h4 zB4%HC@oc%LqE)rF1V0m?mMxC#d>AITK4E8#hvrict8v*@z81sZE-#AB0ZsNR#?@}> zNlDh)73?vfbS$a?-LQN3>MV0ahhxVjP7{q7Inu*iIotw8=Hjq+#li&E)*eGbB0vN^8P*KClY#2Y6-{)bbF3{XA^EBpFVuSfe79n^A8G>#TzO8>00 zC5Qg7eQ5${8l3yR60q3T3R`V&nG9X5QN?kKx$`N!Bu+z_n$b|9MmSt2^Rt!Ggxqf7^n`8)~}u2QPd{?T?nlJ;<5ze&^*wZfFF4&HnJxdhF zcG@_m>6oYYXkD=4eW)C;_WCw=yGixamVq~N>%;5Dh}r7cL;!AspZj`p>zwF6osv7R zHpMR#*1>Yh|DY^TM~!JbepvgZ1zMi*TF`(2`8C@&J{CsG#ur&LiBO*bmnb&#?bHQ# zO(0~rbu)S&M|m;!W*gO-KfV6#1!$`aJi?}8b?o8a_}<)ATKB$q2>pw6_=LeV?aR*=TDFV~FMj(3!7t&y)T`+4>K$ zu}T-5GQw5bqt(0A1q6g+$NfkAxvnudrDuguHwK`Xi)%>-054U}sSloy$v2zw*o6kL z_a`0<9?Z0h&a^GG?9(+nYNu-~pSw-o&?MSXUR_BRc(8beOOpu2NF2mF8{DyUhMRn~ z$#L1)Hr4HAGiZPYSy~4~E5VEOY%AJ8IW039N6!o zv>tb%K;glLE+1}`kbcX{{~YJMJVAoooW-|;Iq=m|3y6eFjo!-knE$nhdq>-OYt^`` zhf~JZyOdZ#T48fs(bGVz$nDdCo5`*2n%7|)4#1QsFMGwHwW9(aM#@o`#W(P#MyNUA zYMw{(UvUC>Vl^Dl)j%dBGeQEHNYQCtxIO`zrvog$cr0b(Q_yIbdaQQ(dX64=?RvS5 zQc3ufzgr&WaXACL_v;{kT32q%AYYqSC}wx~uQ;9oCbIs5I0?q4KxD{1M`5-=MjlnL zAL~e*GnhPLQ0*In{Cdxn=DR;v_>Xne4`8Y9~C^^ z3+92RZFt4#yN?XND}Z(%7+(dtlvGAf);M8bkl>bGT|&>6U<0SDH zunBy*uyl<3xFmoEI-yNhwIx+Z_B0vpkVO3M>2yE@n-8okuG!8Sm4<3;NYBw!f3xJo z@&GFgy@p6-)}$8q*GEd((1rz9?bD-aE&xC-=E+8GRrse+ra_$ z7QL{DiCJZWzzoBiXIThc9yMMrARJjs3>SY=?z)ZJUYSU+6Rn+SLl%ta` z|Bz6!fP^A;-Os)^Km?f2Y#UMh&I&_Ch4ejkLVWZ-mB{^MdU>NY~eM3q| z1;dwBLe+P|j)QpX5rXB7z>y&*cYC@>?^t&uLYuTZaNo*C5FI!sXNaIz+C@}KfN7aV z=xFRXo!cDbrowi(-4K)h-g;G%z?hZ01m1^7f86bV-#khry3Kg(mPjfOqLyeT2!-RN7g^ZUz6*(%zHsC=SU3}SAP zNSFS0je4rlefC!($Js?qI0tiY}Q9wu`&!FiSHfhTzTR>e7y*y*z$nnRxq z88M3D3T(E2aF~%fl>+O``ghZLwC)+X0rq@o}2N`@r15IR$*Lk;HN69rGCbjrjF# zZLzpB7VF!!3oU8P#x>FP*A;l=qnzVdZa~)9?JnjcWqt@FwWoK${4ZS|xqEk1FK^^(%jE*15$;yn=eA%(5+9O}0`>9*Do3-4 zI9*3=x=lY{ea1;+ArVUNAwvux7z)jgkIp>LX>d}5R4zT^`5&k7><>Plb z5dKL7ZfiyJyNT?UyDrq?4b05UET8xqn6`cb)19E7P$12~`Hh7?UH_fQ3+AaKD3zqVH!iEQ$iGvjglCJXQ+yQcr56t)BnPCx_U@W`P$d9!H>8fNDD4St=`v0f}BR`i#eC(Es+FG zUN==lVsqz*km{SNELWbKWzYO7|CN5c$<3g7c4Ogtt@cWLz9v?ca7-{mgD(qFzz(g6tgOLH2>?Oh4?^%44 z+XsX?Zusv*2m)!G;4mW(#l9$0{@cP82R`!CD5}D{T z2ejSVn^Oteyh6kgsXd}kXtUJtnYKUY#fzMe!9A+fH;h=MW$N3S zqb2;_Zy5`hF$YtJc637uxV!rp()qIpRbqN;lc?#rPX+jdMVOBsX43K9Robhdg%Ooq zrQXI#A3w3n7Y;3KU3cqPnOg2UEQrX|74$2)8!8uewnF-e?d;%dxmM?rEIJr?&syTX zE;OR8H1IGDkZ^?v;bw$6!#oZcQ2|u5D-~EhT@Ak9s-0%p0RfZKVeES>rp;TF(`6N0 zpUFNV)Ce4QE&M&MsZt0-Edy<2Vr328!)HA4@10~qlJKNPfLqy_Ux=&!3M;v3U=!-{ zzZl$m-+Cnay6r7|nyME<4+8>adZVU>u0?WR!%!TQ6)m=%`no!0k*>zU@I4M=dW(<} z^rcfr(@3=|D+!w`~U8vK1$>N%Z zm!pi`t&ya*@A<_aEu)??}aLi4PA9XHUNi2eu7<0S4v4dfPEd%+)ZNSh#e6D`W>XcU zCX5+O2t_U|TMYsK0^`)TJRk}eQEkWt(QIWr02O?cI@kDNW7X)miTxBz%EIl)CvLFj!>9GPB9>L)1%^yCFp#X^I>GLo+>dXd-huEK zvzx7lhc4^JAhs#wcjiu9d3DV>nT~ZEX+zcKGJPo~A}z+LivS%;8$z4&jM|dBDYV)jH|6Fg5^xjACgQ-$pk;F&$-vTztB%>=m0aQ95ZsO)^* zkk^YiPkp{txzPIu*v5th`EC?SX_qJ%U^3kXUh-6AjpLn|o_Lx_}=l+ptX-7z!N&^Z#)p-9&VNSBh* z??La->%P36-}`C4%$zxA@3r?{>mTa`9{H4(a>s#}Mm}3}COyQ@?_Y8P#91|0j9!cW z28{l~yNQy4gUJ998DLgeyF{ky321)IdMYk9l#trGwN=olK0gfh2RV9@HoXwnl}zfX zU2{j>08bvaS`+1oc_XP8v?5uLChc*SOIOu^8wRv#6Q=tf{M!uarUyW5mu-ADbFUWZ6EtZB zHsw@+0*Z`SO6%xuVE$U23kS5YPHvJ#z{MbA_XHPHS68UF1S{)-6d34WzaWH~|Jq=; z)L~d!^mM+@Pd|?i$aetS|8LIhpAgIoVsLDaF2$L$SKTV{s#DFCq*b!=+MS@$)WtDg zdwu86M*SSvGOfNzkmFnQ@TZ!2Ft*>DMbh^jkU#eLztMSEselvCZ`=}PFS zfdoymYdF~&5VRNr zQgjq&^V@P)AJ%!|%Yjs>6H?<8L?d-RBPH_MK;f#G%9*Yij_wyyQuHk;jM&gKd(zQe zL~EWCTkdXFOvo<{7zXF#{|2rEXp1})R@e&2%1p_wNr83D6S9|k`FXDsmn;39$?&JO z5#X&lI!MEK{Z`LRF~CNMZZpf9o=msT8U=tDUZ6-{Mj?)5Pov;@qAuF7uE0NF&S~AF z7nPR*I_-=A@{>}Vb?ovsobtAs$!@*z(sooSDdF$Egg<4mKD=-UKY+;G7AXB_J(Y~- z!f@$K&uH622*9Me2Xxn0Wr-}UtoS_tQ7jB-a=Xrr{SS_N=9wTd2Nn`@BH^Fu3jpZ< z)i?ADK#Z!dPlkj3qPhMz;R3O;V*eeO{T0_HLjD7a4=7as5yLOJlJC+ zc)$E_>EAPbzkGuapo0EE`waAo1dfScal>CofYQA`Qda<3)1C51QtZtB2@F@)IiWw# z5g_LN1L*A_Cuz35V)x*5_2(~Xc-YYG$%tLMMmJOCu^-BZ%MBNMFq*43}AryR#O zscp~~!2Dm59EpN6;YM1Fq;mZS`|qDs7nE*@!+T+ulP`qqXSR-2j(nj!qyRVs*0KUN z&-D5&QJ0)}ZqLe5sn#2tfHaycnlmR}h{SrGIv~mO7%VVyv1+xL?SBH{ziG_p>wY&A z_=?udW9>rLy@1qA!MvHS4{+NS0=L>*?eJ=Ux7oM{aMR>`R?$X$1*FQ$g0(LbTx0oH zz7MmYoPH1}6%EnDFJxUN!;S-Yz5~MMJF6ir0OGc?;O>{FYq)-Ni1}JUH@|G26JL#V zec4M|@GNK2BONoyQ zGqM|X?!|Q4QDhCL>TdZKP2Ne|ET?PuyG`+x~SKF zC5L>uN6U+^Gs!KPI!VN!X8!skZD)WTNife%xO~_PRcbgb5?3?7td)&@G&%7$g-@ng z=!20u!)YqD^4t1%0FY;f$`OjjK741gfHeb9`O0P(s1Nt*8reoHfZ6it7V!aXRt(+G z>S-v(TLO5e0$l8W$>3k+ApaIvMfW4ss=5+|ZZ{zD88|aY`A+H&0qse;*Q1!u6-bgl zCbee^1Odjx%{Ls;5S#wfWVt3xZ8TuB9?0VpmW2Ji4j=xkF~tV7-TjIYB?)Mwffn`T zzbwlCR!?7FJcar5>bkIWe;oL>#~I}r&*%@CEW=W*nsDb_2dIfNjRp^Ck|z5taK|0+ zN}{fFUydRmmuf5JjvUxX&#vE`(gqUC>M(#0(bt&=Ad1ACSn0UE&8YfZVx}&o`m=@% z&ieK%M$`;@4qhdYp$ zg{{=nqhQy10gc0o4dE{UmOa>e9N2S}CiSyH_{8i*?^H^Hd0@x@=@I`AQpI8n_>0Wp z&q>()P{r9CuE}}I1tR1;YV7%0V;I+?p9b_Nf^T%kJtVxZ_C^Jr+4)jt-!*ogZv`-t z?Y*>Fr5#N8+Xp~56D=~Z!oB%!YiI*QHTS;PoU2x_e`vorV9g#EaOl_kL1bJN-}E;( zS@@y+7ytiI{;OpFpUQtvefve8W(45C=v;_=Ww~6bGW~g8wHfiu64Rl47^y(~BGprQ z$*cc5M$h3A#Bu<_%s&s!iMQp4A8gciF)&}Q(`pvMucKPZ$8zkX4mogdd@KQ2mbKD~ zu=@b3BCx+xw9;1%^JYs$&Qbu*%1;}5MOKS){M`hdMW>0PE*(;hTuJBt<>_WO1H1iA zRtpe|+N`LtPcK_MPKM~_&ul)JFv!z0^dxQRGIe7wAol;3)VNpzkXjA0cFKC$vvXBj zcDJ(@?9CvYQ^jp{YLyej_UpGS4JbYtnH8}G-U2{X6SMGDb26&g?h3#s`~xXP-T*5E zZ5IT#S$y5u>p-rNa1OXC2 z@q8XD2#{`osxKD{*upuSFQ)IWxYW)D_$%{*%^rw~Tf%RP*wmkJG5VjiE)ZhxQo2Bo zAMzz0C>{+rwgAdB@v%M@tLL$B@AysOYtW`=olxPULnbOGd3#oj`Tm>c6u7Qr?=gV5 z-v>-h(s9a8S8fY6{ZOlw4`XL;>qCAq74%Li<(H&B=(e;?(E1D5o~&=l@VqWqe^_z8r$GX^yg!lLZ>;qs1NBLtir0ID{{K>Jel zH(zz|i|E%>5UMziv~3FkpzE|e^!X}g$=rNlGQ%fvLdvlnv%H|wbKPTBgF)xt9wu^EP#2QCQQjGI<1s#<gdp z17^XFdjerY+T_-;qm;&2T0y0%oxKpRE*5x8)I77|G~2d%oOzGEF&5`3FGF`%^-a5= zyQOIjXRKBZg}~uyp^#6yCV;Is3Be2I1_1B*fP~_~x|?yu#;tD>*y=Hsy$yaqq*!t4 z_3nb<;ZTl^*}!6n*_4O3I}>2@bQ!rn6Wv(I$(GQe0|jOI<=tQnAGaP z4>bvv;D)O(9O}Ep<*g`cI|E%}l^VZhj}=?$Ly_iLYj$=;{bKk=KVagCXaR`My{b6P zttr0-EBiB)kQs~An(cL2s|9>?l|A^y2Diym(&;gTa3wUVB8D(~ z2?Csv>S7dpAL<>5!wpDx$x2TkPtYdG)Fd!-PQmmiE**X;k+OTfQKIP{)6w};DS3_kxE?QXM6=8hA?CZUP1QNxXW73L_<4%;YIX63gj|sj6 z9Ctxqy`+{PFmdfw);ix=OiRU)O&^yy;bR(4sjOY%YPZ%sP1oX|nSf)chx9A}uKo5O ztq-XA%C+L<W!V<4dBDA6$5B^Ni$+ErdKP)W^VUwt$Z6fRBoaIz!{~@h6ZUFMiBylu{)CBo+Uo%leP1Vv`Ek{1s>!l|FQ! zXqKX*#Jhm*xfA?)-n#%cxSJVeB)==~7`DI4>DLqON4_7s3dHr`XbLD<5a3r!qqDey z#4AM))^5#vo7){CSVI902HK8v&t`9E_HKAw1$tFXB;sfiv!DoiWl4dRlW17BG5cb! z``OF94UuDrZ;RqO+c8%*27nafpx84ze$g?|*zns`>2SPDKbkfGz1)ATU6_|xjUEH6G;y<6C zT&2`tMJa}3Mr_9`NBGcEjl8^2pnsmTp1aGG%9*jkZLX`-;w3w(zagE5Yfx^-;EWW; z?6o#DMlPOjj8HVw*trBi5vt~Ykt6=1oVo=xB-|I+-v`tTcs(gmqIo9b3`?#Dj2>rM z!zH0dK-(tgoI&z+4$QXr?WcowQ%RX^xO?a*&rB0=^fq8o0=g(}+_r(n_HC_W1_z53 zTRU8@P53D`JYXrdv@B^(1Ozj^20CcQXG}mFrP0*MYv8x>rW>iwYo!_&8P--JvBBG} z4^R|S03{-OZ!r-=o#`#kct6_vWW#vYPYMyGyOTsMsnQ@aGB?Xn8mGIJF+Rlb6!eje z`t*S@f8c5FO=8;$a~<4XV5mB~4+1>2Mx&7SZ$ z7Zgq6r(^+{Jvt_NPmHl8^3`JZ$`PM0utpUk7;VsoadG}yr(44AvSU7e3N|YM2j}K0 z=~sEywz0ILj?pRl+mvU8&R8_XEy3x?xa$uUfbJbp5YT3AEDvnA>7`Y_0C3N`w*RnAvGDVyk^B!NF^`a88-A9!`=U!|)yzL=-#iCRBX?Q1ZFkG*@#DQ0`h%$l$0?T-Wy7w? zl`qlSQoaZWn(atW60nA5aool}k)FpgJYyHX5g8C3`l02Hqq}`K5B(F3^^u}%6PW%a z|C;qR?9p3!9B}Z9!H1AFrfk*s<73zAOv&<6y;7W$ZjX$-NJxs`Y37?S+gTw{0(zKMMZoHjN+BxiJb$;8aj$H^y$97@rOw{6S^|Is|Ga4Y!fn_ z&oW*ww9}ro?~h_`M!xTB2m1)YO~?>wO?*YJR2O|&uW2(No0K8AGl>lqCb12DRl9}8 zemR|NX}zEnyB)@A&S;dRur&Vz^w%eCw}N6ZmT$vtXAyT8-UpVO!2+wk8Q(?Tdd;eR z7l}vbPeT5FGb)Tk60alhnK!Yd#G_Yf>I9q8m&rhR6ud~Q54(1aodwTke4S?w2Ts=s z9_r>SeZDm)yc=RaupfmH{G7!8U?_xauvVWFztqP$OD#JqG;zLoK|(v^o@Q1L7nV`L z8f&cj{AQKQL&G2jkKtB{fa~iFY?$t$FwP!!B1e+FQ=`Z?I3`_!C^}eP0SWybfn2Kl zA9lGLoMVFu*cFa9tRt@o>59!OJ~MP)KEjX&*TA?w&M7PlXIOGHq-z%9GtGcO#!5aL zks}zMT&RNVZcxjV;l$c4nVP|;+Y52sbn5=vFwmWu*6`mW=POUe7TU+ganF;^P0c?@+%WHFmB?_3$%1MbzL^%28}IMI8os; zM^fkpFyjRneS=q-L}JU=iScgMEcr;Aa|}S+`54fZ<{KO_ARu^y2ph5({7Giazf&=` z%&he@?H+)&uU=WZ73>{k2ZtLxwi+;$euljSC16!IF$FPFK!Yj8U!y~w#`^}KLx8Dr zXpD0Lu5)xH)z4pBQ*({fFNZtM%0lMZ+afpV5JHqInf^(kUK{)EFQ?oG_z;MxA|>We zzXvY!CI(dUVuH!`=vF7&>!$=aJK2Dh)q-o-e@zna8y_${XCJ^Cw7A&Lk0kkr@1W6a zROu+m-=fPyK@PZB-&aBTvk!R)Svo4}PooJ8s)mLJ1950;l^K~N%K?8t$F376Q$`+eCPSYn4S%77V4QPjO?H8mB=XG3f!Rv=DDI#tOf=im5%HC z*+K|PorXr7edHGun3}=}Ov#$>;S!pX0aHHX%e@5L&G*}4m+{X&MlanXH8uUGJC&_C z|E8EI?aDt~Lp2paB{(pF2fYN*a^#7hlb#Mt$+W#>w4@sT> zA>hv9jvZO{54W3-L>m9&z`=n<1qSE;!zCiooiPGlME@{sz}VjmuWfltBlYJvd2Ms9 z{Ga{=2HM$q8u!=z@b`$txp3Y=`~Mt~Hz-ud{}r?q6|pc7+doVpiXSQR&kxj!Ky8vd z@cKhICCbsmZyfqvyB5;Yot|W|e!?lkkwOAXTxrR|U1{;x>>OSrao1RwGrw@S@;*#L zEz9kY)5uS%%P%t>^L2ZUe~BR;$2^# zst!EfV4)X3(PwNv4;?;|ZV`bG!OB_TR~WQ|yq0fcTxKxo0N(Q{S`hg~u3IVnEF7 z?}*9Na9?lLd>;*-R|}0&0NWr(xw&4t_)@KGeX#g8@fr8o7nI@?UTFD?-7efsooA~} zn8zf8<9iQxIdN)G1bxe?z1>zad1Y3XhtrN6_Z$4=2MX@H+VOs~fzExSC!_%ejrsNj z+j18dbbf`9qM@y5!Z=?d;t4o1Rssx`$>8~OppJ-qw$CVeF;##~sP%@v`0`0m9U-B; zMu5}vboA2W;J8PI+z$eE-wwrqE=xXfSZ>ao+jSR@XDy2CSQmZdu#(7U4Ra6e3ZPVuRe~|h*X;5Zg`7;-_BW)!V0eFP z(cf+78mPWUWrgEarBC%K{fsJ7UIb_dJuixFNXD18w4tj5C5*cnPEI?{gi934wd5!Lju(S?y^#5U#7w zOP0%9O<*$WV4bH1+qnzfjrTkJ<#E`uKX*zOp5>%Wq=$%}p4%M?;5kWNE>d^o*Q>_v zk`*-FyOaHlbJZ+TwLRz6ae!kiv`zniGK!U-83j3zlYY1Cko-8kOZTjKS9GQxUpzDg zh@?SIA(H!Xn0t^iN}~c!r+!g}7EhY)7}&j#&bQ^84@rm&HqUKdnk{;($9Vc$`%!IO zpcs5MJ}@M)O+3}y`=+mR`V_1FOau#j7f8=)vl!J68O%k+R5`Ru-Y2nDX7W?Fd`jMk z>43Hzh2{6PxWzZk2XoJNIOrj*CEC;KCnM0X-7yf!(c{T!R-B+XW;XrW#W zNk(+h5-b!I;&H0BOm)gg%0IVcv$YYs5SgdXOfN1HMR8gxLflJNv#KJb5R^a{RH4vDASsZclqiG*{C2K{0DgEN zKZv^eev_)D%e(HY_xEVQ8Gj$}V2|!>|H_Djn8buciqT<^off3Y?48lay^@l!@_-nL zyM`NH!HAYC{&?+W^8>HEy%{RSMJ*cQ%Z!q530JC5^cQc8&&G{x@vdFHeIegrvz}?@ z7=O-@nl;I_=(1eL{wMNGb;h3C;bD=!#J;)M=-KQ6pCI)?QM<6?k36RY?MVZ>?_uNA z$JNfm{jf-v3@C0lyOopNq&wM?@?Ca zu$K4{{oelgA@GKV2^yyHn*~$M0W=kvGIWJK6Q+r)#{6?)exq}VUz}UTwC$F+^1Hs& zTZr2SEl%1Oz)-&To3Y6o6wK_c6c^R6Zhae7+|ECIi`9-BaIl}eq+-Z5Oz79$GE!%n z_?7|xW4SwxgJvS}Gst@aC{S^s3GPNlj~s^9bC!5V{ z^06I%CI~~j*0K>U#09IE+4HttA=NMdqC+wy_?g>THthdJszl^63?=lf_vuV7zv_9v z*cTB3d3ujbLsgfK${oe=h~B5&1|utn<+z8;bOyy0{aNcwu8-|J)jb`~867{Db;X1< zD>#bU;83bN=~OxY26NtafBu9X3wr>q`gW{y1n40#0^vLDBrJx|cEXhH2Wtp_VST0!TgA*pUG4Xk9#(d7Sa#=> z#*a3uHnbH7Tdy~Es*K%v(Q^LGyAj4UUl>&6I@t7e$}g#dW$q$PepDoSKkMD--zQ?oC*q+bC_=J>4W(h~yAjBCXK;vQg_ZTGulEBoeeiT`eA2;J z3s$1~pN@hvU1 zB7RZrlmocY^y1p>lB+r==bbT+y-nUA`56kCT4|{gr8G=HRjZ0hQ<~Ysj8cbn-?@#Y zd7n*;o9Owsy2fnLCEb9Vzz|g-cBj21)QrpE&XR+r<8Hdd`A#;CiuaX$m5f7KDPe08 z3c?;a7d8n7O$`POO9oRr_CIcFb<_3ZC_@Hy`Vl!fvQ)2ePn7>%q*VPZmze(x9Jmp) zL3Y;q2InL6KH(V`z13kHUxHU3xglT56+Npt=CrD(M^R>1oebuq33AOIw@=M8CDO_k zdhWAVQ%B)h$v$#Qo9S$^I^{M;MT~d5xP?5<;egHNozswq@Ea8?y*jsZ9OHBzAxhh# zr||^69OeDc^co%&UKbA)wyqa%?D{jRrXCzFo27%~jO|)}bO2oz$vk~^J0fSw+?fkL z^s#2i@Dug03J5$sHGg5~P<_Q}O+lYLZT-R6DLhS`*jTIn{(CA*Qk6&$qK8^KEcAtT zOJz(40Rw8>pC5^uoo7aB?mR&`Mg*Pm4z=GxDq6K%3-feJU`Ni3C(Tfh5|1~R+S*%R z-qGkQGZ{RO#5LyCGY>8(X>&_D)VAtjr?Q%NZjF@JxW@#8ODZ5=3%s)Z=dmm|DL6cw zIJVV!Y0}j<)}TQS?yyn3l|SUAEvL|?B;a%07!*TiahU6UNxB6%gGaaOcD?hbYtuH{ z2tm`Cm7#tpNv1e*1GHj6{#-d%9RAp+bj~|$X|JL{l_%IM#yJsIZt&qj_R0qM6uJ6k zGA&CL_N=bS=D7o-;d&9!NpdL4a@i9M(#R@JJ9O;c~qHvv1_K`_^LtYjdcu^2@zZT}^*BB=?}47I)1_)%_w1E~fx*+^xATNI)c z2f!A5{1DSZ6{dbP!HTob_jSi%x0l&otujAGXD%iMfnam^{7UyL&6QsYc=DfsM3%O} z86rWquf_rN1w}9CpL(#gwe}XofS$lF;AcosK5VCHXHG*TcXx6EOV-bl4#gKRoxInDsZQ|&&2C=zw$azo99{35{Qa<*nMJZ2?Hr~3n@VY7GDjF)w?J+nH+@b-csCCCTrybGKKr~d&y7ooLP_AiRAfC}x`4MO_ge}1O z;;s3Ff1yfTKT#!xlDackNpdq?JH>C*WH8r|Guqgj=F7)rWo?iqLxcXDW%}M~9N`x) zZM(%za+WUsaHn)!;9$`iC3;NVhg?e~WizIbjvhX_eiIcv&Rg)-X`e89?t9bV5T6&z=saCH2#dTq92 zZcLfbImM8BiuQDOjAljtX#u&h#XMeyl^)hR=pCxNKF^p@hc$cgqJs_=jlc?5IhP>4Yf;;MO zvmgrWOtuG}vV+@S>!V6Z>|0MtkZ zT6S;Qa*VVcOTwStnm6+Q0aEg?#{NJl<;8AvLGLA^E)<1V=rlYf%32CVW*yzy-f+rDMb~XV%7DlJ{MR6Lh{h5No#mpk)TF<SJ?dIrPc%&<@yWMwd#X>ew@lHZSTgm`qQ(J+Xkybq0wCefVNP50rY5SBBxWilpvC!9Z9Fq00 z*aUQcp7dX6T)MOGLs6FD7cbc*j+1I$7&>^% zLiqCez%6|Y|A#NfP$sIkp`AU>>iuaUgv0sOX}mT7YOoo<6=xUe%R*^YiPN&Wsq$=A z)x4ajVQcwqd10*kL%DX2q*?`y4d`UUOCGyXv;D~)%RFl%IHl%<%Dz{9OpwKS?Hi04 z^bIR=XS^LMso&?7;y^*fijZK%<;u{Oleg%MP8^UT8f`gyfAsZNOo)jj<1PwDN(_4% zVUbmZ_Z#N?uOlWH`|}7E`Y$OkQ>-nr{?}1x`Y%5Lz{LQ+V13a7pe~-qH~l0qc&2~D z^8u9nid@EjK=6M@-|s+dFP&++se`489f zxBml|prs`y{67bzy%S;a#tKaL15y6h1mXV=X#)_af;UV-U(R{k~|LF zGCcP_wLDp?shM9A-2Bcp!@XA9aU{572i5CUpqA>{|KyNNZTzr-!ivM&+C2k`z0SMg zK7h|s-FtB#Yb-1{Zz^Q&0j}s1$nq}#zt8V|Ez z%T~s8lRgxLE9YQazUjM8SR~^>J^n9SDk!c zLR}kdEaXIHqq;cr?`j+W_xb-9x(>bDfiQk7B9r93zcVwYyY4i%oM=a$o8r)l=J9$;G8ejZxYt zO-gk$^>**g9-f+Ebvj6bmWVEdoK%{|;4SR~&<(ddHI_>5tDx58{SPUZBaM1}ZhXW@ zVFt?i78V6}CY1ECx_$hW6LehFyJjB`S3^ZMrssySmVE*DdD?ashlvCWl^zdMiGJ7H z^4QjMn?2`XuFnO(4uc*c6#i19MIHx zvkxCgd0rmj!0(tREl|jbQQjX&fsR!Vd7JCMOnz>+)!AN>&C6um8akcX8uFAWQ)9S1 zv1&CTu_f2=3Mq}pCj7pzNxEa$&4hB-L^83ZE6h2Y{}c%EU5+jw^~0Ic0hgeM$5kYkELZziPL@eU;EoW>!m+EvAE}0s<*LGa>cbBam1;yeseJuw z1Kp0&aiBc){-X2iup#ZS-CLcE6PiwtfDL3Xau`D1ahPpb1m&*nEwNK- zM|5c{n4i4fjwju`u%>u3p#u;JXmT?0)7q;QJ!Y7w9V!WU(QTb9nbS{LbZK3FI~a9NGk6FF;8O%zh|4;#X{ zq-&BBVy{QgMG#w}nmcm4)*`s$un{*OYBzU@*ye1D33F!B8h3wFD%*9Ocb5JNv7}nV zAH?(!(2CZec#8@`xaNCn7TMag3(<<=G{;!8^29s(;76|#W+Sqf??{9!V=w^u5b+p@ z^3M(IJnn;UFN(6ye#Hg}RY35ElD@Db>oylZ^^I@Q7WErbx6q80k;_rNO`;9^PS~${ zbdoo#{+vDK#XJoc&m0->pjq+1M}_QvcopD`pPmyL%2emZj=QzrA=3xi#DIYKm83Nv zNQ!I0<L@S7e|b-mrb`CA#7WFuhwxq&O0ha!W17=+i~TnK= z*V?@wAaB)$5TNFFbM(_d#XnLK<{!2m9*ROE4xcZC%+~I1DpOvCe2Pc;Mo3vn@n5$2 zwC&JNs`+uGZE>iL2P3ujNw3YC!-CSn+hAdPVW}xETu%6XW*Hkp()FRset7DK+l%fE zRy2&{5a$E8xN)eefQdX8n!vYTES#^`HRyqJ;k;N77t)?HeCY+6S`)oQW|*7o4mZXE zv-sUJ9>X9y@3yi>d@7c`fjje^s~%k;WF5SSUM_N-N)_6m)W3b-n(+tI-rw}svl+y3 z$2B<7k1XgeQ!W}8O2AnF%$XpYTH)#j#qh=8^!aDW^qwdtQ&2^c!^vFX>@u1_5?4}w zzRb%}pRwLX7c(FT_%7SY`Q^wTXrFc@B`Up4^^Eju43bXvR4WgpK!4wcr8yzV_a1vyU0o$ zSmL7>&J#G~ZH$wm5hd}%8CI#K`cM)S!)vJYphgZsYugI^V`4A=?_-nT@wlt zfMC^^&1Yj{%GNZ6aTR>6bW8Gs4aI^+b(-OVIT|`tY0hb4E_v+;Yr$g?^TDt?n!|c7 zo;4Y=@0IS(MO7p}E(uR(q!qi^baA}+b!_$3j8J}gHmG=3f!vCqKG>8nEFA1QfAY42 zO;bAGp`Md|J#&nh&TKsp*pSrTXKAI=70@9`j$G5b1dB`#k{2ldb~6Q*O#s7XL+}zQ z8~ORcfql+M;0|m2+cnEGeQ&zM=PR;MlI|j!l`q~a0k5A&(wZpW&d7xpIVDOlMtgMd z=NYNDNxoNeU(?Cl>`W>Og(GciCO@XA7QI>a+54OOnaim@oIQ*g71CZ67UF^%fpq)AKI# zZ`on$BG`BN<#C(j?39Ay2c<_%$V|cvMgx{PjwiNfB~RiPa#9b0gA2$}wu-76 zQ$A%6!*_Rq6-J^m|3YjZx-8_hQ+K`$neI&(tCisfD`TDo4 z_Dqc7pnc!Pei)^0rD;kEQj~{}Ut>bqUxA{sKaHUYKFZ)^g^1-a-azDrHCj0mE@= z4}xA4NChI4C~#7_aGp4r_I|=`Kg-bOB7sn)u;}9%#&*hp(+T8z9tA{*#j1dpV9%>6 z=iQbL>F0NBl)=-L88n$1;e4wll4qN7&G=z@|A(VwhAJ^jVlVgk7Y#o(j5?QpPf)W^ zLh&#Vf|pGL1mb!gZ2Tn(xcR3xDN5ytJ9tQq0|Q#a@0keMqCCmEAzfdR{^9LMun!&P zNi6R#4n3^N@YcETNICv+1-&d;2Cv;7d(-H!<4G9}`tEhGPcxZbYZa!b)Wud`p4wS* zr%9IlHJt6!HUWz~gQp5o&xCAjFJCYs^gx>#;;dO)sGedf>?(bF9KRrs5{YZ zfAF_6^#(wW#Dc8A<^C4xgOJO$WS`S%krBY@6h)>{bF2ME-BFvz)-4j8m$;Eyv;}oT zR{f?R<0bb-SlHR~;Ek2%3${5scsHCqk0$BT0`WKV-o_fEnr`85F%5-+K{tF89xjhC zOm=dU0|`s!e7q!UG^&4?bxX*VtZZFltJ^ur2{NeNEfAA~>b!{uE>Gn`Iw~ZFJ@*NA z&(SI|CGaY(xo2(rgD#2~^7(zW0R4jfbb()oV)W*}tAOd`l0OWVxJ2A(zoHp=_qOws z*SqF<5kerp;9ddUyYnWc}2v%Hg0dDz8_qzzCD2*gtB$RxDc5J5~m zZC%||Yp66EMJ3tWtgTY#{yyaO#Wa}H|i z(aHlR0a{*K!?0fT`gPxs>r@v(l5Ht3LZsf@>-JVs>v^sCPBk~_>2YPm0jGI%aG)2u z3xPeYE>Kc-3jp#HR_5Q&vNOHomHbR*{!;k2Mu9%YD@~MX zI$l#bD`UTN|AeytQpWm7NKlz6CdMlNe29S;70aktyng@#Y-|c1a-5awDoV2D7rHfX z!&Jce2!u5n`3C^NXiJ_k`kD7VddbLm!IV2kq+DuZy=rR~kR?F*s z-@|uA9Rlw<-r~Hk2p)Va{@CAq$F7}dX!j|m+`q5*lx2pJIlfjPSz7ZBH^9RPM)7rg z20t-$f%6#}exS|qn!BTf>-z>Bav$ca3C>@;YM4fJio1%HUsoZ2Sm3x#>sC|Fd=7zZzf3P z6H=3Z45`$Z4b+8J^zxeDe|z(%LW>i^|HU49S7o_YyMTytX;5DNqO-GeKt4*{C!*g} zGsj4kPUm##@9vy+Xn}S}bgb%A?Ht9B5Mu1k!#s7Vk_Wf0u_LXdcXmbHybXF%BDB#i zfg=X)@2EQQhU5=Sb>Be?Skg=eLz^4oPD2s2+{I$ozYw&#i{0ZzqI};$YP`&Qhi@*t zzUfE64S@yU*@LyaxU1kU1Z;JI6>|Lei|wzH8K4mvmT?o8+$sPLseUpPP&_d#OdU2V zL)#x2?{U+hI}w)vS3()0s6nWi3h4M1B%P*SG0`O-2IPSjOc$&;8e=XBb|9z}R*}1U zMeJ@yrSg|56B9)hUb{fr=-i$>c|zy1KJna^>mkreF93<^&qU;DmXm$C;fo>U%>Nf) zNMQoI0sgV|;N2bi$y#s$ti{*CsDO;-HK~@@Ywj)X*S%utXNMk`Kb%M9O>uI0KSkG{ zkg^4=9~$LI#cSH4U~Nl>i`sI7Vb6~0_#LSVCf^Mu9M8lIm_L$S#MvDV{UPFtwY(b0 z|JEro`nmTxe8(w`?A?=gNO<^lLa;SYZs%Iwa{jm$_qs=}atgz|tFk9^Z*z>CBA6(l zL{IOy{{}=5H`tu_XdL8thposy#Q<%oMSJ(s(II7<>-(4L->;O?6G$u`?Yu3T+j%zu zO}WJ_c5De3A=dz_=zkAA(o4F0OAx7k!YR&9c68VnZq`*|J&Xo~K@(e3mAmFM2YRQS znykZh-=7W&ID9L;zSdX0`M%>BcwhE0B%rUY0uXb44Es!^LxynA>}t!I61VSht_<>8 zFk~JAUi3=r78Qz;q^vjUIMvy5(ZM*#cnp(XOL0%c3ll-7lVPXn?^nkKad?gCq#}G4 z`-f%h+lwgYB{+_Cq;HC*Q?ojwCg&Ut%eJDSvQ%_{(}BFhX!lecNVH@cyze@Pd6Nbw zIJ)av>j#U3YtPYM(><=n1Gub{3Ac+HESlUiiCxkb-6gwjfvv72!S5{B+Mmy?$Ysx0 zsCc*Wv}F}GYpC}}PWYhIn-Kijuo$3({$}+nO#7QE${frpqgylPu;g`y#1ET>d($Mdo0i!!R(m1JJQy^VY;|BaVp&BkALt*yYY zqH(&S%ZT_hE#A?CLhg1a&Pw3mIuN<9bHeo%qV2Z=iwZys5w`8`nwy(;0|dmT$5(f^ zGi@uCgR+O~pum$j&~hCeIrO|b!4_T14V8NDG^;(anLGjN7IX;Nd;|*se~_d=OOwcT z`39z9M=%{x+Ra|<8RDlJEl9=e81=T8rd*%z6>ju3Uu2YK-iWA6cNyONrt;i@3j0t6 zC-6iTNABp6wD(KZ7O*GVUSJi$TTuhXU6WY5pK7jWR)M+~EN40#^$XjZ+SJ_!43J2# zvC+-=^nTTRsJFpDU)9J#(nlM0nq|~M$jSEA742+&X{XUd`kEtZcTUcuBCd6Lml#xk zHpq&0{9Nmd!+#XEe=imC_4xk$ZD|0x4q`f6{L3Yi;IJq<5-kGI^wz=Rd*D!IFOI>} zc!5u<*=_VMp%z;?Edy-oZ3>h-%fz-TL2Tw*2Wu!!>ttNGf*}H(e{B`6$nEj? zxb8e+WJ6@9Ao@!cv710Uo1f*`m!?HBKB>+~9QA3;q#}4zFVh z$|~LPNttfZx>gJeA~}jL4IC6K@h8{qrj|Ns$UZtx3%eIaKpPN6t-a8WgDp~8K3uXP za)#ilJqoz#rk$zavk@$a*ldphMVMBpw);fX9>Wi=FdfrEi^X-O+{(+F`QIJI#()49 zRJ+ZCW2+hgzMhLTkQs}QmdMWMX8W@Hd(jDXnrSu46|{AnoX7$5nZ0QCy!9rrgN?j= z;81gfflB5!I@}^RXv!*?EaQTI>b8;$d2K5P{EACDXpzsXUTZ(gI|8-2C|I6;ZWr&e zWI>tE$v{m(FLqVNl%FP>FKgf8!z4zzd|PJSt@v7ZeyCy%`~3eEawpzw=4%|lZEeG? zrE06K7^;&&RV}59WjJbSiAYGQw$dt16=y7orKm=<+;oerQi`fbY{l5ksFs9MRY6jW zCDh&;Wr!sAr}y?A_nbNBzJJ2+yzhB_&+~k~?+JZyA>(-R*5YSm=(m0>?U8dt(;1Yl ztxBiwd6~b{B96#x{ZS!iX8UkRp#nV;d&M9j{s9h_^85%+sWK;GN=6rP)?6=a^E*2M~#ET#Eaqrg&C`#o7Uj11xAGdjerc*~5(!G74&V(H zt=qYs4#nB4bFY`Hc77EKYQwi_o@}|b_P#<#Oo2~g*Q9}!r@l!KUI}jemCyMZ&`}Iu zuV5|5T-)}v-sDBbbfe4t!-BEO~DJh_b1QC+7|fu@s?rK8#^&!4;py}6E*>Pd&?ZhQpV=R_28KWZJDzx0%UXa}KHA@2|IkD0_O zUb^z>XkuXneb0z+_H;_-qG8}*xs@wJR)?Z1|R#)5qT03<>4QitZj4AifUavEyq_QN8E*EoVB=$k~e6Awj_`` zqPG7ScIo#*$zR;8G99pCP+<1ixh5zR#@KUaeXyRk*?*AI?oiBx2x>6#+d#Yj=>NhH z?7ZbTy{anWr$B`J^Nt#df_smZx|ON0&Y2y^W&KRlJhArvyVa#T9wqb!PmeMzSKWNM zwhgV~5PGnrFo5~V{PDVJmlT!G`F2k7^_=tyJ3JeodS+ky`o>^!`j2HFEZ`f>8?+Xn zLaBHa^a;xP9Z^0n{rJG-6kXp3RlMGbM$Pb;g=j0AB0v5td|=3KA4s8)C~=z80hg`Z z{cixbL^#(&@e~DRZj*SI>bN%wLZ#o<{`s1pj6svzvI;q-B{g)D*>5Cm!;m#b=e9dn zQ>?Z9B=uA+;gxNQZ%K%GcVX0g!U6H(vS z-@ADw&`B~zO0Uq?-uY<~n9n^5*Zbldtd@TT{ioOFWI#hC(V*s5rUtljmne}f$R2D< zo!&RbsYfb!y2kDrrBL06-9A}*orCoWvm-CPRiFj*ACxspI2xvFcNds$738Va`H_I;wwIw)B`#G##yuP z&;xoi$8uNO$w)#8AM4dCW`vuPTl%!?)Qgp7+_pleuL1pbkHKD_89%KAY-D({I{f|9K48Ymqs^={3a#5%4Q1 zRiI#ahAvP$X~=tzbKi$N5UvUC2o+gfwCZX!WiKSHhT8h%?$3W9*?GJ|$92JVf?L2V z5ZBga&bO<6EZa)`Gin%AXDF#cj>B=XGgJbF*B0n8O?h%eL^5Qn7SJICu1-Tarbs4i z)+F)C{mTX@`IiBRIl>%fSk+VC4u124PtnJI!pc^^Y~Vm|*!7`n7*t9vrBYJ<%8~zS zFB!U!E%5E&cLlr7IMca$KH3SX=CBjS>`2(1z0Nw16h?3&M!Vs!*IpysY$dm_4RVHR zD@tHLHI&tKt|5Hp@|;PD^N4V>7=3K7cv577Alq9LN{J)@Pgtasw73Jist3KF^Advz z`zDfW$(5D?1h18#-+W=~4_~VJ!2|J`RFRK6w(==e`Q|4rf&2$%`(+?Liw4Yh*k#OwN)kZJQ)vx%#lr(oQyNyuZ=P@54VW5Qw-^rI-)owPIV zYo$Dmjb`X_4pv|_v>ev~!&syS%J)KP&cM|RXivkc^4=AZwN6e#oJ1r+Xu-q9D5`ct zvab~eK(RyOK{BokA|=R!q=$q$Nariuj`xx{=#KyfhP!3X; i9+V26R+N?=5FB<_ryXg3A^0i;9tXP%w&gayN&f-`o~)z* literal 0 HcmV?d00001 diff --git a/docs/developer-docs/6.x/headless-cms/assets/webiny-info-output.png b/docs/developer-docs/6.x/headless-cms/assets/webiny-info-output.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8f64fcd52c677b9d39db6533fccf7f12dccb03 GIT binary patch literal 60626 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 z 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 aF~JQ{0p>9M6W4iw3u@=|#|s;;d;bD0B - What are the Read, Preview, and Manage APIs? - When to use each API? +- How the APIs differ in response structure and reference field behavior? - How to access the GraphQL APIs? @@ -18,7 +22,9 @@ import { Alert } from "@/components/Alert"; Webiny Headless CMS exposes three separate GraphQL APIs: the **Read API** for fetching published content, the **Preview API** for viewing draft content, and the **Manage API** for full CRUD operations. All APIs are available via HTTP endpoints and require authentication via API keys. -## Read API +## The Three APIs + +### Read API The Read API provides read-only access to **published content**. It returns only entries that have been published by content editors and is designed for public-facing applications like websites, mobile apps, and marketing sites. @@ -33,19 +39,19 @@ The Read API provides read-only access to **published content**. It returns only - Read-only operations (queries only, no mutations) - Returns only published entries +- No `meta` field in responses (status and version info omitted) +- User-defined fields are in the `values` object; system fields (`id`, `entryId`, `createdOn`, etc.) at the top level +- Reference fields can query nested `values` from referenced entries, but return `null` if the referenced entry is not published - Optimized for performance with caching - Safe to expose to frontend applications -- Requires read-only API key **GraphQL endpoint:** ``` -https://{your-api-url}/cms/read/{locale} +https://{your-api-url}/cms/read ``` -The `{locale}` parameter specifies the content locale (e.g., `en-US`, `de-DE`). If your project uses a single locale, use the default locale configured in your CMS. - -## Preview API +### Preview API The Preview API provides read-only access to **all content**, including draft, published, and unpublished entries. It is designed for preview features where editors need to see unpublished content before publishing, such as preview buttons or draft mode in Next.js. @@ -59,20 +65,21 @@ The Preview API provides read-only access to **all content**, including draft, p **Key characteristics:** - Read-only operations (queries only, no mutations) -- Returns all entries (draft, published, unpublished) -- Returns the latest version of each entry -- Requires preview or manage API key -- Can be exposed to authenticated editors only +- Returns the latest revision of all entries (draft or published) +- No `meta` field in responses +- User-defined fields are in the `values` object; system fields at the top level +- Reference fields can query nested `values` from referenced entries, and return complete data even if the referenced entry is unpublished +- Should not be cached aggressively (content changes frequently) **GraphQL endpoint:** ``` -https://{your-api-url}/cms/preview/{locale} +https://{your-api-url}/cms/preview ``` -## Manage API +### Manage API -The Manage API provides full CRUD access to all content, including draft, published, and unpublished entries. It is designed for admin panels, content management interfaces, and backend integrations that need to create, update, or delete content. +The Manage API provides full CRUD access to all content, including draft, published, and unpublished entries. It is designed for admin panels, content management interfaces, and backend integrations that need to create, update, or delete content. This is the API used internally by the Webiny Admin application. **Use the Manage API when:** @@ -85,17 +92,56 @@ The Manage API provides full CRUD access to all content, including draft, publis **Key characteristics:** - Full CRUD operations (queries and mutations) -- Access to all entries (draft, published, unpublished) +- Access to all entries and all revisions (draft, published, unpublished) +- Includes a `meta` field with `status` (`published`, `draft`, `unpublished`) and `version` number +- User-defined fields are in the `values` object; system fields at the top level +- Reference fields return metadata (`id`, `entryId`, `modelId`) but **cannot** query nested `values` from referenced entries - Supports content versioning and revisions -- Requires full-access API key - Should never be exposed to frontend applications **GraphQL endpoint:** ``` -https://{your-api-url}/cms/manage/{locale} +https://{your-api-url}/cms/manage ``` +### API Comparison + +| Feature | Manage API | Read API | Preview API | +| ---------------------------- | ---------------- | --------------- | ------------- | +| Returns published content | Yes | Yes | Yes | +| Returns draft content | Yes | No | Yes | +| Returns all revisions | Yes | No | No | +| Supports mutations | Yes | No | No | +| Includes `meta` field | Yes | No | No | +| Nested reference `values` | No | Yes | Yes | +| Shows unpublished references | Yes | No | Yes | +| Caching friendly | No | Yes | No | +| Use case | Admin interfaces | Production apps | Preview modes | + +## Finding Your API URLs + +**Option 1: Via Webiny CLI** + +Run `yarn webiny info` in your terminal to see all API endpoints, including the three Headless CMS GraphQL API URLs. + +Webiny info command output showing API endpoints + +**Option 2: Via API Playground** + +Navigate to **API Playground** in the Webiny Admin sidebar. The URL for the currently selected API is displayed at the top of the playground interface. + +API Playground interface showing the API URL at the top + + + +To learn more about the API Playground and how to use it to explore and test your APIs, see [API Playground](/{version}/headless-cms/api-playground). + + + ## Authentication All three APIs require authentication via API keys passed in the `Authorization` header: @@ -123,23 +169,16 @@ API keys are created in **Settings → Access Management → API Keys** in the W - Grant "Full Access" permission for Headless CMS - Must be kept secret (server-side only) - Can create, update, delete, and publish entries via Manage API -- Can also access Preview and Read APIs - -## API Key Scope -API keys can be scoped to specific locales and tenants: + -**Locale scope:** +All three API types require authentication via API keys. Never expose Manage or Preview API keys in public frontend code. -- API keys can be restricted to specific locales -- Useful for multi-language sites with separate API keys per language -- Configure in API key settings under "Locales" + -**Tenant scope:** +## Tenant Scope -- In multi-tenant deployments, API keys are tenant-specific -- Each tenant has its own set of API keys -- Tenant ID is passed via `x-tenant` header +In multi-tenant deployments, API keys are tenant-specific. Each tenant has its own set of API keys, and the tenant ID is passed via the `x-tenant` header. ## Choosing the Right API @@ -155,59 +194,60 @@ API keys can be scoped to specific locales and tenants: | Import content from external system | Manage API | | Publish/unpublish entries programmatically | Manage API | -## GraphQL Playground - -All three APIs provide a GraphQL playground for exploring the schema and testing queries: +## Response Structure -**Read API Playground:** +All three APIs share a common structure where user-defined fields live inside a `values` object and system fields are at the top level: -``` -https://{your-api-url}/cms/read/{locale} -``` - -**Preview API Playground:** - -``` -https://{your-api-url}/cms/preview/{locale} -``` - -**Manage API Playground:** - -``` -https://{your-api-url}/cms/manage/{locale} -``` - -Open the playground URL in your browser to access the GraphiQL interface. You'll need to add your API key in the HTTP Headers panel: - -```json +```graphql { - "Authorization": "Bearer {your-api-key}" + id + entryId + createdOn + lastPublishedOn + values { + title + description + # ... your model fields + } } ``` -The playground provides: +The key structural difference is the `meta` field: only the **Manage API** includes it. The Read and Preview APIs omit it since status and version information is not needed for content consumption. -- Interactive query editor with autocomplete -- Schema documentation explorer -- Query history and saved queries -- Response formatting and error display +## Reference Fields Across APIs -## SDK vs Direct GraphQL +Reference fields behave differently across the three APIs: -You can access the Headless CMS GraphQL APIs in two ways: +**Manage API** — returns reference metadata only, cannot query nested `values`: -**Using the Webiny SDK (recommended):** +```graphql +category { + id + entryId + modelId +} +``` -- Type-safe methods like `sdk.cms.listEntries()` and `sdk.cms.createEntry()` -- Automatic API selection (Read vs Manage based on operation) -- Built-in error handling with Result pattern -- TypeScript support with generics +**Read API** — can query nested `values`, but returns `null` for unpublished references: -**Using direct GraphQL queries:** +```graphql +category { + id + values { + name + slug + } +} +``` -- Full control over queries and responses -- Useful for complex queries not covered by SDK -- Requires manual endpoint and header configuration -- Use any GraphQL client (Apollo, urql, etc.) +**Preview API** — can query nested `values` and returns complete data even for unpublished references: -For most use cases, the Webiny SDK provides a simpler and more maintainable approach. +```graphql +category { + id + values { + name + slug + } +} +``` diff --git a/docs/developer-docs/6.x/headless-cms/using-graphql-api.ai.txt b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.ai.txt similarity index 100% rename from docs/developer-docs/6.x/headless-cms/using-graphql-api.ai.txt rename to docs/developer-docs/6.x/headless-cms/using-webiny-sdk.ai.txt diff --git a/docs/developer-docs/6.x/headless-cms/using-graphql-api.mdx b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx similarity index 95% rename from docs/developer-docs/6.x/headless-cms/using-graphql-api.mdx rename to docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx index e356f13a3..42ab9c74a 100644 --- a/docs/developer-docs/6.x/headless-cms/using-graphql-api.mdx +++ b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx @@ -1,7 +1,7 @@ --- id: cms8gql2 -title: Using the GraphQL API -description: Practical guide to querying and mutating content using the Webiny SDK +title: Using the Webiny SDK +description: Practical guide to querying and mutating Headless CMS content using the Webiny SDK --- import { Alert } from "@/components/Alert"; @@ -17,9 +17,13 @@ import { Alert } from "@/components/Alert"; ## Overview -This guide covers practical examples of working with Headless CMS content using the Webiny SDK. The SDK provides type-safe methods for querying and mutating content, with automatic API selection and built-in error handling. +This guide covers practical examples of working with Headless CMS content using the [Webiny SDK](/{version}/core-concepts/webiny-sdk). The SDK provides type-safe methods for querying and mutating content, with automatic API selection and built-in error handling. -For an explanation of the Read and Manage APIs, see [GraphQL API Overview](/docs/{version}/headless-cms/graphql-api-overview). + + +For an explanation of the Read and Manage APIs, see [GraphQL API Overview](/{version}/headless-cms/graphql-api-overview). + + ## Prerequisites diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index 7b258af43..878e1f2e8 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -45,11 +45,12 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { ^Dr9?-OxOgvx0`-7(w(E@A>q+{mt9CLSd1ZS4!N7@=RgMS8DcV zS)g4F@6N{akp>`LNUW$r+lIjbi!@Es3sgYiF6Nn#pPaPAZtwOS%ujtn(Ub4+D_ZdV zvC4jX!xSN5AnG^(q|5}-mmdX2JgtWK@YBdu9HQHaU|DX%=B0A+@8XifEa`g$734kA z7`DIEX+>YH$qCTO%S#-3a2rSn{2K%EuCSpS{&lewFD~N7CWnA)H^4^$Y`3Xu?#jn@ zeGvrwU-jWmj6Z!ZFx=AKtatbcK<0iu!yOHVpHw}deEe@)mAL z5XQ`#iWG(<_=bI=>HyCh(=*(eX!wV8-;pr!h84=ke`%7_B+7VwDz7wpm@<3m>2qof zmAb*=?&tr?Y9~P_#2rghhz49Sf)BUx1&fA<(xW`YH~ful4)O$2$yn!Z$=-|zclj_($Bw4Ct_pqu@Am@&R?PG1XGf#c-m&!AjuQlW0pvd8- zkYM&ehMwWY1;gWg@Gz?wXun+E<(L23-#*|Uv&nIaY8@i+Cy!y`+3WR*VI~h2gT+Wj zN7L!xN+l{qX_0{#>SHerj!JP$Obk^y-?$CVoib%Ij-o4n&xKx7)4sDHCgF`$@;>yS zXXTaexq61Cl0H^}yYs!to28xsp4oY`r(&o!`4^O&HuV<;HoxbfudxNXUBW5l0GW*v!{bO36&8EfAbX2Ni}+wv*-Vp;plAg-|^{nPtiK} zzhh~yT?6(qq-u9Jth%KZ78W{*O?N{4qaW=_Xx%TrI5TYt}gY^!&H|V!9tL8N9yr>pn2u5C8s`|1WW&ub3Ak``0xExPGi1 OvbWc1Puj6d-~KnG_k8OB diff --git a/img_1.png b/img_1.png deleted file mode 100644 index 83690c7e7dc6ae396862ee690ad0530f92bcd01d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161694 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

8WU+jzq>SJ|pR(>z6xoH~8yXN!nO zt}W-%^QRR2Ch)1Kgw6L)pNDZ2TWsD-*4GZ%fj+)L8KSp6x4dBdIqS-wzOVM{&UWPL z&#plFo-=v}fu@q@ix6ltx%V+F zOQoHAvn9y{^Xm42`r1v^`YT<0G!rk5VSlBdX$dHg?8@=v#}>vON7k}vY^0rKcY7`n_&p9>x2s4<*O;oXw4?)*;%w=;--A-|76*jK&RCm)MComG&EsP|Ru1yg8A@ zaYDzO-3!M5@Y&tWBg|LJ(6kT*Q#j2qpR5Ov-eG#s6@2Q0binh1;pa-ceFaNpg};a8 zJC0~Zf>jx!l%M+A>SoHbB^Su!UI@KMHNI>~`B4Q*7gYcS_g;88*tR`eYm;KVG%63V zz%BhNZB{Y(0UG?t2L5d!ze(Uf&dw6RBtc4%gd4vhX1+ou5j>V{lt}7wvUXS{1ZwQ~ zCCMOr%Z2IwdNqIE{U;0&%8{Zs_CxEnSt2FE|a3OuP4VVXX(!Bti>`_XtV71Fc zYPaKSs7F(NSI5ixkX9Nc-@vQdX5x{lJH@GcpInp@=i|zA57+Y1fW*96cQx^SZe8cg zYGvuJs^a%BhT13+jPTmeIX!UWP30WB^n_)OPHm_V z*P6M%UmZ4m%`Fgh;dWhh^xcBa3YMg?;?WlWrK>hOgn+1^WWfC%yiDi(zM<$dz`DDs zQ!lVazI+tBij!O~aco4U)?mgOs7(dUe##7ZEz0EQku?fe7!WKp2v}}7uFzhf-=jtV z2WH;Nbj6`anwTk=hU~^(!(cO5@OI|G;ddj;$*QPR-GZof<)k$Ix3s_Mpl9)l5Z06Y z1+kCYe>up7D>C0?IzHt~`;DQP$De#Khc6Hmz6I6ay5JgEI`ttGcvLH5n}3*%y+vnz z%?$A8@5%0@rt-urTE@-aM7pfm^x|48^ou;C4ZIm~lm0x*URH5~uP2KtvcPoM`bZNf zor6JKaRbVX=EUxY=c=kj#r6Uo&*#G(fi6qrHxz+sdBtjvI8H*Z zn1jYOUxUeQ2{z4x1^ z+!QUJN<%7g>q2>_3hjRM+?p=4MAnfP+Y(+aYTdk)M_gVKj*|RJ?^R)6vt%Koa8|b> zd&%-w4^@$J>`mn=#phPoT+Pi-!?~y9d2PI&X;O_Wa9vQE*80bNlAVbnPekgg_(KQL zxYc@nKf-kS7oS|-RP_Sl`9_^sr2)GR+0Mg36wpH1*4TPWF0XKm?) zp?zK6cpt6-$PHF`nC@dyu!o~+yp`_;Amkbu)C~(Q|87&RV@BICIw0=^U5avLOj(k)~+V~rn@ zTN7T%Jx#xr8>$6_(xjnXoy^X7Aj)q={85^q%rrnJAq|_)mxeXrxURB;*N4&uuMbUk z5_e{HKD2*xIXqUXoeU-RcZ<*pi(2AujP;6UfeCbw%LTL{QvlcdVPMsDkdYUcuHjD@ z!I`7igP(elhC_uNH(FX`c79<3S?KKnVawCNK+fzPgO^-@zF`EBC96}{Fpd48m48td z0{Qde195veA$TsNVN$-oj_Kn7J&)s_IAjh$e!gw_Lbw!iN-tw*hcC~O*Nv0OK%elR z(FZ3+-Pef`AJNGDrebEh$rGRi);a-cis;|?=u~kGS)M4EuDaY&{a%d! zT)|YBWRG`^X{EtdGy6txxfu=8{kV59Ay=g{0XQDLunvDK$*?^wk4=!hCgT7%Pf4za zI96pQIvWVzyq8ycXqLyoCU)jXRDc>fMKgVrryk~ycyGjfSo`Y=D3q{vk00M(ojirr z;pr8Ub_2p~g5Bvna#hJ#=v2{cely_^pfOU+?TDq(i?v)o_A6rj(UylFUf5H1xAP^7 zL-@*88rONydUE)|ZyM|J(2l}o&e*Qhem4tPrE+2T#~jDy^@xyyh?#jWXy-5T^fVvF z4wUj<;O>*t+jPn30a~|`F#~Fr6Eqmx&AoWqV^^Lj_4A}&0ZP}zRdP*KgdV;55q#l> z6Q}20HAn?-q23N652;9cXxD{=#>pQtcK8N=LzAJM$xpdRV=fo!jNHOK+JC=@2J(r2 z>r3%}o&*A#vJAz7+yDlK#2cWOc9WHf74&%Hp|i?SD#>F74|^%c?wDzbj5EVy73P~o z6R{-i-Ir%F3?wLt_2koyNSXK=e<-M<$0Lke#~|ccU+AyugA&?rvEhdZaWha|-(c7v zNKdf+sqO1EIs%;2Atzz|wIuyq;1;P4nD2X4G+c`B!6|G+_+^yn3Csq zQ=P=(t&NXj&H5NP2Zqg4_albOr$@#B^52L3&Au>ZF$&LLJiZTD85=kH{61o#ASRLX z6JAq1^>6s7+mN(e7p)y^SnWn4N#-WISWpBtyj+=wa~jsKMfT$NxhRDXd4!S3w(dvD z<~;{kW#bQ(H*3X5aAV|qJ{92O|rRxiApb-IV>S`ICYY+aNhGhle5keu)pST_F%I@?n ze4kjwX<7CP!wLtvA>!a}B9ARqqtI-Sp}UK=!TB@@Li7JPd+&Iv`~QDjQ7G9Z*(xe4 zWY2^YQn|86cJ^LzoI+V;B;%M(D&rX0azgedj(y0=9*2W-oO6E9qq?rE>wUf7zwhmH z{*0X0cs?KF{>doBhOhHKQ3mrY(c^nR6*v89Bno!(??nx>docl<4 z!Q>A88SgC$T;NHR3a>PMxs|MIW4KTF_a}uNy{F|+_fIIP^V0~%bwCv1&oqLZkz)o?x5U&-R_564-r## zbW;LzfpL0DP3GCM`@7>RQoD>`!}Dy9k{c3bdmvj&l_>DHm_5#XfP)I^k8Y z!i|$YQ8&R9il=|ad+zE$DP66CacOiPP&>8D(KQt$S^}P}yYiZi(Uk#nipF>=1H@Ri zfa)5Fh~VEGYq6k3sVl+QZI$Pfbk6;wkL*(TdLNv9rL{3YA+m=b?!jJPgSNbAU_s*z z_h|S7i*JbQdf;lFq(%?3)WTT9ykSFOt4n4Vgc?Wzh`~Dj^9q2HOk7T6oFTG5l#?8oL?zEpWvWp%!?3 zH!!rTj-~eHb9a^mwI5o|`~5jJ*oA+r?uSnnNz=|7#4;=W_zuinAi|*dK*d~?$a(p6 z=#}BviV1Fm2BUuId&=Fj>vkC>&W0>(tqir)YYNz}^yqINDV~5*d{G( zp0Ywc_?BI#X#wj=VQE!`%dNAg`IjVmXMq;Y!_mmR+N;5q*bRM2Lqmmo*djh_SexNE zJ4|ZA77a5IZao9y9A_69J+!snMm%WOBnQPRg;{=#sM~hiCpT?Ec?dM!9mz6IVzFN~ z!CKI?obqrJoNAw|U-bkUC&|=D-WMv&g5ykZ1E5M#IH0{!0l1l_OzB%{NQ9#sB8FWF6Id9F!08SI=PxOd;a@3QzQ+Wx8%xz64%3rxDsl$z^x;-3 z_07Ur)N@v}vyTT54pH^SmDEdkjDtb?v^M(232H~mqH*ayq>Wd;Fx4Po0d#gneV>XC-xWQnqiWSuIHHRTTO>Y0vYMG2m`764 zQn1*w+(^)I>o|NW#Je*o-^8)F2^<2`&a!=w;()fIv9*NgVTz1-;zGY1Y!GNHsFys1 zTuj$hxPzEz-a4n2D_znVWtk^+bw8O?Bfu#S!B?sx=V6OG3HN#2O2d2d?QOFO+RNGW)*{L4g%6dnO zY!ygwYxN#*JfoR?(gX)A?v@oAYJ(8w`A=zLRhEx3V8}Ps_^$HAWfWef*9j?K)I8ew zVi33ztYt?nQBkn9e7$gKmPejkNm_863!nn~I%1pKS6~ygSqNL76w4qA@j+&^V`Pt+ zl6Yv+Zscz4HNx&&UV^<0xbML(gIdt17h2|uOq3;o6`2IqV?_7d4Xn_&KGsY+=%|{_ zKL>NXu!%ren5*=Av#pZb=I1YeUXQmOI$zcD>TcfU0s1qqAK34Wi!|ToBM*Lmf?6xC zL^F|=byDS`#C#2TScfh|ecEO^+{x{SvhF=9^V(m5G$sh1h{dP=VSb(f|1JxFRF$t{ zU>HDZmOxZ9+cL~g`a3m|k-~bps*=UdxCdsxYY;DNe}DecUFRw@a`ln(hg!5U0kdvf zsLJq<6RD*u9}i0R{ju>{**a>Uo(yE{u&;Od%DLIN zcw1?!l5}mi_$2nV$Zxbks3q~tKjhZj{u>kIr;h#COL(OP^xxmb0A6GR6zh5rzI{%* z+8L%a5%k(Ieh{bi7LNbWh37_`BmJ;d)sdu5PXdF$oPEtbP`PBz-2XRC-T#!F$7#7G zTyU)T{x43;Q_`NC-{wTz*41LhY+b44zaM5n8QNj=H*H&x>Rw( z{~;g*Du7*HI+V-pPYaIkNlYkvXjbXXG>2IR4!cT5|1kFs>EaxFOX-GEt1I*oJc zl|>~uN@fX9AB~fECT4Mcmq4@q=;zwH-b^7fgOeI%8PG2x%2_Tk7Xvl2o3G(0{%%*= zngRfkvjDlJ`xV~nab|^|VF;_Dtw*^W+N3hDU(mRuvl@u>EfVODUp_@}E!X)mpUuSo zd@a>lZgzm)vFxJnL0^y)arCCBV!E0Mk;k}fSu#dZ;>_q6&q}}>_z<)}W>hG2t+^{S zf*7>)z4QlPO@q&Gk0dM>7$Pn^G3<@`qJ&!bg%Uc~#B=UYD0wWssaPa%`m{fKr}{6j z;{ZwW1hgu5S07rncaGuO%c;dXLV#xA^I#3R??ERZrZ4c$8F0E3qkzvfthxVb47D-9 znmV@89Z#+e*zitrP4nV&?NeRyBg0)5eIWDoM%?z;3ewyz^;1_`r4jo(dYR2o_LnaY+P!;O1#_j6N zkrNGprgt6IS+YAMV!XJVNI(%lZrhk@v%AdhnHd+!A~Rqyq@i=yw%ej8K)6!a%Cc`z z?oC|o>NhMLG3y&HWqo#J7xsWIW|i=H3ZJ(+LIS&J%V!_fFSOU|&=%Fq)HUQpMNXK= z)m#$4nH%acn;(*jdxAa>3LtuYVUeWf2eU(9D{TIm`_Mxq&V|Aw7U`@dB@T^ zz!}D)L_a7R$ec;JaQ9z!KZp?p<LwXAaD~8B)s*LGH4<(Z3?nrO-^9Zi6t}ydCRkyuv> z%c=OXKU47@zM0TfbGH!zc*N*eGXVD}HqBXiCsw?j$C^SX(vn@$n><8nCDdmsZ(9f&h zbrOp&Pv21LTaeR9-Ezo>^sdsH3Emy$?@G1<%<=3XG-%!+5++wdOh2{2~tT%YSSZ|)bru~Zd= ze>`>rJ62l>&UcRKNF4~gQ_qJcjX6g)FUxUhhY4RuzqE&P%LHmqPy#68_5(VvF?fW| zjw2)apthpdFhZP%rd%!(H;EOw(VTvjWF@x_#7?chNZ;d7MM*%#Bx zUMukW$>766f#jBNQX$U1Q!z`3lESUXDA~3UjK)i$!B3+vN)Kh=&dtbzbY@TfK0d3n zMEAzV5F@X^n_r1E{?DjgOZ2uBY3thIu93YZ(}FyUOVM)4baXWrITt*I+Bz0k7n=jN z>hhCba^7)ENP^-3}^!j@~g={8L@C@5{&>iDxw zrM3M*_cOGm7~Z>+Yh7~%thdHbL1qM*X2v-)lnaOX8dO~ROmNh75{-Cd-x$RdGV;TdS;<+~r$_*WXKD_%G0ls%Nma@y>O=yw0+@=PQBOfUjCU))-keou_O zNx}a*RIxswt~q?tBzL6a`FBqi!IA^=2Oold_}X@y7YA+DthKXx@KY`7Yvy1BztKwW zy!fLmI%^&5`}j^Uagm~r`twldoj%VW4So-p~wt2!vXXuv+n_3SW^F%U0I_DlN;)d1|CKi+)elDDeV@;zqV zOP{v68lUT;M0P52V!0yb%_3P6wbdeFu$0dxS>m+n+rRo0P(7OJ>ID;{M0~eH6gt4n zt^(4I3CWyOT{~l52J&5%Nq3&HFQ&(whhgt?YDXM~r2idwAQCOIcqLJym`+AT$@6>j zHQSk#rxng?xT{|LZNp)n%)k!B);AUwO<&`=tytCJO0Md_Rn!4t*dsB0(7HP5ib%e@ zs0=*?kaT#1q-jTdF2O+GFG*6~??0N~wXTw&5_Lm(omc^^=A2J8jKL3-xg*|lP|v!X z=4xxq9<7xPXR3v%KU3yebYZ$weSbNnL)HC2uC%+-P*E0LsI@PyI1zvYrpOkOq{gNsJ5+0rTREeW1)hy)E87IuodL zKOI)q$Qs`b0t}ckl~0+}oLCs(XiL#4$aLpdJ&g%B-~Fz8Wl1yn^Yi6Va%8)d%~9p@RtB5YFB zmsa(@lLx$oZROb=Hb%m-5PiDlw)2n!pt^7gOoW?p`BN*0Z%2Wp zOX_mgalmj(5c$JcW}V;JRdly8={~9Mgg?cS29X*@h4(}JD_7BygX$L@NdsoAG-%_W zY;j6A9_OtT$+o_RLl91?umea~c>` z8&EP1G^Pl%tPxIglCeQfm)2P1WQMs$d=Gplb0L_Vz@bvHNXNAixTwe-a9=e?MALj* zvA2n&qA$+JYpqEudCs?%WEsc2EY+bweT6c3bOyg2uzO=3s2REl09HsRU}coP6)F16 z5I0uw-51a$29##hy6-qj4%dL-fugD2Yf1iAzwwQXbtd`^ild-xUc1lp^Eu-fowj0k zB-y0vVag#K)sl!-icJ}i=JaQnhhOIg5q9fC%!)3l8{7I>_Jc-HYnH^{#Va#9F7IB> zy3JiMLowL-*s+#Xi>;^-{~(>t@Vs>?Gh6nel*_Dh*|uV&DJ7&x-OmKkdXObSE1A0Q z_>XcHtnF%nT=1MI71@IQM4ttk7G+HB6{@UloNoGZS>5xc?A7mfbq#u4HQf>gO7C^J zhFQ?w?_+Y%=4lOKTiI&9&(T#Oj>5k8J@Y%Xjdf5BSQcLGe{`LX1}OC3_X-G{r7}2| zssaqZg8#Gr>e*#ZQE0u2kW=G=xco|KfOr)-iiNwCV#fz$#)p`0+jaN??MTC@OI!D8F~lY zUJ1C0s;uX~{=o00+@O|Q&1cd-X`SRzb^ay>LKcf$&X2nGn@w;N1n#4E{@2z2K6%)Q zFD*;97GwQkB4^(g8WF_rll8+(uf-<#DneJTZ~B+r)IY4*{xXyU1fAmyd+EM}d#46m zE`7q%iXsS^xID6zrThR+$u32y;id6D>+t|!wb1=+qFmeflqa4z6%%Azvz5-3nn`GK z1qNRCd$j^8#?$0{73FiS{p2A1Y>pjPI-6p^+1|8t)irRDauymyjAd2aI8U$=Q3DgGZ8y?dO2M*54&xQBX*e5F)wF&e=Tx5F1a={;vy`X-5-5<_5Z+23`-$J13+jB_3 zb*-_UZwk4&5^w3s@9e%}QV z>OGN)Zp|_4^8GHgR-s`G*m`+SN6=q((Q_inO&Q;h+ee9x$s@T#&xL%EsMW*~p00Gk zlYRw_*C3_uBbe*BV%`0Mrs$u+#~^}t$8=ksox!p2z4(HsbIo>r<}d^tHDguAkaIL| zb*#I9$CsU5!H2i^aKQ9Br~h)Gr0duT`xu3t?|l}!;`u9YHRP6BvT={KJ(q?*Ap`eB zh>{*Ome6t^DaZ7th*@hWm$ctGcpmw!y&B5QaP|-(qat}H;m~uB|NCb6%TcG0&+=^K zguCub=#EIu-F$OI{7a6=3Aa5}&1vbSh8B^zVc;&g$m@Jj>|NA)nK|ypbTSulM5Nw! z7DYgyREOiPncZ{nY>KsbeY(kFq;$2_vCLl6>di69*+msL(8h+92fYSFkD;-2Z? zA5^z!{=zE%ZrcggGDrYrKT^dtEA21WnQLLaa?B1b&-loP8TfvG?%N zh7D=@<@zZ_%zK1APLPV{`d=aJpDv(ad6I(ve&RY`!)H17JmDPZg1Uk@7#s?Rw$Pr= z0K_(Jp@Z&m#W_Z%s^H1FcAeggy|BCbxP#ZE+DpcR9g~9^PeQtE4pPTSLb0_v{E<7K zQ|2ZM2QxltTj=tr@-QMPR?}|(;tKyq;P?T@?vtb)dG%gVnQ6Sk7t=w8H#si01Kd@@ zn_+Lb#BsJu3A5WQp$(H1aB@J-(vIL4q_)8|6bSqIv14Xj14ZB*b2KA&tG3S^9U|^7 z2Jkjnz}ulhP8UMYh5o;uFf#Ev4tRZLdStAz7{ ze*a&f^gq$){o99K1P{Odov1g%%hFf~7LKsz40x4f*jF%KjlMAlcQ)1V3i@7{U7wY> z(zO}&vEeYSzoJvh)K0_+G>EFA9yE^!SB~PdbuuNmcGm28mkC%`giSQ3+~ih@&dbF* z^(UveBw19LRsMA9{5_wq4N&-I0YBN5AAYiDpxR${_WAf9s5-qdY&&VkA6%&|O@=HK zn@fm%)h=!FJq!*Eli(smiKup>8{m5(6>jUd2S;z;GxBsA3@@BrE`!gNpbFfhmPMQv zjs3J<+IJxKwpLT{l;iD=ZH4ZzrJ60SO_Om^@O)H3ASM29zgiOG^1=_JU7#8IgJBe) zklDK^6#km(N9`i$&bUtQ$uS1$ZII00YM`{5YD(M#2IXTii5vON?gU^`M3_K=6W%V7TUSS&&%C4ux$M38jfhlq7-Sw9!t&JVaG%~*c*QJ)&fms z*O^w__c5%ArI?5_M@T8)Xrh;h1HM7*KCY~?fm&~zMXl1eW(1I`7^|qHT&k+FT$e#> zz)@yeIq|Br=U`YAQi`9+#64QBgONS6k64V zg0X;FcCJbamrYb;g-x{w>pNtCem@S zY}~)8G$s{`pU)rZ>ml0!aDrr_#K$K_n0Z z;K=nCcpTXN3e5khXar6+KTA5`YqiK*&Xk1;SXB`B@G?~$Z6K8}(y|%n`|RfOx|W}u z@1CpPa2Tu>%r~vFO%yh^;nPa71$%P5THZ0=R3AjGGW0NHn#uf08sh6#<@TlJ;$UI{ zgH^}(LZ+qNXm*)Ir0rg4OB}&)TRxhEWdjO`7}E8lO)mo7$)(+9Y}cM=yqXLKPB3y; z$y5N1&kXCLMu9yJmqHI_=)z|pZ*G6zH&-{NVohoD=h*GHt_R@nf7w$TFctQyu04W_ z6!I3jTA3v?OGbrHxSO?6t=+y)vo~8Aj6XoZj;MadywW32X2_#ezCWOREKFf++aK5_ z+rXu)fG?HU*eA)c`!wQUpwsMlT9xnLOS*rq-V53kS2tw4Hd`c0pg`{XBjf0L8B;_v{UU7lNJUv`%| zw&~dyY_VMzOo=!+cY5w_`;>BX5Tu2z0=N`zbI1>{%X@tR`K;kz1>j!O%`@wbZun4Z0>n446z1$?Q}OeUf1_RXQA&Q%K9l%C6>%@luG)%{kK zt7-8`n=ec%f_bUr&w1&(Bk$vZLhN;>+Qqq=Qw;W^p$?hS41wDjSyYzHVbN*UhrD>i)PQ%$l|_S3zw97$?)P8a1{3oSUH5aZo% zL|Y=9mhL=^oRUrr>xFk2sS$8;@mU#mEbgzz49@0_)XgS>en|t=w1iZtk%2Xz(Q^0t z&6RB@P#O0Tcbv_Pn}&})oqgDZOH~5Jyh|oiZ7POq!|0Tpgsg5ht{se<Rj@W1gMnLCM_A(@ikaZhi>Xzb;nM%nCB<(i~w>^Sc)%|CluQhkLmw+(L58(CiwM$2V& zSV69LZv(kK2(gfRf)iBjs|h(2bLHmh_-h2Kf={sjUd#BQLq1snN;|WY1&*3y)Az+) z>e{OzHz-iP6K>;#GYoqh2{~m*M%Q*nayg&XVsBtk&!$IxtKz@Z8b4aYVrGhJuic{E z2KY*8fdUvX;iD%EGb>>UPZc z`jbvOYnF5oJ5Z_OcAbyLW_$3kptz~lLWb9kVWvjSqe0(W9?m{3NkwDI^eHH@sbDN9 zcg&^Oa_cb3(tAWPO2zt69yRA>QZ-l%*rmT$gX{c(59bg)Z%9RmPh#)`yRM8jY8p~9 zlT`u8TzZu$=)3wJQ{1Pg6@%_P6$O{E~>$_Es?Ku%f)C zSWEqsrl?rM(aA3>eGjQn3=Dx^ckE|jL8m(adYwV3n@7j4XLndZKWT(tmG4|RpWmEI z+b=`le|oh$1_KY+UsnI%kpWkydk(VTe6T)qHHy(QSNu4o{X#2(@b?Gbo)uzXr$-~! z^SD%_&s!^j2939`j3wm#7>@R&En(@(y6)?+#?AGq1+$`|@ka(luWIFil|Xsb72chQ zcvl#XYt>afCesBY$?*|FvKJb~X>fVI+fDX;L(i)07<@Gr^kv@#|Jy*lO@)39__^Bx z6l8g`NSI362J2Mp)W9}d*Psc?4l34wRE%%rC-jYtk40Cb*~QT(1jRr>Cy76-XlItP zQ8ZLuQTWF3xXPO=z)482h-$^4G_b^!E0t#c=GU#|RRq2(i}+%$z2|jPz3_&HE=3rd zluL4Dgl>l~VIIZXWSP5+?;>I~#dCtpsv2IWS7A~pIsID$mvo^_^ITR-8G)6qOV}Bn z`X((&T{~eaUtbN1Fj9uQT)#-lfgkZCCoPi35B`)M25xum`#a*|M3u;f>u-I{XJXl00Atca=NA{m*5P)QJ;m&=Vvy=ze23$Taa-B%s zzyOTl$?kS0aX`?#f=^z)2^0;yO(n=1=@;b9;5DUR_A;Tnh&Zc292Q0V94Y!X92D{S zr-5X@m^)aG{u(WZi)3o)rP&&IGHoC(dQ1(meF2=9YMgsgjM(2`TU&P)vkKDAtPe=%S2h9Rr^SG-RQFs6V=LF%g{Y! zvwK6X@wVdGi2jYjN8e5U0o*oZuAPY2;&Uv%e)OPOg-8D$0Pjvv-%D^%+FOSXYDs72 zGuOI)LPsmu4dyfBQsF^OX-ZHYxDt=5?8id~UZWz??SF9RJbtK7^G*PqS@%QOa$BJ# z@6I|nAVN12XEdFBdx?aW^w?aOwmRCg`%mWK52G6+`ZZw1$4G6R;25LOBLMFL-<|3A zLFdiWVp97KjVk^%MHix12LVfi;r1U6ieyTbpUew4Qjt9F0_c;d$8zdAjBdeTvmkOXBLAy{i_=A#yo@YKde4x1q; zew&LIPiQcQ$cVIMRqSdkZ3S({n~T9k%n}_n$z0~Z(L777-6v{l&LFetc{xCo7tJAY zy{cWmPNYnj&Jbk{a^#$Fqv)yjfyU*thPr(Z3pCr>hv2H%hMHXj^d9gPb;3al62SHz zENPpfaLk8Ev|S-RUWxxkLqBwYl7^F$+RWmZqtx*Ifo)Hmi7jPqMLA9UIujqxH0e+u zKcn?g+?ns+uasI3&R*dn1`n0nJDSNgJpybf6cm?vx+#!&Rq1Hz5uVEAKWSKi>E@@8 zLnz#*i~IBOt3e-SP4p>v-FKR{G0 zKGaxSScDQoOduxo^aR`r<>{v5DU3zTSi1Ydy z{;4Z^*Dim~+`~cD59*r}8n;O}gWclMLkD6wlo;{tpV>vDR zI3|z>&Vf`_zdk5@e#aLOG<+7C*2-IS?H+4CqBqqz1-tl@UwU!>!l1iDP&F*V>`=-m&&$Hcb)O8=1NT|H(ra!t^*^n%By_LS!o zi_owpi$1gbt`bsELz2uyNP}Gx^4PT6b^Gr&**R~xC%&>0l>%J9S>Gv{*+n2;z80v= zd0qLsGUzy5)**5sKXR^*Wp$Tb46&CyiiuR3w@w?s-M*Ef^>DnY=`ZdiciD=CvVHg6N3cW79 zvV!AU_dWE0ol%XChF6+QIq^AI)cJVxh`tqn*IhKk2iFvpG*mgBuY@xvHYueTuLgEM z;ZSNYsqtu#>+>EB@K~OxttaHWzw4}kK3VEVn#C-K#2ky2d$k4?rKvCYCa&s6_MomV zhdQ6j6T7KdmZ<}l88lx4QT6tk%G!l?y}-iCT1^=&4V$R&r0fUX0oj)>uW$#`~`)4jL~c$-bpNjMrYA|l!RdE zt_`k?ENiEP3B!e>*%cBC5KAF+EIU<=aZ8n8juSZ|;-t7%c;M6xW`YO=yE)${Qlm(^ zaf{1*(vM{lbuKHvY=2fD7=0193dO-^-_wq1?bhiqCJJ<&=)Xvlqa^L`V0pstb6be| znI#e2Jwg*9Kk;=_G>nLbL$wCYv(6$9aLc}G4!ul4N!I*~v7LgYVgnk(A(!D6D4FHB zJYL+Tl&8izMIb=8p)O(ovR(5n39PVnt|L734xD{d4p}ce;Bf_9++&NAdV!CrXvuCG z++<2~Z{%nz<9=~dyH0652&zIakbtj8?9~eH>@X4kU={Zp{2uB_z?i!f4#~6(V(T%X zR@O$>JvPg)&Em9;m)SF=*W*p=Ze5m!qCOKaWyHx$PBIS-W(fv{+5==oZ-7T0<#ZkK zPM$0AB+>3RsxKR_q6sV%iA{ zlf5X=&}ABxYGf)CHPf2fJw@Sl>!wTlVm#A9zm}zj8gjhu8|#VKThwzmPiQ(jZwRhE z0H96^-*(A$X+_x9iqxQO)6PgquFc8SYIB!y9CzUSRkC+V5fTg#U>XZ67YbqrU&5^k zfDl|FVOz@Gc+c-V7GX4|!TQzl0s<3e$u1YfyLmt6)Rb-VJa2K8RbVR`pih7U`dakY)g?dOWfK)M2wuY1B-=KWYc|r;{n@v8qZw%;0Fiz zbuuCkePsTwsfW|Sv=kj7uH9r_I@)$HQxr3 ziRMYVwgsJ12eRomNon|4pUKr057n!WCv=yV}P;^+SEVHQ- zC9HFG8sFQdV=7h3*{PFrVh)=R2J}h}8^^z2E zag{h`+jz;ff8a2RmR*{81P;mOq(;)TJ&^HO3Z38ByQ}Lto2FzPr?JAMSIj`h=z5#5y9L4xuSs=I|i9XFkE?i1fC%fM-9;H42PbCa~l@Uv`YKjgUU<%Ax zQh*}WXS#ePHOp-c4!5^TEVfTD#9QJ;YW5nd73WQh?NA5A-F8y5?1*t$fwvwV`wH3G zQtyMV`Ss-?b8N2_f3t6WBX;WtbOwJ`sKS2zBc_oQhHpU!^}itL~V*& z0qoiDjw72s3YP52#})?btot!IE{jhZf_>ZHmBc-{tQR#O7gg!)m;wD$j+@El3cdV&L$)qLG`aHRZXpe}#rNimnnO&KhUOgz?8z)VSkz zv_w)9+}eqIM1px8<0LT%ZAy(RS==!hRTSQcamCh;Q8x*ieEf=%$W|;(z66OjyF@* zi6`PK1~n81N@y&T&*5=OV@x?rCr?o1?gS?6rXp|%>L!T_ctQY{0(y}-F@1Kwy%JiGdXP2ufM3hJq~Yl z)+N(9AOopUVLk8KmBv*Tb8}6H^&8pSzw+!Chv2zkB8SZE(@@BndjgKKPlSxiz*Q(o zon=3LYnWf_U1FX=MI)-;q|&S9V?bp86vRcAPP$wAe)Rim@3d_D^a*z`ClQ3xpiQT+(7IQ zr8(zb3QT_M{)0t4-E3<981Bpx+hEmd$CeJ)6>qZogV8pt?HFI}h=ccuSgx|OX;-t9 zQJ^-2wU#U{dn9ximuL@O&9bAqqM436Sfc9IFW?nNm9Lxu&gpYxZBo-@TI2~btf(E3 z-xLoZyZ-Q;m<2e^0+b$K#A?-q@#aDhf<6?jLyg135k%j`Oil%#_7&fW&phJWuMf?Z z5d%HzYQ%)%R*E4_`Q5{lpkyHSSBqJ{$!o}a;*(dj$t5LqZBQp`W}?3NZOkVS4vkT` zZw;D-&JU?p@^hKPCq6K7PDD)@2}3qRiw6BZ$64_&P;8P5M$qo6{ho(Fv84#f24$-9 zp#|pW=n#XUVZ=>D?@zQ|KZ# za^i#Q&NwAk)ADJrpnge;b84^NMTGw-TJ)GqriY2kxZdtih^ek^IijQF0QnSNE6Ho_ zhE3~1M4*g+mREk@(%UwDek$bF@!F(2xi{828ZaCI%RzQsljO=l43CJKnTnutje?UR z(M^L`>S&AT8E`_+JIQb6#8s#!m932fl&FKyIkm|M94JMhTS`Qk$#P%Ypo!HK(M-Xd zW^6`6!t1w!^`wC3k7=;5ZOX^Hk1PrViGp{yzp)Th)oe2J2%=rS$X7wscspv=uu>co56IvXXSp60%=|WGL$MP0qF@ zTVSfRU!Q_#(d06sZt%+E_^dAq={ErLLl0t4%K7$aFrF_i@qHk6IO6Ub%3p{0F9} zhg0p(i|E>G7D7r(C##BCk~8pT;!V-`lfHt=?_&W=aEDY|$DVx&n|SK_c9wYIN+2lc zN^g`x1C!5_2Yh))O8z6{>d zmT7OKrjemNdVphgCx*Xc<9LD(*X|VAuKMpw>&L6IqQBYPVzjo-pJm!KcUzcYw+w-& z>syDhwD;-=^bVBjeX1`Y8*4Y@!d49&wSjFzcl+OLF_Xfh?b6QqS(245)j) zz1OjIqW00k3jws+Lj(v(qOTj1&Qg#axE}H6{!$gMCHI&lR_+xzhs{gfHMo7tkafn0 zV1l!0!yZGyXwx&xG~;k{3D@>A&=wVtMkjkgE@RlpSOCHy-|Q(O46Nr@m^w9a{Fr~% zRTP7d)5Mxo$3p9|LiY!Oyhn&E^%rRb6tCmu<{;jlWEm_%x1&$u5<7TX4jD0iD#ZjN zSYJ$+XHduQR1F#k?f0c$Y=Zd-`I36Z3k3M=<+eE2K?9p4TK#~viOIv6`WoTmMc!4r zfelHvExkvI2_qLgmv*S3W%qk-a#aPoKY~dwL!h3oU&ttUN|sR3xxEG<@h#~iRC8j# z+~)=>k6j>?`|jtK_-xC|%KhAe>dd17plC>i93-na9jSGaR8I?@U)Nf@c)gbRG?K0@ z3FeJ**^nZCPV@URzN`&u?kC*bWY2kTeN|Qc(Fo>KXVC1Klid^iM}pd~&trohl$4a% zf_7~{%oIaU#{J~i`va0JiZ$qg7lq+<#DFLQ{ z6l%1GUfY8>eV5*UT%oq$an(qAu@hOyuE&AarjgYyZGCO|3CqU*FZ^hC)xrM+Km8et zL$$yirhxzxWpVQH@l2lmQuQmTdjpaO<@3+}v1xV?WH%#KCyADzfNQWLRgaGj!6r`5 zp1iC~27=zt7MM{CT(8GJHo}?r)HgJZQ-t<^GvBW63_(~@FKT~30=0MqBIjxUHzN2- zMiA^sALGFNMeu*PXht<{RaLhK*!4v?Ks;Xj@q!QZ`klW&%%ftpqV1x=4@kE|>Mt`i zW{{{92CM9yR3XO!my2-VI_g?uu{2nMd~%AIIKMYaChlVi8#0HSb0NX(S*RC1)TQ1d zo#l9Lg~ggYF{^RE5dv62c<<{^It>d#;;d_uXe*Y5FZ-iABM;CBR^Qrr0Thoz>Z6nEZ2vMNjp3G^P8%yYWoqy=lBQy3m{f$q&`NLtAs zXR8@;qGgw7EYsfpc4P{>y(Su;uFwnU2WsMeU)UsbOu!*I@8`7ov$(!t40S8UKQ4c5 z8}$k}ivE0>qvLrQDkdjRsL)_&-srw5+GFICv(w>9Y5xy=F0|H3!ltEGIRk-KT{+IJ z9+`wr6P#(sbhUuqoyPRy`eM9g)9yLrngDn$hFuD^Uch?M%VgA!&mFgQ%_i$waVds1 z0K;Z$+hKZ=KX?&!|0Pd9`b{c71p4@CiuL2@`+eh0SC1wRFQfFFC57_S&F6Z3uWOEH zGcNL20>FY4RzAiMkCN)ze}mBej44MYmZS%7mG^NOEz9{u&FUKpGoJDk+ADD>cJFu z={J>nFO8$TmSws>E|0byX{;3SrFP|tKrpV$c`Z9887E!b8+byugwNPne=|0R6B^0$ z%k}U56jc1OwKGZJyC!$gM^n1uN{@7f8wU{-rl!Wo?qZaOou;_mI4{n%aDLd|)p>Y0 zaASyN)=T@T!YaqMlFOWYJo@?>f(1@^1Xbf1)A5RS%BzFbxC`W8-=(5?Ip0-r9q)N( zvp{=4C$5NoBXu+H&s$H5mG%ZZ&6BAzmi)zF;L&cjGvc;X>UT38^B&|o+lVWD?0SLg z^L42}SJWMQ{O^G``>nUpkEnEusW4V;&4g-#*O8B( z!&+fRc*&T}-Wyg)V;QDRe???K_PyzS9n#~)@L?IO zY-{YmCoV+~L6-m!?-~;q24o&rONzRfy!sgGF%}l9oa;#WJ>yb#{tF1SExQBEek}2X zkf!8ouAf*Iqx_F1!e(Qf7vn3Yfc7-@*la1ajS%qX@V zaO@<*g<#5^uJ{)Dd0gKLOwk>;=e6;%gPoY~;OLZ^I2TUpqz0E#2YW@$T6QE!H>1Y-O%O+V?ivMBGOpA9J@A zgogRUzqj1PZ&+^?Z7tE2u1vc|UlE}a%qbVf91)tzvl}e*gfHU`7HaSZJ5sM@S8bK? zmbvCrWh_*~!Y7O>%?=hrkHMmmMHq{@W<827>x^eWcnAWHEWQwD}{FQ4_7xiOusO2nBnrAbRO2`Bdp{dzz_B%vcrifs%D`O~Q;x ziNEovPk#-k1R<~7`G66h>2|(Nt?5AS*xk-_I4)z8?b2|yq>IDo&agLX=+x|oHle_W z25*>ZakT6^{bFEtJv6Ul}x2Pr#d@|>> zZ?Li1xXuj62Ib77TQ#cW{R^I##D<@*{X^4iZW z*{M+{gF!Avg#M^GMbb$naI(FwuIB)zgt=nD25PkaHcu%(iQ0>6ScH4b|7`N2r|yZG zSy39ujcvuzaji7jzBE}=EBM<0x1*CgcKx{G`8Fa`r_Algy_M z!Eh6F38X@$WG3Mb0fgmmm=HE9iC@*A5coK+m;6iF*rLy1Qm#@?Ts3*E^y;jhgP|vN z2cuop=E=Kiwk#3Jg}n-hC(E0ujd!oi;+yf~3$<~|%$H$mYt5&t z-f29RwJa zW$Pezu>bbPd>KqARCb=yf9{JDjAtQ>{MSLKl7|Tlfb2l~)JyuDFei0CKfxS^ zfB(hb`>c;2Z)pB|_x6A4n68Qa*-tW&zJB^XpVkIgZ$CyO*G%~QHo&Ykdg^Ca)zQ5#=UFlI>LsZg| z-N^#4-Rqv;n&LY-fA(D@IL12o>UEwS!~p~WoAVyT&)xZHdua2kWpEs68Se7z5?t{f z#HMhvs>8Oelw+Lprq=HbsM<3vH>2TRC+dR(Ju|yW9h<(h*i>ibW#2N17^YjrHrg}y zi@ir~Kt1)oW9j63doKNdjJMR0@5fg-R00VfS@8E zNOy>IcQb-Y!_Y&6A`L?~%)D!GZ=dZx&-uN_|HezNnfcCI>%Q+#EzgBJTQ8QM&b>dP z9n-J8hIu&UK$l;=)35yFu@pT{x1p;wx;nKc}<$o`0~8OQgKC zbut^RXE2s>@9lpUE#j^62JFn!q@26X!uy{ntvoN)t$kL?kV#HeCyo}~>-A0FP46|L zo>5AnVoP2;cn7Z*zc=SmQ$=4jhw!|6kIL)8`1AjPY-nm`vj4o1g69p_Kz7EVCoXbd zz~jJplmkAd?7%}U-F1JXAVXuh+XS@IVefhqlWAUrM1wFLbLj4hYpv&M&6?Hc0x+*+ z>~-AgilPhS6wZ1Pv8%Obt!6d${Z>n-d}SpUm<Eb6X_c; zx9ruL>XlE(__ScV*3r@PPC_G4HM;v&JdYf@hZKZO=UK%tD3~=${aFEzwct)ki+udu zmiLLEx*at>i0lmyYPaQ!n|C8E9$D9MBjy@&UU^UR4D&7e^;k5-4Gd5X#}+yX1d|z( z3R~8LCZ#5;uZMRc9{lt|6X}W!rdL)M8lT%*T6k>lGjNwYBOc5;_ii;my$fsDyIZ@R zq3CpAxauA=wq|Kqvv<`>^j53hKOmESWfpW{;BgCoX4gHSNPJJ;h)57NEwo=>S2A6z ziI#b#25Y)+xBjS8&w6r>nl<4~u&f-ilufIF#YVf~)A5oxxVfaZaJ9eK9aaiI45jUt z%|(^M>KnRY3bVJ6$hFXZ=XQH?UKAW5iHJ)6s;_BJ%sNHb^-T7W#Q8qmTlI!nCP0ljE&A=H2 zm*0G`5tYDC3M(C1{EuB2z#>2(EGOJi2Ggu4jMJZR9EojhiKEm$CxH~9fD9Qz7@yn z!p>ve^((UFJ_HIBc5N5Hyx5w8<^Y()g-EP$$GT2D0=DQg$&wFyo?ZOR3r}X zi!`@G-T&OrO>GcTwv7u+KwA*GAwi7C=Y*qZL=I8K3~$gG9zE(ABu% ztE%A(Z^Y_%&b5V?2b+}cA>t2Tm#8Zn`@GRH{Fd_sx;-55X$B<>X}n*#n^KY-sYW&} z8vWJKSge-0zjjQo!W>1hUE{XnHjO%H_|iEXU|j4~V@$G2x0|jFu-fHE$smc^F(Z@BWTJhtK-_P^!hu_h7ytDkgp>m zg+bf=T4ke%@I>7pR{ylq#$vJtXVrrOLGI9&UhNa}%Je z7V)Z7sIgoa-z;U=JjX1ngS=2ueddzT=e>@8&)0`Zk0_8ZTU@sXsz|$MY7#hbdvNkI z+MEhFOocq$zX$!23v9$r!>dGhw-=*z;XS_I)dV>2tbD!OJMEN0<)}&GD_?UiE}Y9p znfFd|EUtdEy1)*neSJ-V{V3mEwIZNkt1q;eZ^0Qozy8^9m{+^0dBUB**B*6%1bBdn zGh`pZYq#&>9#k@Pra$aWlu_rTuwleUL<0t$xde|zg7crHC_?(3J)bD-#i-bIn`E0`5F7Z zIX;Drv}8n%;1aAyX0B^EVEPcvoNe`NuGcV$J|U45(J5iGzr@FZQEV`prfZLmfKl54 zszp%G9mB2HK#8jiZ^rr)1zsl!QgNoc|}Yb~Ip!*km?XikpxzM3a|knS}B z_J~rzl4ReIzq%99B+4$A9Z*12y%l`wjdm_TDRC%rX!B>!c;YE-xAqFWQD~$clyFem zEwqrdbZzAtPl?=B%P5W#aOmwDYrjn**~r9BgF4$BQJmL#Wg7&_YZV6!`$U(4~O}v2){HGx-7I74=biCi)O0$-Jtj2qJ%2pad4nP*NW19WF1lrdWj8uur>3Z8rRGx3m2<7m5ejUndLr>9bvyK8MZO_|9E~oB1`BsI zz(<<9KRksXW4MQAO_v0tf1e4UM;}#wa!W7Sq&rd2RvKn(v^@J7eB8C@%p>A29-f0x z4{bQUPfMhC6EzWCQRIKt5!%S5h!FI&^52|t1rPOXb z@%cDH=XI@8;o|rQE|v||4iYEOw0BuNdi`~PMCWJ}dbXUBQZdYh_2yBkjNq8JAq$1K zB^G|v^R-#dObTSjj}4l>TBCrUC&H#jhHX(}Au~-$vOetiWV~;P?CSUX?4UJsLA2-3 z2OZE?l}u8aMfA{Ko+hX3)U&$o@+qzUwVWf(Y{a>|=W6E5>PyuFPwpe@A^SeE_^vzJ zC+9+nJ@F4;zfUkblXB?ch-kk;x_-t_;zwo4>+KP<21l4?1^H&QpIl5R7DPBzecomx z7y7wZp6Yo#wG4L1GC8BK?DIsfS=ytfk4fUx{Xps!IMyN~vYNK)Hf-8kUnk(EtbHfp zg|^}5rE;UX<>%Gy8?qY`z7|v#Eu+Z zXOeWJ;ki&`?lsPE%fCBcF4n5YlixuEY*Q>f`9?c@(RMso3_}_^jTcIZ)s%W;v|zU@ zOqSi3TqAEL5*ybubuc3!U6C*k3Xzwfl2>m}No4rx@Qfi88!FI@z4H+M_y6X}EKb#Z zS0NNc$Gj6FTzxn%1e&;krgZ&Lt6!VXO<$&u=_+b3Zx9e(*ZgEj_1D;3!SH z*qS9V#kwI|N^;;)QJ)3XnrG2xy7u#`Q4+FbXN;tuGrEuvWB3IDA^h&upK?_@Fu$iM zz#Wbbu0c9wMD*0m@kw!*t$y(6H^JzDObtXLm7CK@hAL^iKGJkr=hw2zex*)((xstP zY!IwNRB`i>_E2BGCX2dk{n>P~ub?4b<*quV5LG32AEvw{5obp>PcIbDREQK=eB+A% zlGAcorZ>GYNOP;JGlGx{H*S&(9sgQQE1xm=%p~9-#3Dw?UK=~75OH9Q+vqF1MaSk~R6p9F}>9M+AjyqP>k|3C@9*Vk`M+((c3XDd!0&BL{mfgA2o4 zro`;^@!0{#>j4Kj{O;>Ly;Vn-vFuqCVVwJ5$%UoP=8*J;_xGJej^Q-UQ$|qwvgD`- zyYMqLPC3v|M)|2AeH501r>`@9_r^%KyQ3;@*C{;aiJWRnkcFgpYo| z6`2|POh$n_JQKkUGwW+VE^fOu=a2ppK9om`fw_6fB#E-fh@wd_P93dX4skA*^*=gd?pKCF0Vil+xQMECjW^9Rqe;0s zKH+|$V#{%hmNXt$vW1~D+P%A$&aEBG%h>4IuO6a~9bGDtC%ix^Mt^z>j(fw@RBsa& zrf^4O4+Cz?ljNjwIviY1V>KrO=JFc%e&_FjoXF;8U)RF|i(Kfus^pL&Y7NxfkYmTOTRx(&iwpi3vY$g&^bu z|7H&V0DyV_!@vWst4Dgh`SNG!3UCYtoC}V50TM|qoK{9H1w{Ej55*4A{SX0Rw)fT$ zI%eNCfqS~e&&s;rwL!DCktq5v=8%#piSY|nBQT)a*6dz0vz&SIbFkiOGA?HI+C_p& zEb^nPr!h&E&yaBzNxJKbg-;9zqhfBvw|Umm?=QyjsEZ9LqXb&8>AxyEZt+xlSFevv z3D3ut&UdyCT6QI)Y^>Gu51LKhW5AGDPZcmMKIB$Ob#4T@Fd34(-zGHW{JgIQg`1-? zIUo4}Z6aH;+=*T{gaRUM^%@pG2Vnvx`196+PGcJ{lH9hbEkbfdT!y{)G%L`Xku_>~ z0HW6~-FIFYx3nlsdjcdgHPIxA-QT4(=KyJN9EduD+(S-pRf&JSmAbo@ZznZr6iDZAA|Djd9s zNKSpB=jtLWf~v_6yxqb=39qC7cd(kb(cC;S>Qs)+gWAGqn$NA>cI2d)Zzu9QMR0f!|EGF}h`6Dmup06NB_h5cQfqnOlNOox(DVpThq zhMZar?IyytM_Esu#4`3)-%WpcC|}ZI*0%fkcHb#^7?#w}AeS&y&%&dL$ewL4zvsdd zA}_~Jd9fye3zwhs66>bW%k&Q*FsyJNK$ZtX70ZL$^Qh~!R@K>e00+5V$)9<{pOW% zsANTS^lj?rl>}u(`b|2EWi`${f{=C$MJYD8j1a*}zfp0Ke)~G)(yPpyx?BQ-1&pD> zpF*g}v?pqYIPP9Le&ceIfhUj_`+Gy^d~b8v0mQ3Z>*)b2)M+AL}i>HHb)Joto4f9tmPC2i=94_e7>rpbjB zvFn=hpD7y$o!g`!R3n|Z_q>4sYP{@k+VKyp94i*Q_7|MbdkOrYRPvRi#FR}?cJDy3 zm196Hk2{^{PgJOI0=15YmDcdf1tu>c^N?qr>s;U`?l8jV@v-MY zAkTKoOTx=Nssb&fL#|@f$1A+Ws?^Tbby&`1#DM_(ud6ffYGWrWS$%U~S1i4&HPc0a zW)qXRlHiskc4hCIdFoNWE1oKk;KlVXF3{1=vYnEX<%P+J?+pMPtU9siP6#%xf72CC zAhixWSYxnS*&L*9l^Oo>>vz*5-MIH~ehY8@;Y1<0)cA@&K8$(>csn?w>`xT|en_e9 zeEpdN7T@!F1R)YQq>AiT0mU6G>KaOQOGo)mixvSXwY%Dd`5>WG1ED#mMQ^mz_$9*< z;gd1J;~6$&q;73CxG-6Z5tAEGWuN~|IkNg$RHHcIHM&{?)LxAHpTEz@=T=N~&gBbs z7SD*rIh#h0L9Iv0L`;3`av7$}Z&w!-rk67eS(rne>Ga0CPPhO32QESTCAs)=Z7ui4 zpk$#hNw=&xwqN>uHSDs#5d^5%Z(e-uWk_Df_gL_gCwDOV`D7YG5nz>=Vd4EUz|CoF zM6awG?ISPQ!Ud7t;d8q{-(zyrExhYmCfD$YPr-(9|5d)=2o=6V-Q0_XEdEs&KKd%m zX^}bes1>4Ma)G7=gAd3SFv{9vJv_jZgAtmyBQjhT|&Erep>8{6M2rNN4A8uDCN<%uM={pG0Mho zNx;68FsQv4BQxq0k}HEs-l}jP8)j(GDT7phT}TnBO;XtN03|oid~xrV%$HX;$dbwx zv@2!gC=rsQW;tuNvI}j;axJ+ zvkFdby;BJhMau-RgAJ>m(mS$xoNV{}iq;evp*Ragf2hYlbS!bx|KaN_=&|IX(PIfl7aL6=2?biob(lH!Phg?+sgU*uu;bbC^=9gQ z^gP||w+Ez%4?L~Rurww>H7x!H)Bc+V>k_B0;qw5R(+35ThaYgA%2o-!eYlPZWumt_WmyS%V@++lJk z2tDcIOWCa*iyISr;R)1!4UJ73Sjyo{h{HX3(4<#XPK-5M<&FMWi-KZX*0aGe)3yct zz^%mts@9@yH&Is?5d6G3D@-|@C=@jDY>c-5efh(+n(ZvJ~ ze1J188?fb8XAIJ~w-2!@9GtYSKE69Ts)^Ouoc6DAe72_7ttQ%3tq*V7Bs0g{wM?pp z&-Mq;P4PA#FS^5kcq>ng?xErS_h5OENtL@m7#v@fh*kYyg~a|mzs}RpQ)t!yIz-#u zrk2{#r~&@K@+CE7h4+Qu9e3L#_yfbAE-YDdM48ym9NSB62H6?w@T=P?jE|N%zB&^L zE;}lVojz69dU@5XdECT)tAEhxfSFu}>HN)1Rv)~7LoT)6a7HHfy60=nyV?zdSgm68 z!*JuEd9s6*U}?k7WU1{_!EB2ev1na!TZ=mj`zb$klE)=zN+%`%E&NmyqT9hD7k!4?A{^H5z zqte+ow38o@N@A-m$xpupWB|_vFaN}3(?9~D9-c?1-=fK`OkgL_b5?5H1vDe~`OBOk z!E^#IJ10X*+UP8&zD!Dbf8EWj+2-3TUwNTRD}0CJZPw=*!8JY7nxP?Gu9-_|pe40)x42~fGtVU?T*hB{VaF9Dnvf1ZjnP9@WFW#?73(%Fz6Aq$bnZ)r!@?>fB` zmSJ&NF-3|{CG%SHf9)=WRwu6|xCY7rO2|sgaXNR#+KyKYn)yKSVTj0-%-9YW2=odL z4%`e8<;_o8F+mUiyd?N+%C;JPBJ1c;;@)?S^=Hi3iB{0=1s znT{#9gg>y(z>cm71YUD158Q)ay$KO;r`eKfp;|egrf;;#W-YLNj}_@*{Ydk#DsMCN3Kiy)A@v$w5C)n=KLzX506x$;1aMaXiUJUR7Dg zCTXq(dl!$!|K?_c%~9JLc?H_0n2MeUKaXlXw8}?>Ci3BwrL!2=aoY~!=HNyfDq93b zBlhyYp|tFObC?f(t_4&RJ+Tecv1PCY}^{9WAljVD| zFkWF;8LQ6MayBjp%VUyCmlx_?7wA6wJ#3@B2x)!89CRqwm)}N(s&YNS6-~8Vtlqwc z6?FkEgHa_6@RF2pR`tB%oihxbERPtzYZ6yEO#qFhDdwbu6FxfM=V><8UI;J8Ljk>X zK?q!^4@>`Pz&G4W%{!cE7WyCDBaI`S`0{2}HZO}4PYJIlNQP;X0f-?J^4fNq5&zbixk4yQxQN_myUi zhkDo@RQV+5SNF@F*|eUWS)%?qa~2uOTu3FgL!X6G;_c%#Z7e}$zgKWl7(rX(Wd9q# zvBTE2zRLy|i;B;9)5qUPIrO=~Lh-ft7n_;zo6S5Vy&hgvXLyC^+M;H=-D4-=n>W>Q zg+04*HTksZ%Lt_G*t=*`a6aPcwRaO#f%fl0>z%g@V76(z8&Gb;*9@wUmG@KRU^OKH z6n_Z>2E=nV)Fr8{a=K=1)o$6L=SM$jJT#c7RO9Oxphox2xHXGT9X;2cdtZ=xq-rN` zhKj%?Pw8~(3gq_nOX@l~c7(yCp;M0)>a}Bu6J_wW06GF@*D2Cxe21M6X1lL9I{-~KkZe}U zLz$F->tPwD2jGtwYQbW*p}o@n9oq0=cJ2q0@JuTVpZCDOwJm<8zUSs_K}n&f<1D-J zf&=gLM~Iq%eu!ComnGtLaXIPo>ZU8ZFhaQys%~V4jJ8m65dP@ta zgz*ZxinWpv?w2plTpGWi%`zh~Mq%ebec!`_trqmzj)+lAaQ0fW9CCng#>wc42W2$zlB#g~#zFGFvFfC^eH>)0ArG}|NTrAH(1 z9-}4Ga0K5hEemq-26o7u1c1u143UN=XAXuowf@w&?YlhAv51zUoMcPN3tgoP2}pv$@{OpSx!n?*)|v#o^nH^0hcnNlQuNdo~qt1g`xXQnbZl8 zXy6imfCg!I>bc^}ifISep`CvadJM`kkWa zyaxROJZ}kEiuYh*o4R&hnf8I^{Q4c2TN@+N)YR>}1X7B0{2(AY@*q`noI{gHX@oZR zBQe?Fw9~RjE%*@*4$G>nHNCW`I{>^&LfQDrzA~e-C(NHnf(VS&uY(u1LLB&C2@tajqIV8!R#Lb;8XqjcPf+82?j$9S_naGf&Sq8U-!Omy zK|WtfX7rhek&mNqQ1i*yMURJ7ddzG1Xs{>8+PEs3T_F_zeC^6F^Had|1FqvKfz1)j zU`PC>EO1el7&{t~)kRVlM85I!dohuz&hfIB`-k{$i2@_yN8ohqIGoitbBjOxV4MT! zJ+~9w2vtVF=itA6R37kKck%I?HYI1QyyUUlNG-dx`^UM<^jesG&a%8GrtV7A|p zWbhWUZ#72;^=>-*J=KMiF&t&`KaEu1W5Eo-FgmAok&9sSz~{5}Ssec*ep$sG|2BVF z7ONrYqU{u4ej?54SekYs^_~R>d3me&K)SC>Kq%}ALrIvD8b&|6CiEj1NT82$Nj1gC zNFx@#81B8fd9wn{^gk-HFYny4t{sED37FQ@RFsWnUAU4m4+zGjVm5Q|6L>EboJ$Uh z=P`~wr_q^1UZ4rQcxTG2((quoU@ssRL^AOV+e+FZFQpwhMjP&J;F~6DiAxS%bFg2# zoA@?Ah;DDIf5*0AMxXU{phL^i-tF=5d|w;0#`)zV$3p5iehshM8|j!HCj4la*cUQ%I69{PWp6k z)X)CDAfO~0J*nBbYQ;`XCWV!bm-17{X`>G;;u$VMYRc-WyJOiD89u0u+{uY{-c${) zFYvV^N?L6A5_&Ng%A%#!$SNEjWlvmU&?IGd7hHzNy2)}SODw)b)FGjO6;uL58UuAp z-9`mvC4-lx+!#exzvGT=qRL+0ykbfZJtQLiVlgiMiUx!SyjXNAgz-Oo#&^C!9 zL`{Vs9_B@H=$XIj$%!wpTF26t&Ln2qKS0VSM&$1x147=$FW4Z17EJ!FECOuoIK^~-xu)<)S9kvIGxpUNcb?MWOHkr~IHoGB zNpDfqC1`b-+A*)h&q1%I0xuqSQEKI6@QqwxOYNxX&_>O<#9RGxcHgJMecv~pER5`w zeD)7);~7u={=2zih#|Z_eN+d+Uck?>Y0V_(+R{*#Z5q1fzTaA0<*Ci>8U+;ipK4%w z5QTZ$=7Vu0N^<_Z$K&saCShLGB>8j zZ_PnI0~~~43(8UK${3sW#gri zjYV3A6JuiUVH(8Nu<{G6Xc#@GNMSZGUd_DxkQyc4!>JWv+JM9AynWht9ZYIJ<$Jx+b0iJYPeQM%^ zN6-0QN-EV$8<$o&QrS`v`PQGHv{k02uZd|h%7y*Kw?7FqqJQRT)(NGg@M3fc`-Os( zrYRmz$+dnfT}YQ>R}(R5a)2$oUI*S!E!}gUnE-nEhkhL(b)JV$MU!87AGFTrvdD{? zwl#Rng1*Ki5;u%cQ@t3_cIh-RZ$8q$i+lTaI{S{^ajcFGeY~;!8$i-oJy9b182V_B zEvGjZGu5gpAkK*frib<^c82!m{tXs+B{Q?fy6l_@#Liy2SGkAKn8n(he6-DnoBHyy z%*mMQ@3HTKT?>5Ez-6lQg8n}+CK4P;(ws>ai_pQQv#qB8=6lco8!$?`b|RjCn4fcS z$DUuM4EC-42@EP8hSIftpZD*F)pKf6xZ!djspkj@rp>xhKi3)&xN1Ey>cEg_~w!nh$?Wn>1t%$ zYrdw};PFknUXwp5fB=O+VC&+%urtbI-08!L>#L*Q`Aq;S?@oG70w^wA`cwe+Q1e4Plt9J2$5o+`94O?ne&Sr_|)mw zw!X)sU(2rxxOK=nKsbi7cFfO(xO|C=T5bRciaZdlqB%^KD-ts#kqvVhV_MG}JqF`! z4VsF%jn-@r%3Rl8;oG-lapbZddX+o9!V0yW;=B7xr;6^UY8sL$m)}Ft#g%bmF)NeH zwW@SNRvqGI+Vfx_5A~b<7Maa{S8s;2Y{?8Ouo`#CF@5|nrj@l(6**jFuVOU@baI`N zAwxPxSSc6K&>9%((^nN>nVMQ1WDIb#&JbnEgd}o-$-XGLV{Oe$Kgm-+MOcCRs^NP} zi|#lqHo!Acj`+D)3T|Y#Jg}Q+sZ@(M98(sysUFt z=o@!B8`}n5I=BaV{6KbP@9EK!dzIZ|>2Vj`P!4j?DNp&WPTv0;vL+k@;21#2NT+ng zPT@Fz=|_xJdRtAulEl~m9tb1^goObMT3?z2#UTiPoC2%wK%dWtEgmNT(Zbr!zpmc; zpg}*qKxi9_9Tc&X4gDs&b43tg3mFf?qnbLA>`n(jYUuN=7o~IyF=db}H2qkj}D4 zi|(lil^>4W-vtJRSa`JOk=!V^Vtp)#F&i+OTu37PEF-xTtu=}jF?g|)7FuF`C#baQ zo;_v6OCSlV&GG(va!Y25EhQ3Mk!1USDXIZ+ZtJMD(m};Dy0Dhni-D zmV`+tX83#1!3grCR`@xJe`e=w}z#8ooWBYYDWtwZ&YfvW~KQ1isPVG#Gn*hgy!OTZsytv!Q6K+ZR5CpVvyAbDUC?$bo?GTP4umfFE`*i3@;SF~P=Ol+OqnlY7IhW5%5 zp`1$qJ!k>|8bi;C!uM(?Hs8-9v*(nWs!GZut7-XA$*lbd4bH2Oh4c&7V_0KpVb!j1 zAI#Y%%Bu#k`x+w%d5Z)to5b1>PmLe|^ftX@%Q@%9KWUyo{p(v0B+DGl!(n{jDb=jF-Ft{6jq zU8JvDZ>&gQ2z2)>*x=Mw(`JH*D&s1etG0!9ZklH=ubbvIHv5wQC>F?Z-|(1{ew$PyXU_ z|LBPJC6ZaMBFKZ#A?3PS=0w4FA#+vG79eH@#t9Fzr#B9E=t?d#c zS$cS$c4jhnNoiU76&E-WU!{L%Fan`w$8u4Ud!TxMa@U1<;Wa^4!KtXam4)EQ61~2S zjcCw|xrnM>+Inyf_^hI~Nzq4SZiHgO$N;48MUJm>f^a)-s|>BpJHxT~ek7~J^Y+}U)`@B8KU zD%Ono7S89&Q~aaSYz})==73~n_n3yyrUcJ}4=?|#G+{I#CQ2O>6p#sbIZ0`$m@EKt zqpdZgsZmFEwGv=6A=!x1D!+g_x1l2~5!#MXb;hzKzuby43+S>(I~Qg%w`R1b;eO78 z9>+*=Js=ezLTDPCVBJ;r*8ML>fM%{_zQ3Neqt7(-y*D|{0n;G9CuT?P?H;tth@L|RS%YvV%2#%ovR-*Gb&mb^or)uFA zz_>e^Z>w206z>%Q8=-y6xZSbb`nB@^i^N0?Le+5bx<3xbhP;GM(a+M5ul4~yan+`5 zd9f8Yq_<><3>{aFO1N=N)^9)r&e_->FOb_3mYqnqOljhST=upQp2>utW=W*13myAMmQ zU*?$ZXWTs9fS_B@^3gRs>^58UOjOyQ&q2(y0c@hF?#Wrm-mMS1vgNg$?|xFn9q|r5+1plG!{;I%7BSH?A`_aNTeB-bD+okP5 zg!1>S^q2PX561X3TJ|)Y2w1D+8Um;3-w}fjIq0{!_Me{FKdEju$R+JO;mV0A2#%fM zI!_~X;Qx>~M1Kdpms-o*fMCp#Pur z`~NX7=}*xL2s8pn+izXNA8L-%9IOA6#~CD${?g(8$Hw}XknEoi?f>`zwF?QaKkwPo zYW`BmqpJ$qTyhXb)PoKAfIql1iUCP{=s92Uy#`whE({t3y4o@O5m5KBaouPR^K2k} z8~|~y{PXPCwjTgWCtXp1(`=rT+?`R#Jl3I~nNCfc+fs`JURU$HEef(bmh>k3N3lf{ zG{2yB2i``W;}iK|RPYRj(HBEQinbNnhkp~NK-)GsVHs zGoY~EWpu$~b8t9f8@J;wSJ@B|$u4&~HXyIgX_&Hr->RJ4%1R{nMDJC4j7D&xJEwT( zvF4d^WXY=o;K4mf%`?M(o4?Hwz~IggIi8YQhs`u%*s%)gKO?l!md9EO0MmR9?|J2I ziLmBRd*8XokBrBb9VAm^tRS6BlZmI1#2pB3CY*a~cbC9r zc1djv?lJog%O65pPD0{=$JNb!J_&P-z-;pm1~v;Qq=x<#f^=F<*!~j)fPJI^)0pO0 z7_Dnq8V88GMNWP!|0B}Y{~AOUXPtjJPNN@A)6R*!R*M~!rK zzA$1NbFi7~sDY2`ALXoigUw}V^gNaIdKs2Rx3kk6NvN9NeB}*DPHf*;3B`_zzx2$0 zb1H}e(*dDEpkTBaXBbSlUc;AxkV+1oTLF;zJ>b0v(27$Yp#xgVyQHF%gF@S8ra%fN ztuFo<$Fm!Rfe8*N>;yFeImM{Kb-?#;d%1p^z=AzIP^an>^qu|;;N-^U`Z>inkRDEY zmc1}v5faE0`Qoj*m2rf1WMD1oyFxXuMfkrb%XB7!tAl{QxGU7var;x%S~*H(hR39f z2V{*^Bp(2Ea$=gwl&r|bzZ2bo*%Vw(ajf^j;^_u#0~Y>20^Y#xFs)O3^DRso+W&h)L2k z0vHY-bdLR0A_* zKnAqU10D^^40zmmn|`GJur;onMh=X%@k%pO?^f5&;#zhmls8s@vKq50xECWWD_S{E z)Jz$32=FDKKMt|V7s0RJ?##5bFql98h(A-j=p~qatUt>;VkjWcHF;byYn6+#xDBZK zvt!;`6(A0jgz}hTG3jmr}q`B!`7qDtA=nowCh)p>^3&7hYfYJ*y8I4R3!{iShRYgvJm+TGV(}l#$I!_{%NX1IZhQ9=aCCHekAXrvetXEh*y|$1=>Rh# zNaY-#vlEgGUvlnV6qH*MLfw?d|MJ=#(JkVwAN}5 zWOjth1}CpQZ{{A-hOX8})gy)63l0v15Jy40b1{~aLpHn~@MYRUsX1v`ctznWYBopV zN;*EZ(d9^&Ok!pxHX_XZcJ1B=oM#K<_kN?=bG|QL-^;J!ijs1WDo~Y@xLubu~^?YZMd#vq9 z%|?VzULOvQH_l@zaaAT}yh9CYO&g__Xo4&@0%IC8jW1mH3OpUX26ML3j^o!>M9BDF z$qGK9$d!coDhW)N{?)XQC)ryt6fn0#-_BR(g5ek!^^T;o=wrNfAT#K;v( zB<6)B(NdD*g~nMbX-~vGIV+V5kC~e9kW23s%&*)M&lS0(m|Pt-F7)!=5#5=c3BzH> zfYq z5~PTc#SnHMM;{d4nyOX-Z)KI#hJE$c04;kFA|9dp0;pHN29EPKF7_+DfM*AIKmB>0 z$mbgcptDEJT_xFf79?b;(Ur!T+kNh2Q*pw>-%K*^Cp?-71iYCn2MaUX6ex4g5lsZF6kB1trZqW_5 zm?bQ4oc}0CPrKCvu(q`+WWt^(&zCylTbC%lA9qGV=PmQzQbggZPVrnIAM?1RxCZ5A zr6q$qbRJ55u7TtqqVBHLNGWQwszUOXs}~zQ^c4_o##{$2y`I@#X&AZNT+WMXCQ+V| z?Yo4!nFQ~=PuEo%qrv+%;G4XQ&B46=oLs17&r`@pYHTQs zT)rB88{A88IT^5;! z$g+C=W~jHj6R+0i&gNY6w18_ z;hU*uJEKIbyAXUS3~nOD*%v7pfs5@z`7Km(8vrQ%m-Vp+idw5AEH zK^0#a*c&e!Fjw^G^hbL|>^RmAIJ0A9fep72oW{(dAg@?31~WvuHKld08JyYi7q;|# zZxHyl5@SEN%c+m8-b;lN*WV8gT28(PxEFDLD1gAPUt7|LxA7GhfCvpPefw)GM(fgH zjZwNlpL|jGp7A9Rk^CIXpc8_ats8_0?3*$wb;1aJZ@le0fBGKwrHobBHMP*M@Q@Dt z`>;nS;0plN0xo>DB##y6Yk~m4+;o! z5mgUNI5nSzfm!RZI&Iew?O}}T78U+fTsU@j@u5|z#}gVspmJBCmNSH33tS}f0s;H+ zb8%X+_j#Q|`hm;$zG)LPgP&WK_`$^3+%xH0?+!S{FG7^ue85+@$cYy_4f(Jl2C}+t zhk>|=eILT4E~db!SWLx=(OexyL;e1o*Lv(oiFM{)L5=GtS<$V7lFjKk;d>;#5Ud2hdayQqV&>eDY(Z0 zDRgJFe0nb7p|SO9`gY$^rKPW4UVc~2WgWfYuvL9z;&R*;Z=)rL_Pz3Gj&uB`iYm~X z+iurj$M)ZJWpoyV98;k`e;`CL_oz6A&hjH4iy-snsio$X34$#}>8$&qv=5w~G|&Hh zpN`J%H$AC*zFkT7umH}^Om75MHbpS_*&yNG-_mxaMjMvr{J+g9%#{h&T>UfIGqrnYM z+`>n~rf4r`EvQ0nOXuj0D20{pvan9_6|2fASC|aX(F8uD@k@;Pbt_~?9cIH|jiA|T zs+wu$%8m}ylX2gfhHvDk@2(@A@fY20?wrWG7`qk`r{tsSD3iO>$zsymJcsk=2g@#5Iquaky&vjp>U8yRlY#>HU z6jYDA(&^mdtdFvva+?gM_vSudXQXf{3v4nN@JBXUOW0mSostSVQiR`Y^n{ zR@3Pz9Ri-jQQt0iu(Y!XEPrFZ1g*fmi`KQyi~4*0pZasskp{nyjNj|v>jX&tJ);d` zq?7YSOyx(jZR;)HgKOlRRu3i|mIc2G9UTw%oEUGmYY&DE%Y@MK!@*c|!9F(qAZ|K` zmcwwbqYz$gkG9zQlJUf{wdU$1_g6s&ngzP1IuXP7iw6T-M*_)~1sxFNPOD4uUN1cq z$@)^pOCFo`zTMNvhjGnfn=zT3U$>;nGR5&*CprI#rJlJ)0v;7h5usXU6 z6oXOCHMis=54z=(p!#Q?jE&2^BC=7@z*=f;+kn|nzhEb~j=}wJD-_HW;x0bGVf6T? zI-}eMefR%I*_+2h)xZDaE$*VEP)U(ema>z5t0WbY6xkDFU$cgxR8&NZFeY0H+4p@3 zMKO$h>`RJlgDiuw{H`;qyL!LhpU3z2XLoYXIdjhSx~}JTak>f7+8<`r^Ucn*UAdM$ z3;3{|%yErtTQbX><|ENp+gfD2*yq*+U;zXZ+9K-?`iKj#q%Lcos#628To`7%vZ#z8 z+RtJUOPvH{mk+tNd#_Yz0O<{nW|x;7K`)esKby8FNX3A8fDUC=`$}W6>H+eUwD(BJO7m@;3?8wtxkvV7c1LKpe`o8p*|h_=z4o%7_x*Bn=((^9$QKuc9DjKf@6(MlkW5UMXZd=-Ww32 z^U>MeGwbQ{O;*Se{?~UK{)&c(?LKv+xP41LcMBCk_)Fr~@go{t;x|@Sn0WOeih%Pq}>bEOqF!?h_30|5GF0%#WA~)49`?a9L_mmC_hAlbjyQSZNaEl zm7O_KtCfatS5o$u)^Hsd=E;n_8zLGSlWHU7D;!C%YY#riq$AveI%TE(z1b|W*?4K= z?fS70wAPA^_gkk{LxN*)`N1zPY1%oJFCtcJ+gkc8+a2M$WC(M(u$4RdpL_27?{ATd zT42}4jfWndfslh^;r$h;yX3QOyD66#dgpDxn1#r2$5KO1PUv`37hk7S-dQJmZ{|c{ z@vB{n*3LN{d26@pMm0ljmU8BY@Df&Q=Gzu8zLc?vE6=JSw z^AMj)F${I%H%FyHX;(3hL%NlneB0SxH&~@gxwQxH@c6L5o4A$Q2+wEkGq#j-uP`v4 zyv?hWZq5D5U43sh9ijfNNwGLmIn^55NkrlF_v4Sj^e+j=tI3z6DX)MwM(}VStbr82 z%BZ(+)@{mJ=vWICldzG;&V9DX;cR6p*Xew_qi{uYWu$-gMVYk-Ythb3GMJPx*c9p6 zPhC_@om#_BN0PV?%xCuCl?c(KI&2xYaZ$o#cqLBHkM;(iK>R%qLO*FW`Vf++)4ISoO17U8np`H#h)m?>#e(MqYk23t-=293UEBap#7q-7b zyewAm-GN6c+I)lvff_1OXj>_(NkSpSvc@!6&8wfyq1BVGm3dGV7$t!ciFAzNs2wZX z62V2tdUh<$dO?p6GdL#sRk@UqJU-)l$z$YZVXmwGH}~L-ovKubLzL1?{m}zhB8bX^ z+Z&#o$rLtvv`e*zim9I3Zgh*phNJh=Ri@afW(<)&@sFk(8v9>;vnc%_f-RglmVh+r zCtiiEF+j8ShH1UQ4)32G@%ZxrK&F-5=O7j5qkpyEqUAjTSQr&d*GB~x)%WB7A_Uo-Zu9^9BfV9zM?WN|`1b=d zB{1#q`!mgozz5t<;BGycgt*;b-!*8;@EPE}G?odZbpMnz3X<^)HgNCOp=Pr#&6j_0g+Ul4{WLf4}8zO#ijuki4ZOe^{kb;6LID zM;Jl5PZBsq=8T)IQqsL^ z9qOiEcr-RmZi^r7H=6Nw%@KlaHsvuV*mxJZX<5Esw$I{-B8l%+k4$Qj)YZ4y%d2M! z@xDerqfCY&*i`hEt?)UXzo5~$hn#kltA}T$Z#T}{-#hiP-=badpV$+kERCO>8|2?) zo6upz$)dflTThT-qgh$ep?t}@DDgI@|t$-+8BHIH+Zo4 z`f8WpD;ce~mCND=|K*|CX$2y_$lKEr{?pCNo_ly3T1>G?FE?fDMe>7B&za`IwU$10bq9DA@5&P&M%a3I|lH}l+dHC|cx zeLF{Ot!n(iyW<(K13SXmI;vASv~EmfC=6P_@V(-4e#kt^uV2a{)tf;+Bw|&s#7s&o z+t}kTR|G?AJGw2o>w0yYUAswC>?=hqair`GbTYW`xjw8H>WFIA)}q%zUn4(lo^TJ> z;;c_6jhv(k@J)u06?ho}|9C&EF>7%Yq-@bH6TZ({03C)A&O+$mI%Gz9Q9JV=-7ej* zPmvSnFHmM{TD($W6d#^kd-vu%8=Tx*TJz}d1v5{8oNDl>bDZV4X|9O0USXp0B+jxi83$L>I z=lw^8(wDk#@m#qGh)V}F^V*r7FG@n7tM!Yl9q!B-8){75jGJnFj!Ts->vGJSXu_LL zOE}puWY%bTWwlIl>=I4_QDz4;h|l$x;3k8 z^vRy)LOFW=$PWDY{pq2H8}V2+@6`{>h0cC^2F?axSfu#X(;V^fb@z_h#RtWdZG7lH zS!ZaHYtx4^h>&UKKkPofa9&s1apY0!y!NQ}h$B72fw^T4&BE~TRguQNAfg&!g6jO4 zcjga(&qt=)JC_)XFCri~YIXaL!%)2_CiRh=pVgFVK#@i9UDe(V_s^W9(SzCZyx$o% zKY>le?i~Ch^_rLV)=P_8Jm-!%vU4Y&=XKf?bBR+a$VfTwd_) zqx^cwqHDIR347}91&TPYeSX8EN={vAUP&UPY76nx^0g)m zE-`ZG;?O`gs+8!_~@du|zp~ zc`H(DQL6I9bpFHJA9lgLdAEuW%v5G9 zyq5iCY&KtD({b#X8~6hveah9fjHc~2et|5t3~kv|uWMx-RIri)$}b%kCgt6}C7@GK z`&MQwx-!!=yH;MP$9$#X@I4>4j7PIJRdjyL(8x@k%jm^lqZe^Y6+G&6jOUE@X@LNY zbtuZI77}BN!Ujtg0}0M{jzj1h9}0v9<1tsQc&uFl2XP&iSoPOm4-Lb^0n3G+9o+s3 z&#M&@@KMyuyX)Wx{-XEhrEbsc_rtFsxHir4;q6tks4>hp$D5~x*sq`XlKOC;wVgK$ z1?L}4ra1_Ic)4h|ZK!O(@d^S8D!%}T1Xk5bAcFFs83_tbLJcZJWo$$4v4^)A7LJa8 zO|-klyYbTQOqSQe2abM85Hk=Ami)ZkieV^tVp`*CNWkFRUIRJyXvUDrGBR1g26-6a>suf#b~T`7{32tR65Q2&z$7*SO_w; z5fMgtjvl}d_udQ1xFTEOCnaMP8rUK#9jur+HM3`EWY{2=G-AfG=$UDb84fkzjH+Gm-W+JK;>UD!(~vu-j?QHgH*x?(KqzeqY?PzCA0RC}+y|S+gx6Hdf#9%f zmze2m;`r-DVL!sCr|j4mAN9oxAm)gVOuIMvAKUNNU=Y0W-2Int0>z&GYG$8b5G7mr_+^>ubC zk2vssTEv?Mh0P2Lyv~!n;&I8DeZ|;nBb;9^|)B_dw zK~|ol=a-wqaxGr%+ue4hNbN>=ru0!y^x~X20ziFd*!ZFSyj^(YN+hgZjLPg|FY)}k-@}&1L`_zt$)Jcjvepb=dYq?eWFKr( z)$wXXRXlJ=D?t^`u|jUQoaIrkV?2taxX$~F0q~L(YV!T_){5Y9wenJjAVBIBrCP6s z2SJ|@#1V6|SIOVHD7RuVj}52h_B<@OPXTx!V4nR1RJMrBh|y*_#TT3Gu0(D=^e zlkqA$Xp|?t@*9wz$-SFv!Rui_VnG6FE$Nm=Gw?iF2+Bb^=h@;>F}h^aS^U9?sBPMp z^oBYL?UgL4i>?p+2mkfRv~n%aX!vAtSuFGr(RHUCFoLHEaqjnZ0xxfBuVf{g@S-tz zH+|Cl++%{R%4Dd0{8xed@8waukLfBJryQKH@mgLCo%Oi;O{95vJn}BFlIik_13DE? z%Vwo$pfqK7a)CYi($LdURXR4=PxF;$-UXQ59JEvNiOMu*d2qWCp&JJ0D5(7F`tbh8 z1hZAF4|0o!%098f%Y`iDXcj1uqZAfO_7Fi#k^a)cXTywt-uXr+hXI4xtGan z%Y?eity_UI-Tf%Fna2EnG%r2Mx5e3@2Rr|CAM;uCpmPtlHmrxgBJL=Xp zCuuH|-)(yM+?Scq2HgF~^Qx-zO)qxs_}TnFp=zTd8LeVf^&Q`PUZ;Gv2k_nfHOL_S zB{q?o`{;5`yHMt*ZMQegGK_L3jJZKU`mn@`D9n2MVFI0eDgSvSa?Y zH*EO8p2T_MzA2;{(uqSN7ze1^)2Mcps*>*V=#9hA0MG^@Nu8XQMhz<#yU8$ z?rD z@Tpy1{Yih+%SMUS9UQ;WcGa4e4ht=-AbLySN5S$5`QkLQ{X;sP-F-vY{?1gwk?M;X zX+6T$;~Zw)$?ka?H+fdltv}rq{hxSeN8sw{N7Q`HO{=<)u4w2WXOb265VSr ziI^9geF)ox-s7p#2H{a0#Cfkz%_xvaI$Fau?OP`S{aFyb?DGzG( z)2k!aH$Mc)uiX%NH>cxkq0fD{+j}xulC5Jx3ZLMhG4X7)vv=havQT$rgfy~@&=k0p zevu+PD=9lmxzMn{U9<$hny4`JDU+$Wn%IuMR9?MnzjwYdn+L6IsG@RdZdWL;A&O|( zAz3R!aGcNja+mj7KJJ8FPwPRo;ntuHEakKw)4-;x!qn8XqEt95;$ON@6FEHTnwL}U zj;?x18!H`!zUOVH@BX4A+0&0qtCf->xHEgqV$vDv9LQZe0U=a}22@e5iXiX1{T?4V97@`gMnuq!< z-<}#O8``j_>-x=j2--pXTwUIQ@sb1qlXG9!coryw{=vY}^ zwZzR695=sM`HY1Rd4IoOLVPTLweu^n&waSkXMTE8mCUPcU`x!;D_LBvz93DMQ&@TM zdAKHJUech%rEVD#a(YUQ2?k`^LqorS{dL`P$zDoffjyjSg&n4Z!s{=mUk6Z16dYX6 zXn9jR0c)9GvXm{#D&>@_&HS~(G$%Z;*Q;_AFfFd~4IM3d`E#zL1k0Ur zTJ)wqI}ZxgcU86zzZxw3+Bws~HQtMq!Y#B1Z48U>4Vce?mEv;JHiRI?XsRjU^06ha zx?TflIDY_QSx}kRNqAW~sK~%4v%jDrepZ_lMK95eQ|`tmZN?0GvV&;3KkD{&Gavt3 zYC3!Ean&pgoX zj_qr3GR#RYGsvkg7PASgyW*<+M0#^ksqx1zt*gRl#~4}*zSvY=hsGTI^%>CKZ1U(i ztsKvzpl_NT8JdY-DeNpCK3)OvRft@<6r}TrEP*>hWaVi!N(@%RE^&#%`2)Un&iMECFT8 zlbxJ<#N0SlRhjQM`}U4XKc7zKANU~l z?!KLme~dt2-jEeO-WP+Aae4o!+PCgpBlp;(SP-wxU#$r%)n_c`_uuf<8=}bz^F@zcWC&&nDqd#YWO?D+VVCVxr>ZP4Yd?ez$SO5m zcgna}d0G~@h!21nMa4UT6ljciAaDCA<{BYi%*qJ+qs+$1G$qG={Sjg#?<27Z>Rb>D76zSCK8mQU}Jfc9zGF8TG-uX+Q z1#1Ae%^2phhOJeF{ym)uz>63nMr7~z4QDk)L^^f<9HCEF9p!uYtB*GXcu?`EF zpnRC(L4XEBYd0Ovdr#-K$~c;O{sn9Fj_v^Yg35rnB-3% zjPMA-L>D-w$PI0p)Gn}$V3xCd zrLC3G=!CwJj*cS2wx)?z@BD%+#jVY88iq3;Li66My4rbory6A`eMRos6MVL*{VdTA8I-K^%wMSb3s`Wh_Rm zMb?@*h5)L|#%qy^-9~C=^QEgmKcEWOuiZEDlYHxEg@W<%=B8FqF2-hv63E`)u04-j#L zh{^jT&0vjrT-${7#N}rUg)YQSv$(pKW_XX$S#9z`8h0R(h0-oYT7*7bb{n|NW1Fg@ zYgEmVzEZRpYf9W2g@FSRH+rCJ&C$?r_Sth{uYtRB_@0tkIT|;{xZ;RXe%2W%x~g!b z!@zUA$Sz6A1B)>6-$nOmo|_Rt#}!KwfHarvA$8~#)O9=9c_2Odyt@HLqH^0U_Nd|I z&$Vf~^cO$J5{*86zpB~oL>dche4~ZwnXheQ)y(!>erQ(5=B<}OJ~!1Y@+2%DJ$w)$ zb~LZIdaM|q3vTW6N!5rNgu%-uBv=mX-z$2$nX4F7qBiXmy!Q^g0)F0QVovMGFrpOY zM4%4J#!p}(f5O7+=uMS6m9_Q8OXsM9(>b1ggRUxoG5zSJ9vJu?!EDw{%!s!IdACvR zsii@w(lbYyRvqrvp1SZZoYeTr$#C|dU^fmM)yYYJ$)_#HD({TMLu{HV_BpXgh0(9b zdw^J%R=EIzE*s7#4M(rBzZSM(aW`-mDuLH`VSZJoiiTi+pHuGur=qhw@M+^r$t4@f+hngHQ z{~^qPu}vJV%TYepnApp&SL|#jzq;&?=Kl=7N0;JMTu{dI-V*|9VMc~L*t7T#s0b=a z$J|c-!35M^4wK{L>Zf?e5bAIBUl(kuZD-PkCLZ5A?n{^YtVCgR;GgG+Szxn^Z(xq7t-ZE_Dm^$BHd$lk9+NS6!kyA&PEEW}MC<1TZv5`U-`x~g!L;!O->X5HIo!FTm$7VL`#jA^PpR8;)GQ?x{X+7c z*rP-2TAWAsAy_AWWrEbbQ}lw|#gg=wlywl*1-9h5KZ33gH^}LP+*}^Z@+mTj9>?5| zN=vVJN%aZg{<z zSHHltmaye(tp3(^0?}*PEQOZ2)m|^l_U;6U=YU0M@oeMwCkT{n=qJng$CYYh`Ul`j zS^vUb2a$>iIM3i8DuUnPeNf|n23o4U&?k!DAhLJJ|Msh^N#Mt#rW7pp6<;aW!xyQ zTU^0kl2CZJFeI%8Qb=@5F@iV1gwXMZVJCv-TVDt+hC>Tc)RqLD`H-qcD`rzPt4xrl z9Yju=TCLF%oj{GbgD)_jsXi=4W}P{S;ywT5`MyMSc5$rkXk$-MJq-Lp9)=93=WvPm zH>p~449+TCCYm6^mK}mIN;r^y_r|$JSwKuyJXgX48fO20zUwxY?9o&A-}R5(fM3MK zx7hhet~6oK?u~i2eHMsLCzN#@nsPXch2p8XgX`E2+bn!LA2V3+q@gXV&vD)zG#c-0 zn{$poS74TYG?F#M%yqhzYg1y#Ky-|8@)TE$BhorGJyq$of>)ldmsto`%o zr9{C0km%h94T#Sm2_Ety=T5<=q_>6daj^<=tKeK``b>_^Sn0NVPR8bDuKzRGGT20%@|$| z@3(5^OA_?yVe5o#B#i+Mgc|lY>uM_it3NPQwu|FW{m|1?$a|ApIZFB$tv|p0_LIjU zUfm#luS<345dZL=X=CNb7aul#;^f%Ww(_glc&$2B_@je=3~qx5o8dP@iUw?~8lmtP zpZ`G+(2`t0@^`7xu}PYSY6Nd^lh)?A|Gf%F!hwL8+V-O3mv0Wu0C2_upYvKMjY0~(%sUB=_U zAO{4lBmd?IBd690`*jA_2k`n=cmBn2WlRo0%4@wFu6kWliFmX~KU@hvtP+$31r#&E z|AEc0bGkKuPAgm8W^1|YF}gV40kj8>xrHzuL>v7$8-Iwlu1R$+ml!rnrVB&!x2QPm^Gf%I)pqCsm_^hBNt`>I4G}UULflg zx%6Zc8>(?2$xGLgm}4z#80?`#Fi*29j)!OL5^mPI%yfUGfd$|Z%w2P|IcuwlcbU7k z4*+0^14qSOtVqJ!g6r<{9`(z8`Zg+vP08kYuUobC@>}6_u6H(31v1z^xJNONR?$kW{6lT97kt6 z`iYXvzZ?|IR3r?!+)TU5f!}9xN9+^0046J|I(e+@jnc04W5z|aX3Py5y)UsDD_A>m zh{dAKyv{yMaF^CB{yU&0D*&L#H5;U{NMU+>6nwB3xS5->%~ zE)*5uZz^H$=Cm+spK}y}G(DR1Pub1`(ic8aMcJFgJoaU0T!yAoBv-$5*>408>08D_ z9wRn{G()_OEy6>z)YO#TGR^>7~H|~-aDRJ1*sn*wD2t}8xG^BNRz4)x|5#f z?sB5zLn~_*dBeixqN#X-((v|P$En3Pxht5Q9SrYO8D$pGo$cj6i6`*>yqeuafrkH* zHeOM&$Mku3wRdK>Keb8Udm)U5A8F2a7&?4!VaAT=IrrOF$*q~UwOP04ca(;lmj$cF z4DhSCvhX}{M5ls)?39zny8)~nIbfdODZImDvT2dG45r#f zYA&a?B&ikFb|24j&I0jzQE$8hrlXLpgpN3TDYw|pg-za}hPVcHg|0|Rk0eglt^?I8 z_T|GPrKu|ef#@c}%M8F*sZL6XiKkM5T^l;hMRF^0P0`Om!F(dUgaH zB%K}Y=;`VWpDCJOwyn;#Cig)=#c}VBkY4Yq$9VPX8LiDv8YcsH(m)ycVG8=4gs4aY zrG_%4xV%Q(OU)rZG`(S4@;{<{<#3kN7*P@tW~CA^_7ie4rHX z1AV+`#(k0Mh(=x!y)D@xmkDzMKq1t9oAg#`op8Y~KpPSk#ghlmJ+@!C9o3R#TT~xk zHUgT5u!kCbVgT-Cr_GJuTjR}+@_G_oH~>bROuX^;S;=|#o?Gs7Y_=jbtT0e_unBvX zSVm0nc<9O7Hi-D#Q~%!(-@k4Pq%u2*mmlat`~{QfZw`(FH&S+B>N`0V+yT3AiSksn z$K-gK=8E{ZPWD9ga)r{A{;)s94OOJzm1+~EXALmzazO0~A=)a^UC#V^G|^MlT`wmK z6`(A!3lX*LKt(AUdR~pE;a4bw;eLE>8%nEa{2QG9Z-Piy7xUV(U5A^-1j<%9ou6P6 zR+nyLUXJH^8C}V5w5pPUa z==rp9Cx<1K9MN|#3Ratvn#aXZg=0!IPhi*wVVmaqA{S|toLzh zKD4M9kbTVce_H5+-zJPkKZ>UG##f!0>qQ34gQs)q{7NNyOM4BSKOQvf z7%JR}!i{NvTXl-k=yNBmnr~pB{^d3Jt)O%#QhEj|5=Aa;(sBleAP`;vbc?r)r*Co9 z-@R@tVdZPqa>&RP%U8a5SJSt^&Zj8ZGzuYs-tb)Zb=L=|u_F7&@dp0W z$1^HYzM|8~Zti0>;)wDiTX%$X#=~2sj2Y_$v@I9^4u$2pt26mxB*ob3trNmhVY}28 z{4$iw;)R>naEk#EG;&5YU2!0_bQzgBGzZG}Q+HFj9*mZPf3zLQo2uHf#rk4l2j9hS zSse3)*%xl7o_B6oVLN-$hq{dlKfTh~Aor72`lFjsEac3GthDFdl!N&*;S6r>$5ls^ zN7PaafQjU0D-}sSB-hfch~wRT5tlI?x)tCnUD#T;x{|*Lm!}yNnW~!j2}fR4kPf}W zzu(d)iC9p3&joaS=Sw*AYsX>l)9T{=5NoZTn~!VT_X?Ao1->Q`%*LgS=eG{MHM6SrSIOJ(es*&Nm-h$97kGBUVOmXAPkNK#-BVZ@ z-djq;Z>;AWca=wPOMwbOBOV_YM1LX^9h;jw|12ejZ%{X;vmX&qnezITXq^C81yWV3 z&;+h6T^!ZkT^Z5>@GR$AmBDyk+rB!8FKeIBvFuhN#o+9izwFn_%?Y{c3MBD%RC>~U zzOHWxuxfhw*Q~O7C#@UH?n~&+0uK^NSMx-Rni^U6Q zQt!q=68n+1uf(+sQFb?zMwnp9>(S7Ys#ALFQ}z!zzS3O-QznXB*3 zx4doj)_w!^f3?d{k}dw#=z!Q}*DrGCw=xJQUy%+|fzR}~O+aY9#J@B_dPdo3gAM9i z1o+usN@6{SDbz`E@r znWGmFcSO(kCK&~5E@)%h>B|}_i$A7r3*ZBw6?ylZtU~6Zh$WrZu zl_=J$Pts=rAw|$^w(gf_E85q3TB};x+B!=E<-fl;cBiDmV%lCj%V=;2rqTN>Ntcdp z67xv+*UrghHzrF@@}-lIK?Po8z+nyW6W>3CevO0DQC??(SY_m+8V7p?4bybY@>-Fr z_>;5f>lR$QfB7%72!L!f?4Rge>FpKj=tKrSR`d_~Jf)TZU+~E4h)Am`8294F7z;im z9Gat1KSe)V= z`7|SC7ho&|&~p&&x{es@qVWe0A$yr9@-dkAZj~>KDhznp~~n0`W*_rQB( zVhhTm=H57EcR;tRVa#_IO!*=AgUyFCjigAtB8cZR$O6Pc+bTM42tC&2%x6$#__nU|p&5^V@0-7N7Y;y*BRKWk$o5jtpbT}u72 zhKdk+%O1vbE|g3vd$hoYy+;_&T6dM!ZqsK7J|lQQkv;l-f-E`F+VFJn`!XP9x=0r! zin0{_W`!S}qHkbI71OfKQf5ijU%R_!k0D0l$dT^!4Na!&G2c@;) ztIt>fWeMz0HF9>{_g<4CJz=WCa&3{Z11%|2mRBWbGmHl#WWtPFw7wcyrx*fhJc@yY zbD3H34)@TJ4avcA1n;$#{Mhe$<8WWp++&J!IflgYlNs{b&Ll-nRc$MQPR zq38lW>7x>#xi^XBZs3O0m)heOJfA&i@t*oNE4TRI_C(RVIRD^jPax%*Qzmzj3;F3U zF^jmT={8M|=2&T7cl_2pBc~HgR5oeJsMn0obgDRWa$;~{s>=CXHe+F_x43tUX@~^k zngZEYm5^8|L~e%UXU1}n9en-EMn0pFRzXOE1llCjTNO4}emEIvVZQgwrSxr#pR3B`cx3sVcv1T1eT8REIxK!?(+qpI!5Q)p ztX+JMxDf?63UhBNoOz%szZSlC_ShjNec#g=p_#dnip)|rGD+C2bUwlsbZPE>OP zPz*v>?+625I21t=4sCDo$O%dkVJ;RpOn-@-5E%Quy+1PmOk+{JI;M)Hhis(eElL+% z?xIt0(TFr?Saan(>|(I@5I~xMz3Ax|Ynt4renp~Cnfi!;d4~t8_U=EwVTuo4@pnH$ zdiaA=NT;$*g^rJF-|o-ZCtl&3_9RV^&s=&rbDsyj7ij*b$>-)=8*wOr&@+7>+^(rn zce!XU`4Iv`uEc|=e~*4MnN6TRUybIaRAg?_e6%r8nJ83na#DMkdXS)-;c52k!;z@@ zoWQqZnyP1!lj$q$AV? z3Iak9d*|+Rn?%Zy?3q0{@59^vGT?yQBBu~sl{d@4YjS#%;U#Kbc%i@3Z$u``v2C`{ zLzp_5-+CXti)-U~(bc0TCwhze_)jH#WmQBjG%2rlv7v2ea;lu&KXR?|#Q@gn9#CJu z-W$+VYX<1fw_0Kcn!vJ{YZyw+eTD0?vYaK&xv2O^W{WJNWn5(9X1|p5g~iO9WEtdC zLa_ZI9QkO8+EnSiq=(!mI=lcr>MBDZIZf~jI9h0{wweVmxFX=w+;@`>|B>+LuUcbE zCZ0WKpt>JIY?+g2+T;d1^Xe$9ESj zp6hEVd?ETWtAf%cUaJIZZXuN$Z${-tdlCCKu*`1^=r0XQ<%X!vJ~e+kAr%y~gun`T zh2g00L*2B8`P~eG&AXp@=cvr6_M@dUCl5c>B)y?!ZIuds@+~CI3Gsn=s1n^zd?J*t z3ctKmXo9M^=P3`{g(y<_e@)B(7v=WyP_g+V;8#AB-PnHn{%2v~(bE+#YHu8);-fj1 zkZdgYMj7imuPS9mT zP8DM+inIv+_r3f62iW@ar|mdZj{NxP=QO==3x0S4ej6d$RqVCKP8)t%6~O96IaECt zUZ*I+Xc!TZ*m`3`^NDIF*~{kJFR|gAbzDKJwp!i~cgJhxHdoI(-S# zPPfP0LPA^K9Tvby&d7<1GF>2P>;FbcNKkE%`{5&8_i+3+s=bN~?=KH=s8aTz43y^t z89B$-Jr)B9%-RiMKr;)B`0%`8FKZ|&@3TF|k2!*Ck77LNQT7F^uxYM!mxUqQ4@UwA zx@=L{VYF)~$HLJEd-yF}jUSrQWd6vYLV6&?EKyCd^c^xVG4&Zvymczd>-75M3`YFZ zrECW}1vnUsKLkD(fJVabsmrv-eY4<{88fn(AN7lv@0wxfUzg#tBjF8r) zxh5g+TFPmh95>|iw!}%&7|T5?yCl=&!Gc&9;*5{o%UzqUelZ)S(ACqY)Ox3KXpLxT zOm|Q!TrRLPouj#jJbHS#*15i4XvJo=#6q{-vEGc0O%#6?}LVnf+kKK4+&f zKMRJZYnA!RX~G%^0cRn6H&*G$Z+ej@Ig7Xi94C66Isb-SxUHI@!`0-)~;J> zKU@q=!+Q|ak}Rd*1}cQ)jI^;5;0VBQ+=(%Y<8uyFI>7Y#fUjB zbWa~Rco2k3w3Z2)6iMh)wc!{o3expmcIkbd1|eErV=R51Mdkd9M8XDF&V^Ph0?rP$ z)sZIKa|n9LDLI2W`%4w_?u@K_2xfLnIUl(lRbTsF9^C4ZP%u+6h?(O+O04xPt9#Jt zH$RQ7p7{Qyun(+q!zK8RQOEgJ7<4L4^TtX|K9bN&_h)w=oDCoXqJ$vdk|5hEu+M1o zOP%|zBtvIEu8fd7>@0U>X0iESTJ#O7+_#wTD$cjq7lDS=I0`j9EY8dOBn3z;*Q zSf^a&ag%O942gn?K($H?Q&A(fxBkn@+ndVndYJZ_gn5hRw`p}!d-G-@0cr!UPd#MH zc-BU{05;DecN14?m{ZQ`XKUL93bQW4_kO8KXvmt$RO*~LmWk4yjFJGNlexF|#mtQ6 zNAWKSPonqot#q!2o!nA}n0(2x_fyK=c&S92wSY5b#Gx7nx~z_Y4SNL`i&Ov3hA>0y zNe(}Z^bjwh)#Vc+Hn6S{b>dX{NV;L1;~-Y<53u0y*^7dpU4!_!`#2-!G+}=%FiD9j;G$7lGQFo5uX0>O=t(aSDUTUt4 z>m^?+Xfw4KlL4EuWvG(ty`CiM@P3_AnQN80aoM;LPtvp@8C;4Xt3r1opN@KOEvNFM zg>?&0CR?j4|EtRSw^9xijA|oQ=v)1$41Hc;AogjBx$Q$n(t#xyO`5bDOW*PwFJ1eD zU_Y^j34WO3Ip$9IHUt5pe6v+`D!SZ58Zwe5AQm&76ux!n#QG8E0;o~j z`a>F7&kF6Z&j7_8_MzTtooo4F5eR!!?c!g-8G5gv6z1Mh(ud5d#&=q$SkRk(Z!w@Y(%Nw>;vS5J`L#iYPO6{i?B#^tPzBNV56 zKH1@vy`)nfRgt}Nga8O^;Q{h0t(af2l5{Pt3Li!w3$hXZ+;ty?EiFGCcYnqmx{Zda zEU`nd&ZqTUl>#evF@rJ)COW;vHH_ZCdUN-5$LBq5ED>NiXxpuoGV-Z;_?n|0rkAd@ z&=!CnM4pJe-KNQwD&FLtv(jGDzVj2s@o-+qrdfI-zFwd%O~GB8af)*R5=l}%rMdSN zibp|IgdoypissH4-`4xqjreJbCCQsTXi;@L_e)iQEKsII4ZK<^1i8B@^ebe@i*6UL zLNn@h43;eI6ersTM5UyP0fTOpR)-oG&I*c5!nvXYmoiQw$RwE3=2xB5*vFY^P>-xS zoLDQ0oMK>@`oE5qUDMW)Il{HTtCthrOoe&YN0q0%UjlTd`$q_WCPDk z5u(VK1Efe)IV4`i#DQ|*N-!&#BPoCTKLQcnsWRaUMg}mf3?Xt)kRvyD-J`W)^?)=v z=B~;o7`_>8%;=*?wH+c#fxQge6gQYDYnn#TsUgCFYE4z=J}ScHNhFhRX|PjmOL2gg zk{tN~U_&ZMngyFk!o^z3QRXUTCW);0tZI!BpI@!eJY=v_=P3^VOaqUV3FYo z7%E!ies@>SV>4;^U(yrVk8kc);{5)mHWXwOPnc5+395H^v@UDcJ-$!%kJ)SKU}gaY zGH^o7U1O&^2<3wdUkYu@dJ95?wL)BMP*o69X9rQVEkE6|>(N1LhWq-TJPfepJJRbtWiG;g)VOfp!WLKl?;TsC8>y3M z4u1ciWY>qf@cz`?fB0-Nb=OnVEZI%H1;jKDY-MB#r%NJew$s}4F{a^&+#jp^p)0w4 z_DC#}*<)#(^V1Odhdu451|ds*M>BYoaE-=XJ_;P=A3Ak(L&XT+^EaGdSIuAIM!cxD zo6hZRp<0WAmN|MB3C#T6M*$0Y298s^yRHcxxTR~ z4A(=3bzRt%t6Ocnf9U1!lsvm**~JeiQyYt~3H?vu7DV@a5nNL}2y$set^S8xTHRH3 z>bfA{=hM&j2NhB00|yb?lDPuV4+Wcjc`GU$aRlT-CQTivXAsB=#K;G@tX^Nrc-yct z^L1%Xx5M|YQh*4OTyQ{@PTF-c>qZ*q!V}(1OZF{Cf+q3FHg|rs`tY3u$bhsa_n)7D z9n&)qaR0ZN1iUnZyqhj;SVr8kvxSFgZy6P11iw!7n?gdU=uC^qkvc>-o@WCp4q7M) zrnTSDtL;D%;~JQ%v0(WWBW1heoF+ut5s;@e-X_#*sGcm1q|kiaHGn|Y@ZyA(s+C@25Bt&;n-#$>sp3oD@TKyrd`5bulw#9RB+Tky(B z^KYC0AvX>{T|t1$wT;wIUkBg8_$ou>Q7TJ$zcWdY>X7BUk7MuX3PYltLH=x&&^-33 zu|`G6ASg`4MS8vDdzg?y9mQv0WH{E&&_v0wnMoK#qN8{+Y4nrsL8`nC&&!csj+%*; zlA1@)xh_WLD&K%rATQ)fLjqdRzOCxPVGEN(L7lv>?)n9Wt1$`W;m;}aJ@QN?(6|B@ zm4Qz{6IPjDC0FU@Oxhr>RQ+7Xs>j1gIF1Olgg_MbBDxL|D0EKU1SOSAv8U>2WRDQU zH4Rr?E9i+Is!+^w`d~@sg;3IxFCi=U3V$g=*MoD~WTQ+Vhni{hZ&luBQ%*P2$J@cG zpX;!D;{n|b!Phtrf9oFzj=sXABjr#NP{7=U@HLzlRcSOCvV#u~hByQ_aGp|S4>!gw zScn~{I_zKxoJKR6=0Q!TJ&UA!w*jm^?R>%x8Dyz(t6C)$bO%9~F!Hw`NVf6saR~l} zR*<&^C{*_uN?cHg)RnjgnMXzyw2$kAG$?5^^(@h4q;Z%ZoB5zr-J3blmcfxK3u2>@ z()Y(u?<5cp^PT~gP=Ph0`-w;~LoU-NEJ)ZT`^;;=qLtr(k{_3Fm1v`;%VQ5)srg6WabHw8|nmInbF)Ab^^LaeNk;FUcXZ1tl`odgrhBzO-q5c zs+E=oY5yN_-vZBc`~TfRcgbBUNm1P8PDe=$g{`=ylO!VNN=-Q}IUi=FqzIMDDTJhQ zSQ5i*ON9;?VZ$&v&1oBkVVgbIwn+WD|Ih#VKhNv+d|$n^vh90)uj_MtPVe{UbCL8$ z(>!1&{oblifz(-D1SNCre^&Q%_6X z6J&`Z&R;gVTuzX`gIdSeW8FT-4e!*7%phI@N!-6BNMaT4$r!7ZHPVy8A#dSp=9Ss9 zbc&Xeh@lb3-3Q1zMRptqUeXwHPt}#r@1=R8#Zz07?v?g*muC-r?3RfyFo?m&Q zx8R`<6;|5DxYF`rTdC*#WMmt%O#{*7Byr8H`~(EemRal#x+E1tGVIc@*-xwQVaL+a z_{u)b4&kbuTbd~PQ?;@&q3i1u6&C*=5B}uJ6VKnu>=e_$&f98sQM;21?cuhOoAmC% z@g?f0YkNmNuqyL4mw#evdXUz8yxq8^sYx}yPnFpnGF}kkR(|mG{G3{Yw;7Jr8XN`B zEL+FiJdf~o+Gk%+*3~*PyjGsbGs_v&tbs;Ze=*tVVt?N8c`whc@$^){$md{hZD)W^ zE>A1XtquwEKN>@DW;K-9CF)nD_O+ChB?aJ6{Jk}Mr&`ZuG+G|o$0QQ8s7d5;gQKqa z&g=Q!J(cxaD8T#-zA>;ydZ$(BT3x<#X65BCkBF5)1Q==O7aU19pqPC3#;8M4yCQM7 zX_9Zbjc3`i09tY~>%^czZ>{n&wNRoOwOge%=OK7G~Lie^^Ixny{$&Sj&5fck8Eu^Y|ICH)-+gZJ2lZ z2=3WQG}-=*S*e=u(c|A#+Al@CzmgmQ)t27vd;qO{dN9QE$6Q|rXF8tcTF0I2{Dcb` zR_UbfTv;|DQ{leeIJpi)Vu#jbiAQ!q5e=Y`&NpWJ1>Po=dBM3D)AhOxRqY*zFcvOK zXVrXyAHI^d355m$=&>jm}}@e|F-b zBssy5p5LnhodwY7vGO~pjenLC?s})L<*$+gSBAV}{% zy^-S2(li2EM4;okK76o@+y=NWYlhLcPxnuqMjR6~PCB^2IXI>mPm)ucUUYTms$bXV z*yZ)?y$1W|eFRNHZ=?tk+=`W8a2I8Neq6AQA3oq?LHu(5-d55-Pla#H0zYfi|EHrC z?EzEJ%ms|<`-Sv7E7N0~grmVP9<@)@sq7KxC|w%QP2Nd9apbAxc=eGyM`BWY zj*($<2sAoth}3bRr~KOc>j^2Ve>ds5QPVF!*?n|hFL;o+4?7mzw3m_VzT^~4q!w5H z$-R8#vPaeP$temf@qGF5SQm)rhqWFpmvEJ}TiEIfsMp&H1M~}f$~X2DXdhgpNiMtX zXy?*w7aJ3Waha_AQvp&PI69nx$619Y^TrQ(4Bc~#t(82!N0BLqsK!pnQdSfCr%J~; zvYV%N=2Rh-E^VB!U6R_O5UHhGxbDb3L~y9RgxLsQ=pvsThM5))LtCjkXG;9Fg;bhMAuNw@dAG; zYD?ofb`UA3uniw|O`oaU$e0ME6mSPT9{5L1vpZ@6n)3sEN;OPgisy738L|nW5VlW1 zZzLM?p;MK?oWPMwj!i7<{(SSPJ4cW*Tp)`)G}#zOvx$<_c1vASEvDj*%+`d@2#qSZ z+^5b7IN_gCosEXtWo15mXu2cZf!lDPBUgvIdMR(&WuA@7S)j??Y`gESAl&kJpa^9eyT;I`N8Y^E@Z9iu$5TCVsIu);y+GRjupR&s;0&1a$?Jl#>fn&d1S%gL=I=d)*}czrq+Ay z@MYVLCXSf)1W9NFe* z?_`ItcOfArKDs3jeKezpAumlYz!HJ^EBH1!;!M{-KTDDAD{f$qNHgO=emyQ|;mzjq z3(7{9vyFo$hH3E$iz9YtlC$z6;1H5=zx!dvUi=#jl*;s}h`k;CtSQ-Gs1UKs4xaGL zpYR#?`bjIEX_B_3C)sovNvgWA5wP-Jy1vT1lT7F@a%g<%7pk91;ob))jfPw) z1x=lWwEC$A0(8QcRi8(sRqJOUTNlgwUkO@sZs$s%oTv&tM?b*9J0%DD*lFRjEI8N{ZB)W3|j27Zi$Db9#X7aoj9hD<*@2 zPOn!R`=r6iBP~&IXI@`4c{mE@>bOe+@?s3ydd$^Fd#KMi031g_x1<~zC;Fn;xX55) z8OR$RbLsZ939ZhZo_7v7)*9wgmYiNmx%K{S0>4T}qx%IH>U5BU$jDjOJx$zCM0aML zZaUlPWakV?HW|XM_y8$|yti5ARn?9mhwj>*$bv{$7d?`w@%a`pzIn0&n?7%qxHE_Y z)Fb|5_RgKNKL+TuuMe$u-lUW--j)T>l=s%lbhkj5^=n5pFJ51EA*HFY6#n8wr%fK* zi{bTW>niPA@m=}qrHJ)fCC{&I_`7l9Pk9TpV&g0Fv9l;C^JS!p4C2m4LyRriweD!j zA1~vv_aoDrs&_5VxlYe8ld`Eg$#?Ph;jn`=C9A%)9&drf60u!YYJv4yoV@Bd_(tc0 zMTM8zZ>3fYNG^EeS~`GeLUN5RC+a7D`3p2=P(|iotERJ*UfWq*&UWV0R+n@a7Iws2 zOUO0?_VX+B`__XvAaGTVtGTHW#up{low1&ql50&C)U3+ErWlSkv{emt6h2K-2 z2X?uOIR?iR{+o|eo3B*3t0zfH%5m>Afiv|q!05wQa)p1Vxl6Dl_ws93w=eH6!WY^+ z7oQf!Y%t}%@u~yC%PxF_zt6EI)M7GnF*wq&XEj948fe!cN{8= zSLS+JpLH-(qvl5?;IjY7Ot?m0qH+2Gm3JAIA2=4aIIzc;+?31R9+9h1n@Pm?NGO_old^ zfY4VwmPe$!T*4>=QN#BDZ>q^Fnb$iJ??sPqXiz`>#e_+(X*hF=HCCB~9H9upxSV@* z!@MvbM)Sic472epe`r4@GzLQ$^M+JxQur%yt^~lL zFu>URx1@P1Ws{(!Kd)eyk20emD)`ZtRRg3p$H&x)Hd&jf26y!|Ys^s}qsu8?PmHzM zS6Ds37v!B%hy^y~Rm5Sk7`an@!29D+tvBvM)qQi&&|@umXE$hR)a;ei>cB-?Rvp1< zK$0K}ZSt-}X??Q^NI)1umXWU1e--mlyO-})Ec;waKF*2wuq`@a(JoK9%h}dBO>Isk z{gO+onMm6p^8)>4K~-9$=Dul2err+PF@~|GSF=N}?tq6W%Vq)?VcS{-)!w~rUyy4O z_Gwq?rYXEOa?q5cWV5qx;wXj{^$G@s+6xDbq)KKtsyJRFdrOYTAV~{7{&*nZW%|Nk z8aKOzeVQ5~(}Q>6_v$C-230UNuwF51#e-*E{q+^@I>_UKx z!A%<}xfkZH!Qp2Vb;ABAe4ZhmQ=SYDQV9Ier-ACaO^dsvwp8vxa$xf%xm!+7&WQ-f z0dNwqW+~`K;ds2imLjhoVFOv&uvIY4)<@aBe(Ab5$4wWGzxQh850f2QRO_>r1ysf7 z2UTv9X{0;#w?SRrDF3DP^3tnE`f9nEwj4`z>ES$#3d18U@lrN>3VrsBE#z;@6R_;k=?SycT_Q%DaHBO{A^0_z~t!SrPDlHDL>Mn zpSQvW)2jAy&6w5n&Ww{%HfH|W4S@$snR<6$k)P#PNW!LV^8CJ#xX_2yMbj74>h~&W zx`(+w9mt*PlxY2G&(yqE2o7F=ls>y-{fM%`YXQ3g&--eulAw!PA~32Ui_Ct>|ez^4BxzK zIZDb>ZP*JcXOxYG+;PH7JlyJ24e_usa^usddA%*Y1tZ0Zda1y-op<#a2)6$-?)M10 zDnCF%yuy?{H22Edb~-$-w)fEs#+sa}{UN?pHkr>#r8W!PC(IJkUJ_CEkYNPWLYIK& zUpi=X|A^7MEJ1Xi-6kgE6sS;=WeRv z!wA+{uH1$@s2v~&@gISI#*$w5w$0>b>s$RAxrC|r!{amwl>zDlz0VVd&zdPOG?rE^ z511~SoGe7vp3LJPsE9wcArl!;7DZBR$hPs)wobHf4La?dw99td?K1gU%E4ee{d~*{ zw^K^S$l@-S{qC(s0KR2IL1QB*$mOYu8(qF?zGc8@2&b0wUjDahJOFMo2qIB1rf<83gH#l*l)FKm^`CgPB_!B)Rjx}PjCM{*j z={V5gHr>oI3CN3j@CRx~$r_;Dj=reY>9m(DCsc(FBRbD;tzp2M{uJt>Xq==od4ndj z4dJPA?WKS&b{rb0J?YsMZ6h{{cC=<@2VOVWpF+`ld8P~g{&9U8#_ufS%QHu2koTHU zeS^X}BKF<-E5{@~SWi|OsO7_};~o5MYRJ{+vB<`Y;NZlk!JD2$Vqf8~OP*1*Jt) z`YgHQBZ0@!%$L*GDE4(AifIk{%T8)2mhVtQXUF9X3 zom&u}W@1H&2i=c&nxSxZj$ zwTxCJCRpatnrK?w36H8opC|~{n_10FBO3eRU`Q24F>O8;pB46TJ86T*=SAM$_mln5 zC2oX;&GvbmN0ab{4>>xXcxfz=8+?@0tw7syTI{hZYmrAsoJ_))9Q1Xr9rfS{s$_8RJ(yHW{SM`tY!Cj${d+;8I631<%3UXTx)$uD$CWr=+?qC`faJcgaGB~9 zhj()}c(imjkv?XX$iS&%dE7*H<*R`5rgQN-4#AS?rp*Ulmw* z-D%1f^TyKzj)jd!rgC7vwzeQ~ZJwyekVCLAt*W1cqIl11CTr4+8%)Ai7 z{&ee!Y&&fA>Vu3qsu1gg{-l#S-Ec<#Nv%j z3nPyhycKxRe{N7!N|xC-T|6d7CzetU{2^g`HcF8Cf!8G3Z9HnQMfx2VV~y+joZwRW zdR4^M1^tiv#_%A#AAjs*dxY=ufC#0+gZygT3;x>b$zZJGoq(dMBJ@WL_DWZBY33In zg>u%jds;4{G_U{jd^Zht6H3@tms~}IXdgCEs|X#?SiN3r@ygWKjR|@r9}sx(GFc}* z?5dnbkV{m`rfBVq;!`PZnY~Y4jiIc^t@e45>Zbn~Y?Xd(w%fx%KQVwlfXZ@%yhx2{ zOz>dQI*Hpp4!{;nr=A~TB@BJ65AMj_aV4k!w5tOzi$zC8Y=7!>F#359>-n=K&)H9C zU+>7m{86PIo^@|mdMCJTe#v?ncgPr1RluS0-zpZw(rc8rK@yH)uA6-ux!$1A<8k=i zn)&)Uwf1=QBDx#_&42H@j3P4cQk5?aT_h$Ow8<> zaR~0@fSg7qz;vFRyl0RnrmpzDwYt{$Rbv`YU4Osxr%99A3qy(QrgLF%uL;MEOQbzN zOV1}voO8r4dG2sg>HPpboHhAZci7c*d9+?UTy2ST;+yFw3RUvkEX3+vmQ?L?H_+tm zTqNNXbVPdoSlcPHRmG5}ks0rzNmip@q^CxkdQ1ApZ@Q{fsu?D>sKIvVt66&vd}w!Q z-5HJBt7#=s8^y7KeECNVMz~_IU)LPwto**+*(G3lGZqC&HiUrxGX|=J;8c7ALs{w9n_}B&Hy!w`ARFDzyyJ8 z_Zx4`t~inVwKWHAv+~3ZT|3PFlIcg-L1M$| z#3LYX`U?_mkOysXHaT$0U~@KyW*A}uvkGN0I9nR64?t^9wM%Wc8(UW5h9RW_QA*Q8 zqY9$kq+dF?^bfvq9||zZS+aH1^2ODj3eeYOQs?Ei1x~hycu51CXV!Q7Ion6Ir2iOG zSO-eg`Ut$IZf9Q*zh#$waY->_mZmtkfqbpPfcgFSy*GOIPh2zh&)4ptN}#hisHSsGhJNvzFUs zir)Wpo#Nv4SMDd4r7R$u5}^nQt?5ne5eq{TI*kb*ciK+pG)>fQ@uq8|R$lJO+B?2h zkbHxwNyF8p-s9Fxrc^w>5WahRkC=q*bVcS0b%Ad7zUig})<5H9{Yf#i17-%;e1#m% z9p>JR9v&b-k5j8=n!bWk0oY~)@@UOXa@$`zRUK{}F~LN5z9AHSs6MfGs3w}_tiM$H z#F(99WngI%B2lVp-?~6DPlKRIJDBU{)daF>iQ7^a*k8`Bv`7t)za`IkM?Y&2 zxEKQDGG3;q5;N%pmF(VfJl_07A*+-0&*}t>3j}1(yn~DkaPqC6O=$l(uj^miY(W8M z^IA!nEoyG3|9vX3VZ6Fpx!~=~u??rTdK#2JJyEE1t|k*3v<9J4DMFcm61;BLI)?EL zIGZ$#Uff9?>C8U4ds=zgZuhj&AHdlQ$3$-tID13%PoHKb_O5ZZx!CGyy)(dr&BYk( zmp``BKl-Fty_Jl;nHt2u#`bsx>t`Z{l|-38;nm@xcoqOi@yRIHw`a^0wNk@rNEffAG!&uMjz}=f7I{{A!+;b06i~Hiezui^OxX*WQGmdl1iiaxNN5 zzEXJZ^s1VG+B>PQHd#QPpO7gixUlVAbp+wB4AuZa`MhEc$D@pZD@9qC;|?%C+1HGw ztR86jV93g&HVOj~qNl!W zG_;CL_ID^J%u5%#oB{|qwoySOO&3UFTa>EpT0R@>zgk#Jm*SYaTUV;rj&qL|%zI8b zOj0|V(Xj2YxKt2;i3Gss2}J|78M{6I$a{ecB*0o!b73M_bSX)U?3#1ycHVkXw#r6I zb#NB#)B_$c_TMsrLNppgrSt9@%qptYRbq(98Eo|DxbgV0!SI<3&p!gc83K@!@9?W& zKr`qM@TPCyMyiTX)U4Zwgs^KE93W)&0}<;$W9v0wqK_T}*JFI_?}GKO0yuajX$E)w zFR%>JeAgZu>d~4(KIVYZCIA&p$qE;uwC%@Y;kN`gi?~rKhPb)*`!K>+=xs%&f?2-1 zb9{IjBwPMA5g@P~;0!dplEz69aRDY(G7;Z=NcB5nEVJ>(iK%~t37W>Zb~jgv^~7S~ z)OWz&-LM6ar0`Q8G{Nyk#m!r1QPrRL4(ltB$7fR1zdY{T2Pgrl+TK#vu1}7C8w=k) z?R|G6xy%Wj{BT5c7nJts-2tb3GW7@ua|8=1Ft|+z1qN4~C=$4h;Jjgi%l6G9Wt5K@ zn?>LA?O5!|mnz0HOA~Vv`QzhT>`Nj9_WJwBg-n52^hh}4Oa3MCK8u~tS#`~dnI)gY z-3b?YnOg<$yt~@jctH3D;?$8K-gfLav%DH)O~Z>|%fkYPHAY^17R`0l4e_E~q|3aW z&1*i2G`oP+Kj5^COigvY24Z*-5Efo=PpHj5h(dP}X=paBE1bh0DEl0P{7OkHlJodq z0R9dTe)M_FgpMmmZvV^sfO~i(d5(J+^Ka8=K=~*zI)NQ5!HDkvoK5|8ugwvpK<8lX zl~RtHqD1~>qYpy^4mcszM0T5%ln!^w3Q;*BBS1oarVto_t9&_V|B@$7zB5{mNR10|r`{SyAs6fyY3h^)}eT!Z9*E z-}gJ9p`aO4)+M;z#P3f>?Vt-ndShr{z!l-n5X_;J6zAN}+6}Dgy!~~z{-3I!-)@Gj zc}iNU?&G4{Fa4J&OvDw~tOTy(_5yawUzR{)&1wdV^e=j6M6EQ@X1(XgH_E4s9U?_g6t}y<4tAY#U6=`hoII=K z3zSLw_?e^`RHSrvX7B$`W_D)LyW#KDKa18cB(6Q;%8a)9c`wZpTV^;%v-#Aywy09b z{L@=Gq%b`huq5TqHn-GRaebjO+oKNJ_%S!>ZRLd}{0s~Z!GpE?&M~5{Zvy%)@a4$r z`78C@x4Mm}ojvj*Y{0R$V80*}xIbb7fM+MAXSB$T6YGUv^y?1&&cP9W#q7-iLutj4 z+zzFm`A9&@g=@NTbtw4NtZM`;^ECF>iX((y-!E7tkvacoNm)waF!9DVuh~6zEv`L1 zM@W(q-TD`f)Kan-W@^uh#Rhm^xyd(O+ZJrP(Q%^1SMBU)dxe3jSv@%d+!NLv)XZ1h z|Gmn;wIWR4eKrpR)Z|LNZRRaMlZ<9mmGC~ZOfj%(H%^2}YyO5c1vL>9J{Ew9W)<6# zl+`=jekD$UMo`i4}fcv%w;FJy`F;5n^>k+9p(Y%VhqB%Z@P?SVZcv>p= zLVSDX8d;XNoZga$78P=(nTDf48R%^-`&CS4(09?olm2muQ<@ksEg=W5(CdEcY|!%i zPc<5%%IcLnIeU+Fg=6j+nnB3fD$$Z$50hQb9U@_M zB{7mC z1j}JY0Gyblt3e`Cr`gGCbe}yovylQ(ukzKU#R@Wx++Z3x(xP2rz`jQpb4; z{IAgC>jU(n;v+3Gw=PgJbTGn zXq8_8G7-n{?P%Ypb*|$j{iLYU$MBcE1$X0@by9OWT1<^GamKLL^CUF&jC`Ux1a-7b zo@RG$F)nhM9BfZo1=P&b<&*R}W1X><)J}V3>pT_*CT}|ID`VF}-f8!`(uGn`)pq1c zxtc4SYR^+mCU8GbkE`l4N-B<^{pyjDv5O=qtP0PHQ@JKllRZ8`=Wa%=cU_}w=j8ZD z--Q2$QZkkHQVwt#!>dTy$#F7p!ujQUxqk=j47(a(0W_ji`7h7vT~6qe>ZCF{_e{Im z{wl0Mg{bBl3ue0^libYmA4;i^?tbUlcy9~EOUj4Qa*2Gx?AnPE!prx8ofMcxMG^>- zAExPJd`rA)Yz->z^;88kF!Ed`mwI&NW>E6iUFST|PFfnG7xLK=4s~n`biN%y2CP5s z7XmM)HG>~`TimXq?fga`3p@fk*<~8ATnwDl420*jRPD^8nmYwsh*%~@$!q!kAe43$ zKI!kcs&(o7iP9iJj$F@2?oi(r7_6pRZ}{jUX!pK-;B?|BDB})yIv%;nt*{B3eJ&q^ z;Er8G6)aK@g}=~IrC;)Rw=G1?;m8JN$5C{_z}|kXuv2fXi(QIZ+0S#xAR|b@Fn1fS z_pmDMeDAinFDyW%DxfToo&dV^k51>CJ2=wdEMxwNKGw(pmeRR{ga?d37YsNxq6FC9 zxZVG$AT@2zfqaGLw%-^BA*#IF_GGT{Mf30-Zigjxb@pB+Mc~R(-6ngrrn@{wzQ*4? z2eb#h^Qbia-P4Y^r3gAb+{L|C)pbg3GEVhjB%29qBy%U9n^s;xPEq1^b=?1wle^bK zERZp|*C0w_$AU;yuPWB{-G{@An6GG?Ut#?3H$h;Pjfi9bZ%k>XZUk42+HET4AGh zfSzl6vU?}rgTQm4n6}Er%T`$uWey*X_PA3RBWsTO>TO;=fbqw*~z4zqbk; zfVqlE5WKsDZ#pwI%9Ze-`)$xU|Bs0qpDORkuEuJm5_@ zX`oFA8j7}0IDnDVB-^5#O&AOlhrv#TMD_fxVfBS&(z^{?Vb$yXKOFASrt;!!m&flg&v8 zcoKzn=rXWF$o{6xC|z{1bY~OIKAwR4Ca@-h%CcqpQO7mWx9&V{jf8z(+JBepO1;rNy2XKoLVNwifT|+ zhE1G_Xtgt1dAUQ;Za%-@fKNB(#nx?aG}2I1>p$8qRrmRUr#y*1fC*mhn1nP5Qjk^_ zJ=IdskF5{@LzHK$1g_f2dOg6{9eY!&3JmO=_4tW@Ukne%<|`k`_FE~8Ahzfl17rL3 z&g#&mr;o-cV?v<0zMu94fa(FJG!l)WhDON23Y<4Ok&e)Ml)b6Z$F)@m)Ysk2MpswY zJR|0goE`qhFI6s-qC>au$B*>uX@_5Eof`8_h!{&&?JGhhcF3$MHmXqFfreb9&uh-oxpzCghz(z z5;HB(`Iw_z43k%Kk(!B?JJV)6iQmu?Ca^>@WB8Y66tXiXKr?;~bewXjgI4Qh)|osw zy_lO@;7Wn_5K7*11NksBog~sl&k)Vw`a0K1YaMe_G42#5=;E{E3HR);n>cT9;z;rb zGz;eS!uy~9H3bZAk0FfbTH0wCh5XpI>g2^gBH^Q;m7u`-17mM_><)gqRisGPAb|Fu?>Y{qx;-}$H=-*5ylsW%t$oT=Pv$_KYAR8F$R*DN;al-4X$J1eUq&|gU##-^Md z)*RadPaq%qnCG6Z>Z5R~1O+J`NhrUgTjzXnvBv@15q9~`ILnEa)U?)EJhi{g*vM~# zY4H$BS|LMz*+da&z!_xum||@^WYNmpyv&GaZa(XNBBshFFxFs+4FyX)XRiv)u*x%$ z?`o6Xf2ug=FM&R z#DR!74}vO7p_0cBzl#kpmz7XL@5XDqNB;F@Zxb?=U>dd93+|}Ip17)XuOYyTB?xAMh)Q0 zTZSB%l8b{YyuTK$9d&l_=PffD+S)LyJM3qo<)55gVV$1okEl=dJVoosX~sLMZMm58 zlCcM>;Yq`?Wp12oPB;D*BD1)LXQ}L48GDqEjzL{I#`dnrl$24hFXsQPf@V?-_}JY( zW#ovWaVn0I9tF)G^6jW=Xyru0h=6uWPS4+&935c9ufau)%lM;nN^_FQ=-!|^ouwYQ zii@@gUdmOz`EYz9w7>8j`K3pG$7Tn|ItiXh=|@GZg1%HqkrSw9AM$U$=*SHhMZmuj zsO|#iO&D3u8V4QT*E_DEvQ?#lu{oR^)nsG`B)~rIV&$8G2+O=i?SmXoL^3u?qv!fK z!vUsN6B`hv0(}&)%-)4HZjGsoT}<2tS|2=ZYRbFmrC^FtPX0>%(mEV~-bir9s=E5f zvKlXxX9azsFsrs;qrSzrJ3Y!A&SsMDQrD^VjW9Zw;@alJSn{lQt!)}~etnhQbrdn@ z@wg{5?O;*D;T#8|+yHO*YIXE=C0~!3)dD+w=HY(ivjv317e|Zl()h1Gm4U4DR*)nT z#)<$&YXmNRi9pd96Byd1+QbCXYB#bgVT;}Atv;Ea*<|G;e0~6`^=05u3-@o&_#*`k zuazcjL%Z;eM{&Fm{Pj$#dQa_99OX5ZcO+Xp=Z`$NCv~!d;p#7W&f1Z!K^C)c(D4mm zzk-yuDu_SNr4zcb*aoa@YZ&CH-E-9(>jEsV{+LgV7$OIFJ9d2__Wuz(+Y1Rj$#_x0 zQY}QPCEN8{XOnl>RbhnO3Ocl*L4r&uc|ptgc|J)Hhb98DhaQrAJ@(4Om^v5Nl(BaZ zDaxne{gMcRRebw>xM}7#DzwVkM%%nv^BK+Fp93l;w8!|@d?=%rcoCMW=m2~2A<)|3 zm1Q4Dcd!i?yyM&DM@{%X#3aiO>0xfM6ys&d4G8n`yceWr##xwK985TssM_uZ+au;gHhR$!{IC^?~JCbnWSSWLR zpxCwu1^0Ue_{OwS+Mgg@XwK}eDXIyoLkx9bC`+UKt}(~HiY8OwIyV1MOLI!dKz2v5 zOX_?61r)joQxHuxhRgt(|5QX-ksZplGG~Jwo(Kz|kamuo%YL729VXL<^5vYOh$*0w z$i8@fS4T^5MTx`34Q^#%c=5Ws9#xLIRpdNlH&FZ9d;o)-y}r}6E^8!}-L#qRL%rP= zWTn}Hs+0>Fbd^yrP00Lip4N2EYL_J&Z+zV{lYRdb%?5$%OrA#=oH*)7b9`x2nJN)} zy$gVnioozjPs2s8e(Y(dL*bL15>a*Dp{h~#ow~q0L2RoHicy1Y#O&l<7lSn|ltE6w6XXOyx_Tz{A}F$pHn#uC(Gcai zX6N}{!XoAI!9lk*60OTysh3IF6%DV}Fsr}lddI3VaUEsJLG7&zY&gK^l?UQKQSe*? z2YGDPgkSnmeyPA@@w{C%;SCFnr<&x|*jBsvR_y6`x^n$Qk_Q3f+P1Jw12T|dH{j|+ zRDO9Wm^vb%k`c#5=w7I-xsIb7w+_0Ji~F3Mh#OohBZ(!hlJ@mH-|Tz4Jf|O3kH9Mt zR+;wO5!yyWJuknfqY{54dgdgmfsqyBD5Bhv^QLCta1Oa#`r2K-GoUSDY-j!3hDkQD z+Pj~vi?ApENg8y41YPGqeIr!|9{F*ytWF26&p0~W7LY@Pjg3n?og2`gIo;>5H%#ns zFfZxS&3I~E;H&^?9&44h*6>$*y`e$9G@W)+F3%5#iGmkk=~i+!n0-DjyhiJcmewiT zuRF&ql)TXn(}zP<7Y4QIdL+(KiND{TpkVX|e75boLVPw7f9oN7Hm#?V0KA6Q0hGo4 z_%Gz?P|X4DSk_U@A@rN5Xwp>9v$KJpsOvn2scR5*1MbdV%!v9%lJgSnn{AXI18x5-!XLoIy>S0Gl^{$&7J!(k>mKE%WwpMR>Lm)W>^uw z*+L?~dd{}XHLevD(XJDfv5VVE<(7ghbH1KbAWg%ez-9lEl+R%aC!K>ewSHfP`{CH- zjCR0vu1lO9skM+ZvU(PH-7I1{bwxj(>BR5@e{|mTUoaES0ln^6_iuENIpX)823Ue1p(0)^osCegq0oCK{6evXf49Esm{T=>w;~W_5ADDJ)y`&OA0v)B6$I(r=(9%+4bb$CMy66gRL&u?fpN>eg*$d zULbpS6#>3 z9L+*6aIX>ca1bgz0QX003cnQ8c=1YDZB zA_8BQ_;CTxE)-+%o5 z{Xx_KkUQtI8*h9TQs{(v(eKjxT{?gm?-7j`r0sv)P4MdZommEyfa&s^YnPPBC|8Qa z`^PP}E6zlDv$vUj@kO`-=Yg)AeKz5JQ}&4He1JMP%r}q{I48fma=(}P{_6w*T=cKs zj8*tw451wUE%9$32LAGl$o~5G1(BqJV^e>c*cEygM2teP+`k(x_&@i!?_^1lK>S$M z6YE5B0Q$n{^0%*8oG5TqLQa)#=3;md`PZe<@i!b1;{Frg@%Iu&}ibE2`cNJHz z5DD^s{`9F3$@;&E$WVNHIVW6+IJ=*JePKIGc=~@WF7K+v$o8tALSVn>0Wc-sOA!P) zet~Kf^u_rU9R(9O4npqLZ-)|&ES`S*X&Msk#g;KHrB?&J>H`RBSP#IXN(5iYcnl_- z2EJ1pl$5pZ1z-Aq_ZGyt?;7df78x6<@=cvfu&p?$qObqR>G$oTtC>l< z0by63=Y|ciRMN-fU>XwC(>8B#as7iW=aPK;_p)jnjN@I4SSu^j`Y&i?tHN1Rsr0G` zmV|e)i=x8{$eZ#8{T$i?(l2TYH{ucWjKY+37f|)05$1Nw!oTFmU#!M<`CFfs>`@_j zzp^ax42dv=X_Xy|Bbnbtdj=B7oC#c2=6t{5hnUzHyC7Y4W=VbL^+`}kSwM3R<#k@| z2pn=hJIS`lR;97=Dd(Y;(f65teai|C+iq8AvD*gYq?1eF7c6u0B?6${A`s?~}uzPXY7X$L65FvpT@m@V+IznOOxw*PQIaex77wxR>>pG}xlVL|n=WFvf&hh7 zPBT`8e?DbE$wYGPx|8u$u~6#AMN?@{?*`UjT-4#D-ExKWo=8}i9p}XJ}(kLrM^5}ibw?)fVv-xC537jTK%N@QEMKg;w}b!-bx<#v;ozg{NE)0ry$ zRB(GkOGe8uZ_;1E-s&N%+i{C|Pzj85>=2}`06|?DuVU^#%{!HejZghHc_a$aT>^TJ zeU`}##FM2LR%$bIK37cblyLkOg9_ZyB>`hTd8Yt#srRLbsXRoFPFRhkqck%E0*4Dm zCgFiWd2php{!Q44JqlbL9j|2O!~Gfth51as%Tc=Mi~rg=@X0u7U!6@8>Q+;MYXFqr z60VXE&S^P$4vuuKP+2qCUZ4d-UFzaVCS)WbbN{lRqBg#(kf9z(pO|qhiKF zmCu54qBWQ}(pT`p_y`^=E?;?yJ<;KMs)s$eJ(;cB=J`g>g8?n7n7}(uS)%5djK+3U z#E|TISk%r{;4{P%Z8j6+@)9-8zb#rjh4UxWQQ@F9x=6hW9Qe*$Ec|MLE{s?*HML3Y za&K>HAZSuX#>Xr76Sb)m!x_&I{EeWu_!wx?#n6ngRjaup4=W3N{X&gkKQs(#O5^)9 z&lG}E_k=2CeTEtnPre6BvLoUg6x8V9j}qo%sLlzy>fk!|LnTa~ERE|7SyxBTHXYvw zmc@Y=Y6q?a)x8a<1nr9`6Zts~&Ke1k+2m{o4x0*80;}~zH z3A7*H0b9Xr#!>Kg0hIQf&g`jneYKJ4+dW@1-PGPQkz3jLM}9`NIVFK436`saz8cGm zVb&{&m!!$T+RlUC4zYcS+DX-8X{Jfz@hdiRP!BjRqyE9kRT)LZa=IhYhv6IVmAwv0 zB>I)P*%OAPu;}Vi`upw(+Mo*paq%Gq2sk321DoOBlcrb-;iU51HJH?H)pPLhZr(?G+j z0QlgI7EU4jF0VT43sPg3f+uo3y1w^IVrcl(pRbY=+!oSD{HHBd@GkJm#|}C8v(J&$ zWa?o2wHB|(PEZ5^6~`ey#$PA5>Qv$-Tl1fs0e%+VXKLr@q%CUT5J#8fjk745f^woV zi9^*`h02OVV_pdCXTd2Qs4{T2Ybw_#r>3m+klIwGS)G!>*5QepIiJ z72wK%;CIs+QY%6eQQvY<;B3@a$&~aWk3j0e=*sbyfGbgCpNsXehM+^&FvTv`5#|#^ zo~-v9Y-N*L_9{5{>Y_)*r-fMr+&H0Rp;opb(F?u!YqJ zj!zZ@)6eEmHR;+L+1gpBF?6O^S=G2dV;mGfvz~Z(88ZT2eQjO$&eJ|>@V>Y$2mR5O z1Ig1IoP3;Fn}gc2>r4<27yhCyQ@rY6)thc*5RGaUN#b-`I`>`*nut4Is8BzzZ`SblhRMy$k0CLw=k1R=GOX4G zZqQ4}4G)m%%i8ItY-S zYFH2SBBI2hXn0Hc&g51cKW9U^&16+ej7t&bfYHz=i=N|*{GtO?*g6ju@lKov>f10i zpdt1EL8B+NWf(E_LiMPlbWcpBdQXmi30IlZZ2gdy%>NdCg+C;z3g`M2arxD@ui8HI z6o+rAzF$5NRASee>Ud|J*JD*2-WZGR)+n;GFZ>DHa&$`0;h_8_d^4%f zwQg_iBr@ncds>ewwSo2(wfh-g5=X4=9%JDugHWvY^8TR5 zM7pz+oYgcZh6ANA%QvH#xJbi*1oZeIqZ&1q&c@X^rh0HXkVS0YAO_Bpk3Bh#Y!}3m zNo!~Gfg4w67PwN+%GGQya5kz+ifOw@9v@|PR*9i1rfu8`o+n)Jt9ueK*!%?4iN@Yz z8>xdc0QP7%=q%T@-l4r z_|+NJ-_$e?$!yO)c*k`xqy)<6Joj{|nm*Zi5My=9!M4mFV$VRmwI=M*N~=e?9A+Mv zglsoQb!TI;kn%~~2d=9qn~?mCi`1@<$(sF*@~GXDH^P&w917SHOS##mun&9OV0-|$ z4-7d@?BtoMeOSWM2{n4ww+^;lm1CMm>dj9$2l;%aCE9YpWB?L@Iv=0dlwF<$OIVT#Xy?Zw1}#i1;4RG*3El%NC@HTOpm%f@e}_HDWo0Yx!3*Dy~YY@;)G@%7nPHY>G zovQS7WhG0zXkljabqCbyd@QRD`1ss8LZfa77}SrVFe8G9qkdC_P=Dssoi}a;NfxN} zPuMRWSLelN`$Hl8XF95NNyga$>jM?;^Vvs?ptu;&2g#}P2<;@zm|2B#t>t|6*)*Y( z{`8OBHZ(MV7c@aQIu+DsHHg$CHF_m@W&1eaUJP4&n1J;sl+xV4vMnNvcmXNQ=;}P# zN5v#_58a*YR`F=QZZGIEB;jXZMKt>3wb=Qg1IjGe;^ zMjO(ssp35B6LJ=hxpw#}Z@mT0E;`5}KZ-(l#3TffTiFN`2KyrtJ>Emz?X#=gDDYiU zW)Z8zp*M0BqC3ZApO2=b>;)LHec&>>jE}%Qbq*uqGqtf7mg8(c ztnJP8A+OkO71=r#fTbN?0(f(s8e=`>P$jKlwcY43wu84DJN~}&8b3csX+vOO`%ZLI z_RZq>61OThNKnHAK-Htf<+!mzG4-xI~K>vtuo$mwN{NulBw?uBmJLx3|Tg zLtANoQtJSu%2mVxREkU?skKNIg(_80hEyq{3<(e*31n#LRVrvAiXcLgIzbg7B0>y= zq(~u*iOLWpBmn~)A%qZO5;DI7_TJl8fA`(@-tYbQJ0Ct|pX8jg_g?F}zH9BZ_c^DZ zFj%>A@`OB~CBlqqfnqBood-D!{fLdxrv=+yc%~O0(Pjw;IaBpwVBIJ6)(T@LfKgSq zM5xlD&zL0f+eyrWyxQ9eeVL7>+LcKUlh<6OTp0Bn{?V5nSTi zGW1RgFpOzAr#J?8b62M;p$xSp5k$XMOPWlH_KDK*%Q^8Z^)a=o<#U<5aR&`q!whU%w>GX0!q*~bm^?hhu5n>$WH#5)S z2st|5GQ&H6Aw(IR&Tf<}oEwQp1FUz^8L9)&ViP>C+@tfckN549S`Pyb&vGq z>Jaiw*br7O%&gw*;nX?mp$@Em{Pn%1u&DS}L+sk}B*yw{Cvul`-8;DKIJ0=$Wl{3% z&x^)>Z`9D z;k&~pXMSOAPxu7Wb{h2_V#V(N{N$HGo0h+_0^e);?81s46=zXz|Fvabg4dJnPfy-_ z;xiEYATa-ngKKY}wm-18=Bs!2oV~gG=9g!UNteFJvulodm|Oql-m)39bb@JAFy-YI z^3U$a^SF?&GWa2=P)ypPG{^+h++!S>edn~v36GOZnW3iE8*)Cswc-@o5+{Liz_&y1 zneFM8vD&tswO5*&%yqjI{r$M2&v6aw5^h#|M&jE-*liW<5E9hAQf%aRIJ zc2`Tup_L+@qbT*)v6_&G3c!s)CpY`h)ED07dk7_8&k%t61R-1EW=lp%cIiv*wsaq( z$G==%ZVpmyU_3+8WnsPzXm-fWK$YhN;3RB2P|2uWhL^J$j-)nBC_uOjTt_kh#;|j`P9B(`0#5{Z|2W z2ql=9e~>u+)%|3sLurxn;n=#$7CErd|DoO1?&Jub+Tm*Sv-G27KX4p7Ow;RxyBg5D z`RJVdP>0EIqd}uz+JWx6`S9vA5}%bv51Mp`T*gZKnR_XI>X&yGS%k72yEWAW#oexVLf+f& zoO1J%Vjled#0LKC4P7G5dc!K(inkmR88M?DXAd{3l!_VCxEGQa>OY-EBkaSZbjfyE z@7py6(w@g^heM0i^&W+|oVzHaSfL7p9jLn_#6{h(3kuaM;4A3rC&s|K8d4q)kutL$ z4rp%u*uaN8Bn(;_d#SE7(qP-sh2P1hs}PPQ*>Dq8b$BYzZ2pDYe-5t8twO`#QC{uZ zg+>@#PQRRmSt+pM^<6TUeFuDrHE!|&H;sKMcqM5DklC(4nk83aAwd>%*X;WrpA*5W z>Z*4~K~HNsLZ$SNiAn70&j|RN-A1z&--&iqzw_fD_`-V9^bnh>nb}XvN++7`?G-8+ zWF^b8mj;22V0%q$=6MHI8+vfYQ5`jbC3@ur=?>aJYNY{$VFRqroYyg$!iumw;(yfm zmx35U$q=|lJg!b19NR&4d3ftWzIU41R>O@O3$w4!Z<#v3pZQ`+-AleRxQgizoa}AA z;8#QNS<&5aMMM}YD1F8mOwoo}4w&0#C_;s$^u|`^HU`dTQ#A=;db%JSy_?BEsB1+V zt>18QQ^|PsAn%NlsGLYCe%VB0ENAa%)Unnf@sA!kQT z{C1!$eeeWstmshQFs&-Lg47UUeP*?b;d`kAZ#^#L0aq9ZYaoDXh^mwh?uF?&YB4uz zOBl+>)S`;Gp)rj_jBHbA@|HH+`MT3SKcuZ5oX~wDpni0)q)lxb>6L4TC&?^>Z>xGJu|qf(vMQ? z-H3s^je6bny}*;P^+78r$}vABlB=8*0**kNBQyBJDzdY{d(Y0z&DKG$k8A~hEI`ce3KKQncvTi_yCuxjz-UYS=itd%gX*kmsIGezJmp4)QK?uY1GThJ~ z_T!{-=|w@5PpXIqn8?zP>ZSCR(kUA$u_42ZtTSSCu~Oae*uYA)B0g59ua!1UVPU9Z z<&SO{>4)WlZiDafL8970WnwUI3qtG7gQ}l-TxvG~T|w4!rPsW*L9p<$Xm~25X@S=tFrRuTxDq#9LEx;`TPy-`;x&m4!wKI2tLznF)Woj)D-qN zs9B2gBaQ#3gGB8eoZ<+Hvn0 z$L{mMyqW%ylA&9B+5paAftI}iTP^R#k9gPWs4&E@QkPh@^%6Zy`o;~wvr)AiKr$R z@hk^Rht=XmQ_t2)#S&QLGlfJES0$i0X5Px>zAh+uJ4FPn0RE19h&HmDNK88VSU z;%&AZ} zdk`EoqYt&{ONSM#Q#?8AEawt~97~UL)My#w#{+>xq#95_^!`p>g`|6;ub)7U zv{v!$tIb5F5#iH_0v*|XP6K(V2#Mh;^ntPsLNP>(nEeyGjX?{^%)}_>R&yeFS#B9b2DqIrt+a-De_Ufq_ya$rD`}i zg-}Bs8m$YX>hAa{^P;bQj=Zc$aZP!@r3YXxZ;YowXd|_{JaQM5#3db>Nb|)wUP7g1 z6q_noAaA#-RJv@75xsNk|%d!Qa7(%!rg)8loVc8W!=$QepwpU=x8F43~w{VUa4@=9)>G+0c6?=xdUjRrY%fjAewBRv>M?_p7~y_hU` zc<#`C=h;}ROsfXcrQ@H&unBG5G5D^+Guz8j>I%`DRH+*Q#JWq;`z-g*xFq=_`Nl0( z3LAm-TL@{Zg>X+|35U3<(<#R8)GVP&iwib{Hcek<7WB$h*~(SSw!xk!4%ur?_a6LJ zGKecZ?@JL>48$)??OB_F+zBb9ZF4l*MRemz^mW}u1hu~mi?PqaSamY!P!-BZF)K$4 zX2M0%mles76vv5e?a8fdnPTQr2TyU>c<*riaP}C1E2p1l9;Kw}W9bHq)6b_cB^$3rz`p*}2-%ARsG;hXyvZZxLF-@aS)KgpmN7H2!Rn?ujy# zOL}F_EliF4JW4KHE$w4?aw-rgd^p$A{AuN)rS~?E*)YR4b8FTy&+PwjJ^Dm#pyis6 zn4w8d3=kd|vtfw$A4v&++9^7Ubdn^}D}V7pBo~-|z~^`uF+B9C3st4zz8$5P6#dh) z%Yq9YHK#9pe&X4b4V^UAS$|~gWdw#ZT0`61{HuwjbPTLobGppXZ)zg8#5;#B$#Ds) zWfbaYyb*yuKxqfv&W$r((P~8Ncn_&?zd$W~!MLUB2ss5=O5T%WZzdwp=B^l|#N@4R z)AC%H{ax|BLDNvu7z_y%?jNpB&rukcBamQ}t}du%ep56|xf!EmC@yDN-! zXgV%(%Qx`CwP`v-+U*6ECY)41RX7=3Y1Vq6_m9{M$-kyXo~RTN>vsf~flNb-GW77vLJGwMvBz{x_`PPdvgenWp*w0Szb>af=~H0VhRVvYv5k3&`CvY zfZljY3YuSJpl{%kreMEXe&Df}Rz39?7SGPz?cx|Ud#wwbQ+sQXr1P1XY(>hwJM0G+ ziYkPo+KIGD)k5AQ-5q0n=Ouy#k$@ucdgY0RDcOBwT+noiTs^j}%tCKU8nZGpIDXV2 zpy9^gnap@&JO}z7L+{2!M8_dtRs>C-FixqAK8+oUdXek`s|W3fEJf^+9<$aZYYakmcaF2{gfip!T2E<8_)4X3$9;lm zF;Uh9cNK?XDwkwFa}{Tex7?w)CD#y)uu`9vKClBVL3dN1#_(mlrCL9u?zW&LWNb+n zR(c@A0Pwe{Z%dM=2lN4YL)1hG4I@cI6*2Trm64Iiw5xslzE9Vf?SF-$mgMLcn(hW+P9bw6e9TvQm%S3Sp1^u$0iRg*T@m_{?qgpxh9QZq zJZ<-J%DXDNb2Ck68ASE-?KIg%a&78jm}(>>hOD#Gg8Wx9q=S3$%~vZqCYcq?3q;iA z%S(p59Z`N>eRP;tA1jDP%t*T{&1`=NSs195XXUzv3p4{!0cLGcrbbpqt8qEAv>c59 zBK&GaJ0pYvW90o$V8F(w$ya1P%O9pAxJd4l4ZM%41nSg&$;7qHuLPRQEFffaSIPbH z?-=MTpkREwbDuC#D?9sx?kc}6^?I$KP(~Li`&hMdwGw=Q8+FKxBcMbImW9xza}bJl#^wy=DT_;Zc27c1c4l^hH==u4=wd%W^@#v5Qlu{>Kg6rr zD!@oY#)L67`oj)a^p=fE{nJey>M?Z5TD0PqL5#_hIUALh?|Vf7E}zC5o`b;;l>sb zRaoTe5#$2aVM)^TN~Dlv^etrQ%KeBT$zt%89KoImIroZWKA5pq+ex)Cbu_4{i(q?MhIxV@aPhG1mwA1<;i@TP5{NQ0L{rc$XLZ&K z8=kkzJ1nLbLw+N(mRV<+ZQzVO&OGCgciU#EWASw&%!=dKTTd$Qenn?0Y!C=kp@Jph zNFz~*74rj!^F|Bth1HUi=8RQCvm+sSauBKhU!a1ygaZQ?dq& zZSgX^S!b9?mMib$D{c9D!BiBXkRW@m!GdJ#+o=8&jNiq?9$jI)FNrZ)$6%hM+%TCR zD7ldJ*81{H^HYan{XIzLHP5h1i?ZW|uWEq^3u=z7dl4VRU9~3vm zSwIiwvx1pRB}OOfwtUP#x9L9W!c)72vye5ga&IX zEG9_VRLPAfV=dqANf=C?md3KoR`58el!e*=$F6YoBdnl99V(6<|2b%llU~JNObh=j z0LkipW+=cAQ+u~~!Z>1>ILPIvQm>0y$1G3uhZvc4~3=#!EGOwQll2IAF?7%f! zNtM(H9A^`QbcOw`nPUVgNP zoG3w8mP3i%qb%Qmc+qGPUaChT+;B?{Lj3xbsq7PN$^3153sD4o&K;NhURgdbHfl_( zKX{>&Q%hB^lwt^pnAPOdbg`Ny=<}ipLUL}gG$_YQS%-4IO2bcNTrFM(#qpzklF&=l z{dOtcgm9k7n|(iHT7=;w zi^wd+Kn+~(eFEGWiyK@c3}~^AaTaD{8m#%-i8?=>VltS-)^#nWX?SQe1Vs2|muZML zGW|i&wBEb%QY>5z^S>nSQpAY5pU{CX4sIYS;G5C@3?8I`k=j-8 zNVD2H9(I>c7kM{wXAQkuZjfR(uP05xD}2b=|CwEl@FU-n?T8!#xR^;;lp@%rm1E$p zK){<@(f}O60)IAOZ3E9V=N-c~!B--j1(&nZ)xq{NlC0q)rdkT0OIdV`y4{WV(Eghvor|Lu*1eXr z;Q31U6-851sV`~_invbri9+Q4T`lEA!g)Op=zRAo>tq?YXFk9SDcMY&%sv;|W?Nic z+tuw6W|0x%AK>5%d9IY($}$KlddYg6QlZvt8{l)HRv85)3GPJ+DP_@YyQPQqJy@5p zyE8Lgj|rqa``k$s7q(4^;e6a~8+28}ilSr?zBU_Hp>^4} zH6CNW=s5E+0fGanPTFG`HEyLgqNNPNU4uq}&E$YNLe~k*7hJIlO3G~5f1W86^l2e{R?^{@eKKM^vj4_6qZBO1gy0cNi`>dGp5&LJ)bBG6nR>pQ@AN~A#bAmGU} zQd`2^J~`Sr$!qa_>p`DPkT?cICHg6s*`j<}MVhlL#Y-pswysW{+(~zi693ZZr#F;W z%GaW?o^(}(VkxaYHOVub=E;l?9_EBgd3O+2JP-ZenO;+m!T>w$D+g-fSY@~#B}21e#|f@iklNa6u%P2XqrkweIOperzoh&68`O#aJ z=Qba&+MId7W?@)Cn)9qrrR82VXSb|d9{(w<;h%*TKba0boy78(xkf#fS?dYX;VL?B z_8nU?P^#D}IqNPeJc-XBoOi2I4G!qD;T+jx6?Og_Qm#y2$yfXuGK7DS9tYuRFFl!k zX;}5~r&ES2Kf23`JpGvNfsLw_dgRL^OBw$$AJQW^-*-h4%Gc<4DT>J@eViX;{0sN90$#3Pk;MBrOdU@``e)D zx|j0vt38o}voAAbEno@OAbFS!mVz1Jmtd)T{%6zazt^c;L661LRJayk<-b+XeeM_v z!eBW%EByDZ{H?K7ottxp-s+gSZ|GS6XDQkFCwp$pdS`RT8gy3f^$j_H`a3&!;(d2# zueav6)pNVYgOdI!h`(16wz;6l{}ubX{`n%;y_WrEDSx^;xa)r4)k#a|ufKKI++Lk` zquj0dRU-P2673kBmwSw#Gj`pdg#GG3=~r{spzv5l&U+;G-=j9q3 zl=RAT{qb5eh3WIy^8uePJGY(KFsGpY#jv}?Cx3lSxEqlEb1-`XJ}Y}}dnLlo#eW9l ze5+uWHi4JQ4N96n^i?ZBb-o6Q=AwBq{jmXH5~kPf>KCscT=9m3`$~q^yjer@g18Re z*fF<#b7oGWFKpg;D7|eCHvYeX@0a)Hy1CM~k&wZ6^RP<= z?--riI_FRW8qdGb+#eeZLf}tq1KQF0IXn8JY`60l!xF65T}TPS->@}j{qrFEU4i>G z@AZzJ8nc0fw*G-n{@y%K)+?d?9>d}2EQYMgRe3`-u9?3yKBHldVOG2to~ zS3g@T&c6Q9vPX2zO*_t<=-^#}PCRCqV;dZSu6Z_wkj&c&RgRr=E*g|Exw zAK!3o-XNH5&JW*YfBJoIu$dD<)7w7%uju)82|P`G69*E$o(|I zUUuaUj^jZ4c@%J2b!c*?eRg9yE(ZTmJ$pMRCo*a!qS=*kj&Zy&v?a8vW0S1BfAs(1 zF!PQ#%i=Z4e!lPZ_JV{tyYan0vdnLLGy7kcTdsHGYwpx8_WJ9nb6ZW~J@_x|eBP%1 zAT=;ldfgIVIeHowM6UJ;175$ybPey-dQ2zkXZw0r;`AFf96bb5aUZeBu3Z`f0 zcV3YU2u_J0`OW>BBl#77=oaYq=Ffe_Wgu72@6B^cL18az%N-wH^Lpvt^Q)CJ6+I7C zuKzd1*{nBcAB_Cwt9s?dK#wxN{RYr_bi|w4W7F##`7cEAFY5Rg{a)_>dk-^nAD{fj zxFl>T;;pcy|E@6qc+u;Ne(&%8Klk8&DvSB=0K)%>@xN1yrixj;fCMv5XTvu)-$a-v zLe0~67eeq!56xOpb}S873OQP@lVoORLx>L%4ccFq1;59XWXPvyWfa}6_+Xg+Tiiaa zW-He;>ednOryE3v%jp>tx9`Jb6;R;7l9M=20%@|pigmwX|2`O!VTlIT8;Bd;uKm)q_D{d@0BKLUg6IYuh^3M0V*(=;7B z7OU?-z}WgOlw*|UPU!oLOtJjTrpkxMQQO=XjM$Q9o0=e26~vaLjV0|cJ%N~?Bz1WR z6a2=e>XnWXi3%gtI@{vep6)5Z%K8jwfgi?e{N|7m)+*a zM`=Je-IB^Rc&=@>vMoKCuqQBmTX2DpGhSM3xHf#woxg%JbD5D3hm5Y!kabsT7@q5d zed`J%?xW3H^C7F*;E$7`+zoRf`)^Jq>Cs?P)B8E$g*&)H8Sg-8&#O5T_g!qbuF66SesJxrYJQfHj_z@?0<@0g|rw%&y zBmlAnS4)tGOY08(%9*N@pYdc5zb|*~OU(zieT=}X4BINYgM2F{!{ufr$vRz$X(+er z4?lu=;{S1CMR7|0+bBu**^L}aZO#zObw+l2POeSkWps%xT)B2uS|l!f>@h+RG*jt3$(I@GvaKx8Uv%%$=0*+$!R zB%=hl?a(Adkj&EsOmueeCm|-O3p>=ivajWf8F7nio|Q~Vp(VuE=K)h)h{$r zYB0+*(-D}*ZjUdW)qzbXVF6z$D~hhWqRSLUVlG2ZKd>8DJ07&>PTVQ)qf{)A*cn2; z5=77RYnLk#rsp4Lzw7$&CzJmBg^n8{2R%2nEllmb^y7{G7-wnh?SDd z7SVi{jx2m1Vtx_OQS-54TW(3WeX;4q8j3*0&+Mo=Ysd&u`obq#<*{vAy~=+i`=jv_ z4Bi@ehS%L`8rpI@m~h9m^{;@^SE>&>0>>o&s^jPyhQ&&vZhAn-NuTZK!4C6Do8bLe zWu~;AgPfqi*782V_{?^2O&v2UJ2hBvX)awH5$;{Ua@ys$TOkYf9?egQ%`R!eJA&f~ z?3#ZlD)net>y_g}t3lWwyxBnyd9WW)1`}s4JvAGP1o%?v%df^i?b`Ar{(HCP7CUK% zi>sEoj&X1>NM!~W!Z8AAguTPA=zy}YD@!$Yi{ghf+IQLdeZAyb%?Cxm-r@Vpn?fF+ zxBr2CILfJ6Xm<#m`O>uElhZE;ubRh-QLb~kfdlI}=MM)Iv|(`NZ^0 zK&-VhRPSGMrKTQ+TXH=y788{@f%TtL#;EDmiV_)(ubV_|X^%x}Qv2y?eMe%T3m&s2 zw+f>MV2UV+X=q{K_ntG+f3q*_0}b@-QgR>US_<#~v8mbWhW zdvG2inkK*A9=i!xD?FBC@aE~)_?wfzl!WlRZ~!$_5=-1rr8Kl=1~>Wv?#7p+ZY0)- z#xItOW~+T|49SU0vmJtZ30Zaot3mjySt7M@&#pZ6)cil^DdYs zhVOm>Y-g0_42{2CNz0sK9kkiMX2;WYw9gYVqe8w()Wy@6^5{f>j* z@M{oscM;h1yB)Y7Red|KDN>UbDG4e4=;WxO)#x*6Xtmwy%AS6dere{1({)qfQo~`F z2TY~99AS=Qz1x)gWDxV0x7?twV%lF8=N z#pvN@dCy68)lQ5=`q1EkHAr0o&n8WJ&Erb|26mvs^EQbHCC+eOw0E1=X;JMW374S__$b7G8bwqW-+EC3A>8~C>dD9e88{IaFRjUwdoU4#s`i?% zP#TEdK1LKlQD~1~nm-E7=RM&4bQyA?NA4sZ16LO-)K1x2Z}mG_h8yI4E*Gw2Hi?y> zq}U()HuiA-0-VQte(THP;|V@TLRJI^#374ImWoWcJ6^)QJAFF z)?8QXzT+T%U!D?lvXZ0p<0mrZ;~SYrg8})mgD-=gc=*4x)5pgmbGmSI#&RJH1)=J$ z3fmHEMYonejQ^eqiH*8LpHfAFKXDFrW06o6SFP z^Z8L^A~mSn?r_N0L7tc;&s{zMv`<;*(Nwr`tBW>&^1OMY*9PfQa68JQx3w zjA8{r$*N&2qUq?6FCPe7dK8b#B)W(X+2-WkR190We$G-sR

T*YmN2_aD<$u2ok zFmREpPWoEPBq1X>^|L!dULsRm>)4U`Gf)>tcV94VF#+kOKLBDMvbO|x#+{j*bC)%$ ziNuHxEfKj4?ib%@Uw#z5q}}B`V8?LU?MPuBxyMd6a};hK4-VYv%ls?jV8Z^tKqG4u z=m-9q!ACw0RX8dXgLI;r%hl^3>-{ZuMIvEt>f_SY>@CpJ{$k;*MaM-fDFlyl6*nDt zm+f+)^h(L+C~^oHL2b%F?0o2!6_9h8RgpHf6`nww@RF>>M#167zdYcnbcUa3tztN| zgA3)&3UN7Gna)>jTrgpWjo+Cr%|t3TWeML-lkhY`1fr6gdIr#tkJ<=u9W{CJ;4?p{ z@=bupX%$-6`5u z+8w(g^`OGmb}dsShye7aZwX{VWwYUjb9l1)85;~mI$)#8tTEBrSqw)_-9>47`un)< z^IJa^k|*qX4*s$)+4Xd5YR}ZAEM)C?VeN|&{l#Ek#e=8A#lqGtRFUgIYQI(#dkS@f zwiaAn9MaPjHa5$di(q8gdpuJe>ES;y58muF*xd?m3)v8)+Im_T6675tz8vu`d;Dnd z_uyQM2-@5nhuDd|vnUEU$LH|9LCKA1?o(Wr#F9eJRq$Yu!t69D;1Q*(6IK9sr*3&g zp}HEBeoXC0jZVVox(D42bjVjX-=eCMd)8uaCY8ua-d!#qOC1a&iPa=6+bW2E3!(K+Om~L^&B;Zco@GykW{KV$D-a=*%Zc|UT&QZ(qP3w}#w4Eb+hvVs~t{Uxla;lit?t)DPuf(j+t_;N04 zlC!FZxBjkczopv$C-pElyEMPer=I@pw9vnu4bWTvqGeI*NmA{OxoY Date: Wed, 11 Mar 2026 14:19:17 +0100 Subject: [PATCH 02/13] wip:2 (ucjow) --- .../6.x/headless-cms/using-webiny-sdk.mdx | 245 ++++++------------ 1 file changed, 73 insertions(+), 172 deletions(-) diff --git a/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx index 42ab9c74a..cd988d96c 100644 --- a/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx +++ b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx @@ -17,18 +17,12 @@ import { Alert } from "@/components/Alert"; ## Overview -This guide covers practical examples of working with Headless CMS content using the [Webiny SDK](/{version}/core-concepts/webiny-sdk). The SDK provides type-safe methods for querying and mutating content, with automatic API selection and built-in error handling. - - - -For an explanation of the Read and Manage APIs, see [GraphQL API Overview](/{version}/headless-cms/graphql-api-overview). - - +This guide covers practical examples of working with Headless CMS content using the [Webiny SDK](/{version}/core-concepts/webiny-sdk). The SDK is the recommended way to interact with a Webiny instance from external JavaScript or TypeScript applications such as Next.js, Vue, SvelteKit, or Node.js scripts. It provides type-safe methods for querying and mutating content, with automatic API selection and built-in error handling. ## Prerequisites - Webiny SDK initialized in your project -- API key with appropriate permissions (read-only or full-access) +- [API key](/{version}/core-concepts/webiny-sdk#authentication) with appropriate permissions (read-only or full-access) - At least one content model created in Headless CMS ## Defining TypeScript Types @@ -58,6 +52,29 @@ export interface ProductCategory { - Reference fields use `CmsEntryData` type - Optional fields use `?` suffix +Pass your interface as a generic to SDK methods for full type safety: + +```typescript +// ✅ Type-safe - product.values is typed as Product +const result = await sdk.cms.getEntry({ + modelId: "product", + entryId: "abc123", + fields: ["id", "entryId", "values.name", "values.price"] +}); + +if (result.isOk()) { + const name = result.value.values.name; // string (autocomplete works) + const price = result.value.values.price; // number +} + +// ❌ No type safety - product.values is any +const result = await sdk.cms.getEntry({ + modelId: "product", + entryId: "abc123", + fields: ["id", "entryId", "values.name", "values.price"] +}); +``` + ## Querying Entries ### List All Entries @@ -67,7 +84,8 @@ import { sdk } from "@/lib/webiny"; import type { Product } from "@/lib/types"; const result = await sdk.cms.listEntries({ - modelId: "product" + modelId: "product", + fields: ["id", "entryId", "values.name", "values.description", "values.price", "values.sku"] }); if (result.isOk()) { @@ -81,6 +99,7 @@ if (result.isOk()) { ```typescript const result = await sdk.cms.listEntries({ modelId: "product", + fields: ["id", "entryId", "values.name", "values.price"], sort: ["values.name_ASC"] }); ``` @@ -97,9 +116,9 @@ const result = await sdk.cms.listEntries({ ```typescript const result = await sdk.cms.listEntries({ modelId: "product", + fields: ["id", "entryId", "values.name", "values.price"], where: { - "values.price_gte": 100, - "values.category.values.slug": "electronics" + "values.price_gte": 100 } }); ``` @@ -122,6 +141,7 @@ const result = await sdk.cms.listEntries({ ```typescript const result = await sdk.cms.listEntries({ modelId: "product", + fields: ["id", "entryId", "values.name", "values.price"], limit: 10, after: cursor // from previous response }); @@ -138,7 +158,8 @@ if (result.isOk()) { ```typescript const result = await sdk.cms.getEntry({ modelId: "product", - entryId: "abc123" + entryId: "abc123", + fields: ["id", "entryId", "values.name", "values.description", "values.price", "values.sku"] }); if (result.isOk()) { @@ -147,7 +168,35 @@ if (result.isOk()) { } ``` -## Creating Entries +### Working with Reference Fields + +To retrieve data from a referenced entry, include the nested field paths in `fields`. Reference field values are accessed via `values.{referenceField}.values.{nestedField}`: + +```typescript +const result = await sdk.cms.getEntry({ + modelId: "product", + entryId: "abc123", + fields: [ + "id", + "entryId", + "values.name", + "values.price", + "values.category.id", + "values.category.values.name", + "values.category.values.slug" + ] +}); + +if (result.isOk()) { + const product = result.value; + console.log(`Category: ${product.values.category.values.name}`); + console.log(`Slug: ${product.values.category.values.slug}`); +} +``` + +## Mutating Entries + +### Creating Entries ```typescript const result = await sdk.cms.createEntry({ @@ -157,7 +206,8 @@ const result = await sdk.cms.createEntry({ description: "High-performance laptop", price: 1299, sku: "LAP-001" - } + }, + fields: ["id", "entryId", "values.name", "values.price"] }); if (result.isOk()) { @@ -172,7 +222,7 @@ if (result.isOk()) { - Entry is created in draft status - Call `publishEntry()` to make it publicly visible -## Updating Entries +### Updating Entries ```typescript const result = await sdk.cms.updateEntry({ @@ -180,7 +230,8 @@ const result = await sdk.cms.updateEntry({ entryId: "abc123", values: { price: 1199 // updated price - } + }, + fields: ["id", "entryId", "values.name", "values.price"] }); if (result.isOk()) { @@ -190,12 +241,13 @@ if (result.isOk()) { **Note:** `updateEntry()` only modifies the specified fields. Other fields remain unchanged. -## Publishing Entries +### Publishing Entries ```typescript const result = await sdk.cms.publishEntry({ modelId: "product", - entryId: "abc123" + entryId: "abc123", + fields: ["id", "entryId", "values.name", "values.price"] }); if (result.isOk()) { @@ -205,7 +257,7 @@ if (result.isOk()) { Publishing makes an entry available via the Read API. Unpublished (draft) entries are only accessible via the Manage API. -## Deleting Entries +### Deleting Entries ```typescript const result = await sdk.cms.deleteEntry({ @@ -218,8 +270,6 @@ if (result.isOk()) { } ``` -**Warning:** Deletion is permanent and cannot be undone. - ## Error Handling All SDK methods return a Result type. Always check for errors before accessing the value: @@ -227,7 +277,8 @@ All SDK methods return a Result type. Always check for errors before accessing t ```typescript const result = await sdk.cms.getEntry({ modelId: "product", - entryId: "abc123" + entryId: "abc123", + fields: ["id", "entryId", "values.name", "values.price"] }); if (result.isFail()) { @@ -245,153 +296,3 @@ const product = result.value; - Permission denied (API key lacks permissions) - Validation errors (required fields missing) - Network errors (API unreachable) - -## Working with Reference Fields - -When a field references another model, the SDK returns the full referenced entry: - -```typescript -const result = await sdk.cms.getEntry({ - modelId: "product", - entryId: "abc123" -}); - -if (result.isOk()) { - const product = result.value; - const category = product.values.category; - - if (category) { - console.log(`Category: ${category.values.name}`); - console.log(`Slug: ${category.values.slug}`); - } -} -``` - -**Reference field structure:** - -```typescript -{ - id: string; // Entry meta ID - entryId: string; // Business ID - values: { - // Field values - name: string; - slug: string; - } -} -``` - -## Server Components vs Client Components - -**Server Components (recommended for queries):** - -```typescript app/products/page.tsx -import { sdk } from "@/lib/webiny"; -import type { Product } from "@/lib/types"; - -export default async function ProductsPage() { - const result = await sdk.cms.listEntries({ - modelId: "product" - }); - - if (result.isFail()) { - return
Error: {result.error.message}
; - } - - const products = result.value.data; - - return ( -
- {products.map(product => ( -
{product.values.name}
- ))} -
- ); -} -``` - -**Server Actions (for mutations):** - -```typescript app/actions.ts -"use server"; - -import { sdk } from "@/lib/webiny"; -import type { Product } from "@/lib/types"; - -export async function createProduct(formData: FormData) { - const result = await sdk.cms.createEntry({ - modelId: "product", - values: { - name: formData.get("name") as string, - description: formData.get("description") as string, - price: Number(formData.get("price")), - sku: formData.get("sku") as string - } - }); - - if (result.isFail()) { - return { error: result.error.message }; - } - - return { success: true, productId: result.value.id }; -} -``` - -## Entry Structure - -Every entry returned by the SDK has this structure: - -```typescript -{ - id: string; // Internal entry ID - entryId: string; // Business ID (stable across versions) - createdOn: string; // ISO timestamp - savedOn: string; // ISO timestamp - createdBy: { - // User who created the entry - id: string; - displayName: string; - } - ownedBy: { - // User who owns the entry - id: string; - displayName: string; - } - values: { - // Your field values - name: string; - description: string; - // ... other fields - } - meta: { - // Entry metadata - title: string; // Entry title (for display) - status: string; // "draft" | "published" | "unpublished" - version: number; // Entry version - locked: boolean; // Whether entry is locked for editing - } -} -``` - -## Type Safety - -Pass your interface as a generic to SDK methods for full type safety: - -```typescript -// ✅ Type-safe - product.values is typed as Product -const result = await sdk.cms.getEntry({ - modelId: "product", - entryId: "abc123" -}); - -if (result.isOk()) { - const name = result.value.values.name; // string (autocomplete works) - const price = result.value.values.price; // number -} - -// ❌ No type safety - product.values is any -const result = await sdk.cms.getEntry({ - modelId: "product", - entryId: "abc123" -}); -``` From 872430f7e66625997a971ad3261fdc77eaf26a20 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Wed, 11 Mar 2026 21:40:17 +0100 Subject: [PATCH 03/13] wip:3 (5743e) --- .../content-modeling-best-practices.ai.txt | 33 +++ .../content-modeling-best-practices.mdx | 117 ++++++++ .../content-models-via-code.ai.txt | 59 ++++ .../headless-cms/content-models-via-code.mdx | 273 ++++++++++++++++++ docs/developer-docs/6.x/navigation.tsx | 8 + 5 files changed, 490 insertions(+) create mode 100644 docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx create mode 100644 docs/developer-docs/6.x/headless-cms/content-models-via-code.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx diff --git a/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.ai.txt b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.ai.txt new file mode 100644 index 000000000..e0ae2b762 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.ai.txt @@ -0,0 +1,33 @@ +AI Context: Content Modeling Best Practices (headless-cms/content-modeling-best-practices.mdx) + +Source of Information: +1. 5.x doc: docs/developer-docs/5.x/headless-cms/basics/content-modeling-best-practices.mdx +2. 5.x doc: docs/developer-docs/5.x/headless-cms/extending/content-models-via-code.mdx (immutable properties) +3. Learn Webiny lesson: lw/content/lessons/headless-cms/creating-content-model-via-code.mdx + +Key Documentation Decisions: +- Heavily trimmed the 5.x version — removed redundant/verbose sections +- Kept: define types first, reusability via references, object vs reference trade-offs, naming, metadata, immutable properties, code vs UI recommendation +- Removed: Multilingual/localization section (no locales in v6), Dynamic Zone details (belongs in field reference), lengthy "collaborative approach" and "documentation" padding +- Added: reference field filtering limitation (can only filter by id/entryId, not nested values) — important gotcha +- Added: Object vs Reference comparison table +- Immutable properties section sourced from v5 code article's Best Practices section +- Cross-links to content-models-via-code.mdx + +Key Facts: +- Reference fields: can only filter by id or entryId, not by nested field values +- Objects: embed data, support filtering, data belongs only to the entry +- References: independent entries, shared across models, no nested filtering +- Never change: modelId, singularApiName, pluralApiName, fieldId, type, multipleValues +- Never remove from settings: models (ref fields), fields (object fields) +- Safe migration: add new field → migrate data → deprecate old field + +Related Documents: +- headless-cms/content-models-via-code.mdx — how to define models in code +- headless-cms/graphql-api-overview.mdx — API behavior (filtering, reference resolution) + +Tone Guidelines: +- Concise and direct — this is a reference/guide, not a tutorial +- Actionable — every section should tell the reader what to do and why +- No marketing language +- Tables where comparisons help (Object vs Reference) diff --git a/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx new file mode 100644 index 000000000..6f86d5c51 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx @@ -0,0 +1,117 @@ +--- +id: cms6bp01 +title: Content Modeling Best Practices +description: Best practices for designing scalable, reusable, and maintainable content models in Webiny Headless CMS +--- + +import { Alert } from "@/components/Alert"; + + + +- How to identify and define content types? +- How to design reusable, scalable models? +- How field type choices affect querying and filtering? +- What to keep consistent once a model is in production? + + + +## Overview + +A well-designed content model makes content easy to create, query, and evolve. Poor modeling decisions tend to surface later as data migration pain, limited query capabilities, or overly complex code. This page covers the key practices to get your content model right from the start. + +## Define Content Types Before Building + +Start by mapping out all the content your application needs before creating any models. Identify both primary content (blog posts, products, user profiles) and auxiliary content (categories, tags, metadata). + +For each content type, define its attributes and their types. Webiny supports: text, long text, rich text, number, boolean, datetime, file, reference, object, and dynamic zone fields. + +Doing this upfront prevents mid-project restructuring, which is costly once entries exist. + +## Design for Reusability with References + +Avoid embedding repeated content directly in a model. Instead, extract it into a separate model and use a **reference field** to link them. + +For example, rather than adding a `categoryName` text field to every product, create a `ProductCategory` model and reference it. This ensures consistency and means a category update propagates everywhere automatically. + +Use reference fields when: + +- The same entity is shared across multiple models +- The referenced content has its own lifecycle (publishing, versioning) +- You need to query or filter by the referenced entity's ID + + + +You can only filter reference fields by `id` or `entryId` — not by nested field values. If you need to filter products by category name, you must first fetch the category's ID, then use that ID in your product query. + + + +## Choose Objects vs References Deliberately + +**Objects** embed data directly inside the entry. They support filtering and are ideal for structured data that belongs only to that entry (e.g., product specifications, address fields). + +**Reference fields** link to independent entries in another model. They cannot be filtered by nested values, but allow the referenced content to exist independently and be shared. + +| Need | Use | +| ---------------------------------------- | --------- | +| Data belongs only to this entry | Object | +| Data is shared across entries | Reference | +| Need to filter by nested values | Object | +| Referenced content has its own lifecycle | Reference | + +## Separate Content from Presentation + +Structure your content independently of how it will be displayed. Avoid fields like `heroBackgroundColor` or `buttonLabel` — these are presentation concerns. Content fields should describe what something _is_, not how it looks. + +This ensures the same content can be delivered to a website, mobile app, or any other channel without modification. + +## Use Consistent Naming Conventions + +- **Model IDs** (`modelId`): camelCase, e.g. `blogPost`, `productCategory` +- **Field IDs** (`fieldId`): camelCase, e.g. `featuredImage`, `publishedAt` +- **Labels**: Title Case for display in the Admin UI + +Consistent naming reduces confusion and makes generated GraphQL queries predictable. + +## Include Metadata Fields + +Add SEO and discoverability fields to content models that will be indexed or shared: + +- `seoTitle` — overrides the page title for search engines +- `seoDescription` — meta description +- `slug` — URL-friendly identifier (use `.unique()` and `.pattern()` validation) + +## Never Change These Properties After Creation + +Once entries exist for a model, certain changes cause data loss or corruption: + +**Model-level — never change:** + +- `modelId` +- `singularApiName` / `pluralApiName` + +**Field-level — never change:** + +- `fieldId` +- `type` +- `multipleValues` (single ↔ list) + +**Reference and object settings — never remove:** + +- `settings.models` — you may add models but not remove them +- `settings.fields` — same rules apply to nested object fields + + + +If you need to rename or restructure a field after data exists, the safest approach is to add a new field, migrate data, then deprecate the old field rather than modifying it in place. + + + +## Prefer Code-Defined Models for Production + +For production projects, define models via code rather than the Admin UI. Code-defined models are version-controlled, reproducible across environments, and changes go through code review. + +See [Define Content Models via Code](/{version}/headless-cms/content-models-via-code) for the full guide. + +## Document Your Models + +Keep documentation for each model — its purpose, field definitions, and relationships to other models. For code-defined models, this can live as comments in the extension file or as a companion document. Clear documentation reduces onboarding time and prevents accidental misuse of fields. diff --git a/docs/developer-docs/6.x/headless-cms/content-models-via-code.ai.txt b/docs/developer-docs/6.x/headless-cms/content-models-via-code.ai.txt new file mode 100644 index 000000000..c27403bce --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/content-models-via-code.ai.txt @@ -0,0 +1,59 @@ +AI Context: Define Content Models via Code (headless-cms/content-models-via-code.mdx) + +Source of Information: +1. 5.x doc: docs/developer-docs/5.x/headless-cms/extending/content-models-via-code.mdx +2. Learn Webiny lesson: lw/content/lessons/headless-cms/creating-content-model-via-code.mdx (primary v6 reference) + +Key Documentation Decisions: +- v6 uses ModelFactory API with fluent builder pattern — NOT createModelPlugin/createModelGroupPlugin from v5 +- No locales in v6 — removed "define model for specific locale" example from v5 +- No tenant-specific example kept (can be added later if needed) +- Groups: v6 uses string identifier like "ungrouped" in .public() — no separate group plugin needed in basic case +- Kept: basic example, reference fields, object fields, available renderers table, best practices +- Removed: FAQ section (too verbose), security/authorization example, diff-ts code blocks (not idiomatic for v6 docs) +- Registration via Api.Extension in webiny.config.tsx +- Deployment via yarn webiny deploy api or yarn webiny watch api + +v6 ModelFactory API: +- Import: import { ModelFactory } from "webiny/api/cms/model" +- Class implements ModelFactory.Interface +- Method: async execute(builder: ModelFactory.Builder) +- Returns array of builder chains +- Export: ModelFactory.createImplementation({ implementation, dependencies }) +- .public({ modelId, name, group }) — makes model publicly accessible +- .description() — model description +- .singularApiName() / .pluralApiName() — GraphQL query names +- .layout() — field arrangement in Admin UI +- .titleFieldId() — field used as entry title in list views + +Field types (fluent): +- fields.text(), fields.longText(), fields.richText() +- fields.number(), fields.boolean(), fields.datetime() +- fields.file(), fields.ref(), fields.object() +- .list() — makes field a list/array +- .renderer(name) — UI renderer +- .label(), .help(), .required(), .unique() +- .minLength(), .maxLength(), .gte(), .lte(), .pattern() +- .models([{ modelId }]) — for ref fields +- .fields(subfields => ...) — for object fields + +Immutable properties (must never change after creation with data): +- modelId +- fieldId +- type +- multipleValues +- settings.models (can add, never remove) +- settings.fields (same rules as parent) + +Registration: +- In webiny.config.tsx: + +Related Documents: +- headless-cms/content-modeling-best-practices.mdx +- core-concepts/di.mdx +- headless-cms/graphql-api-overview.mdx + +Tone Guidelines: +- Technical reference with practical examples +- Code-first — let examples carry the explanation +- Concise prose, avoid repeating what code already shows diff --git a/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx b/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx new file mode 100644 index 000000000..c8445e618 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx @@ -0,0 +1,273 @@ +--- +id: cms6mdl1 +title: Define Content Models via Code +description: Learn how to define content models and content model groups programmatically using the ModelFactory API +--- + +import { Alert } from "@/components/Alert"; + + + +- Why define content models via code? +- How to create a content model using the [`ModelFactory`](/{version}/reference/api/cms/model#model-factory) API? +- How to define reference fields and object fields? +- How to register models as extensions? + + + +## Overview + +Content models can be defined in two ways: via the Admin UI Content Model Editor, or programmatically in code. Defining models via code keeps them in version control, makes them reproducible across environments, and ensures only developers can make structural changes. + +Once registered, code-defined models behave identically to UI-created models — they appear in the Admin, generate GraphQL APIs, and support all the same field types. + + + +Both approaches are valid. Use the UI for quick prototyping; use code for production projects, CI/CD pipelines, and team environments where model changes should go through code review. + + + +## Basic Example + +Content models are created using the [`ModelFactory`](/{version}/reference/api/cms/model#model-factory) API. Create an extension file and define your model using the fluent builder: + +```typescript extensions/productCategoryModel.ts +import { ModelFactory } from "webiny/api/cms/model"; + +class ProductCategoryModelImpl implements ModelFactory.Interface { + async execute(builder: ModelFactory.Builder) { + return [ + builder + .public({ + modelId: "productCategory", + name: "Product Category", + group: "ungrouped" + }) + .description("Product categories for organizing products") + .fields(fields => ({ + name: fields + .text() + .renderer("textInput") + .label("Name") + .required("Name is required") + .minLength(2) + .maxLength(100), + slug: fields + .text() + .renderer("textInput") + .label("Slug") + .required("Slug is required") + .unique() + .pattern( + "^[a-z0-9]+(?:-[a-z0-9]+)*$", + "Slug must be lowercase letters, numbers, and hyphens only" + ), + description: fields.longText().renderer("textarea").label("Description") + })) + .layout([["name", "slug"], ["description"]]) + .titleFieldId("name") + .singularApiName("ProductCategory") + .pluralApiName("ProductCategories") + ]; + } +} + +export default ModelFactory.createImplementation({ + implementation: ProductCategoryModelImpl, + dependencies: [] +}); +``` + +Then register it in `webiny.config.tsx`: + +```tsx webiny.config.tsx +import React from "react"; +import { Api } from "webiny/extensions"; + +export const Extensions = () => { + return ( + <> + {/* ... other extensions */} + + + ); +}; +``` + +### Builder API + +**Model configuration:** + +- `.public({ modelId, name, group })` — the model is visible in the Admin sidebar and exposed via the Read, Preview, and Manage GraphQL endpoints +- `.private({ modelId, name, group })` — the model is not visible in the Admin sidebar and not exposed via the public GraphQL endpoints; useful for internal or system-level models +- `.description()` — model description shown in the Admin +- `.singularApiName()` / `.pluralApiName()` — GraphQL query names +- `.layout()` — defines how fields are arranged in rows in the Admin UI (`[["field1", "field2"], ["field3"]]`) +- `.titleFieldId()` — which field to use as the entry title in list views + +**Field types:** + +- `fields.text()` — single-line text +- `fields.longText()` — multi-line text +- `fields.richText()` — rich text with formatting +- `fields.number()` — integer or float +- `fields.boolean()` — true/false toggle +- `fields.datetime()` — date and time +- `fields.file()` — file or image upload +- `fields.ref()` — reference to another model +- `fields.object()` — nested object with subfields + +**Field methods:** + +- `.label()` — display name +- `.help()` — helper text shown in the editor +- `.required(message)` — makes field required +- `.unique()` — ensures values are unique across entries +- `.minLength()` / `.maxLength()` — length validation +- `.gte()` / `.lte()` — numeric range validation +- `.pattern(regex, message)` — regex validation +- `.renderer(name)` — specifies the UI renderer (see [Available Renderers](#available-renderers)) + +## Reference Fields + +Reference fields link entries from one model to another. Use `fields.ref()` with `.models()` to specify which model(s) can be referenced: + +```typescript extensions/productModel.ts +import { ModelFactory } from "webiny/api/cms/model"; + +class ProductModelImpl implements ModelFactory.Interface { + async execute(builder: ModelFactory.Builder) { + return [ + builder + .public({ + modelId: "product", + name: "Product", + group: "ungrouped" + }) + .fields(fields => ({ + name: fields.text().renderer("textInput").label("Name").required("Name is required"), + price: fields + .number() + .renderer("numberInput") + .label("Price") + .required("Price is required") + .gte(0, "Price must be 0 or greater"), + category: fields + .ref() + .renderer("refDialogSingle") + .label("Category") + .models([{ modelId: "productCategory" }]) + })) + .layout([["name"], ["price"], ["category"]]) + .titleFieldId("name") + .singularApiName("Product") + .pluralApiName("Products") + ]; + } +} + +export default ModelFactory.createImplementation({ + implementation: ProductModelImpl, + dependencies: [] +}); +``` + +**Key reference field options:** + +- `.models([{ modelId }])` — which model(s) this field references +- `.list()` — after `.ref()`, allows multiple references (use `"refDialogMultiple"` renderer) +- Single reference renderer: `"refDialogSingle"` or `"refAutocompleteSingle"` +- Multiple reference renderer: `"refDialogMultiple"` or `"refAutocompleteMultiple"` + +## Object Fields + +Object fields contain nested subfields. Use `multipleValues` to allow a list of objects: + +```typescript +description: fields + .longText() + .renderer("textarea") + .label("Description"), +specs: fields + .object() + .renderer("objectAccordionSingle") + .label("Specifications") + .fields(subfields => ({ + weight: subfields.number().renderer("numberInput").label("Weight (kg)"), + dimensions: subfields.text().renderer("textInput").label("Dimensions") + })) +``` + +For a list of objects (e.g., multiple reviews), call `.list()` and use `"objectAccordionMultiple"` renderer: + +```typescript +reviews: fields + .object() + .list() + .renderer("objectAccordionMultiple") + .label("Reviews") + .fields(subfields => ({ + author: subfields.text().renderer("textInput").label("Author").required("Author is required"), + body: subfields.longText().renderer("textarea").label("Review") + })); +``` + +## Available Renderers + +All renderer names are available via TypeScript autocomplete when calling `.renderer()`, so you don't need to memorise this list — your editor will suggest the valid options for each field type. + +**Text fields:** `textInput`, `textarea`, `lexicalEditor` +**List variants:** `textInputs`, `textareas`, `lexicalEditors` +**Number fields:** `numberInput`, `numberInputs` +**Boolean fields:** `switch` +**Selection fields:** `dropdown`, `radioButtons`, `checkboxes`, `tags` +**Date/time fields:** `dateTimeInput`, `dateTimeInputs` +**Reference fields:** `refDialogSingle`, `refDialogMultiple`, `refAutocompleteSingle`, `refAutocompleteMultiple`, `refRadioButtons`, `refCheckboxes` +**File fields:** `file`, `files` +**Object fields:** `objectAccordionSingle`, `objectAccordionMultiple` +**Special:** `dynamicZone`, `hidden`, `passthrough` +**UI elements:** `uiSeparator`, `uiAlert`, `uiTabs` + +## Deploying Changes + +After creating or modifying a model extension, deploy the API: + +``` +yarn webiny deploy api +``` + +During development, use watch mode for automatic redeployment: + +``` +yarn webiny watch api +``` + +After deployment, the model appears in the Admin and its GraphQL API is generated automatically. + + + +If you define a model via code that already exists in the UI with the same `modelId`, you must delete the UI-created model before deploying to avoid conflicts. + + + +## Best Practices + +### Never change these properties after creation + +Changing the following properties after a model has entries will cause data loss or corruption: + +**Model-level:** + +- `modelId` — changing this orphans all existing entries + +**Field-level:** + +- `fieldId` — changing this breaks the field's data mapping +- `type` — field type cannot change once data exists +- `multipleValues` — changing from single to list or vice versa corrupts data +- `settings.models` — you can add models to a reference field but never remove them +- `settings.fields` — same rules apply to nested object fields + +### Models defined via code cannot be edited in the Admin UI + +All structural changes (adding, removing, or modifying fields) must be made in code. The Admin UI will display the model and its entries, but the model editor will not be available for code-defined models. diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index 878e1f2e8..7942f7451 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -51,6 +51,14 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { + + {/**/} {/* */} {/* */} From 99d168e984bd7a89e1251f246113a169fdc752ff Mon Sep 17 00:00:00 2001 From: adrians5j Date: Wed, 11 Mar 2026 21:55:05 +0100 Subject: [PATCH 04/13] wip:4 (rwcne) --- .../content-modeling-best-practices.mdx | 2 +- .../headless-cms/content-models-via-code.mdx | 128 ++++++++++++------ 2 files changed, 87 insertions(+), 43 deletions(-) diff --git a/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx index 6f86d5c51..064545f3f 100644 --- a/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx +++ b/docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx @@ -25,7 +25,7 @@ Start by mapping out all the content your application needs before creating any For each content type, define its attributes and their types. Webiny supports: text, long text, rich text, number, boolean, datetime, file, reference, object, and dynamic zone fields. -Doing this upfront prevents mid-project restructuring, which is costly once entries exist. +Doing this upfront prevents mid-project restructuring, which may be costly once entries exist. ## Design for Reusability with References diff --git a/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx b/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx index c8445e618..f05523eb2 100644 --- a/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx +++ b/docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx @@ -96,37 +96,43 @@ export const Extensions = () => { ### Builder API -**Model configuration:** - -- `.public({ modelId, name, group })` — the model is visible in the Admin sidebar and exposed via the Read, Preview, and Manage GraphQL endpoints -- `.private({ modelId, name, group })` — the model is not visible in the Admin sidebar and not exposed via the public GraphQL endpoints; useful for internal or system-level models -- `.description()` — model description shown in the Admin -- `.singularApiName()` / `.pluralApiName()` — GraphQL query names -- `.layout()` — defines how fields are arranged in rows in the Admin UI (`[["field1", "field2"], ["field3"]]`) -- `.titleFieldId()` — which field to use as the entry title in list views - -**Field types:** - -- `fields.text()` — single-line text -- `fields.longText()` — multi-line text -- `fields.richText()` — rich text with formatting -- `fields.number()` — integer or float -- `fields.boolean()` — true/false toggle -- `fields.datetime()` — date and time -- `fields.file()` — file or image upload -- `fields.ref()` — reference to another model -- `fields.object()` — nested object with subfields - -**Field methods:** - -- `.label()` — display name -- `.help()` — helper text shown in the editor -- `.required(message)` — makes field required -- `.unique()` — ensures values are unique across entries -- `.minLength()` / `.maxLength()` — length validation -- `.gte()` / `.lte()` — numeric range validation -- `.pattern(regex, message)` — regex validation -- `.renderer(name)` — specifies the UI renderer (see [Available Renderers](#available-renderers)) +**Model configuration** + +| Method | Description | +| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `.public({ modelId, name, group })` | Model is visible in the Admin sidebar and exposed via the Read, Preview, and Manage GraphQL endpoints | +| `.private({ modelId, name, group })` | Model is not visible in the Admin sidebar and not exposed via the public GraphQL endpoints; useful for internal or system-level models | +| `.description()` | Model description shown in the Admin | +| `.singularApiName()` / `.pluralApiName()` | GraphQL query names | +| `.layout()` | Defines how fields are arranged in rows in the Admin UI (`[["field1", "field2"], ["field3"]]`) | +| `.titleFieldId()` | Which field to use as the entry title in list views | + +**Field types** + +| Method | Description | +| ------------------- | ---------------------------- | +| `fields.text()` | Single-line text | +| `fields.longText()` | Multi-line text | +| `fields.richText()` | Rich text with formatting | +| `fields.number()` | Integer or float | +| `fields.boolean()` | True/false toggle | +| `fields.datetime()` | Date and time | +| `fields.file()` | File or image upload | +| `fields.ref()` | Reference to another model | +| `fields.object()` | Nested object with subfields | + +**Field methods** + +| Method | Description | +| ------------------------------- | --------------------------------------------------------------------------- | +| `.label()` | Display name | +| `.help()` | Helper text shown in the editor | +| `.required(message)` | Makes field required | +| `.unique()` | Ensures values are unique across entries | +| `.minLength()` / `.maxLength()` | Length validation | +| `.gte()` / `.lte()` | Numeric range validation | +| `.pattern(regex, message)` | Regex validation | +| `.renderer(name)` | Specifies the UI renderer (see [Available Renderers](#available-renderers)) | ## Reference Fields @@ -216,17 +222,19 @@ reviews: fields All renderer names are available via TypeScript autocomplete when calling `.renderer()`, so you don't need to memorise this list — your editor will suggest the valid options for each field type. -**Text fields:** `textInput`, `textarea`, `lexicalEditor` -**List variants:** `textInputs`, `textareas`, `lexicalEditors` -**Number fields:** `numberInput`, `numberInputs` -**Boolean fields:** `switch` -**Selection fields:** `dropdown`, `radioButtons`, `checkboxes`, `tags` -**Date/time fields:** `dateTimeInput`, `dateTimeInputs` -**Reference fields:** `refDialogSingle`, `refDialogMultiple`, `refAutocompleteSingle`, `refAutocompleteMultiple`, `refRadioButtons`, `refCheckboxes` -**File fields:** `file`, `files` -**Object fields:** `objectAccordionSingle`, `objectAccordionMultiple` -**Special:** `dynamicZone`, `hidden`, `passthrough` -**UI elements:** `uiSeparator`, `uiAlert`, `uiTabs` +| Field type | Renderers | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------ | +| Text | `textInput`, `textarea`, `lexicalEditor` | +| Text (list) | `textInputs`, `textareas`, `lexicalEditors` | +| Number | `numberInput`, `numberInputs` | +| Boolean | `switch` | +| Selection | `dropdown`, `radioButtons`, `checkboxes`, `tags` | +| Date/time | `dateTimeInput`, `dateTimeInputs` | +| Reference | `refDialogSingle`, `refDialogMultiple`, `refAutocompleteSingle`, `refAutocompleteMultiple`, `refRadioButtons`, `refCheckboxes` | +| File | `file`, `files` | +| Object | `objectAccordionSingle`, `objectAccordionMultiple` | +| Special | `dynamicZone`, `hidden`, `passthrough` | +| UI elements | `uiSeparator`, `uiAlert`, `uiTabs` | ## Deploying Changes @@ -250,6 +258,42 @@ If you define a model via code that already exists in the UI with the same `mode +## Tenant Scope + +By default, a model defined via code is registered for **all tenants** in your Webiny project. If you need a model to exist only on a specific tenant, use the [`TenantContext`](/{version}/reference/api/tenancy#tenant-context) to check the current tenant at runtime and conditionally return the model: + +```typescript extensions/productCategoryModel.ts +import { ModelFactory } from "webiny/api/cms/model"; +import { TenantContext } from "webiny/api/tenancy"; + +class ProductCategoryModelImpl implements ModelFactory.Interface { + public constructor(private tenantContext: TenantContext.Interface) {} + + async execute(builder: ModelFactory.Builder) { + const tenant = this.tenantContext.getTenant(); + + // Only register this model for the "acme" tenant. + if (tenant.id !== "acme") { + return []; + } + + return [ + builder.public({ + modelId: "productCategory", + name: "Product Category", + group: "ungrouped" + }) + // ... rest of the model definition + ]; + } +} + +export default ModelFactory.createImplementation({ + implementation: ProductCategoryModelImpl, + dependencies: [TenantContext] +}); +``` + ## Best Practices ### Never change these properties after creation From e9ebb8e78704e11ab70840e0b4b837c3561acf76 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 11:20:42 +0100 Subject: [PATCH 05/13] wip:5 (zd06m) --- .mdx-validation.json | 2 +- .../6.x/headless-cms/event-handlers.ai.txt | 77 +++++++ .../6.x/headless-cms/event-handlers.mdx | 194 ++++++++++++++++++ docs/developer-docs/6.x/navigation.tsx | 6 +- .../6.x/website-builder/event-handlers.ai.txt | 59 ++++++ .../6.x/website-builder/event-handlers.mdx | 172 ++++++++++++++++ 6 files changed, 505 insertions(+), 5 deletions(-) create mode 100644 docs/developer-docs/6.x/headless-cms/event-handlers.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/event-handlers.mdx create mode 100644 docs/developer-docs/6.x/website-builder/event-handlers.ai.txt create mode 100644 docs/developer-docs/6.x/website-builder/event-handlers.mdx diff --git a/.mdx-validation.json b/.mdx-validation.json index dc57a959f..896167758 100644 --- a/.mdx-validation.json +++ b/.mdx-validation.json @@ -1,5 +1,5 @@ { - "targetDir": "docs/developer-docs/6.0.x", + "targetDir": "docs/developer-docs/6.x", "exceptions": [ "get-started/welcome.mdx", "get-started/install-webiny.mdx", diff --git a/docs/developer-docs/6.x/headless-cms/event-handlers.ai.txt b/docs/developer-docs/6.x/headless-cms/event-handlers.ai.txt new file mode 100644 index 000000000..46eae501f --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/event-handlers.ai.txt @@ -0,0 +1,77 @@ +AI Context: Event Handlers (event-handlers.mdx) + +## Source of Information + +1. `docs/developer-docs/5.x/headless-cms/references/lifecycle-events.mdx` — v5 lifecycle events reference (ContextPlugin subscribe pattern — do NOT use in v6) +2. `docs/developer-docs/6.x/headless-cms/event-handler/entry.mdx` — v6 Entry event handler reference with all handler names and code templates +3. `docs/developer-docs/6.x/headless-cms/event-handler/model.mdx` — v6 Model event handler reference +4. `docs/developer-docs/6.x/headless-cms/event-handler/group.mdx` — v6 Group event handler reference +5. `docs/developer-docs/6.x/headless-cms/event-handler/entry-extended.mdx` — extended real-world entry handler example (unique field check using ListEntriesUseCase) +6. `docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx` — tone/structure reference + +## Key Documentation Decisions + +1. This is a conceptual "about" article, not a reference. It explains the pattern and shows 2-3 real examples. It links to the per-resource reference pages for the full event list. +2. The v5 `ContextPlugin.subscribe()` pattern is completely removed — the v6 pattern uses `XxxEventHandler.createImplementation()` with a class. +3. Examples were chosen for practical value: unique slug validation (Before handler, validation use case) and publish webhook (After handler, side effect use case). +4. The "Before vs After" comparison table is the key conceptual anchor — it answers the most common question developers have. +5. Navigation registration enables the event-handler reference sub-pages (`entry`, `model`, `group`, `entry-extended`) as well. These were previously commented out. + +## Understanding + +### Event handler lifecycle + +- `Before` handlers run before the database write. They receive `input` (raw user data) and the prepared entity. +- `After` handlers run after the write. They receive the persisted entity. +- Throwing in a `Before` handler aborts the operation; subsequent handlers for that event are skipped. +- `After` handlers cannot abort — the operation is complete. + +### v6 class-based pattern + +Every handler is a class implementing `[Resource][Before|After][Operation]EventHandler.Interface`. +The `handle(event)` method receives: `payload` (operation-specific data), `occurredAt` (timestamp), `eventType` (string identifier). +`createImplementation({ implementation, dependencies })` wires DI. +The file must `export default` the result of `createImplementation`. + +### Event payload structure + +- Entry handlers: `payload.entry`, `payload.model`, `payload.input` (Before only) +- Model handlers: `payload.model`, `payload.input` (Before only) +- Group handlers: `payload.group`, `payload.input` (Before only) +- After-update handlers also have `payload.original` (the pre-update entity) + +### Naming convention + +- Abstraction token: `[Resource][Before|After][Operation]EventHandler` +- Class: `[Resource][Before|After][Operation]EventHandlerImpl` +- Import alias: `[Resource][Before|After][Operation]EventHandlerAbstraction` (to avoid collision with the registered constant) + +### Registration + +Registered in `webiny.config.tsx` via `` — one `Api.Extension` per handler file. +Order of `Api.Extension` entries determines execution order when multiple handlers subscribe to the same event. + +## Related Documents + +- `event-handler/entry.mdx` — full list of Entry event handlers (reference) +- `event-handler/model.mdx` — full list of Model event handlers (reference) +- `event-handler/group.mdx` — full list of Group event handlers (reference) +- `event-handler/entry-extended.mdx` — extended before-create example with ListEntriesUseCase +- `content-models-via-code.mdx` — same DI and registration patterns +- `core-concepts/di.mdx` — DI system details +- `core-concepts/result.mdx` — Result pattern (used in ListEntriesUseCase result handling) + +## Key Code Locations + +- v6 entry event handler abstractions: `packages/api-headless-cms/src/export/entry/eventHandlers/` +- v6 model event handler abstractions: `packages/api-headless-cms/src/export/model/eventHandlers/` +- v6 group event handler abstractions: `packages/api-headless-cms/src/export/group/eventHandlers/` + +## Tone Guidelines + +- Practical and instructional — this is an "about" page that bridges concept and implementation +- Show the "why" before the "how": explain Before vs After semantics before showing code +- Keep the anatomy section abstract/generic; make the examples concrete and realistic +- Do not reproduce the full event list — link to reference pages instead +- Address the reader as "you" +- No analogies, no marketing language diff --git a/docs/developer-docs/6.x/headless-cms/event-handlers.mdx b/docs/developer-docs/6.x/headless-cms/event-handlers.mdx new file mode 100644 index 000000000..1fbf8d44a --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/event-handlers.mdx @@ -0,0 +1,194 @@ +--- +id: hn4p8xqk +title: Event Handlers +description: Learn how to react to Headless CMS lifecycle events using the event handler pattern in Webiny v6. +--- + +import { Alert } from "@/components/Alert"; + + + +- What are event handlers and when should you use them? +- How do "Before" and "After" handlers differ? +- How to implement a real-world event handler using the v6 class-based pattern? +- How to register event handlers in your project? + + + +## Overview + +Event handlers let you hook into Headless CMS lifecycle events — points in time immediately before or after an operation (create, update, delete, publish, etc.) completes. You implement a class, register it as an extension, and the system calls it automatically during that operation. + +Use event handlers when you need to: + +- Validate data before it is written (e.g., enforce a unique slug) +- Trigger side effects after an operation (e.g., notify an external system after an entry is published) +- Audit or log changes across groups, models, or entries + +Event handlers are available for all three Headless CMS resources: **Groups**, **Models**, and **Entries**. + +## Before vs. After Handlers + +Every operation has two hook points: + +| Handler type | When it runs | Can block the operation? | Payload contains | +| ------------ | ---------------- | -------------------------------- | -------------------------------------------------- | +| `Before` | Before the write | Yes — throw an error to abort | `input` (raw user input), the entity being written | +| `After` | After the write | No — operation already completed | The fully persisted entity | + +Use `Before` handlers for validation and authorization. Use `After` handlers for side effects like sending notifications or syncing data to external systems. + +## Anatomy of an Event Handler + +Every event handler follows the same structure: + +```typescript extensions/cms/entry/eventHandler/update/beforeUpdate.ts +import { EntryBeforeUpdateEventHandler } from "webiny/api/cms/entry"; +import { Logger } from "webiny/api/logger"; + +// 1. Implement the handler class +class EntryBeforeUpdateEventHandlerImpl implements EntryBeforeUpdateEventHandler.Interface { + public constructor(private logger: Logger.Interface) {} + + public async handle(event: EntryBeforeUpdateEventHandler.Event): Promise { + const { entry, original, input, model } = event.payload; + // your logic here + } +} + +// 2. Register and export +export default EntryBeforeUpdateEventHandler.createImplementation({ + implementation: EntryBeforeUpdateEventHandlerImpl, + dependencies: [Logger] +}); +``` + +Key points: + +- The class must implement the `Interface` type exported from the abstraction namespace. +- The `handle` method receives an `event` object with `payload`, `occurredAt`, and `eventType`. +- `payload` contains the resource-specific data (e.g., `entry`, `model`, `input`). +- Dependencies are injected via the constructor using the DI system — you do not instantiate them yourself. +- The file must use `export default`. + +## Example: Enforce a Unique Slug + +This `Before` handler prevents creating an entry when another entry with the same `slug` value already exists. It queries the database and throws if a duplicate is found. + +```typescript extensions/cms/entry/eventHandler/create/beforeCreate.ts +import { EntryBeforeCreateEventHandler, ListEntriesUseCase } from "webiny/api/cms/entry"; +import { Logger } from "webiny/api/logger"; + +class EntryBeforeCreateEventHandlerImpl implements EntryBeforeCreateEventHandler.Interface { + public constructor( + private logger: Logger.Interface, + private listEntriesUseCase: ListEntriesUseCase.Interface + ) {} + + public async handle(event: EntryBeforeCreateEventHandler.Event): Promise { + const { entry, model } = event.payload; + + // only run for the "article" model + if (model.modelId !== "article") { + return; + } + + const slug = entry.values.slug; + if (!slug) { + return; + } + + const result = await this.listEntriesUseCase.execute(model, { + where: { + values: { + slug + } + }, + limit: 1 + }); + + if (result.isFail()) { + this.logger.error("Error checking for duplicate slug:", result.error); + return; + } + + if (result.value.meta.totalCount > 0) { + throw new Error(`An entry with slug "${slug}" already exists.`); + } + } +} + +export default EntryBeforeCreateEventHandler.createImplementation({ + implementation: EntryBeforeCreateEventHandlerImpl, + dependencies: [Logger, ListEntriesUseCase] +}); +``` + +## Example: Notify an External System on Publish + +This `After` handler fires after an entry is published. It calls an external webhook with the published entry data. + +```typescript extensions/cms/entry/eventHandler/publish/afterPublish.ts +import { EntryAfterPublishEventHandler } from "webiny/api/cms/entry"; +import { Logger } from "webiny/api/logger"; + +class EntryAfterPublishEventHandlerImpl implements EntryAfterPublishEventHandler.Interface { + public constructor(private logger: Logger.Interface) {} + + public async handle(event: EntryAfterPublishEventHandler.Event): Promise { + const { entry, model } = event.payload; + + this.logger.info(`Entry published: ${entry.id} (model: ${model.modelId})`); + + await fetch("https://example.com/webhooks/cms-publish", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + modelId: model.modelId, + entryId: entry.entryId, + id: entry.id + }) + }); + } +} + +export default EntryAfterPublishEventHandler.createImplementation({ + implementation: EntryAfterPublishEventHandlerImpl, + dependencies: [Logger] +}); +``` + +## Registering Event Handlers + +After creating your handler files, register them in `webiny.config.tsx` using `Api.Extension`: + +```tsx webiny.config.tsx +import React from "react"; +import { Api } from "webiny/extensions"; + +export const Extensions = () => { + return ( + <> + {/* ... all your other extensions */} + + + + ); +}; +``` + +Each handler file is a separate `Api.Extension` entry. The order of registration determines the execution order when multiple handlers listen to the same event. + + + +If a `Before` handler throws an error, the operation is aborted and subsequent handlers for the same event are not called. Design your validation logic accordingly. + + + +## Available Events + +Events are organized by resource type. See the reference pages for the full list of available handlers: + +- [Entry Event Handlers](/{version}/reference/api/cms/entry#entry-after-create-event-handler) — create, update, delete, publish, unpublish, move, and more +- [Model Event Handlers](/{version}/reference/api/cms/model#model-after-create-event-handler) — create, update, delete, and clone +- [Group Event Handlers](/{version}/reference/api/cms/group#group-after-create-event-handler) — create, update, and delete diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index 7942f7451..f2c378961 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -59,11 +59,8 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { link={"headless-cms/content-modeling-best-practices"} title={"Content Modeling Best Practices"} /> + {/**/} - {/* */} - {/* */} - {/* */} - {/* */} {/* */} {/* */} {/* */} @@ -90,6 +87,7 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { + {/**/} {/* */} diff --git a/docs/developer-docs/6.x/website-builder/event-handlers.ai.txt b/docs/developer-docs/6.x/website-builder/event-handlers.ai.txt new file mode 100644 index 000000000..54c436bf7 --- /dev/null +++ b/docs/developer-docs/6.x/website-builder/event-handlers.ai.txt @@ -0,0 +1,59 @@ +AI Context: Event Handlers (event-handlers.mdx) + +## Source of Information + +1. `docs/developer-docs/6.x/website-builder/event-handler/pages.mdx` — existing page event handler reference (uses old alias pattern — do not mirror) +2. `http://localhost:3000/docs/reference/api/website-builder/page` — authoritative v6 reference with exact payload shapes +3. `docs/developer-docs/6.x/headless-cms/event-handlers.mdx` — structural template for this article + +## Key Documentation Decisions + +1. Mirrors the structure of `headless-cms/event-handlers.mdx` exactly — same sections, same tone, same pattern. +2. Handler naming convention differs from CMS: `Page[Before|After][Operation]Handler` (no "EventHandler" suffix). +3. Import path is `webiny/api/website-builder/page` (not `webiny/api/cms/...`). +4. `Before` create payload has `input` only (no `page` yet); `After` handlers always have `page`. +5. `Before` update payload has `original` + `input`; `After` update has `original` + `input` + `page`. +6. Examples chosen: slug format validation (BeforeCreate) and publish webhook (AfterPublish) — practical, real-world scenarios. + +## Understanding + +### Payload shapes (from reference) + +- `PageBeforeCreatePayload`: `{ input: ICreateWbPageParams }` +- `PageAfterCreatePayload`: `{ page: WbPage }` +- `PageBeforeUpdatePayload`: `{ original: WbPage, input: { id: string, data: IUpdateWbPageData } }` +- `PageAfterUpdatePayload`: `{ original: WbPage, input: { id, data }, page: WbPage }` +- `PageBeforeDeletePayload`: `{ page: WbPage }` +- `PageAfterDeletePayload`: `{ page: WbPage }` +- `PageBeforePublishPayload`: `{ page: WbPage }` +- `PageAfterPublishPayload`: `{ page: WbPage }` +- `PageBeforeUnpublishPayload`: `{ page: WbPage }` +- `PageAfterUnpublishPayload`: `{ page: WbPage }` +- `PageBeforeDuplicatePayload`: `{ original: WbPage }` +- `PageAfterDuplicatePayload`: `{ original: WbPage, page: WbPage }` +- `PageBeforeMovePayload`: `{ original: WbPage, input: IMoveWbPageParams }` +- `PageAfterMovePayload`: `{ original: WbPage, input: IMoveWbPageParams, page: WbPage }` +- `PageBeforeCreateRevisionFromPayload`: `{ params: ICreateWbPageRevisionFromParams }` +- `PageAfterCreateRevisionFromPayload`: `{ page: WbPage }` + +### Registration + +Same `webiny.config.tsx` + `Api.Extension` pattern as all other handlers. + +## Related Documents + +- `event-handler/pages.mdx` — full list of page event handlers (reference) +- `event-handler/redirects.mdx` — redirect event handlers (reference) +- `headless-cms/event-handlers.mdx` — CMS equivalent (structural template) +- `core-concepts/di.mdx` — DI system +- `core-concepts/result.mdx` — Result pattern + +## Key Code Locations + +- `packages/api-page-builder/src/export/page/eventHandlers/` + +## Tone Guidelines + +- Same tone as `headless-cms/event-handlers.mdx` — practical, instructional, concise +- No analogies, no marketing language +- Address the reader as "you" diff --git a/docs/developer-docs/6.x/website-builder/event-handlers.mdx b/docs/developer-docs/6.x/website-builder/event-handlers.mdx new file mode 100644 index 000000000..ae101442d --- /dev/null +++ b/docs/developer-docs/6.x/website-builder/event-handlers.mdx @@ -0,0 +1,172 @@ +--- +id: wb7eh2pq +title: Event Handlers +description: Learn how to react to Website Builder page lifecycle events using the event handler pattern in Webiny v6. +--- + +import { Alert } from "@/components/Alert"; + + + +- What are event handlers and when should you use them? +- How do "Before" and "After" handlers differ? +- How to implement a real-world event handler using the v6 class-based pattern? +- How to register event handlers in your project? + + + +## Overview + +Event handlers let you hook into Website Builder page lifecycle events — points in time immediately before or after an operation (create, update, delete, publish, etc.) completes. You implement a class, register it as an extension, and the system calls it automatically during that operation. + +Use event handlers when you need to: + +- Validate or modify page data before it is written (e.g., enforce a slug format) +- Trigger side effects after an operation (e.g., notify an external system after a page is published) +- Audit or log changes to pages + +## Before vs. After Handlers + +Every operation has two hook points: + +| Handler type | When it runs | Can block the operation? | Payload contains | +| ------------ | ---------------- | -------------------------------- | --------------------------------- | +| `Before` | Before the write | Yes — throw an error to abort | `input` (raw data being written) | +| `After` | After the write | No — operation already completed | `page` (the fully persisted page) | + +Use `Before` handlers for validation and data transformation. Use `After` handlers for side effects like webhooks or cache invalidation. + +## Anatomy of an Event Handler + +Every event handler follows the same structure: + +```typescript extensions/website-builder/page/eventHandler/update/beforeUpdate.ts +import { PageBeforeUpdateHandler } from "webiny/api/website-builder/page"; +import { Logger } from "webiny/api/logger"; + +class PageBeforeUpdateHandlerImpl implements PageBeforeUpdateHandler.Interface { + public constructor(private logger: Logger.Interface) {} + + public async handle(event: PageBeforeUpdateHandler.Event): Promise { + const { original, input } = event.payload; + // your logic here + } +} + +export default PageBeforeUpdateHandler.createImplementation({ + implementation: PageBeforeUpdateHandlerImpl, + dependencies: [Logger] +}); +``` + +Key points: + +- The class must implement the `Interface` type exported from the handler namespace. +- The `handle` method receives an `event` object — access data via `event.payload`. +- `Before` handlers receive `input` (what is being written); `After` handlers receive `page` (what was persisted). +- Dependencies are injected via the constructor — you do not instantiate them yourself. +- The file must use `export default`. + +## Example: Enforce a Slug Format + +This `Before` handler runs before a page is created and throws if the slug does not match a required pattern. + +```typescript extensions/website-builder/page/eventHandler/create/beforeCreate.ts +import { PageBeforeCreateHandler } from "webiny/api/website-builder/page"; +import { Logger } from "webiny/api/logger"; + +class PageBeforeCreateHandlerImpl implements PageBeforeCreateHandler.Interface { + public constructor(private logger: Logger.Interface) {} + + public async handle(event: PageBeforeCreateHandler.Event): Promise { + const { input } = event.payload; + + const slug = input.path; + if (!slug) { + return; + } + + // enforce that all page paths start with "/" + if (!slug.startsWith("/")) { + throw new Error(`Page path must start with "/". Received: "${slug}"`); + } + + this.logger.info(`Page path validated: ${slug}`); + } +} + +export default PageBeforeCreateHandler.createImplementation({ + implementation: PageBeforeCreateHandlerImpl, + dependencies: [Logger] +}); +``` + +## Example: Notify an External System on Publish + +This `After` handler fires after a page is published and sends the page data to an external webhook. + +```typescript extensions/website-builder/page/eventHandler/publish/afterPublish.ts +import { PageAfterPublishHandler } from "webiny/api/website-builder/page"; +import { Logger } from "webiny/api/logger"; + +class PageAfterPublishHandlerImpl implements PageAfterPublishHandler.Interface { + public constructor(private logger: Logger.Interface) {} + + public async handle(event: PageAfterPublishHandler.Event): Promise { + const { page } = event.payload; + + this.logger.info(`Page published: ${page.id} (${page.path})`); + + await fetch("https://example.com/webhooks/page-published", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + id: page.id, + path: page.path, + title: page.title + }) + }); + } +} + +export default PageAfterPublishHandler.createImplementation({ + implementation: PageAfterPublishHandlerImpl, + dependencies: [Logger] +}); +``` + +## Registering Event Handlers + +After creating your handler files, register them in `webiny.config.tsx` using `Api.Extension`: + +```tsx webiny.config.tsx +import React from "react"; +import { Api } from "webiny/extensions"; + +export const Extensions = () => { + return ( + <> + {/* ... all your other extensions */} + + + + ); +}; +``` + +Each handler file is a separate `Api.Extension` entry. The order of registration determines the execution order when multiple handlers listen to the same event. + + + +If a `Before` handler throws an error, the operation is aborted and subsequent handlers for the same event are not called. Design your validation logic accordingly. + + + +## Available Events + +See the reference pages for the full list of available handlers: + +- [Page Event Handlers](/{version}/reference/api/website-builder/page#page-after-create-handler) — create, update, delete, publish, unpublish, duplicate, move, and revision creation +- [Redirect Event Handlers](/{version}/reference/api/website-builder/redirect#redirect-after-create-handler) — create, update, delete, and move From 36014969d6179b58125dcc6a6f2058fcf4144af7 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 11:28:06 +0100 Subject: [PATCH 06/13] wip:7 (f8i3h) --- docs/developer-docs/6.x/headless-cms/event-handlers.mdx | 4 ++-- docs/developer-docs/6.x/website-builder/event-handlers.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/developer-docs/6.x/headless-cms/event-handlers.mdx b/docs/developer-docs/6.x/headless-cms/event-handlers.mdx index 1fbf8d44a..ac2dfadbb 100644 --- a/docs/developer-docs/6.x/headless-cms/event-handlers.mdx +++ b/docs/developer-docs/6.x/headless-cms/event-handlers.mdx @@ -1,7 +1,7 @@ --- id: hn4p8xqk title: Event Handlers -description: Learn how to react to Headless CMS lifecycle events using the event handler pattern in Webiny v6. +description: Learn how to react to Headless CMS lifecycle events using the event handler pattern. --- import { Alert } from "@/components/Alert"; @@ -10,7 +10,7 @@ import { Alert } from "@/components/Alert"; - What are event handlers and when should you use them? - How do "Before" and "After" handlers differ? -- How to implement a real-world event handler using the v6 class-based pattern? +- How to implement a real-world event handler using the class-based pattern? - How to register event handlers in your project? diff --git a/docs/developer-docs/6.x/website-builder/event-handlers.mdx b/docs/developer-docs/6.x/website-builder/event-handlers.mdx index ae101442d..979014871 100644 --- a/docs/developer-docs/6.x/website-builder/event-handlers.mdx +++ b/docs/developer-docs/6.x/website-builder/event-handlers.mdx @@ -1,7 +1,7 @@ --- id: wb7eh2pq title: Event Handlers -description: Learn how to react to Website Builder page lifecycle events using the event handler pattern in Webiny v6. +description: Learn how to react to Website Builder page lifecycle events using the event handler pattern. --- import { Alert } from "@/components/Alert"; @@ -10,7 +10,7 @@ import { Alert } from "@/components/Alert"; - What are event handlers and when should you use them? - How do "Before" and "After" handlers differ? -- How to implement a real-world event handler using the v6 class-based pattern? +- How to implement a real-world event handler using the class-based pattern? - How to register event handlers in your project? From 4c1360d011627e09bf3afa4ab741d2935ea400bc Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 11:36:38 +0100 Subject: [PATCH 07/13] wip:8 (ymm8e) --- docs/developer-docs/6.x/navigation.tsx | 7 +- .../developer-docs/6.x/reference/admin.ai.txt | 7 +- docs/developer-docs/6.x/reference/admin.mdx | 33 +++++++ .../6.x/reference/admin/aco.ai.txt | 4 +- .../6.x/reference/admin/build-params.ai.txt | 4 +- .../6.x/reference/admin/cms.ai.txt | 6 +- .../6.x/reference/admin/cms.mdx | 73 +++----------- .../reference/admin/cms/entry/editor.ai.txt | 4 +- .../6.x/reference/admin/cms/entry/list.ai.txt | 4 +- .../cms/field-renderers/dynamic-zone.ai.txt | 25 +++++ .../cms/field-renderers/dynamic-zone.mdx | 21 ++++ .../admin/cms/field-renderers/object.ai.txt | 25 +++++ .../admin/cms/field-renderers/object.mdx | 21 ++++ .../6.x/reference/admin/cms/lexical.ai.txt | 4 +- .../6.x/reference/admin/cms/model.ai.txt | 10 +- .../6.x/reference/admin/cms/model.mdx | 97 ++++++------------- .../6.x/reference/admin/configs.ai.txt | 4 +- .../6.x/reference/admin/env-config.ai.txt | 4 +- .../6.x/reference/admin/form.ai.txt | 4 +- .../6.x/reference/admin/graphql-client.ai.txt | 4 +- .../6.x/reference/admin/lexical.ai.txt | 4 +- .../6.x/reference/admin/local-storage.ai.txt | 4 +- .../6.x/reference/admin/router.ai.txt | 4 +- .../6.x/reference/admin/security.ai.txt | 4 +- .../6.x/reference/admin/tenancy.ai.txt | 10 +- .../6.x/reference/admin/tenancy.mdx | 97 ++++++++++++++++++- .../6.x/reference/admin/ui.ai.txt | 4 +- .../reference/admin/website-builder.ai.txt | 9 +- .../6.x/reference/admin/website-builder.mdx | 37 ++++++- .../admin/website-builder/lexical.ai.txt | 4 +- .../admin/website-builder/page/editor.ai.txt | 4 +- .../admin/website-builder/page/list.ai.txt | 4 +- .../website-builder/redirect/list.ai.txt | 4 +- docs/developer-docs/6.x/reference/api.ai.txt | 4 +- .../6.x/reference/api/build-params.ai.txt | 4 +- .../6.x/reference/api/cms/entry.ai.txt | 4 +- .../6.x/reference/api/cms/group.ai.txt | 4 +- .../6.x/reference/api/cms/model.ai.txt | 4 +- .../6.x/reference/api/event-publisher.ai.txt | 4 +- .../6.x/reference/api/graphql.ai.txt | 4 +- .../6.x/reference/api/key-value-store.ai.txt | 4 +- .../6.x/reference/api/logger.ai.txt | 4 +- .../6.x/reference/api/security.ai.txt | 4 +- .../6.x/reference/api/security/api-key.ai.txt | 4 +- .../api/security/authentication.ai.txt | 4 +- .../6.x/reference/api/security/role.ai.txt | 4 +- .../6.x/reference/api/security/user.ai.txt | 4 +- .../6.x/reference/api/system.ai.txt | 4 +- .../6.x/reference/api/tasks.ai.txt | 4 +- .../6.x/reference/api/tenancy.ai.txt | 4 +- .../6.x/reference/api/tenant-manager.ai.txt | 4 +- .../api/website-builder/nextjs.ai.txt | 4 +- .../reference/api/website-builder/page.ai.txt | 4 +- .../api/website-builder/redirect.ai.txt | 4 +- .../6.x/reference/cli/command.ai.txt | 4 +- .../6.x/reference/cli/overview.ai.txt | 4 +- .../6.x/reference/extensions.ai.txt | 4 +- .../6.x/reference/extensions.mdx | 20 ++++ .../6.x/reference/infra/admin.ai.txt | 4 +- .../6.x/reference/infra/api.ai.txt | 4 +- .../6.x/reference/infra/core.ai.txt | 4 +- .../6.x/reference/infra/overview.ai.txt | 4 +- scripts/generate-reference.ts | 6 +- 63 files changed, 444 insertions(+), 244 deletions(-) create mode 100644 docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.ai.txt create mode 100644 docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.mdx create mode 100644 docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.ai.txt create mode 100644 docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.mdx diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index 05aacefef..e2ea84de4 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -169,8 +169,11 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { - - + + diff --git a/docs/developer-docs/6.x/reference/admin.ai.txt b/docs/developer-docs/6.x/reference/admin.ai.txt index 656e3a84a..77654e17c 100644 --- a/docs/developer-docs/6.x/reference/admin.ai.txt +++ b/docs/developer-docs/6.x/reference/admin.ai.txt @@ -6,6 +6,7 @@ Source of Information: 3. /Users/adrian/dev/wby-next/packages/app/src/errors/index.ts — originating source 4. /Users/adrian/dev/wby-next/packages/app-admin/src/permissions/index.ts — originating source 5. /Users/adrian/dev/wby-next/packages/app-admin/src/features/buildParams/index.ts — originating source +6. /Users/adrian/dev/wby-next/packages/app-admin/src/routes.ts — originating source Key Documentation Decisions: - This file is auto-generated by scripts/generate-reference.ts — do not edit manually @@ -14,13 +15,13 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -useFeature, NetworkErrorEventHandler, createPermissionSchema, createHasPermission, createUsePermissions, BuildParam, BuildParams +useFeature, NetworkErrorEventHandler, createPermissionSchema, createHasPermission, createUsePermissions, BuildParam, BuildParams, Routes Import Path: webiny/admin Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin.mdx b/docs/developer-docs/6.x/reference/admin.mdx index 53b845e6b..92aa742b9 100644 --- a/docs/developer-docs/6.x/reference/admin.mdx +++ b/docs/developer-docs/6.x/reference/admin.mdx @@ -18,6 +18,10 @@ import { SymbolList } from "@/components/SymbolList"; This page documents everything exported from `webiny/admin`. Import any of the items below directly from this path in your Webiny extensions. +**Components** + + + **Hooks** @@ -35,6 +39,35 @@ This page documents everything exported from `webiny/admin`. Import any of the i ]} /> +## Components + +### `Routes` + +**Constant** — imported from `webiny/admin` + +```typescript +import { Routes } from "webiny/admin"; +``` + +```typescript +export const Routes = { + Dashboard: new Route({ + name: "Dashboard", + path: "/" + }), + + FileManager: new Route({ + name: "FileManager", + path: "/file-manager" + }), + + CatchAll: new Route({ + name: "CatchAll", + path: "*" + }) +}; +``` + ## Hooks ### `useFeature` diff --git a/docs/developer-docs/6.x/reference/admin/aco.ai.txt b/docs/developer-docs/6.x/reference/admin/aco.ai.txt index 735f21b6d..7a6e5aa77 100644 --- a/docs/developer-docs/6.x/reference/admin/aco.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/aco.ai.txt @@ -17,8 +17,8 @@ useRecords, useNavigateFolder Import Path: webiny/admin/aco Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/build-params.ai.txt b/docs/developer-docs/6.x/reference/admin/build-params.ai.txt index e0c8f90e5..8b9d8acfa 100644 --- a/docs/developer-docs/6.x/reference/admin/build-params.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/build-params.ai.txt @@ -16,8 +16,8 @@ BuildParam, BuildParams Import Path: webiny/admin/build-params Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms.ai.txt b/docs/developer-docs/6.x/reference/admin/cms.ai.txt index 9c71a89d5..956681ffb 100644 --- a/docs/developer-docs/6.x/reference/admin/cms.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms.ai.txt @@ -17,13 +17,13 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -useQuery, useLazyQuery, useMutation, useModel, usePermission, Routes, CmsContentEntry, CmsModel, CmsModelField, CmsIdentity, CmsLayoutFieldTypePlugin, CmsLayoutDescriptorRendererPlugin, CmsBaseLayoutDescriptor, CmsLayoutDescriptor +useQuery, useLazyQuery, useMutation, useModel, usePermission, Routes, CmsContentEntry, CmsModel, CmsModelField, CmsModelLayoutField, CmsIdentity Import Path: webiny/admin/cms Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms.mdx b/docs/developer-docs/6.x/reference/admin/cms.mdx index 7ed0fdf57..63570bb7e 100644 --- a/docs/developer-docs/6.x/reference/admin/cms.mdx +++ b/docs/developer-docs/6.x/reference/admin/cms.mdx @@ -38,14 +38,11 @@ This page documents everything exported from `webiny/admin/cms`. Import any of t @@ -186,22 +183,6 @@ export const useQuery = function ( ## Types -### `CmsBaseLayoutDescriptor` - -**Type** — imported from `webiny/admin/cms` - -```typescript -import type { CmsBaseLayoutDescriptor } from "webiny/admin/cms"; -``` - -```typescript -export interface CmsBaseLayoutDescriptor { - id: string; - type: string; - rules?: FieldRule[]; -} -``` - ### `CmsContentEntry` **Type** — imported from `webiny/admin/cms` @@ -230,66 +211,42 @@ export interface CmsIdentity { } ``` -### `CmsLayoutDescriptor` - -**Type** — imported from `webiny/admin/cms` - -```typescript -import type { CmsLayoutDescriptor } from "webiny/admin/cms"; -``` - -```typescript -export type CmsLayoutDescriptor = - | CmsSeparatorLayoutDescriptor - | CmsAlertLayoutDescriptor - | CmsTabLayoutDescriptor - | CmsBaseLayoutDescriptor; -``` - -### `CmsLayoutDescriptorRendererPlugin` - -**Type** — imported from `webiny/admin/cms` - -```typescript -import type { CmsLayoutDescriptorRendererPlugin } from "webiny/admin/cms"; -``` - -```typescript -export interface CmsLayoutDescriptorRendererPlugin extends Plugin { ... } -``` - -### `CmsLayoutFieldTypePlugin` +### `CmsModel` **Type** — imported from `webiny/admin/cms` ```typescript -import type { CmsLayoutFieldTypePlugin } from "webiny/admin/cms"; +import type { CmsModel } from "webiny/admin/cms"; ``` ```typescript -export interface CmsLayoutFieldTypePlugin extends Plugin { ... } +export interface CmsModel { ... } ``` -### `CmsModel` +### `CmsModelField` **Type** — imported from `webiny/admin/cms` ```typescript -import type { CmsModel } from "webiny/admin/cms"; +import type { CmsModelField } from "webiny/admin/cms"; ``` ```typescript -export interface CmsModel { ... } +export type CmsModelField = T & { ... }; ``` -### `CmsModelField` +### `CmsModelLayoutField` **Type** — imported from `webiny/admin/cms` ```typescript -import type { CmsModelField } from "webiny/admin/cms"; +import type { CmsModelLayoutField } from "webiny/admin/cms"; ``` ```typescript -export type CmsModelField = T & { ... }; +export interface CmsModelLayoutField { + id: string; + type: string; + rules?: FieldRule[]; +} ``` diff --git a/docs/developer-docs/6.x/reference/admin/cms/entry/editor.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/entry/editor.ai.txt index 5fd4c6d9b..f770c5ce0 100644 --- a/docs/developer-docs/6.x/reference/admin/cms/entry/editor.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms/entry/editor.ai.txt @@ -19,8 +19,8 @@ useContentEntryForm, useContentEntryEditor, ContentEntryEditorConfig, useSingleE Import Path: webiny/admin/cms/entry/editor Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms/entry/list.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/entry/list.ai.txt index 7c80a8db2..2a7704f2c 100644 --- a/docs/developer-docs/6.x/reference/admin/cms/entry/list.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms/entry/list.ai.txt @@ -17,8 +17,8 @@ ContentEntryListConfig, useContentEntriesList Import Path: webiny/admin/cms/entry/list Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.ai.txt new file mode 100644 index 000000000..8021b1469 --- /dev/null +++ b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.ai.txt @@ -0,0 +1,25 @@ +AI Context: Dynamic Zone (reference/admin/cms/field-renderers/dynamic-zone.mdx) + +Source of Information: +1. packages/webiny/src/admin/cms/field-renderers/dynamic-zone.ts — barrel re-export file + + +Key Documentation Decisions: +- This file is auto-generated by scripts/generate-reference.ts — do not edit manually +- Symbols are documented in the order they appear in the barrel file +- Declaration text is extracted from the TypeScript AST; method bodies are stripped +- Type-only exports are labeled as "Type"; namespace exports include member listings + +Exported Symbols: + + +Import Path: webiny/admin/cms/field-renderers/dynamic-zone + +Related Documents: +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns + +Tone Guidelines: +- This is a reference page — terse, API-focused, no prose beyond what's necessary +- Code blocks are the primary content; descriptions serve only to clarify intent +- Do not add analogies or long explanations — link to guide pages for those diff --git a/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.mdx b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.mdx new file mode 100644 index 000000000..47801d2af --- /dev/null +++ b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/dynamic-zone.mdx @@ -0,0 +1,21 @@ +--- +id: ywrtaw4v +title: Dynamic Zone +description: "Reference for webiny/admin/cms/field-renderers/dynamic-zone" +--- + +import { Alert } from "@/components/Alert"; +import { SymbolList } from "@/components/SymbolList"; + + + +- What is exported from `webiny/admin/cms/field-renderers/dynamic-zone`? +- How to import and use each exported item? + + + +## Overview + +This page documents everything exported from `webiny/admin/cms/field-renderers/dynamic-zone`. Import any of the items below directly from this path in your Webiny extensions. + +_No exported symbols found._ diff --git a/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.ai.txt new file mode 100644 index 000000000..28277b00e --- /dev/null +++ b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.ai.txt @@ -0,0 +1,25 @@ +AI Context: Object (reference/admin/cms/field-renderers/object.mdx) + +Source of Information: +1. packages/webiny/src/admin/cms/field-renderers/object.ts — barrel re-export file + + +Key Documentation Decisions: +- This file is auto-generated by scripts/generate-reference.ts — do not edit manually +- Symbols are documented in the order they appear in the barrel file +- Declaration text is extracted from the TypeScript AST; method bodies are stripped +- Type-only exports are labeled as "Type"; namespace exports include member listings + +Exported Symbols: + + +Import Path: webiny/admin/cms/field-renderers/object + +Related Documents: +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns + +Tone Guidelines: +- This is a reference page — terse, API-focused, no prose beyond what's necessary +- Code blocks are the primary content; descriptions serve only to clarify intent +- Do not add analogies or long explanations — link to guide pages for those diff --git a/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.mdx b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.mdx new file mode 100644 index 000000000..2ca35754a --- /dev/null +++ b/docs/developer-docs/6.x/reference/admin/cms/field-renderers/object.mdx @@ -0,0 +1,21 @@ +--- +id: ywrtaw4v +title: Object +description: "Reference for webiny/admin/cms/field-renderers/object" +--- + +import { Alert } from "@/components/Alert"; +import { SymbolList } from "@/components/SymbolList"; + + + +- What is exported from `webiny/admin/cms/field-renderers/object`? +- How to import and use each exported item? + + + +## Overview + +This page documents everything exported from `webiny/admin/cms/field-renderers/object`. Import any of the items below directly from this path in your Webiny extensions. + +_No exported symbols found._ diff --git a/docs/developer-docs/6.x/reference/admin/cms/lexical.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/lexical.ai.txt index 46e31057e..78042214d 100644 --- a/docs/developer-docs/6.x/reference/admin/cms/lexical.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms/lexical.ai.txt @@ -16,8 +16,8 @@ useLexicalEditorConfig, LexicalHtmlRenderer, getNodeFromSelection, useCurrentEle Import Path: webiny/admin/cms/lexical Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms/model.ai.txt b/docs/developer-docs/6.x/reference/admin/cms/model.ai.txt index eedddd27a..c0bc62491 100644 --- a/docs/developer-docs/6.x/reference/admin/cms/model.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms/model.ai.txt @@ -2,8 +2,8 @@ AI Context: Model (reference/admin/cms/model.mdx) Source of Information: 1. packages/webiny/src/admin/cms/model.ts — barrel re-export file -2. /Users/adrian/dev/wby-next/packages/app-headless-cms-common/src/Fields/index.ts — originating source -3. /Users/adrian/dev/wby-next/packages/app-headless-cms-common/src/types/index.ts — originating source +2. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.ts — originating source +3. /Users/adrian/dev/wby-next/packages/app-headless-cms-common/src/Fields/index.ts — originating source Key Documentation Decisions: - This file is auto-generated by scripts/generate-reference.ts — do not edit manually @@ -12,13 +12,13 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -useFieldAccessControlRules, useEffectiveRules, CmsLayoutFieldTypePlugin, CmsLayoutDescriptorRendererPlugin, CmsBaseLayoutDescriptor, CmsLayoutDescriptor +RulesEditor, useFieldAccessControlRules, useFieldEffectiveRules Import Path: webiny/admin/cms/model Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/cms/model.mdx b/docs/developer-docs/6.x/reference/admin/cms/model.mdx index 4be25704a..ed0d86bbd 100644 --- a/docs/developer-docs/6.x/reference/admin/cms/model.mdx +++ b/docs/developer-docs/6.x/reference/admin/cms/model.mdx @@ -18,43 +18,45 @@ import { SymbolList } from "@/components/SymbolList"; This page documents everything exported from `webiny/admin/cms/model`. Import any of the items below directly from this path in your Webiny extensions. -**Hooks** +**Components** - + -**Types** +**Hooks** -## Hooks +## Components -### `useEffectiveRules` +### `RulesEditor` -**Function** — imported from `webiny/admin/cms/model` - -Composes useParentRules and useFieldRules into a single hook -that returns the effective (intersected) rules. +**Constant** — imported from `webiny/admin/cms/model` ```typescript -import { useEffectiveRules } from "webiny/admin/cms/model"; +import { RulesEditor } from "webiny/admin/cms/model"; ``` ```typescript -export function useEffectiveRules(item: HasRules): EffectiveFieldRules; +export const RulesEditor = ({ + fieldOptions, + actionOptions = DEFAULT_ACTION_OPTIONS +}: RulesTabProps) => { + const bind = useBind({ name: "rules" }); + const allRules: FieldRule[] = bind.value || []; + const entryRules = allRules.filter(r => r.type === "condition"); + const otherRules = allRules.filter(r => r.type !== "condition"); + + const addRule = () => { + const newRule: ``` +## Hooks + ### `useFieldAccessControlRules` **Function** — imported from `webiny/admin/cms/model` @@ -72,60 +74,17 @@ export function useFieldAccessControlRules( ): Pick; ``` -## Types - -### `CmsBaseLayoutDescriptor` - -**Type** — imported from `webiny/admin/cms/model` - -```typescript -import type { CmsBaseLayoutDescriptor } from "webiny/admin/cms/model"; -``` - -```typescript -export interface CmsBaseLayoutDescriptor { - id: string; - type: string; - rules?: FieldRule[]; -} -``` - -### `CmsLayoutDescriptor` - -**Type** — imported from `webiny/admin/cms/model` - -```typescript -import type { CmsLayoutDescriptor } from "webiny/admin/cms/model"; -``` - -```typescript -export type CmsLayoutDescriptor = - | CmsSeparatorLayoutDescriptor - | CmsAlertLayoutDescriptor - | CmsTabLayoutDescriptor - | CmsBaseLayoutDescriptor; -``` - -### `CmsLayoutDescriptorRendererPlugin` +### `useFieldEffectiveRules` -**Type** — imported from `webiny/admin/cms/model` - -```typescript -import type { CmsLayoutDescriptorRendererPlugin } from "webiny/admin/cms/model"; -``` - -```typescript -export interface CmsLayoutDescriptorRendererPlugin extends Plugin { ... } -``` - -### `CmsLayoutFieldTypePlugin` +**Function** — imported from `webiny/admin/cms/model` -**Type** — imported from `webiny/admin/cms/model` +Composes useParentRules and useFieldRules into a single hook +that returns the effective (intersected) rules. ```typescript -import type { CmsLayoutFieldTypePlugin } from "webiny/admin/cms/model"; +import { useFieldEffectiveRules } from "webiny/admin/cms/model"; ``` ```typescript -export interface CmsLayoutFieldTypePlugin extends Plugin { ... } +export function useFieldEffectiveRules(item: HasRules): EffectiveFieldRules; ``` diff --git a/docs/developer-docs/6.x/reference/admin/configs.ai.txt b/docs/developer-docs/6.x/reference/admin/configs.ai.txt index d07f212ad..8d8d1bbfc 100644 --- a/docs/developer-docs/6.x/reference/admin/configs.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/configs.ai.txt @@ -16,8 +16,8 @@ Exported Symbols: Import Path: webiny/admin/configs Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/env-config.ai.txt b/docs/developer-docs/6.x/reference/admin/env-config.ai.txt index f06611619..1a7322e88 100644 --- a/docs/developer-docs/6.x/reference/admin/env-config.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/env-config.ai.txt @@ -16,8 +16,8 @@ EnvConfig Import Path: webiny/admin/env-config Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/form.ai.txt b/docs/developer-docs/6.x/reference/admin/form.ai.txt index 132963c10..b4cf9aa41 100644 --- a/docs/developer-docs/6.x/reference/admin/form.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/form.ai.txt @@ -17,8 +17,8 @@ Bind, Form, UnsetOnUnmount, useBind, useBindPrefix, useGenerateSlug, useForm, Fo Import Path: webiny/admin/form Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/graphql-client.ai.txt b/docs/developer-docs/6.x/reference/admin/graphql-client.ai.txt index 9767dd619..2a36cd042 100644 --- a/docs/developer-docs/6.x/reference/admin/graphql-client.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/graphql-client.ai.txt @@ -16,8 +16,8 @@ GraphQLClient Import Path: webiny/admin/graphql-client Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/lexical.ai.txt b/docs/developer-docs/6.x/reference/admin/lexical.ai.txt index 321778c84..43cc19c8c 100644 --- a/docs/developer-docs/6.x/reference/admin/lexical.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/lexical.ai.txt @@ -17,8 +17,8 @@ getNodeFromSelection, useCurrentElement, useCurrentSelection, useDeriveValueFrom Import Path: webiny/admin/lexical Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/local-storage.ai.txt b/docs/developer-docs/6.x/reference/admin/local-storage.ai.txt index 088fe4abb..74c84ee59 100644 --- a/docs/developer-docs/6.x/reference/admin/local-storage.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/local-storage.ai.txt @@ -17,8 +17,8 @@ LocalStorage, useLocalStorage, useLocalStorageValue, useLocalStorageValues Import Path: webiny/admin/local-storage Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/router.ai.txt b/docs/developer-docs/6.x/reference/admin/router.ai.txt index 2c348e703..4a9f4c6cd 100644 --- a/docs/developer-docs/6.x/reference/admin/router.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/router.ai.txt @@ -17,8 +17,8 @@ Route, useRoute, useRouter Import Path: webiny/admin/router Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/security.ai.txt b/docs/developer-docs/6.x/reference/admin/security.ai.txt index 7c3d48631..074175022 100644 --- a/docs/developer-docs/6.x/reference/admin/security.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/security.ai.txt @@ -22,8 +22,8 @@ AuthenticationErrorEventHandler, LogInUseCase, LogOutUseCase, AuthenticationCont Import Path: webiny/admin/security Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/tenancy.ai.txt b/docs/developer-docs/6.x/reference/admin/tenancy.ai.txt index 205ae1e30..cd7ae5299 100644 --- a/docs/developer-docs/6.x/reference/admin/tenancy.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/tenancy.ai.txt @@ -4,6 +4,10 @@ Source of Information: 1. packages/webiny/src/admin/tenancy.ts — barrel re-export file 2. /Users/adrian/dev/wby-next/packages/app-admin/src/features/tenancy/abstractions.ts — originating source 3. /Users/adrian/dev/wby-next/packages/app-admin/src/presentation/tenancy/useTenantContext.ts — originating source +4. /Users/adrian/dev/wby-next/packages/tenant-manager/src/admin/types.ts — originating source +5. /Users/adrian/dev/wby-next/packages/tenant-manager/src/admin/EnableTenant/index.ts — originating source +6. /Users/adrian/dev/wby-next/packages/tenant-manager/src/admin/DisableTenant/index.ts — originating source +7. /Users/adrian/dev/wby-next/packages/tenant-manager/src/admin/CurrentTenant/useCurrentTenant.ts — originating source Key Documentation Decisions: - This file is auto-generated by scripts/generate-reference.ts — do not edit manually @@ -12,13 +16,13 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -TenantContext, useTenantContext +TenantContext, useTenantContext, TenantEntry, useEnableTenant, useDisableTenant, useCurrentTenant Import Path: webiny/admin/tenancy Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/tenancy.mdx b/docs/developer-docs/6.x/reference/admin/tenancy.mdx index b7ba2b6dc..70889e39c 100644 --- a/docs/developer-docs/6.x/reference/admin/tenancy.mdx +++ b/docs/developer-docs/6.x/reference/admin/tenancy.mdx @@ -24,7 +24,18 @@ This page documents everything exported from `webiny/admin/tenancy`. Import any **Hooks** - + + +**Types** + + ## Components @@ -42,6 +53,74 @@ export const TenantContext = new Abstraction("TenantContext"); ## Hooks +### `useCurrentTenant` + +**Constant** — imported from `webiny/admin/tenancy` + +```typescript +import { useCurrentTenant } from "webiny/admin/tenancy"; +``` + +```typescript +export const useCurrentTenant = () => { + const { presenter } = useFeature(CurrentTenantFeature); + // The app is not rendered till the tenant is loaded. + // If this hook is used, it's safe to assume the tenant is loaded. + const [tenant, setTenant] = useState(presenter.vm.tenant as Tenant); + + useEffect(() => { + return autorun(() => { + const tenant = presenter.vm.tena +``` + +### `useDisableTenant` + +**Constant** — imported from `webiny/admin/tenancy` + +```typescript +import { useDisableTenant } from "webiny/admin/tenancy"; +``` + +```typescript +export const useDisableTenant = (tenant: TenantEntry) => { + const { useCase } = useFeature(DisableTenantFeature); + const { updateRecordInCache } = useRecords(); + + const disableTenant = useCallback(async () => { + await useCase.execute(tenant.entryId); + + updateRecordInCache({ + ...tenant, + values: { + ...tenant.values, + status: +``` + +### `useEnableTenant` + +**Constant** — imported from `webiny/admin/tenancy` + +```typescript +import { useEnableTenant } from "webiny/admin/tenancy"; +``` + +```typescript +export const useEnableTenant = () => { + const { useCase } = useFeature(EnableTenantFeature); + const [loading, setLoading] = useState(false); + + const enableTenant = useCallback( + async (tenantId: string) => { + setLoading(true); + + try { + await useCase.execute(tenantId); + } finally { + setLoading(false); + } + +``` + ### `useTenantContext` **Function** — imported from `webiny/admin/tenancy` @@ -53,3 +132,19 @@ import { useTenantContext } from "webiny/admin/tenancy"; ```typescript export function useTenantContext(); ``` + +## Types + +### `TenantEntry` + +**Type** — imported from `webiny/admin/tenancy` + +```typescript +import type { TenantEntry } from "webiny/admin/tenancy"; +``` + +```typescript +export interface TenantEntry extends BaseEntry { + values: TenantValues; +} +``` diff --git a/docs/developer-docs/6.x/reference/admin/ui.ai.txt b/docs/developer-docs/6.x/reference/admin/ui.ai.txt index 69a90bfa3..ccea00fe3 100644 --- a/docs/developer-docs/6.x/reference/admin/ui.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/ui.ai.txt @@ -74,8 +74,8 @@ Accordion, Alert, AutoComplete, Avatar, Button, CopyButton, IconButton, Card, Ch Import Path: webiny/admin/ui Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/website-builder.ai.txt b/docs/developer-docs/6.x/reference/admin/website-builder.ai.txt index 11986ed52..2b1b16a41 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/website-builder.ai.txt @@ -2,7 +2,8 @@ AI Context: Website Builder (reference/admin/website-builder.mdx) Source of Information: 1. packages/webiny/src/admin/website-builder.ts — barrel re-export file -2. /Users/adrian/dev/wby-next/packages/app-website-builder/src/index.ts — originating source +2. /Users/adrian/dev/wby-next/packages/app-website-builder/src/routes.ts — originating source +3. /Users/adrian/dev/wby-next/packages/app-website-builder/src/index.ts — originating source Key Documentation Decisions: - This file is auto-generated by scripts/generate-reference.ts — do not edit manually @@ -11,13 +12,13 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -pagePathFromTitle +Routes, pagePathFromTitle Import Path: webiny/admin/website-builder Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/website-builder.mdx b/docs/developer-docs/6.x/reference/admin/website-builder.mdx index 603ff67b8..56a8de27d 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder.mdx +++ b/docs/developer-docs/6.x/reference/admin/website-builder.mdx @@ -18,9 +18,44 @@ import { SymbolList } from "@/components/SymbolList"; This page documents everything exported from `webiny/admin/website-builder`. Import any of the items below directly from this path in your Webiny extensions. +**Components** + + + +**Other** + -## `pagePathFromTitle` +## Components + +### `Routes` + +**Constant** — imported from `webiny/admin/website-builder` + +```typescript +import { Routes } from "webiny/admin/website-builder"; +``` + +```typescript +export const Routes = { + Pages: { + List: new Route({ + name: "WebsiteBuilder/Pages/List", + path: "/website-builder/pages", + params: zod => { + return { + folderId: zod.string().optional(), + search: zod.string().optional() + }; + } + }), + Editor: new Route({ + +``` + +## Other + +### `pagePathFromTitle` **Constant** — imported from `webiny/admin/website-builder` diff --git a/docs/developer-docs/6.x/reference/admin/website-builder/lexical.ai.txt b/docs/developer-docs/6.x/reference/admin/website-builder/lexical.ai.txt index 9a22e20d4..547bd9556 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder/lexical.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/website-builder/lexical.ai.txt @@ -16,8 +16,8 @@ useLexicalEditorConfig, LexicalHtmlRenderer, getNodeFromSelection, useCurrentEle Import Path: webiny/admin/website-builder/lexical Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/website-builder/page/editor.ai.txt b/docs/developer-docs/6.x/reference/admin/website-builder/page/editor.ai.txt index 304cc4e96..24be056d3 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder/page/editor.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/website-builder/page/editor.ai.txt @@ -16,8 +16,8 @@ Editor, PageEditorConfig Import Path: webiny/admin/website-builder/page/editor Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/website-builder/page/list.ai.txt b/docs/developer-docs/6.x/reference/admin/website-builder/page/list.ai.txt index b6b9187e4..768eba450 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder/page/list.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/website-builder/page/list.ai.txt @@ -16,8 +16,8 @@ PageListConfig Import Path: webiny/admin/website-builder/page/list Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/admin/website-builder/redirect/list.ai.txt b/docs/developer-docs/6.x/reference/admin/website-builder/redirect/list.ai.txt index e3166d8e0..6fa90e2bf 100644 --- a/docs/developer-docs/6.x/reference/admin/website-builder/redirect/list.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/website-builder/redirect/list.ai.txt @@ -16,8 +16,8 @@ RedirectListConfig Import Path: webiny/admin/website-builder/redirect/list Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api.ai.txt b/docs/developer-docs/6.x/reference/api.ai.txt index 358c313db..ac4617720 100644 --- a/docs/developer-docs/6.x/reference/api.ai.txt +++ b/docs/developer-docs/6.x/reference/api.ai.txt @@ -16,8 +16,8 @@ Exported Symbols: Import Path: webiny/api Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/build-params.ai.txt b/docs/developer-docs/6.x/reference/api/build-params.ai.txt index fbb8838f7..46a469299 100644 --- a/docs/developer-docs/6.x/reference/api/build-params.ai.txt +++ b/docs/developer-docs/6.x/reference/api/build-params.ai.txt @@ -16,8 +16,8 @@ BuildParam, BuildParams Import Path: webiny/api/build-params Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/cms/entry.ai.txt b/docs/developer-docs/6.x/reference/api/cms/entry.ai.txt index b76662cfc..6931e429c 100644 --- a/docs/developer-docs/6.x/reference/api/cms/entry.ai.txt +++ b/docs/developer-docs/6.x/reference/api/cms/entry.ai.txt @@ -55,8 +55,8 @@ EntryId, CmsEntry, CmsEntryValues, CreateEntryUseCase, EntryBeforeCreateEventHan Import Path: webiny/api/cms/entry Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/cms/group.ai.txt b/docs/developer-docs/6.x/reference/api/cms/group.ai.txt index c3b7eaaf2..88386db3c 100644 --- a/docs/developer-docs/6.x/reference/api/cms/group.ai.txt +++ b/docs/developer-docs/6.x/reference/api/cms/group.ai.txt @@ -25,8 +25,8 @@ ModelGroupFactory, CmsGroup, CmsModelGroup, CreateGroupUseCase, GroupBeforeCreat Import Path: webiny/api/cms/group Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/cms/model.ai.txt b/docs/developer-docs/6.x/reference/api/cms/model.ai.txt index 112f170b0..612b23d72 100644 --- a/docs/developer-docs/6.x/reference/api/cms/model.ai.txt +++ b/docs/developer-docs/6.x/reference/api/cms/model.ai.txt @@ -32,8 +32,8 @@ ModelFactory, ModelBuilder, FieldBuilder, FieldRendererRegistry, FieldType, Layo Import Path: webiny/api/cms/model Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/event-publisher.ai.txt b/docs/developer-docs/6.x/reference/api/event-publisher.ai.txt index 01a27dfdf..1263f6647 100644 --- a/docs/developer-docs/6.x/reference/api/event-publisher.ai.txt +++ b/docs/developer-docs/6.x/reference/api/event-publisher.ai.txt @@ -16,8 +16,8 @@ DomainEvent, EventPublisher Import Path: webiny/api/event-publisher Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/graphql.ai.txt b/docs/developer-docs/6.x/reference/api/graphql.ai.txt index 3c9483454..dcab68d0f 100644 --- a/docs/developer-docs/6.x/reference/api/graphql.ai.txt +++ b/docs/developer-docs/6.x/reference/api/graphql.ai.txt @@ -18,8 +18,8 @@ NotAuthorizedResponse, GraphQLSchemaFactory, ErrorResponse, ListResponse, Respon Import Path: webiny/api/graphql Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/key-value-store.ai.txt b/docs/developer-docs/6.x/reference/api/key-value-store.ai.txt index 413f30ca3..30e31a928 100644 --- a/docs/developer-docs/6.x/reference/api/key-value-store.ai.txt +++ b/docs/developer-docs/6.x/reference/api/key-value-store.ai.txt @@ -16,8 +16,8 @@ GlobalKeyValueStore, KeyValueStore Import Path: webiny/api/key-value-store Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/logger.ai.txt b/docs/developer-docs/6.x/reference/api/logger.ai.txt index 53019e735..0871bb9bc 100644 --- a/docs/developer-docs/6.x/reference/api/logger.ai.txt +++ b/docs/developer-docs/6.x/reference/api/logger.ai.txt @@ -16,8 +16,8 @@ Logger Import Path: webiny/api/logger Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/security.ai.txt b/docs/developer-docs/6.x/reference/api/security.ai.txt index 603b3bddd..bb4cf44ae 100644 --- a/docs/developer-docs/6.x/reference/api/security.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security.ai.txt @@ -21,8 +21,8 @@ IdentityContext, ApiKeyFactory, ApiToken, IdentityProvider, OidcIdentityProvider Import Path: webiny/api/security Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/security/api-key.ai.txt b/docs/developer-docs/6.x/reference/api/security/api-key.ai.txt index 4a6d1c36e..eb729b078 100644 --- a/docs/developer-docs/6.x/reference/api/security/api-key.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/api-key.ai.txt @@ -22,8 +22,8 @@ ApiKeyAfterCreateHandler, ApiKeyBeforeCreateHandler, CreateApiKeyUseCase, ApiKey Import Path: webiny/api/security/api-key Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt b/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt index 5d082def1..1ef9781c5 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt @@ -16,8 +16,8 @@ AfterAuthenticationHandler, BeforeAuthenticationHandler Import Path: webiny/api/security/authentication Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/security/role.ai.txt b/docs/developer-docs/6.x/reference/api/security/role.ai.txt index ac06970b3..44b0a8bcf 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/role.ai.txt @@ -20,8 +20,8 @@ CreateRoleUseCase, RoleAfterCreateHandler, RoleBeforeCreateHandler, DeleteRoleUs Import Path: webiny/api/security/role Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/security/user.ai.txt b/docs/developer-docs/6.x/reference/api/security/user.ai.txt index f7fbba011..c402594b6 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/user.ai.txt @@ -21,8 +21,8 @@ CreateUserUseCase, UserAfterCreateHandler, UserBeforeCreateHandler, DeleteUserUs Import Path: webiny/api/security/user Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/system.ai.txt b/docs/developer-docs/6.x/reference/api/system.ai.txt index 263747a89..59761a7c0 100644 --- a/docs/developer-docs/6.x/reference/api/system.ai.txt +++ b/docs/developer-docs/6.x/reference/api/system.ai.txt @@ -16,8 +16,8 @@ InstallSystemUseCase, SystemInstalledHandler Import Path: webiny/api/system Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/tasks.ai.txt b/docs/developer-docs/6.x/reference/api/tasks.ai.txt index 209216738..fc5f1f0da 100644 --- a/docs/developer-docs/6.x/reference/api/tasks.ai.txt +++ b/docs/developer-docs/6.x/reference/api/tasks.ai.txt @@ -17,8 +17,8 @@ TaskService, TaskDefinition Import Path: webiny/api/tasks Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/tenancy.ai.txt b/docs/developer-docs/6.x/reference/api/tenancy.ai.txt index c5639a4b9..ecc0c0853 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.ai.txt +++ b/docs/developer-docs/6.x/reference/api/tenancy.ai.txt @@ -21,8 +21,8 @@ TenantContext, CreateTenantUseCase, CreateTenantRepository, TenantBeforeCreateHa Import Path: webiny/api/tenancy Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/tenant-manager.ai.txt b/docs/developer-docs/6.x/reference/api/tenant-manager.ai.txt index 25bd8bfd8..c911614a1 100644 --- a/docs/developer-docs/6.x/reference/api/tenant-manager.ai.txt +++ b/docs/developer-docs/6.x/reference/api/tenant-manager.ai.txt @@ -17,8 +17,8 @@ TenantModelExtension, TenantExtensions Import Path: webiny/api/tenant-manager Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.ai.txt b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.ai.txt index 7fbade54b..fe7b0116f 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.ai.txt +++ b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.ai.txt @@ -16,8 +16,8 @@ NextjsConfig Import Path: webiny/api/website-builder/nextjs Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt b/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt index 05fd95675..5c64aba54 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt @@ -27,8 +27,8 @@ CreatePageUseCase, PageAfterCreateHandler, PageBeforeCreateHandler, CreatePageRe Import Path: webiny/api/website-builder/page Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt b/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt index 15445aa98..31ccabe76 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt @@ -23,8 +23,8 @@ CreateRedirectUseCase, RedirectAfterCreateHandler, RedirectBeforeCreateHandler, Import Path: webiny/api/website-builder/redirect Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/cli/command.ai.txt b/docs/developer-docs/6.x/reference/cli/command.ai.txt index cc682c3a9..f27041e88 100644 --- a/docs/developer-docs/6.x/reference/cli/command.ai.txt +++ b/docs/developer-docs/6.x/reference/cli/command.ai.txt @@ -16,8 +16,8 @@ CliCommandFactory Import Path: webiny/cli/command Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/cli/overview.ai.txt b/docs/developer-docs/6.x/reference/cli/overview.ai.txt index 7eb8ede19..e4b07e228 100644 --- a/docs/developer-docs/6.x/reference/cli/overview.ai.txt +++ b/docs/developer-docs/6.x/reference/cli/overview.ai.txt @@ -17,8 +17,8 @@ Logger, Ui Import Path: webiny/cli/index Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/extensions.ai.txt b/docs/developer-docs/6.x/reference/extensions.ai.txt index e064e8b8c..c0a13101c 100644 --- a/docs/developer-docs/6.x/reference/extensions.ai.txt +++ b/docs/developer-docs/6.x/reference/extensions.ai.txt @@ -20,8 +20,8 @@ Api, Admin, Cli, Infra, Project Import Path: webiny/extensions Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/extensions.mdx b/docs/developer-docs/6.x/reference/extensions.mdx index 26a7e5197..f6bce5ac7 100644 --- a/docs/developer-docs/6.x/reference/extensions.mdx +++ b/docs/developer-docs/6.x/reference/extensions.mdx @@ -50,6 +50,7 @@ The `webiny/extensions` package exports React components used inside `webiny.con { name: "Infra.OpenSearch", anchor: "infra-open-search" }, { name: "Infra.PulumiResourceNamePrefix", anchor: "infra-pulumi-resource-name-prefix" }, { name: "Infra.ProductionEnvironments", anchor: "infra-production-environments" }, + { name: "Infra.EnvVar", anchor: "infra-env-var" }, { name: "Infra.Aws.DefaultRegion", anchor: "infra-aws-default-region" }, { name: "Infra.Aws.Tags", anchor: "infra-aws-tags" }, { name: "Infra.Admin.BeforeBuild", anchor: "infra-admin-before-build" }, @@ -348,6 +349,25 @@ export const Extensions = () => ; +``` + +**Props** + +| Prop | Type | Required | Description | +| --------- | -------- | -------- | ------------------------------- | +| `varName` | `string` | yes | The environment variable name. | +| `value` | `string` | yes | The environment variable value. | + ### `Aws.DefaultRegion` Set the default AWS region for the project. diff --git a/docs/developer-docs/6.x/reference/infra/admin.ai.txt b/docs/developer-docs/6.x/reference/infra/admin.ai.txt index a4773af27..82b32c1dd 100644 --- a/docs/developer-docs/6.x/reference/infra/admin.ai.txt +++ b/docs/developer-docs/6.x/reference/infra/admin.ai.txt @@ -22,8 +22,8 @@ AdminAfterBuildHook, AdminBeforeBuildHook, AdminAfterDeployHook, AdminBeforeDepl Import Path: webiny/infra/admin Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/infra/api.ai.txt b/docs/developer-docs/6.x/reference/infra/api.ai.txt index faeadc4d2..f0d65c33f 100644 --- a/docs/developer-docs/6.x/reference/infra/api.ai.txt +++ b/docs/developer-docs/6.x/reference/infra/api.ai.txt @@ -22,8 +22,8 @@ ApiAfterBuildHook, ApiBeforeBuildHook, ApiAfterDeployHook, ApiBeforeDeployHook, Import Path: webiny/infra/api Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/infra/core.ai.txt b/docs/developer-docs/6.x/reference/infra/core.ai.txt index 9839e0a4e..1ed9c8652 100644 --- a/docs/developer-docs/6.x/reference/infra/core.ai.txt +++ b/docs/developer-docs/6.x/reference/infra/core.ai.txt @@ -21,8 +21,8 @@ CoreAfterBuildHook, CoreBeforeBuildHook, CoreAfterDeployHook, CoreBeforeDeployHo Import Path: webiny/infra/core Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/docs/developer-docs/6.x/reference/infra/overview.ai.txt b/docs/developer-docs/6.x/reference/infra/overview.ai.txt index 3b6b33c9b..a47be40ab 100644 --- a/docs/developer-docs/6.x/reference/infra/overview.ai.txt +++ b/docs/developer-docs/6.x/reference/infra/overview.ai.txt @@ -24,8 +24,8 @@ Logger, Ui, AfterBuildHook, BeforeBuildHook, AfterDeployHook, BeforeDeployHook, Import Path: webiny/infra/index Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary diff --git a/scripts/generate-reference.ts b/scripts/generate-reference.ts index 26d925894..daaaea29d 100644 --- a/scripts/generate-reference.ts +++ b/scripts/generate-reference.ts @@ -23,7 +23,7 @@ import slugify from "@sindresorhus/slugify"; const WEBINY_PKG = "/Users/adrian/dev/wby-next/packages/webiny"; const WEBINY_MONOREPO = "/Users/adrian/dev/wby-next/packages"; -const DOCS_ROOT = join(process.cwd(), "docs/developer-docs/6.0.x"); +const DOCS_ROOT = join(process.cwd(), "docs/developer-docs/6.x"); const REF_DIR = join(DOCS_ROOT, "reference"); const NAV_FILE = join(DOCS_ROOT, "navigation.tsx"); @@ -1748,8 +1748,8 @@ ${symbolNames} Import Path: webiny/${doc.relPath} Related Documents: -- docs/developer-docs/6.0.x/basic/di.mdx — DI pattern used by all abstractions -- docs/developer-docs/6.0.x/basic/result.mdx — Result type used in use case returns +- docs/developer-docs/6.x/basic/di.mdx — DI pattern used by all abstractions +- docs/developer-docs/6.x/basic/result.mdx — Result type used in use case returns Tone Guidelines: - This is a reference page — terse, API-focused, no prose beyond what's necessary From 30c83738b389e79e702be47efd8723e9f8941e64 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 11:54:58 +0100 Subject: [PATCH 08/13] wip:9 (bfo1f) --- .../6.x/reference/admin/cms.ai.txt | 15 +- .../6.x/reference/admin/cms.mdx | 13 + .../6.x/reference/api/security/api-key.ai.txt | 2 +- .../6.x/reference/api/security/api-key.mdx | 121 ++--- .../api/security/authentication.ai.txt | 2 +- .../reference/api/security/authentication.mdx | 42 +- .../6.x/reference/api/security/role.ai.txt | 2 +- .../6.x/reference/api/security/role.mdx | 121 ++--- .../6.x/reference/api/security/user.ai.txt | 2 +- .../6.x/reference/api/security/user.mdx | 121 ++--- .../6.x/reference/api/system.ai.txt | 2 +- .../6.x/reference/api/system.mdx | 23 +- .../6.x/reference/api/tenancy.ai.txt | 2 +- .../6.x/reference/api/tenancy.mdx | 141 +++--- .../reference/api/website-builder/page.ai.txt | 2 +- .../reference/api/website-builder/page.mdx | 325 ++++++------- .../api/website-builder/redirect.ai.txt | 2 +- .../api/website-builder/redirect.mdx | 161 +++---- .../6.x/reference/extensions.mdx | 446 ++---------------- 19 files changed, 598 insertions(+), 947 deletions(-) diff --git a/docs/developer-docs/6.x/reference/admin/cms.ai.txt b/docs/developer-docs/6.x/reference/admin/cms.ai.txt index 956681ffb..8c368b204 100644 --- a/docs/developer-docs/6.x/reference/admin/cms.ai.txt +++ b/docs/developer-docs/6.x/reference/admin/cms.ai.txt @@ -3,12 +3,13 @@ AI Context: CMS (reference/admin/cms.mdx) Source of Information: 1. packages/webiny/src/admin/cms.ts — barrel re-export file 2. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useQuery.ts — originating source -3. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useLazyQuery.ts — originating source -4. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useMutation.ts — originating source -5. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/components/ModelProvider/index.ts — originating source -6. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/usePermission.ts — originating source -7. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/routes.ts — originating source -8. /Users/adrian/dev/wby-next/packages/app-headless-cms-common/src/types/index.ts — originating source +3. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useCms.ts — originating source +4. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useLazyQuery.ts — originating source +5. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/useMutation.ts — originating source +6. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/components/ModelProvider/index.ts — originating source +7. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/admin/hooks/usePermission.ts — originating source +8. /Users/adrian/dev/wby-next/packages/app-headless-cms/src/routes.ts — originating source +9. /Users/adrian/dev/wby-next/packages/app-headless-cms-common/src/types/index.ts — originating source Key Documentation Decisions: - This file is auto-generated by scripts/generate-reference.ts — do not edit manually @@ -17,7 +18,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -useQuery, useLazyQuery, useMutation, useModel, usePermission, Routes, CmsContentEntry, CmsModel, CmsModelField, CmsModelLayoutField, CmsIdentity +useQuery, useCms, useLazyQuery, useMutation, useModel, usePermission, Routes, CmsContentEntry, CmsModel, CmsModelField, CmsModelLayoutField, CmsIdentity Import Path: webiny/admin/cms diff --git a/docs/developer-docs/6.x/reference/admin/cms.mdx b/docs/developer-docs/6.x/reference/admin/cms.mdx index 63570bb7e..ea750f1f9 100644 --- a/docs/developer-docs/6.x/reference/admin/cms.mdx +++ b/docs/developer-docs/6.x/reference/admin/cms.mdx @@ -26,6 +26,7 @@ This page documents everything exported from `webiny/admin/cms`. Import any of t - What use cases are available in `webiny/api/security/api-key`? +- Which event handlers can you implement? - How to use the builder and factory APIs? - How to import and use each exported item? @@ -36,12 +37,12 @@ This page documents everything exported from `webiny/api/security/api-key`. Impo @@ -317,18 +318,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `ApiKeyAfterCreateHandler` +### `ApiKeyAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyAfterCreateHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterCreateEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyAfterCreateHandler.Interface`:** +**Interface `ApiKeyAfterCreateEventHandler.Interface`:** ```typescript -interface ApiKeyAfterCreateHandler.Interface { +interface ApiKeyAfterCreateEventHandler.Interface { handle(event: ApiKeyAfterCreateEvent): Promise; } ``` @@ -336,7 +337,7 @@ interface ApiKeyAfterCreateHandler.Interface { **Types:** ```typescript -namespace ApiKeyAfterCreateHandler { +namespace ApiKeyAfterCreateEventHandler { type Interface = IEventHandler; type Event = ApiKeyAfterCreateEvent; } @@ -345,34 +346,34 @@ namespace ApiKeyAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyAfterCreateHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterCreateEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyAfterCreateHandler.Interface { +class MyHandler implements ApiKeyAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyAfterCreateHandler.Event): Promise { + public async handle(event: ApiKeyAfterCreateEventHandler.Event): Promise { // implementation } } -export default ApiKeyAfterCreateHandler.createImplementation({ +export default ApiKeyAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `ApiKeyAfterDeleteHandler` +### `ApiKeyAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyAfterDeleteHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterDeleteEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyAfterDeleteHandler.Interface`:** +**Interface `ApiKeyAfterDeleteEventHandler.Interface`:** ```typescript -interface ApiKeyAfterDeleteHandler.Interface { +interface ApiKeyAfterDeleteEventHandler.Interface { handle(event: ApiKeyAfterDeleteEvent): Promise; } ``` @@ -380,7 +381,7 @@ interface ApiKeyAfterDeleteHandler.Interface { **Types:** ```typescript -namespace ApiKeyAfterDeleteHandler { +namespace ApiKeyAfterDeleteEventHandler { type Interface = IEventHandler; type Event = ApiKeyAfterDeleteEvent; } @@ -389,34 +390,34 @@ namespace ApiKeyAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyAfterDeleteHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterDeleteEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyAfterDeleteHandler.Interface { +class MyHandler implements ApiKeyAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyAfterDeleteHandler.Event): Promise { + public async handle(event: ApiKeyAfterDeleteEventHandler.Event): Promise { // implementation } } -export default ApiKeyAfterDeleteHandler.createImplementation({ +export default ApiKeyAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `ApiKeyAfterUpdateHandler` +### `ApiKeyAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyAfterUpdateHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyAfterUpdateHandler.Interface`:** +**Interface `ApiKeyAfterUpdateEventHandler.Interface`:** ```typescript -interface ApiKeyAfterUpdateHandler.Interface { +interface ApiKeyAfterUpdateEventHandler.Interface { handle(event: ApiKeyAfterUpdateEvent): Promise; } ``` @@ -424,7 +425,7 @@ interface ApiKeyAfterUpdateHandler.Interface { **Types:** ```typescript -namespace ApiKeyAfterUpdateHandler { +namespace ApiKeyAfterUpdateEventHandler { type Interface = IEventHandler; type Event = ApiKeyAfterUpdateEvent; } @@ -433,34 +434,34 @@ namespace ApiKeyAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyAfterUpdateHandler } from "webiny/api/security/api-key"; +import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyAfterUpdateHandler.Interface { +class MyHandler implements ApiKeyAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyAfterUpdateHandler.Event): Promise { + public async handle(event: ApiKeyAfterUpdateEventHandler.Event): Promise { // implementation } } -export default ApiKeyAfterUpdateHandler.createImplementation({ +export default ApiKeyAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `ApiKeyBeforeCreateHandler` +### `ApiKeyBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyBeforeCreateHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeCreateEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyBeforeCreateHandler.Interface`:** +**Interface `ApiKeyBeforeCreateEventHandler.Interface`:** ```typescript -interface ApiKeyBeforeCreateHandler.Interface { +interface ApiKeyBeforeCreateEventHandler.Interface { handle(event: ApiKeyBeforeCreateEvent): Promise; } ``` @@ -468,7 +469,7 @@ interface ApiKeyBeforeCreateHandler.Interface { **Types:** ```typescript -namespace ApiKeyBeforeCreateHandler { +namespace ApiKeyBeforeCreateEventHandler { type Interface = IEventHandler; type Event = ApiKeyBeforeCreateEvent; } @@ -477,34 +478,34 @@ namespace ApiKeyBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyBeforeCreateHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeCreateEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyBeforeCreateHandler.Interface { +class MyHandler implements ApiKeyBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyBeforeCreateHandler.Event): Promise { + public async handle(event: ApiKeyBeforeCreateEventHandler.Event): Promise { // implementation } } -export default ApiKeyBeforeCreateHandler.createImplementation({ +export default ApiKeyBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `ApiKeyBeforeDeleteHandler` +### `ApiKeyBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyBeforeDeleteHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeDeleteEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyBeforeDeleteHandler.Interface`:** +**Interface `ApiKeyBeforeDeleteEventHandler.Interface`:** ```typescript -interface ApiKeyBeforeDeleteHandler.Interface { +interface ApiKeyBeforeDeleteEventHandler.Interface { handle(event: ApiKeyBeforeDeleteEvent): Promise; } ``` @@ -512,7 +513,7 @@ interface ApiKeyBeforeDeleteHandler.Interface { **Types:** ```typescript -namespace ApiKeyBeforeDeleteHandler { +namespace ApiKeyBeforeDeleteEventHandler { type Interface = IEventHandler; type Event = ApiKeyBeforeDeleteEvent; } @@ -521,34 +522,34 @@ namespace ApiKeyBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyBeforeDeleteHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeDeleteEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyBeforeDeleteHandler.Interface { +class MyHandler implements ApiKeyBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyBeforeDeleteHandler.Event): Promise { + public async handle(event: ApiKeyBeforeDeleteEventHandler.Event): Promise { // implementation } } -export default ApiKeyBeforeDeleteHandler.createImplementation({ +export default ApiKeyBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `ApiKeyBeforeUpdateHandler` +### `ApiKeyBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` ```typescript -import { ApiKeyBeforeUpdateHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeUpdateEventHandler } from "webiny/api/security/api-key"; ``` -**Interface `ApiKeyBeforeUpdateHandler.Interface`:** +**Interface `ApiKeyBeforeUpdateEventHandler.Interface`:** ```typescript -interface ApiKeyBeforeUpdateHandler.Interface { +interface ApiKeyBeforeUpdateEventHandler.Interface { handle(event: ApiKeyBeforeUpdateEvent): Promise; } ``` @@ -556,7 +557,7 @@ interface ApiKeyBeforeUpdateHandler.Interface { **Types:** ```typescript -namespace ApiKeyBeforeUpdateHandler { +namespace ApiKeyBeforeUpdateEventHandler { type Interface = IEventHandler; type Event = ApiKeyBeforeUpdateEvent; } @@ -565,17 +566,17 @@ namespace ApiKeyBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { ApiKeyBeforeUpdateHandler } from "webiny/api/security/api-key"; +import { ApiKeyBeforeUpdateEventHandler } from "webiny/api/security/api-key"; -class MyHandler implements ApiKeyBeforeUpdateHandler.Interface { +class MyHandler implements ApiKeyBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: ApiKeyBeforeUpdateHandler.Event): Promise { + public async handle(event: ApiKeyBeforeUpdateEventHandler.Event): Promise { // implementation } } -export default ApiKeyBeforeUpdateHandler.createImplementation({ +export default ApiKeyBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt b/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt index 1ef9781c5..553c1a4ea 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/authentication.ai.txt @@ -11,7 +11,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -AfterAuthenticationHandler, BeforeAuthenticationHandler +AfterAuthenticationEventHandler, BeforeAuthenticationEventHandler Import Path: webiny/api/security/authentication diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.mdx b/docs/developer-docs/6.x/reference/api/security/authentication.mdx index de9da6df2..c1b0708d0 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.mdx +++ b/docs/developer-docs/6.x/reference/api/security/authentication.mdx @@ -9,7 +9,7 @@ import { SymbolList } from "@/components/SymbolList"; -- What is exported from `webiny/api/security/authentication`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -20,23 +20,23 @@ This page documents everything exported from `webiny/api/security/authentication -## `AfterAuthenticationHandler` +## `AfterAuthenticationEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/authentication` ```typescript -import { AfterAuthenticationHandler } from "webiny/api/security/authentication"; +import { AfterAuthenticationEventHandler } from "webiny/api/security/authentication"; ``` -**Interface `AfterAuthenticationHandler.Interface`:** +**Interface `AfterAuthenticationEventHandler.Interface`:** ```typescript -interface AfterAuthenticationHandler.Interface { +interface AfterAuthenticationEventHandler.Interface { handle(event: AfterAuthenticationEvent): Promise; } ``` @@ -44,7 +44,7 @@ interface AfterAuthenticationHandler.Interface { **Types:** ```typescript -namespace AfterAuthenticationHandler { +namespace AfterAuthenticationEventHandler { type Interface = IEventHandler; type Event = AfterAuthenticationEvent; } @@ -53,34 +53,34 @@ namespace AfterAuthenticationHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { AfterAuthenticationHandler } from "webiny/api/security/authentication"; +import { AfterAuthenticationEventHandler } from "webiny/api/security/authentication"; -class MyHandler implements AfterAuthenticationHandler.Interface { +class MyHandler implements AfterAuthenticationEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: AfterAuthenticationHandler.Event): Promise { + public async handle(event: AfterAuthenticationEventHandler.Event): Promise { // implementation } } -export default AfterAuthenticationHandler.createImplementation({ +export default AfterAuthenticationEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -## `BeforeAuthenticationHandler` +## `BeforeAuthenticationEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/authentication` ```typescript -import { BeforeAuthenticationHandler } from "webiny/api/security/authentication"; +import { BeforeAuthenticationEventHandler } from "webiny/api/security/authentication"; ``` -**Interface `BeforeAuthenticationHandler.Interface`:** +**Interface `BeforeAuthenticationEventHandler.Interface`:** ```typescript -interface BeforeAuthenticationHandler.Interface { +interface BeforeAuthenticationEventHandler.Interface { handle(event: BeforeAuthenticationEvent): Promise; } ``` @@ -88,7 +88,7 @@ interface BeforeAuthenticationHandler.Interface { **Types:** ```typescript -namespace BeforeAuthenticationHandler { +namespace BeforeAuthenticationEventHandler { type Interface = IEventHandler; type Event = BeforeAuthenticationEvent; } @@ -97,17 +97,17 @@ namespace BeforeAuthenticationHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { BeforeAuthenticationHandler } from "webiny/api/security/authentication"; +import { BeforeAuthenticationEventHandler } from "webiny/api/security/authentication"; -class MyHandler implements BeforeAuthenticationHandler.Interface { +class MyHandler implements BeforeAuthenticationEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: BeforeAuthenticationHandler.Event): Promise { + public async handle(event: BeforeAuthenticationEventHandler.Event): Promise { // implementation } } -export default BeforeAuthenticationHandler.createImplementation({ +export default BeforeAuthenticationEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/security/role.ai.txt b/docs/developer-docs/6.x/reference/api/security/role.ai.txt index 44b0a8bcf..7e9d51c80 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/role.ai.txt @@ -15,7 +15,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -CreateRoleUseCase, RoleAfterCreateHandler, RoleBeforeCreateHandler, DeleteRoleUseCase, RoleAfterDeleteHandler, RoleBeforeDeleteHandler, GetRoleUseCase, ListRolesUseCase, UpdateRoleUseCase, RoleAfterUpdateHandler, RoleBeforeUpdateHandler +CreateRoleUseCase, RoleAfterCreateEventHandler, RoleBeforeCreateEventHandler, DeleteRoleUseCase, RoleAfterDeleteEventHandler, RoleBeforeDeleteEventHandler, GetRoleUseCase, ListRolesUseCase, UpdateRoleUseCase, RoleAfterUpdateEventHandler, RoleBeforeUpdateEventHandler Import Path: webiny/api/security/role diff --git a/docs/developer-docs/6.x/reference/api/security/role.mdx b/docs/developer-docs/6.x/reference/api/security/role.mdx index 1990f77d1..bf40f8438 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.mdx +++ b/docs/developer-docs/6.x/reference/api/security/role.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/security/role`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -34,12 +35,12 @@ This page documents everything exported from `webiny/api/security/role`. Import @@ -270,18 +271,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `RoleAfterCreateHandler` +### `RoleAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleAfterCreateHandler } from "webiny/api/security/role"; +import { RoleAfterCreateEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleAfterCreateHandler.Interface`:** +**Interface `RoleAfterCreateEventHandler.Interface`:** ```typescript -interface RoleAfterCreateHandler.Interface { +interface RoleAfterCreateEventHandler.Interface { handle(event: RoleAfterCreateEvent): Promise; } ``` @@ -289,7 +290,7 @@ interface RoleAfterCreateHandler.Interface { **Types:** ```typescript -namespace RoleAfterCreateHandler { +namespace RoleAfterCreateEventHandler { type Interface = IEventHandler; type Event = RoleAfterCreateEvent; } @@ -298,34 +299,34 @@ namespace RoleAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleAfterCreateHandler } from "webiny/api/security/role"; +import { RoleAfterCreateEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleAfterCreateHandler.Interface { +class MyHandler implements RoleAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleAfterCreateHandler.Event): Promise { + public async handle(event: RoleAfterCreateEventHandler.Event): Promise { // implementation } } -export default RoleAfterCreateHandler.createImplementation({ +export default RoleAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RoleAfterDeleteHandler` +### `RoleAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleAfterDeleteHandler } from "webiny/api/security/role"; +import { RoleAfterDeleteEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleAfterDeleteHandler.Interface`:** +**Interface `RoleAfterDeleteEventHandler.Interface`:** ```typescript -interface RoleAfterDeleteHandler.Interface { +interface RoleAfterDeleteEventHandler.Interface { handle(event: RoleAfterDeleteEvent): Promise; } ``` @@ -333,7 +334,7 @@ interface RoleAfterDeleteHandler.Interface { **Types:** ```typescript -namespace RoleAfterDeleteHandler { +namespace RoleAfterDeleteEventHandler { type Interface = IEventHandler; type Event = RoleAfterDeleteEvent; } @@ -342,34 +343,34 @@ namespace RoleAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleAfterDeleteHandler } from "webiny/api/security/role"; +import { RoleAfterDeleteEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleAfterDeleteHandler.Interface { +class MyHandler implements RoleAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleAfterDeleteHandler.Event): Promise { + public async handle(event: RoleAfterDeleteEventHandler.Event): Promise { // implementation } } -export default RoleAfterDeleteHandler.createImplementation({ +export default RoleAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RoleAfterUpdateHandler` +### `RoleAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleAfterUpdateHandler } from "webiny/api/security/role"; +import { RoleAfterUpdateEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleAfterUpdateHandler.Interface`:** +**Interface `RoleAfterUpdateEventHandler.Interface`:** ```typescript -interface RoleAfterUpdateHandler.Interface { +interface RoleAfterUpdateEventHandler.Interface { handle(event: RoleAfterUpdateEvent): Promise; } ``` @@ -377,7 +378,7 @@ interface RoleAfterUpdateHandler.Interface { **Types:** ```typescript -namespace RoleAfterUpdateHandler { +namespace RoleAfterUpdateEventHandler { type Interface = IEventHandler; type Event = RoleAfterUpdateEvent; } @@ -386,34 +387,34 @@ namespace RoleAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleAfterUpdateHandler } from "webiny/api/security/role"; +import { RoleAfterUpdateEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleAfterUpdateHandler.Interface { +class MyHandler implements RoleAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleAfterUpdateHandler.Event): Promise { + public async handle(event: RoleAfterUpdateEventHandler.Event): Promise { // implementation } } -export default RoleAfterUpdateHandler.createImplementation({ +export default RoleAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RoleBeforeCreateHandler` +### `RoleBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleBeforeCreateHandler } from "webiny/api/security/role"; +import { RoleBeforeCreateEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleBeforeCreateHandler.Interface`:** +**Interface `RoleBeforeCreateEventHandler.Interface`:** ```typescript -interface RoleBeforeCreateHandler.Interface { +interface RoleBeforeCreateEventHandler.Interface { handle(event: RoleBeforeCreateEvent): Promise; } ``` @@ -421,7 +422,7 @@ interface RoleBeforeCreateHandler.Interface { **Types:** ```typescript -namespace RoleBeforeCreateHandler { +namespace RoleBeforeCreateEventHandler { type Interface = IEventHandler; type Event = RoleBeforeCreateEvent; } @@ -430,34 +431,34 @@ namespace RoleBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleBeforeCreateHandler } from "webiny/api/security/role"; +import { RoleBeforeCreateEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleBeforeCreateHandler.Interface { +class MyHandler implements RoleBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleBeforeCreateHandler.Event): Promise { + public async handle(event: RoleBeforeCreateEventHandler.Event): Promise { // implementation } } -export default RoleBeforeCreateHandler.createImplementation({ +export default RoleBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RoleBeforeDeleteHandler` +### `RoleBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleBeforeDeleteHandler } from "webiny/api/security/role"; +import { RoleBeforeDeleteEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleBeforeDeleteHandler.Interface`:** +**Interface `RoleBeforeDeleteEventHandler.Interface`:** ```typescript -interface RoleBeforeDeleteHandler.Interface { +interface RoleBeforeDeleteEventHandler.Interface { handle(event: RoleBeforeDeleteEvent): Promise; } ``` @@ -465,7 +466,7 @@ interface RoleBeforeDeleteHandler.Interface { **Types:** ```typescript -namespace RoleBeforeDeleteHandler { +namespace RoleBeforeDeleteEventHandler { type Interface = IEventHandler; type Event = RoleBeforeDeleteEvent; } @@ -474,34 +475,34 @@ namespace RoleBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleBeforeDeleteHandler } from "webiny/api/security/role"; +import { RoleBeforeDeleteEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleBeforeDeleteHandler.Interface { +class MyHandler implements RoleBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleBeforeDeleteHandler.Event): Promise { + public async handle(event: RoleBeforeDeleteEventHandler.Event): Promise { // implementation } } -export default RoleBeforeDeleteHandler.createImplementation({ +export default RoleBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RoleBeforeUpdateHandler` +### `RoleBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` ```typescript -import { RoleBeforeUpdateHandler } from "webiny/api/security/role"; +import { RoleBeforeUpdateEventHandler } from "webiny/api/security/role"; ``` -**Interface `RoleBeforeUpdateHandler.Interface`:** +**Interface `RoleBeforeUpdateEventHandler.Interface`:** ```typescript -interface RoleBeforeUpdateHandler.Interface { +interface RoleBeforeUpdateEventHandler.Interface { handle(event: RoleBeforeUpdateEvent): Promise; } ``` @@ -509,7 +510,7 @@ interface RoleBeforeUpdateHandler.Interface { **Types:** ```typescript -namespace RoleBeforeUpdateHandler { +namespace RoleBeforeUpdateEventHandler { type Interface = IEventHandler; type Event = RoleBeforeUpdateEvent; } @@ -518,17 +519,17 @@ namespace RoleBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RoleBeforeUpdateHandler } from "webiny/api/security/role"; +import { RoleBeforeUpdateEventHandler } from "webiny/api/security/role"; -class MyHandler implements RoleBeforeUpdateHandler.Interface { +class MyHandler implements RoleBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RoleBeforeUpdateHandler.Event): Promise { + public async handle(event: RoleBeforeUpdateEventHandler.Event): Promise { // implementation } } -export default RoleBeforeUpdateHandler.createImplementation({ +export default RoleBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/security/user.ai.txt b/docs/developer-docs/6.x/reference/api/security/user.ai.txt index c402594b6..51be42a3d 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.ai.txt +++ b/docs/developer-docs/6.x/reference/api/security/user.ai.txt @@ -16,7 +16,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -CreateUserUseCase, UserAfterCreateHandler, UserBeforeCreateHandler, DeleteUserUseCase, UserAfterDeleteHandler, UserBeforeDeleteHandler, UpdateUserUseCase, UserAfterUpdateHandler, UserBeforeUpdateHandler, GetUserUseCase, ListUsersUseCase, ListUserTeamsUseCase +CreateUserUseCase, UserAfterCreateEventHandler, UserBeforeCreateEventHandler, DeleteUserUseCase, UserAfterDeleteEventHandler, UserBeforeDeleteEventHandler, UpdateUserUseCase, UserAfterUpdateEventHandler, UserBeforeUpdateEventHandler, GetUserUseCase, ListUsersUseCase, ListUserTeamsUseCase Import Path: webiny/api/security/user diff --git a/docs/developer-docs/6.x/reference/api/security/user.mdx b/docs/developer-docs/6.x/reference/api/security/user.mdx index 869dc2402..4cbeb68db 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.mdx +++ b/docs/developer-docs/6.x/reference/api/security/user.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/security/user`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -35,12 +36,12 @@ This page documents everything exported from `webiny/api/security/user`. Import @@ -313,18 +314,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `UserAfterCreateHandler` +### `UserAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserAfterCreateHandler } from "webiny/api/security/user"; +import { UserAfterCreateEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserAfterCreateHandler.Interface`:** +**Interface `UserAfterCreateEventHandler.Interface`:** ```typescript -interface UserAfterCreateHandler.Interface { +interface UserAfterCreateEventHandler.Interface { handle(event: UserAfterCreateEvent): Promise; } ``` @@ -332,7 +333,7 @@ interface UserAfterCreateHandler.Interface { **Types:** ```typescript -namespace UserAfterCreateHandler { +namespace UserAfterCreateEventHandler { type Interface = IEventHandler; type Event = UserAfterCreateEvent; } @@ -341,34 +342,34 @@ namespace UserAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserAfterCreateHandler } from "webiny/api/security/user"; +import { UserAfterCreateEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserAfterCreateHandler.Interface { +class MyHandler implements UserAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserAfterCreateHandler.Event): Promise { + public async handle(event: UserAfterCreateEventHandler.Event): Promise { // implementation } } -export default UserAfterCreateHandler.createImplementation({ +export default UserAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `UserAfterDeleteHandler` +### `UserAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserAfterDeleteHandler } from "webiny/api/security/user"; +import { UserAfterDeleteEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserAfterDeleteHandler.Interface`:** +**Interface `UserAfterDeleteEventHandler.Interface`:** ```typescript -interface UserAfterDeleteHandler.Interface { +interface UserAfterDeleteEventHandler.Interface { handle(event: UserAfterDeleteEvent): Promise; } ``` @@ -376,7 +377,7 @@ interface UserAfterDeleteHandler.Interface { **Types:** ```typescript -namespace UserAfterDeleteHandler { +namespace UserAfterDeleteEventHandler { type Interface = IEventHandler; type Event = UserAfterDeleteEvent; } @@ -385,34 +386,34 @@ namespace UserAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserAfterDeleteHandler } from "webiny/api/security/user"; +import { UserAfterDeleteEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserAfterDeleteHandler.Interface { +class MyHandler implements UserAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserAfterDeleteHandler.Event): Promise { + public async handle(event: UserAfterDeleteEventHandler.Event): Promise { // implementation } } -export default UserAfterDeleteHandler.createImplementation({ +export default UserAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `UserAfterUpdateHandler` +### `UserAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserAfterUpdateHandler } from "webiny/api/security/user"; +import { UserAfterUpdateEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserAfterUpdateHandler.Interface`:** +**Interface `UserAfterUpdateEventHandler.Interface`:** ```typescript -interface UserAfterUpdateHandler.Interface { +interface UserAfterUpdateEventHandler.Interface { handle(event: UserAfterUpdateEvent): Promise; } ``` @@ -420,7 +421,7 @@ interface UserAfterUpdateHandler.Interface { **Types:** ```typescript -namespace UserAfterUpdateHandler { +namespace UserAfterUpdateEventHandler { type Interface = IEventHandler; type Event = UserAfterUpdateEvent; } @@ -429,34 +430,34 @@ namespace UserAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserAfterUpdateHandler } from "webiny/api/security/user"; +import { UserAfterUpdateEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserAfterUpdateHandler.Interface { +class MyHandler implements UserAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserAfterUpdateHandler.Event): Promise { + public async handle(event: UserAfterUpdateEventHandler.Event): Promise { // implementation } } -export default UserAfterUpdateHandler.createImplementation({ +export default UserAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `UserBeforeCreateHandler` +### `UserBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserBeforeCreateHandler } from "webiny/api/security/user"; +import { UserBeforeCreateEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserBeforeCreateHandler.Interface`:** +**Interface `UserBeforeCreateEventHandler.Interface`:** ```typescript -interface UserBeforeCreateHandler.Interface { +interface UserBeforeCreateEventHandler.Interface { handle(event: UserBeforeCreateEvent): Promise; } ``` @@ -464,7 +465,7 @@ interface UserBeforeCreateHandler.Interface { **Types:** ```typescript -namespace UserBeforeCreateHandler { +namespace UserBeforeCreateEventHandler { type Interface = IEventHandler; type Event = UserBeforeCreateEvent; } @@ -473,34 +474,34 @@ namespace UserBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserBeforeCreateHandler } from "webiny/api/security/user"; +import { UserBeforeCreateEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserBeforeCreateHandler.Interface { +class MyHandler implements UserBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserBeforeCreateHandler.Event): Promise { + public async handle(event: UserBeforeCreateEventHandler.Event): Promise { // implementation } } -export default UserBeforeCreateHandler.createImplementation({ +export default UserBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `UserBeforeDeleteHandler` +### `UserBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserBeforeDeleteHandler } from "webiny/api/security/user"; +import { UserBeforeDeleteEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserBeforeDeleteHandler.Interface`:** +**Interface `UserBeforeDeleteEventHandler.Interface`:** ```typescript -interface UserBeforeDeleteHandler.Interface { +interface UserBeforeDeleteEventHandler.Interface { handle(event: UserBeforeDeleteEvent): Promise; } ``` @@ -508,7 +509,7 @@ interface UserBeforeDeleteHandler.Interface { **Types:** ```typescript -namespace UserBeforeDeleteHandler { +namespace UserBeforeDeleteEventHandler { type Interface = IEventHandler; type Event = UserBeforeDeleteEvent; } @@ -517,34 +518,34 @@ namespace UserBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserBeforeDeleteHandler } from "webiny/api/security/user"; +import { UserBeforeDeleteEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserBeforeDeleteHandler.Interface { +class MyHandler implements UserBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserBeforeDeleteHandler.Event): Promise { + public async handle(event: UserBeforeDeleteEventHandler.Event): Promise { // implementation } } -export default UserBeforeDeleteHandler.createImplementation({ +export default UserBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `UserBeforeUpdateHandler` +### `UserBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` ```typescript -import { UserBeforeUpdateHandler } from "webiny/api/security/user"; +import { UserBeforeUpdateEventHandler } from "webiny/api/security/user"; ``` -**Interface `UserBeforeUpdateHandler.Interface`:** +**Interface `UserBeforeUpdateEventHandler.Interface`:** ```typescript -interface UserBeforeUpdateHandler.Interface { +interface UserBeforeUpdateEventHandler.Interface { handle(event: UserBeforeUpdateEvent): Promise; } ``` @@ -552,7 +553,7 @@ interface UserBeforeUpdateHandler.Interface { **Types:** ```typescript -namespace UserBeforeUpdateHandler { +namespace UserBeforeUpdateEventHandler { type Interface = IEventHandler; type Event = UserBeforeUpdateEvent; } @@ -561,17 +562,17 @@ namespace UserBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { UserBeforeUpdateHandler } from "webiny/api/security/user"; +import { UserBeforeUpdateEventHandler } from "webiny/api/security/user"; -class MyHandler implements UserBeforeUpdateHandler.Interface { +class MyHandler implements UserBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: UserBeforeUpdateHandler.Event): Promise { + public async handle(event: UserBeforeUpdateEventHandler.Event): Promise { // implementation } } -export default UserBeforeUpdateHandler.createImplementation({ +export default UserBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/system.ai.txt b/docs/developer-docs/6.x/reference/api/system.ai.txt index 59761a7c0..91ba7d58d 100644 --- a/docs/developer-docs/6.x/reference/api/system.ai.txt +++ b/docs/developer-docs/6.x/reference/api/system.ai.txt @@ -11,7 +11,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -InstallSystemUseCase, SystemInstalledHandler +InstallSystemUseCase, SystemInstalledEventHandler Import Path: webiny/api/system diff --git a/docs/developer-docs/6.x/reference/api/system.mdx b/docs/developer-docs/6.x/reference/api/system.mdx index b4f41dfa3..33e85b322 100644 --- a/docs/developer-docs/6.x/reference/api/system.mdx +++ b/docs/developer-docs/6.x/reference/api/system.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/system`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -24,7 +25,9 @@ This page documents everything exported from `webiny/api/system`. Import any of **Event Handlers** - + ## Use Cases @@ -76,18 +79,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `SystemInstalledHandler` +### `SystemInstalledEventHandler` **Event Handler Abstraction** — imported from `webiny/api/system` ```typescript -import { SystemInstalledHandler } from "webiny/api/system"; +import { SystemInstalledEventHandler } from "webiny/api/system"; ``` -**Interface `SystemInstalledHandler.Interface`:** +**Interface `SystemInstalledEventHandler.Interface`:** ```typescript -interface SystemInstalledHandler.Interface { +interface SystemInstalledEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -95,7 +98,7 @@ interface SystemInstalledHandler.Interface { **Types:** ```typescript -namespace SystemInstalledHandler { +namespace SystemInstalledEventHandler { type Interface = IEventHandler; type Event = DomainEvent; } @@ -104,17 +107,17 @@ namespace SystemInstalledHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { SystemInstalledHandler } from "webiny/api/system"; +import { SystemInstalledEventHandler } from "webiny/api/system"; -class MyHandler implements SystemInstalledHandler.Interface { +class MyHandler implements SystemInstalledEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: SystemInstalledHandler.Event): Promise { + public async handle(event: SystemInstalledEventHandler.Event): Promise { // implementation } } -export default SystemInstalledHandler.createImplementation({ +export default SystemInstalledEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/tenancy.ai.txt b/docs/developer-docs/6.x/reference/api/tenancy.ai.txt index ecc0c0853..c4a842501 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.ai.txt +++ b/docs/developer-docs/6.x/reference/api/tenancy.ai.txt @@ -16,7 +16,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -TenantContext, CreateTenantUseCase, CreateTenantRepository, TenantBeforeCreateHandler, TenantAfterCreateHandler, GetTenantByIdUseCase, UpdateTenantUseCase, UpdateTenantRepository, TenantAfterUpdateHandler, TenantBeforeUpdateHandler, DeleteTenantUseCase, DeleteTenantRepository, TenantAfterDeleteHandler, TenantBeforeDeleteHandler, InstallTenantUseCase, AppInstaller, TenantInstalledHandler +TenantContext, CreateTenantUseCase, CreateTenantRepository, TenantBeforeCreateEventHandler, TenantAfterCreateEventHandler, GetTenantByIdUseCase, UpdateTenantUseCase, UpdateTenantRepository, TenantAfterUpdateEventHandler, TenantBeforeUpdateEventHandler, DeleteTenantUseCase, DeleteTenantRepository, TenantAfterDeleteEventHandler, TenantBeforeDeleteEventHandler, InstallTenantUseCase, AppInstaller, TenantInstalledEventHandler Import Path: webiny/api/tenancy diff --git a/docs/developer-docs/6.x/reference/api/tenancy.mdx b/docs/developer-docs/6.x/reference/api/tenancy.mdx index 5715525d5..3057751d7 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.mdx +++ b/docs/developer-docs/6.x/reference/api/tenancy.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/tenancy`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -37,13 +38,13 @@ This page documents everything exported from `webiny/api/tenancy`. Import any of @@ -413,18 +414,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `TenantAfterCreateHandler` +### `TenantAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantAfterCreateHandler } from "webiny/api/tenancy"; +import { TenantAfterCreateEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantAfterCreateHandler.Interface`:** +**Interface `TenantAfterCreateEventHandler.Interface`:** ```typescript -interface TenantAfterCreateHandler.Interface { +interface TenantAfterCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -432,7 +433,7 @@ interface TenantAfterCreateHandler.Interface { **Types:** ```typescript -namespace TenantAfterCreateHandler { +namespace TenantAfterCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -441,34 +442,34 @@ namespace TenantAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantAfterCreateHandler } from "webiny/api/tenancy"; +import { TenantAfterCreateEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantAfterCreateHandler.Interface { +class MyHandler implements TenantAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantAfterCreateHandler.Event): Promise { + public async handle(event: TenantAfterCreateEventHandler.Event): Promise { // implementation } } -export default TenantAfterCreateHandler.createImplementation({ +export default TenantAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantAfterDeleteHandler` +### `TenantAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantAfterDeleteHandler } from "webiny/api/tenancy"; +import { TenantAfterDeleteEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantAfterDeleteHandler.Interface`:** +**Interface `TenantAfterDeleteEventHandler.Interface`:** ```typescript -interface TenantAfterDeleteHandler.Interface { +interface TenantAfterDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -476,7 +477,7 @@ interface TenantAfterDeleteHandler.Interface { **Types:** ```typescript -namespace TenantAfterDeleteHandler { +namespace TenantAfterDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -485,34 +486,34 @@ namespace TenantAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantAfterDeleteHandler } from "webiny/api/tenancy"; +import { TenantAfterDeleteEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantAfterDeleteHandler.Interface { +class MyHandler implements TenantAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantAfterDeleteHandler.Event): Promise { + public async handle(event: TenantAfterDeleteEventHandler.Event): Promise { // implementation } } -export default TenantAfterDeleteHandler.createImplementation({ +export default TenantAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantAfterUpdateHandler` +### `TenantAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantAfterUpdateHandler } from "webiny/api/tenancy"; +import { TenantAfterUpdateEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantAfterUpdateHandler.Interface`:** +**Interface `TenantAfterUpdateEventHandler.Interface`:** ```typescript -interface TenantAfterUpdateHandler.Interface { +interface TenantAfterUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -520,7 +521,7 @@ interface TenantAfterUpdateHandler.Interface { **Types:** ```typescript -namespace TenantAfterUpdateHandler { +namespace TenantAfterUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -529,34 +530,34 @@ namespace TenantAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantAfterUpdateHandler } from "webiny/api/tenancy"; +import { TenantAfterUpdateEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantAfterUpdateHandler.Interface { +class MyHandler implements TenantAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantAfterUpdateHandler.Event): Promise { + public async handle(event: TenantAfterUpdateEventHandler.Event): Promise { // implementation } } -export default TenantAfterUpdateHandler.createImplementation({ +export default TenantAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantBeforeCreateHandler` +### `TenantBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantBeforeCreateHandler } from "webiny/api/tenancy"; +import { TenantBeforeCreateEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantBeforeCreateHandler.Interface`:** +**Interface `TenantBeforeCreateEventHandler.Interface`:** ```typescript -interface TenantBeforeCreateHandler.Interface { +interface TenantBeforeCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -564,7 +565,7 @@ interface TenantBeforeCreateHandler.Interface { **Types:** ```typescript -namespace TenantBeforeCreateHandler { +namespace TenantBeforeCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -573,34 +574,34 @@ namespace TenantBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantBeforeCreateHandler } from "webiny/api/tenancy"; +import { TenantBeforeCreateEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantBeforeCreateHandler.Interface { +class MyHandler implements TenantBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantBeforeCreateHandler.Event): Promise { + public async handle(event: TenantBeforeCreateEventHandler.Event): Promise { // implementation } } -export default TenantBeforeCreateHandler.createImplementation({ +export default TenantBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantBeforeDeleteHandler` +### `TenantBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantBeforeDeleteHandler } from "webiny/api/tenancy"; +import { TenantBeforeDeleteEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantBeforeDeleteHandler.Interface`:** +**Interface `TenantBeforeDeleteEventHandler.Interface`:** ```typescript -interface TenantBeforeDeleteHandler.Interface { +interface TenantBeforeDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -608,7 +609,7 @@ interface TenantBeforeDeleteHandler.Interface { **Types:** ```typescript -namespace TenantBeforeDeleteHandler { +namespace TenantBeforeDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -617,34 +618,34 @@ namespace TenantBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantBeforeDeleteHandler } from "webiny/api/tenancy"; +import { TenantBeforeDeleteEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantBeforeDeleteHandler.Interface { +class MyHandler implements TenantBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantBeforeDeleteHandler.Event): Promise { + public async handle(event: TenantBeforeDeleteEventHandler.Event): Promise { // implementation } } -export default TenantBeforeDeleteHandler.createImplementation({ +export default TenantBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantBeforeUpdateHandler` +### `TenantBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantBeforeUpdateHandler } from "webiny/api/tenancy"; +import { TenantBeforeUpdateEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantBeforeUpdateHandler.Interface`:** +**Interface `TenantBeforeUpdateEventHandler.Interface`:** ```typescript -interface TenantBeforeUpdateHandler.Interface { +interface TenantBeforeUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -652,7 +653,7 @@ interface TenantBeforeUpdateHandler.Interface { **Types:** ```typescript -namespace TenantBeforeUpdateHandler { +namespace TenantBeforeUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -661,34 +662,34 @@ namespace TenantBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantBeforeUpdateHandler } from "webiny/api/tenancy"; +import { TenantBeforeUpdateEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantBeforeUpdateHandler.Interface { +class MyHandler implements TenantBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantBeforeUpdateHandler.Event): Promise { + public async handle(event: TenantBeforeUpdateEventHandler.Event): Promise { // implementation } } -export default TenantBeforeUpdateHandler.createImplementation({ +export default TenantBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `TenantInstalledHandler` +### `TenantInstalledEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` ```typescript -import { TenantInstalledHandler } from "webiny/api/tenancy"; +import { TenantInstalledEventHandler } from "webiny/api/tenancy"; ``` -**Interface `TenantInstalledHandler.Interface`:** +**Interface `TenantInstalledEventHandler.Interface`:** ```typescript -interface TenantInstalledHandler.Interface { +interface TenantInstalledEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -696,7 +697,7 @@ interface TenantInstalledHandler.Interface { **Types:** ```typescript -namespace TenantInstalledHandler { +namespace TenantInstalledEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; } @@ -705,17 +706,17 @@ namespace TenantInstalledHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { TenantInstalledHandler } from "webiny/api/tenancy"; +import { TenantInstalledEventHandler } from "webiny/api/tenancy"; -class MyHandler implements TenantInstalledHandler.Interface { +class MyHandler implements TenantInstalledEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: TenantInstalledHandler.Event): Promise { + public async handle(event: TenantInstalledEventHandler.Event): Promise { // implementation } } -export default TenantInstalledHandler.createImplementation({ +export default TenantInstalledEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt b/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt index 5c64aba54..8553fe287 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.ai.txt @@ -22,7 +22,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -CreatePageUseCase, PageAfterCreateHandler, PageBeforeCreateHandler, CreatePageRevisionFromUseCase, PageAfterCreateRevisionFromHandler, PageBeforeCreateRevisionFromHandler, DeletePageUseCase, PageAfterDeleteHandler, PageBeforeDeleteHandler, DuplicatePageUseCase, PageAfterDuplicateHandler, PageBeforeDuplicateHandler, GetPageByIdUseCase, GetPageByPathUseCase, GetPageRevisionsUseCase, ListPagesUseCase, MovePageUseCase, PageAfterMoveHandler, PageBeforeMoveHandler, PublishPageUseCase, PageAfterPublishHandler, PageBeforePublishHandler, UnpublishPageUseCase, PageAfterUnpublishHandler, PageBeforeUnpublishHandler, UpdatePageUseCase, PageAfterUpdateHandler, PageBeforeUpdateHandler +CreatePageUseCase, PageAfterCreateEventHandler, PageBeforeCreateEventHandler, CreatePageRevisionFromUseCase, PageAfterCreateRevisionFromEventHandler, PageBeforeCreateRevisionFromEventHandler, DeletePageUseCase, PageAfterDeleteEventHandler, PageBeforeDeleteEventHandler, DuplicatePageUseCase, PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, GetPageByIdUseCase, GetPageByPathUseCase, GetPageRevisionsUseCase, ListPagesUseCase, MovePageUseCase, PageAfterMoveEventHandler, PageBeforeMoveEventHandler, PublishPageUseCase, PageAfterPublishEventHandler, PageBeforePublishEventHandler, UnpublishPageUseCase, PageAfterUnpublishEventHandler, PageBeforeUnpublishEventHandler, UpdatePageUseCase, PageAfterUpdateEventHandler, PageBeforeUpdateEventHandler Import Path: webiny/api/website-builder/page diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx index 1c259af55..f78c7cc0b 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/website-builder/page`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -41,28 +42,28 @@ This page documents everything exported from `webiny/api/website-builder/page`. @@ -631,18 +632,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `PageAfterCreateHandler` +### `PageAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterCreateHandler } from "webiny/api/website-builder/page"; +import { PageAfterCreateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterCreateHandler.Interface`:** +**Interface `PageAfterCreateEventHandler.Interface`:** ```typescript -interface PageAfterCreateHandler.Interface { +interface PageAfterCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -658,7 +659,7 @@ interface PageAfterCreatePayload { **Types:** ```typescript -namespace PageAfterCreateHandler { +namespace PageAfterCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -668,34 +669,34 @@ namespace PageAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterCreateHandler } from "webiny/api/website-builder/page"; +import { PageAfterCreateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterCreateHandler.Interface { +class MyHandler implements PageAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterCreateHandler.Event): Promise { + public async handle(event: PageAfterCreateEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageAfterCreateHandler.createImplementation({ +export default PageAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterCreateRevisionFromHandler` +### `PageAfterCreateRevisionFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterCreateRevisionFromHandler } from "webiny/api/website-builder/page"; +import { PageAfterCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterCreateRevisionFromHandler.Interface`:** +**Interface `PageAfterCreateRevisionFromEventHandler.Interface`:** ```typescript -interface PageAfterCreateRevisionFromHandler.Interface { +interface PageAfterCreateRevisionFromEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -711,7 +712,7 @@ interface PageAfterCreateRevisionFromPayload { **Types:** ```typescript -namespace PageAfterCreateRevisionFromHandler { +namespace PageAfterCreateRevisionFromEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -721,34 +722,34 @@ namespace PageAfterCreateRevisionFromHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterCreateRevisionFromHandler } from "webiny/api/website-builder/page"; +import { PageAfterCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterCreateRevisionFromHandler.Interface { +class MyHandler implements PageAfterCreateRevisionFromEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterCreateRevisionFromHandler.Event): Promise { + public async handle(event: PageAfterCreateRevisionFromEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageAfterCreateRevisionFromHandler.createImplementation({ +export default PageAfterCreateRevisionFromEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterDeleteHandler` +### `PageAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterDeleteHandler } from "webiny/api/website-builder/page"; +import { PageAfterDeleteEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterDeleteHandler.Interface`:** +**Interface `PageAfterDeleteEventHandler.Interface`:** ```typescript -interface PageAfterDeleteHandler.Interface { +interface PageAfterDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -764,7 +765,7 @@ interface PageAfterDeletePayload { **Types:** ```typescript -namespace PageAfterDeleteHandler { +namespace PageAfterDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -774,34 +775,34 @@ namespace PageAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterDeleteHandler } from "webiny/api/website-builder/page"; +import { PageAfterDeleteEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterDeleteHandler.Interface { +class MyHandler implements PageAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterDeleteHandler.Event): Promise { + public async handle(event: PageAfterDeleteEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageAfterDeleteHandler.createImplementation({ +export default PageAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterDuplicateHandler` +### `PageAfterDuplicateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterDuplicateHandler } from "webiny/api/website-builder/page"; +import { PageAfterDuplicateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterDuplicateHandler.Interface`:** +**Interface `PageAfterDuplicateEventHandler.Interface`:** ```typescript -interface PageAfterDuplicateHandler.Interface { +interface PageAfterDuplicateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -818,7 +819,7 @@ interface PageAfterDuplicatePayload { **Types:** ```typescript -namespace PageAfterDuplicateHandler { +namespace PageAfterDuplicateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -828,34 +829,34 @@ namespace PageAfterDuplicateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterDuplicateHandler } from "webiny/api/website-builder/page"; +import { PageAfterDuplicateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterDuplicateHandler.Interface { +class MyHandler implements PageAfterDuplicateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterDuplicateHandler.Event): Promise { + public async handle(event: PageAfterDuplicateEventHandler.Event): Promise { const { original, page } = event.payload; } } -export default PageAfterDuplicateHandler.createImplementation({ +export default PageAfterDuplicateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterMoveHandler` +### `PageAfterMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterMoveHandler } from "webiny/api/website-builder/page"; +import { PageAfterMoveEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterMoveHandler.Interface`:** +**Interface `PageAfterMoveEventHandler.Interface`:** ```typescript -interface PageAfterMoveHandler.Interface { +interface PageAfterMoveEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -873,7 +874,7 @@ interface PageAfterMovePayload { **Types:** ```typescript -namespace PageAfterMoveHandler { +namespace PageAfterMoveEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -883,34 +884,34 @@ namespace PageAfterMoveHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterMoveHandler } from "webiny/api/website-builder/page"; +import { PageAfterMoveEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterMoveHandler.Interface { +class MyHandler implements PageAfterMoveEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterMoveHandler.Event): Promise { + public async handle(event: PageAfterMoveEventHandler.Event): Promise { const { original, input, page } = event.payload; } } -export default PageAfterMoveHandler.createImplementation({ +export default PageAfterMoveEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterPublishHandler` +### `PageAfterPublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterPublishHandler } from "webiny/api/website-builder/page"; +import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterPublishHandler.Interface`:** +**Interface `PageAfterPublishEventHandler.Interface`:** ```typescript -interface PageAfterPublishHandler.Interface { +interface PageAfterPublishEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -926,7 +927,7 @@ interface PageAfterPublishPayload { **Types:** ```typescript -namespace PageAfterPublishHandler { +namespace PageAfterPublishEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -936,34 +937,34 @@ namespace PageAfterPublishHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterPublishHandler } from "webiny/api/website-builder/page"; +import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterPublishHandler.Interface { +class MyHandler implements PageAfterPublishEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterPublishHandler.Event): Promise { + public async handle(event: PageAfterPublishEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageAfterPublishHandler.createImplementation({ +export default PageAfterPublishEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterUnpublishHandler` +### `PageAfterUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterUnpublishHandler } from "webiny/api/website-builder/page"; +import { PageAfterUnpublishEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterUnpublishHandler.Interface`:** +**Interface `PageAfterUnpublishEventHandler.Interface`:** ```typescript -interface PageAfterUnpublishHandler.Interface { +interface PageAfterUnpublishEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -979,7 +980,7 @@ interface PageAfterUnpublishPayload { **Types:** ```typescript -namespace PageAfterUnpublishHandler { +namespace PageAfterUnpublishEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -989,34 +990,34 @@ namespace PageAfterUnpublishHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterUnpublishHandler } from "webiny/api/website-builder/page"; +import { PageAfterUnpublishEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterUnpublishHandler.Interface { +class MyHandler implements PageAfterUnpublishEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterUnpublishHandler.Event): Promise { + public async handle(event: PageAfterUnpublishEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageAfterUnpublishHandler.createImplementation({ +export default PageAfterUnpublishEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageAfterUpdateHandler` +### `PageAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageAfterUpdateHandler } from "webiny/api/website-builder/page"; +import { PageAfterUpdateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageAfterUpdateHandler.Interface`:** +**Interface `PageAfterUpdateEventHandler.Interface`:** ```typescript -interface PageAfterUpdateHandler.Interface { +interface PageAfterUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1037,7 +1038,7 @@ interface PageAfterUpdatePayload { **Types:** ```typescript -namespace PageAfterUpdateHandler { +namespace PageAfterUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1047,34 +1048,34 @@ namespace PageAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageAfterUpdateHandler } from "webiny/api/website-builder/page"; +import { PageAfterUpdateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageAfterUpdateHandler.Interface { +class MyHandler implements PageAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageAfterUpdateHandler.Event): Promise { + public async handle(event: PageAfterUpdateEventHandler.Event): Promise { const { original, input, page } = event.payload; } } -export default PageAfterUpdateHandler.createImplementation({ +export default PageAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeCreateHandler` +### `PageBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeCreateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeCreateHandler.Interface`:** +**Interface `PageBeforeCreateEventHandler.Interface`:** ```typescript -interface PageBeforeCreateHandler.Interface { +interface PageBeforeCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1090,7 +1091,7 @@ interface PageBeforeCreatePayload { **Types:** ```typescript -namespace PageBeforeCreateHandler { +namespace PageBeforeCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1100,34 +1101,34 @@ namespace PageBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeCreateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeCreateHandler.Interface { +class MyHandler implements PageBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeCreateHandler.Event): Promise { + public async handle(event: PageBeforeCreateEventHandler.Event): Promise { const { input } = event.payload; } } -export default PageBeforeCreateHandler.createImplementation({ +export default PageBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeCreateRevisionFromHandler` +### `PageBeforeCreateRevisionFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeCreateRevisionFromHandler } from "webiny/api/website-builder/page"; +import { PageBeforeCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeCreateRevisionFromHandler.Interface`:** +**Interface `PageBeforeCreateRevisionFromEventHandler.Interface`:** ```typescript -interface PageBeforeCreateRevisionFromHandler.Interface { +interface PageBeforeCreateRevisionFromEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1143,7 +1144,7 @@ interface PageBeforeCreateRevisionFromPayload { **Types:** ```typescript -namespace PageBeforeCreateRevisionFromHandler { +namespace PageBeforeCreateRevisionFromEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1153,34 +1154,34 @@ namespace PageBeforeCreateRevisionFromHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeCreateRevisionFromHandler } from "webiny/api/website-builder/page"; +import { PageBeforeCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeCreateRevisionFromHandler.Interface { +class MyHandler implements PageBeforeCreateRevisionFromEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeCreateRevisionFromHandler.Event): Promise { + public async handle(event: PageBeforeCreateRevisionFromEventHandler.Event): Promise { const { params } = event.payload; } } -export default PageBeforeCreateRevisionFromHandler.createImplementation({ +export default PageBeforeCreateRevisionFromEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeDeleteHandler` +### `PageBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeDeleteHandler } from "webiny/api/website-builder/page"; +import { PageBeforeDeleteEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeDeleteHandler.Interface`:** +**Interface `PageBeforeDeleteEventHandler.Interface`:** ```typescript -interface PageBeforeDeleteHandler.Interface { +interface PageBeforeDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1196,7 +1197,7 @@ interface PageBeforeDeletePayload { **Types:** ```typescript -namespace PageBeforeDeleteHandler { +namespace PageBeforeDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1206,34 +1207,34 @@ namespace PageBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeDeleteHandler } from "webiny/api/website-builder/page"; +import { PageBeforeDeleteEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeDeleteHandler.Interface { +class MyHandler implements PageBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeDeleteHandler.Event): Promise { + public async handle(event: PageBeforeDeleteEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageBeforeDeleteHandler.createImplementation({ +export default PageBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeDuplicateHandler` +### `PageBeforeDuplicateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeDuplicateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeDuplicateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeDuplicateHandler.Interface`:** +**Interface `PageBeforeDuplicateEventHandler.Interface`:** ```typescript -interface PageBeforeDuplicateHandler.Interface { +interface PageBeforeDuplicateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1249,7 +1250,7 @@ interface PageBeforeDuplicatePayload { **Types:** ```typescript -namespace PageBeforeDuplicateHandler { +namespace PageBeforeDuplicateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1259,34 +1260,34 @@ namespace PageBeforeDuplicateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeDuplicateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeDuplicateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeDuplicateHandler.Interface { +class MyHandler implements PageBeforeDuplicateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeDuplicateHandler.Event): Promise { + public async handle(event: PageBeforeDuplicateEventHandler.Event): Promise { const { original } = event.payload; } } -export default PageBeforeDuplicateHandler.createImplementation({ +export default PageBeforeDuplicateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeMoveHandler` +### `PageBeforeMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeMoveHandler } from "webiny/api/website-builder/page"; +import { PageBeforeMoveEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeMoveHandler.Interface`:** +**Interface `PageBeforeMoveEventHandler.Interface`:** ```typescript -interface PageBeforeMoveHandler.Interface { +interface PageBeforeMoveEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1303,7 +1304,7 @@ interface PageBeforeMovePayload { **Types:** ```typescript -namespace PageBeforeMoveHandler { +namespace PageBeforeMoveEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1313,34 +1314,34 @@ namespace PageBeforeMoveHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeMoveHandler } from "webiny/api/website-builder/page"; +import { PageBeforeMoveEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeMoveHandler.Interface { +class MyHandler implements PageBeforeMoveEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeMoveHandler.Event): Promise { + public async handle(event: PageBeforeMoveEventHandler.Event): Promise { const { original, input } = event.payload; } } -export default PageBeforeMoveHandler.createImplementation({ +export default PageBeforeMoveEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforePublishHandler` +### `PageBeforePublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforePublishHandler } from "webiny/api/website-builder/page"; +import { PageBeforePublishEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforePublishHandler.Interface`:** +**Interface `PageBeforePublishEventHandler.Interface`:** ```typescript -interface PageBeforePublishHandler.Interface { +interface PageBeforePublishEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1356,7 +1357,7 @@ interface PageBeforePublishPayload { **Types:** ```typescript -namespace PageBeforePublishHandler { +namespace PageBeforePublishEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1366,34 +1367,34 @@ namespace PageBeforePublishHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforePublishHandler } from "webiny/api/website-builder/page"; +import { PageBeforePublishEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforePublishHandler.Interface { +class MyHandler implements PageBeforePublishEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforePublishHandler.Event): Promise { + public async handle(event: PageBeforePublishEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageBeforePublishHandler.createImplementation({ +export default PageBeforePublishEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeUnpublishHandler` +### `PageBeforeUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeUnpublishHandler } from "webiny/api/website-builder/page"; +import { PageBeforeUnpublishEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeUnpublishHandler.Interface`:** +**Interface `PageBeforeUnpublishEventHandler.Interface`:** ```typescript -interface PageBeforeUnpublishHandler.Interface { +interface PageBeforeUnpublishEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1409,7 +1410,7 @@ interface PageBeforeUnpublishPayload { **Types:** ```typescript -namespace PageBeforeUnpublishHandler { +namespace PageBeforeUnpublishEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1419,34 +1420,34 @@ namespace PageBeforeUnpublishHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeUnpublishHandler } from "webiny/api/website-builder/page"; +import { PageBeforeUnpublishEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeUnpublishHandler.Interface { +class MyHandler implements PageBeforeUnpublishEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeUnpublishHandler.Event): Promise { + public async handle(event: PageBeforeUnpublishEventHandler.Event): Promise { const { page } = event.payload; } } -export default PageBeforeUnpublishHandler.createImplementation({ +export default PageBeforeUnpublishEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `PageBeforeUpdateHandler` +### `PageBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` ```typescript -import { PageBeforeUpdateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; ``` -**Interface `PageBeforeUpdateHandler.Interface`:** +**Interface `PageBeforeUpdateEventHandler.Interface`:** ```typescript -interface PageBeforeUpdateHandler.Interface { +interface PageBeforeUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -1466,7 +1467,7 @@ interface PageBeforeUpdatePayload { **Types:** ```typescript -namespace PageBeforeUpdateHandler { +namespace PageBeforeUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Page = WbPage; @@ -1476,17 +1477,17 @@ namespace PageBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { PageBeforeUpdateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; -class MyHandler implements PageBeforeUpdateHandler.Interface { +class MyHandler implements PageBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: PageBeforeUpdateHandler.Event): Promise { + public async handle(event: PageBeforeUpdateEventHandler.Event): Promise { const { original, input } = event.payload; } } -export default PageBeforeUpdateHandler.createImplementation({ +export default PageBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt b/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt index 31ccabe76..f8f539a9c 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.ai.txt @@ -18,7 +18,7 @@ Key Documentation Decisions: - Type-only exports are labeled as "Type"; namespace exports include member listings Exported Symbols: -CreateRedirectUseCase, RedirectAfterCreateHandler, RedirectBeforeCreateHandler, DeleteRedirectUseCase, RedirectAfterDeleteHandler, RedirectBeforeDeleteHandler, GetActiveRedirectsUseCase, GetRedirectByIdUseCase, InvalidateRedirectsCacheUseCase, ListRedirectsUseCase, MoveRedirectUseCase, RedirectAfterMoveHandler, RedirectBeforeMoveHandler, UpdateRedirectUseCase, RedirectAfterUpdateHandler, RedirectBeforeUpdateHandler +CreateRedirectUseCase, RedirectAfterCreateEventHandler, RedirectBeforeCreateEventHandler, DeleteRedirectUseCase, RedirectAfterDeleteEventHandler, RedirectBeforeDeleteEventHandler, GetActiveRedirectsUseCase, GetRedirectByIdUseCase, InvalidateRedirectsCacheUseCase, ListRedirectsUseCase, MoveRedirectUseCase, RedirectAfterMoveEventHandler, RedirectBeforeMoveEventHandler, UpdateRedirectUseCase, RedirectAfterUpdateEventHandler, RedirectBeforeUpdateEventHandler Import Path: webiny/api/website-builder/redirect diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx index 84b73d063..c39fe8a26 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx @@ -10,6 +10,7 @@ import { SymbolList } from "@/components/SymbolList"; - What use cases are available in `webiny/api/website-builder/redirect`? +- Which event handlers can you implement? - How to import and use each exported item? @@ -37,14 +38,14 @@ This page documents everything exported from `webiny/api/website-builder/redirec @@ -425,18 +426,18 @@ export default MyUseCase.createImplementation({ ## Event Handlers -### `RedirectAfterCreateHandler` +### `RedirectAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectAfterCreateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterCreateEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectAfterCreateHandler.Interface`:** +**Interface `RedirectAfterCreateEventHandler.Interface`:** ```typescript -interface RedirectAfterCreateHandler.Interface { +interface RedirectAfterCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -452,7 +453,7 @@ interface RedirectAfterCreatePayload { **Types:** ```typescript -namespace RedirectAfterCreateHandler { +namespace RedirectAfterCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -462,34 +463,34 @@ namespace RedirectAfterCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectAfterCreateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterCreateEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectAfterCreateHandler.Interface { +class MyHandler implements RedirectAfterCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectAfterCreateHandler.Event): Promise { + public async handle(event: RedirectAfterCreateEventHandler.Event): Promise { const { redirect } = event.payload; } } -export default RedirectAfterCreateHandler.createImplementation({ +export default RedirectAfterCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectAfterDeleteHandler` +### `RedirectAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectAfterDeleteHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterDeleteEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectAfterDeleteHandler.Interface`:** +**Interface `RedirectAfterDeleteEventHandler.Interface`:** ```typescript -interface RedirectAfterDeleteHandler.Interface { +interface RedirectAfterDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -505,7 +506,7 @@ interface RedirectAfterDeletePayload { **Types:** ```typescript -namespace RedirectAfterDeleteHandler { +namespace RedirectAfterDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -515,34 +516,34 @@ namespace RedirectAfterDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectAfterDeleteHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterDeleteEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectAfterDeleteHandler.Interface { +class MyHandler implements RedirectAfterDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectAfterDeleteHandler.Event): Promise { + public async handle(event: RedirectAfterDeleteEventHandler.Event): Promise { const { redirect } = event.payload; } } -export default RedirectAfterDeleteHandler.createImplementation({ +export default RedirectAfterDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectAfterMoveHandler` +### `RedirectAfterMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectAfterMoveHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterMoveEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectAfterMoveHandler.Interface`:** +**Interface `RedirectAfterMoveEventHandler.Interface`:** ```typescript -interface RedirectAfterMoveHandler.Interface { +interface RedirectAfterMoveEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -560,7 +561,7 @@ interface RedirectAfterMovePayload { **Types:** ```typescript -namespace RedirectAfterMoveHandler { +namespace RedirectAfterMoveEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -570,34 +571,34 @@ namespace RedirectAfterMoveHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectAfterMoveHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterMoveEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectAfterMoveHandler.Interface { +class MyHandler implements RedirectAfterMoveEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectAfterMoveHandler.Event): Promise { + public async handle(event: RedirectAfterMoveEventHandler.Event): Promise { const { original, input, redirect } = event.payload; } } -export default RedirectAfterMoveHandler.createImplementation({ +export default RedirectAfterMoveEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectAfterUpdateHandler` +### `RedirectAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectAfterUpdateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterUpdateEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectAfterUpdateHandler.Interface`:** +**Interface `RedirectAfterUpdateEventHandler.Interface`:** ```typescript -interface RedirectAfterUpdateHandler.Interface { +interface RedirectAfterUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -618,7 +619,7 @@ interface RedirectAfterUpdatePayload { **Types:** ```typescript -namespace RedirectAfterUpdateHandler { +namespace RedirectAfterUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -628,34 +629,34 @@ namespace RedirectAfterUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectAfterUpdateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectAfterUpdateEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectAfterUpdateHandler.Interface { +class MyHandler implements RedirectAfterUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectAfterUpdateHandler.Event): Promise { + public async handle(event: RedirectAfterUpdateEventHandler.Event): Promise { const { original, input, redirect } = event.payload; } } -export default RedirectAfterUpdateHandler.createImplementation({ +export default RedirectAfterUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectBeforeCreateHandler` +### `RedirectBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectBeforeCreateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeCreateEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectBeforeCreateHandler.Interface`:** +**Interface `RedirectBeforeCreateEventHandler.Interface`:** ```typescript -interface RedirectBeforeCreateHandler.Interface { +interface RedirectBeforeCreateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -671,7 +672,7 @@ interface RedirectBeforeCreatePayload { **Types:** ```typescript -namespace RedirectBeforeCreateHandler { +namespace RedirectBeforeCreateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -681,34 +682,34 @@ namespace RedirectBeforeCreateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectBeforeCreateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeCreateEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectBeforeCreateHandler.Interface { +class MyHandler implements RedirectBeforeCreateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectBeforeCreateHandler.Event): Promise { + public async handle(event: RedirectBeforeCreateEventHandler.Event): Promise { const { input } = event.payload; } } -export default RedirectBeforeCreateHandler.createImplementation({ +export default RedirectBeforeCreateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectBeforeDeleteHandler` +### `RedirectBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectBeforeDeleteHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeDeleteEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectBeforeDeleteHandler.Interface`:** +**Interface `RedirectBeforeDeleteEventHandler.Interface`:** ```typescript -interface RedirectBeforeDeleteHandler.Interface { +interface RedirectBeforeDeleteEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -724,7 +725,7 @@ interface RedirectBeforeDeletePayload { **Types:** ```typescript -namespace RedirectBeforeDeleteHandler { +namespace RedirectBeforeDeleteEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -734,34 +735,34 @@ namespace RedirectBeforeDeleteHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectBeforeDeleteHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeDeleteEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectBeforeDeleteHandler.Interface { +class MyHandler implements RedirectBeforeDeleteEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectBeforeDeleteHandler.Event): Promise { + public async handle(event: RedirectBeforeDeleteEventHandler.Event): Promise { const { redirect } = event.payload; } } -export default RedirectBeforeDeleteHandler.createImplementation({ +export default RedirectBeforeDeleteEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectBeforeMoveHandler` +### `RedirectBeforeMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectBeforeMoveHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeMoveEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectBeforeMoveHandler.Interface`:** +**Interface `RedirectBeforeMoveEventHandler.Interface`:** ```typescript -interface RedirectBeforeMoveHandler.Interface { +interface RedirectBeforeMoveEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -778,7 +779,7 @@ interface RedirectBeforeMovePayload { **Types:** ```typescript -namespace RedirectBeforeMoveHandler { +namespace RedirectBeforeMoveEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -788,34 +789,34 @@ namespace RedirectBeforeMoveHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectBeforeMoveHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeMoveEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectBeforeMoveHandler.Interface { +class MyHandler implements RedirectBeforeMoveEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectBeforeMoveHandler.Event): Promise { + public async handle(event: RedirectBeforeMoveEventHandler.Event): Promise { const { original, input } = event.payload; } } -export default RedirectBeforeMoveHandler.createImplementation({ +export default RedirectBeforeMoveEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); ``` -### `RedirectBeforeUpdateHandler` +### `RedirectBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` ```typescript -import { RedirectBeforeUpdateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeUpdateEventHandler } from "webiny/api/website-builder/redirect"; ``` -**Interface `RedirectBeforeUpdateHandler.Interface`:** +**Interface `RedirectBeforeUpdateEventHandler.Interface`:** ```typescript -interface RedirectBeforeUpdateHandler.Interface { +interface RedirectBeforeUpdateEventHandler.Interface { handle(event: DomainEvent): Promise; } ``` @@ -835,7 +836,7 @@ interface RedirectBeforeUpdatePayload { **Types:** ```typescript -namespace RedirectBeforeUpdateHandler { +namespace RedirectBeforeUpdateEventHandler { type Interface = IEventHandler>; type Event = DomainEvent; type Redirect = WbRedirect; @@ -845,17 +846,17 @@ namespace RedirectBeforeUpdateHandler { **Usage:** ```typescript extensions/MyHandler.ts -import { RedirectBeforeUpdateHandler } from "webiny/api/website-builder/redirect"; +import { RedirectBeforeUpdateEventHandler } from "webiny/api/website-builder/redirect"; -class MyHandler implements RedirectBeforeUpdateHandler.Interface { +class MyHandler implements RedirectBeforeUpdateEventHandler.Interface { public constructor(/* inject dependencies here */) {} - public async handle(event: RedirectBeforeUpdateHandler.Event): Promise { + public async handle(event: RedirectBeforeUpdateEventHandler.Event): Promise { const { original, input } = event.payload; } } -export default RedirectBeforeUpdateHandler.createImplementation({ +export default RedirectBeforeUpdateEventHandler.createImplementation({ implementation: MyHandler, dependencies: [] }); diff --git a/docs/developer-docs/6.x/reference/extensions.mdx b/docs/developer-docs/6.x/reference/extensions.mdx index f6bce5ac7..716a0f757 100644 --- a/docs/developer-docs/6.x/reference/extensions.mdx +++ b/docs/developer-docs/6.x/reference/extensions.mdx @@ -101,16 +101,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Api } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------------ | -------- | -------- | ----------- | -| `src` | `string` | yes | — | -| `exportName` | `string` | no | — | - ### `BuildParam` Add build-time parameter to API app. @@ -120,18 +113,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Api } from "webiny/extensions"; -export const Extensions = () => ( - -); +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----------- | -------- | -------- | ----------- | -| `paramName` | `string` | yes | — | -| `value` | `union` | yes | — | - ## Admin ### `Extension` @@ -143,16 +127,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Admin } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------------ | -------- | -------- | ----------- | -| `src` | `string` | yes | — | -| `exportName` | `string` | no | — | - ### `BuildParam` Add build-time parameter to Admin app. @@ -162,18 +139,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Admin } from "webiny/extensions"; -export const Extensions = () => ( - -); +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----------- | -------- | -------- | ----------- | -| `paramName` | `string` | yes | — | -| `value` | `union` | yes | — | - ## Cli ### `Command` @@ -185,15 +153,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Cli } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ## Infra ### `Vpc` @@ -208,41 +170,6 @@ import { Infra } from "webiny/extensions"; export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----------------- | ------------------------------------- | -------- | ---------------------- | -| `enabled` | `boolean` | no | Whether to enable VPC. | -| `useVpcEndpoints` | `boolean` | no | — | -| `useExistingVpc` | [object](#infra-vpc-use-existing-vpc) | no | — | - - - -#### `useExistingVpc` - -| Field | Type | Required | Description | -| --------------------------- | ------------------------------------------------------------------- | -------- | --------------------------------------- | -| `openSearchDomainVpcConfig` | [object](#infra-vpc-use-existing-vpc-open-search-domain-vpc-config) | no | — | -| `lambdaFunctionsVpcConfig` | [object](#infra-vpc-use-existing-vpc-lambda-functions-vpc-config) | yes | VPC configuration for Lambda functions. | - - - -#### `openSearchDomainVpcConfig` - -| Field | Type | Required | Description | -| ------------------ | ---------- | -------- | ------------------------------------------------- | -| `securityGroupIds` | `string[]` | yes | The security group IDs for the OpenSearch domain. | -| `subnetIds` | `string[]` | yes | The subnet IDs for the OpenSearch domain. | - - - -#### `lambdaFunctionsVpcConfig` - -| Field | Type | Required | Description | -| ------------------ | ---------- | -------- | ------------------------------------------------ | -| `securityGroupIds` | `string[]` | yes | The security group IDs for the Lambda functions. | -| `subnetIds` | `string[]` | yes | The subnet IDs for the Lambda functions. | - ### `BlueGreenDeployments` Enable blue/green deployments for your Webiny project. @@ -252,46 +179,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ( - -); +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------------- | -------------------------------------------------- | -------- | ----------- | -| `enabled` | `boolean` | no | — | -| `domains` | [object](#infra-blue-green-deployments-domains) | yes | — | -| `deployments` | [tuple](#infra-blue-green-deployments-deployments) | yes | — | - - - -#### `domains` - -| Field | Type | Required | Description | -| ------------------- | ------------------------------------------------------- | -------- | ----------- | --- | -| `acmCertificateArn` | `string` | yes | — | -| `sslSupportMethod` | `"sni-only" | "vip"` | yes | — | -| `domains` | [object](#infra-blue-green-deployments-domains-domains) | yes | — | - - - -#### `domains` - -| Field | Type | Required | Description | -| --------- | ---------- | -------- | ----------- | -| `api` | `string[]` | yes | — | -| `admin` | `string[]` | yes | — | -| `website` | `string[]` | yes | — | -| `preview` | `string[]` | yes | — | - - - -#### `deployments` - -A tuple: `[`object`, `object`]` - ### `OpenSearch` Enable and configure Opensearch integration with project-level setup. @@ -304,15 +194,6 @@ import { Infra } from "webiny/extensions"; export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| --------------- | --------- | -------- | --------------------------------------------------------------------------------------------------------- | -| `enabled` | `boolean` | no | Whether to enable OpenSearch. | -| `domainName` | `string` | no | The name of the Opensearch domain. | -| `indexPrefix` | `string` | no | A prefix to be added to all Opensearch indexes. | -| `sharedIndexes` | `boolean` | no | Whether to use shared indexes across all environments (true) or separate indexes per environment (false). | - ### `PulumiResourceNamePrefix` Adjust the prefix for Pulumi resource names (default: "wby-"). @@ -322,15 +203,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| -------- | -------- | -------- | ----------- | -| `prefix` | `string` | yes | — | - ### `ProductionEnvironments` Provide names for environments that are considered production environments. @@ -340,15 +215,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| -------------- | ------- | -------- | ----------- | -| `environments` | `array` | yes | — | - ### `EnvVar` Set an environment variable in the project context. @@ -358,16 +227,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| --------- | -------- | -------- | ------------------------------- | -| `varName` | `string` | yes | The environment variable name. | -| `value` | `string` | yes | The environment variable value. | - ### `Aws.DefaultRegion` Set the default AWS region for the project. @@ -377,15 +239,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------ | -------- | -------- | -------------------- | -| `name` | `string` | yes | The AWS region name. | - ### `Aws.Tags` Apply tags to AWS resources during deployment. @@ -395,17 +251,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ( - -); +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------ | -------- | -------- | ----------- | -| `tags` | `record` | yes | — | - ### `Admin.BeforeBuild` Add custom logic to be executed before the ADMIN build process. @@ -415,15 +263,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.BeforeDeploy` Add custom logic to be executed before the ADMIN deployment process. @@ -433,15 +275,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.BeforeWatch` Add custom logic to be executed before the Admin watch process. @@ -451,15 +287,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.AfterBuild` Add custom logic to be executed after the ADMIN build process. @@ -469,15 +299,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.AfterDeploy` Add custom logic to be executed after the ADMIN deployment process. @@ -487,15 +311,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.Pulumi` Modify Admin app's cloud infrastructure using Pulumi. @@ -505,15 +323,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Admin.CustomDomains` Configure custom domains for the Admin app. @@ -523,17 +335,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ---------------- | -------- | -------- | ----------------------------------------------------------------- | -| `domains` | `array` | yes | List of custom domains. | -| `sslMethod` | `enum` | no | The method to use for SSL/TLS certificate validation. | -| `certificateArn` | `string` | yes | The ARN of the SSL/TLS certificate to use for the custom domains. | - ### `Admin.StackOutputValue` Add custom output values to the Admin stack. @@ -543,16 +347,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------- | -------- | -------- | ---------------------------- | -| `key` | `string` | yes | The key for the output value | -| `value` | `any` | no | The value to output | - ### `Api.BeforeBuild` Add custom logic to be executed before the API build process. @@ -562,15 +359,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.BeforeDeploy` Add custom logic to be executed before the API deployment process. @@ -580,15 +371,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.BeforeWatch` Add custom logic to be executed before the API watch process. @@ -598,15 +383,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.AfterBuild` Add custom logic to be executed after the API build process. @@ -616,15 +395,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.AfterDeploy` Add custom logic to be executed after the API deployment process. @@ -634,15 +407,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.Pulumi` Modify Api app's cloud infrastructure using Pulumi. @@ -652,15 +419,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Api.StackOutputValue` Add custom output values to the Api stack. @@ -670,16 +431,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------- | -------- | -------- | ---------------------------- | -| `key` | `string` | yes | The key for the output value | -| `value` | `any` | no | The value to output | - ### `Api.LambdaFunction` Add a custom Lambda function to the API app. @@ -689,16 +443,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------------- | -------- | -------- | ----------- | -| `functionSrc` | `string` | yes | — | -| `pulumiSrc` | `string` | yes | — | - ### `Core.BeforeBuild` Add custom logic to be executed before the CORE build process. @@ -708,15 +455,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.BeforeDeploy` Add custom logic to be executed before the CORE deployment process. @@ -726,15 +467,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.BeforeWatch` Add custom logic to be executed before the CORE watch process. @@ -744,15 +479,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.AfterBuild` Add custom logic to be executed after the CORE build process. @@ -762,15 +491,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.AfterDeploy` Add custom logic to be executed after the CORE deployment process. @@ -780,15 +503,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.Pulumi` Modify Core app's cloud infrastructure using Pulumi. @@ -798,15 +515,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----- | -------- | -------- | ----------- | -| `src` | `string` | yes | — | - ### `Core.StackOutputValue` Add custom output values to the Core stack. @@ -816,16 +527,9 @@ Can be used **multiple times**. ```tsx webiny.config.tsx import { Infra } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ------- | -------- | -------- | ---------------------------- | -| `key` | `string` | yes | The key for the output value | -| `value` | `any` | no | The value to output | - ## Project ### `Id` @@ -837,15 +541,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Project } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ---- | -------- | -------- | ----------- | -| `id` | `string` | yes | — | - ### `Telemetry` This extension allows you to enable or disable telemetry for the project. @@ -858,12 +556,6 @@ import { Project } from "webiny/extensions"; export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| --------- | --------- | -------- | ----------- | -| `enabled` | `boolean` | no | — | - ### `AutoInstall` Auto-install Webiny with admin user credentials on first deploy. @@ -873,26 +565,9 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Project } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` -**Props** - -| Prop | Type | Required | Description | -| ----------- | ------------------------------------------ | -------- | --------------------------------------- | -| `adminUser` | [object](#project-auto-install-admin-user) | yes | Admin user credentials for installation | - - - -#### `adminUser` - -| Field | Type | Required | Description | -| ----------- | -------- | -------- | ------------------------------------------ | -| `firstName` | `string` | yes | Admin user first name | -| `lastName` | `string` | yes | Admin user last name | -| `email` | `string` | yes | Admin user email | -| `password` | `string` | yes | Admin user password (minimum 8 characters) | - ### `FeatureFlags` Enable or disable WCP features. @@ -902,52 +577,5 @@ Can only be used **once**. ```tsx webiny.config.tsx import { Project } from "webiny/extensions"; -export const Extensions = () => ; +export const Extensions = () => ; ``` - -**Props** - -| Prop | Type | Required | Description | -| ---------- | ----------------------------------------- | -------- | ----------- | -| `features` | [object](#project-feature-flags-features) | yes | — | - - - -#### `features` - -| Field | Type | Required | Description | -| ---------------------------- | ---------------------------------------------------------------------------------- | -------- | ----------- | -| `multiTenancy` | `boolean` | no | — | -| `advancedPublishingWorkflow` | `boolean` | no | — | -| `advancedAccessControlLayer` | [boolean \| object](#project-feature-flags-features-advanced-access-control-layer) | no | — | -| `auditLogs` | `boolean` | no | — | -| `recordLocking` | `boolean` | no | — | -| `fileManager` | [object](#project-feature-flags-features-file-manager) | no | — | - - - -#### `advancedAccessControlLayer` - -Accepts one of: - -- `boolean` -- [object](#project-feature-flags-features-advanced-access-control-layer-option-2) - - - -#### `advancedAccessControlLayer (option 2)` - -| Field | Type | Required | Description | -| ------------------------ | --------- | -------- | ----------- | -| `teams` | `boolean` | no | — | -| `privateFiles` | `boolean` | no | — | -| `folderLevelPermissions` | `boolean` | no | — | -| `hcmsFieldPermissions` | `boolean` | no | — | - - - -#### `fileManager` - -| Field | Type | Required | Description | -| ----------------- | --------- | -------- | ----------- | -| `threatDetection` | `boolean` | no | — | From 15d40842383484bf5a7e364fd8b7150b7e9adcd2 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 14:20:24 +0100 Subject: [PATCH 09/13] wip:10 (gw4im) --- .../headless-cms/advanced-filtering.ai.txt | 62 ++++ .../6.x/headless-cms/advanced-filtering.mdx | 273 ++++++++++++++++++ .../date-time-and-identity-meta-fields.ai.txt | 52 ++++ .../date-time-and-identity-meta-fields.mdx | 106 +++++++ .../headless-cms/migrating-to-webiny.ai.txt | 61 ++++ .../6.x/headless-cms/migrating-to-webiny.mdx | 132 +++++++++ .../6.x/headless-cms/using-webiny-sdk.mdx | 42 +-- docs/developer-docs/6.x/navigation.tsx | 6 + .../6.x/website-builder/event-handlers.mdx | 32 +- 9 files changed, 731 insertions(+), 35 deletions(-) create mode 100644 docs/developer-docs/6.x/headless-cms/advanced-filtering.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/advanced-filtering.mdx create mode 100644 docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.mdx create mode 100644 docs/developer-docs/6.x/headless-cms/migrating-to-webiny.ai.txt create mode 100644 docs/developer-docs/6.x/headless-cms/migrating-to-webiny.mdx diff --git a/docs/developer-docs/6.x/headless-cms/advanced-filtering.ai.txt b/docs/developer-docs/6.x/headless-cms/advanced-filtering.ai.txt new file mode 100644 index 000000000..fc535a0da --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/advanced-filtering.ai.txt @@ -0,0 +1,62 @@ +AI Context: Advanced Filtering (advanced-filtering.mdx) + +## Source of Information + +1. `docs/developer-docs/5.x/headless-cms/basics/using-graphql-api-advanced-filtering.mdx` — original v5 article; ported and updated for v6 +2. `docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx` — SDK usage patterns (listEntries, where syntax) + +## Key Changes from v5 Article + +1. Raw GraphQL queries replaced with `sdk.cms.listEntries({ where: ... })` — v6 docs use SDK, not raw GraphQL +2. User field filters now use `values.` prefix (e.g. `values.title_contains`, `values.category`) — in v5 fields were at the root +3. System meta fields (`createdOn`, `savedOn`, etc.) do NOT use `values.` prefix — they stay at the root +4. Removed "In the 5.x version of Webiny we introduced..." — no version references +5. Removed link to `date-time-and-identity-meta-fields` reference (no v6 equivalent) — replaced with inline note +6. Removed `meta` block from v5 raw GraphQL examples (not relevant in SDK context) +7. Reference field filter values are strings (entry IDs), not integers — updated examples accordingly + +## Understanding + +### Filter key convention +- User-defined fields: `values.{fieldId}_{operator}` (e.g. `values.title_contains`, `values.price_gte`) +- System fields: `{fieldId}_{operator}` (e.g. `createdOn_between`, `savedOn_gte`) +- Reference fields: filter by ID string, e.g. `"values.category": "some-entry-id"` + +### AND semantics +- All conditions in the array must match +- Multiple root-level filters behave as implicit AND +- Use AND array when you need to repeat the same operator key (not possible at root level) + +### OR semantics +- At least one condition must match +- Multiple filters within a single OR branch are implicitly ANDed together + +### Nesting +- AND and OR can be nested indefinitely +- Deep nesting has performance implications, especially on DynamoDB-only deployments + +### SDK usage +```typescript +sdk.cms.listEntries
({ + modelId: "article", + fields: [...], + where: { + OR: [...], + AND: [...], + "values.someField_operator": value + } +}) +``` + +## Related Documents + +- `using-webiny-sdk.mdx` — full SDK reference for listEntries, filters, pagination +- `graphql-api-overview.mdx` — overview of the three APIs +- `content-models-via-code.mdx` — field IDs used in filter keys come from content model definitions + +## Tone Guidelines + +- Lead each example with a plain-English description of what is being searched for +- Show the "equivalent condition" as a pseudo-SQL string after each query — helps readers verify understanding +- Keep examples practical (article/category/author model) +- No analogies, no marketing language diff --git a/docs/developer-docs/6.x/headless-cms/advanced-filtering.mdx b/docs/developer-docs/6.x/headless-cms/advanced-filtering.mdx new file mode 100644 index 000000000..ff17541e2 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/advanced-filtering.mdx @@ -0,0 +1,273 @@ +--- +id: hcms6af01 +title: Advanced Filtering +description: Learn how to use AND and OR conditionals to build complex filters when querying Headless CMS entries. +--- + +import { Alert } from "@/components/Alert"; + + + +- How to use `AND` and `OR` conditionals when filtering entries +- How nested `AND` / `OR` queries work +- How to combine both conditionals in a single query + + + +## Overview + +Both `AND` and `OR` conditionals are arrays of filter conditions. The available filter keys depend on the fields defined on the model you are querying. All user-defined field filters use the `values.` prefix (e.g. `values.title_contains`). + +The examples below use the Webiny SDK. The `where` object is passed directly to `sdk.cms.listEntries()`. + +## The `AND` Conditional + +`AND` requires **all** conditions in the array to match. It behaves the same as placing filters at the root of `where`, with the added ability to repeat the same operator multiple times (which is not possible at the root level). + +### Simple `AND` Examples + +#### Search for entries where the title contains both "headless" and "cms" + +At the root level you can only use `values.title_contains` once. Wrapping conditions in `AND` lets you apply the same filter key multiple times: + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + AND: [{ "values.title_contains": "headless" }, { "values.title_contains": "cms" }] + } +}); +``` + +Equivalent condition: `(values.title contains "headless" AND values.title contains "cms")` + +#### Combine a root-level filter with `AND` + +Root-level filters and `AND` are applied together — all must match: + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + "values.category": "cat-id-1", + AND: [{ "values.title_contains": "headless" }, { "values.title_contains": "cms" }] + } +}); +``` + +Equivalent condition: `(values.category = "cat-id-1" AND values.title contains "headless" AND values.title contains "cms")` + +### Complex `AND` Example + +Search for articles that: + +- are in category `cat-id-1` +- have both "headless" and "cms" in the title +- are authored by one of three authors +- were created in 2022 + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + "values.category": "cat-id-1", + AND: [ + { "values.title_contains": "headless" }, + { "values.title_contains": "cms" }, + { + AND: [ + { "values.author_in": ["author-5", "author-6", "author-7"] }, + { createdOn_between: ["2022-01-01", "2022-12-31"] } + ] + } + ] + } +}); +``` + +Equivalent condition: `(values.category = "cat-id-1" AND values.title contains "headless" AND values.title contains "cms" AND (values.author in [...] AND createdOn between 2022))` + + + +`createdOn` is a system meta field available on all entries. It does not use the `values.` prefix. + + + +The same query can be flattened when there is no need for repeated keys: + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + "values.category": "cat-id-1", + AND: [{ "values.title_contains": "headless" }, { "values.title_contains": "cms" }], + "values.author_in": ["author-5", "author-6", "author-7"], + createdOn_between: ["2022-01-01", "2022-12-31"] + } +}); +``` + +This produces the same result as the nested version above. + +## The `OR` Conditional + +`OR` requires **at least one** condition in the array to match. + +### Simple `OR` Examples + +#### Search for entries where the title contains "headless" or "cms" + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + OR: [{ "values.title_contains": "headless" }, { "values.title_contains": "cms" }] + } +}); +``` + +Equivalent condition: `(values.title contains "headless" OR values.title contains "cms")` + +#### Multiple filters inside one `OR` branch + +When an `OR` branch contains more than one filter, all filters in that branch must match (implicit AND within the branch): + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + OR: [ + { "values.title_contains": "headless", "values.category": "cat-id-1" }, + { "values.title_contains": "cms" } + ] + } +}); +``` + +Equivalent condition: `((values.title contains "headless" AND values.category = "cat-id-1") OR values.title contains "cms")` + +### Complex `OR` Example + +Search for articles that match any of: + +- title contains "headless" +- title contains "cms" +- category is `cat-id-1` or `cat-id-2` + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + OR: [ + { "values.title_contains": "headless" }, + { "values.title_contains": "cms" }, + { + OR: [{ "values.category": "cat-id-1" }, { "values.category": "cat-id-2" }] + } + ] + } +}); +``` + +Equivalent condition: `(values.title contains "headless" OR values.title contains "cms" OR (values.category = "cat-id-1" OR values.category = "cat-id-2"))` + +## Mixing `AND` and `OR` + +### `OR` at the root with nested `AND` and `OR` + +Search for articles that match any of: + +- title contains "headless" +- title contains "cms" +- title contains both "webiny" and "serverless", and was created in January 2021 or January 2022 + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + OR: [ + { "values.title_contains": "headless" }, + { "values.title_contains": "cms" }, + { + AND: [ + { "values.title_contains": "webiny" }, + { "values.title_contains": "serverless" }, + { + OR: [ + { createdOn_between: ["2021-01-01", "2021-01-31"] }, + { createdOn_between: ["2022-01-01", "2022-01-31"] } + ] + } + ] + } + ] + } +}); +``` + +### `AND` at the root with nested `OR` and `AND` + +Search for articles that match all of: + +- title contains "headless" +- title contains "cms" +- title contains "webiny" or "serverless", or was created in January 2021 or January 2022 + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + AND: [ + { "values.title_contains": "headless" }, + { "values.title_contains": "cms" }, + { + OR: [ + { "values.title_contains": "webiny" }, + { "values.title_contains": "serverless" }, + { + AND: [ + { createdOn_between: ["2021-01-01", "2021-01-31"] }, + { createdOn_between: ["2022-01-01", "2022-01-31"] } + ] + } + ] + } + ] + } +}); +``` + +### `OR` and `AND` both at the root level + +Search for articles that: + +- are written by author `author-1` OR are in category `cat-id-2` +- AND have both "headless" and "cms" in the title + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title"], + where: { + OR: [{ "values.author": "author-1" }, { "values.category": "cat-id-2" }], + AND: [{ "values.title_contains": "headless" }, { "values.title_contains": "cms" }] + } +}); +``` + +Equivalent condition: `((values.author = "author-1" OR values.category = "cat-id-2") AND (values.title contains "headless" AND values.title contains "cms"))` + + + +`AND` and `OR` conditionals can be nested indefinitely, but deep nesting may result in performance issues — particularly on DynamoDB-only deployments. Keep nesting shallow where possible. + + diff --git a/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.ai.txt b/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.ai.txt new file mode 100644 index 000000000..15cc17353 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.ai.txt @@ -0,0 +1,52 @@ +AI Context: Date/Time and Identity Meta Fields (date-time-and-identity-meta-fields.mdx) + +## Source of Information + +1. `docs/developer-docs/5.x/headless-cms/references/date-time-and-identity-meta-fields.mdx` — original v5 article; ported for v6 +2. `docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx` — SDK query patterns (listEntries, fields, where) + +## Key Changes from v5 Article + +1. Removed "Can I use this? Available since v5.39.0" alert — no version references in v6 docs +2. Removed v5 GraphQL query example — replaced with SDK-based example using `sdk.cms.listEntries()` +3. Removed v5 lifecycle events code example (`ContextPlugin`) — v6 uses class-based event handlers; no replacement example added (would bloat this reference article) +4. "Introduction" heading → "Overview" to match v6 article conventions +5. Meta fields do NOT use the `values.` prefix — they are top-level system fields + +## Understanding + +### Two levels of meta fields + +- **Revision-level**: prefixed with `revision` — describe a specific revision; change with each revision operation +- **Entry-level**: no prefix — describe the entry as a whole; `createdOn` is set once and never changes + +### Nullability rules + +- `createdOn`, `savedOn`, `revisionCreatedOn`, `revisionSavedOn`, `createdBy`, `savedBy`, `revisionCreatedBy`, `revisionSavedBy` — never null +- All `modified*`, `*PublishedOn`, `*PublishedBy`, `deleted*`, `restored*` — can be null + +### modified vs saved + +- `savedOn` is updated on every write (including create) +- `modifiedOn` is only set after the first update — null if entry was never updated +- After first update: `modifiedOn === savedOn` always + +### SDK usage + +Meta fields are top-level fields — no `values.` prefix: +```typescript +fields: ["id", "entryId", "createdOn", "lastPublishedOn", "createdBy", "values.title"] +where: { createdOn_between: ["2024-01-01", "2024-12-31"] } +sort: ["createdOn_DESC"] +``` + +## Related Documents + +- `using-webiny-sdk.mdx` — full SDK query/mutation reference +- `migrating-to-webiny.mdx` — links here for meta field migration guidance +- `advanced-filtering.mdx` — filtering by meta fields (createdOn_between, etc.) + +## Tone Guidelines + +- Reference article — concise, table-driven, minimal prose +- FAQ section kept from v5 — it answers the most common confusion (modified vs saved) diff --git a/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.mdx b/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.mdx new file mode 100644 index 000000000..f2633d8c8 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/date-time-and-identity-meta-fields.mdx @@ -0,0 +1,106 @@ +--- +id: hcms6meta +title: Date/Time and Identity Meta Fields +description: Learn about the date/time and identity-related meta fields that are automatically available on all content entries. +--- + +import { Alert } from "@/components/Alert"; + + + +- What are meta fields and where do they come from? +- What is the difference between revision-level and entry-level meta fields? +- What is the difference between `modified` and `saved` fields? + + + +## Overview + +Apart from the fields defined in a content model, all content entries automatically have a set of date/time and identity-related meta fields. For example: + +- `createdOn` — the date/time when an entry was first created +- `lastPublishedOn` — the date/time when an entry was last published +- `revisionCreatedOn` — the date/time when a specific revision was created +- `revisionFirstPublishedOn` — the date/time when a specific revision was first published + +These fields are populated automatically by the system. You can use them when querying entries via the SDK or when implementing event handlers. + +## Revision-level vs. Entry-level Fields + +Meta fields exist at two levels. + +**Revision-level** fields carry the `revision` prefix and describe a specific revision of an entry. They change each time a new revision is created, modified, or published. + +**Entry-level** fields have no prefix and describe the entry as a whole. They reflect the state of the entry across all revisions — for example, `createdOn` is set when the entry is first created and never changes, regardless of how many revisions are added later. + +## Meta Fields Reference + +### Revision-level Meta Fields + +| Field | Description | Can be `null` | +| -------------------------- | --------------------------------------------------- | ------------- | +| `revisionCreatedOn` | When this revision was created. | No | +| `revisionModifiedOn` | When this revision was last modified. | Yes | +| `revisionSavedOn` | When this revision was last saved. | No | +| `revisionFirstPublishedOn` | When this revision was first published. | Yes | +| `revisionLastPublishedOn` | When this revision was last published. | Yes | +| `revisionDeletedOn` | When this revision was moved to the trash. | Yes | +| `revisionRestoredOn` | When this revision was restored from the trash. | Yes | +| `revisionCreatedBy` | The user who created this revision. | No | +| `revisionModifiedBy` | The user who last modified this revision. | Yes | +| `revisionSavedBy` | The user who last saved this revision. | No | +| `revisionFirstPublishedBy` | The user who first published this revision. | Yes | +| `revisionLastPublishedBy` | The user who last published this revision. | Yes | +| `revisionDeletedBy` | The user who moved this revision to the trash. | Yes | +| `revisionRestoredBy` | The user who restored this revision from the trash. | Yes | + +### Entry-level Meta Fields + +| Field | Description | Can be `null` | +| ------------------ | ----------------------------------------------- | ------------- | +| `createdOn` | When the entry was first created. | No | +| `modifiedOn` | When the entry was last modified. | Yes | +| `savedOn` | When the entry was last saved. | No | +| `firstPublishedOn` | When the entry was first published. | Yes | +| `lastPublishedOn` | When the entry was last published. | Yes | +| `deletedOn` | When the entry was moved to the trash. | Yes | +| `restoredOn` | When the entry was restored from the trash. | Yes | +| `createdBy` | The user who created the entry. | No | +| `modifiedBy` | The user who last modified the entry. | Yes | +| `savedBy` | The user who last saved the entry. | No | +| `firstPublishedBy` | The user who first published the entry. | Yes | +| `lastPublishedBy` | The user who last published the entry. | Yes | +| `deletedBy` | The user who moved the entry to the trash. | Yes | +| `restoredBy` | The user who restored the entry from the trash. | Yes | + +## Using Meta Fields + +Meta fields are available as top-level fields (no `values.` prefix) when querying via the SDK: + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "createdOn", "lastPublishedOn", "createdBy", "values.title"], + sort: ["createdOn_DESC"] +}); +``` + +You can also filter by them: + +```typescript +const result = await sdk.cms.listEntries
({ + modelId: "article", + fields: ["id", "entryId", "values.title", "createdOn"], + where: { + createdOn_between: ["2024-01-01", "2024-12-31"] + } +}); +``` + +## FAQ + +### What is the difference between `modified` and `saved`? + +`savedOn` / `savedBy` are set on every write — including the initial create. They are never `null`. + +`modifiedOn` / `modifiedBy` are only set after the first update. If an entry has never been updated, `modifiedOn` is `null`. After the first update, `modifiedOn` and `savedOn` will always have the same value. diff --git a/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.ai.txt b/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.ai.txt new file mode 100644 index 000000000..610cb314f --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.ai.txt @@ -0,0 +1,61 @@ +AI Context: Migrating to Webiny Headless CMS (migrating-to-webiny.mdx) + +## Source of Information + +1. `https://github.com/webiny/docs.webiny.com/blob/9c1e464e9ff8abdfeae2ab02ad1e223fc7e41614/docs/developer-docs/5.39.x/headless-cms/basics/migrating-to-webiny.mdx` — original v5.39.x article; ported and updated for v6 +2. `docs/developer-docs/6.x/headless-cms/graphql-api-overview.mdx` — v6 API overview (linked) +3. `docs/developer-docs/6.x/headless-cms/content-models-via-code.mdx` — ModelFactory API (linked) +4. `docs/developer-docs/6.x/headless-cms/content-modeling-best-practices.mdx` — modeling guidance (linked) + +## Key Changes from v5 Article + +1. No locale prefix on endpoints — v6 Manage API is `/cms/manage` (not `/cms/manage/{locale}`) +2. Links updated: `content-models-via-code` replaces old `extending/content-models-via-code`; `graphql-api-overview` replaces old `basics/graphql-api` +3. Removed link to `date-time-and-identity-meta-fields` reference article (no v6 equivalent yet) — described inline instead +4. Removed link to `programmatic-file-upload` (no v6 equivalent yet) — described inline +5. Removed link to `lexical-tools` (no v6 equivalent yet) — described inline with the HTML → Lexical approach +6. Removed link to `file-aliases` release note (v5.35.0) — described inline as a feature +7. Removed mention of "SDK" for programmatic access — v6 uses API keys + GraphQL directly +8. Summary section added (not in v5) for quick reference + +## Understanding + +### Migration phases + +1. Plan — define goals, avoid importing old messiness +2. Model — UI editor or ModelFactory code API +3. Migrate — script reads old CMS, writes to Webiny Manage API in batches + +### Entry ID preservation + +Setting `entryId` in the mutation to the original system's ID allows cross-references to resolve automatically without ID mapping or strict ordering. + +### Meta fields + +`createdOn`, `modifiedOn`, `createdBy`, `modifiedBy`, `firstPublishedOn`, `lastPublishedOn` — must be supplied explicitly in the migration script to preserve original timestamps/authorship. Otherwise Webiny sets them to the current time. + +### Rich text + +Export as HTML from old CMS → run through Webiny's HTML-to-Lexical converter → store Lexical JSON via API. Cannot import HTML directly. + +### Assets + +Upload via File Manager API → record new URLs → update references. Use file aliases to preserve original URLs and avoid broken references in rich text or other URL-based fields. + +### DAM replacement + +Replacing the built-in File Manager with a 3rd-party DAM is possible but requires a conversation with the Webiny team. + +## Related Documents + +- `graphql-api-overview.mdx` — API endpoints and structure +- `content-models-via-code.mdx` — ModelFactory API +- `content-modeling-best-practices.mdx` — how to structure models well +- `using-webiny-sdk.mdx` — SDK usage (for querying; migration writes via raw GraphQL) + +## Tone Guidelines + +- Practical and actionable — this is a guide for developers executing a migration +- Acknowledge complexity without dramatizing it +- The "clean up your content structure" framing from the original is worth keeping — it's good advice +- No version comparisons (v5 vs v6); this is a standalone v6 article diff --git a/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.mdx b/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.mdx new file mode 100644 index 000000000..b13b4f605 --- /dev/null +++ b/docs/developer-docs/6.x/headless-cms/migrating-to-webiny.mdx @@ -0,0 +1,132 @@ +--- +id: hcms6mig1 +title: Migrating to Webiny Headless CMS +description: Learn how to approach migrating your existing content to Webiny Headless CMS. +--- + +import { Alert } from "@/components/Alert"; + + + +- How to plan a content migration +- How to model your content in Webiny +- How to migrate content via the GraphQL API +- What to consider for reference fields, meta fields, rich text, and assets + + + +## Overview + +Migrating content from one CMS to another is a complex task that requires planning and preparation. This article walks through the key steps and things to consider when moving your existing content into Webiny Headless CMS. + +The process follows three broad phases: + +1. **Plan the migration** — define your goals and scope before touching anything +2. **Model your content** — create content models and fields in Webiny +3. **Migrate your content** — write and run a migration script that pushes content via the GraphQL API + +## Planning the Migration + +Before starting, be clear about what you want to achieve. Are you migrating to gain better scalability through serverless infrastructure? To improve developer experience? To give editors a better authoring UI? Having a concrete goal lets you measure success after the migration. + +A common mistake is carrying the messiness of the old system into the new one — recreating disorganized models, unused fields, and legacy naming conventions. Treat the migration as an opportunity to clean up your content structure, not just transplant it. + +## Modeling Your Content + +Once you have a clear goal, create the content models and fields in Webiny. There are two ways to do this: + +- **UI editor** — create models interactively in the Admin app +- **Code** — [define models programmatically](/{version}/headless-cms/content-models-via-code); recommended for teams that want models in version control + +If you're migrating from a traditional CMS (Drupal, WordPress, Sitecore, AEM) and are also rewriting your frontend, take the opportunity to improve on the existing data structure. If you're keeping the frontend as-is, staying close to the original structure minimizes the mapping work in your migration script. + +See [Content Modeling Best Practices](/{version}/headless-cms/content-modeling-best-practices) for guidance on structuring models well from the start. + +## Migrating Your Content + +With the models in place, the migration itself is a Node.js script that reads content from your old CMS and writes it into Webiny using the [Webiny SDK](/{version}/headless-cms/using-webiny-sdk). + +To authenticate, create an API key with write permissions in the Admin app under **API Keys** and configure the SDK with it. Each entry is created as a draft — call `publishEntry()` afterward if the entry should be publicly visible. + +A minimal migration loop looks like: + +```typescript +import { sdk } from "./webiny"; // your initialized SDK instance + +for (const article of articlesFromOldCms) { + const result = await sdk.cms.createEntry({ + modelId: "article", + data: { + values: { + title: article.title, + slug: article.slug, + body: article.body + } + }, + fields: ["id", "entryId"] + }); + + if (result.isFail()) { + console.error(`Failed to migrate "${article.title}":`, result.error.message); + continue; + } + + await sdk.cms.publishEntryRevision({ + modelId: "article", + revisionId: result.value.id, + fields: ["id"] + }); +} +``` + +For large datasets, run the migration in batches rather than all at once. This keeps individual runs recoverable and avoids hitting API throughput limits. + +## Additional Considerations + +### Reference Fields + +Most CMS platforms have reference fields that link one content item to another. The typical challenge: you need to create all referenced items first, then map their old IDs to new Webiny IDs before creating the items that reference them. + +Webiny lets you migrate content along with its original IDs from the source system. If you set the `entryId` of each entry to match the ID from your old system, all cross-references resolve automatically — no manual ID mapping required and no strict ordering of migration batches. + +### Date, Time, and Identity Meta Fields + +Webiny automatically sets meta fields (`createdOn`, `modifiedOn`, `createdBy`, `modifiedBy`, `firstPublishedOn`, `lastPublishedOn`) whenever an entry is written. If you don't supply these in your migration script, Webiny will set them to the time of migration — which means your content may appear in a different order on the frontend than it did before. + +To preserve the original timestamps and authorship, include these meta fields explicitly in your mutation input. This ensures ordering, pagination, and "last modified" displays remain consistent with your previous system. + +See [Date/Time and Identity Meta Fields](/{version}/headless-cms/date-time-and-identity-meta-fields) for the full list of available fields. + +### Rich Text Content + +Rich text migration is complex and depends heavily on the source format. Reach out on the [Webiny Slack community](https://webiny.com/slack) to discuss the best approach for your specific situation before starting. + +### Assets (Images, Videos, Files) + +Migrating assets is a separate step from migrating content entries. The general process: + +1. Upload each file programmatically via the File Manager API +2. Record the new Webiny URL returned for each asset +3. Update any content entries that reference those assets with the new URLs + +By default, uploaded assets get a new URL. If your existing content references assets by URL (particularly inside rich text), this will break those references. To avoid this, Webiny supports **file aliases** — you can assign an alias to an uploaded file that preserves the original URL, so existing references continue to work without modification. + + + +If you need to replace the built-in File Manager with a third-party DAM solution, reach out to the Webiny team to discuss that path before starting your migration. + + + +## Summary + +The migration process in brief: + +1. Define a clear goal for the migration +2. Model your content in Webiny — use code-defined models for production projects +3. Write a migration script that reads from your old CMS and writes to the Webiny Manage API +4. Handle reference fields by preserving original entry IDs +5. Include meta fields in your script to preserve timestamps and authorship +6. Upload assets separately and use file aliases to preserve URLs +7. Run in batches; verify each batch before proceeding + +For questions or help with your migration, reach out on the [Webiny Slack community](https://webiny.com/slack). diff --git a/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx index cd988d96c..ee97426aa 100644 --- a/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx +++ b/docs/developer-docs/6.x/headless-cms/using-webiny-sdk.mdx @@ -201,13 +201,15 @@ if (result.isOk()) { ```typescript const result = await sdk.cms.createEntry({ modelId: "product", - values: { - name: "Laptop", - description: "High-performance laptop", - price: 1299, - sku: "LAP-001" + data: { + values: { + name: "Laptop", + description: "High-performance laptop", + price: 1299, + sku: "LAP-001" + } }, - fields: ["id", "entryId", "values.name", "values.price"] + fields: ["id", "entryId", "createdOn", "values.name", "values.price"] }); if (result.isOk()) { @@ -220,16 +222,18 @@ if (result.isOk()) { - `createEntry()` uses the Manage API - Entry is created in draft status -- Call `publishEntry()` to make it publicly visible +- Call `publishEntryRevision()` to make it publicly visible -### Updating Entries +### Updating Entry Revisions ```typescript -const result = await sdk.cms.updateEntry({ +const result = await sdk.cms.updateEntryRevision({ modelId: "product", - entryId: "abc123", - values: { - price: 1199 // updated price + revisionId: "69b2b114d26d020002c001d2#0001", + data: { + values: { + price: 1199 // updated price + } }, fields: ["id", "entryId", "values.name", "values.price"] }); @@ -239,14 +243,14 @@ if (result.isOk()) { } ``` -**Note:** `updateEntry()` only modifies the specified fields. Other fields remain unchanged. +**Note:** `updateEntryRevision()` only modifies the specified fields. Other fields remain unchanged. -### Publishing Entries +### Publishing Entry Revisions ```typescript -const result = await sdk.cms.publishEntry({ +const result = await sdk.cms.publishEntryRevision({ modelId: "product", - entryId: "abc123", + revisionId: "69b2b114d26d020002c001d2#0001", fields: ["id", "entryId", "values.name", "values.price"] }); @@ -257,12 +261,12 @@ if (result.isOk()) { Publishing makes an entry available via the Read API. Unpublished (draft) entries are only accessible via the Manage API. -### Deleting Entries +### Deleting Entry Revisions ```typescript -const result = await sdk.cms.deleteEntry({ +const result = await sdk.cms.deleteEntryRevision({ modelId: "product", - entryId: "abc123" + revisionId: "69b2b114d26d020002c001d2#0001" }); if (result.isOk()) { diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index e2ea84de4..c86f0662e 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -51,6 +51,7 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { + { title={"Content Modeling Best Practices"} /> + + {/**/} {/* */} {/* */} diff --git a/docs/developer-docs/6.x/website-builder/event-handlers.mdx b/docs/developer-docs/6.x/website-builder/event-handlers.mdx index 979014871..2174654a1 100644 --- a/docs/developer-docs/6.x/website-builder/event-handlers.mdx +++ b/docs/developer-docs/6.x/website-builder/event-handlers.mdx @@ -41,20 +41,20 @@ Use `Before` handlers for validation and data transformation. Use `After` handle Every event handler follows the same structure: ```typescript extensions/website-builder/page/eventHandler/update/beforeUpdate.ts -import { PageBeforeUpdateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; import { Logger } from "webiny/api/logger"; -class PageBeforeUpdateHandlerImpl implements PageBeforeUpdateHandler.Interface { +class PageBeforeUpdateEventHandlerImpl implements PageBeforeUpdateEventHandler.Interface { public constructor(private logger: Logger.Interface) {} - public async handle(event: PageBeforeUpdateHandler.Event): Promise { + public async handle(event: PageBeforeUpdateEventHandler.Event): Promise { const { original, input } = event.payload; // your logic here } } -export default PageBeforeUpdateHandler.createImplementation({ - implementation: PageBeforeUpdateHandlerImpl, +export default PageBeforeUpdateEventHandler.createImplementation({ + implementation: PageBeforeUpdateEventHandlerImpl, dependencies: [Logger] }); ``` @@ -72,13 +72,13 @@ Key points: This `Before` handler runs before a page is created and throws if the slug does not match a required pattern. ```typescript extensions/website-builder/page/eventHandler/create/beforeCreate.ts -import { PageBeforeCreateHandler } from "webiny/api/website-builder/page"; +import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; import { Logger } from "webiny/api/logger"; -class PageBeforeCreateHandlerImpl implements PageBeforeCreateHandler.Interface { +class PageBeforeCreateEventHandlerImpl implements PageBeforeCreateEventHandler.Interface { public constructor(private logger: Logger.Interface) {} - public async handle(event: PageBeforeCreateHandler.Event): Promise { + public async handle(event: PageBeforeCreateEventHandler.Event): Promise { const { input } = event.payload; const slug = input.path; @@ -95,8 +95,8 @@ class PageBeforeCreateHandlerImpl implements PageBeforeCreateHandler.Interface { } } -export default PageBeforeCreateHandler.createImplementation({ - implementation: PageBeforeCreateHandlerImpl, +export default PageBeforeCreateEventHandler.createImplementation({ + implementation: PageBeforeCreateEventHandlerImpl, dependencies: [Logger] }); ``` @@ -106,13 +106,13 @@ export default PageBeforeCreateHandler.createImplementation({ This `After` handler fires after a page is published and sends the page data to an external webhook. ```typescript extensions/website-builder/page/eventHandler/publish/afterPublish.ts -import { PageAfterPublishHandler } from "webiny/api/website-builder/page"; +import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; import { Logger } from "webiny/api/logger"; -class PageAfterPublishHandlerImpl implements PageAfterPublishHandler.Interface { +class PageAfterPublishEventHandlerImpl implements PageAfterPublishEventHandler.Interface { public constructor(private logger: Logger.Interface) {} - public async handle(event: PageAfterPublishHandler.Event): Promise { + public async handle(event: PageAfterPublishEventHandler.Event): Promise { const { page } = event.payload; this.logger.info(`Page published: ${page.id} (${page.path})`); @@ -129,8 +129,8 @@ class PageAfterPublishHandlerImpl implements PageAfterPublishHandler.Interface { } } -export default PageAfterPublishHandler.createImplementation({ - implementation: PageAfterPublishHandlerImpl, +export default PageAfterPublishEventHandler.createImplementation({ + implementation: PageAfterPublishEventHandlerImpl, dependencies: [Logger] }); ``` @@ -168,5 +168,5 @@ If a `Before` handler throws an error, the operation is aborted and subsequent h See the reference pages for the full list of available handlers: -- [Page Event Handlers](/{version}/reference/api/website-builder/page#page-after-create-handler) — create, update, delete, publish, unpublish, duplicate, move, and revision creation +- [Page Event Handlers](/{version}/reference/api/website-builder/page#page-after-create-event-handler) — create, update, delete, publish, unpublish, duplicate, move, and revision creation - [Redirect Event Handlers](/{version}/reference/api/website-builder/redirect#redirect-after-create-handler) — create, update, delete, and move From 1bd996d71e9430db357da3d2affab270f65360f3 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 20:26:34 +0100 Subject: [PATCH 10/13] wip:11 (20pcf) --- docs/developer-docs/6.x/reference/admin.mdx | 26 +- .../6.x/reference/admin/build-params.mdx | 18 +- .../6.x/reference/admin/graphql-client.mdx | 8 +- .../6.x/reference/admin/security.mdx | 52 +- .../6.x/reference/api/build-params.mdx | 18 +- .../6.x/reference/api/cms/entry.mdx | 636 +++++++++--------- .../6.x/reference/api/cms/group.mdx | 106 ++- .../6.x/reference/api/cms/model.mdx | 149 ++-- .../6.x/reference/api/graphql.mdx | 10 +- .../6.x/reference/api/key-value-store.mdx | 31 +- .../6.x/reference/api/logger.mdx | 22 +- .../6.x/reference/api/security.mdx | 91 ++- .../6.x/reference/api/security/api-key.mdx | 104 ++- .../reference/api/security/authentication.mdx | 16 +- .../6.x/reference/api/security/role.mdx | 91 +-- .../6.x/reference/api/security/user.mdx | 96 +-- .../6.x/reference/api/system.mdx | 21 +- .../6.x/reference/api/tasks.mdx | 61 +- .../6.x/reference/api/tenancy.mdx | 175 +++-- .../6.x/reference/api/tenant-manager.mdx | 8 +- .../reference/api/website-builder/nextjs.mdx | 8 +- .../reference/api/website-builder/page.mdx | 232 +++---- .../api/website-builder/redirect.mdx | 132 ++-- .../6.x/reference/cli/overview.mdx | 44 +- .../6.x/reference/infra/admin.mdx | 48 +- .../6.x/reference/infra/api.mdx | 48 +- .../6.x/reference/infra/core.mdx | 40 +- .../6.x/reference/infra/overview.mdx | 131 ++-- scripts/generate-reference.ts | 77 ++- 29 files changed, 1099 insertions(+), 1400 deletions(-) diff --git a/docs/developer-docs/6.x/reference/admin.mdx b/docs/developer-docs/6.x/reference/admin.mdx index 92aa742b9..14a84c652 100644 --- a/docs/developer-docs/6.x/reference/admin.mdx +++ b/docs/developer-docs/6.x/reference/admin.mdx @@ -94,12 +94,10 @@ import { BuildParam } from "webiny/admin"; **Interface `BuildParam.Interface`:** -```typescript -interface BuildParam.Interface { - key: string; - value: any; -} -``` +| Method | Description | +| ------------- | ----------- | +| `key: string` | — | +| `value: any` | — | **Types:** @@ -138,11 +136,9 @@ import { BuildParams } from "webiny/admin"; **Interface `BuildParams.Interface`:** -```typescript -interface BuildParams.Interface { - get(key: string): T | null; -} -``` +| Method | Description | +| -------------------------------------- | ----------- | +| `get(key: string): T \| null` | — | **Types:** @@ -221,11 +217,9 @@ import { NetworkErrorEventHandler } from "webiny/admin"; **Interface `NetworkErrorEventHandler.Interface`:** -```typescript -interface NetworkErrorEventHandler.Interface { - handle(event: NetworkErrorEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------- | ----------- | +| `handle(event: NetworkErrorEvent): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/build-params.mdx b/docs/developer-docs/6.x/reference/admin/build-params.mdx index c0ea63ccf..731f5632a 100644 --- a/docs/developer-docs/6.x/reference/admin/build-params.mdx +++ b/docs/developer-docs/6.x/reference/admin/build-params.mdx @@ -35,12 +35,10 @@ import { BuildParam } from "webiny/admin/build-params"; **Interface `BuildParam.Interface`:** -```typescript -interface BuildParam.Interface { - key: string; - value: any; -} -``` +| Method | Description | +| ------------- | ----------- | +| `key: string` | — | +| `value: any` | — | **Types:** @@ -79,11 +77,9 @@ import { BuildParams } from "webiny/admin/build-params"; **Interface `BuildParams.Interface`:** -```typescript -interface BuildParams.Interface { - get(key: string): T | null; -} -``` +| Method | Description | +| -------------------------------------- | ----------- | +| `get(key: string): T \| null` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx index c7494f3d6..2333ccf31 100644 --- a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx +++ b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx @@ -30,11 +30,9 @@ import { GraphQLClient } from "webiny/admin/graphql-client"; **Interface `GraphQLClient.Interface`:** -```typescript -interface GraphQLClient.Interface { - execute(params: GraphQLRequest): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------------ | ----------- | +| `execute(params: GraphQLRequest): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/security.mdx b/docs/developer-docs/6.x/reference/admin/security.mdx index 33835881d..0c34e6567 100644 --- a/docs/developer-docs/6.x/reference/admin/security.mdx +++ b/docs/developer-docs/6.x/reference/admin/security.mdx @@ -78,15 +78,13 @@ import { AuthenticationContext } from "webiny/admin/security"; **Interface `AuthenticationContext.Interface`:** -```typescript -interface AuthenticationContext.Interface { - clear(): void; - getIdToken: IIdTokenProvider; - setIdTokenProvider(provider: IIdTokenProvider): void; - setLogoutCallback(callback: ILogoutCallback): void; - getLogoutCallback(): ILogoutCallback; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `clear(): void` | — | +| `getIdToken: IIdTokenProvider` | — | +| `setIdTokenProvider(provider: IIdTokenProvider): void` | — | +| `setLogoutCallback(callback: ILogoutCallback): void` | — | +| `getLogoutCallback(): ILogoutCallback` | — | **Types:** @@ -127,11 +125,9 @@ import { AuthenticationErrorEventHandler } from "webiny/admin/security"; **Interface `AuthenticationErrorEventHandler.Interface`:** -```typescript -interface AuthenticationErrorEventHandler.Interface { - handle(event: AuthenticationErrorEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------- | ----------- | +| `handle(event: AuthenticationErrorEvent): Promise` | — | **Types:** @@ -171,13 +167,11 @@ import { IdentityContext } from "webiny/admin/security"; **Interface `IdentityContext.Interface`:** -```typescript -interface IdentityContext.Interface { - getIdentity(): Identity; - setIdentity(identity: Identity): void; - clear(): void; -} -``` +| Method | Description | +| --------------------------------------- | ----------- | +| `getIdentity(): Identity` | — | +| `setIdentity(identity: Identity): void` | — | +| `clear(): void` | — | **Types:** @@ -216,11 +210,9 @@ import { LogInUseCase } from "webiny/admin/security"; **Interface `LogInUseCase.Interface`:** -```typescript -interface LogInUseCase.Interface { - execute(params: ILoginParams): Promise; -} -``` +| Method | Description | +| ---------------------------------------------- | ----------- | +| `execute(params: ILoginParams): Promise` | — | **Types:** @@ -260,11 +252,9 @@ import { LogOutUseCase } from "webiny/admin/security"; **Interface `LogOutUseCase.Interface`:** -```typescript -interface LogOutUseCase.Interface { - execute(): Promise; -} -``` +| Method | Description | +| -------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/build-params.mdx b/docs/developer-docs/6.x/reference/api/build-params.mdx index 3c1dad99e..03e01dd00 100644 --- a/docs/developer-docs/6.x/reference/api/build-params.mdx +++ b/docs/developer-docs/6.x/reference/api/build-params.mdx @@ -35,12 +35,10 @@ import { BuildParam } from "webiny/api/build-params"; **Interface `BuildParam.Interface`:** -```typescript -interface BuildParam.Interface { - key: string; - value: any; -} -``` +| Method | Description | +| ------------- | ----------- | +| `key: string` | — | +| `value: any` | — | **Types:** @@ -79,11 +77,9 @@ import { BuildParams } from "webiny/api/build-params"; **Interface `BuildParams.Interface`:** -```typescript -interface BuildParams.Interface { - get(key: string): T | null; -} -``` +| Method | Description | +| -------------------------------------- | ----------- | +| `get(key: string): T \| null` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/entry.mdx b/docs/developer-docs/6.x/reference/api/cms/entry.mdx index 3ba4b93bc..9a4c5efcf 100644 --- a/docs/developer-docs/6.x/reference/api/cms/entry.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/entry.mdx @@ -164,16 +164,17 @@ import { CreateEntryRevisionFromUseCase } from "webiny/api/cms/entry"; **Interface `CreateEntryRevisionFromUseCase.Interface`:** -```typescript -interface CreateEntryRevisionFromUseCase.Interface { - execute( +CreateEntryRevisionFrom Use Case - Creates a new revision from an existing entry. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, sourceId: string, input: CreateCmsEntryInput, options?: CreateCmsEntryOptionsInput - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -218,15 +219,16 @@ import { CreateEntryUseCase } from "webiny/api/cms/entry"; **Interface `CreateEntryUseCase.Interface`:** -```typescript -interface CreateEntryUseCase.Interface { - execute( +CreateEntry Use Case + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, input: CreateCmsEntryInput, options?: CreateCmsEntryOptionsInput - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -269,11 +271,12 @@ import { DeleteEntryRevisionUseCase } from "webiny/api/cms/entry"; **Interface `DeleteEntryRevisionUseCase.Interface`:** -```typescript -interface DeleteEntryRevisionUseCase.Interface { - execute(model: CmsModel, revisionId: string): Promise>; -} -``` +DeleteEntryRevision Use Case - Deletes a specific revision of an entry. +Handles special cases like deleting the latest revision. + +| Method | Description | +| ----------------------------------------------------------------------------------- | ----------- | +| `execute(model: CmsModel, revisionId: string): Promise>` | — | **Types:** @@ -314,15 +317,17 @@ import { DeleteEntryUseCase } from "webiny/api/cms/entry"; **Interface `DeleteEntryUseCase.Interface`:** -```typescript -interface DeleteEntryUseCase.Interface { - execute( +DeleteEntry Use Case - Permanently deletes an entry from the database. +This is a hard delete that removes all traces of the entry. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string, options?: CmsDeleteEntryOptions - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -364,14 +369,13 @@ import { DeleteMultipleEntriesUseCase } from "webiny/api/cms/entry"; **Interface `DeleteMultipleEntriesUseCase.Interface`:** -```typescript -interface DeleteMultipleEntriesUseCase.Interface { - execute( +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: IDeleteMultipleEntriesUseCaseParams - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -415,14 +419,16 @@ import { GetEntriesByIdsUseCase } from "webiny/api/cms/entry"; **Interface `GetEntriesByIdsUseCase.Interface`:** -```typescript -interface GetEntriesByIdsUseCase.Interface { - execute( +GetEntriesByIds Use Case - Fetches multiple entries by their exact revision IDs. +Returns array of entries (excludes deleted entries via decorator). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>; -} -``` + ): Promise[], UseCaseError>>` | — | **Types:** @@ -463,14 +469,16 @@ import { GetEntryByIdUseCase } from "webiny/api/cms/entry"; **Interface `GetEntryByIdUseCase.Interface`:** -```typescript -interface GetEntryByIdUseCase.Interface { - execute( +GetEntryById Use Case - Fetches a single entry by its exact revision ID. +Returns entry or fails with EntryNotFoundError if not found or deleted. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -511,14 +519,16 @@ import { GetEntryUseCase } from "webiny/api/cms/entry"; **Interface `GetEntryUseCase.Interface`:** -```typescript -interface GetEntryUseCase.Interface { - execute( +GetEntry Use Case - Gets a single entry by query parameters (where + sort). +Uses list operation with limit 1 and returns first result or NotFoundError. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryGetParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -560,14 +570,16 @@ import { GetLatestDeletedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; **Interface `GetLatestDeletedRevisionByEntryIdUseCase.Interface`:** -```typescript -interface GetLatestDeletedRevisionByEntryIdUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the three public variations. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -611,14 +623,16 @@ import { GetLatestEntriesByIdsUseCase } from "webiny/api/cms/entry"; **Interface `GetLatestEntriesByIdsUseCase.Interface`:** -```typescript -interface GetLatestEntriesByIdsUseCase.Interface { - execute( +GetLatestEntriesByIds Use Case - Fetches latest revisions by entry IDs. +Returns array of latest entries (excludes deleted entries via decorator). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>; -} -``` + ): Promise[], UseCaseError>>` | — | **Types:** @@ -661,14 +675,16 @@ import { GetLatestRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; **Interface `GetLatestRevisionByEntryIdBaseUseCase.Interface`:** -```typescript -interface GetLatestRevisionByEntryIdBaseUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the three public variations. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -712,14 +728,16 @@ import { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from "webiny/api/cm **Interface `GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface`:** -```typescript -interface GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the three public variations. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -763,14 +781,16 @@ import { GetLatestRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; **Interface `GetLatestRevisionByEntryIdUseCase.Interface`:** -```typescript -interface GetLatestRevisionByEntryIdUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the three public variations. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -814,14 +834,16 @@ import { GetPreviousRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; **Interface `GetPreviousRevisionByEntryIdBaseUseCase.Interface`:** -```typescript -interface GetPreviousRevisionByEntryIdBaseUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the public variation. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetPreviousRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -865,14 +887,16 @@ import { GetPreviousRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; **Interface `GetPreviousRevisionByEntryIdUseCase.Interface`:** -```typescript -interface GetPreviousRevisionByEntryIdUseCase.Interface { - execute( +Base internal use case - returns entry regardless of deleted state. +This is used internally by the public variation. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params: CmsEntryStorageOperationsGetPreviousRevisionParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -916,14 +940,16 @@ import { GetPublishedEntriesByIdsUseCase } from "webiny/api/cms/entry"; **Interface `GetPublishedEntriesByIdsUseCase.Interface`:** -```typescript -interface GetPublishedEntriesByIdsUseCase.Interface { - execute( +GetPublishedEntriesByIds Use Case - Fetches published revisions by entry IDs. +Returns array of published entries (excludes deleted entries via decorator). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>; -} -``` + ): Promise[], UseCaseError>>` | — | **Types:** @@ -966,14 +992,15 @@ import { GetPublishedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; **Interface `GetPublishedRevisionByEntryIdUseCase.Interface`:** -```typescript -interface GetPublishedRevisionByEntryIdUseCase.Interface { - execute( +GetPublishedRevisionByEntryId Use Case + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, entryId: string - ): Promise | null, UseCaseError>>; -} -``` + ): Promise \| null, UseCaseError>>` | — | **Types:** @@ -1016,14 +1043,16 @@ import { GetRevisionByIdUseCase } from "webiny/api/cms/entry"; **Interface `GetRevisionByIdUseCase.Interface`:** -```typescript -interface GetRevisionByIdUseCase.Interface { - execute( +GetRevisionById Use Case - Fetches a specific entry revision by ID. +Returns the entry or fails with EntryNotFoundError if not found or deleted. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1064,14 +1093,16 @@ import { GetRevisionsByEntryIdUseCase } from "webiny/api/cms/entry"; **Interface `GetRevisionsByEntryIdUseCase.Interface`:** -```typescript -interface GetRevisionsByEntryIdUseCase.Interface { - execute( +GetRevisionsByEntryId Use Case - Fetches all revisions for a given entry ID. +Returns array of entry revisions. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, entryId: string - ): Promise[], UseCaseError>>; -} -``` + ): Promise[], UseCaseError>>` | — | **Types:** @@ -1114,13 +1145,16 @@ import { GetSingletonEntryUseCase } from "webiny/api/cms/entry"; **Interface `GetSingletonEntryUseCase.Interface`:** -```typescript -interface GetSingletonEntryUseCase.Interface { - execute( +GetSingletonEntry Use Case + +Gets the singleton entry for a model, creating it if it doesn't exist. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1161,14 +1195,15 @@ import { ListDeletedEntriesUseCase } from "webiny/api/cms/entry"; **Interface `ListDeletedEntriesUseCase.Interface`:** -```typescript -interface ListDeletedEntriesUseCase.Interface { - execute( +ListDeletedEntries Use Case - Lists deleted entries (manage API). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1210,14 +1245,16 @@ import { ListEntriesUseCase } from "webiny/api/cms/entry"; **Interface `ListEntriesUseCase.Interface`:** -```typescript -interface ListEntriesUseCase.Interface { - execute( +Base ListEntries Use Case - Internal base use case for listing entries. +Used by specific variants (Latest, Published, Deleted). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1259,14 +1296,15 @@ import { ListLatestEntriesUseCase } from "webiny/api/cms/entry"; **Interface `ListLatestEntriesUseCase.Interface`:** -```typescript -interface ListLatestEntriesUseCase.Interface { - execute( +ListLatestEntries Use Case - Lists latest entries (manage API). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1308,14 +1346,15 @@ import { ListPublishedEntriesUseCase } from "webiny/api/cms/entry"; **Interface `ListPublishedEntriesUseCase.Interface`:** -```typescript -interface ListPublishedEntriesUseCase.Interface { - execute( +ListPublishedEntries Use Case - Lists published entries (read API). + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1357,11 +1396,12 @@ import { MoveEntryToBinUseCase } from "webiny/api/cms/entry"; **Interface `MoveEntryToBinUseCase.Interface`:** -```typescript -interface MoveEntryToBinUseCase.Interface { - execute(model: CmsModel, id: string): Promise>; -} -``` +MoveEntryToBin Use Case - Soft deletes an entry by marking it as deleted. +This moves the entry to the bin (trash) instead of permanently deleting it. + +| Method | Description | +| --------------------------------------------------------------------------- | ----------- | +| `execute(model: CmsModel, id: string): Promise>` | — | **Types:** @@ -1401,15 +1441,16 @@ import { MoveEntryUseCase } from "webiny/api/cms/entry"; **Interface `MoveEntryUseCase.Interface`:** -```typescript -interface MoveEntryUseCase.Interface { - execute( +MoveEntry Use Case - Moves an entry to a different folder. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string, folderId: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1450,14 +1491,15 @@ import { PublishEntryUseCase } from "webiny/api/cms/entry"; **Interface `PublishEntryUseCase.Interface`:** -```typescript -interface PublishEntryUseCase.Interface { - execute( +PublishEntry Use Case - Publishes an entry revision. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1498,14 +1540,16 @@ import { RepublishEntryUseCase } from "webiny/api/cms/entry"; **Interface `RepublishEntryUseCase.Interface`:** -```typescript -interface RepublishEntryUseCase.Interface { - execute( +RepublishEntry Use Case - Republishes an already published entry. +This updates the entry and publishes it again. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1546,14 +1590,16 @@ import { RestoreEntryFromBinUseCase } from "webiny/api/cms/entry"; **Interface `RestoreEntryFromBinUseCase.Interface`:** -```typescript -interface RestoreEntryFromBinUseCase.Interface { - execute( +RestoreEntryFromBin Use Case - Restores a soft-deleted entry from the bin. +This clears the wbyDeleted flag and restores the entry to its original folder. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1594,14 +1640,15 @@ import { UnpublishEntryUseCase } from "webiny/api/cms/entry"; **Interface `UnpublishEntryUseCase.Interface`:** -```typescript -interface UnpublishEntryUseCase.Interface { - execute( +UnpublishEntry Use Case + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1642,17 +1689,18 @@ import { UpdateEntryUseCase } from "webiny/api/cms/entry"; **Interface `UpdateEntryUseCase.Interface`:** -```typescript -interface UpdateEntryUseCase.Interface { - execute( +UpdateEntry Use Case + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, id: string, input: UpdateCmsEntryInput, metaInput?: GenericRecord, options?: UpdateCmsEntryOptionsInput - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1696,15 +1744,18 @@ import { UpdateSingletonEntryUseCase } from "webiny/api/cms/entry"; **Interface `UpdateSingletonEntryUseCase.Interface`:** -```typescript -interface UpdateSingletonEntryUseCase.Interface { - execute( +UpdateSingletonEntry Use Case + +Updates the singleton entry for a model. + +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, data: UpdateCmsEntryInput, options?: UpdateCmsEntryOptionsInput - ): Promise, UseCaseError>>; -} -``` + ): Promise, UseCaseError>>` | — | **Types:** @@ -1747,15 +1798,14 @@ import { ValidateEntryUseCase } from "webiny/api/cms/entry"; **Interface `ValidateEntryUseCase.Interface`:** -```typescript -interface ValidateEntryUseCase.Interface { - execute( +| Method | Description | +| ------ | ----------- | + +| `execute( model: CmsModel, - id: string | null | undefined, + id: string \| null \| undefined, input: UpdateCmsEntryInput - ): IValidateEntryUseCaseExecuteResult; -} -``` + ): IValidateEntryUseCaseExecuteResult` | — | **Types:** @@ -1799,11 +1849,9 @@ import { EntryAfterCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterCreateEventHandler.Interface`:** -```typescript -interface EntryAfterCreateEventHandler.Interface { - handle(event: EntryAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: EntryAfterCreateEvent): Promise` | — | **Event payload `EntryAfterCreateEventPayload`:** @@ -1853,11 +1901,9 @@ import { EntryAfterDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterDeleteEventHandler.Interface`:** -```typescript -interface EntryAfterDeleteEventHandler.Interface { - handle(event: EntryAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: EntryAfterDeleteEvent): Promise` | — | **Types:** @@ -1897,11 +1943,9 @@ import { EntryAfterDeleteMultipleEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterDeleteMultipleEventHandler.Interface`:** -```typescript -interface EntryAfterDeleteMultipleEventHandler.Interface { - handle(event: EntryAfterDeleteMultipleEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `handle(event: EntryAfterDeleteMultipleEvent): Promise` | — | **Types:** @@ -1941,11 +1985,9 @@ import { EntryAfterMoveEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterMoveEventHandler.Interface`:** -```typescript -interface EntryAfterMoveEventHandler.Interface { - handle(event: EntryAfterMoveEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------- | ----------- | +| `handle(event: EntryAfterMoveEvent): Promise` | — | **Types:** @@ -1985,11 +2027,9 @@ import { EntryAfterPublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterPublishEventHandler.Interface`:** -```typescript -interface EntryAfterPublishEventHandler.Interface { - handle(event: EntryAfterPublishEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: EntryAfterPublishEvent): Promise` | — | **Types:** @@ -2029,11 +2069,9 @@ import { EntryAfterRepublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterRepublishEventHandler.Interface`:** -```typescript -interface EntryAfterRepublishEventHandler.Interface { - handle(event: EntryAfterRepublishEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------- | ----------- | +| `handle(event: EntryAfterRepublishEvent): Promise` | — | **Types:** @@ -2073,11 +2111,9 @@ import { EntryAfterRestoreFromBinEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterRestoreFromBinEventHandler.Interface`:** -```typescript -interface EntryAfterRestoreFromBinEventHandler.Interface { - handle(event: EntryAfterRestoreFromBinEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `handle(event: EntryAfterRestoreFromBinEvent): Promise` | — | **Types:** @@ -2117,11 +2153,9 @@ import { EntryAfterUnpublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterUnpublishEventHandler.Interface`:** -```typescript -interface EntryAfterUnpublishEventHandler.Interface { - handle(event: EntryAfterUnpublishEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------- | ----------- | +| `handle(event: EntryAfterUnpublishEvent): Promise` | — | **Event payload `EntryAfterUnpublishEventPayload`:** @@ -2171,11 +2205,9 @@ import { EntryAfterUpdateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterUpdateEventHandler.Interface`:** -```typescript -interface EntryAfterUpdateEventHandler.Interface { - handle(event: EntryAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: EntryAfterUpdateEvent): Promise` | — | **Event payload `EntryAfterUpdateEventPayload`:** @@ -2226,11 +2258,9 @@ import { EntryBeforeCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeCreateEventHandler.Interface`:** -```typescript -interface EntryBeforeCreateEventHandler.Interface { - handle(event: EntryBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: EntryBeforeCreateEvent): Promise` | — | **Event payload `EntryBeforeCreateEventPayload`:** @@ -2280,11 +2310,9 @@ import { EntryBeforeDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeDeleteEventHandler.Interface`:** -```typescript -interface EntryBeforeDeleteEventHandler.Interface { - handle(event: EntryBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: EntryBeforeDeleteEvent): Promise` | — | **Types:** @@ -2324,11 +2352,9 @@ import { EntryBeforeDeleteMultipleEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeDeleteMultipleEventHandler.Interface`:** -```typescript -interface EntryBeforeDeleteMultipleEventHandler.Interface { - handle(event: EntryBeforeDeleteMultipleEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------- | ----------- | +| `handle(event: EntryBeforeDeleteMultipleEvent): Promise` | — | **Types:** @@ -2368,11 +2394,9 @@ import { EntryBeforeMoveEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeMoveEventHandler.Interface`:** -```typescript -interface EntryBeforeMoveEventHandler.Interface { - handle(event: EntryBeforeMoveEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: EntryBeforeMoveEvent): Promise` | — | **Types:** @@ -2412,11 +2436,9 @@ import { EntryBeforePublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforePublishEventHandler.Interface`:** -```typescript -interface EntryBeforePublishEventHandler.Interface { - handle(event: EntryBeforePublishEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------- | ----------- | +| `handle(event: EntryBeforePublishEvent): Promise` | — | **Types:** @@ -2456,11 +2478,9 @@ import { EntryBeforeRepublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeRepublishEventHandler.Interface`:** -```typescript -interface EntryBeforeRepublishEventHandler.Interface { - handle(event: EntryBeforeRepublishEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `handle(event: EntryBeforeRepublishEvent): Promise` | — | **Types:** @@ -2500,11 +2520,9 @@ import { EntryBeforeRestoreFromBinEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeRestoreFromBinEventHandler.Interface`:** -```typescript -interface EntryBeforeRestoreFromBinEventHandler.Interface { - handle(event: EntryBeforeRestoreFromBinEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------- | ----------- | +| `handle(event: EntryBeforeRestoreFromBinEvent): Promise` | — | **Types:** @@ -2544,11 +2562,9 @@ import { EntryBeforeUnpublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeUnpublishEventHandler.Interface`:** -```typescript -interface EntryBeforeUnpublishEventHandler.Interface { - handle(event: EntryBeforeUnpublishEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `handle(event: EntryBeforeUnpublishEvent): Promise` | — | **Event payload `EntryBeforeUnpublishEventPayload`:** @@ -2597,11 +2613,9 @@ import { EntryBeforeUpdateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeUpdateEventHandler.Interface`:** -```typescript -interface EntryBeforeUpdateEventHandler.Interface { - handle(event: EntryBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: EntryBeforeUpdateEvent): Promise` | — | **Event payload `EntryBeforeUpdateEventPayload`:** @@ -2652,11 +2666,9 @@ import { EntryRevisionAfterCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionAfterCreateEventHandler.Interface`:** -```typescript -interface EntryRevisionAfterCreateEventHandler.Interface { - handle(event: EntryRevisionAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `handle(event: EntryRevisionAfterCreateEvent): Promise` | — | **Types:** @@ -2696,11 +2708,9 @@ import { EntryRevisionAfterDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionAfterDeleteEventHandler.Interface`:** -```typescript -interface EntryRevisionAfterDeleteEventHandler.Interface { - handle(event: EntryRevisionAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `handle(event: EntryRevisionAfterDeleteEvent): Promise` | — | **Types:** @@ -2740,11 +2750,9 @@ import { EntryRevisionBeforeCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionBeforeCreateEventHandler.Interface`:** -```typescript -interface EntryRevisionBeforeCreateEventHandler.Interface { - handle(event: EntryRevisionBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------- | ----------- | +| `handle(event: EntryRevisionBeforeCreateEvent): Promise` | — | **Types:** @@ -2784,11 +2792,9 @@ import { EntryRevisionBeforeDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionBeforeDeleteEventHandler.Interface`:** -```typescript -interface EntryRevisionBeforeDeleteEventHandler.Interface { - handle(event: EntryRevisionBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------- | ----------- | +| `handle(event: EntryRevisionBeforeDeleteEvent): Promise` | — | **Types:** @@ -2830,11 +2836,9 @@ import { CmsSortMapper } from "webiny/api/cms/entry"; **Interface `CmsSortMapper.Interface`:** -```typescript -interface CmsSortMapper.Interface { - map(params: ICmsSortMapperParams): CmsEntryListSort | undefined; -} -``` +| Method | Description | +| ------------------------------------------------------------------ | ----------- | +| `map(params: ICmsSortMapperParams): CmsEntryListSort \| undefined` | — | **Types:** @@ -2874,11 +2878,9 @@ import { CmsWhereMapper } from "webiny/api/cms/entry"; **Interface `CmsWhereMapper.Interface`:** -```typescript -interface CmsWhereMapper.Interface { - map(params: ICmsWhereMapperParams): CmsEntryListWhere | undefined; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------------ | ----------- | +| `map(params: ICmsWhereMapperParams): CmsEntryListWhere \| undefined` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/group.mdx b/docs/developer-docs/6.x/reference/api/cms/group.mdx index 2f74c063e..75f909471 100644 --- a/docs/developer-docs/6.x/reference/api/cms/group.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/group.mdx @@ -70,11 +70,11 @@ import { CreateGroupUseCase } from "webiny/api/cms/group"; **Interface `CreateGroupUseCase.Interface`:** -```typescript -interface CreateGroupUseCase.Interface { - execute(input: CmsGroupCreateInput): Promise>; -} -``` +CreateGroup Use Case + +| Method | Description | +| ------------------------------------------------------------------------------ | ----------- | +| `execute(input: CmsGroupCreateInput): Promise>` | — | **Types:** @@ -116,11 +116,11 @@ import { DeleteGroupUseCase } from "webiny/api/cms/group"; **Interface `DeleteGroupUseCase.Interface`:** -```typescript -interface DeleteGroupUseCase.Interface { - execute(groupId: string): Promise>; -} -``` +DeleteGroup Use Case + +| Method | Description | +| --------------------------------------------------------------- | ----------- | +| `execute(groupId: string): Promise>` | — | **Types:** @@ -161,11 +161,11 @@ import { GetGroupUseCase } from "webiny/api/cms/group"; **Interface `GetGroupUseCase.Interface`:** -```typescript -interface GetGroupUseCase.Interface { - execute(groupId: string): Promise>; -} -``` +GetGroup Use Case + +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `execute(groupId: string): Promise>` | — | **Types:** @@ -206,11 +206,11 @@ import { ListGroupsUseCase } from "webiny/api/cms/group"; **Interface `ListGroupsUseCase.Interface`:** -```typescript -interface ListGroupsUseCase.Interface { - execute(): Promise>; -} -``` +ListGroups Use Case + +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `execute(): Promise>` | — | **Types:** @@ -251,11 +251,11 @@ import { UpdateGroupUseCase } from "webiny/api/cms/group"; **Interface `UpdateGroupUseCase.Interface`:** -```typescript -interface UpdateGroupUseCase.Interface { - execute(groupId: string, input: CmsGroupUpdateInput): Promise>; -} -``` +UpdateGroup Use Case + +| Method | Description | +| ----------------------------------------------------------------------------------------------- | ----------- | +| `execute(groupId: string, input: CmsGroupUpdateInput): Promise>` | — | **Types:** @@ -299,11 +299,9 @@ import { GroupAfterCreateEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterCreateEventHandler.Interface`:** -```typescript -interface GroupAfterCreateEventHandler.Interface { - handle(event: GroupAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: GroupAfterCreateEvent): Promise` | — | **Event payload `GroupAfterCreateEventPayload`:** @@ -351,11 +349,9 @@ import { GroupAfterDeleteEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterDeleteEventHandler.Interface`:** -```typescript -interface GroupAfterDeleteEventHandler.Interface { - handle(event: GroupAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: GroupAfterDeleteEvent): Promise` | — | **Event payload `GroupAfterDeleteEventPayload`:** @@ -403,11 +399,9 @@ import { GroupAfterUpdateEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterUpdateEventHandler.Interface`:** -```typescript -interface GroupAfterUpdateEventHandler.Interface { - handle(event: GroupAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: GroupAfterUpdateEvent): Promise` | — | **Event payload `GroupAfterUpdateEventPayload`:** @@ -456,11 +450,9 @@ import { GroupBeforeCreateEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeCreateEventHandler.Interface`:** -```typescript -interface GroupBeforeCreateEventHandler.Interface { - handle(event: GroupBeforeCreateEventEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------- | ----------- | +| `handle(event: GroupBeforeCreateEventEvent): Promise` | — | **Event payload `GroupBeforeCreateEventPayload`:** @@ -508,11 +500,9 @@ import { GroupBeforeDeleteEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeDeleteEventHandler.Interface`:** -```typescript -interface GroupBeforeDeleteEventHandler.Interface { - handle(event: GroupBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: GroupBeforeDeleteEvent): Promise` | — | **Event payload `GroupBeforeDeleteEventPayload`:** @@ -560,11 +550,9 @@ import { GroupBeforeUpdateEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeUpdateEventHandler.Interface`:** -```typescript -interface GroupBeforeUpdateEventHandler.Interface { - handle(event: GroupBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: GroupBeforeUpdateEvent): Promise` | — | **Event payload `GroupBeforeUpdateEventPayload`:** @@ -615,11 +603,9 @@ import { ModelGroupFactory } from "webiny/api/cms/group"; **Interface `ModelGroupFactory.Interface`:** -```typescript -interface ModelGroupFactory.Interface { - execute(): Promise; -} -``` +| Method | Description | +| ----------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/model.mdx b/docs/developer-docs/6.x/reference/api/cms/model.mdx index 643087f04..aeab3fb03 100644 --- a/docs/developer-docs/6.x/reference/api/cms/model.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/model.mdx @@ -82,14 +82,15 @@ import { CreateModelFromUseCase } from "webiny/api/cms/model"; **Interface `CreateModelFromUseCase.Interface`:** -```typescript -interface CreateModelFromUseCase.Interface { - execute( +CreateModelFrom Use Case (Clone/Copy Model) + +| Method | Description | +| ------ | ----------- | + +| `execute( modelId: string, input: CmsModelCreateFromInput - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -131,11 +132,11 @@ import { CreateModelUseCase } from "webiny/api/cms/model"; **Interface `CreateModelUseCase.Interface`:** -```typescript -interface CreateModelUseCase.Interface { - execute(input: CmsModelCreateInput): Promise>; -} -``` +CreateModel Use Case + +| Method | Description | +| ------------------------------------------------------------------------------ | ----------- | +| `execute(input: CmsModelCreateInput): Promise>` | — | **Types:** @@ -177,11 +178,11 @@ import { DeleteModelUseCase } from "webiny/api/cms/model"; **Interface `DeleteModelUseCase.Interface`:** -```typescript -interface DeleteModelUseCase.Interface { - execute(modelId: string): Promise>; -} -``` +DeleteModel Use Case + +| Method | Description | +| --------------------------------------------------------------- | ----------- | +| `execute(modelId: string): Promise>` | — | **Types:** @@ -222,11 +223,11 @@ import { GetModelUseCase } from "webiny/api/cms/model"; **Interface `GetModelUseCase.Interface`:** -```typescript -interface GetModelUseCase.Interface { - execute(modelId: string): Promise>; -} -``` +GetModel Use Case + +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `execute(modelId: string): Promise>` | — | **Types:** @@ -267,11 +268,11 @@ import { ListModelsUseCase } from "webiny/api/cms/model"; **Interface `ListModelsUseCase.Interface`:** -```typescript -interface ListModelsUseCase.Interface { - execute(params?: ICmsModelListParams): Promise>; -} -``` +ListModels Use Case + +| Method | Description | +| ---------------------------------------------------------------------------------- | ----------- | +| `execute(params?: ICmsModelListParams): Promise>` | — | **Types:** @@ -313,11 +314,11 @@ import { UpdateModelUseCase } from "webiny/api/cms/model"; **Interface `UpdateModelUseCase.Interface`:** -```typescript -interface UpdateModelUseCase.Interface { - execute(modelId: string, input: CmsModelUpdateInput): Promise>; -} -``` +UpdateModel Use Case + +| Method | Description | +| ----------------------------------------------------------------------------------------------- | ----------- | +| `execute(modelId: string, input: CmsModelUpdateInput): Promise>` | — | **Types:** @@ -361,11 +362,9 @@ import { ModelAfterCreateEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterCreateEventHandler.Interface`:** -```typescript -interface ModelAfterCreateEventHandler.Interface { - handle(event: ModelAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: ModelAfterCreateEvent): Promise` | — | **Event payload `ModelAfterCreateEventPayload`:** @@ -413,11 +412,9 @@ import { ModelAfterCreateFromEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterCreateFromEventHandler.Interface`:** -```typescript -interface ModelAfterCreateFromEventHandler.Interface { - handle(event: ModelAfterCreateFromEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `handle(event: ModelAfterCreateFromEvent): Promise` | — | **Event payload `ModelAfterCreateFromEventPayload`:** @@ -466,11 +463,9 @@ import { ModelAfterDeleteEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterDeleteEventHandler.Interface`:** -```typescript -interface ModelAfterDeleteEventHandler.Interface { - handle(event: ModelAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: ModelAfterDeleteEvent): Promise` | — | **Event payload `ModelAfterDeleteEventPayload`:** @@ -518,11 +513,9 @@ import { ModelAfterUpdateEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterUpdateEventHandler.Interface`:** -```typescript -interface ModelAfterUpdateEventHandler.Interface { - handle(event: ModelAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: ModelAfterUpdateEvent): Promise` | — | **Event payload `ModelAfterUpdateEventPayload`:** @@ -571,11 +564,9 @@ import { ModelBeforeCreateEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeCreateEventHandler.Interface`:** -```typescript -interface ModelBeforeCreateEventHandler.Interface { - handle(event: ModelBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ModelBeforeCreateEvent): Promise` | — | **Event payload `ModelBeforeCreateEventPayload`:** @@ -624,11 +615,9 @@ import { ModelBeforeCreateFromEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeCreateFromEventHandler.Interface`:** -```typescript -interface ModelBeforeCreateFromEventHandler.Interface { - handle(event: ModelBeforeCreateFromEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `handle(event: ModelBeforeCreateFromEvent): Promise` | — | **Event payload `ModelBeforeCreateFromEventPayload`:** @@ -678,11 +667,9 @@ import { ModelBeforeDeleteEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeDeleteEventHandler.Interface`:** -```typescript -interface ModelBeforeDeleteEventHandler.Interface { - handle(event: ModelBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ModelBeforeDeleteEvent): Promise` | — | **Event payload `ModelBeforeDeleteEventPayload`:** @@ -730,11 +717,9 @@ import { ModelBeforeUpdateEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeUpdateEventHandler.Interface`:** -```typescript -interface ModelBeforeUpdateEventHandler.Interface { - handle(event: ModelBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ModelBeforeUpdateEvent): Promise` | — | **Event payload `ModelBeforeUpdateEventPayload`:** @@ -786,14 +771,12 @@ import { FieldType } from "webiny/api/cms/model"; **Interface `FieldType.Interface`:** -```typescript -interface FieldType.Interface { - // Unique identifier for this field type - readonly type: string; - // Create a new field builder instance - create(registry: IFieldBuilderRegistry): BaseFieldBuilder; -} -``` +Field Type Factory - creates a field builder instance + +| Method | Description | +| ---------------------------------------------------------------- | ------------------------------------- | +| `readonly type: string` | Unique identifier for this field type | +| `create(registry: IFieldBuilderRegistry): BaseFieldBuilder` | Create a new field builder instance | **Usage:** @@ -824,11 +807,9 @@ import { ModelFactory } from "webiny/api/cms/model"; **Interface `ModelFactory.Interface`:** -```typescript -interface ModelFactory.Interface { - execute(builder: IModelBuilder): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------------------------- | ----------- | +| `execute(builder: IModelBuilder): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/graphql.mdx b/docs/developer-docs/6.x/reference/api/graphql.mdx index 9387d9691..fa867b949 100644 --- a/docs/developer-docs/6.x/reference/api/graphql.mdx +++ b/docs/developer-docs/6.x/reference/api/graphql.mdx @@ -47,11 +47,11 @@ import { GraphQLSchemaFactory } from "webiny/api/graphql"; **Interface `GraphQLSchemaFactory.Interface`:** -```typescript -interface GraphQLSchemaFactory.Interface { - execute(builder: GraphQLSchemaBuilder.Interface): Promise; -} -``` +GraphQLSchemaFactory + +| Method | Description | +| ------------------------------------------------------------------------------------------- | ----------- | +| `execute(builder: GraphQLSchemaBuilder.Interface): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/key-value-store.mdx b/docs/developer-docs/6.x/reference/api/key-value-store.mdx index ed1e87c39..2cb3e6025 100644 --- a/docs/developer-docs/6.x/reference/api/key-value-store.mdx +++ b/docs/developer-docs/6.x/reference/api/key-value-store.mdx @@ -35,23 +35,22 @@ import { GlobalKeyValueStore } from "webiny/api/key-value-store"; **Interface `GlobalKeyValueStore.Interface`:** -```typescript -interface GlobalKeyValueStore.Interface { - get( +| Method | Description | +| ------ | ----------- | + +| `get( key: string, options?: IGlobalKeyValueStoreOptions - ): Promise>; - set( + ): Promise>` | — | +| `set( key: string, value: any, options?: IGlobalKeyValueStoreOptions - ): Promise>; - delete( + ): Promise>` | — | +| `delete( key: string, options?: IGlobalKeyValueStoreOptions - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -92,13 +91,11 @@ import { KeyValueStore } from "webiny/api/key-value-store"; **Interface `KeyValueStore.Interface`:** -```typescript -interface KeyValueStore.Interface { - get(key: string): Promise>; - set(key: string, value: any): Promise>; - delete(key: string): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------ | ----------- | +| `get(key: string): Promise>` | — | +| `set(key: string, value: any): Promise>` | — | +| `delete(key: string): Promise>` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/logger.mdx b/docs/developer-docs/6.x/reference/api/logger.mdx index ab14dd4ff..d0d5aaa91 100644 --- a/docs/developer-docs/6.x/reference/api/logger.mdx +++ b/docs/developer-docs/6.x/reference/api/logger.mdx @@ -30,17 +30,17 @@ import { Logger } from "webiny/api/logger"; **Interface `Logger.Interface`:** -```typescript -interface Logger.Interface { - trace(objOrMsg: object | string, ...args: any[]): void; - debug(objOrMsg: object | string, ...args: any[]): void; - info(objOrMsg: object | string, ...args: any[]): void; - warn(objOrMsg: object | string, ...args: any[]): void; - error(objOrMsg: object | string, ...args: any[]): void; - fatal(objOrMsg: object | string, ...args: any[]): void; - log(objOrMsg: object | string, ...args: any[]): void; -} -``` +Interface for logging messages at different severity levels. + +| Method | Description | +| --------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `trace(objOrMsg: object \| string, ...args: any[]): void` | Log a trace-level message with optional additional arguments. | +| `debug(objOrMsg: object \| string, ...args: any[]): void` | Log a debug-level message with optional additional arguments. | +| `info(objOrMsg: object \| string, ...args: any[]): void` | Log an info-level message with optional additional arguments. | +| `warn(objOrMsg: object \| string, ...args: any[]): void` | Log a warning-level message with optional additional arguments. | +| `error(objOrMsg: object \| string, ...args: any[]): void` | Log an error-level message with optional additional arguments. | +| `fatal(objOrMsg: object \| string, ...args: any[]): void` | Log a fatal-level message with optional additional arguments. | +| `log(objOrMsg: object \| string, ...args: any[]): void` | Log a generic message (defaults to info level) with optional additional arguments. | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security.mdx b/docs/developer-docs/6.x/reference/api/security.mdx index 8d4a7e8cf..5faccbe5c 100644 --- a/docs/developer-docs/6.x/reference/api/security.mdx +++ b/docs/developer-docs/6.x/reference/api/security.mdx @@ -48,11 +48,9 @@ import { ApiKeyFactory } from "webiny/api/security"; **Interface `ApiKeyFactory.Interface`:** -```typescript -interface ApiKeyFactory.Interface { - execute(): Promise | CodeApiKey[]; -} -``` +| Method | Description | +| -------------------------------------------------- | ----------- | +| `execute(): Promise \| CodeApiKey[]` | — | **Types:** @@ -93,11 +91,9 @@ import { Authenticator } from "webiny/api/security"; **Interface `Authenticator.Interface`:** -```typescript -interface Authenticator.Interface { - authenticate(token: string): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------ | ----------- | +| `authenticate(token: string): Promise` | — | **Types:** @@ -136,11 +132,9 @@ import { Authorizer } from "webiny/api/security"; **Interface `Authorizer.Interface`:** -```typescript -interface Authorizer.Interface { - authorize(identity: Identity): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `authorize(identity: Identity): Promise` | — | **Types:** @@ -179,23 +173,22 @@ import { IdentityContext } from "webiny/api/security"; **Interface `IdentityContext.Interface`:** -```typescript -interface IdentityContext.Interface { - getIdentity(): Identity; - setIdentity(identity: Identity | undefined): void; - withIdentity(identity: Identity | undefined, cb: () => Promise): Promise; - getPermission( +| Method | Description | +| ------------------------------------------------------------------------------------ | ----------- | +| `getIdentity(): Identity` | — | +| `setIdentity(identity: Identity \| undefined): void` | — | +| `withIdentity(identity: Identity \| undefined, cb: () => Promise): Promise` | — | + +| `getPermission( name: string - ): Promise; - getPermissions( + ): Promise` | — | +| `getPermissions( name: string - ): Promise; - listPermissions(): Promise; - hasFullAccess(): Promise; - withoutAuthorization(cb: () => Promise): Promise; - isAuthorizationEnabled(): boolean; -} -``` + ): Promise` | — | +| `listPermissions(): Promise` | — | +| `hasFullAccess(): Promise` | — | +| `withoutAuthorization(cb: () => Promise): Promise` | — | +| `isAuthorizationEnabled(): boolean` | — | **Types:** @@ -234,12 +227,10 @@ import { IdentityProvider } from "webiny/api/security"; **Interface `IdentityProvider.Interface`:** -```typescript -interface IdentityProvider.Interface { - isApplicable(token: string): boolean; - getIdentity(token: string): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `isApplicable(token: string): boolean` | — | +| `getIdentity(token: string): Promise` | — | **Types:** @@ -280,12 +271,10 @@ import { JwtIdentityProvider } from "webiny/api/security"; **Interface `JwtIdentityProvider.Interface`:** -```typescript -interface JwtIdentityProvider.Interface { - isApplicable(token: IJwtPayload): boolean; - getIdentity(token: string, jwt: IJwt): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------- | ----------- | +| `isApplicable(token: IJwtPayload): boolean` | — | +| `getIdentity(token: string, jwt: IJwt): Promise` | — | **Types:** @@ -328,16 +317,14 @@ import { OidcIdentityProvider } from "webiny/api/security"; **Interface `OidcIdentityProvider.Interface`:** -```typescript -interface OidcIdentityProvider.Interface { - issuer: string; - clientId: string; - isApplicable(token: IJwtPayload): boolean; - getIdentity(jwt: IJwtPayload): Promise; - verifyToken?(token: string): Promise; - verifyTokenClaims?(token: IJwtPayload): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------- | ----------- | +| `issuer: string` | — | +| `clientId: string` | — | +| `isApplicable(token: IJwtPayload): boolean` | — | +| `getIdentity(jwt: IJwtPayload): Promise` | — | +| `verifyToken?(token: string): Promise` | — | +| `verifyTokenClaims?(token: IJwtPayload): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/api-key.mdx b/docs/developer-docs/6.x/reference/api/security/api-key.mdx index 000b2ed95..724441ee2 100644 --- a/docs/developer-docs/6.x/reference/api/security/api-key.mdx +++ b/docs/developer-docs/6.x/reference/api/security/api-key.mdx @@ -62,11 +62,9 @@ import { CreateApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `CreateApiKeyUseCase.Interface`:** -```typescript -interface CreateApiKeyUseCase.Interface { - execute(input: CreateApiKeyInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------- | ----------- | +| `execute(input: CreateApiKeyInput): Promise>` | — | **Types:** @@ -106,11 +104,9 @@ import { DeleteApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `DeleteApiKeyUseCase.Interface`:** -```typescript -interface DeleteApiKeyUseCase.Interface { - execute(id: string): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------- | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -150,11 +146,9 @@ import { GetApiKeyByTokenUseCase } from "webiny/api/security/api-key"; **Interface `GetApiKeyByTokenUseCase.Interface`:** -```typescript -interface GetApiKeyByTokenUseCase.Interface { - execute(token: string): Promise>; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------- | ----------- | +| `execute(token: string): Promise>` | — | **Types:** @@ -194,11 +188,9 @@ import { GetApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `GetApiKeyUseCase.Interface`:** -```typescript -interface GetApiKeyUseCase.Interface { - execute(id: string): Promise>; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -238,11 +230,9 @@ import { ListApiKeysUseCase } from "webiny/api/security/api-key"; **Interface `ListApiKeysUseCase.Interface`:** -```typescript -interface ListApiKeysUseCase.Interface { - execute(params?: ListApiKeysInput): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------------- | ----------- | +| `execute(params?: ListApiKeysInput): Promise>` | — | **Types:** @@ -282,11 +272,9 @@ import { UpdateApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `UpdateApiKeyUseCase.Interface`:** -```typescript -interface UpdateApiKeyUseCase.Interface { - execute(id: string, input: UpdateApiKeyInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------- | ----------- | +| `execute(id: string, input: UpdateApiKeyInput): Promise>` | — | **Types:** @@ -328,11 +316,9 @@ import { ApiKeyAfterCreateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterCreateEventHandler.Interface`:** -```typescript -interface ApiKeyAfterCreateEventHandler.Interface { - handle(event: ApiKeyAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ApiKeyAfterCreateEvent): Promise` | — | **Types:** @@ -372,11 +358,9 @@ import { ApiKeyAfterDeleteEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterDeleteEventHandler.Interface`:** -```typescript -interface ApiKeyAfterDeleteEventHandler.Interface { - handle(event: ApiKeyAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ApiKeyAfterDeleteEvent): Promise` | — | **Types:** @@ -416,11 +400,9 @@ import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterUpdateEventHandler.Interface`:** -```typescript -interface ApiKeyAfterUpdateEventHandler.Interface { - handle(event: ApiKeyAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `handle(event: ApiKeyAfterUpdateEvent): Promise` | — | **Types:** @@ -460,11 +442,9 @@ import { ApiKeyBeforeCreateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeCreateEventHandler.Interface`:** -```typescript -interface ApiKeyBeforeCreateEventHandler.Interface { - handle(event: ApiKeyBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------- | ----------- | +| `handle(event: ApiKeyBeforeCreateEvent): Promise` | — | **Types:** @@ -504,11 +484,9 @@ import { ApiKeyBeforeDeleteEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeDeleteEventHandler.Interface`:** -```typescript -interface ApiKeyBeforeDeleteEventHandler.Interface { - handle(event: ApiKeyBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------- | ----------- | +| `handle(event: ApiKeyBeforeDeleteEvent): Promise` | — | **Types:** @@ -548,11 +526,9 @@ import { ApiKeyBeforeUpdateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeUpdateEventHandler.Interface`:** -```typescript -interface ApiKeyBeforeUpdateEventHandler.Interface { - handle(event: ApiKeyBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------- | ----------- | +| `handle(event: ApiKeyBeforeUpdateEvent): Promise` | — | **Types:** @@ -594,11 +570,9 @@ import { ApiKeyFactory } from "webiny/api/security/api-key"; **Interface `ApiKeyFactory.Interface`:** -```typescript -interface ApiKeyFactory.Interface { - execute(): Promise | CodeApiKey[]; -} -``` +| Method | Description | +| -------------------------------------------------- | ----------- | +| `execute(): Promise \| CodeApiKey[]` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.mdx b/docs/developer-docs/6.x/reference/api/security/authentication.mdx index c1b0708d0..8192af9a1 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.mdx +++ b/docs/developer-docs/6.x/reference/api/security/authentication.mdx @@ -35,11 +35,9 @@ import { AfterAuthenticationEventHandler } from "webiny/api/security/authenticat **Interface `AfterAuthenticationEventHandler.Interface`:** -```typescript -interface AfterAuthenticationEventHandler.Interface { - handle(event: AfterAuthenticationEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------- | ----------- | +| `handle(event: AfterAuthenticationEvent): Promise` | — | **Types:** @@ -79,11 +77,9 @@ import { BeforeAuthenticationEventHandler } from "webiny/api/security/authentica **Interface `BeforeAuthenticationEventHandler.Interface`:** -```typescript -interface BeforeAuthenticationEventHandler.Interface { - handle(event: BeforeAuthenticationEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `handle(event: BeforeAuthenticationEvent): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/role.mdx b/docs/developer-docs/6.x/reference/api/security/role.mdx index bf40f8438..00c716cc9 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.mdx +++ b/docs/developer-docs/6.x/reference/api/security/role.mdx @@ -56,11 +56,9 @@ import { CreateRoleUseCase } from "webiny/api/security/role"; **Interface `CreateRoleUseCase.Interface`:** -```typescript -interface CreateRoleUseCase.Interface { - execute(input: CreateRoleInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------- | ----------- | +| `execute(input: CreateRoleInput): Promise>` | — | **Types:** @@ -100,11 +98,9 @@ import { DeleteRoleUseCase } from "webiny/api/security/role"; **Interface `DeleteRoleUseCase.Interface`:** -```typescript -interface DeleteRoleUseCase.Interface { - execute(id: string): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -144,11 +140,9 @@ import { GetRoleUseCase } from "webiny/api/security/role"; **Interface `GetRoleUseCase.Interface`:** -```typescript -interface GetRoleUseCase.Interface { - execute(params: GetRoleInput): Promise>; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `execute(params: GetRoleInput): Promise>` | — | **Types:** @@ -188,11 +182,9 @@ import { ListRolesUseCase } from "webiny/api/security/role"; **Interface `ListRolesUseCase.Interface`:** -```typescript -interface ListRolesUseCase.Interface { - execute(params?: ListRolesInput): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------- | ----------- | +| `execute(params?: ListRolesInput): Promise>` | — | **Types:** @@ -232,14 +224,13 @@ import { UpdateRoleUseCase } from "webiny/api/security/role"; **Interface `UpdateRoleUseCase.Interface`:** -```typescript -interface UpdateRoleUseCase.Interface { - execute( +| Method | Description | +| ------ | ----------- | + +| `execute( id: string, input: UpdateRoleUseCaseInput - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -281,11 +272,9 @@ import { RoleAfterCreateEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterCreateEventHandler.Interface`:** -```typescript -interface RoleAfterCreateEventHandler.Interface { - handle(event: RoleAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: RoleAfterCreateEvent): Promise` | — | **Types:** @@ -325,11 +314,9 @@ import { RoleAfterDeleteEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterDeleteEventHandler.Interface`:** -```typescript -interface RoleAfterDeleteEventHandler.Interface { - handle(event: RoleAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: RoleAfterDeleteEvent): Promise` | — | **Types:** @@ -369,11 +356,9 @@ import { RoleAfterUpdateEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterUpdateEventHandler.Interface`:** -```typescript -interface RoleAfterUpdateEventHandler.Interface { - handle(event: RoleAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: RoleAfterUpdateEvent): Promise` | — | **Types:** @@ -413,11 +398,9 @@ import { RoleBeforeCreateEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeCreateEventHandler.Interface`:** -```typescript -interface RoleBeforeCreateEventHandler.Interface { - handle(event: RoleBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: RoleBeforeCreateEvent): Promise` | — | **Types:** @@ -457,11 +440,9 @@ import { RoleBeforeDeleteEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeDeleteEventHandler.Interface`:** -```typescript -interface RoleBeforeDeleteEventHandler.Interface { - handle(event: RoleBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: RoleBeforeDeleteEvent): Promise` | — | **Types:** @@ -501,11 +482,9 @@ import { RoleBeforeUpdateEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeUpdateEventHandler.Interface`:** -```typescript -interface RoleBeforeUpdateEventHandler.Interface { - handle(event: RoleBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: RoleBeforeUpdateEvent): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/user.mdx b/docs/developer-docs/6.x/reference/api/security/user.mdx index 4cbeb68db..8932d0ff5 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.mdx +++ b/docs/developer-docs/6.x/reference/api/security/user.mdx @@ -57,11 +57,9 @@ import { CreateUserUseCase } from "webiny/api/security/user"; **Interface `CreateUserUseCase.Interface`:** -```typescript -interface CreateUserUseCase.Interface { - execute(input: CreateUserInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------ | ----------- | +| `execute(input: CreateUserInput): Promise>` | — | **Types:** @@ -102,11 +100,9 @@ import { DeleteUserUseCase } from "webiny/api/security/user"; **Interface `DeleteUserUseCase.Interface`:** -```typescript -interface DeleteUserUseCase.Interface { - execute(id: string): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------- | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -146,11 +142,9 @@ import { GetUserUseCase } from "webiny/api/security/user"; **Interface `GetUserUseCase.Interface`:** -```typescript -interface GetUserUseCase.Interface { - execute(input: GetUserInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------ | ----------- | +| `execute(input: GetUserInput): Promise>` | — | **Types:** @@ -190,11 +184,9 @@ import { ListUsersUseCase } from "webiny/api/security/user"; **Interface `ListUsersUseCase.Interface`:** -```typescript -interface ListUsersUseCase.Interface { - execute(input?: ListUsersInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------- | ----------- | +| `execute(input?: ListUsersInput): Promise>` | — | **Types:** @@ -234,11 +226,9 @@ import { ListUserTeamsUseCase } from "webiny/api/security/user"; **Interface `ListUserTeamsUseCase.Interface`:** -```typescript -interface ListUserTeamsUseCase.Interface { - execute(userId: string): Promise>; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `execute(userId: string): Promise>` | — | **Types:** @@ -278,11 +268,9 @@ import { UpdateUserUseCase } from "webiny/api/security/user"; **Interface `UpdateUserUseCase.Interface`:** -```typescript -interface UpdateUserUseCase.Interface { - execute(id: string, input: UpdateUserInput): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------ | ----------- | +| `execute(id: string, input: UpdateUserInput): Promise>` | — | **Types:** @@ -324,11 +312,9 @@ import { UserAfterCreateEventHandler } from "webiny/api/security/user"; **Interface `UserAfterCreateEventHandler.Interface`:** -```typescript -interface UserAfterCreateEventHandler.Interface { - handle(event: UserAfterCreateEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: UserAfterCreateEvent): Promise` | — | **Types:** @@ -368,11 +354,9 @@ import { UserAfterDeleteEventHandler } from "webiny/api/security/user"; **Interface `UserAfterDeleteEventHandler.Interface`:** -```typescript -interface UserAfterDeleteEventHandler.Interface { - handle(event: UserAfterDeleteEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: UserAfterDeleteEvent): Promise` | — | **Types:** @@ -412,11 +396,9 @@ import { UserAfterUpdateEventHandler } from "webiny/api/security/user"; **Interface `UserAfterUpdateEventHandler.Interface`:** -```typescript -interface UserAfterUpdateEventHandler.Interface { - handle(event: UserAfterUpdateEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------- | ----------- | +| `handle(event: UserAfterUpdateEvent): Promise` | — | **Types:** @@ -456,11 +438,9 @@ import { UserBeforeCreateEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeCreateEventHandler.Interface`:** -```typescript -interface UserBeforeCreateEventHandler.Interface { - handle(event: UserBeforeCreateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: UserBeforeCreateEvent): Promise` | — | **Types:** @@ -500,11 +480,9 @@ import { UserBeforeDeleteEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeDeleteEventHandler.Interface`:** -```typescript -interface UserBeforeDeleteEventHandler.Interface { - handle(event: UserBeforeDeleteEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: UserBeforeDeleteEvent): Promise` | — | **Types:** @@ -544,11 +522,9 @@ import { UserBeforeUpdateEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeUpdateEventHandler.Interface`:** -```typescript -interface UserBeforeUpdateEventHandler.Interface { - handle(event: UserBeforeUpdateEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------- | ----------- | +| `handle(event: UserBeforeUpdateEvent): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/system.mdx b/docs/developer-docs/6.x/reference/api/system.mdx index 33e85b322..5a34e9e42 100644 --- a/docs/developer-docs/6.x/reference/api/system.mdx +++ b/docs/developer-docs/6.x/reference/api/system.mdx @@ -41,13 +41,14 @@ import { InstallSystemUseCase } from "webiny/api/system"; **Interface `InstallSystemUseCase.Interface`:** -```typescript -interface InstallSystemUseCase.Interface { - execute( +Use Case Abstraction + +| Method | Description | +| ------ | ----------- | + +| `execute( input: InstallSystemInput - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -89,11 +90,9 @@ import { SystemInstalledEventHandler } from "webiny/api/system"; **Interface `SystemInstalledEventHandler.Interface`:** -```typescript -interface SystemInstalledEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tasks.mdx b/docs/developer-docs/6.x/reference/api/tasks.mdx index f117da051..2680fdfaa 100644 --- a/docs/developer-docs/6.x/reference/api/tasks.mdx +++ b/docs/developer-docs/6.x/reference/api/tasks.mdx @@ -35,30 +35,28 @@ import { TaskDefinition } from "webiny/api/tasks"; **Interface `TaskDefinition.Interface`:** -```typescript -interface TaskDefinition.Interface { - id: string; - title: string; - description?: string; - maxIterations?: number; - databaseLogs?: boolean; - isPrivate?: boolean; - // Core run method - receives ONLY input params - // All runtime dependencies (logging, state management, etc.) come from TaskController - run(params: ITaskRunParams): Promise>; - // Optional lifecycle hooks - receive task data, no context - onBeforeTrigger?(params: ITaskBeforeTriggerParams): Promise; - onDone?(params: ITaskLifecycleHook): Promise; - onError?(params: ITaskLifecycleHook): Promise; - onAbort?(params: ITaskLifecycleHook): Promise; - onMaxIterations?(params: ITaskLifecycleHook): Promise; - // Create a validation schema for the task input. - // This will be used to validate the input before the task is triggered. - createInputValidation?( +Core TaskDefinition - minimal interface + +| Method | Description | +| ----------------------------------------------------------------------------------- | -------------------------------------------------------- | +| `id: string` | — | +| `title: string` | — | +| `description?: string` | — | +| `maxIterations?: number` | — | +| `databaseLogs?: boolean` | — | +| `isPrivate?: boolean` | — | +| `run(params: ITaskRunParams): Promise>` | Core run method - receives ONLY input params | +| All runtime dependencies (logging, state management, etc.) come from TaskController | +| `onBeforeTrigger?(params: ITaskBeforeTriggerParams): Promise` | Optional lifecycle hooks - receive task data, no context | +| `onDone?(params: ITaskLifecycleHook): Promise` | — | +| `onError?(params: ITaskLifecycleHook): Promise` | — | +| `onAbort?(params: ITaskLifecycleHook): Promise` | — | +| `onMaxIterations?(params: ITaskLifecycleHook): Promise` | — | + +| `createInputValidation?( params: ITaskCreateInputValidationParams - ): GenericRecord | zod.Schema; -} -``` + ): GenericRecord \| zod.Schema` | Create a validation schema for the task input. +This will be used to validate the input before the task is triggered. | **Types:** @@ -111,23 +109,22 @@ import { TaskService } from "webiny/api/tasks"; **Interface `TaskService.Interface`:** -```typescript -interface TaskService.Interface { - trigger: < +| Method | Description | +| ------ | ----------- | + +| `trigger: < T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends IGenericOutput = IGenericOutput >( params: ITaskTriggerParams - ) => Promise, BaseError>>; - abort: < + ) => Promise, BaseError>>` | — | +| `abort: < T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends IGenericOutput = IGenericOutput >( params: ITaskAbortParams - ) => Promise, BaseError>>; - fetchServiceInfo: (input: ITask | string) => Promise>; -} -``` + ) => Promise, BaseError>>` | — | +| `fetchServiceInfo: (input: ITask \| string) => Promise>` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tenancy.mdx b/docs/developer-docs/6.x/reference/api/tenancy.mdx index 3057751d7..c93c9c013 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.mdx +++ b/docs/developer-docs/6.x/reference/api/tenancy.mdx @@ -69,11 +69,11 @@ import { CreateTenantRepository } from "webiny/api/tenancy"; **Interface `CreateTenantRepository.Interface`:** -```typescript -interface CreateTenantRepository.Interface { - create(tenant: Tenant): Promise; -} -``` +Repository + +| Method | Description | +| ----------------------------------------- | ----------- | +| `create(tenant: Tenant): Promise` | — | **Types:** @@ -112,13 +112,14 @@ import { CreateTenantUseCase } from "webiny/api/tenancy"; **Interface `CreateTenantUseCase.Interface`:** -```typescript -interface CreateTenantUseCase.Interface { - execute( +Use Case + +| Method | Description | +| ------ | ----------- | + +| `execute( data: CreateTenantInput - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -158,11 +159,9 @@ import { DeleteTenantRepository } from "webiny/api/tenancy"; **Interface `DeleteTenantRepository.Interface`:** -```typescript -interface DeleteTenantRepository.Interface { - delete(id: string): Promise; -} -``` +| Method | Description | +| ----------------------------------- | ----------- | +| `delete(id: string): Promise` | — | **Types:** @@ -201,11 +200,9 @@ import { DeleteTenantUseCase } from "webiny/api/tenancy"; **Interface `DeleteTenantUseCase.Interface`:** -```typescript -interface DeleteTenantUseCase.Interface { - execute(id: string): Promise; -} -``` +| Method | Description | +| --------------------------------------- | ----------- | +| `execute(id: string): Promise` | — | **Types:** @@ -244,11 +241,9 @@ import { GetTenantByIdUseCase } from "webiny/api/tenancy"; **Interface `GetTenantByIdUseCase.Interface`:** -```typescript -interface GetTenantByIdUseCase.Interface { - execute(id: string): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------ | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -289,13 +284,14 @@ import { InstallTenantUseCase } from "webiny/api/tenancy"; **Interface `InstallTenantUseCase.Interface`:** -```typescript -interface InstallTenantUseCase.Interface { - execute( +Use Case Abstraction + +| Method | Description | +| ------ | ----------- | + +| `execute( input: TenantInstallationInput - ): Promise>; -} -``` + ): Promise>` | — | **Types:** @@ -336,11 +332,9 @@ import { UpdateTenantRepository } from "webiny/api/tenancy"; **Interface `UpdateTenantRepository.Interface`:** -```typescript -interface UpdateTenantRepository.Interface { - update(tenant: Tenant): Promise; -} -``` +| Method | Description | +| ----------------------------------------- | ----------- | +| `update(tenant: Tenant): Promise` | — | **Types:** @@ -379,11 +373,9 @@ import { UpdateTenantUseCase } from "webiny/api/tenancy"; **Interface `UpdateTenantUseCase.Interface`:** -```typescript -interface UpdateTenantUseCase.Interface { - execute(id: string, data: Partial): Promise>; -} -``` +| Method | Description | +| ---------------------------------------------------------------------------------------- | ----------- | +| `execute(id: string, data: Partial): Promise>` | — | **Types:** @@ -424,11 +416,9 @@ import { TenantAfterCreateEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterCreateEventHandler.Interface`:** -```typescript -interface TenantAfterCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -468,11 +458,9 @@ import { TenantAfterDeleteEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterDeleteEventHandler.Interface`:** -```typescript -interface TenantAfterDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -512,11 +500,9 @@ import { TenantAfterUpdateEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterUpdateEventHandler.Interface`:** -```typescript -interface TenantAfterUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -556,11 +542,9 @@ import { TenantBeforeCreateEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeCreateEventHandler.Interface`:** -```typescript -interface TenantBeforeCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -600,11 +584,9 @@ import { TenantBeforeDeleteEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeDeleteEventHandler.Interface`:** -```typescript -interface TenantBeforeDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -644,11 +626,9 @@ import { TenantBeforeUpdateEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeUpdateEventHandler.Interface`:** -```typescript -interface TenantBeforeUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -688,11 +668,9 @@ import { TenantInstalledEventHandler } from "webiny/api/tenancy"; **Interface `TenantInstalledEventHandler.Interface`:** -```typescript -interface TenantInstalledEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Types:** @@ -734,19 +712,17 @@ import { AppInstaller } from "webiny/api/tenancy"; **Interface `AppInstaller.Interface`:** -```typescript -interface AppInstaller.Interface { - readonly alwaysRun?: boolean; - readonly appName: string; - readonly dependsOn: string[]; - // Perform the installation - // If this succeeds, uninstall() MUST be able to revert it - install(tenant: Tenant, data: TData): Promise; - // Revert the installation - // Called if any subsequent installer fails - uninstall(tenant: Tenant): Promise; -} -``` +App Installer Abstraction + +| Method | Description | +| ------------------------------------------------------- | ------------------------ | +| `readonly alwaysRun?: boolean` | — | +| `readonly appName: string` | — | +| `readonly dependsOn: string[]` | — | +| `install(tenant: Tenant, data: TData): Promise` | Perform the installation | +| If this succeeds, uninstall() MUST be able to revert it | +| `uninstall(tenant: Tenant): Promise` | Revert the installation | +| Called if any subsequent installer fails | **Types:** @@ -785,18 +761,17 @@ import { TenantContext } from "webiny/api/tenancy"; **Interface `TenantContext.Interface`:** -```typescript -interface TenantContext.Interface { - setTenant(tenant: Tenant): void; - getTenant(): Tenant; - withRootTenant(cb: () => T): Promise; - withEachTenant( +| Method | Description | +| -------------------------------------------- | ----------- | +| `setTenant(tenant: Tenant): void` | — | +| `getTenant(): Tenant` | — | +| `withRootTenant(cb: () => T): Promise` | — | + +| `withEachTenant( tenants: Tenant[], cb: (tenant: Tenant) => Promise - ): Promise; - withTenant(tenant: Tenant, cb: (tenant: Tenant) => Promise): Promise; -} -``` + ): Promise` | — | +| `withTenant(tenant: Tenant, cb: (tenant: Tenant) => Promise): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx index a0a619a12..74d5110a8 100644 --- a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx +++ b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx @@ -38,11 +38,9 @@ import { TenantModelExtension } from "webiny/api/tenant-manager"; **Interface `TenantModelExtension.Interface`:** -```typescript -interface TenantModelExtension.Interface { - execute(extension: IExtension): void; -} -``` +| Method | Description | +| -------------------------------------- | ----------- | +| `execute(extension: IExtension): void` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx index 4286cd219..8e09061bd 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx @@ -30,11 +30,9 @@ import { NextjsConfig } from "webiny/api/website-builder/nextjs"; **Interface `NextjsConfig.Interface`:** -```typescript -interface NextjsConfig.Interface { - execute(): Promise; -} -``` +| Method | Description | +| --------------------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx index f78c7cc0b..e55aeab6a 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx @@ -79,11 +79,9 @@ import { CreatePageRevisionFromUseCase } from "webiny/api/website-builder/page"; **Interface `CreatePageRevisionFromUseCase.Interface`:** -```typescript -interface CreatePageRevisionFromUseCase.Interface { - execute(params: ICreateWbPageRevisionFromParams): Promise>; -} -``` +| Method | Description | +| ----------------------------------------------------------------------------------------- | ----------- | +| `execute(params: ICreateWbPageRevisionFromParams): Promise>` | — | **Types:** @@ -128,11 +126,9 @@ import { CreatePageUseCase } from "webiny/api/website-builder/page"; **Interface `CreatePageUseCase.Interface`:** -```typescript -interface CreatePageUseCase.Interface { - execute(data: ICreateWbPageParams): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------- | ----------- | +| `execute(data: ICreateWbPageParams): Promise>` | — | **Types:** @@ -175,11 +171,9 @@ import { DeletePageUseCase } from "webiny/api/website-builder/page"; **Interface `DeletePageUseCase.Interface`:** -```typescript -interface DeletePageUseCase.Interface { - execute(params: IDeleteWbPageParams): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------- | ----------- | +| `execute(params: IDeleteWbPageParams): Promise>` | — | **Types:** @@ -221,11 +215,9 @@ import { DuplicatePageUseCase } from "webiny/api/website-builder/page"; **Interface `DuplicatePageUseCase.Interface`:** -```typescript -interface DuplicatePageUseCase.Interface { - execute(params: IDuplicateWbPageParams): Promise>; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------- | ----------- | +| `execute(params: IDuplicateWbPageParams): Promise>` | — | **Types:** @@ -268,11 +260,11 @@ import { GetPageByIdUseCase } from "webiny/api/website-builder/page"; **Interface `GetPageByIdUseCase.Interface`:** -```typescript -interface GetPageByIdUseCase.Interface { - execute(id: string): Promise>; -} -``` +GetPageById use case interface + +| Method | Description | +| ------------------------------------------------------------ | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -314,11 +306,11 @@ import { GetPageByPathUseCase } from "webiny/api/website-builder/page"; **Interface `GetPageByPathUseCase.Interface`:** -```typescript -interface GetPageByPathUseCase.Interface { - execute(path: string): Promise>; -} -``` +GetPageByPath use case interface + +| Method | Description | +| -------------------------------------------------------------- | ----------- | +| `execute(path: string): Promise>` | — | **Types:** @@ -360,11 +352,11 @@ import { GetPageRevisionsUseCase } from "webiny/api/website-builder/page"; **Interface `GetPageRevisionsUseCase.Interface`:** -```typescript -interface GetPageRevisionsUseCase.Interface { - execute(entryId: string): Promise>; -} -``` +GetPageRevisions use case interface + +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `execute(entryId: string): Promise>` | — | **Types:** @@ -406,11 +398,11 @@ import { ListPagesUseCase } from "webiny/api/website-builder/page"; **Interface `ListPagesUseCase.Interface`:** -```typescript -interface ListPagesUseCase.Interface { - execute(params: IListPagesParams): Promise>; -} -``` +ListPages use case interface + +| Method | Description | +| ------------------------------------------------------------------------------------ | ----------- | +| `execute(params: IListPagesParams): Promise>` | — | **Types:** @@ -452,11 +444,9 @@ import { MovePageUseCase } from "webiny/api/website-builder/page"; **Interface `MovePageUseCase.Interface`:** -```typescript -interface MovePageUseCase.Interface { - execute(params: IMoveWbPageParams): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------- | ----------- | +| `execute(params: IMoveWbPageParams): Promise>` | — | **Types:** @@ -499,11 +489,9 @@ import { PublishPageUseCase } from "webiny/api/website-builder/page"; **Interface `PublishPageUseCase.Interface`:** -```typescript -interface PublishPageUseCase.Interface { - execute(params: IPublishWbPageParams): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------ | ----------- | +| `execute(params: IPublishWbPageParams): Promise>` | — | **Types:** @@ -546,11 +534,9 @@ import { UnpublishPageUseCase } from "webiny/api/website-builder/page"; **Interface `UnpublishPageUseCase.Interface`:** -```typescript -interface UnpublishPageUseCase.Interface { - execute(params: IUnpublishWbPageParams): Promise>; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------- | ----------- | +| `execute(params: IUnpublishWbPageParams): Promise>` | — | **Types:** @@ -593,11 +579,9 @@ import { UpdatePageUseCase } from "webiny/api/website-builder/page"; **Interface `UpdatePageUseCase.Interface`:** -```typescript -interface UpdatePageUseCase.Interface { - execute(id: string, data: IUpdateWbPageData): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------- | ----------- | +| `execute(id: string, data: IUpdateWbPageData): Promise>` | — | **Types:** @@ -642,11 +626,9 @@ import { PageAfterCreateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterCreateEventHandler.Interface`:** -```typescript -interface PageAfterCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterCreatePayload`:** @@ -695,11 +677,9 @@ import { PageAfterCreateRevisionFromEventHandler } from "webiny/api/website-buil **Interface `PageAfterCreateRevisionFromEventHandler.Interface`:** -```typescript -interface PageAfterCreateRevisionFromEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterCreateRevisionFromPayload`:** @@ -748,11 +728,9 @@ import { PageAfterDeleteEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterDeleteEventHandler.Interface`:** -```typescript -interface PageAfterDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterDeletePayload`:** @@ -801,11 +779,9 @@ import { PageAfterDuplicateEventHandler } from "webiny/api/website-builder/page" **Interface `PageAfterDuplicateEventHandler.Interface`:** -```typescript -interface PageAfterDuplicateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterDuplicatePayload`:** @@ -855,11 +831,9 @@ import { PageAfterMoveEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterMoveEventHandler.Interface`:** -```typescript -interface PageAfterMoveEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterMovePayload`:** @@ -910,11 +884,9 @@ import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterPublishEventHandler.Interface`:** -```typescript -interface PageAfterPublishEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterPublishPayload`:** @@ -963,11 +935,9 @@ import { PageAfterUnpublishEventHandler } from "webiny/api/website-builder/page" **Interface `PageAfterUnpublishEventHandler.Interface`:** -```typescript -interface PageAfterUnpublishEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterUnpublishPayload`:** @@ -1016,11 +986,9 @@ import { PageAfterUpdateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterUpdateEventHandler.Interface`:** -```typescript -interface PageAfterUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageAfterUpdatePayload`:** @@ -1074,11 +1042,9 @@ import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeCreateEventHandler.Interface`:** -```typescript -interface PageBeforeCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeCreatePayload`:** @@ -1127,11 +1093,9 @@ import { PageBeforeCreateRevisionFromEventHandler } from "webiny/api/website-bui **Interface `PageBeforeCreateRevisionFromEventHandler.Interface`:** -```typescript -interface PageBeforeCreateRevisionFromEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeCreateRevisionFromPayload`:** @@ -1180,11 +1144,9 @@ import { PageBeforeDeleteEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeDeleteEventHandler.Interface`:** -```typescript -interface PageBeforeDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeDeletePayload`:** @@ -1233,11 +1195,9 @@ import { PageBeforeDuplicateEventHandler } from "webiny/api/website-builder/page **Interface `PageBeforeDuplicateEventHandler.Interface`:** -```typescript -interface PageBeforeDuplicateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeDuplicatePayload`:** @@ -1286,11 +1246,9 @@ import { PageBeforeMoveEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeMoveEventHandler.Interface`:** -```typescript -interface PageBeforeMoveEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------ | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeMovePayload`:** @@ -1340,11 +1298,9 @@ import { PageBeforePublishEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforePublishEventHandler.Interface`:** -```typescript -interface PageBeforePublishEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforePublishPayload`:** @@ -1393,11 +1349,9 @@ import { PageBeforeUnpublishEventHandler } from "webiny/api/website-builder/page **Interface `PageBeforeUnpublishEventHandler.Interface`:** -```typescript -interface PageBeforeUnpublishEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeUnpublishPayload`:** @@ -1446,11 +1400,9 @@ import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeUpdateEventHandler.Interface`:** -```typescript -interface PageBeforeUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `PageBeforeUpdatePayload`:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx index c39fe8a26..907cc5fcf 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx @@ -61,11 +61,9 @@ import { CreateRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `CreateRedirectUseCase.Interface`:** -```typescript -interface CreateRedirectUseCase.Interface { - execute(data: ICreateWbRedirectData): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------------- | ----------- | +| `execute(data: ICreateWbRedirectData): Promise>` | — | **Types:** @@ -108,11 +106,9 @@ import { DeleteRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `DeleteRedirectUseCase.Interface`:** -```typescript -interface DeleteRedirectUseCase.Interface { - execute(params: IDeleteWbRedirectParams): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------- | ----------- | +| `execute(params: IDeleteWbRedirectParams): Promise>` | — | **Types:** @@ -154,11 +150,11 @@ import { GetActiveRedirectsUseCase } from "webiny/api/website-builder/redirect"; **Interface `GetActiveRedirectsUseCase.Interface`:** -```typescript -interface GetActiveRedirectsUseCase.Interface { - execute(): Promise>; -} -``` +GetActiveRedirects use case interface + +| Method | Description | +| -------------------------------------------------------- | ----------- | +| `execute(): Promise>` | — | **Types:** @@ -200,11 +196,11 @@ import { GetRedirectByIdUseCase } from "webiny/api/website-builder/redirect"; **Interface `GetRedirectByIdUseCase.Interface`:** -```typescript -interface GetRedirectByIdUseCase.Interface { - execute(id: string): Promise>; -} -``` +GetRedirectById use case interface + +| Method | Description | +| ---------------------------------------------------------------- | ----------- | +| `execute(id: string): Promise>` | — | **Types:** @@ -246,11 +242,9 @@ import { InvalidateRedirectsCacheUseCase } from "webiny/api/website-builder/redi **Interface `InvalidateRedirectsCacheUseCase.Interface`:** -```typescript -interface InvalidateRedirectsCacheUseCase.Interface { - execute(): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------ | ----------- | +| `execute(): Promise>` | — | **Types:** @@ -293,11 +287,9 @@ import { ListRedirectsUseCase } from "webiny/api/website-builder/redirect"; **Interface `ListRedirectsUseCase.Interface`:** -```typescript -interface ListRedirectsUseCase.Interface { - execute(params: ListWbRedirectsParams): Promise>; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------------------- | ----------- | +| `execute(params: ListWbRedirectsParams): Promise>` | — | **Types:** @@ -340,11 +332,9 @@ import { MoveRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `MoveRedirectUseCase.Interface`:** -```typescript -interface MoveRedirectUseCase.Interface { - execute(params: IMoveWbRedirectParams): Promise>; -} -``` +| Method | Description | +| ----------------------------------------------------------------------------------- | ----------- | +| `execute(params: IMoveWbRedirectParams): Promise>` | — | **Types:** @@ -387,11 +377,9 @@ import { UpdateRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `UpdateRedirectUseCase.Interface`:** -```typescript -interface UpdateRedirectUseCase.Interface { - execute(id: string, data: IUpdateWbRedirectData): Promise>; -} -``` +| Method | Description | +| --------------------------------------------------------------------------------------------- | ----------- | +| `execute(id: string, data: IUpdateWbRedirectData): Promise>` | — | **Types:** @@ -436,11 +424,9 @@ import { RedirectAfterCreateEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterCreateEventHandler.Interface`:** -```typescript -interface RedirectAfterCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectAfterCreatePayload`:** @@ -489,11 +475,9 @@ import { RedirectAfterDeleteEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterDeleteEventHandler.Interface`:** -```typescript -interface RedirectAfterDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectAfterDeletePayload`:** @@ -542,11 +526,9 @@ import { RedirectAfterMoveEventHandler } from "webiny/api/website-builder/redire **Interface `RedirectAfterMoveEventHandler.Interface`:** -```typescript -interface RedirectAfterMoveEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| --------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectAfterMovePayload`:** @@ -597,11 +579,9 @@ import { RedirectAfterUpdateEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterUpdateEventHandler.Interface`:** -```typescript -interface RedirectAfterUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ----------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectAfterUpdatePayload`:** @@ -655,11 +635,9 @@ import { RedirectBeforeCreateEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeCreateEventHandler.Interface`:** -```typescript -interface RedirectBeforeCreateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------ | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectBeforeCreatePayload`:** @@ -708,11 +686,9 @@ import { RedirectBeforeDeleteEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeDeleteEventHandler.Interface`:** -```typescript -interface RedirectBeforeDeleteEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------ | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectBeforeDeletePayload`:** @@ -761,11 +737,9 @@ import { RedirectBeforeMoveEventHandler } from "webiny/api/website-builder/redir **Interface `RedirectBeforeMoveEventHandler.Interface`:** -```typescript -interface RedirectBeforeMoveEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------- | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectBeforeMovePayload`:** @@ -815,11 +789,9 @@ import { RedirectBeforeUpdateEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeUpdateEventHandler.Interface`:** -```typescript -interface RedirectBeforeUpdateEventHandler.Interface { - handle(event: DomainEvent): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------ | ----------- | +| `handle(event: DomainEvent): Promise` | — | **Event payload `RedirectBeforeUpdatePayload`:** diff --git a/docs/developer-docs/6.x/reference/cli/overview.mdx b/docs/developer-docs/6.x/reference/cli/overview.mdx index dba8e26b1..d9ec4d4f5 100644 --- a/docs/developer-docs/6.x/reference/cli/overview.mdx +++ b/docs/developer-docs/6.x/reference/cli/overview.mdx @@ -35,17 +35,15 @@ import { Logger } from "webiny/cli/index"; **Interface `Logger.Interface`:** -```typescript -interface Logger.Interface { - trace(objOrMsg: object | string, ...args: any[]): void; - debug(objOrMsg: object | string, ...args: any[]): void; - info(objOrMsg: object | string, ...args: any[]): void; - warn(objOrMsg: object | string, ...args: any[]): void; - error(objOrMsg: object | string, ...args: any[]): void; - fatal(objOrMsg: object | string, ...args: any[]): void; - log(objOrMsg: object | string, ...args: any[]): void; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `trace(objOrMsg: object \| string, ...args: any[]): void` | — | +| `debug(objOrMsg: object \| string, ...args: any[]): void` | — | +| `info(objOrMsg: object \| string, ...args: any[]): void` | — | +| `warn(objOrMsg: object \| string, ...args: any[]): void` | — | +| `error(objOrMsg: object \| string, ...args: any[]): void` | — | +| `fatal(objOrMsg: object \| string, ...args: any[]): void` | — | +| `log(objOrMsg: object \| string, ...args: any[]): void` | — | **Types:** @@ -84,19 +82,17 @@ import { Ui } from "webiny/cli/index"; **Interface `Ui.Interface`:** -```typescript -interface Ui.Interface { - raw(text: string): void; - text(text: string): void; - textBold(text: string): void; - emptyLine(): void; - info(text: string, ...args: any[]): void; - success(text: string, ...args: any[]): void; - error(text: string, ...args: any[]): void; - warning(text: string, ...args: any[]): void; - debug(text: string, ...args: any[]): void; -} -``` +| Method | Description | +| --------------------------------------------- | ----------- | +| `raw(text: string): void` | — | +| `text(text: string): void` | — | +| `textBold(text: string): void` | — | +| `emptyLine(): void` | — | +| `info(text: string, ...args: any[]): void` | — | +| `success(text: string, ...args: any[]): void` | — | +| `error(text: string, ...args: any[]): void` | — | +| `warning(text: string, ...args: any[]): void` | — | +| `debug(text: string, ...args: any[]): void` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/admin.mdx b/docs/developer-docs/6.x/reference/infra/admin.mdx index b1a450ab6..7afc3c693 100644 --- a/docs/developer-docs/6.x/reference/infra/admin.mdx +++ b/docs/developer-docs/6.x/reference/infra/admin.mdx @@ -40,11 +40,9 @@ import { AdminAfterBuildHook } from "webiny/infra/admin"; **Interface `AdminAfterBuildHook.Interface`:** -```typescript -interface AdminAfterBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -84,11 +82,9 @@ import { AdminAfterDeployHook } from "webiny/infra/admin"; **Interface `AdminAfterDeployHook.Interface`:** -```typescript -interface AdminAfterDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -128,11 +124,9 @@ import { AdminBeforeBuildHook } from "webiny/infra/admin"; **Interface `AdminBeforeBuildHook.Interface`:** -```typescript -interface AdminBeforeBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -172,11 +166,9 @@ import { AdminBeforeDeployHook } from "webiny/infra/admin"; **Interface `AdminBeforeDeployHook.Interface`:** -```typescript -interface AdminBeforeDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -216,11 +208,9 @@ import { AdminBeforeWatchHook } from "webiny/infra/admin"; **Interface `AdminBeforeWatchHook.Interface`:** -```typescript -interface AdminBeforeWatchHook.Interface { - execute(params: Watch.WatchWithAppParams): void | Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------ | ----------- | +| `execute(params: Watch.WatchWithAppParams): void \| Promise` | — | **Types:** @@ -294,11 +284,9 @@ import { GetAdminStackOutput } from "webiny/infra/admin"; **Interface `GetAdminStackOutput.Interface`:** -```typescript -interface GetAdminStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/api.mdx b/docs/developer-docs/6.x/reference/infra/api.mdx index 3bf0545b9..b9437a696 100644 --- a/docs/developer-docs/6.x/reference/infra/api.mdx +++ b/docs/developer-docs/6.x/reference/infra/api.mdx @@ -40,11 +40,9 @@ import { ApiAfterBuildHook } from "webiny/infra/api"; **Interface `ApiAfterBuildHook.Interface`:** -```typescript -interface ApiAfterBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -84,11 +82,9 @@ import { ApiAfterDeployHook } from "webiny/infra/api"; **Interface `ApiAfterDeployHook.Interface`:** -```typescript -interface ApiAfterDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -128,11 +124,9 @@ import { ApiBeforeBuildHook } from "webiny/infra/api"; **Interface `ApiBeforeBuildHook.Interface`:** -```typescript -interface ApiBeforeBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -172,11 +166,9 @@ import { ApiBeforeDeployHook } from "webiny/infra/api"; **Interface `ApiBeforeDeployHook.Interface`:** -```typescript -interface ApiBeforeDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -216,11 +208,9 @@ import { ApiBeforeWatchHook } from "webiny/infra/api"; **Interface `ApiBeforeWatchHook.Interface`:** -```typescript -interface ApiBeforeWatchHook.Interface { - execute(params: Watch.WatchWithAppParams): void | Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------ | ----------- | +| `execute(params: Watch.WatchWithAppParams): void \| Promise` | — | **Types:** @@ -294,11 +284,9 @@ import { GetApiStackOutput } from "webiny/infra/api"; **Interface `GetApiStackOutput.Interface`:** -```typescript -interface GetApiStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/core.mdx b/docs/developer-docs/6.x/reference/infra/core.mdx index 29bcd455a..fc2c6fe88 100644 --- a/docs/developer-docs/6.x/reference/infra/core.mdx +++ b/docs/developer-docs/6.x/reference/infra/core.mdx @@ -39,11 +39,9 @@ import { CoreAfterBuildHook } from "webiny/infra/core"; **Interface `CoreAfterBuildHook.Interface`:** -```typescript -interface CoreAfterBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -83,11 +81,9 @@ import { CoreAfterDeployHook } from "webiny/infra/core"; **Interface `CoreAfterDeployHook.Interface`:** -```typescript -interface CoreAfterDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -127,11 +123,9 @@ import { CoreBeforeBuildHook } from "webiny/infra/core"; **Interface `CoreBeforeBuildHook.Interface`:** -```typescript -interface CoreBeforeBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -171,11 +165,9 @@ import { CoreBeforeDeployHook } from "webiny/infra/core"; **Interface `CoreBeforeDeployHook.Interface`:** -```typescript -interface CoreBeforeDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -249,11 +241,9 @@ import { GetCoreStackOutput } from "webiny/infra/core"; **Interface `GetCoreStackOutput.Interface`:** -```typescript -interface GetCoreStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------ | ----------- | +| `execute(): Promise` | — | **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/overview.mdx b/docs/developer-docs/6.x/reference/infra/overview.mdx index 33b1bff02..eb3dab715 100644 --- a/docs/developer-docs/6.x/reference/infra/overview.mdx +++ b/docs/developer-docs/6.x/reference/infra/overview.mdx @@ -46,11 +46,9 @@ import { AdminStackOutput } from "webiny/infra/index"; **Interface `AdminStackOutput.Interface`:** -```typescript -interface AdminStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| -------------------------------------------------------------------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** @@ -90,11 +88,9 @@ import { AfterBuildHook } from "webiny/infra/index"; **Interface `AfterBuildHook.Interface`:** -```typescript -interface AfterBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -134,11 +130,9 @@ import { AfterDeployHook } from "webiny/infra/index"; **Interface `AfterDeployHook.Interface`:** -```typescript -interface AfterDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -178,18 +172,17 @@ import { ApiGqlClient } from "webiny/infra/index"; **Interface `ApiGqlClient.Interface`:** -```typescript -interface ApiGqlClient.Interface { - query(params: { +| Method | Description | +| ------ | ----------- | + +| `query(params: { query: string; variables?: Record; - }): Promise>; - mutation(params: { + }): Promise>` | — | +| `mutation(params: { mutation: string; variables?: Record; - }): Promise>; -} -``` + }): Promise>` | — | **Types:** @@ -229,11 +222,9 @@ import { ApiStackOutput } from "webiny/infra/index"; **Interface `ApiStackOutput.Interface`:** -```typescript -interface ApiStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------------------------------------- | ----------- | +| `execute(): Promise` | — | **Types:** @@ -273,11 +264,9 @@ import { BeforeBuildHook } from "webiny/infra/index"; **Interface `BeforeBuildHook.Interface`:** -```typescript -interface BeforeBuildHook.Interface { - execute(params: BuildApp.Params): void | Promise; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `execute(params: BuildApp.Params): void \| Promise` | — | **Types:** @@ -317,11 +306,9 @@ import { BeforeDeployHook } from "webiny/infra/index"; **Interface `BeforeDeployHook.Interface`:** -```typescript -interface BeforeDeployHook.Interface { - execute(params: DeployApp.Params): void | Promise; -} -``` +| Method | Description | +| ---------------------------------------------------------- | ----------- | +| `execute(params: DeployApp.Params): void \| Promise` | — | **Types:** @@ -361,11 +348,9 @@ import { BeforeWatchHook } from "webiny/infra/index"; **Interface `BeforeWatchHook.Interface`:** -```typescript -interface BeforeWatchHook.Interface { - execute(params: Watch.Params): void | Promise; -} -``` +| Method | Description | +| ------------------------------------------------------ | ----------- | +| `execute(params: Watch.Params): void \| Promise` | — | **Types:** @@ -405,11 +390,9 @@ import { CoreStackOutput } from "webiny/infra/index"; **Interface `CoreStackOutput.Interface`:** -```typescript -interface CoreStackOutput.Interface { - execute(): Promise; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------ | ----------- | +| `execute(): Promise` | — | **Types:** @@ -469,11 +452,9 @@ import { InvokeLambdaFunction } from "webiny/infra/index"; **Interface `InvokeLambdaFunction.Interface`:** -```typescript -interface InvokeLambdaFunction.Interface { - execute(params: IInvokeLambdaFunctionParams): Promise>; -} -``` +| Method | Description | +| ------------------------------------------------------------------------------------------------ | ----------- | +| `execute(params: IInvokeLambdaFunctionParams): Promise>` | — | **Types:** @@ -514,17 +495,15 @@ import { Logger } from "webiny/infra/index"; **Interface `Logger.Interface`:** -```typescript -interface Logger.Interface { - trace(objOrMsg: object | string, ...args: any[]): void; - debug(objOrMsg: object | string, ...args: any[]): void; - info(objOrMsg: object | string, ...args: any[]): void; - warn(objOrMsg: object | string, ...args: any[]): void; - error(objOrMsg: object | string, ...args: any[]): void; - fatal(objOrMsg: object | string, ...args: any[]): void; - log(objOrMsg: object | string, ...args: any[]): void; -} -``` +| Method | Description | +| --------------------------------------------------------- | ----------- | +| `trace(objOrMsg: object \| string, ...args: any[]): void` | — | +| `debug(objOrMsg: object \| string, ...args: any[]): void` | — | +| `info(objOrMsg: object \| string, ...args: any[]): void` | — | +| `warn(objOrMsg: object \| string, ...args: any[]): void` | — | +| `error(objOrMsg: object \| string, ...args: any[]): void` | — | +| `fatal(objOrMsg: object \| string, ...args: any[]): void` | — | +| `log(objOrMsg: object \| string, ...args: any[]): void` | — | **Types:** @@ -563,19 +542,17 @@ import { Ui } from "webiny/infra/index"; **Interface `Ui.Interface`:** -```typescript -interface Ui.Interface { - raw(text: string): void; - text(text: string): void; - textBold(text: string): void; - emptyLine(): void; - info(text: string, ...args: any[]): void; - success(text: string, ...args: any[]): void; - error(text: string, ...args: any[]): void; - warning(text: string, ...args: any[]): void; - debug(text: string, ...args: any[]): void; -} -``` +| Method | Description | +| --------------------------------------------- | ----------- | +| `raw(text: string): void` | — | +| `text(text: string): void` | — | +| `textBold(text: string): void` | — | +| `emptyLine(): void` | — | +| `info(text: string, ...args: any[]): void` | — | +| `success(text: string, ...args: any[]): void` | — | +| `error(text: string, ...args: any[]): void` | — | +| `warning(text: string, ...args: any[]): void` | — | +| `debug(text: string, ...args: any[]): void` | — | **Types:** diff --git a/scripts/generate-reference.ts b/scripts/generate-reference.ts index daaaea29d..b6896e899 100644 --- a/scripts/generate-reference.ts +++ b/scripts/generate-reference.ts @@ -93,6 +93,8 @@ interface ExtractedSymbol { abstractionKind?: AbstractionKind; /** The resolved Interface members (from IFoo that createAbstraction wraps) */ interfaceMembers?: InterfaceMember[]; + /** JSDoc on the IFoo interface itself (description paragraph) */ + interfaceJsDoc?: string; /** Resolved namespace type members: Interface, Input, Return, Error, Event, etc. */ namespaceTypes?: NamespaceMember[]; /** For eventHandler: the payload fields of the event */ @@ -360,16 +362,21 @@ function getIsolatedProject(): Project { /** * Search a source file (and any files it re-exports from) for an interface by name. - * Returns the interface members, or [] if not found. + * Returns the interface members and interface-level JSDoc, or empty if not found. */ +interface InterfaceResult { + members: InterfaceMember[]; + jsDoc: string; +} + function extractInterfaceMembers( sf: SourceFile, interfaceName: string, pkgMap?: Map, visited = new Set() -): InterfaceMember[] { +): InterfaceResult { const filePath = sf.getFilePath(); - if (visited.has(filePath)) return []; + if (visited.has(filePath)) return { members: [], jsDoc: "" }; visited.add(filePath); // Search all interfaces in this file @@ -380,23 +387,29 @@ function extractInterfaceMembers( const iface = allIfaces.find(i => i.getName() === interfaceName); if (iface) { - return iface.getMembers().map(m => ({ - signature: m.getText().trim().replace(/;$/, ""), - jsDoc: extractJsDoc(m) - })); + return { + members: iface.getMembers().map(m => ({ + signature: m.getText().trim().replace(/;$/, ""), + jsDoc: extractJsDoc(m) + })), + jsDoc: extractJsDoc(iface) + }; } - // Raw text fallback for this file + // Raw text fallback for this file (no JSDoc available here) const src = sf.getFullText(); const rawMatch = src.match( new RegExp(`interface\\s+${interfaceName}\\s*(?:<[^{]*>)?\\s*\\{([^}]+)\\}`) ); if (rawMatch) { - return rawMatch[1] - .split("\n") - .map(l => l.trim()) - .filter(l => l && !l.startsWith("//") && l !== "{" && l !== "}") - .map(l => ({ signature: l.replace(/;$/, ""), jsDoc: "" })); + return { + members: rawMatch[1] + .split("\n") + .map(l => l.trim()) + .filter(l => l && !l.startsWith("//") && l !== "{" && l !== "}") + .map(l => ({ signature: l.replace(/;$/, ""), jsDoc: "" })), + jsDoc: "" + }; } // Follow re-exports into sibling files (handles index.ts -> abstractions.ts pattern) @@ -407,7 +420,6 @@ function extractInterfaceMembers( let resolvedPath: string | null = null; if (modSpec.startsWith(".")) { - // Relative import — resolve relative to this file's directory const dir = sf.getDirectoryPath(); resolvedPath = join(dir, modSpec.replace(/\.js$/, ".ts")); } else { @@ -419,14 +431,14 @@ function extractInterfaceMembers( try { const siblingSf = sf.getProject().addSourceFileAtPath(resolvedPath); const result = extractInterfaceMembers(siblingSf, interfaceName, pkgMap, visited); - if (result.length > 0) return result; + if (result.members.length > 0) return result; } catch { continue; } } } - return []; + return { members: [], jsDoc: "" }; } /** Extract fields from an interface declaration as EventPayloadField[] */ @@ -682,6 +694,7 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { const eventPayloadFields: EventPayloadField[] = []; let eventTypeName: string | undefined; let eventPayloadName: string | undefined; + let interfaceJsDoc: string | undefined; if (abstractionKind === "eventHandler") { // IEventHandler or IEventHandler> @@ -707,9 +720,13 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { jsDoc: "" }); } else { - // useCase or service — resolve the IFoo interface, following re-exports - const resolved = extractInterfaceMembers(sf, genericArg, PKG_MAP); - interfaceMembers.push(...resolved); + // useCase or service — resolve the IFoo interface. + // Start from the file where createAbstraction is actually defined + // (which may be a deep source file, not the barrel re-exporting it). + const nodeSf = node.getSourceFile(); + const resolved = extractInterfaceMembers(nodeSf, genericArg, PKG_MAP); + interfaceMembers.push(...resolved.members); + if (resolved.jsDoc) interfaceJsDoc = resolved.jsDoc; } // Extract namespace types — first try the co-located nsDecl, then search by name @@ -741,6 +758,7 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { sourceFile: sf.getFilePath(), abstractionKind, interfaceMembers, + interfaceJsDoc, namespaceTypes, eventPayloadFields, eventTypeName, @@ -1086,22 +1104,21 @@ function renderSymbolSection( // Abstraction: rich rendering // ------------------------------------------------------------------------- if (sym.kind === "abstraction") { - // Interface section + // Interface section — description paragraph + method table if (sym.interfaceMembers && sym.interfaceMembers.length > 0) { lines.push(`**Interface \`${sym.name}.Interface\`:**`); lines.push(""); - lines.push("```typescript"); - lines.push(`interface ${sym.name}.Interface {`); + if (sym.interfaceJsDoc) { + lines.push(sym.interfaceJsDoc); + lines.push(""); + } + lines.push("| Method | Description |"); + lines.push("| ------ | ----------- |"); for (const m of sym.interfaceMembers) { - if (m.jsDoc) { - for (const docLine of m.jsDoc.split("\n")) { - lines.push(` // ${docLine}`); - } - } - lines.push(` ${m.signature};`); + const sig = m.signature.replace(/\|/g, "\\|"); + const desc = m.jsDoc ? m.jsDoc.replace(/\|/g, "\\|") : "—"; + lines.push(`| \`${sig}\` | ${desc} |`); } - lines.push("}"); - lines.push("```"); lines.push(""); } From fa326965dd554a7b037aaf3e8e34fc8775cd558c Mon Sep 17 00:00:00 2001 From: adrians5j Date: Thu, 12 Mar 2026 21:01:15 +0100 Subject: [PATCH 11/13] wip:12 (wgus1) --- .../deploy-webiny-project-cf-template.ai.txt | 40 ++ .../deploy-webiny-project-cf-template.mdx | 26 + docs/developer-docs/6.x/navigation.tsx | 8 +- docs/developer-docs/6.x/reference/admin.mdx | 26 +- .../6.x/reference/admin/build-params.mdx | 18 +- .../6.x/reference/admin/graphql-client.mdx | 8 +- .../6.x/reference/admin/security.mdx | 52 +- .../6.x/reference/api/build-params.mdx | 18 +- .../6.x/reference/api/cms/entry.mdx | 551 ++++++++++-------- .../6.x/reference/api/cms/group.mdx | 96 +-- .../6.x/reference/api/cms/model.mdx | 138 +++-- .../6.x/reference/api/graphql.mdx | 8 +- .../6.x/reference/api/key-value-store.mdx | 31 +- .../6.x/reference/api/logger.mdx | 30 +- .../6.x/reference/api/security.mdx | 91 +-- .../6.x/reference/api/security/api-key.mdx | 104 ++-- .../reference/api/security/authentication.mdx | 16 +- .../6.x/reference/api/security/role.mdx | 91 +-- .../6.x/reference/api/security/user.mdx | 96 +-- .../6.x/reference/api/system.mdx | 28 +- .../6.x/reference/api/tasks.mdx | 68 ++- .../6.x/reference/api/tenancy.mdx | 165 ++++-- .../6.x/reference/api/tenant-manager.mdx | 8 +- .../reference/api/website-builder/nextjs.mdx | 8 +- .../reference/api/website-builder/page.mdx | 224 ++++--- .../api/website-builder/redirect.mdx | 128 ++-- .../6.x/reference/cli/overview.mdx | 44 +- .../6.x/reference/infra/admin.mdx | 48 +- .../6.x/reference/infra/api.mdx | 48 +- .../6.x/reference/infra/core.mdx | 40 +- .../6.x/reference/infra/overview.mdx | 131 +++-- img.png | Bin 0 -> 68044 bytes img_1.png | Bin 0 -> 87082 bytes scripts/generate-reference.ts | 243 +++++++- 34 files changed, 1714 insertions(+), 917 deletions(-) create mode 100644 docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.ai.txt create mode 100644 docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx create mode 100644 img.png create mode 100644 img_1.png diff --git a/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.ai.txt b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.ai.txt new file mode 100644 index 000000000..3d1cd13d5 --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.ai.txt @@ -0,0 +1,40 @@ +AI Context: "Deploy Webiny Project" AWS CloudFormation Template (deploy-webiny-project-cf-template.mdx) + +## Source of Information + +1. `docs/developer-docs/5.x/infrastructure/aws/configure-aws-credentials.mdx` lines 116-149 — the "Deploy Webiny Project" section extracted from the v5 credentials article + +## Key Documentation Decisions + +1. This is a standalone article scoped only to the CloudFormation template — credential setup is out of scope +2. Kept short: the template does one thing (provisions least-privilege IAM groups), one click to launch it +3. Removed the commented-out screenshots from v5 (outdated, explicitly commented out in source) +4. ExternalLink component not used — standard markdown links are sufficient for external URLs +5. Prerequisite (IAM user with programmatic access) noted via Alert rather than linking back to a credential setup article + +## Understanding + +### What the template does + +- Provisions three IAM user groups with least-privilege permissions scoped to what Webiny deployment requires +- Links the groups to a preexisting IAM user of the deployer's choosing +- Alternative to granting full AdministratorAccess + +### Launch URL + +https://console.aws.amazon.com/cloudformation/home?#/stacks/create/review?templateURL=https://webiny-public.s3.us-east-2.amazonaws.com/cloudformation/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE.yaml&stackName=DeployWebinyProject + +### Template source + +- GitHub: https://github.com/webiny/webiny-js/blob/next/docs/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE.yaml +- S3: https://webiny-public.s3.us-east-2.amazonaws.com/cloudformation/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE.yaml + +## Related Documents + +- `infrastructure/introduction.mdx` — infrastructure overview +- `infrastructure/deployment-modes.mdx` — deployment modes + +## Tone Guidelines + +- Practical and brief — this is a how-to with a single action +- No step-by-step AWS console walkthrough (out of scope) diff --git a/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx new file mode 100644 index 000000000..8289fd18b --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx @@ -0,0 +1,26 @@ +--- +id: infra6cft1 +title: '"Deploy Webiny Project" AWS CloudFormation Template' +description: Use the official AWS CloudFormation template to deploy Webiny with a least-privilege IAM role. +--- + +import { Alert } from "@/components/Alert"; + + + +- What the "Deploy Webiny Project" CloudFormation template is +- How to deploy it into your AWS account + + + +## Overview + +The **Deploy Webiny Project** AWS CloudFormation template is the recommended way to set up the IAM permissions needed to deploy Webiny. It creates an IAM role with three attached managed policies that follow the [principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege). + +You can inspect the full template before deploying: [view on GitHub](https://github.com/webiny/webiny-js/blob/next/docs/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE_V6.yaml). + +## Deploying the Template + +Click the link below to open the AWS CloudFormation console with the template pre-loaded and deploy it into your AWS account: + +[Launch "Deploy Webiny Project" stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/review?templateURL=https://raw.githubusercontent.com/webiny/webiny-js/refs/heads/next/docs/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE_V6.yaml&stackName=DeployWebinyProject) diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index c86f0662e..ff54a10c8 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -126,13 +126,17 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { - + + (key: string): T \| null` | — | +```typescript +interface BuildParams.Interface { + get(key: string): T | null; +} +``` **Types:** @@ -217,9 +221,11 @@ import { NetworkErrorEventHandler } from "webiny/admin"; **Interface `NetworkErrorEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------- | ----------- | -| `handle(event: NetworkErrorEvent): Promise` | — | +```typescript +interface NetworkErrorEventHandler.Interface { + handle(event: NetworkErrorEvent): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/build-params.mdx b/docs/developer-docs/6.x/reference/admin/build-params.mdx index 731f5632a..c0ea63ccf 100644 --- a/docs/developer-docs/6.x/reference/admin/build-params.mdx +++ b/docs/developer-docs/6.x/reference/admin/build-params.mdx @@ -35,10 +35,12 @@ import { BuildParam } from "webiny/admin/build-params"; **Interface `BuildParam.Interface`:** -| Method | Description | -| ------------- | ----------- | -| `key: string` | — | -| `value: any` | — | +```typescript +interface BuildParam.Interface { + key: string; + value: any; +} +``` **Types:** @@ -77,9 +79,11 @@ import { BuildParams } from "webiny/admin/build-params"; **Interface `BuildParams.Interface`:** -| Method | Description | -| -------------------------------------- | ----------- | -| `get(key: string): T \| null` | — | +```typescript +interface BuildParams.Interface { + get(key: string): T | null; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx index 2333ccf31..c7494f3d6 100644 --- a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx +++ b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx @@ -30,9 +30,11 @@ import { GraphQLClient } from "webiny/admin/graphql-client"; **Interface `GraphQLClient.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------------ | ----------- | -| `execute(params: GraphQLRequest): Promise` | — | +```typescript +interface GraphQLClient.Interface { + execute(params: GraphQLRequest): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/admin/security.mdx b/docs/developer-docs/6.x/reference/admin/security.mdx index 0c34e6567..33835881d 100644 --- a/docs/developer-docs/6.x/reference/admin/security.mdx +++ b/docs/developer-docs/6.x/reference/admin/security.mdx @@ -78,13 +78,15 @@ import { AuthenticationContext } from "webiny/admin/security"; **Interface `AuthenticationContext.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `clear(): void` | — | -| `getIdToken: IIdTokenProvider` | — | -| `setIdTokenProvider(provider: IIdTokenProvider): void` | — | -| `setLogoutCallback(callback: ILogoutCallback): void` | — | -| `getLogoutCallback(): ILogoutCallback` | — | +```typescript +interface AuthenticationContext.Interface { + clear(): void; + getIdToken: IIdTokenProvider; + setIdTokenProvider(provider: IIdTokenProvider): void; + setLogoutCallback(callback: ILogoutCallback): void; + getLogoutCallback(): ILogoutCallback; +} +``` **Types:** @@ -125,9 +127,11 @@ import { AuthenticationErrorEventHandler } from "webiny/admin/security"; **Interface `AuthenticationErrorEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------- | ----------- | -| `handle(event: AuthenticationErrorEvent): Promise` | — | +```typescript +interface AuthenticationErrorEventHandler.Interface { + handle(event: AuthenticationErrorEvent): Promise; +} +``` **Types:** @@ -167,11 +171,13 @@ import { IdentityContext } from "webiny/admin/security"; **Interface `IdentityContext.Interface`:** -| Method | Description | -| --------------------------------------- | ----------- | -| `getIdentity(): Identity` | — | -| `setIdentity(identity: Identity): void` | — | -| `clear(): void` | — | +```typescript +interface IdentityContext.Interface { + getIdentity(): Identity; + setIdentity(identity: Identity): void; + clear(): void; +} +``` **Types:** @@ -210,9 +216,11 @@ import { LogInUseCase } from "webiny/admin/security"; **Interface `LogInUseCase.Interface`:** -| Method | Description | -| ---------------------------------------------- | ----------- | -| `execute(params: ILoginParams): Promise` | — | +```typescript +interface LogInUseCase.Interface { + execute(params: ILoginParams): Promise; +} +``` **Types:** @@ -252,9 +260,11 @@ import { LogOutUseCase } from "webiny/admin/security"; **Interface `LogOutUseCase.Interface`:** -| Method | Description | -| -------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface LogOutUseCase.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/build-params.mdx b/docs/developer-docs/6.x/reference/api/build-params.mdx index 03e01dd00..3c1dad99e 100644 --- a/docs/developer-docs/6.x/reference/api/build-params.mdx +++ b/docs/developer-docs/6.x/reference/api/build-params.mdx @@ -35,10 +35,12 @@ import { BuildParam } from "webiny/api/build-params"; **Interface `BuildParam.Interface`:** -| Method | Description | -| ------------- | ----------- | -| `key: string` | — | -| `value: any` | — | +```typescript +interface BuildParam.Interface { + key: string; + value: any; +} +``` **Types:** @@ -77,9 +79,11 @@ import { BuildParams } from "webiny/api/build-params"; **Interface `BuildParams.Interface`:** -| Method | Description | -| -------------------------------------- | ----------- | -| `get(key: string): T \| null` | — | +```typescript +interface BuildParams.Interface { + get(key: string): T | null; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/entry.mdx b/docs/developer-docs/6.x/reference/api/cms/entry.mdx index 9a4c5efcf..b041ab1cc 100644 --- a/docs/developer-docs/6.x/reference/api/cms/entry.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/entry.mdx @@ -166,15 +166,16 @@ import { CreateEntryRevisionFromUseCase } from "webiny/api/cms/entry"; CreateEntryRevisionFrom Use Case - Creates a new revision from an existing entry. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface CreateEntryRevisionFromUseCase.Interface { + execute( model: CmsModel, sourceId: string, input: CreateCmsEntryInput, options?: CreateCmsEntryOptionsInput - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -221,14 +222,15 @@ import { CreateEntryUseCase } from "webiny/api/cms/entry"; CreateEntry Use Case -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface CreateEntryUseCase.Interface { + execute( model: CmsModel, input: CreateCmsEntryInput, options?: CreateCmsEntryOptionsInput - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -274,9 +276,11 @@ import { DeleteEntryRevisionUseCase } from "webiny/api/cms/entry"; DeleteEntryRevision Use Case - Deletes a specific revision of an entry. Handles special cases like deleting the latest revision. -| Method | Description | -| ----------------------------------------------------------------------------------- | ----------- | -| `execute(model: CmsModel, revisionId: string): Promise>` | — | +```typescript +interface DeleteEntryRevisionUseCase.Interface { + execute(model: CmsModel, revisionId: string): Promise>; +} +``` **Types:** @@ -320,14 +324,15 @@ import { DeleteEntryUseCase } from "webiny/api/cms/entry"; DeleteEntry Use Case - Permanently deletes an entry from the database. This is a hard delete that removes all traces of the entry. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface DeleteEntryUseCase.Interface { + execute( model: CmsModel, id: string, options?: CmsDeleteEntryOptions - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -369,13 +374,14 @@ import { DeleteMultipleEntriesUseCase } from "webiny/api/cms/entry"; **Interface `DeleteMultipleEntriesUseCase.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface DeleteMultipleEntriesUseCase.Interface { + execute( model: CmsModel, params: IDeleteMultipleEntriesUseCaseParams - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -422,13 +428,14 @@ import { GetEntriesByIdsUseCase } from "webiny/api/cms/entry"; GetEntriesByIds Use Case - Fetches multiple entries by their exact revision IDs. Returns array of entries (excludes deleted entries via decorator). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetEntriesByIdsUseCase.Interface { + execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>` | — | + ): Promise[], UseCaseError>>; +} +``` **Types:** @@ -472,13 +479,14 @@ import { GetEntryByIdUseCase } from "webiny/api/cms/entry"; GetEntryById Use Case - Fetches a single entry by its exact revision ID. Returns entry or fails with EntryNotFoundError if not found or deleted. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetEntryByIdUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -522,13 +530,14 @@ import { GetEntryUseCase } from "webiny/api/cms/entry"; GetEntry Use Case - Gets a single entry by query parameters (where + sort). Uses list operation with limit 1 and returns first result or NotFoundError. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetEntryUseCase.Interface { + execute( model: CmsModel, params: CmsEntryGetParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -573,13 +582,14 @@ import { GetLatestDeletedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; Base internal use case - returns entry regardless of deleted state. This is used internally by the three public variations. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetLatestDeletedRevisionByEntryIdUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -626,13 +636,14 @@ import { GetLatestEntriesByIdsUseCase } from "webiny/api/cms/entry"; GetLatestEntriesByIds Use Case - Fetches latest revisions by entry IDs. Returns array of latest entries (excludes deleted entries via decorator). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetLatestEntriesByIdsUseCase.Interface { + execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>` | — | + ): Promise[], UseCaseError>>; +} +``` **Types:** @@ -678,13 +689,14 @@ import { GetLatestRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; Base internal use case - returns entry regardless of deleted state. This is used internally by the three public variations. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetLatestRevisionByEntryIdBaseUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -731,13 +743,14 @@ import { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from "webiny/api/cm Base internal use case - returns entry regardless of deleted state. This is used internally by the three public variations. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -784,13 +797,14 @@ import { GetLatestRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; Base internal use case - returns entry regardless of deleted state. This is used internally by the three public variations. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetLatestRevisionByEntryIdUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetLatestRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -837,13 +851,14 @@ import { GetPreviousRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; Base internal use case - returns entry regardless of deleted state. This is used internally by the public variation. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetPreviousRevisionByEntryIdBaseUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetPreviousRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -890,13 +905,14 @@ import { GetPreviousRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; Base internal use case - returns entry regardless of deleted state. This is used internally by the public variation. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetPreviousRevisionByEntryIdUseCase.Interface { + execute( model: CmsModel, params: CmsEntryStorageOperationsGetPreviousRevisionParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -943,13 +959,14 @@ import { GetPublishedEntriesByIdsUseCase } from "webiny/api/cms/entry"; GetPublishedEntriesByIds Use Case - Fetches published revisions by entry IDs. Returns array of published entries (excludes deleted entries via decorator). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetPublishedEntriesByIdsUseCase.Interface { + execute( model: CmsModel, ids: string[] - ): Promise[], UseCaseError>>` | — | + ): Promise[], UseCaseError>>; +} +``` **Types:** @@ -994,13 +1011,14 @@ import { GetPublishedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; GetPublishedRevisionByEntryId Use Case -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetPublishedRevisionByEntryIdUseCase.Interface { + execute( model: CmsModel, entryId: string - ): Promise \| null, UseCaseError>>` | — | + ): Promise | null, UseCaseError>>; +} +``` **Types:** @@ -1046,13 +1064,14 @@ import { GetRevisionByIdUseCase } from "webiny/api/cms/entry"; GetRevisionById Use Case - Fetches a specific entry revision by ID. Returns the entry or fails with EntryNotFoundError if not found or deleted. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetRevisionByIdUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1096,13 +1115,14 @@ import { GetRevisionsByEntryIdUseCase } from "webiny/api/cms/entry"; GetRevisionsByEntryId Use Case - Fetches all revisions for a given entry ID. Returns array of entry revisions. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetRevisionsByEntryIdUseCase.Interface { + execute( model: CmsModel, entryId: string - ): Promise[], UseCaseError>>` | — | + ): Promise[], UseCaseError>>; +} +``` **Types:** @@ -1149,12 +1169,13 @@ GetSingletonEntry Use Case Gets the singleton entry for a model, creating it if it doesn't exist. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface GetSingletonEntryUseCase.Interface { + execute( model: CmsModel - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1197,13 +1218,14 @@ import { ListDeletedEntriesUseCase } from "webiny/api/cms/entry"; ListDeletedEntries Use Case - Lists deleted entries (manage API). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface ListDeletedEntriesUseCase.Interface { + execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1248,13 +1270,14 @@ import { ListEntriesUseCase } from "webiny/api/cms/entry"; Base ListEntries Use Case - Internal base use case for listing entries. Used by specific variants (Latest, Published, Deleted). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface ListEntriesUseCase.Interface { + execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1298,13 +1321,14 @@ import { ListLatestEntriesUseCase } from "webiny/api/cms/entry"; ListLatestEntries Use Case - Lists latest entries (manage API). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface ListLatestEntriesUseCase.Interface { + execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1348,13 +1372,14 @@ import { ListPublishedEntriesUseCase } from "webiny/api/cms/entry"; ListPublishedEntries Use Case - Lists published entries (read API). -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface ListPublishedEntriesUseCase.Interface { + execute( model: CmsModel, params?: CmsEntryListParams - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1399,9 +1424,11 @@ import { MoveEntryToBinUseCase } from "webiny/api/cms/entry"; MoveEntryToBin Use Case - Soft deletes an entry by marking it as deleted. This moves the entry to the bin (trash) instead of permanently deleting it. -| Method | Description | -| --------------------------------------------------------------------------- | ----------- | -| `execute(model: CmsModel, id: string): Promise>` | — | +```typescript +interface MoveEntryToBinUseCase.Interface { + execute(model: CmsModel, id: string): Promise>; +} +``` **Types:** @@ -1443,14 +1470,15 @@ import { MoveEntryUseCase } from "webiny/api/cms/entry"; MoveEntry Use Case - Moves an entry to a different folder. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface MoveEntryUseCase.Interface { + execute( model: CmsModel, id: string, folderId: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1493,13 +1521,14 @@ import { PublishEntryUseCase } from "webiny/api/cms/entry"; PublishEntry Use Case - Publishes an entry revision. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface PublishEntryUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1543,13 +1572,14 @@ import { RepublishEntryUseCase } from "webiny/api/cms/entry"; RepublishEntry Use Case - Republishes an already published entry. This updates the entry and publishes it again. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface RepublishEntryUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1593,13 +1623,14 @@ import { RestoreEntryFromBinUseCase } from "webiny/api/cms/entry"; RestoreEntryFromBin Use Case - Restores a soft-deleted entry from the bin. This clears the wbyDeleted flag and restores the entry to its original folder. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface RestoreEntryFromBinUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1642,13 +1673,14 @@ import { UnpublishEntryUseCase } from "webiny/api/cms/entry"; UnpublishEntry Use Case -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface UnpublishEntryUseCase.Interface { + execute( model: CmsModel, id: string - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1691,16 +1723,17 @@ import { UpdateEntryUseCase } from "webiny/api/cms/entry"; UpdateEntry Use Case -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface UpdateEntryUseCase.Interface { + execute( model: CmsModel, id: string, input: UpdateCmsEntryInput, metaInput?: GenericRecord, options?: UpdateCmsEntryOptionsInput - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1748,14 +1781,15 @@ UpdateSingletonEntry Use Case Updates the singleton entry for a model. -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface UpdateSingletonEntryUseCase.Interface { + execute( model: CmsModel, data: UpdateCmsEntryInput, options?: UpdateCmsEntryOptionsInput - ): Promise, UseCaseError>>` | — | + ): Promise, UseCaseError>>; +} +``` **Types:** @@ -1798,14 +1832,15 @@ import { ValidateEntryUseCase } from "webiny/api/cms/entry"; **Interface `ValidateEntryUseCase.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface ValidateEntryUseCase.Interface { + execute( model: CmsModel, - id: string \| null \| undefined, + id: string | null | undefined, input: UpdateCmsEntryInput - ): IValidateEntryUseCaseExecuteResult` | — | + ): IValidateEntryUseCaseExecuteResult; +} +``` **Types:** @@ -1849,9 +1884,11 @@ import { EntryAfterCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: EntryAfterCreateEvent): Promise` | — | +```typescript +interface EntryAfterCreateEventHandler.Interface { + handle(event: EntryAfterCreateEvent): Promise; +} +``` **Event payload `EntryAfterCreateEventPayload`:** @@ -1901,9 +1938,11 @@ import { EntryAfterDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: EntryAfterDeleteEvent): Promise` | — | +```typescript +interface EntryAfterDeleteEventHandler.Interface { + handle(event: EntryAfterDeleteEvent): Promise; +} +``` **Types:** @@ -1943,9 +1982,11 @@ import { EntryAfterDeleteMultipleEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterDeleteMultipleEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `handle(event: EntryAfterDeleteMultipleEvent): Promise` | — | +```typescript +interface EntryAfterDeleteMultipleEventHandler.Interface { + handle(event: EntryAfterDeleteMultipleEvent): Promise; +} +``` **Types:** @@ -1985,9 +2026,11 @@ import { EntryAfterMoveEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterMoveEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------- | ----------- | -| `handle(event: EntryAfterMoveEvent): Promise` | — | +```typescript +interface EntryAfterMoveEventHandler.Interface { + handle(event: EntryAfterMoveEvent): Promise; +} +``` **Types:** @@ -2027,9 +2070,11 @@ import { EntryAfterPublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterPublishEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: EntryAfterPublishEvent): Promise` | — | +```typescript +interface EntryAfterPublishEventHandler.Interface { + handle(event: EntryAfterPublishEvent): Promise; +} +``` **Types:** @@ -2069,9 +2114,11 @@ import { EntryAfterRepublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterRepublishEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------- | ----------- | -| `handle(event: EntryAfterRepublishEvent): Promise` | — | +```typescript +interface EntryAfterRepublishEventHandler.Interface { + handle(event: EntryAfterRepublishEvent): Promise; +} +``` **Types:** @@ -2111,9 +2158,11 @@ import { EntryAfterRestoreFromBinEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterRestoreFromBinEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `handle(event: EntryAfterRestoreFromBinEvent): Promise` | — | +```typescript +interface EntryAfterRestoreFromBinEventHandler.Interface { + handle(event: EntryAfterRestoreFromBinEvent): Promise; +} +``` **Types:** @@ -2153,9 +2202,11 @@ import { EntryAfterUnpublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterUnpublishEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------- | ----------- | -| `handle(event: EntryAfterUnpublishEvent): Promise` | — | +```typescript +interface EntryAfterUnpublishEventHandler.Interface { + handle(event: EntryAfterUnpublishEvent): Promise; +} +``` **Event payload `EntryAfterUnpublishEventPayload`:** @@ -2205,9 +2256,11 @@ import { EntryAfterUpdateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: EntryAfterUpdateEvent): Promise` | — | +```typescript +interface EntryAfterUpdateEventHandler.Interface { + handle(event: EntryAfterUpdateEvent): Promise; +} +``` **Event payload `EntryAfterUpdateEventPayload`:** @@ -2258,9 +2311,11 @@ import { EntryBeforeCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: EntryBeforeCreateEvent): Promise` | — | +```typescript +interface EntryBeforeCreateEventHandler.Interface { + handle(event: EntryBeforeCreateEvent): Promise; +} +``` **Event payload `EntryBeforeCreateEventPayload`:** @@ -2310,9 +2365,11 @@ import { EntryBeforeDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: EntryBeforeDeleteEvent): Promise` | — | +```typescript +interface EntryBeforeDeleteEventHandler.Interface { + handle(event: EntryBeforeDeleteEvent): Promise; +} +``` **Types:** @@ -2352,9 +2409,11 @@ import { EntryBeforeDeleteMultipleEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeDeleteMultipleEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------- | ----------- | -| `handle(event: EntryBeforeDeleteMultipleEvent): Promise` | — | +```typescript +interface EntryBeforeDeleteMultipleEventHandler.Interface { + handle(event: EntryBeforeDeleteMultipleEvent): Promise; +} +``` **Types:** @@ -2394,9 +2453,11 @@ import { EntryBeforeMoveEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeMoveEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: EntryBeforeMoveEvent): Promise` | — | +```typescript +interface EntryBeforeMoveEventHandler.Interface { + handle(event: EntryBeforeMoveEvent): Promise; +} +``` **Types:** @@ -2436,9 +2497,11 @@ import { EntryBeforePublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforePublishEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------- | ----------- | -| `handle(event: EntryBeforePublishEvent): Promise` | — | +```typescript +interface EntryBeforePublishEventHandler.Interface { + handle(event: EntryBeforePublishEvent): Promise; +} +``` **Types:** @@ -2478,9 +2541,11 @@ import { EntryBeforeRepublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeRepublishEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `handle(event: EntryBeforeRepublishEvent): Promise` | — | +```typescript +interface EntryBeforeRepublishEventHandler.Interface { + handle(event: EntryBeforeRepublishEvent): Promise; +} +``` **Types:** @@ -2520,9 +2585,11 @@ import { EntryBeforeRestoreFromBinEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeRestoreFromBinEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------- | ----------- | -| `handle(event: EntryBeforeRestoreFromBinEvent): Promise` | — | +```typescript +interface EntryBeforeRestoreFromBinEventHandler.Interface { + handle(event: EntryBeforeRestoreFromBinEvent): Promise; +} +``` **Types:** @@ -2562,9 +2629,11 @@ import { EntryBeforeUnpublishEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeUnpublishEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `handle(event: EntryBeforeUnpublishEvent): Promise` | — | +```typescript +interface EntryBeforeUnpublishEventHandler.Interface { + handle(event: EntryBeforeUnpublishEvent): Promise; +} +``` **Event payload `EntryBeforeUnpublishEventPayload`:** @@ -2613,9 +2682,11 @@ import { EntryBeforeUpdateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: EntryBeforeUpdateEvent): Promise` | — | +```typescript +interface EntryBeforeUpdateEventHandler.Interface { + handle(event: EntryBeforeUpdateEvent): Promise; +} +``` **Event payload `EntryBeforeUpdateEventPayload`:** @@ -2666,9 +2737,11 @@ import { EntryRevisionAfterCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionAfterCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `handle(event: EntryRevisionAfterCreateEvent): Promise` | — | +```typescript +interface EntryRevisionAfterCreateEventHandler.Interface { + handle(event: EntryRevisionAfterCreateEvent): Promise; +} +``` **Types:** @@ -2708,9 +2781,11 @@ import { EntryRevisionAfterDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `handle(event: EntryRevisionAfterDeleteEvent): Promise` | — | +```typescript +interface EntryRevisionAfterDeleteEventHandler.Interface { + handle(event: EntryRevisionAfterDeleteEvent): Promise; +} +``` **Types:** @@ -2750,9 +2825,11 @@ import { EntryRevisionBeforeCreateEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionBeforeCreateEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------- | ----------- | -| `handle(event: EntryRevisionBeforeCreateEvent): Promise` | — | +```typescript +interface EntryRevisionBeforeCreateEventHandler.Interface { + handle(event: EntryRevisionBeforeCreateEvent): Promise; +} +``` **Types:** @@ -2792,9 +2869,11 @@ import { EntryRevisionBeforeDeleteEventHandler } from "webiny/api/cms/entry"; **Interface `EntryRevisionBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------- | ----------- | -| `handle(event: EntryRevisionBeforeDeleteEvent): Promise` | — | +```typescript +interface EntryRevisionBeforeDeleteEventHandler.Interface { + handle(event: EntryRevisionBeforeDeleteEvent): Promise; +} +``` **Types:** @@ -2836,9 +2915,11 @@ import { CmsSortMapper } from "webiny/api/cms/entry"; **Interface `CmsSortMapper.Interface`:** -| Method | Description | -| ------------------------------------------------------------------ | ----------- | -| `map(params: ICmsSortMapperParams): CmsEntryListSort \| undefined` | — | +```typescript +interface CmsSortMapper.Interface { + map(params: ICmsSortMapperParams): CmsEntryListSort | undefined; +} +``` **Types:** @@ -2878,9 +2959,11 @@ import { CmsWhereMapper } from "webiny/api/cms/entry"; **Interface `CmsWhereMapper.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------------ | ----------- | -| `map(params: ICmsWhereMapperParams): CmsEntryListWhere \| undefined` | — | +```typescript +interface CmsWhereMapper.Interface { + map(params: ICmsWhereMapperParams): CmsEntryListWhere | undefined; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/group.mdx b/docs/developer-docs/6.x/reference/api/cms/group.mdx index 75f909471..2560c9dab 100644 --- a/docs/developer-docs/6.x/reference/api/cms/group.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/group.mdx @@ -72,9 +72,11 @@ import { CreateGroupUseCase } from "webiny/api/cms/group"; CreateGroup Use Case -| Method | Description | -| ------------------------------------------------------------------------------ | ----------- | -| `execute(input: CmsGroupCreateInput): Promise>` | — | +```typescript +interface CreateGroupUseCase.Interface { + execute(input: CmsGroupCreateInput): Promise>; +} +``` **Types:** @@ -118,9 +120,11 @@ import { DeleteGroupUseCase } from "webiny/api/cms/group"; DeleteGroup Use Case -| Method | Description | -| --------------------------------------------------------------- | ----------- | -| `execute(groupId: string): Promise>` | — | +```typescript +interface DeleteGroupUseCase.Interface { + execute(groupId: string): Promise>; +} +``` **Types:** @@ -163,9 +167,11 @@ import { GetGroupUseCase } from "webiny/api/cms/group"; GetGroup Use Case -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `execute(groupId: string): Promise>` | — | +```typescript +interface GetGroupUseCase.Interface { + execute(groupId: string): Promise>; +} +``` **Types:** @@ -208,9 +214,11 @@ import { ListGroupsUseCase } from "webiny/api/cms/group"; ListGroups Use Case -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `execute(): Promise>` | — | +```typescript +interface ListGroupsUseCase.Interface { + execute(): Promise>; +} +``` **Types:** @@ -253,9 +261,11 @@ import { UpdateGroupUseCase } from "webiny/api/cms/group"; UpdateGroup Use Case -| Method | Description | -| ----------------------------------------------------------------------------------------------- | ----------- | -| `execute(groupId: string, input: CmsGroupUpdateInput): Promise>` | — | +```typescript +interface UpdateGroupUseCase.Interface { + execute(groupId: string, input: CmsGroupUpdateInput): Promise>; +} +``` **Types:** @@ -299,9 +309,11 @@ import { GroupAfterCreateEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: GroupAfterCreateEvent): Promise` | — | +```typescript +interface GroupAfterCreateEventHandler.Interface { + handle(event: GroupAfterCreateEvent): Promise; +} +``` **Event payload `GroupAfterCreateEventPayload`:** @@ -349,9 +361,11 @@ import { GroupAfterDeleteEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: GroupAfterDeleteEvent): Promise` | — | +```typescript +interface GroupAfterDeleteEventHandler.Interface { + handle(event: GroupAfterDeleteEvent): Promise; +} +``` **Event payload `GroupAfterDeleteEventPayload`:** @@ -399,9 +413,11 @@ import { GroupAfterUpdateEventHandler } from "webiny/api/cms/group"; **Interface `GroupAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: GroupAfterUpdateEvent): Promise` | — | +```typescript +interface GroupAfterUpdateEventHandler.Interface { + handle(event: GroupAfterUpdateEvent): Promise; +} +``` **Event payload `GroupAfterUpdateEventPayload`:** @@ -450,9 +466,11 @@ import { GroupBeforeCreateEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------- | ----------- | -| `handle(event: GroupBeforeCreateEventEvent): Promise` | — | +```typescript +interface GroupBeforeCreateEventHandler.Interface { + handle(event: GroupBeforeCreateEventEvent): Promise; +} +``` **Event payload `GroupBeforeCreateEventPayload`:** @@ -500,9 +518,11 @@ import { GroupBeforeDeleteEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: GroupBeforeDeleteEvent): Promise` | — | +```typescript +interface GroupBeforeDeleteEventHandler.Interface { + handle(event: GroupBeforeDeleteEvent): Promise; +} +``` **Event payload `GroupBeforeDeleteEventPayload`:** @@ -550,9 +570,11 @@ import { GroupBeforeUpdateEventHandler } from "webiny/api/cms/group"; **Interface `GroupBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: GroupBeforeUpdateEvent): Promise` | — | +```typescript +interface GroupBeforeUpdateEventHandler.Interface { + handle(event: GroupBeforeUpdateEvent): Promise; +} +``` **Event payload `GroupBeforeUpdateEventPayload`:** @@ -603,9 +625,11 @@ import { ModelGroupFactory } from "webiny/api/cms/group"; **Interface `ModelGroupFactory.Interface`:** -| Method | Description | -| ----------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface ModelGroupFactory.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/cms/model.mdx b/docs/developer-docs/6.x/reference/api/cms/model.mdx index aeab3fb03..a25a2dab3 100644 --- a/docs/developer-docs/6.x/reference/api/cms/model.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/model.mdx @@ -84,13 +84,14 @@ import { CreateModelFromUseCase } from "webiny/api/cms/model"; CreateModelFrom Use Case (Clone/Copy Model) -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface CreateModelFromUseCase.Interface { + execute( modelId: string, input: CmsModelCreateFromInput - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -134,9 +135,11 @@ import { CreateModelUseCase } from "webiny/api/cms/model"; CreateModel Use Case -| Method | Description | -| ------------------------------------------------------------------------------ | ----------- | -| `execute(input: CmsModelCreateInput): Promise>` | — | +```typescript +interface CreateModelUseCase.Interface { + execute(input: CmsModelCreateInput): Promise>; +} +``` **Types:** @@ -180,9 +183,11 @@ import { DeleteModelUseCase } from "webiny/api/cms/model"; DeleteModel Use Case -| Method | Description | -| --------------------------------------------------------------- | ----------- | -| `execute(modelId: string): Promise>` | — | +```typescript +interface DeleteModelUseCase.Interface { + execute(modelId: string): Promise>; +} +``` **Types:** @@ -225,9 +230,11 @@ import { GetModelUseCase } from "webiny/api/cms/model"; GetModel Use Case -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `execute(modelId: string): Promise>` | — | +```typescript +interface GetModelUseCase.Interface { + execute(modelId: string): Promise>; +} +``` **Types:** @@ -270,9 +277,11 @@ import { ListModelsUseCase } from "webiny/api/cms/model"; ListModels Use Case -| Method | Description | -| ---------------------------------------------------------------------------------- | ----------- | -| `execute(params?: ICmsModelListParams): Promise>` | — | +```typescript +interface ListModelsUseCase.Interface { + execute(params?: ICmsModelListParams): Promise>; +} +``` **Types:** @@ -316,9 +325,11 @@ import { UpdateModelUseCase } from "webiny/api/cms/model"; UpdateModel Use Case -| Method | Description | -| ----------------------------------------------------------------------------------------------- | ----------- | -| `execute(modelId: string, input: CmsModelUpdateInput): Promise>` | — | +```typescript +interface UpdateModelUseCase.Interface { + execute(modelId: string, input: CmsModelUpdateInput): Promise>; +} +``` **Types:** @@ -362,9 +373,11 @@ import { ModelAfterCreateEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: ModelAfterCreateEvent): Promise` | — | +```typescript +interface ModelAfterCreateEventHandler.Interface { + handle(event: ModelAfterCreateEvent): Promise; +} +``` **Event payload `ModelAfterCreateEventPayload`:** @@ -412,9 +425,11 @@ import { ModelAfterCreateFromEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterCreateFromEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `handle(event: ModelAfterCreateFromEvent): Promise` | — | +```typescript +interface ModelAfterCreateFromEventHandler.Interface { + handle(event: ModelAfterCreateFromEvent): Promise; +} +``` **Event payload `ModelAfterCreateFromEventPayload`:** @@ -463,9 +478,11 @@ import { ModelAfterDeleteEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: ModelAfterDeleteEvent): Promise` | — | +```typescript +interface ModelAfterDeleteEventHandler.Interface { + handle(event: ModelAfterDeleteEvent): Promise; +} +``` **Event payload `ModelAfterDeleteEventPayload`:** @@ -513,9 +530,11 @@ import { ModelAfterUpdateEventHandler } from "webiny/api/cms/model"; **Interface `ModelAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: ModelAfterUpdateEvent): Promise` | — | +```typescript +interface ModelAfterUpdateEventHandler.Interface { + handle(event: ModelAfterUpdateEvent): Promise; +} +``` **Event payload `ModelAfterUpdateEventPayload`:** @@ -564,9 +583,11 @@ import { ModelBeforeCreateEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ModelBeforeCreateEvent): Promise` | — | +```typescript +interface ModelBeforeCreateEventHandler.Interface { + handle(event: ModelBeforeCreateEvent): Promise; +} +``` **Event payload `ModelBeforeCreateEventPayload`:** @@ -615,9 +636,11 @@ import { ModelBeforeCreateFromEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeCreateFromEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `handle(event: ModelBeforeCreateFromEvent): Promise` | — | +```typescript +interface ModelBeforeCreateFromEventHandler.Interface { + handle(event: ModelBeforeCreateFromEvent): Promise; +} +``` **Event payload `ModelBeforeCreateFromEventPayload`:** @@ -667,9 +690,11 @@ import { ModelBeforeDeleteEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ModelBeforeDeleteEvent): Promise` | — | +```typescript +interface ModelBeforeDeleteEventHandler.Interface { + handle(event: ModelBeforeDeleteEvent): Promise; +} +``` **Event payload `ModelBeforeDeleteEventPayload`:** @@ -717,9 +742,11 @@ import { ModelBeforeUpdateEventHandler } from "webiny/api/cms/model"; **Interface `ModelBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ModelBeforeUpdateEvent): Promise` | — | +```typescript +interface ModelBeforeUpdateEventHandler.Interface { + handle(event: ModelBeforeUpdateEvent): Promise; +} +``` **Event payload `ModelBeforeUpdateEventPayload`:** @@ -773,10 +800,17 @@ import { FieldType } from "webiny/api/cms/model"; Field Type Factory - creates a field builder instance -| Method | Description | -| ---------------------------------------------------------------- | ------------------------------------- | -| `readonly type: string` | Unique identifier for this field type | -| `create(registry: IFieldBuilderRegistry): BaseFieldBuilder` | Create a new field builder instance | +```typescript +interface FieldType.Interface { + readonly type: string; + create(registry: IFieldBuilderRegistry): BaseFieldBuilder; +} +``` + +| Method | Description | +| ------------------------- | ------------------------------------- | +| `readonly type: string()` | Unique identifier for this field type | +| `create()` | Create a new field builder instance | **Usage:** @@ -807,9 +841,11 @@ import { ModelFactory } from "webiny/api/cms/model"; **Interface `ModelFactory.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------------------------- | ----------- | -| `execute(builder: IModelBuilder): Promise` | — | +```typescript +interface ModelFactory.Interface { + execute(builder: IModelBuilder): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/graphql.mdx b/docs/developer-docs/6.x/reference/api/graphql.mdx index fa867b949..ffc2a03ea 100644 --- a/docs/developer-docs/6.x/reference/api/graphql.mdx +++ b/docs/developer-docs/6.x/reference/api/graphql.mdx @@ -49,9 +49,11 @@ import { GraphQLSchemaFactory } from "webiny/api/graphql"; GraphQLSchemaFactory -| Method | Description | -| ------------------------------------------------------------------------------------------- | ----------- | -| `execute(builder: GraphQLSchemaBuilder.Interface): Promise` | — | +```typescript +interface GraphQLSchemaFactory.Interface { + execute(builder: GraphQLSchemaBuilder.Interface): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/key-value-store.mdx b/docs/developer-docs/6.x/reference/api/key-value-store.mdx index 2cb3e6025..ed1e87c39 100644 --- a/docs/developer-docs/6.x/reference/api/key-value-store.mdx +++ b/docs/developer-docs/6.x/reference/api/key-value-store.mdx @@ -35,22 +35,23 @@ import { GlobalKeyValueStore } from "webiny/api/key-value-store"; **Interface `GlobalKeyValueStore.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `get( +```typescript +interface GlobalKeyValueStore.Interface { + get( key: string, options?: IGlobalKeyValueStoreOptions - ): Promise>` | — | -| `set( + ): Promise>; + set( key: string, value: any, options?: IGlobalKeyValueStoreOptions - ): Promise>` | — | -| `delete( + ): Promise>; + delete( key: string, options?: IGlobalKeyValueStoreOptions - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -91,11 +92,13 @@ import { KeyValueStore } from "webiny/api/key-value-store"; **Interface `KeyValueStore.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------ | ----------- | -| `get(key: string): Promise>` | — | -| `set(key: string, value: any): Promise>` | — | -| `delete(key: string): Promise>` | — | +```typescript +interface KeyValueStore.Interface { + get(key: string): Promise>; + set(key: string, value: any): Promise>; + delete(key: string): Promise>; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/logger.mdx b/docs/developer-docs/6.x/reference/api/logger.mdx index d0d5aaa91..8ad2dc50d 100644 --- a/docs/developer-docs/6.x/reference/api/logger.mdx +++ b/docs/developer-docs/6.x/reference/api/logger.mdx @@ -32,15 +32,27 @@ import { Logger } from "webiny/api/logger"; Interface for logging messages at different severity levels. -| Method | Description | -| --------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `trace(objOrMsg: object \| string, ...args: any[]): void` | Log a trace-level message with optional additional arguments. | -| `debug(objOrMsg: object \| string, ...args: any[]): void` | Log a debug-level message with optional additional arguments. | -| `info(objOrMsg: object \| string, ...args: any[]): void` | Log an info-level message with optional additional arguments. | -| `warn(objOrMsg: object \| string, ...args: any[]): void` | Log a warning-level message with optional additional arguments. | -| `error(objOrMsg: object \| string, ...args: any[]): void` | Log an error-level message with optional additional arguments. | -| `fatal(objOrMsg: object \| string, ...args: any[]): void` | Log a fatal-level message with optional additional arguments. | -| `log(objOrMsg: object \| string, ...args: any[]): void` | Log a generic message (defaults to info level) with optional additional arguments. | +```typescript +interface Logger.Interface { + trace(objOrMsg: object | string, ...args: any[]): void; + debug(objOrMsg: object | string, ...args: any[]): void; + info(objOrMsg: object | string, ...args: any[]): void; + warn(objOrMsg: object | string, ...args: any[]): void; + error(objOrMsg: object | string, ...args: any[]): void; + fatal(objOrMsg: object | string, ...args: any[]): void; + log(objOrMsg: object | string, ...args: any[]): void; +} +``` + +| Method | Description | +| --------- | ---------------------------------------------------------------------------------- | +| `trace()` | Log a trace-level message with optional additional arguments. | +| `debug()` | Log a debug-level message with optional additional arguments. | +| `info()` | Log an info-level message with optional additional arguments. | +| `warn()` | Log a warning-level message with optional additional arguments. | +| `error()` | Log an error-level message with optional additional arguments. | +| `fatal()` | Log a fatal-level message with optional additional arguments. | +| `log()` | Log a generic message (defaults to info level) with optional additional arguments. | **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security.mdx b/docs/developer-docs/6.x/reference/api/security.mdx index 5faccbe5c..8d4a7e8cf 100644 --- a/docs/developer-docs/6.x/reference/api/security.mdx +++ b/docs/developer-docs/6.x/reference/api/security.mdx @@ -48,9 +48,11 @@ import { ApiKeyFactory } from "webiny/api/security"; **Interface `ApiKeyFactory.Interface`:** -| Method | Description | -| -------------------------------------------------- | ----------- | -| `execute(): Promise \| CodeApiKey[]` | — | +```typescript +interface ApiKeyFactory.Interface { + execute(): Promise | CodeApiKey[]; +} +``` **Types:** @@ -91,9 +93,11 @@ import { Authenticator } from "webiny/api/security"; **Interface `Authenticator.Interface`:** -| Method | Description | -| ------------------------------------------------------------ | ----------- | -| `authenticate(token: string): Promise` | — | +```typescript +interface Authenticator.Interface { + authenticate(token: string): Promise; +} +``` **Types:** @@ -132,9 +136,11 @@ import { Authorizer } from "webiny/api/security"; **Interface `Authorizer.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `authorize(identity: Identity): Promise` | — | +```typescript +interface Authorizer.Interface { + authorize(identity: Identity): Promise; +} +``` **Types:** @@ -173,22 +179,23 @@ import { IdentityContext } from "webiny/api/security"; **Interface `IdentityContext.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------ | ----------- | -| `getIdentity(): Identity` | — | -| `setIdentity(identity: Identity \| undefined): void` | — | -| `withIdentity(identity: Identity \| undefined, cb: () => Promise): Promise` | — | - -| `getPermission( +```typescript +interface IdentityContext.Interface { + getIdentity(): Identity; + setIdentity(identity: Identity | undefined): void; + withIdentity(identity: Identity | undefined, cb: () => Promise): Promise; + getPermission( name: string - ): Promise` | — | -| `getPermissions( + ): Promise; + getPermissions( name: string - ): Promise` | — | -| `listPermissions(): Promise` | — | -| `hasFullAccess(): Promise` | — | -| `withoutAuthorization(cb: () => Promise): Promise` | — | -| `isAuthorizationEnabled(): boolean` | — | + ): Promise; + listPermissions(): Promise; + hasFullAccess(): Promise; + withoutAuthorization(cb: () => Promise): Promise; + isAuthorizationEnabled(): boolean; +} +``` **Types:** @@ -227,10 +234,12 @@ import { IdentityProvider } from "webiny/api/security"; **Interface `IdentityProvider.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `isApplicable(token: string): boolean` | — | -| `getIdentity(token: string): Promise` | — | +```typescript +interface IdentityProvider.Interface { + isApplicable(token: string): boolean; + getIdentity(token: string): Promise; +} +``` **Types:** @@ -271,10 +280,12 @@ import { JwtIdentityProvider } from "webiny/api/security"; **Interface `JwtIdentityProvider.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------- | ----------- | -| `isApplicable(token: IJwtPayload): boolean` | — | -| `getIdentity(token: string, jwt: IJwt): Promise` | — | +```typescript +interface JwtIdentityProvider.Interface { + isApplicable(token: IJwtPayload): boolean; + getIdentity(token: string, jwt: IJwt): Promise; +} +``` **Types:** @@ -317,14 +328,16 @@ import { OidcIdentityProvider } from "webiny/api/security"; **Interface `OidcIdentityProvider.Interface`:** -| Method | Description | -| ---------------------------------------------------------------- | ----------- | -| `issuer: string` | — | -| `clientId: string` | — | -| `isApplicable(token: IJwtPayload): boolean` | — | -| `getIdentity(jwt: IJwtPayload): Promise` | — | -| `verifyToken?(token: string): Promise` | — | -| `verifyTokenClaims?(token: IJwtPayload): Promise` | — | +```typescript +interface OidcIdentityProvider.Interface { + issuer: string; + clientId: string; + isApplicable(token: IJwtPayload): boolean; + getIdentity(jwt: IJwtPayload): Promise; + verifyToken?(token: string): Promise; + verifyTokenClaims?(token: IJwtPayload): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/api-key.mdx b/docs/developer-docs/6.x/reference/api/security/api-key.mdx index 724441ee2..000b2ed95 100644 --- a/docs/developer-docs/6.x/reference/api/security/api-key.mdx +++ b/docs/developer-docs/6.x/reference/api/security/api-key.mdx @@ -62,9 +62,11 @@ import { CreateApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `CreateApiKeyUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------- | ----------- | -| `execute(input: CreateApiKeyInput): Promise>` | — | +```typescript +interface CreateApiKeyUseCase.Interface { + execute(input: CreateApiKeyInput): Promise>; +} +``` **Types:** @@ -104,9 +106,11 @@ import { DeleteApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `DeleteApiKeyUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------- | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface DeleteApiKeyUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -146,9 +150,11 @@ import { GetApiKeyByTokenUseCase } from "webiny/api/security/api-key"; **Interface `GetApiKeyByTokenUseCase.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------- | ----------- | -| `execute(token: string): Promise>` | — | +```typescript +interface GetApiKeyByTokenUseCase.Interface { + execute(token: string): Promise>; +} +``` **Types:** @@ -188,9 +194,11 @@ import { GetApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `GetApiKeyUseCase.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface GetApiKeyUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -230,9 +238,11 @@ import { ListApiKeysUseCase } from "webiny/api/security/api-key"; **Interface `ListApiKeysUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------------- | ----------- | -| `execute(params?: ListApiKeysInput): Promise>` | — | +```typescript +interface ListApiKeysUseCase.Interface { + execute(params?: ListApiKeysInput): Promise>; +} +``` **Types:** @@ -272,9 +282,11 @@ import { UpdateApiKeyUseCase } from "webiny/api/security/api-key"; **Interface `UpdateApiKeyUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------- | ----------- | -| `execute(id: string, input: UpdateApiKeyInput): Promise>` | — | +```typescript +interface UpdateApiKeyUseCase.Interface { + execute(id: string, input: UpdateApiKeyInput): Promise>; +} +``` **Types:** @@ -316,9 +328,11 @@ import { ApiKeyAfterCreateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ApiKeyAfterCreateEvent): Promise` | — | +```typescript +interface ApiKeyAfterCreateEventHandler.Interface { + handle(event: ApiKeyAfterCreateEvent): Promise; +} +``` **Types:** @@ -358,9 +372,11 @@ import { ApiKeyAfterDeleteEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ApiKeyAfterDeleteEvent): Promise` | — | +```typescript +interface ApiKeyAfterDeleteEventHandler.Interface { + handle(event: ApiKeyAfterDeleteEvent): Promise; +} +``` **Types:** @@ -400,9 +416,11 @@ import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `handle(event: ApiKeyAfterUpdateEvent): Promise` | — | +```typescript +interface ApiKeyAfterUpdateEventHandler.Interface { + handle(event: ApiKeyAfterUpdateEvent): Promise; +} +``` **Types:** @@ -442,9 +460,11 @@ import { ApiKeyBeforeCreateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------- | ----------- | -| `handle(event: ApiKeyBeforeCreateEvent): Promise` | — | +```typescript +interface ApiKeyBeforeCreateEventHandler.Interface { + handle(event: ApiKeyBeforeCreateEvent): Promise; +} +``` **Types:** @@ -484,9 +504,11 @@ import { ApiKeyBeforeDeleteEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------- | ----------- | -| `handle(event: ApiKeyBeforeDeleteEvent): Promise` | — | +```typescript +interface ApiKeyBeforeDeleteEventHandler.Interface { + handle(event: ApiKeyBeforeDeleteEvent): Promise; +} +``` **Types:** @@ -526,9 +548,11 @@ import { ApiKeyBeforeUpdateEventHandler } from "webiny/api/security/api-key"; **Interface `ApiKeyBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------- | ----------- | -| `handle(event: ApiKeyBeforeUpdateEvent): Promise` | — | +```typescript +interface ApiKeyBeforeUpdateEventHandler.Interface { + handle(event: ApiKeyBeforeUpdateEvent): Promise; +} +``` **Types:** @@ -570,9 +594,11 @@ import { ApiKeyFactory } from "webiny/api/security/api-key"; **Interface `ApiKeyFactory.Interface`:** -| Method | Description | -| -------------------------------------------------- | ----------- | -| `execute(): Promise \| CodeApiKey[]` | — | +```typescript +interface ApiKeyFactory.Interface { + execute(): Promise | CodeApiKey[]; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.mdx b/docs/developer-docs/6.x/reference/api/security/authentication.mdx index 8192af9a1..c1b0708d0 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.mdx +++ b/docs/developer-docs/6.x/reference/api/security/authentication.mdx @@ -35,9 +35,11 @@ import { AfterAuthenticationEventHandler } from "webiny/api/security/authenticat **Interface `AfterAuthenticationEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------- | ----------- | -| `handle(event: AfterAuthenticationEvent): Promise` | — | +```typescript +interface AfterAuthenticationEventHandler.Interface { + handle(event: AfterAuthenticationEvent): Promise; +} +``` **Types:** @@ -77,9 +79,11 @@ import { BeforeAuthenticationEventHandler } from "webiny/api/security/authentica **Interface `BeforeAuthenticationEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `handle(event: BeforeAuthenticationEvent): Promise` | — | +```typescript +interface BeforeAuthenticationEventHandler.Interface { + handle(event: BeforeAuthenticationEvent): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/role.mdx b/docs/developer-docs/6.x/reference/api/security/role.mdx index 00c716cc9..bf40f8438 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.mdx +++ b/docs/developer-docs/6.x/reference/api/security/role.mdx @@ -56,9 +56,11 @@ import { CreateRoleUseCase } from "webiny/api/security/role"; **Interface `CreateRoleUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------- | ----------- | -| `execute(input: CreateRoleInput): Promise>` | — | +```typescript +interface CreateRoleUseCase.Interface { + execute(input: CreateRoleInput): Promise>; +} +``` **Types:** @@ -98,9 +100,11 @@ import { DeleteRoleUseCase } from "webiny/api/security/role"; **Interface `DeleteRoleUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface DeleteRoleUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -140,9 +144,11 @@ import { GetRoleUseCase } from "webiny/api/security/role"; **Interface `GetRoleUseCase.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `execute(params: GetRoleInput): Promise>` | — | +```typescript +interface GetRoleUseCase.Interface { + execute(params: GetRoleInput): Promise>; +} +``` **Types:** @@ -182,9 +188,11 @@ import { ListRolesUseCase } from "webiny/api/security/role"; **Interface `ListRolesUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------- | ----------- | -| `execute(params?: ListRolesInput): Promise>` | — | +```typescript +interface ListRolesUseCase.Interface { + execute(params?: ListRolesInput): Promise>; +} +``` **Types:** @@ -224,13 +232,14 @@ import { UpdateRoleUseCase } from "webiny/api/security/role"; **Interface `UpdateRoleUseCase.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface UpdateRoleUseCase.Interface { + execute( id: string, input: UpdateRoleUseCaseInput - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -272,9 +281,11 @@ import { RoleAfterCreateEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterCreateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: RoleAfterCreateEvent): Promise` | — | +```typescript +interface RoleAfterCreateEventHandler.Interface { + handle(event: RoleAfterCreateEvent): Promise; +} +``` **Types:** @@ -314,9 +325,11 @@ import { RoleAfterDeleteEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: RoleAfterDeleteEvent): Promise` | — | +```typescript +interface RoleAfterDeleteEventHandler.Interface { + handle(event: RoleAfterDeleteEvent): Promise; +} +``` **Types:** @@ -356,9 +369,11 @@ import { RoleAfterUpdateEventHandler } from "webiny/api/security/role"; **Interface `RoleAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: RoleAfterUpdateEvent): Promise` | — | +```typescript +interface RoleAfterUpdateEventHandler.Interface { + handle(event: RoleAfterUpdateEvent): Promise; +} +``` **Types:** @@ -398,9 +413,11 @@ import { RoleBeforeCreateEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: RoleBeforeCreateEvent): Promise` | — | +```typescript +interface RoleBeforeCreateEventHandler.Interface { + handle(event: RoleBeforeCreateEvent): Promise; +} +``` **Types:** @@ -440,9 +457,11 @@ import { RoleBeforeDeleteEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: RoleBeforeDeleteEvent): Promise` | — | +```typescript +interface RoleBeforeDeleteEventHandler.Interface { + handle(event: RoleBeforeDeleteEvent): Promise; +} +``` **Types:** @@ -482,9 +501,11 @@ import { RoleBeforeUpdateEventHandler } from "webiny/api/security/role"; **Interface `RoleBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: RoleBeforeUpdateEvent): Promise` | — | +```typescript +interface RoleBeforeUpdateEventHandler.Interface { + handle(event: RoleBeforeUpdateEvent): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/security/user.mdx b/docs/developer-docs/6.x/reference/api/security/user.mdx index 8932d0ff5..4cbeb68db 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.mdx +++ b/docs/developer-docs/6.x/reference/api/security/user.mdx @@ -57,9 +57,11 @@ import { CreateUserUseCase } from "webiny/api/security/user"; **Interface `CreateUserUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------ | ----------- | -| `execute(input: CreateUserInput): Promise>` | — | +```typescript +interface CreateUserUseCase.Interface { + execute(input: CreateUserInput): Promise>; +} +``` **Types:** @@ -100,9 +102,11 @@ import { DeleteUserUseCase } from "webiny/api/security/user"; **Interface `DeleteUserUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------- | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface DeleteUserUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -142,9 +146,11 @@ import { GetUserUseCase } from "webiny/api/security/user"; **Interface `GetUserUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------ | ----------- | -| `execute(input: GetUserInput): Promise>` | — | +```typescript +interface GetUserUseCase.Interface { + execute(input: GetUserInput): Promise>; +} +``` **Types:** @@ -184,9 +190,11 @@ import { ListUsersUseCase } from "webiny/api/security/user"; **Interface `ListUsersUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------- | ----------- | -| `execute(input?: ListUsersInput): Promise>` | — | +```typescript +interface ListUsersUseCase.Interface { + execute(input?: ListUsersInput): Promise>; +} +``` **Types:** @@ -226,9 +234,11 @@ import { ListUserTeamsUseCase } from "webiny/api/security/user"; **Interface `ListUserTeamsUseCase.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `execute(userId: string): Promise>` | — | +```typescript +interface ListUserTeamsUseCase.Interface { + execute(userId: string): Promise>; +} +``` **Types:** @@ -268,9 +278,11 @@ import { UpdateUserUseCase } from "webiny/api/security/user"; **Interface `UpdateUserUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------ | ----------- | -| `execute(id: string, input: UpdateUserInput): Promise>` | — | +```typescript +interface UpdateUserUseCase.Interface { + execute(id: string, input: UpdateUserInput): Promise>; +} +``` **Types:** @@ -312,9 +324,11 @@ import { UserAfterCreateEventHandler } from "webiny/api/security/user"; **Interface `UserAfterCreateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: UserAfterCreateEvent): Promise` | — | +```typescript +interface UserAfterCreateEventHandler.Interface { + handle(event: UserAfterCreateEvent): Promise; +} +``` **Types:** @@ -354,9 +368,11 @@ import { UserAfterDeleteEventHandler } from "webiny/api/security/user"; **Interface `UserAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: UserAfterDeleteEvent): Promise` | — | +```typescript +interface UserAfterDeleteEventHandler.Interface { + handle(event: UserAfterDeleteEvent): Promise; +} +``` **Types:** @@ -396,9 +412,11 @@ import { UserAfterUpdateEventHandler } from "webiny/api/security/user"; **Interface `UserAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------- | ----------- | -| `handle(event: UserAfterUpdateEvent): Promise` | — | +```typescript +interface UserAfterUpdateEventHandler.Interface { + handle(event: UserAfterUpdateEvent): Promise; +} +``` **Types:** @@ -438,9 +456,11 @@ import { UserBeforeCreateEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: UserBeforeCreateEvent): Promise` | — | +```typescript +interface UserBeforeCreateEventHandler.Interface { + handle(event: UserBeforeCreateEvent): Promise; +} +``` **Types:** @@ -480,9 +500,11 @@ import { UserBeforeDeleteEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: UserBeforeDeleteEvent): Promise` | — | +```typescript +interface UserBeforeDeleteEventHandler.Interface { + handle(event: UserBeforeDeleteEvent): Promise; +} +``` **Types:** @@ -522,9 +544,11 @@ import { UserBeforeUpdateEventHandler } from "webiny/api/security/user"; **Interface `UserBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------- | ----------- | -| `handle(event: UserBeforeUpdateEvent): Promise` | — | +```typescript +interface UserBeforeUpdateEventHandler.Interface { + handle(event: UserBeforeUpdateEvent): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/system.mdx b/docs/developer-docs/6.x/reference/api/system.mdx index 5a34e9e42..1206ef325 100644 --- a/docs/developer-docs/6.x/reference/api/system.mdx +++ b/docs/developer-docs/6.x/reference/api/system.mdx @@ -43,12 +43,13 @@ import { InstallSystemUseCase } from "webiny/api/system"; Use Case Abstraction -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface InstallSystemUseCase.Interface { + execute( input: InstallSystemInput - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -59,6 +60,15 @@ namespace InstallSystemUseCase { } ``` +**`Input` — `AppInstallationData[]`:** + +Types + +| Field | Type | Required | Description | +| ------ | --------------------- | -------- | ----------- | +| `app` | `string` | yes | — | +| `data` | `Record` | yes | — | + **Usage:** ```typescript extensions/MyImpl.ts @@ -90,9 +100,11 @@ import { SystemInstalledEventHandler } from "webiny/api/system"; **Interface `SystemInstalledEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface SystemInstalledEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tasks.mdx b/docs/developer-docs/6.x/reference/api/tasks.mdx index 2680fdfaa..d1a887a91 100644 --- a/docs/developer-docs/6.x/reference/api/tasks.mdx +++ b/docs/developer-docs/6.x/reference/api/tasks.mdx @@ -37,26 +37,43 @@ import { TaskDefinition } from "webiny/api/tasks"; Core TaskDefinition - minimal interface +```typescript +interface TaskDefinition.Interface { + id: string; + title: string; + description?: string; + maxIterations?: number; + databaseLogs?: boolean; + isPrivate?: boolean; + run(params: ITaskRunParams): Promise>; + onBeforeTrigger?(params: ITaskBeforeTriggerParams): Promise; + onDone?(params: ITaskLifecycleHook): Promise; + onError?(params: ITaskLifecycleHook): Promise; + onAbort?(params: ITaskLifecycleHook): Promise; + onMaxIterations?(params: ITaskLifecycleHook): Promise; + createInputValidation?( + params: ITaskCreateInputValidationParams + ): GenericRecord | zod.Schema; +} +``` + | Method | Description | | ----------------------------------------------------------------------------------- | -------------------------------------------------------- | -| `id: string` | — | -| `title: string` | — | -| `description?: string` | — | -| `maxIterations?: number` | — | -| `databaseLogs?: boolean` | — | -| `isPrivate?: boolean` | — | -| `run(params: ITaskRunParams): Promise>` | Core run method - receives ONLY input params | +| `id: string()` | — | +| `title: string()` | — | +| `description?: string()` | — | +| `maxIterations?: number()` | — | +| `databaseLogs?: boolean()` | — | +| `isPrivate?: boolean()` | — | +| `run()` | Core run method - receives ONLY input params | | All runtime dependencies (logging, state management, etc.) come from TaskController | -| `onBeforeTrigger?(params: ITaskBeforeTriggerParams): Promise` | Optional lifecycle hooks - receive task data, no context | -| `onDone?(params: ITaskLifecycleHook): Promise` | — | -| `onError?(params: ITaskLifecycleHook): Promise` | — | -| `onAbort?(params: ITaskLifecycleHook): Promise` | — | -| `onMaxIterations?(params: ITaskLifecycleHook): Promise` | — | - -| `createInputValidation?( - params: ITaskCreateInputValidationParams - ): GenericRecord \| zod.Schema` | Create a validation schema for the task input. -This will be used to validate the input before the task is triggered. | +| `onBeforeTrigger?()` | Optional lifecycle hooks - receive task data, no context | +| `onDone?()` | — | +| `onError?()` | — | +| `onAbort?()` | — | +| `onMaxIterations?()` | — | +| `createInputValidation?()` | Create a validation schema for the task input. | +| This will be used to validate the input before the task is triggered. | **Types:** @@ -109,22 +126,23 @@ import { TaskService } from "webiny/api/tasks"; **Interface `TaskService.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `trigger: < +```typescript +interface TaskService.Interface { + trigger: < T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends IGenericOutput = IGenericOutput >( params: ITaskTriggerParams - ) => Promise, BaseError>>` | — | -| `abort: < + ) => Promise, BaseError>>; + abort: < T extends TaskDefinition.TaskInput = TaskDefinition.TaskInput, O extends IGenericOutput = IGenericOutput >( params: ITaskAbortParams - ) => Promise, BaseError>>` | — | -| `fetchServiceInfo: (input: ITask \| string) => Promise>` | — | + ) => Promise, BaseError>>; + fetchServiceInfo: (input: ITask | string) => Promise>; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tenancy.mdx b/docs/developer-docs/6.x/reference/api/tenancy.mdx index c93c9c013..a0cd0c2f1 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.mdx +++ b/docs/developer-docs/6.x/reference/api/tenancy.mdx @@ -71,9 +71,11 @@ import { CreateTenantRepository } from "webiny/api/tenancy"; Repository -| Method | Description | -| ----------------------------------------- | ----------- | -| `create(tenant: Tenant): Promise` | — | +```typescript +interface CreateTenantRepository.Interface { + create(tenant: Tenant): Promise; +} +``` **Types:** @@ -114,12 +116,13 @@ import { CreateTenantUseCase } from "webiny/api/tenancy"; Use Case -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface CreateTenantUseCase.Interface { + execute( data: CreateTenantInput - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -159,9 +162,11 @@ import { DeleteTenantRepository } from "webiny/api/tenancy"; **Interface `DeleteTenantRepository.Interface`:** -| Method | Description | -| ----------------------------------- | ----------- | -| `delete(id: string): Promise` | — | +```typescript +interface DeleteTenantRepository.Interface { + delete(id: string): Promise; +} +``` **Types:** @@ -200,9 +205,11 @@ import { DeleteTenantUseCase } from "webiny/api/tenancy"; **Interface `DeleteTenantUseCase.Interface`:** -| Method | Description | -| --------------------------------------- | ----------- | -| `execute(id: string): Promise` | — | +```typescript +interface DeleteTenantUseCase.Interface { + execute(id: string): Promise; +} +``` **Types:** @@ -241,9 +248,11 @@ import { GetTenantByIdUseCase } from "webiny/api/tenancy"; **Interface `GetTenantByIdUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------ | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface GetTenantByIdUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -286,12 +295,13 @@ import { InstallTenantUseCase } from "webiny/api/tenancy"; Use Case Abstraction -| Method | Description | -| ------ | ----------- | - -| `execute( +```typescript +interface InstallTenantUseCase.Interface { + execute( input: TenantInstallationInput - ): Promise>` | — | + ): Promise>; +} +``` **Types:** @@ -332,9 +342,11 @@ import { UpdateTenantRepository } from "webiny/api/tenancy"; **Interface `UpdateTenantRepository.Interface`:** -| Method | Description | -| ----------------------------------------- | ----------- | -| `update(tenant: Tenant): Promise` | — | +```typescript +interface UpdateTenantRepository.Interface { + update(tenant: Tenant): Promise; +} +``` **Types:** @@ -373,9 +385,11 @@ import { UpdateTenantUseCase } from "webiny/api/tenancy"; **Interface `UpdateTenantUseCase.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------------------------- | ----------- | -| `execute(id: string, data: Partial): Promise>` | — | +```typescript +interface UpdateTenantUseCase.Interface { + execute(id: string, data: Partial): Promise>; +} +``` **Types:** @@ -416,9 +430,11 @@ import { TenantAfterCreateEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterCreateEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantAfterCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -458,9 +474,11 @@ import { TenantAfterDeleteEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterDeleteEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantAfterDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -500,9 +518,11 @@ import { TenantAfterUpdateEventHandler } from "webiny/api/tenancy"; **Interface `TenantAfterUpdateEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantAfterUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -542,9 +562,11 @@ import { TenantBeforeCreateEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantBeforeCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -584,9 +606,11 @@ import { TenantBeforeDeleteEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantBeforeDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -626,9 +650,11 @@ import { TenantBeforeUpdateEventHandler } from "webiny/api/tenancy"; **Interface `TenantBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantBeforeUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -668,9 +694,11 @@ import { TenantInstalledEventHandler } from "webiny/api/tenancy"; **Interface `TenantInstalledEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface TenantInstalledEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Types:** @@ -714,14 +742,24 @@ import { AppInstaller } from "webiny/api/tenancy"; App Installer Abstraction +```typescript +interface AppInstaller.Interface { + readonly alwaysRun?: boolean; + readonly appName: string; + readonly dependsOn: string[]; + install(tenant: Tenant, data: TData): Promise; + uninstall(tenant: Tenant): Promise; +} +``` + | Method | Description | | ------------------------------------------------------- | ------------------------ | -| `readonly alwaysRun?: boolean` | — | -| `readonly appName: string` | — | -| `readonly dependsOn: string[]` | — | -| `install(tenant: Tenant, data: TData): Promise` | Perform the installation | +| `readonly alwaysRun?: boolean()` | — | +| `readonly appName: string()` | — | +| `readonly dependsOn: string[]()` | — | +| `install()` | Perform the installation | | If this succeeds, uninstall() MUST be able to revert it | -| `uninstall(tenant: Tenant): Promise` | Revert the installation | +| `uninstall()` | Revert the installation | | Called if any subsequent installer fails | **Types:** @@ -761,17 +799,18 @@ import { TenantContext } from "webiny/api/tenancy"; **Interface `TenantContext.Interface`:** -| Method | Description | -| -------------------------------------------- | ----------- | -| `setTenant(tenant: Tenant): void` | — | -| `getTenant(): Tenant` | — | -| `withRootTenant(cb: () => T): Promise` | — | - -| `withEachTenant( +```typescript +interface TenantContext.Interface { + setTenant(tenant: Tenant): void; + getTenant(): Tenant; + withRootTenant(cb: () => T): Promise; + withEachTenant( tenants: Tenant[], cb: (tenant: Tenant) => Promise - ): Promise` | — | -| `withTenant(tenant: Tenant, cb: (tenant: Tenant) => Promise): Promise` | — | + ): Promise; + withTenant(tenant: Tenant, cb: (tenant: Tenant) => Promise): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx index 74d5110a8..a0a619a12 100644 --- a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx +++ b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx @@ -38,9 +38,11 @@ import { TenantModelExtension } from "webiny/api/tenant-manager"; **Interface `TenantModelExtension.Interface`:** -| Method | Description | -| -------------------------------------- | ----------- | -| `execute(extension: IExtension): void` | — | +```typescript +interface TenantModelExtension.Interface { + execute(extension: IExtension): void; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx index 8e09061bd..4286cd219 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx @@ -30,9 +30,11 @@ import { NextjsConfig } from "webiny/api/website-builder/nextjs"; **Interface `NextjsConfig.Interface`:** -| Method | Description | -| --------------------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface NextjsConfig.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx index e55aeab6a..4a7833812 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx @@ -79,9 +79,11 @@ import { CreatePageRevisionFromUseCase } from "webiny/api/website-builder/page"; **Interface `CreatePageRevisionFromUseCase.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------------------------- | ----------- | -| `execute(params: ICreateWbPageRevisionFromParams): Promise>` | — | +```typescript +interface CreatePageRevisionFromUseCase.Interface { + execute(params: ICreateWbPageRevisionFromParams): Promise>; +} +``` **Types:** @@ -126,9 +128,11 @@ import { CreatePageUseCase } from "webiny/api/website-builder/page"; **Interface `CreatePageUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------- | ----------- | -| `execute(data: ICreateWbPageParams): Promise>` | — | +```typescript +interface CreatePageUseCase.Interface { + execute(data: ICreateWbPageParams): Promise>; +} +``` **Types:** @@ -171,9 +175,11 @@ import { DeletePageUseCase } from "webiny/api/website-builder/page"; **Interface `DeletePageUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------- | ----------- | -| `execute(params: IDeleteWbPageParams): Promise>` | — | +```typescript +interface DeletePageUseCase.Interface { + execute(params: IDeleteWbPageParams): Promise>; +} +``` **Types:** @@ -215,9 +221,11 @@ import { DuplicatePageUseCase } from "webiny/api/website-builder/page"; **Interface `DuplicatePageUseCase.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------- | ----------- | -| `execute(params: IDuplicateWbPageParams): Promise>` | — | +```typescript +interface DuplicatePageUseCase.Interface { + execute(params: IDuplicateWbPageParams): Promise>; +} +``` **Types:** @@ -262,9 +270,11 @@ import { GetPageByIdUseCase } from "webiny/api/website-builder/page"; GetPageById use case interface -| Method | Description | -| ------------------------------------------------------------ | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface GetPageByIdUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -308,9 +318,11 @@ import { GetPageByPathUseCase } from "webiny/api/website-builder/page"; GetPageByPath use case interface -| Method | Description | -| -------------------------------------------------------------- | ----------- | -| `execute(path: string): Promise>` | — | +```typescript +interface GetPageByPathUseCase.Interface { + execute(path: string): Promise>; +} +``` **Types:** @@ -354,9 +366,11 @@ import { GetPageRevisionsUseCase } from "webiny/api/website-builder/page"; GetPageRevisions use case interface -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `execute(entryId: string): Promise>` | — | +```typescript +interface GetPageRevisionsUseCase.Interface { + execute(entryId: string): Promise>; +} +``` **Types:** @@ -400,9 +414,11 @@ import { ListPagesUseCase } from "webiny/api/website-builder/page"; ListPages use case interface -| Method | Description | -| ------------------------------------------------------------------------------------ | ----------- | -| `execute(params: IListPagesParams): Promise>` | — | +```typescript +interface ListPagesUseCase.Interface { + execute(params: IListPagesParams): Promise>; +} +``` **Types:** @@ -444,9 +460,11 @@ import { MovePageUseCase } from "webiny/api/website-builder/page"; **Interface `MovePageUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------- | ----------- | -| `execute(params: IMoveWbPageParams): Promise>` | — | +```typescript +interface MovePageUseCase.Interface { + execute(params: IMoveWbPageParams): Promise>; +} +``` **Types:** @@ -489,9 +507,11 @@ import { PublishPageUseCase } from "webiny/api/website-builder/page"; **Interface `PublishPageUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------ | ----------- | -| `execute(params: IPublishWbPageParams): Promise>` | — | +```typescript +interface PublishPageUseCase.Interface { + execute(params: IPublishWbPageParams): Promise>; +} +``` **Types:** @@ -534,9 +554,11 @@ import { UnpublishPageUseCase } from "webiny/api/website-builder/page"; **Interface `UnpublishPageUseCase.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------- | ----------- | -| `execute(params: IUnpublishWbPageParams): Promise>` | — | +```typescript +interface UnpublishPageUseCase.Interface { + execute(params: IUnpublishWbPageParams): Promise>; +} +``` **Types:** @@ -579,9 +601,11 @@ import { UpdatePageUseCase } from "webiny/api/website-builder/page"; **Interface `UpdatePageUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------- | ----------- | -| `execute(id: string, data: IUpdateWbPageData): Promise>` | — | +```typescript +interface UpdatePageUseCase.Interface { + execute(id: string, data: IUpdateWbPageData): Promise>; +} +``` **Types:** @@ -626,9 +650,11 @@ import { PageAfterCreateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterCreatePayload`:** @@ -677,9 +703,11 @@ import { PageAfterCreateRevisionFromEventHandler } from "webiny/api/website-buil **Interface `PageAfterCreateRevisionFromEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterCreateRevisionFromEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterCreateRevisionFromPayload`:** @@ -728,9 +756,11 @@ import { PageAfterDeleteEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterDeletePayload`:** @@ -779,9 +809,11 @@ import { PageAfterDuplicateEventHandler } from "webiny/api/website-builder/page" **Interface `PageAfterDuplicateEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterDuplicateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterDuplicatePayload`:** @@ -831,9 +863,11 @@ import { PageAfterMoveEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterMoveEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterMoveEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterMovePayload`:** @@ -884,9 +918,11 @@ import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterPublishEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterPublishEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterPublishPayload`:** @@ -935,9 +971,11 @@ import { PageAfterUnpublishEventHandler } from "webiny/api/website-builder/page" **Interface `PageAfterUnpublishEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterUnpublishEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterUnpublishPayload`:** @@ -986,9 +1024,11 @@ import { PageAfterUpdateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageAfterUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageAfterUpdatePayload`:** @@ -1042,9 +1082,11 @@ import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeCreateEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeCreatePayload`:** @@ -1093,9 +1135,11 @@ import { PageBeforeCreateRevisionFromEventHandler } from "webiny/api/website-bui **Interface `PageBeforeCreateRevisionFromEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeCreateRevisionFromEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeCreateRevisionFromPayload`:** @@ -1144,9 +1188,11 @@ import { PageBeforeDeleteEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeDeletePayload`:** @@ -1195,9 +1241,11 @@ import { PageBeforeDuplicateEventHandler } from "webiny/api/website-builder/page **Interface `PageBeforeDuplicateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeDuplicateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeDuplicatePayload`:** @@ -1246,9 +1294,11 @@ import { PageBeforeMoveEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeMoveEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------ | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeMoveEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeMovePayload`:** @@ -1298,9 +1348,11 @@ import { PageBeforePublishEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforePublishEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforePublishEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforePublishPayload`:** @@ -1349,9 +1401,11 @@ import { PageBeforeUnpublishEventHandler } from "webiny/api/website-builder/page **Interface `PageBeforeUnpublishEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeUnpublishEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeUnpublishPayload`:** @@ -1400,9 +1454,11 @@ import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; **Interface `PageBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| -------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface PageBeforeUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `PageBeforeUpdatePayload`:** diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx index 907cc5fcf..cbb25a7cf 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx @@ -61,9 +61,11 @@ import { CreateRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `CreateRedirectUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------------- | ----------- | -| `execute(data: ICreateWbRedirectData): Promise>` | — | +```typescript +interface CreateRedirectUseCase.Interface { + execute(data: ICreateWbRedirectData): Promise>; +} +``` **Types:** @@ -106,9 +108,11 @@ import { DeleteRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `DeleteRedirectUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------- | ----------- | -| `execute(params: IDeleteWbRedirectParams): Promise>` | — | +```typescript +interface DeleteRedirectUseCase.Interface { + execute(params: IDeleteWbRedirectParams): Promise>; +} +``` **Types:** @@ -152,9 +156,11 @@ import { GetActiveRedirectsUseCase } from "webiny/api/website-builder/redirect"; GetActiveRedirects use case interface -| Method | Description | -| -------------------------------------------------------- | ----------- | -| `execute(): Promise>` | — | +```typescript +interface GetActiveRedirectsUseCase.Interface { + execute(): Promise>; +} +``` **Types:** @@ -198,9 +204,11 @@ import { GetRedirectByIdUseCase } from "webiny/api/website-builder/redirect"; GetRedirectById use case interface -| Method | Description | -| ---------------------------------------------------------------- | ----------- | -| `execute(id: string): Promise>` | — | +```typescript +interface GetRedirectByIdUseCase.Interface { + execute(id: string): Promise>; +} +``` **Types:** @@ -242,9 +250,11 @@ import { InvalidateRedirectsCacheUseCase } from "webiny/api/website-builder/redi **Interface `InvalidateRedirectsCacheUseCase.Interface`:** -| Method | Description | -| ------------------------------------------------ | ----------- | -| `execute(): Promise>` | — | +```typescript +interface InvalidateRedirectsCacheUseCase.Interface { + execute(): Promise>; +} +``` **Types:** @@ -287,9 +297,11 @@ import { ListRedirectsUseCase } from "webiny/api/website-builder/redirect"; **Interface `ListRedirectsUseCase.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------------------- | ----------- | -| `execute(params: ListWbRedirectsParams): Promise>` | — | +```typescript +interface ListRedirectsUseCase.Interface { + execute(params: ListWbRedirectsParams): Promise>; +} +``` **Types:** @@ -332,9 +344,11 @@ import { MoveRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `MoveRedirectUseCase.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------------------- | ----------- | -| `execute(params: IMoveWbRedirectParams): Promise>` | — | +```typescript +interface MoveRedirectUseCase.Interface { + execute(params: IMoveWbRedirectParams): Promise>; +} +``` **Types:** @@ -377,9 +391,11 @@ import { UpdateRedirectUseCase } from "webiny/api/website-builder/redirect"; **Interface `UpdateRedirectUseCase.Interface`:** -| Method | Description | -| --------------------------------------------------------------------------------------------- | ----------- | -| `execute(id: string, data: IUpdateWbRedirectData): Promise>` | — | +```typescript +interface UpdateRedirectUseCase.Interface { + execute(id: string, data: IUpdateWbRedirectData): Promise>; +} +``` **Types:** @@ -424,9 +440,11 @@ import { RedirectAfterCreateEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterCreateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectAfterCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectAfterCreatePayload`:** @@ -475,9 +493,11 @@ import { RedirectAfterDeleteEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterDeleteEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectAfterDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectAfterDeletePayload`:** @@ -526,9 +546,11 @@ import { RedirectAfterMoveEventHandler } from "webiny/api/website-builder/redire **Interface `RedirectAfterMoveEventHandler.Interface`:** -| Method | Description | -| --------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectAfterMoveEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectAfterMovePayload`:** @@ -579,9 +601,11 @@ import { RedirectAfterUpdateEventHandler } from "webiny/api/website-builder/redi **Interface `RedirectAfterUpdateEventHandler.Interface`:** -| Method | Description | -| ----------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectAfterUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectAfterUpdatePayload`:** @@ -635,9 +659,11 @@ import { RedirectBeforeCreateEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeCreateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------ | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectBeforeCreateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectBeforeCreatePayload`:** @@ -686,9 +712,11 @@ import { RedirectBeforeDeleteEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeDeleteEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------ | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectBeforeDeleteEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectBeforeDeletePayload`:** @@ -737,9 +765,11 @@ import { RedirectBeforeMoveEventHandler } from "webiny/api/website-builder/redir **Interface `RedirectBeforeMoveEventHandler.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------- | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectBeforeMoveEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectBeforeMovePayload`:** @@ -789,9 +819,11 @@ import { RedirectBeforeUpdateEventHandler } from "webiny/api/website-builder/red **Interface `RedirectBeforeUpdateEventHandler.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------ | ----------- | -| `handle(event: DomainEvent): Promise` | — | +```typescript +interface RedirectBeforeUpdateEventHandler.Interface { + handle(event: DomainEvent): Promise; +} +``` **Event payload `RedirectBeforeUpdatePayload`:** diff --git a/docs/developer-docs/6.x/reference/cli/overview.mdx b/docs/developer-docs/6.x/reference/cli/overview.mdx index d9ec4d4f5..dba8e26b1 100644 --- a/docs/developer-docs/6.x/reference/cli/overview.mdx +++ b/docs/developer-docs/6.x/reference/cli/overview.mdx @@ -35,15 +35,17 @@ import { Logger } from "webiny/cli/index"; **Interface `Logger.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `trace(objOrMsg: object \| string, ...args: any[]): void` | — | -| `debug(objOrMsg: object \| string, ...args: any[]): void` | — | -| `info(objOrMsg: object \| string, ...args: any[]): void` | — | -| `warn(objOrMsg: object \| string, ...args: any[]): void` | — | -| `error(objOrMsg: object \| string, ...args: any[]): void` | — | -| `fatal(objOrMsg: object \| string, ...args: any[]): void` | — | -| `log(objOrMsg: object \| string, ...args: any[]): void` | — | +```typescript +interface Logger.Interface { + trace(objOrMsg: object | string, ...args: any[]): void; + debug(objOrMsg: object | string, ...args: any[]): void; + info(objOrMsg: object | string, ...args: any[]): void; + warn(objOrMsg: object | string, ...args: any[]): void; + error(objOrMsg: object | string, ...args: any[]): void; + fatal(objOrMsg: object | string, ...args: any[]): void; + log(objOrMsg: object | string, ...args: any[]): void; +} +``` **Types:** @@ -82,17 +84,19 @@ import { Ui } from "webiny/cli/index"; **Interface `Ui.Interface`:** -| Method | Description | -| --------------------------------------------- | ----------- | -| `raw(text: string): void` | — | -| `text(text: string): void` | — | -| `textBold(text: string): void` | — | -| `emptyLine(): void` | — | -| `info(text: string, ...args: any[]): void` | — | -| `success(text: string, ...args: any[]): void` | — | -| `error(text: string, ...args: any[]): void` | — | -| `warning(text: string, ...args: any[]): void` | — | -| `debug(text: string, ...args: any[]): void` | — | +```typescript +interface Ui.Interface { + raw(text: string): void; + text(text: string): void; + textBold(text: string): void; + emptyLine(): void; + info(text: string, ...args: any[]): void; + success(text: string, ...args: any[]): void; + error(text: string, ...args: any[]): void; + warning(text: string, ...args: any[]): void; + debug(text: string, ...args: any[]): void; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/admin.mdx b/docs/developer-docs/6.x/reference/infra/admin.mdx index 7afc3c693..b1a450ab6 100644 --- a/docs/developer-docs/6.x/reference/infra/admin.mdx +++ b/docs/developer-docs/6.x/reference/infra/admin.mdx @@ -40,9 +40,11 @@ import { AdminAfterBuildHook } from "webiny/infra/admin"; **Interface `AdminAfterBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface AdminAfterBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -82,9 +84,11 @@ import { AdminAfterDeployHook } from "webiny/infra/admin"; **Interface `AdminAfterDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface AdminAfterDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -124,9 +128,11 @@ import { AdminBeforeBuildHook } from "webiny/infra/admin"; **Interface `AdminBeforeBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface AdminBeforeBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -166,9 +172,11 @@ import { AdminBeforeDeployHook } from "webiny/infra/admin"; **Interface `AdminBeforeDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface AdminBeforeDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -208,9 +216,11 @@ import { AdminBeforeWatchHook } from "webiny/infra/admin"; **Interface `AdminBeforeWatchHook.Interface`:** -| Method | Description | -| ------------------------------------------------------------------ | ----------- | -| `execute(params: Watch.WatchWithAppParams): void \| Promise` | — | +```typescript +interface AdminBeforeWatchHook.Interface { + execute(params: Watch.WatchWithAppParams): void | Promise; +} +``` **Types:** @@ -284,9 +294,11 @@ import { GetAdminStackOutput } from "webiny/infra/admin"; **Interface `GetAdminStackOutput.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface GetAdminStackOutput.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/api.mdx b/docs/developer-docs/6.x/reference/infra/api.mdx index b9437a696..3bf0545b9 100644 --- a/docs/developer-docs/6.x/reference/infra/api.mdx +++ b/docs/developer-docs/6.x/reference/infra/api.mdx @@ -40,9 +40,11 @@ import { ApiAfterBuildHook } from "webiny/infra/api"; **Interface `ApiAfterBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface ApiAfterBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -82,9 +84,11 @@ import { ApiAfterDeployHook } from "webiny/infra/api"; **Interface `ApiAfterDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface ApiAfterDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -124,9 +128,11 @@ import { ApiBeforeBuildHook } from "webiny/infra/api"; **Interface `ApiBeforeBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface ApiBeforeBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -166,9 +172,11 @@ import { ApiBeforeDeployHook } from "webiny/infra/api"; **Interface `ApiBeforeDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface ApiBeforeDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -208,9 +216,11 @@ import { ApiBeforeWatchHook } from "webiny/infra/api"; **Interface `ApiBeforeWatchHook.Interface`:** -| Method | Description | -| ------------------------------------------------------------------ | ----------- | -| `execute(params: Watch.WatchWithAppParams): void \| Promise` | — | +```typescript +interface ApiBeforeWatchHook.Interface { + execute(params: Watch.WatchWithAppParams): void | Promise; +} +``` **Types:** @@ -284,9 +294,11 @@ import { GetApiStackOutput } from "webiny/infra/api"; **Interface `GetApiStackOutput.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface GetApiStackOutput.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/core.mdx b/docs/developer-docs/6.x/reference/infra/core.mdx index fc2c6fe88..29bcd455a 100644 --- a/docs/developer-docs/6.x/reference/infra/core.mdx +++ b/docs/developer-docs/6.x/reference/infra/core.mdx @@ -39,9 +39,11 @@ import { CoreAfterBuildHook } from "webiny/infra/core"; **Interface `CoreAfterBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface CoreAfterBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -81,9 +83,11 @@ import { CoreAfterDeployHook } from "webiny/infra/core"; **Interface `CoreAfterDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface CoreAfterDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -123,9 +127,11 @@ import { CoreBeforeBuildHook } from "webiny/infra/core"; **Interface `CoreBeforeBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface CoreBeforeBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -165,9 +171,11 @@ import { CoreBeforeDeployHook } from "webiny/infra/core"; **Interface `CoreBeforeDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface CoreBeforeDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -241,9 +249,11 @@ import { GetCoreStackOutput } from "webiny/infra/core"; **Interface `GetCoreStackOutput.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------ | ----------- | -| `execute(): Promise` | — | +```typescript +interface GetCoreStackOutput.Interface { + execute(): Promise; +} +``` **Types:** diff --git a/docs/developer-docs/6.x/reference/infra/overview.mdx b/docs/developer-docs/6.x/reference/infra/overview.mdx index eb3dab715..33b1bff02 100644 --- a/docs/developer-docs/6.x/reference/infra/overview.mdx +++ b/docs/developer-docs/6.x/reference/infra/overview.mdx @@ -46,9 +46,11 @@ import { AdminStackOutput } from "webiny/infra/index"; **Interface `AdminStackOutput.Interface`:** -| Method | Description | -| -------------------------------------------------------------------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface AdminStackOutput.Interface { + execute(): Promise; +} +``` **Types:** @@ -88,9 +90,11 @@ import { AfterBuildHook } from "webiny/infra/index"; **Interface `AfterBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface AfterBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -130,9 +134,11 @@ import { AfterDeployHook } from "webiny/infra/index"; **Interface `AfterDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface AfterDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -172,17 +178,18 @@ import { ApiGqlClient } from "webiny/infra/index"; **Interface `ApiGqlClient.Interface`:** -| Method | Description | -| ------ | ----------- | - -| `query(params: { +```typescript +interface ApiGqlClient.Interface { + query(params: { query: string; variables?: Record; - }): Promise>` | — | -| `mutation(params: { + }): Promise>; + mutation(params: { mutation: string; variables?: Record; - }): Promise>` | — | + }): Promise>; +} +``` **Types:** @@ -222,9 +229,11 @@ import { ApiStackOutput } from "webiny/infra/index"; **Interface `ApiStackOutput.Interface`:** -| Method | Description | -| ---------------------------------------------------------------------------------------- | ----------- | -| `execute(): Promise` | — | +```typescript +interface ApiStackOutput.Interface { + execute(): Promise; +} +``` **Types:** @@ -264,9 +273,11 @@ import { BeforeBuildHook } from "webiny/infra/index"; **Interface `BeforeBuildHook.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `execute(params: BuildApp.Params): void \| Promise` | — | +```typescript +interface BeforeBuildHook.Interface { + execute(params: BuildApp.Params): void | Promise; +} +``` **Types:** @@ -306,9 +317,11 @@ import { BeforeDeployHook } from "webiny/infra/index"; **Interface `BeforeDeployHook.Interface`:** -| Method | Description | -| ---------------------------------------------------------- | ----------- | -| `execute(params: DeployApp.Params): void \| Promise` | — | +```typescript +interface BeforeDeployHook.Interface { + execute(params: DeployApp.Params): void | Promise; +} +``` **Types:** @@ -348,9 +361,11 @@ import { BeforeWatchHook } from "webiny/infra/index"; **Interface `BeforeWatchHook.Interface`:** -| Method | Description | -| ------------------------------------------------------ | ----------- | -| `execute(params: Watch.Params): void \| Promise` | — | +```typescript +interface BeforeWatchHook.Interface { + execute(params: Watch.Params): void | Promise; +} +``` **Types:** @@ -390,9 +405,11 @@ import { CoreStackOutput } from "webiny/infra/index"; **Interface `CoreStackOutput.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------ | ----------- | -| `execute(): Promise` | — | +```typescript +interface CoreStackOutput.Interface { + execute(): Promise; +} +``` **Types:** @@ -452,9 +469,11 @@ import { InvokeLambdaFunction } from "webiny/infra/index"; **Interface `InvokeLambdaFunction.Interface`:** -| Method | Description | -| ------------------------------------------------------------------------------------------------ | ----------- | -| `execute(params: IInvokeLambdaFunctionParams): Promise>` | — | +```typescript +interface InvokeLambdaFunction.Interface { + execute(params: IInvokeLambdaFunctionParams): Promise>; +} +``` **Types:** @@ -495,15 +514,17 @@ import { Logger } from "webiny/infra/index"; **Interface `Logger.Interface`:** -| Method | Description | -| --------------------------------------------------------- | ----------- | -| `trace(objOrMsg: object \| string, ...args: any[]): void` | — | -| `debug(objOrMsg: object \| string, ...args: any[]): void` | — | -| `info(objOrMsg: object \| string, ...args: any[]): void` | — | -| `warn(objOrMsg: object \| string, ...args: any[]): void` | — | -| `error(objOrMsg: object \| string, ...args: any[]): void` | — | -| `fatal(objOrMsg: object \| string, ...args: any[]): void` | — | -| `log(objOrMsg: object \| string, ...args: any[]): void` | — | +```typescript +interface Logger.Interface { + trace(objOrMsg: object | string, ...args: any[]): void; + debug(objOrMsg: object | string, ...args: any[]): void; + info(objOrMsg: object | string, ...args: any[]): void; + warn(objOrMsg: object | string, ...args: any[]): void; + error(objOrMsg: object | string, ...args: any[]): void; + fatal(objOrMsg: object | string, ...args: any[]): void; + log(objOrMsg: object | string, ...args: any[]): void; +} +``` **Types:** @@ -542,17 +563,19 @@ import { Ui } from "webiny/infra/index"; **Interface `Ui.Interface`:** -| Method | Description | -| --------------------------------------------- | ----------- | -| `raw(text: string): void` | — | -| `text(text: string): void` | — | -| `textBold(text: string): void` | — | -| `emptyLine(): void` | — | -| `info(text: string, ...args: any[]): void` | — | -| `success(text: string, ...args: any[]): void` | — | -| `error(text: string, ...args: any[]): void` | — | -| `warning(text: string, ...args: any[]): void` | — | -| `debug(text: string, ...args: any[]): void` | — | +```typescript +interface Ui.Interface { + raw(text: string): void; + text(text: string): void; + textBold(text: string): void; + emptyLine(): void; + info(text: string, ...args: any[]): void; + success(text: string, ...args: any[]): void; + error(text: string, ...args: any[]): void; + warning(text: string, ...args: any[]): void; + debug(text: string, ...args: any[]): void; +} +``` **Types:** diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..156de82f279d7eb9182dbb5a91ba44ea8f7b7be0 GIT binary patch literal 68044 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 jd.getText().includes("@internal")); +} + function cleanDeclarationText(text: string): string { return text .replace(/\{[\s\S]*\}/g, match => { @@ -401,10 +409,13 @@ function extractInterfaceMembers( const iface = allIfaces.find(i => i.getName() === interfaceName); if (iface) { return { - members: iface.getMembers().map(m => ({ - signature: m.getText().trim().replace(/;$/, ""), - jsDoc: extractJsDoc(m) - })), + members: iface + .getMembers() + .filter(m => !isInternalNode(m)) + .map(m => ({ + signature: m.getText().trim().replace(/;$/, ""), + jsDoc: extractJsDoc(m) + })), jsDoc: extractJsDoc(iface) }; } @@ -514,6 +525,48 @@ function resolveModuleSpecifier( return resolveWebinyImport(modSpec, pkgMap); } +/** + * Resolve a "Namespace.Interface" type reference to interface members. + * e.g. "GraphQLSchemaBuilder.Interface" → finds GraphQLSchemaBuilder's IGraphQLSchemaBuilder interface. + */ +function resolveNamespaceDotInterface( + sf: SourceFile, + typeText: string, + pkgMap: Map +): { members: InterfaceMember[]; jsDoc: string } | null { + // Only handle Foo.Interface pattern + const m = typeText.match(/^(\w+)\.Interface$/); + if (!m) return null; + const abstractionName = m[1]; + + // Find where abstractionName is imported from + for (const decl of sf.getImportDeclarations()) { + const named = decl.getNamedImports().find(n => n.getName() === abstractionName); + if (!named) continue; + const modSpec = decl.getModuleSpecifierValue(); + const resolvedPath = resolveModuleSpecifier(sf, modSpec, pkgMap); + if (!resolvedPath || !existsSync(resolvedPath)) continue; + try { + const targetSf = sf.getProject().addSourceFileAtPath(resolvedPath); + // In the target file, find createAbstraction for this name and extract IFoo + const exported = targetSf.getExportedDeclarations(); + const decls = exported.get(abstractionName); + if (!decls) continue; + const varDecl = decls.find(d => Node.isVariableDeclaration(d)); + if (!varDecl || !Node.isVariableDeclaration(varDecl)) continue; + const genericArg = getCreateAbstractionGeneric(varDecl); + if (!genericArg) continue; + const nodeSf = varDecl.getSourceFile(); + return extractInterfaceMembers(nodeSf, genericArg, pkgMap).members.length > 0 + ? extractInterfaceMembers(nodeSf, genericArg, pkgMap) + : null; + } catch { + continue; + } + } + return null; +} + /** * Given a type alias name (e.g. "InstallSystemInput") in a source file, resolves it to * an object interface and returns its fields. Only resolves simple aliases: @@ -612,11 +665,14 @@ function resolveInterfaceFields( const iface = allIfaces.find(i => i.getName() === interfaceName); if (iface) { - const fields = iface.getProperties().map(p => ({ - name: p.getName(), - typeText: p.getTypeNode()?.getText() ?? "unknown", - optional: p.hasQuestionToken() - })); + const fields = iface + .getProperties() + .filter(p => !isInternalNode(p)) + .map(p => ({ + name: p.getName(), + typeText: p.getTypeNode()?.getText() ?? "unknown", + optional: p.hasQuestionToken() + })); return { fields, jsDoc: extractJsDoc(iface) }; } @@ -930,19 +986,35 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { })() : extractNamespaceTypes(sf, name); - // For each namespace type that's a resolvable alias (Input, etc.), try to resolve fields + // For each namespace type, try to resolve its fields or members const nodeSfForTypes = node.getSourceFile(); namespaceTypes = namespaceTypes.map(t => { - // Skip Interface/Return/Errors — only resolve plain input/data types - if (t.name === "Interface" || t.name === "Return" || t.name === "Errors") return t; - // value is the raw type text e.g. "InstallSystemInput" — only try simple identifiers - if (!/^\w+$/.test(t.value.trim())) return t; - try { - const resolved = resolveTypeToFields(nodeSfForTypes, t.value.trim(), PKG_MAP); - if (resolved && resolved.fields.length > 0) return { ...t, resolvedFields: resolved }; - } catch { - // ignore + // Skip Interface — it just aliases the abstraction itself + if (t.name === "Interface") return t; + const val = t.value.trim(); + + // Foo.Interface pattern → resolve as method interface + if (/^\w+\.Interface$/.test(val)) { + try { + const resolved = resolveNamespaceDotInterface(nodeSfForTypes, val, PKG_MAP); + if (resolved && resolved.members.length > 0) + return { ...t, resolvedMembers: resolved }; + } catch { + /* ignore */ + } + return t; + } + + // Simple identifier → try to resolve as plain object fields + if (/^\w+$/.test(val)) { + try { + const resolved = resolveTypeToFields(nodeSfForTypes, val, PKG_MAP); + if (resolved && resolved.fields.length > 0) return { ...t, resolvedFields: resolved }; + } catch { + /* ignore */ + } } + return t; }); @@ -1364,38 +1436,53 @@ function renderSymbolSection( lines.push("```"); lines.push(""); - // For each resolved type, emit a field table + // For each resolved type, emit a field table or method table for (const t of sym.namespaceTypes) { - if (!t.resolvedFields || t.resolvedFields.fields.length === 0) continue; - const { typeName, isArray, jsDoc, fields } = t.resolvedFields; - const label = isArray ? `${typeName}[]` : typeName; - lines.push(`**\`${t.name}\` — \`${label}\`:**`); - lines.push(""); - if (jsDoc) { - lines.push(jsDoc); + if (t.resolvedFields && t.resolvedFields.fields.length > 0) { + const { typeName, isArray, jsDoc, fields } = t.resolvedFields; + const label = isArray ? `${typeName}[]` : typeName; + lines.push(`**\`${t.name}\` — \`${label}\`:**`); lines.push(""); + if (jsDoc) { + lines.push(jsDoc); + lines.push(""); + } + lines.push("| Field | Type | Required | Description |"); + lines.push("| ----- | ---- | -------- | ----------- |"); + for (const f of fields) { + const req = f.optional ? "no" : "yes"; + lines.push(`| \`${f.name}\` | \`${f.typeText.replace(/\|/g, "\\|")}\` | ${req} | — |`); + } + lines.push(""); + } else if (t.resolvedMembers && t.resolvedMembers.members.length > 0) { + const { members, jsDoc } = t.resolvedMembers; + lines.push(`**\`${t.name}\` — \`${t.value}\`:**`); + lines.push(""); + if (jsDoc) { + lines.push(jsDoc); + lines.push(""); + } + lines.push("```typescript"); + lines.push(`interface ${t.value} {`); + for (const m of members) lines.push(` ${m.signature};`); + lines.push("}"); + lines.push("```"); + lines.push(""); + const hasJsDoc = members.some(m => m.jsDoc); + if (hasJsDoc) { + lines.push("| Method | Description |"); + lines.push("| ------ | ----------- |"); + for (const m of members) { + const methodName = m.signature.split("(")[0].trim(); + const desc = m.jsDoc ? m.jsDoc.replace(/\|/g, "\\|") : "—"; + lines.push(`| \`${methodName}()\` | ${desc} |`); + } + lines.push(""); + } } - lines.push("| Field | Type | Required | Description |"); - lines.push("| ----- | ---- | -------- | ----------- |"); - for (const f of fields) { - const req = f.optional ? "no" : "yes"; - lines.push(`| \`${f.name}\` | \`${f.typeText.replace(/\|/g, "\\|")}\` | ${req} | — |`); - } - lines.push(""); } } - // Usage snippet - const usage = renderUsageSnippet(sym, importPath); - if (usage) { - lines.push(`**Usage:**`); - lines.push(""); - lines.push(`\`\`\`typescript ${usage.file}`); - lines.push(usage.body); - lines.push("```"); - lines.push(""); - } - return lines.join("\n"); } From b6ce14604dde933f73e681373c058602946f895a Mon Sep 17 00:00:00 2001 From: adrians5j Date: Fri, 13 Mar 2026 11:15:48 +0100 Subject: [PATCH 13/13] wip:15 (arda7) --- .../6.x/reference/admin/form.mdx | 34 +++-- .../6.x/reference/admin/router.mdx | 12 +- .../developer-docs/6.x/reference/admin/ui.mdx | 82 +++++++++-- .../6.x/reference/api/cms/entry.mdx | 8 +- .../6.x/reference/api/cms/model.mdx | 22 +-- .../6.x/reference/api/graphql.mdx | 26 ++-- .../6.x/reference/api/logger.mdx | 62 ++++++++- .../6.x/reference/api/security.mdx | 2 +- scripts/generate-reference.ts | 129 +++++++++++++++++- 9 files changed, 318 insertions(+), 59 deletions(-) diff --git a/docs/developer-docs/6.x/reference/admin/form.mdx b/docs/developer-docs/6.x/reference/admin/form.mdx index 11160ea49..3d99cbd05 100644 --- a/docs/developer-docs/6.x/reference/admin/form.mdx +++ b/docs/developer-docs/6.x/reference/admin/form.mdx @@ -127,21 +127,25 @@ import { Validation } from "webiny/admin/form"; ```typescript class Validation { - __validators:; - constructor(); - setValidator(name: string, callable: Validator): this; - getValidator(name: string): Validator; - async validate( - value: any, - validators: string, - options: ValidateOptions =; - validateSync( - value: any, - validators: string, - options: ValidateOptions =; - create(validators: string); - createSync(validators: string); - __parseValidateProperty(validators: string): ParsedValidators; + __validators: { + [key: string]: Validator; + }; + constructor(); + setValidator(name: string, callable: Validator): this; + getValidator(name: string): Validator; + async validate( + value: any, + validators: string, + options: ValidateOptions = {} + ): Promise; + validateSync( + value: any, + validators: string, + options: ValidateOptions = {} + ): boolean | ValidationError; + create(validators: string); + createSync(validators: string); + __parseValidateProperty(validators: string): ParsedValidators; } ``` diff --git a/docs/developer-docs/6.x/reference/admin/router.mdx b/docs/developer-docs/6.x/reference/admin/router.mdx index 231cc1977..2762bf5e2 100644 --- a/docs/developer-docs/6.x/reference/admin/router.mdx +++ b/docs/developer-docs/6.x/reference/admin/router.mdx @@ -48,9 +48,15 @@ export class Route : undefined; constructor(route: RouteParams); - get name(); - get path(); - get params(): TParams extends RouteParamsDefinition ? RouteParamsInfer : undefined; + get name() { + return this.route.name; + } + get path() { + return this.route.path; + } + get params(): TParams extends RouteParamsDefinition ? RouteParamsInfer : undefined { + return this.schema; + } private coerceParams>(shape: T); } ``` diff --git a/docs/developer-docs/6.x/reference/admin/ui.mdx b/docs/developer-docs/6.x/reference/admin/ui.mdx index b15da94de..cb9f95f8b 100644 --- a/docs/developer-docs/6.x/reference/admin/ui.mdx +++ b/docs/developer-docs/6.x/reference/admin/ui.mdx @@ -506,18 +506,67 @@ import { DynamicFieldset } from "webiny/admin/ui"; ```typescript class DynamicFieldset extends React.Component { - static defaultProps: Partial =; + static defaultProps: Partial = { + value: [] + }; header: React.ReactNode = null; footer: React.ReactNode = null; rows: React.ReactNode = null; empty: React.ReactNode = null; - actions =; - removeData = (index: number) =>; - addData = (index = -1) =>; - renderHeader = (cb: () => React.ReactNode): React.ReactNode =>; - renderFooter = (cb: () => React.ReactNode): React.ReactNode =>; - renderRow = (cb: ChildrenRenderPropRowCallable): React.ReactNode =>; - renderEmpty = (cb: () => React.ReactNode): React.ReactNode =>; + actions = { + add: + (index = -1) => + () => + this.addData(index), + remove: + (index = -1) => + () => + this.removeData(index) + }; + removeData = (index: number) => { + const { value, onChange } = this.props; + if (!value) { + return; + } + onChange([...value.slice(0, index), ...value.slice(index + 1)]); + }; + addData = (index = -1) => { + const { onChange, onAdd } = this.props; + let value = this.props.value; + if (!value) { + value = []; + } + + const newValue = typeof onAdd === "function" ? onAdd() : {}; + + if (index < 0) { + onChange([...value, newValue]); + } else { + onChange([...value.slice(0, index + 1), newValue, ...value.slice(index + 1)]); + } + }; + renderHeader = (cb: () => React.ReactNode): React.ReactNode => { + this.header = cb(); + return null; + }; + renderFooter = (cb: () => React.ReactNode): React.ReactNode => { + this.footer = cb(); + return null; + }; + renderRow = (cb: ChildrenRenderPropRowCallable): React.ReactNode => { + const { value } = this.props; + if (!value) { + return null; + } + this.rows = value.map((record, index) => { + return

; + }); + return null; + }; + renderEmpty = (cb: () => React.ReactNode): React.ReactNode => { + this.empty = cb(); + return null; + }; public renderComponent(): React.ReactNode; public override render(); } @@ -1261,13 +1310,16 @@ import { TimeAgo } from "webiny/admin/ui"; ```typescript export default class TimeAgo extends React.PureComponent { - static defaultProps:; - dom: HTMLTimeElement; - componentDidMount(): void; - componentDidUpdate(): void; - renderTimeAgo(): void; - componentWillUnmount(): void; - render(): JSX.Element; + static defaultProps: { + live: boolean; + className: string; + }; + dom: HTMLTimeElement; + componentDidMount(): void; + componentDidUpdate(): void; + renderTimeAgo(): void; + componentWillUnmount(): void; + render(): JSX.Element; } ``` diff --git a/docs/developer-docs/6.x/reference/api/cms/entry.mdx b/docs/developer-docs/6.x/reference/api/cms/entry.mdx index 0c3d74ca9..609cc2677 100644 --- a/docs/developer-docs/6.x/reference/api/cms/entry.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/entry.mdx @@ -1941,8 +1941,12 @@ export class EntryId { static create(); static from(value: string); toString(); - get id(); - get version(); + get id() { + return this._id; + }; + get version() { + return this._version; + }; incrementVersion(); decrementVersion(); setVersion(version: number); diff --git a/docs/developer-docs/6.x/reference/api/cms/model.mdx b/docs/developer-docs/6.x/reference/api/cms/model.mdx index 3bd1c5e56..c2c078a20 100644 --- a/docs/developer-docs/6.x/reference/api/cms/model.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/model.mdx @@ -683,17 +683,17 @@ import { LayoutBuilder } from "webiny/api/cms/model"; ```typescript export class LayoutBuilder { - private layout: string[][]; - private modifiers: LayoutModifier[] = []; - constructor(existingLayout: string[][] = []); - setLayout(layout: string[][]): this; - addModifier(modifier: LayoutModifier): this; - addField(field: string, position:; - addRow(fields: string[]): this; - insertRow(fields: string[], position:; - getSnapshot():; - build(): string[][]; - private findFieldPosition(field: string):; + private layout: string[][]; + private modifiers: LayoutModifier[] = []; + constructor(existingLayout: string[][] = []); + setLayout(layout: string[][]): this; + addModifier(modifier: LayoutModifier): this; + addField(field: string, position: { after: string } | { before: string }): this; + addRow(fields: string[]): this; + insertRow(fields: string[], position: { after: string } | { before: string }): this; + getSnapshot(): { layout: string[][]; modifiers: LayoutModifier[] }; + build(): string[][]; + private findFieldPosition(field: string): { rowIndex: number; colIndex: number } | null; } ``` diff --git a/docs/developer-docs/6.x/reference/api/graphql.mdx b/docs/developer-docs/6.x/reference/api/graphql.mdx index c0f555f93..483dfaf07 100644 --- a/docs/developer-docs/6.x/reference/api/graphql.mdx +++ b/docs/developer-docs/6.x/reference/api/graphql.mdx @@ -95,9 +95,14 @@ import { ErrorResponse } from "webiny/api/graphql"; ```typescript export class ErrorResponse { - public readonly data: null; - public readonly error:; - constructor(params: ErrorResponseParams); + public readonly data: null; + public readonly error: { + code: string; + message: string; + data: any; + stack: string | null; + }; + constructor(params: ErrorResponseParams); } ``` @@ -111,10 +116,15 @@ import { ListErrorResponse } from "webiny/api/graphql"; ```typescript export class ListErrorResponse { - public readonly data: null; - public readonly meta: null; - public readonly error:; - constructor(params: ErrorResponseParams); + public readonly data: null; + public readonly meta: null; + public readonly error: { + code: string; + message: string; + data: any; + stack: string | null; + }; + constructor(params: ErrorResponseParams); } ``` @@ -145,7 +155,7 @@ import { NotAuthorizedResponse } from "webiny/api/graphql"; ```typescript export class NotAuthorizedResponse extends ErrorResponse { - constructor(; + constructor({ message, code, data }: Partial = {}); } ``` diff --git a/docs/developer-docs/6.x/reference/api/logger.mdx b/docs/developer-docs/6.x/reference/api/logger.mdx index 0f3c823d4..7dc8a0e09 100644 --- a/docs/developer-docs/6.x/reference/api/logger.mdx +++ b/docs/developer-docs/6.x/reference/api/logger.mdx @@ -30,8 +30,6 @@ import { Logger } from "webiny/api/logger"; **Interface `Logger.Interface`:** -Interface for logging messages at different severity levels. - ```typescript interface Logger.Interface { trace(objOrMsg: object | string, ...args: any[]): void; @@ -61,3 +59,63 @@ namespace Logger { type Interface = ILogger; } ``` + +## Examples + +### Basic Usage + +Simple logger injection and usage: + +```typescript +import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; +import { Logger } from "webiny/api/logger"; + +class MyApiKeyAfterUpdateImpl implements ApiKeyAfterUpdateEventHandler.Interface { + constructor(private logger: Logger.Interface) {} + + async handle() { + this.logger.debug("An API key was updated!"); + this.logger.info("Processing update..."); + } +} + +const MyApiKeyAfterUpdate = ApiKeyAfterUpdateEventHandler.createImplementation({ + implementation: MyApiKeyAfterUpdateImpl, + dependencies: [Logger] +}); + +export default MyApiKeyAfterUpdate; +``` + +### Logging Errors + +Logging error messages when something goes wrong: + +```typescript +import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; +import { Logger } from "webiny/api/logger"; + +class MyApiKeyAfterUpdateImpl implements ApiKeyAfterUpdateEventHandler.Interface { + constructor(private logger: Logger.Interface) {} + + async handle() { + try { + // Some operation that might fail + await this.processApiKey(); + } catch (error) { + this.logger.error("An error occurred while processing API key:", error); + } + } + + private async processApiKey() { + // Implementation + } +} + +const MyApiKeyAfterUpdate = ApiKeyAfterUpdateEventHandler.createImplementation({ + implementation: MyApiKeyAfterUpdateImpl, + dependencies: [Logger] +}); + +export default MyApiKeyAfterUpdate; +``` diff --git a/docs/developer-docs/6.x/reference/api/security.mdx b/docs/developer-docs/6.x/reference/api/security.mdx index b92fb0927..aae1e9912 100644 --- a/docs/developer-docs/6.x/reference/api/security.mdx +++ b/docs/developer-docs/6.x/reference/api/security.mdx @@ -247,6 +247,6 @@ import { ApiToken } from "webiny/api/security"; ```typescript export class ApiToken { - static validate(token: string): `wat_$; + static validate(token: string): `wat_${string}`; } ``` diff --git a/scripts/generate-reference.ts b/scripts/generate-reference.ts index cd0e087e4..20c31b86f 100644 --- a/scripts/generate-reference.ts +++ b/scripts/generate-reference.ts @@ -120,6 +120,17 @@ interface ExtractedSymbol { eventPayloadName?: string; } +interface Example { + /** H2 heading text, e.g. "Basic Usage" */ + title: string; + /** Optional prose paragraph between the heading and the first code block */ + description: string; + /** Raw code block content (without fences) */ + code: string; + /** Language tag from the code fence, e.g. "typescript" */ + lang: string; +} + interface EntryPointDoc { /** e.g. "webiny/api/cms/entry" */ importPath: string; @@ -131,6 +142,8 @@ interface EntryPointDoc { description: string; /** All symbols exported from this entry point */ symbols: ExtractedSymbol[]; + /** Examples parsed from a co-located *.examples.md file, if present */ + examples?: Example[]; } // --------------------------------------------------------------------------- @@ -859,8 +872,28 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { const members = node .getMembers() .map(m => { + // Properties (public readonly foo: Bar) — no body, use full text + if (Node.isPropertyDeclaration(m)) { + return m.getText().trim().replace(/;?$/, ";"); + } + // Constructors and methods — strip the implementation body + if (Node.isConstructorDeclaration(m) || Node.isMethodDeclaration(m)) { + const body = m.getBody ? m.getBody() : null; + if (body) { + const bodyStart = body.getStart(); + const nodeStart = m.getStart(); + const sig = m + .getText() + .substring(0, bodyStart - nodeStart) + .trim(); + return sig + ";"; + } + // No body (overload or abstract) — use full text + return m.getText().trim().replace(/;?$/, ";"); + } + // Fallback for other member kinds const txt = m.getText().trim(); - return txt.replace(/\{[\s\S]*$/, "").trim() + (txt.includes("{") ? ";" : ""); + return txt.replace(/;?$/, ";"); }) .filter(Boolean); @@ -2054,6 +2087,24 @@ function renderMdx(doc: EntryPointDoc, id: string): string { } } + // Examples section — appended at the bottom if a *.examples.md file was found + if (doc.examples && doc.examples.length > 0) { + lines.push("## Examples"); + lines.push(""); + for (const ex of doc.examples) { + lines.push(`### ${ex.title}`); + lines.push(""); + if (ex.description) { + lines.push(ex.description); + lines.push(""); + } + lines.push(`\`\`\`${ex.lang}`); + lines.push(ex.code); + lines.push("```"); + lines.push(""); + } + } + return lines.join("\n"); } @@ -2323,6 +2374,77 @@ function rewriteNavigation(entryPoints: EntryPointDoc[]): void { console.log(` [nav] Updated navigation.tsx Reference group`); } +// --------------------------------------------------------------------------- +// Examples: find and parse *.examples.md co-located with export barrels +// --------------------------------------------------------------------------- + +/** + * Parse a *.examples.md file into Example objects. + * Each H2 heading starts a new example. The text between the heading and + * the first code fence is the description; the first code fence is the code. + */ +function parseExamplesFile(filePath: string): Example[] { + const src = readFileSync(filePath, "utf-8"); + const examples: Example[] = []; + + // Split on H2 headings (## ...) + const sections = src.split(/^## /m).slice(1); // drop everything before first ## + + for (const section of sections) { + const lines = section.split("\n"); + const title = lines[0].trim(); + const rest = lines.slice(1).join("\n"); + + // Extract first code fence + const fenceMatch = rest.match(/```(\w*)\n([\s\S]*?)```/); + if (!fenceMatch) continue; + + const lang = fenceMatch[1] || "typescript"; + const code = fenceMatch[2].trimEnd(); + + // Everything before the code fence (trimmed) is the description + const description = rest.slice(0, rest.indexOf("```")).trim(); + + examples.push({ title, description, code, lang }); + } + + return examples; +} + +/** + * Walk the re-export chain from a webiny barrel file looking for a sibling + * *.examples.md file. Returns the parsed examples, or undefined if not found. + * + * Convention: examples files live next to either: + * a) The webiny barrel itself (webiny/src/api/logger.ts → logger.examples.md), or + * b) A mirror "exports/" barrel in any @webiny/* package that matches the same + * relative path (e.g. api-core/src/exports/api/logger.examples.md for api/logger) + */ +function findExamples( + barrelSrc: string, + relPath: string, + pkgMap: Map, + project: import("ts-morph").Project +): Example[] | undefined { + // 1. Check co-located with the webiny barrel + const sibling = barrelSrc.replace(/\.ts$/, ".examples.md"); + if (existsSync(sibling)) { + const examples = parseExamplesFile(sibling); + if (examples.length > 0) return examples; + } + + // 2. Check in every @webiny/* package's src/exports/.examples.md + for (const srcDir of Array.from(pkgMap.values())) { + const candidate = join(srcDir, "exports", relPath + ".examples.md"); + if (existsSync(candidate)) { + const examples = parseExamplesFile(candidate); + if (examples.length > 0) return examples; + } + } + + return undefined; +} + // --------------------------------------------------------------------------- // Main // --------------------------------------------------------------------------- @@ -2419,12 +2541,15 @@ async function main(): Promise { } } + const examples = findExamples(barrelSrc, relPath, pkgMap, project); + const doc: EntryPointDoc = { importPath: `webiny/${relPath}`, relPath, title: toTitle(relPath), description: toDescription(relPath), - symbols: mergeNamespaceSymbols(symbols) + symbols: mergeNamespaceSymbols(symbols), + ...(examples ? { examples } : {}) }; docs.push(doc);

O=rc$d67eJ`;u-1Y`i5w zzC3vqy0(Nnfg(E<`Y;~`kJ6LV07$V9F;Xs%!c+WVUkUKgdC~Ccr@xgmo-T{G^sg9Q zg1ny&1rGR|{D5bFD3Q#tupt%rx zwPPqPP@P25O(5eMy(E0%tX-IA4lDe9ddPc}aT8e@UHi7(DI;mhq`?hDHd;I2j6_)A zs3w!ykni*uV$F?uR91T`E1}jqZ%-`6s8Bk>UD|$2MeDj@m^z|%@``kOe<%C(80^ZR zIyw`;A%>+!P^VGkzC)+yb~6vM7xV_IAUIYA5P_o0KkganMvzt?xwPa%=h_@teqlc!Pq**#YF+$UyGs$u-0>8l>zZ5v~T0^ zWM~3IGQ?+f?QUZJV5@rNC1PigHZn;I=H%E3c>GHppU57aqlvzQlM^)msH;#38y^8C znbKGo#Zs-o< zLWVXQAt-*+W3{eSNFtE(JI08SLCOSGd#!Zjwo!4JD;BI|@4`)+0sxt`S2UPea>urVm&%SJQd4ED4Z zaDFv{wZfSaRUyNnEr1*+Y{#^oCe|RyBd-(Fi+kE5Id=N2l@xbE)ki^Y^zK69Chm*@ zEBJniHTp>KmxfedVo?{(e`Yu@+xp49qN6>>V&S~TQyCf8x3Pw&9g#0jbvNkfbn#kI z2X|LoxgR|^Whgz^n|f?=`(Q1oPx%H~5=7VN*FZ`7+9k)MtR)YMYG%w997{_9@lI}_ zGuk9`W-|Mb3KSt0Nz4tkxv6_&SvQswC)hXU*tu?gJ}37hMLc+JvqZq?DQdI&rmbvio9s)%*9Qf)+qSi_5Ya=q}ppW7XD|SYiZ}44) zB9HRl(+Cmw&1p~Zm?24|8{>^Rmy^Y(PAefp&QlTXSy&I$d?fJBDh#8sH=!n9bZ zmzX;D3~Y=!$m9_d&+iJt7G^W}^LP8pQoKY4DqNpa9aNh)$Q2X6U~Yqm!i>e<+tuF6 zt?bB%Y=PqSPE1;EfcMfpb&9e~i=0f85fu+d-0r`k| zqLZ=OQPnsn*A{S4h{D(Msbr2`X#cPLF1?pz`8|c76{=cRIUY&5SIc`zqBT6z^sc!j zsQK8i)_{MRK2mIQq-!peiNT4Ol-jc1u*nb9yr+JWf8h~pZW_i`AlHsIJo>sY5#@U=`f+`mt1qye@aIqBaV>=5N^QiG zrZphwBW*^j=%HtHiVfyV81P5++8I)M^^KejY2hHYWze)1pP}YL3K0jvlTX#FnR39| zH&7aRu4AgdbSqizajf3!{DgY%%BkUGG)QpQ%J*J1&E1zjTpjvIrDfT{QZ4WECE^*S zT!rk>Xn;fsCIQpG!;bhXe}14g`?4D2@(eQxGxshg^Cq?@n-~d#Cb`Wf*X-FLS&fBC zf-*Bcsk0#!LYxB?A?k@@jK|b%Ja=&SHrb%!qR9|k@vP%feuRmZ8UepAueQ*(s^BFb zP?z>@sp#^12~-X~zwctwn`yS$jy-)RJ)^0@T4R`>*o}?o%y!G z2lkU_od;AR5OJv|brGLIEmzPL!VS9)o$iS`#wqYcxY6-N;1@P#-_Ja4h%aW%+gWtSXf=Ghos~dvHTc%1hy&wAcGjk?It617E3yzA~;^ zEvt9a=&WYyq@XWnX6@{PPC3PPSZe21!HwTal!~494PG7biZ%~H!rzNqC%WH<5HoT@ z^$#d-VP(Kt$cL||h+Q7({BQ}^(kP2JKwQ5WZWCix z^Ua3bN_@r2G7oa7N4z&7dU+XAQ00b{pf@aFcNqvGEA7OV-(`{o?9E8 zJ?g&3ibLz3aDvx@ArF;1uECr!U{;|*I$$%yNM{g%n~@D#)8akhpUKLO@H>jP%#;4) z^@`vH=W4}lcym&Yuisx3b=enCY?!Dg&Is#P=`!aCXAGg;GE+a>L)~E;8%Wy2z;vXT zB= zg&I*nAyluQZ*eper`3wYOlA&I`jsA-zO(4{xfoa$c4!o22y5x*?`D-1!pmr3xPWE{ zYZymE(s(HYg9j=5ngH*vuSGE~Y@0*zOpox34zf|#QZ8)d`PdEgFa`(iGc*TN)*R+K zqRGDYIgWl6j9}yKp9KVX0yc3Li+*s+SL!c-vkxK<)S!$y<-+~XQHloP#z2_VCEUjB zb6rn>oY#K(iCMTXN}hElhd9l!f}P_6JEvbT$8)yV3rApd4hFy-&%#9v-xrBrB7jz#{0r4 zgZqQ){lrLiXlyEHwyfJFZLlCF&U2_GOoir;PaWE$Dayn1qr?0+*Inqwu~g`>N8k_t zs1Moiffy=ZLN8@y$jK>n1!~flo7#-8p32a)aSI5l9(=y*O)2PaT{b~&{{go?CQ%8M zFsoEaEQ7ek%%aL27#jU`+tVSAO@1nc&I+o&<>nt5ga^L}@WgJi*L~1~8e_5k^ZX)pyi)F)imc=)LROC_sTS0U zCOW(NI%EYY%+RCBt7pwx**U$|M5Xe|AlrU{AiIIYyeV|GqoG~b>teiTf75x@SqSXn znoaSuE#-h^zvI!5n=j9u#xB>%*{9=t+B$eq<%Zt0Xfl&wX-QJ*QDp#ANy=Rf2r$dMc^+6$<6rdi!sYd7n$gqC2gkav}^cmHQFV} zj+9D7RV@;gsxy&0JuZyuatN)w{&XkOkck87Q$`Vq5Zp`mEEWr_9)Mq77)IW7@@e~> z&hzBhk8UL(?C6hnFGRmEO<~)U3FTDedCD`f692JC71R~~)V?>EQt!_nP(->X-z=(9 z6bXUQ9Y{kBvf8_&^x5UEFDB>f0*v=*LLmYnSczidunK`bCzYK^coQS&Gei>1cYPMZ zQxo>%KDvd++X^GK&7S^?_7w$wM|p>yR@-&ntk~$jAo<$i?W!~vU^oP7*U(Bw27-z7 z>oF8mP}71=X-{wDF3)=*tF)BnW#@GFWpA=o@S7zqi6UYb&Fk}rNtHSGePYXjiS;2e zS*rVaEI#~T`2NasMguGg4=_hh2w4d4UM0C2wMlI&u{MH>^%bCv{rky`t>LdDrNgrw z!^1}h3Ckwwlgn=DQhr|pb&r2KCSDxBO4c|rcaBV;*$0|vsHW#gh0-0uIy6E!VLWFb zn?ZbjacB}_qI!s^fTrH{pd(lPe`j2*%ev{5`ne#VQkv^{X%?I7cp2FXnF&)a3`vyS z@AfJzp-^;y0*3jwys0ds;l4Hih!8%$TUL8S{wPuLqvjpkcbmQ1n((wt?m{v#I7RZ} z;yJGd8RJ8^+;>5K60*EODb^PkFFDj83RC?*2|cQqMdOrjErxnID&XlsUlNRlmFdZo zoNle_DMBTJP5fJ2Uv9E0cwFQ34r`a2n$mjqtPVDUO)H# zP7kZd&UjNGePZ_EBfn?N?dc8|@}*DDetaCJmm}4~MDFD2{e82UxZ@QVec2g*Rh3y6 zw9>4XfLL&)AVU-5e7lnX8Iua-l$a>8WM2{-L!{~kOYXEWS^J&2%pMFmJsoIzjRPa-LPxS zrOvU@HSwV*M(IenAdj%^=@d!EEMVspbFJ5!hUCfO54T(x~0xS znBue6Bnw<3wUjiRfh08>FR)jYjpvegb;jj=9C|gyFXQ*)k`(EFSq`;7Goir8^Sa;5 zuK*mK*Er1^Lupqk!9XZ8F#X))m3z!yBBCmwK`8?td@kM?y>duOY4)I|JI{wr@=UnmTP(2ni7s{Mr?V7y8s+)AA*W0&+%hMV8H@NXYr%R*eQ_m<6voW1uXpW-_@~kQ*|E#EL zTEZ%VXXQsU*af`puJZg0jT-{{%g}f4=YRMvL(?j;$#V*GXMVxJ$K*-Xl${vJU`2lz zm%}!&NdWQ)g9;abnsAA6cjtc$uRc+l>K(>%*%3TvE^Km|=W=t$KwyX4IRMcmze!t+ z5?|AYvAW#x;5ifg<8frMW1sYiDh5->Gh9;Fv&pbMw)DFakHaPtMh^)4l|Wce%fGAM zRCI2#A%UlS_%ZnKU54gApR4}&^aILI@kp@Z_Z&x>h2-C+D!z<}e@K1;#sT2x`uP4f ziXfmnQ!e(MQu`H%(EQ5){+9^NnH~CTzdr{eH2hpN?8Tgc!Zt{`7+3b?&Q~BpgA}Qd z`RCQEIRmAnp?>^#5t^IR1c+nF`PQN*|KRpodj6LPO@syCO7+>KC@YUGI$S*H`}5`w zp|9?9sr>~TOBmhfSrN5*K!nDgi{fpKLu7PkwY2_h!Ce>CF_9ybkjNdT6U7%>gZBRd zz9AAP1upOi?+@CqX9#lPU7p;|IOBZ9<4E9tF8`-n{yV3GrA*vpj_KhldL%npdvWMd zc~B~fc8lVuzTxN#(xV{Odg7m};bM-BU1OmHmSs04b%L980t9=BEP#Qw>fc756MJDBStyhj(ELu_LMq76Glcsbk1xD;E z5|L@;no|n+aHp6KGIf5N;T%~=zCQ}b8ArVeoocLyXoOI`G=r%@r24f(egjVRKlbF_1Sq@x3Bo;OAARrn<#@p zbBDq+3z9AK%d~ypzIK-P?G7K-V%;3}(1ER-8xHT?C#RY=SXDZ=C}I+q8E98KePC@Q zz-12leI_{mbtcHjXsoXn_SeZA{*(@#Eqg(kqtM|eg#I`Oy~v=celE3EkP$2g^*x3l zYpY-Q=zEWX$_Qv9XFdCa{W${jtk@V|B)k&N!+ z)lPXif?!klx6u}ABT=^wGR&HWqG`j%07h*5QfDK6RVAQx zNBEa_h6_N%)D&r&rjd>wNjA;I15%K^8M3dqI2_47)ipkq=r1S6X0ltHl7x=_#Cg`Z6(`@ZjR_Jj&#a%h2??F_;umN@6c1;;BCRX@3r z$%pyz<5A}3`6D*$S7IvEH}CWflliXIj`oT}MKQ!fyZZ}rYwfJikuG*szHzBzMX(mi zP=!HAX)p=4O4S{5rLfhx=RkqDUSZ{(B5sm8ODW}0v?%Yzh2a*bnv*gqY4+N$ZPAo* zl%;>3rzT#s+MO&FK1LP#03i&-NP*zhZ+PLT6URL}Ta*wxHQ^g<_BpXv;C??2aaVV6bCV(S>6 z!)xIv1ODeAr&v+#OFrUHIyEK@&@=MS{qu({Q_w|5l~#V(tw*(A(7&2;0x8P=&%@LW zwwPB*@?IJwHuFi`I+849l@QJHs$h6(^18&tXH<3KWHnKbk|RT!1T_O`5}Mzov8wGZ zfW>?8A1CahGGm%NqRoqRy#K6!&HkvdU7b;DamrZXmBjt>1q;cKmXU8SHu2^#DYz8$ z#Vx(vB0etkuC)##}99Qq>%*`D@@8{ND(3MIlmOb`Yy3BM1dwS9=rgT_?SoXJd z)uq_)c8Kik@dxo>_sZ_Nj94vJGJTQph6!+kAg!faK@QJ6mN~*b>Uko1ZFYzQtHL0M zYcTLc8Kg&j{`2PCf6cD_=kkBL<@;RwpH7D(swo?53YB*Luz~#w>@GsdsxFUpfgSTB z_|>bfeEMO`X!HvLrgP|;;GWngl;dZPSFvg$yV5alheMNVTd-WpJY_(c%|Nl6RJe3$0I?;<;lv_Amz(afD zc0}ug!e7v!pv*`ctuP|;tl;aD>yi=R9yY;Ef^sf@^JE2Q?B4w1Xtqse7l%(0tnj3$ zlU0AcO_@#86P?#mtGX-PR&@M}hw$0+XOk_;ZJcuM^Mn58S|kSW7uc{9Ky2bp$>QH! z*$3ul@C)!ca16Sp|1HS$d)ij-B#sNW$0&dEaHU3t%_`R=!?~|A^*8X&&ip$m6P$iv zF0^X=&FeK%{TC%kIt4V;P>avX6x ziP&l%4k?(nu8pckefxK>e(W*P5$CFayCsX#67T%BcyO^;%jJOCB0B9;C-e!u(rI*PCb!m~6i83O5ew zH^azs=u`umIm~&tTVkzm|A}Ma9L3IcZ@&67t>WP`OlmN^`|F&hzNuhB3>?PX1y%`C{I z4K|E9(XebS8wG5{N0dLudbQzJlWh8!ejf4a-IvQqN`X(YPr%Z&0xe~YIF}U@88Vem zt_dJf2MY*N&fD>aKZW;}G65g$+( z$yGA1w5H@5IZ7E6bv`+<8{HF@p1D;fN{;`-l7=lVh=jBMlJm`I>J2UsGi2s5(+wx7 zEA&3xdN|7P%Jm%Pv@JxA>?CY5gFQ5fp12!(^76h!rck7ZKe>K zKGwn+UCyGP+mcvTe6MPsg2jVq+cMa(C*9#oFj>#5*OD>D0FP%mlGniM?0`>2ugzQ& z**aUf!SsmQd{1#t0$6tC+Qe`<*DH5&_ZT2W0%hvEdS->|#+Q#>z5P^E*q4#Q38v$z z*xUg9yHDBijfD(~96?U$qu`@qHP}Z+TCC&LLX)g`a@e5>zZ{;)fDTqr`)rgjHa`9c z{~INH(=90(KTX3krq?sHQ{Y}$2w%5_j`YRb}5O=KQ-iT4VB$*uc! z$N$aBZ1+~ndu{aY|Jm`0>Gg%qACx!cOK-<{MUv{bG)m+{kbfg{_fwE%UZY0gn$Q1Jic<;lW{^-_uc&; z_a_1OZM?K{{T;e~`3m)@E&BFzPVqi)Q4D;S^3>}2i&?KqQx9J55>37CzA!2D_LEQh zPqT9WJ8ml(xcA^Zy}xpQ7xqOy#$LqFyb4^h@Ju9O1^a}inK4|sTY7<~-Rupn`1oR8 zmz>8VcBxkv7bhIMKRv@9xClq;7SJD^Rj*&n5c!j_ZgECzUV*S|^}CpWMGG^zW`UNo zEWMy=K1b;7|B3FW)QrRVm+b!k!gQH}x9yZgmYbD;2jA~Ez2gU5O!Ra4p8~Hf@x0xa z16)~sy{CoDsRv#G#ryg+_j0p%yE$D|8*^`!0F$Fj;=-z`ml9<*5oZ2jVmPXsG}Adj z>s44a`|T&*SJs-Y<{HkhIL_x*m~GLb(yF<)xikLmO?^07UcwbPYwl`tePUJM+Z%ym zT~FA|FK*195%aG4im|5oot1tTp&R`UbJc6fhposhQg7*h0=x#~O-awi%YT3ynM|Je zGoDZG|9g3E^Zxa-IF^fWWXY{k^kzS_&%j+dPc^Kc~8_YR*UY)@KfFEpEyzaUfD18>$fux%fAntv9$Br*Y8h( zr`iNu`sni7RDVj9l&f&z?}NQ+{^1XV&dM)kaKG(-Tz@+Ea*=(m$5(A|e;6iW^73WH z)URs5tiQAU-oA0Sn`bdwCy^bkJxLjGes7v?el(KwfpzP+TGDZq;Jok zqR0fn+~pUX6}?5KyznfSI=9R~ZB|Q+^R+KmELvTprY$eMm~s#3*ej>qKgVlkTvT~^ zt6j}z{j1E{B4FL~&bTCoYt^E-u!*OEX}`=QarcWm@wHzkaZldj=l`<%-?^#Mem{W` z;c`9j_>1oX+94K8A9xC{%)ZUN^h^1>bj<_B_b)%(#QEfFd~AGccGcVZ=@%!9l%Dxj zzOXd##0*y)^?M{g@J^Wt&s;t|58oxT*Z*Mq|1H+6%D3X*wLH7}HND?;e(hG_ve$nv z3Rqmc;PRE>^Y-0A$NTCnoIbK0%GJD*SVP7M3<#Wwb_#*D6zZ?Rdk?<|}X ziK9g&3EXg0BXw)}&P9KohCA6FyD~fT@2^=eD@%6%T+-Euy`WWl7*g@&$-&icdzUKq zfvOl^pMCZ9S0|r~*FB_pNE3Jf3Hr>5r$y)-lP!V80hvja^|6YYE~n?R?32KeeMTFi z!>oz8iuv|S8Z#U`D*I`v=Ox+$;@?34e@Az9M=*W{u= Qhln$Hy85}Sb4q9e0Qj^>" */ value: string; + /** Resolved fields if the type alias points to a plain object interface */ + resolvedFields?: ResolvedTypeFields; } interface EventPayloadField { @@ -475,6 +488,175 @@ function extractPayloadFields(sf: SourceFile, interfaceName: string): EventPaylo .filter((f): f is EventPayloadField => f !== null); } +/** + * Resolve a module specifier to an absolute .ts file path. + * Handles: relative ("./" "../"), @webiny/* aliases, and "~/*" (local src alias). + */ +function resolveModuleSpecifier( + sf: SourceFile, + modSpec: string, + pkgMap: Map +): string | null { + if (modSpec.startsWith(".")) { + return join(sf.getDirectoryPath(), modSpec.replace(/\.js$/, ".ts")); + } + if (modSpec.startsWith("~/")) { + // "~/" maps to the "src/" root of the current package. + // Walk up from the current file to find the "src" directory boundary. + const parts = sf.getFilePath().split("/"); + const srcIdx = parts.lastIndexOf("src"); + if (srcIdx !== -1) { + const srcRoot = parts.slice(0, srcIdx + 1).join("/"); + return join(srcRoot, modSpec.slice(2).replace(/\.js$/, ".ts")); + } + return null; + } + return resolveWebinyImport(modSpec, pkgMap); +} + +/** + * Given a type alias name (e.g. "InstallSystemInput") in a source file, resolves it to + * an object interface and returns its fields. Only resolves simple aliases: + * type Foo = SomeInterface → fields of SomeInterface + * type Foo = SomeInterface[] → fields of SomeInterface (isArray=true) + * Skips generics, unions, Promise<...>, primitives, etc. + * Follows re-exports into sibling files. + */ +function resolveTypeToFields( + sf: SourceFile, + typeName: string, + pkgMap: Map, + visited = new Set() +): ResolvedTypeFields | null { + const filePath = sf.getFilePath(); + if (visited.has(filePath)) return null; + visited.add(filePath); + + // Find the type alias in this file + const typeAlias = sf.getTypeAliases().find(t => t.getName() === typeName); + if (typeAlias) { + const typeNode = typeAlias.getTypeNode(); + if (!typeNode) return null; + const typeText = typeNode.getText().trim(); + + // Skip anything with generics, unions, intersections, Promise, or primitives + if ( + typeText.includes("<") || + typeText.includes("|") || + typeText.includes("&") || + typeText === "string" || + typeText === "number" || + typeText === "boolean" || + typeText === "any" || + typeText === "void" || + typeText === "unknown" + ) { + return null; + } + + // Array alias: type Foo = Bar[] + const arrayMatch = typeText.match(/^(\w+)\[\]$/); + if (arrayMatch) { + const innerName = arrayMatch[1]; + const inner = resolveInterfaceFields(sf, innerName, pkgMap); + if (!inner) return null; + return { typeName: innerName, isArray: true, jsDoc: inner.jsDoc, fields: inner.fields }; + } + + // Direct alias: type Foo = Bar + if (/^\w+$/.test(typeText)) { + const inner = resolveInterfaceFields(sf, typeText, pkgMap); + if (!inner) return null; + return { typeName: typeText, isArray: false, jsDoc: inner.jsDoc, fields: inner.fields }; + } + + return null; + } + + // Follow re-exports + for (const decl of sf.getExportDeclarations()) { + const modSpec = decl.getModuleSpecifierValue(); + if (!modSpec) continue; + const resolvedPath = resolveModuleSpecifier(sf, modSpec, pkgMap); + if (!resolvedPath || !existsSync(resolvedPath)) continue; + try { + const siblingSf = sf.getProject().addSourceFileAtPath(resolvedPath); + const result = resolveTypeToFields(siblingSf, typeName, pkgMap, visited); + if (result) return result; + } catch { + continue; + } + } + + return null; +} + +/** + * Find an interface by name in a source file (or via imports) and return its fields + JSDoc. + */ +function resolveInterfaceFields( + sf: SourceFile, + interfaceName: string, + pkgMap: Map, + visited = new Set() +): { fields: EventPayloadField[]; jsDoc: string } | null { + const filePath = sf.getFilePath(); + if (visited.has(filePath)) return null; + visited.add(filePath); + + // Look for the interface in this file + const allIfaces = [ + ...sf.getInterfaces(), + ...sf.getStatements().filter(Node.isInterfaceDeclaration) + ].filter(Node.isInterfaceDeclaration); + + const iface = allIfaces.find(i => i.getName() === interfaceName); + if (iface) { + const fields = iface.getProperties().map(p => ({ + name: p.getName(), + typeText: p.getTypeNode()?.getText() ?? "unknown", + optional: p.hasQuestionToken() + })); + return { fields, jsDoc: extractJsDoc(iface) }; + } + + // Follow named imports + for (const decl of sf.getImportDeclarations()) { + const named = decl.getNamedImports().find(n => n.getName() === interfaceName); + if (!named) continue; + const modSpec = decl.getModuleSpecifierValue(); + const resolvedPath = resolveModuleSpecifier(sf, modSpec, pkgMap); + if (!resolvedPath || !existsSync(resolvedPath)) continue; + try { + const siblingSf = sf.getProject().addSourceFileAtPath(resolvedPath); + const result = resolveInterfaceFields(siblingSf, interfaceName, pkgMap, visited); + if (result) return result; + } catch { + continue; + } + } + + // Follow re-exports (export * from "..." or export { X } from "...") + for (const decl of sf.getExportDeclarations()) { + const namedExports = decl.getNamedExports(); + // Only follow if it's export * or exports our interface name + if (namedExports.length > 0 && !namedExports.some(n => n.getName() === interfaceName)) continue; + const modSpec = decl.getModuleSpecifierValue(); + if (!modSpec) continue; + const resolvedPath = resolveModuleSpecifier(sf, modSpec, pkgMap); + if (!resolvedPath || !existsSync(resolvedPath)) continue; + try { + const siblingSf = sf.getProject().addSourceFileAtPath(resolvedPath); + const result = resolveInterfaceFields(siblingSf, interfaceName, pkgMap, visited); + if (result) return result; + } catch { + continue; + } + } + + return null; +} + /** Extract namespace type members as NamespaceMember[] */ function extractNamespaceTypes(sf: SourceFile, namespaceName: string): NamespaceMember[] { const allModules = sf.getModules(); @@ -748,6 +930,22 @@ function extractSymbol(sf: SourceFile, name: string): ExtractedSymbol | null { })() : extractNamespaceTypes(sf, name); + // For each namespace type that's a resolvable alias (Input, etc.), try to resolve fields + const nodeSfForTypes = node.getSourceFile(); + namespaceTypes = namespaceTypes.map(t => { + // Skip Interface/Return/Errors — only resolve plain input/data types + if (t.name === "Interface" || t.name === "Return" || t.name === "Errors") return t; + // value is the raw type text e.g. "InstallSystemInput" — only try simple identifiers + if (!/^\w+$/.test(t.value.trim())) return t; + try { + const resolved = resolveTypeToFields(nodeSfForTypes, t.value.trim(), PKG_MAP); + if (resolved && resolved.fields.length > 0) return { ...t, resolvedFields: resolved }; + } catch { + // ignore + } + return t; + }); + return { name, kind: "abstraction", @@ -1104,7 +1302,7 @@ function renderSymbolSection( // Abstraction: rich rendering // ------------------------------------------------------------------------- if (sym.kind === "abstraction") { - // Interface section — description paragraph + method table + // Interface section — description, code block for signatures, table for descriptions if (sym.interfaceMembers && sym.interfaceMembers.length > 0) { lines.push(`**Interface \`${sym.name}.Interface\`:**`); lines.push(""); @@ -1112,14 +1310,27 @@ function renderSymbolSection( lines.push(sym.interfaceJsDoc); lines.push(""); } - lines.push("| Method | Description |"); - lines.push("| ------ | ----------- |"); + // Full signatures in a code block + lines.push("```typescript"); + lines.push(`interface ${sym.name}.Interface {`); for (const m of sym.interfaceMembers) { - const sig = m.signature.replace(/\|/g, "\\|"); - const desc = m.jsDoc ? m.jsDoc.replace(/\|/g, "\\|") : "—"; - lines.push(`| \`${sig}\` | ${desc} |`); + lines.push(` ${m.signature};`); } + lines.push("}"); + lines.push("```"); lines.push(""); + // Description table — only rendered if any member has JSDoc + const hasAnyJsDoc = sym.interfaceMembers.some(m => m.jsDoc); + if (hasAnyJsDoc) { + lines.push("| Method | Description |"); + lines.push("| ------ | ----------- |"); + for (const m of sym.interfaceMembers) { + const methodName = m.signature.split("(")[0].trim(); + const desc = m.jsDoc ? m.jsDoc.replace(/\|/g, "\\|") : "—"; + lines.push(`| \`${methodName}()\` | ${desc} |`); + } + lines.push(""); + } } // Event payload section @@ -1152,6 +1363,26 @@ function renderSymbolSection( lines.push("}"); lines.push("```"); lines.push(""); + + // For each resolved type, emit a field table + for (const t of sym.namespaceTypes) { + if (!t.resolvedFields || t.resolvedFields.fields.length === 0) continue; + const { typeName, isArray, jsDoc, fields } = t.resolvedFields; + const label = isArray ? `${typeName}[]` : typeName; + lines.push(`**\`${t.name}\` — \`${label}\`:**`); + lines.push(""); + if (jsDoc) { + lines.push(jsDoc); + lines.push(""); + } + lines.push("| Field | Type | Required | Description |"); + lines.push("| ----- | ---- | -------- | ----------- |"); + for (const f of fields) { + const req = f.optional ? "no" : "yes"; + lines.push(`| \`${f.name}\` | \`${f.typeText.replace(/\|/g, "\\|")}\` | ${req} | — |`); + } + lines.push(""); + } } // Usage snippet From 1f7c6203dfc4e774b18e6d88d77f04109724a572 Mon Sep 17 00:00:00 2001 From: adrians5j Date: Fri, 13 Mar 2026 10:40:16 +0100 Subject: [PATCH 12/13] wip:13 (3en2k) --- .../6.x/infrastructure/ci-cd.ai.txt | 56 + .../6.x/infrastructure/ci-cd.mdx | 131 ++ .../deploy-webiny-project-cf-template.mdx | 8 +- .../6.x/infrastructure/github-actions.ai.txt | 75 ++ .../6.x/infrastructure/github-actions.mdx | 189 +++ docs/developer-docs/6.x/navigation.tsx | 4 +- docs/developer-docs/6.x/reference/admin.mdx | 57 - .../6.x/reference/admin/build-params.mdx | 38 - .../6.x/reference/admin/graphql-client.mdx | 19 - .../6.x/reference/admin/security.mdx | 95 -- .../6.x/reference/api/build-params.mdx | 38 - .../6.x/reference/api/cms/entry.mdx | 1107 ----------------- .../6.x/reference/api/cms/group.mdx | 228 ---- .../6.x/reference/api/cms/model.mdx | 304 ----- .../6.x/reference/api/graphql.mdx | 27 +- .../6.x/reference/api/key-value-store.mdx | 38 - .../6.x/reference/api/logger.mdx | 19 - .../6.x/reference/api/security.mdx | 133 -- .../6.x/reference/api/security/api-key.mdx | 247 ---- .../reference/api/security/authentication.mdx | 38 - .../6.x/reference/api/security/role.mdx | 209 ---- .../6.x/reference/api/security/user.mdx | 228 ---- .../6.x/reference/api/system.mdx | 38 - .../6.x/reference/api/tasks.mdx | 38 - .../6.x/reference/api/tenancy.mdx | 323 ----- .../6.x/reference/api/tenant-manager.mdx | 19 - .../reference/api/website-builder/nextjs.mdx | 19 - .../reference/api/website-builder/page.mdx | 534 -------- .../api/website-builder/redirect.mdx | 306 ----- .../6.x/reference/cli/command.mdx | 17 - .../6.x/reference/cli/overview.mdx | 38 - .../6.x/reference/infra/admin.mdx | 131 -- .../6.x/reference/infra/api.mdx | 131 -- .../6.x/reference/infra/core.mdx | 112 -- .../6.x/reference/infra/overview.mdx | 228 ---- img_2.png | Bin 0 -> 198052 bytes scripts/generate-reference.ts | 177 ++- 37 files changed, 604 insertions(+), 4795 deletions(-) create mode 100644 docs/developer-docs/6.x/infrastructure/ci-cd.ai.txt create mode 100644 docs/developer-docs/6.x/infrastructure/ci-cd.mdx create mode 100644 docs/developer-docs/6.x/infrastructure/github-actions.ai.txt create mode 100644 docs/developer-docs/6.x/infrastructure/github-actions.mdx create mode 100644 img_2.png diff --git a/docs/developer-docs/6.x/infrastructure/ci-cd.ai.txt b/docs/developer-docs/6.x/infrastructure/ci-cd.ai.txt new file mode 100644 index 000000000..d1a8f9bf8 --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/ci-cd.ai.txt @@ -0,0 +1,56 @@ +AI Context: CI/CD (ci-cd.mdx) + +## Source of Information + +1. `docs/developer-docs/5.x/core-development-concepts/ci-cd/introduction.mdx` — overview and phases +2. `docs/developer-docs/5.x/core-development-concepts/ci-cd/environments.mdx` — shared/isolated environments, AWS accounts +3. `docs/developer-docs/5.x/core-development-concepts/ci-cd/version-control.mdx` — GitHub flow, branching +4. `docs/developer-docs/5.x/core-development-concepts/ci-cd/cloud-infrastructure-state-files.mdx` — Pulumi backends +5. `docs/developer-docs/5.x/core-development-concepts/ci-cd/workflows.mdx` — merging strategies, release cycle + +## Key Documentation Decisions + +1. Six v5 articles collapsed into one — target audience is experienced AWS/DevOps engineers who don't need CI/CD explained +2. Removed: what is CI/CD, CI/CD phases diagram, what is Git/GitHub, what is Pulumi (assumed knowledge) +3. Removed: references to v5 scaffold (`yarn webiny scaffold`) — not relevant in v6 +4. Removed: "Can I bring additional tools?" FAQ — too basic +5. Removed: testing article content — not in scope for this article +6. Kept: environment table, AWS accounts recommendation, branching strategy, Pulumi state backend options, deployment flow, hot fix pattern +7. GitHub Actions is a separate article (`github-actions.mdx`) +8. Staging merge strategy: kept the recommended "PR against staging, then sync back to dev" approach +9. No version references anywhere + +## Understanding + +### Environment structure +- 3 shared long-lived: dev, staging, prod +- Isolated: per developer, per developer AWS account +- Each shared env: own AWS account, own S3 bucket for Pulumi state + +### Pulumi state backends +- Local `.pulumi` folder: developer environments only, not in VCS +- S3: recommended for shared envs; one bucket per env/account; set via `WEBINY_PULUMI_BACKEND=s3://...` +- Pulumi Service: managed option with locking/history; set via `WEBINY_PULUMI_BACKEND=https://api.pulumi.com` + `PULUMI_ACCESS_TOKEN` +- When using Pulumi Service: remove `PULUMI_SECRETS_PROVIDER` and `PULUMI_CONFIG_PASSPHRASE` + +### Deployment flow +feature branch → PR → dev → PR → staging → PR → prod + +### Hot fix flow +PR directly to prod → merge prod → staging → dev + +### Staging merge strategy (recommended) +Fix bugs found in staging by PRing against staging (not dev). At end of cycle, merge staging back to dev. + +## Related Documents + +- `infrastructure/github-actions.mdx` — GitHub Actions workflow setup +- `infrastructure/deploy-webiny-project-cf-template.mdx` — IAM permissions for CI/CD +- `infrastructure/deployment-modes.mdx` — dev vs prod infrastructure differences + +## Tone Guidelines + +- Assumes experienced AWS/DevOps audience — no hand-holding on basic concepts +- Prescriptive: "the recommended setup is..." not "you could consider..." +- Table-driven where possible for environment/backend comparison +- FAQ section for edge cases only diff --git a/docs/developer-docs/6.x/infrastructure/ci-cd.mdx b/docs/developer-docs/6.x/infrastructure/ci-cd.mdx new file mode 100644 index 000000000..8a4c64743 --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/ci-cd.mdx @@ -0,0 +1,131 @@ +--- +id: infra6cicd +title: CI/CD +description: Best practices for structuring environments, branches, Pulumi state, and deployment workflows for a Webiny project. +--- + +import { Alert } from "@/components/Alert"; + + + +- How to organize environments and AWS accounts +- How to structure Git branches to mirror environments +- How to store Pulumi state files for shared environments +- How deployments flow from `dev` → `staging` → `prod` + + + +## Overview + +This article covers the recommended CI/CD setup for a Webiny project. It assumes you are already familiar with CI/CD concepts and focuses on the decisions that are specific to Webiny — environments, branching, Pulumi state management, and deployment workflow. + +## Environments + +### Shared Environments + +The recommended minimum is three long-lived shared environments: + +| Environment | Purpose | +| ----------- | ------------------------------------------------------------ | +| `dev` | Integration target for all feature branches; may be unstable | +| `staging` | Production-like environment for release candidate testing | +| `prod` | Live system used by real users; must remain stable | + +Each push to a shared branch should automatically trigger a deployment into its respective environment. + +### Isolated Environments + +Developers deploy their own short-lived isolated environments for local development and testing. These are deployed from a developer's machine and destroyed when no longer needed. Each developer should use their own AWS account to avoid interfering with shared environments. + +### AWS Accounts + +The recommended setup is one AWS account per environment — one for `dev`, one for `staging`, one for `prod`, and one per developer for isolated work. [AWS Organizations](https://aws.amazon.com/organizations/) makes managing multiple accounts easier. + +Using separate accounts means AWS credentials, Pulumi state buckets, and permissions are fully isolated between environments. + +**Consider a dedicated account for ephemeral environments.** If you run ephemeral PR environments in the same AWS account as your long-lived `dev` environment, the account may accumulate orphaned resources over time. Tools like [aws-nuke](https://github.com/ekristen/aws-nuke) can clean these up, but they cannot safely run against an account that also holds a live environment. By routing all ephemeral environments into a dedicated fourth account — separate from `dev`, `staging`, and `prod` — you can safely run aws-nuke or similar tools against that account on a schedule without risking your long-lived environments. + +## Branching Strategy + +Mirror your environments with long-lived Git branches: `dev`, `staging`, and `prod`. Protect all three against direct pushes — all changes should go through pull requests. + +Set `dev` as the default branch. All feature branches are created from `dev` and pull requests target `dev`. + +Short-lived branches follow this flow: + +``` +feature/my-change → (PR) → dev → (PR) → staging → (PR) → prod +``` + +### Hot Fixes + +If a critical bug needs an immediate fix in production, a PR can be raised directly against `prod`. Once merged, sync the fix back down: merge `prod` → `staging` → `dev`. + +## Pulumi State Files + +Webiny uses [Pulumi](https://www.pulumi.com/) for infrastructure deployments. Pulumi records the state of all deployed resources in state files — these must not be lost. + +### Local File System (default) + +By default, state files are stored in `.pulumi` folders within the project. This is suitable for individual developer environments only. The `.pulumi` folder is not checked into version control. + +### Amazon S3 (recommended for shared environments) + +For `dev`, `staging`, and `prod`, store state files in an S3 bucket within the same AWS account used for that environment. Create the bucket manually before the first deployment, then set: + +```bash +WEBINY_PULUMI_BACKEND=s3://your-bucket-name +``` + +Since each environment uses its own AWS account, you end up with one S3 bucket per environment. + +### Pulumi Service + +Alternatively, use the [Pulumi Service](https://www.pulumi.com/product/pulumi-cloud/) for managed state storage with built-in locking, history, and secret encryption: + +```bash +WEBINY_PULUMI_BACKEND=https://api.pulumi.com +PULUMI_ACCESS_TOKEN=pul-xyzabc123 +``` + +When using Pulumi Service, remove `PULUMI_SECRETS_PROVIDER` and `PULUMI_CONFIG_PASSPHRASE` — the service provides its own secrets handling. + + + +Do not lose your `PULUMI_CONFIG_PASSPHRASE` when using the passphrase secrets provider. Without it, you cannot redeploy or destroy existing infrastructure. + + + +## Deployment Workflow + +### 1. Feature development + +A developer branches from `dev`, makes changes, and opens a PR back to `dev`. Tests run against a short-lived ephemeral environment. On approval, the branch is merged and the `dev` environment is redeployed. + +### 2. Release to staging + +When `dev` is ready for a release, open a PR from `dev` → `staging`. Once merged, `staging` is redeployed. QA and stakeholders test the release candidate. + +If bugs are found in `staging`, raise fixes as PRs against `staging` directly (not `dev`). At the end of the release cycle, merge `staging` back into `dev` to keep them in sync. + +### 3. Release to production + +Once `staging` is approved, open a PR from `staging` → `prod`. Once merged, `prod` is redeployed and the release is live. + +## GitHub Actions + +Everything outlined in this article is implemented in the ready-made GitHub Actions workflow files Webiny provides. See [GitHub Actions](/{version}/infrastructure/github-actions) for the full setup guide — workflow files, OIDC authentication, and required repository secrets. + +## FAQ + +### Can I have more than three shared environments? + +Yes. Add additional long-lived branches and environments as needed — a common addition is a `uat` environment between `staging` and `prod`. + +### Are environment names fixed? + +No. `dev`, `staging`, and `prod` are conventions, not hard-coded values. Use whatever naming your organization follows. + +### What happens if two deployments are triggered simultaneously? + +Pulumi locks state during a deployment. The second deployment will be rejected with an error until the first completes. diff --git a/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx index 8289fd18b..9b7585d59 100644 --- a/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx +++ b/docs/developer-docs/6.x/infrastructure/deploy-webiny-project-cf-template.mdx @@ -1,6 +1,6 @@ --- id: infra6cft1 -title: '"Deploy Webiny Project" AWS CloudFormation Template' +title: AWS CloudFormation Template description: Use the official AWS CloudFormation template to deploy Webiny with a least-privilege IAM role. --- @@ -21,6 +21,8 @@ You can inspect the full template before deploying: [view on GitHub](https://git ## Deploying the Template -Click the link below to open the AWS CloudFormation console with the template pre-loaded and deploy it into your AWS account: +Before deploying, create an IAM role in your AWS account that will be used for Webiny deployments. The template does not create the role itself — it attaches the required managed policies to a role you provide. -[Launch "Deploy Webiny Project" stack](https://console.aws.amazon.com/cloudformation/home?#/stacks/create/review?templateURL=https://raw.githubusercontent.com/webiny/webiny-js/refs/heads/next/docs/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE_V6.yaml&stackName=DeployWebinyProject) +Once the role exists, click the link below to open the AWS CloudFormation console with the template pre-loaded. When prompted, enter the name of the IAM role you created: + +[Launch "Deploy Webiny Project" stack](https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://webiny-public.s3.us-east-2.amazonaws.com/cloudformation/DEPLOY_WEBINY_PROJECT_CF_TEMPLATE_V6.yaml&stackName=DeployWebinyProject) diff --git a/docs/developer-docs/6.x/infrastructure/github-actions.ai.txt b/docs/developer-docs/6.x/infrastructure/github-actions.ai.txt new file mode 100644 index 000000000..3933db1ab --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/github-actions.ai.txt @@ -0,0 +1,75 @@ +AI Context: GitHub Actions (github-actions.mdx) + +## Source of Information + +1. `~/dev/wby-next4/docs/gh-actions-workflows/pushDev.yml` — dev push workflow +2. `~/dev/wby-next4/docs/gh-actions-workflows/pushStaging.yml` — staging push workflow +3. `~/dev/wby-next4/docs/gh-actions-workflows/pushProd.yml` — prod push workflow +4. `~/dev/wby-next4/docs/gh-actions-workflows/pullRequest.yml` — PR workflow (ephemeral env) +5. `~/dev/wby-next4/docs/gh-actions-workflows/pullRequestClosed.yml` — PR closed (destroy env) +6. `docs/developer-docs/5.x/core-development-concepts/ci-cd/setup.mdx` — v5 reference + +## Key Documentation Decisions + +1. No scaffold — users copy workflow files manually from GitHub +2. OIDC authentication is the central new concept vs v5; no static AWS_ACCESS_KEY_ID/SECRET in these workflows +3. `AWS_ROLE_ARN` replaces `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` +4. Pull request environments documented as a first-class feature (not mentioned in previous version) +5. `WEBINY_PROJECT_ID` and `WEBINY_PROJECT_API_KEY` are new secrets not in v5 docs +6. `DEV_WEBINY_PULUMI_BACKEND_PULL_REQUESTS` is separate from `DEV_WEBINY_PULUMI_BACKEND` +7. OpenSearch secrets documented as conditional (only for DynamoDB + OpenSearch setup) +8. `concurrency` setting documented — prevents parallel deploys to same environment + +## Understanding + +### Workflow files (5 total) + +- pushDev.yml — triggered on push to `dev`; format + lint + `yarn webiny deploy --env dev` +- pushStaging.yml — triggered on push to `staging`; format + lint + deploy staging +- pushProd.yml — triggered on push to `prod`; format + lint + deploy prod +- pullRequest.yml — triggered on PR to `dev`; static analysis job + deploy job (deploys core + api + admin to `pr{number}` env) +- pullRequestClosed.yml — triggered on PR closed to `dev`; destroys `pr{number}` env + +### OIDC authentication + +- `permissions: id-token: write` enables OIDC token generation +- `aws-actions/configure-aws-credentials@v4` with `role-to-assume: ${{ secrets.DEV_AWS_ROLE_ARN }}` +- No static AWS credentials stored — short-lived token assumed per run +- Requires IAM role in each AWS account that trusts the GitHub OIDC provider + +### Full secrets list + +AWS: +- DEV/STAGING/PROD_AWS_ROLE_ARN +- DEV/STAGING/PROD_AWS_REGION + +Pulumi: +- DEV/STAGING/PROD_PULUMI_SECRETS_PROVIDER +- DEV/STAGING/PROD_PULUMI_CONFIG_PASSPHRASE +- DEV/STAGING/PROD_WEBINY_PULUMI_BACKEND +- DEV_WEBINY_PULUMI_BACKEND_PULL_REQUESTS (PR environments only) + +Webiny: +- DEV/STAGING/PROD_WEBINY_PROJECT_ID +- DEV/STAGING/PROD_WEBINY_PROJECT_API_KEY + +OpenSearch (conditional): +- DEV_OPENSEARCH_DOMAIN_NAME +- OPENSEARCH_INDEX_PREFIX is set inline as `pr${{ github.event.pull_request.number }}` — not a secret + +### PR environment naming + +Env name: `pr{number}` e.g. `pr42` +Set via: `--env pr${{ github.event.pull_request.number }}` +Destroyed via: `yarn webiny destroy --env pr{number} --confirm-destroy-env pr{number} --debug` + +## Related Documents + +- `infrastructure/ci-cd.mdx` — environment strategy, Pulumi backend guidance +- `infrastructure/deploy-webiny-project-cf-template.mdx` — IAM role permissions + +## Tone Guidelines + +- Setup guide — action-oriented, not conceptual +- Secrets lists as code blocks for easy copy-paste +- OIDC section should explain why (no static credentials) not just how diff --git a/docs/developer-docs/6.x/infrastructure/github-actions.mdx b/docs/developer-docs/6.x/infrastructure/github-actions.mdx new file mode 100644 index 000000000..dca948483 --- /dev/null +++ b/docs/developer-docs/6.x/infrastructure/github-actions.mdx @@ -0,0 +1,189 @@ +--- +id: infra6ghac +title: GitHub Actions +description: Set up GitHub Actions workflows to automatically deploy your Webiny project across dev, staging, and prod environments. +--- + +import { Alert } from "@/components/Alert"; + + + +- What workflow files to add to your repository +- How OIDC authentication works with these workflows +- What repository secrets need to be configured +- How pull request environments work + + + +## Overview + +Webiny provides ready-made GitHub Actions workflow files that automatically deploy your project when code is pushed to the `dev`, `staging`, or `prod` branches, and spin up ephemeral environments for pull requests. + +The workflow files are available at [github.com/webiny/webiny-js/tree/next/docs/gh-actions-workflows](https://github.com/webiny/webiny-js/tree/next/docs/gh-actions-workflows). Copy them into your repository under `.github/workflows/`. + +## Workflow Files + +| File | Trigger | What it does | +| ----------------------- | --------------------------------- | ------------------------------------------------------------------- | +| `pushDev.yml` | Push to `dev` | Runs formatting/lint checks, deploys to `dev` environment | +| `pushStaging.yml` | Push to `staging` | Runs formatting/lint checks, deploys to `staging` environment | +| `pushProd.yml` | Push to `prod` | Runs formatting/lint checks, deploys to `prod` environment | +| `pullRequest.yml` | PR opened/updated targeting `dev` | Runs static analysis, deploys to ephemeral `pr{number}` environment | +| `pullRequestClosed.yml` | PR closed targeting `dev` | Destroys the ephemeral `pr{number}` environment | + +Each push workflow uses `concurrency` to ensure only one deployment per environment runs at a time — if a new push arrives while a deployment is in progress, the in-progress run is cancelled. + +The `--env` value passed to `yarn webiny deploy` matters. `pushProd.yml` uses `--env prod`, which triggers [production deployment mode](/{version}/infrastructure/deployment-modes) with a more robust cloud infrastructure setup. By default, `staging` does not use production mode — if you want `staging` to also deploy with production infrastructure, see the [Deployment Modes](/{version}/infrastructure/deployment-modes) article. + +## AWS Authentication (OIDC) + +The workflows authenticate to AWS using **OpenID Connect (OIDC)** via the `aws-actions/configure-aws-credentials` action. This means no static `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` credentials are stored as secrets — instead, each workflow assumes an IAM role using a short-lived token: + +```yaml +permissions: + id-token: write + contents: read + +steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.DEV_AWS_ROLE_ARN }} + aws-region: ${{ secrets.DEV_AWS_REGION }} +``` + +Each AWS account needs an IAM role that trusts the GitHub OIDC provider. The [AWS CloudFormation Template](/{version}/infrastructure/deploy-webiny-project-cf-template) is designed to be used together with this article: you pre-create an IAM role in each AWS account, then deploy the CloudFormation template which attaches the required deployment policies to that role. Use the role ARN as the `*_AWS_ROLE_ARN` secret for the corresponding environment. + +For instructions on setting up the GitHub OIDC provider in your AWS account, refer to the [GitHub documentation on configuring OIDC in AWS](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). + +## Repository Secrets + +Navigate to your repository **Settings → Secrets and variables → Actions** and add the following secrets. Each secret is defined three times — once per environment — using the environment prefix. + +### AWS Role and Region + +```bash +DEV_AWS_ROLE_ARN # ARN of the IAM role to assume in the dev AWS account +DEV_AWS_REGION + +STAGING_AWS_ROLE_ARN +STAGING_AWS_REGION + +PROD_AWS_ROLE_ARN +PROD_AWS_REGION +``` + +### Pulumi State Backend + +Set the Pulumi backend for each environment. Typically an S3 URI within that environment's AWS account: + +```bash +DEV_WEBINY_PULUMI_BACKEND +STAGING_WEBINY_PULUMI_BACKEND +PROD_WEBINY_PULUMI_BACKEND +``` + +Pull request environments use their own backend so state doesn't mix with `dev`: + +```bash +DEV_WEBINY_PULUMI_BACKEND_PULL_REQUESTS +``` + +See [CI/CD](/{version}/infrastructure/ci-cd#pulumi-state-files) for guidance on choosing a backend. + +### Pulumi Secrets Provider + +These are **optional**. Pulumi supports encrypting sensitive values stored in state files using a passphrase-based secrets provider. If you set `PULUMI_SECRETS_PROVIDER` to `passphrase`, any secrets you explicitly mark in your Pulumi code will be encrypted in the state file using `PULUMI_CONFIG_PASSPHRASE`. See [Managing Secrets with Pulumi](https://www.pulumi.com/blog/managing-secrets-with-pulumi/) for a full explanation of how Pulumi secrets work. + +Webiny itself does not store any sensitive data in Pulumi state files, so in most cases these can be left unset. They are worth configuring for `staging` and `prod` if your own infrastructure code stores secrets in state. + +```bash +DEV_PULUMI_SECRETS_PROVIDER # e.g. "passphrase" — optional +DEV_PULUMI_CONFIG_PASSPHRASE # random string — optional + +STAGING_PULUMI_SECRETS_PROVIDER +STAGING_PULUMI_CONFIG_PASSPHRASE + +PROD_PULUMI_SECRETS_PROVIDER +PROD_PULUMI_CONFIG_PASSPHRASE +``` + + + +If you do configure a `PULUMI_CONFIG_PASSPHRASE`, do not lose it. Without it you cannot redeploy or destroy the infrastructure for that environment. + + + +### Webiny Project + +These secrets are required if you have upgraded to the Business or Enterprise tier. They identify your project to the Webiny platform during deployment. See [Upgrade to Business](/{version}/get-started/upgrade) for details. + +```bash +DEV_WEBINY_PROJECT_ID +DEV_WEBINY_PROJECT_API_KEY + +STAGING_WEBINY_PROJECT_ID +STAGING_WEBINY_PROJECT_API_KEY + +PROD_WEBINY_PROJECT_ID +PROD_WEBINY_PROJECT_API_KEY +``` + +### OpenSearch (if applicable) + +Only used by the PR workflows (`pullRequest.yml` and `pullRequestClosed.yml`), and only when using the DynamoDB + OpenSearch database setup. The push workflows do not reference OpenSearch secrets — each of those environments provisions its own dedicated OpenSearch domain. + +PR environments are typically pointed at a shared OpenSearch domain from the `dev` AWS account. This avoids provisioning a dedicated domain per PR (which would be slow and expensive). See [Using a Shared OpenSearch Domain](/{version}/infrastructure/extensions/opensearch#using-a-shared-open-search-domain) for how to configure your project to use a shared domain. + +```bash +DEV_OPENSEARCH_DOMAIN_NAME # name of the shared OpenSearch domain in the dev AWS account +``` + +`OPENSEARCH_INDEX_PREFIX` is not a secret — the PR workflows set it inline as `pr${{ github.event.pull_request.number }}` so each PR environment gets its own index namespace within the shared domain. + +## Pull Request Environments + +When a pull request is opened or updated against `dev`, the `pullRequest.yml` workflow runs two jobs: + +1. **`build-test-static`** — runs formatting and lint checks (no AWS credentials required) +2. **`deploy`** — deploys a full ephemeral environment named `pr{number}` (e.g. `pr42`) using the `dev` AWS account credentials + +The deploy job requires `pull-requests: write` permission so it can post deployment status comments on the PR. It deploys each application separately: + +```yaml +- name: Deploy core + run: yarn webiny deploy core --env pr${{ github.event.pull_request.number }} + +- name: Deploy API + run: yarn webiny deploy api --env pr${{ github.event.pull_request.number }} + +- name: Deploy Admin + run: yarn webiny deploy admin --env pr${{ github.event.pull_request.number }} +``` + +This gives you a live environment to test changes before merging. The environment uses a separate Pulumi state backend (`DEV_WEBINY_PULUMI_BACKEND_PULL_REQUESTS`) to keep PR state isolated from the `dev` environment. + + + +The PR workflows use the `dev` AWS account credentials by default. If you want to keep ephemeral environments completely separate from your long-lived `dev` environment — for example, to be able to run cleanup tools like [aws-nuke](https://github.com/ekristen/aws-nuke) against the ephemeral account without affecting `dev` — use a dedicated fourth AWS account for PR environments and set the `DEV_AWS_ROLE_ARN` / `DEV_AWS_REGION` secrets for that account. See [CI/CD](/{version}/infrastructure/ci-cd#aws-accounts) for more on this pattern. + + + +When the PR is closed (merged or abandoned), `pullRequestClosed.yml` automatically destroys the ephemeral environment: + +```yaml +- name: Destroy + run: yarn webiny destroy --env pr${{ github.event.pull_request.number }} --confirm-destroy-env pr${{ github.event.pull_request.number }} --debug +``` + +The `--confirm-destroy-env` flag is required as a safety measure — it must match the `--env` value to confirm you intend to destroy that environment. + +## Deployment Triggers + +Once secrets are configured: + +- Push to `dev` → deploys to the `dev` environment +- Push to `staging` → deploys to the `staging` environment +- Push to `prod` → deploys to the `prod` environment + +The `staging` and `prod` environments will not deploy until you first push code into those branches. To initialize all three environments after setup, merge `dev` → `staging` → `prod`. diff --git a/docs/developer-docs/6.x/navigation.tsx b/docs/developer-docs/6.x/navigation.tsx index ff54a10c8..52fa4ec23 100644 --- a/docs/developer-docs/6.x/navigation.tsx +++ b/docs/developer-docs/6.x/navigation.tsx @@ -135,8 +135,10 @@ export const Navigation = ({ children }: { children: React.ReactNode }) => { + + { - this.buildParam.key: string(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParam] -}); -``` - ### `BuildParams` **Abstraction** — imported from `webiny/admin` @@ -152,25 +133,6 @@ namespace BuildParams { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BuildParams } from "webiny/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private buildParams: BuildParams.Interface) {} - - public async execute(/* ... */): Promise { - this.buildParams.get(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParams] -}); -``` - ### `createHasPermission` **Function** — imported from `webiny/admin` @@ -234,22 +196,3 @@ namespace NetworkErrorEventHandler { type Interface = IEventHandler; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { NetworkErrorEventHandler } from "webiny/admin"; - -class MyHandler implements NetworkErrorEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: NetworkErrorEventHandler.Event): Promise { - // implementation - } -} - -export default NetworkErrorEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/admin/build-params.mdx b/docs/developer-docs/6.x/reference/admin/build-params.mdx index c0ea63ccf..1ec993269 100644 --- a/docs/developer-docs/6.x/reference/admin/build-params.mdx +++ b/docs/developer-docs/6.x/reference/admin/build-params.mdx @@ -50,25 +50,6 @@ namespace BuildParam { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BuildParam } from "webiny/admin/build-params"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private buildParam: BuildParam.Interface) {} - - public async execute(/* ... */): Promise { - this.buildParam.key: string(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParam] -}); -``` - ## `BuildParams` **Abstraction** — imported from `webiny/admin/build-params` @@ -92,22 +73,3 @@ namespace BuildParams { type Interface = IBuildParams; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { BuildParams } from "webiny/admin/build-params"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private buildParams: BuildParams.Interface) {} - - public async execute(/* ... */): Promise { - this.buildParams.get(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParams] -}); -``` diff --git a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx index c7494f3d6..af342a846 100644 --- a/docs/developer-docs/6.x/reference/admin/graphql-client.mdx +++ b/docs/developer-docs/6.x/reference/admin/graphql-client.mdx @@ -45,22 +45,3 @@ namespace GraphQLClient { type Request = GraphQLRequest; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { GraphQLClient } from "webiny/admin/graphql-client"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private graphQLClient: GraphQLClient.Interface) {} - - public async execute(/* ... */): Promise { - await this.graphQLClient.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GraphQLClient] -}); -``` diff --git a/docs/developer-docs/6.x/reference/admin/security.mdx b/docs/developer-docs/6.x/reference/admin/security.mdx index 33835881d..325e17f0e 100644 --- a/docs/developer-docs/6.x/reference/admin/security.mdx +++ b/docs/developer-docs/6.x/reference/admin/security.mdx @@ -98,25 +98,6 @@ namespace AuthenticationContext { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AuthenticationContext } from "webiny/admin/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private authenticationContext: AuthenticationContext.Interface) {} - - public async execute(/* ... */): Promise { - this.authenticationContext.clear(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AuthenticationContext] -}); -``` - ### `AuthenticationErrorEventHandler` **Event Handler Abstraction** — imported from `webiny/admin/security` @@ -142,25 +123,6 @@ namespace AuthenticationErrorEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { AuthenticationErrorEventHandler } from "webiny/admin/security"; - -class MyHandler implements AuthenticationErrorEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: AuthenticationErrorEventHandler.Event): Promise { - // implementation - } -} - -export default AuthenticationErrorEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `IdentityContext` **Abstraction** — imported from `webiny/admin/security` @@ -187,25 +149,6 @@ namespace IdentityContext { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { IdentityContext } from "webiny/admin/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private identityContext: IdentityContext.Interface) {} - - public async execute(/* ... */): Promise { - this.identityContext.getIdentity(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [IdentityContext] -}); -``` - ### `LogInUseCase` **Use Case Abstraction** — imported from `webiny/admin/security` @@ -231,25 +174,6 @@ namespace LogInUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { LogInUseCase } from "webiny/admin/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private logInUseCase: LogInUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.logInUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [LogInUseCase] -}); -``` - ### `LogOutUseCase` **Use Case Abstraction** — imported from `webiny/admin/security` @@ -273,22 +197,3 @@ namespace LogOutUseCase { type Interface = ILogOutUseCase; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { LogOutUseCase } from "webiny/admin/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private logOutUseCase: LogOutUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.logOutUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [LogOutUseCase] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/build-params.mdx b/docs/developer-docs/6.x/reference/api/build-params.mdx index 3c1dad99e..610d8b272 100644 --- a/docs/developer-docs/6.x/reference/api/build-params.mdx +++ b/docs/developer-docs/6.x/reference/api/build-params.mdx @@ -50,25 +50,6 @@ namespace BuildParam { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BuildParam } from "webiny/api/build-params"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private buildParam: BuildParam.Interface) {} - - public async execute(/* ... */): Promise { - this.buildParam.key: string(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParam] -}); -``` - ## `BuildParams` **Abstraction** — imported from `webiny/api/build-params` @@ -92,22 +73,3 @@ namespace BuildParams { type Interface = IBuildParams; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { BuildParams } from "webiny/api/build-params"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private buildParams: BuildParams.Interface) {} - - public async execute(/* ... */): Promise { - this.buildParams.get(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BuildParams] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/cms/entry.mdx b/docs/developer-docs/6.x/reference/api/cms/entry.mdx index b041ab1cc..0c3d74ca9 100644 --- a/docs/developer-docs/6.x/reference/api/cms/entry.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/entry.mdx @@ -189,27 +189,6 @@ namespace CreateEntryRevisionFromUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateEntryRevisionFromUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private createEntryRevisionFromUseCase: CreateEntryRevisionFromUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.createEntryRevisionFromUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateEntryRevisionFromUseCase] -}); -``` - ### `CreateEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -244,25 +223,6 @@ namespace CreateEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createEntryUseCase: CreateEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateEntryUseCase] -}); -``` - ### `DeleteEntryRevisionUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -292,25 +252,6 @@ namespace DeleteEntryRevisionUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteEntryRevisionUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteEntryRevisionUseCase: DeleteEntryRevisionUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteEntryRevisionUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteEntryRevisionUseCase] -}); -``` - ### `DeleteEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -345,25 +286,6 @@ namespace DeleteEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteEntryUseCase: DeleteEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteEntryUseCase] -}); -``` - ### `DeleteMultipleEntriesUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -394,27 +316,6 @@ namespace DeleteMultipleEntriesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteMultipleEntriesUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private deleteMultipleEntriesUseCase: DeleteMultipleEntriesUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.deleteMultipleEntriesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteMultipleEntriesUseCase] -}); -``` - ### `GetEntriesByIdsUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -447,25 +348,6 @@ namespace GetEntriesByIdsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetEntriesByIdsUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getEntriesByIdsUseCase: GetEntriesByIdsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getEntriesByIdsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetEntriesByIdsUseCase] -}); -``` - ### `GetEntryByIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -498,25 +380,6 @@ namespace GetEntryByIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetEntryByIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getEntryByIdUseCase: GetEntryByIdUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getEntryByIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetEntryByIdUseCase] -}); -``` - ### `GetEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -550,25 +413,6 @@ namespace GetEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getEntryUseCase: GetEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetEntryUseCase] -}); -``` - ### `GetLatestDeletedRevisionByEntryIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -602,27 +446,6 @@ namespace GetLatestDeletedRevisionByEntryIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetLatestDeletedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getLatestDeletedRevisionByEntryIdUseCase: GetLatestDeletedRevisionByEntryIdUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getLatestDeletedRevisionByEntryIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetLatestDeletedRevisionByEntryIdUseCase] -}); -``` - ### `GetLatestEntriesByIdsUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -655,27 +478,6 @@ namespace GetLatestEntriesByIdsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetLatestEntriesByIdsUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getLatestEntriesByIdsUseCase: GetLatestEntriesByIdsUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getLatestEntriesByIdsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetLatestEntriesByIdsUseCase] -}); -``` - ### `GetLatestRevisionByEntryIdBaseUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -709,27 +511,6 @@ namespace GetLatestRevisionByEntryIdBaseUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetLatestRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getLatestRevisionByEntryIdBaseUseCase: GetLatestRevisionByEntryIdBaseUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getLatestRevisionByEntryIdBaseUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetLatestRevisionByEntryIdBaseUseCase] -}); -``` - ### `GetLatestRevisionByEntryIdIncludingDeletedUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -763,27 +544,6 @@ namespace GetLatestRevisionByEntryIdIncludingDeletedUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getLatestRevisionByEntryIdIncludingDeletedUseCase: GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getLatestRevisionByEntryIdIncludingDeletedUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetLatestRevisionByEntryIdIncludingDeletedUseCase] -}); -``` - ### `GetLatestRevisionByEntryIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -817,27 +577,6 @@ namespace GetLatestRevisionByEntryIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetLatestRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getLatestRevisionByEntryIdUseCase: GetLatestRevisionByEntryIdUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getLatestRevisionByEntryIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetLatestRevisionByEntryIdUseCase] -}); -``` - ### `GetPreviousRevisionByEntryIdBaseUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -871,27 +610,6 @@ namespace GetPreviousRevisionByEntryIdBaseUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPreviousRevisionByEntryIdBaseUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getPreviousRevisionByEntryIdBaseUseCase: GetPreviousRevisionByEntryIdBaseUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getPreviousRevisionByEntryIdBaseUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPreviousRevisionByEntryIdBaseUseCase] -}); -``` - ### `GetPreviousRevisionByEntryIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -925,27 +643,6 @@ namespace GetPreviousRevisionByEntryIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPreviousRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getPreviousRevisionByEntryIdUseCase: GetPreviousRevisionByEntryIdUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getPreviousRevisionByEntryIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPreviousRevisionByEntryIdUseCase] -}); -``` - ### `GetPublishedEntriesByIdsUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -978,27 +675,6 @@ namespace GetPublishedEntriesByIdsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPublishedEntriesByIdsUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getPublishedEntriesByIdsUseCase: GetPublishedEntriesByIdsUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getPublishedEntriesByIdsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPublishedEntriesByIdsUseCase] -}); -``` - ### `GetPublishedRevisionByEntryIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1030,27 +706,6 @@ namespace GetPublishedRevisionByEntryIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPublishedRevisionByEntryIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getPublishedRevisionByEntryIdUseCase: GetPublishedRevisionByEntryIdUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getPublishedRevisionByEntryIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPublishedRevisionByEntryIdUseCase] -}); -``` - ### `GetRevisionByIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1083,25 +738,6 @@ namespace GetRevisionByIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetRevisionByIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getRevisionByIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetRevisionByIdUseCase] -}); -``` - ### `GetRevisionsByEntryIdUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1134,27 +770,6 @@ namespace GetRevisionsByEntryIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetRevisionsByEntryIdUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private getRevisionsByEntryIdUseCase: GetRevisionsByEntryIdUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.getRevisionsByEntryIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetRevisionsByEntryIdUseCase] -}); -``` - ### `GetSingletonEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1187,25 +802,6 @@ namespace GetSingletonEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetSingletonEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getSingletonEntryUseCase: GetSingletonEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getSingletonEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetSingletonEntryUseCase] -}); -``` - ### `ListDeletedEntriesUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1238,25 +834,6 @@ namespace ListDeletedEntriesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListDeletedEntriesUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listDeletedEntriesUseCase: ListDeletedEntriesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listDeletedEntriesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListDeletedEntriesUseCase] -}); -``` - ### `ListEntriesUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1290,25 +867,6 @@ namespace ListEntriesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListEntriesUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listEntriesUseCase: ListEntriesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listEntriesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListEntriesUseCase] -}); -``` - ### `ListLatestEntriesUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1341,25 +899,6 @@ namespace ListLatestEntriesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListLatestEntriesUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listLatestEntriesUseCase: ListLatestEntriesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listLatestEntriesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListLatestEntriesUseCase] -}); -``` - ### `ListPublishedEntriesUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1392,25 +931,6 @@ namespace ListPublishedEntriesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListPublishedEntriesUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listPublishedEntriesUseCase: ListPublishedEntriesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listPublishedEntriesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListPublishedEntriesUseCase] -}); -``` - ### `MoveEntryToBinUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1439,25 +959,6 @@ namespace MoveEntryToBinUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { MoveEntryToBinUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private moveEntryToBinUseCase: MoveEntryToBinUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.moveEntryToBinUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [MoveEntryToBinUseCase] -}); -``` - ### `MoveEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1490,25 +991,6 @@ namespace MoveEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { MoveEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private moveEntryUseCase: MoveEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.moveEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [MoveEntryUseCase] -}); -``` - ### `PublishEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1540,25 +1022,6 @@ namespace PublishEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { PublishEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private publishEntryUseCase: PublishEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.publishEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [PublishEntryUseCase] -}); -``` - ### `RepublishEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1591,25 +1054,6 @@ namespace RepublishEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { RepublishEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private republishEntryUseCase: RepublishEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.republishEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [RepublishEntryUseCase] -}); -``` - ### `RestoreEntryFromBinUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1642,25 +1086,6 @@ namespace RestoreEntryFromBinUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { RestoreEntryFromBinUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private restoreEntryFromBinUseCase: RestoreEntryFromBinUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.restoreEntryFromBinUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [RestoreEntryFromBinUseCase] -}); -``` - ### `UnpublishEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1692,25 +1117,6 @@ namespace UnpublishEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UnpublishEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private unpublishEntryUseCase: UnpublishEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.unpublishEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UnpublishEntryUseCase] -}); -``` - ### `UpdateEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1748,25 +1154,6 @@ namespace UpdateEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateEntryUseCase: UpdateEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateEntryUseCase] -}); -``` - ### `UpdateSingletonEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1803,25 +1190,6 @@ namespace UpdateSingletonEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateSingletonEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateSingletonEntryUseCase: UpdateSingletonEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateSingletonEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateSingletonEntryUseCase] -}); -``` - ### `ValidateEntryUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/entry` @@ -1853,25 +1221,6 @@ namespace ValidateEntryUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ValidateEntryUseCase } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private validateEntryUseCase: ValidateEntryUseCase.Interface) {} - - public async execute(/* ... */): Promise { - this.validateEntryUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ValidateEntryUseCase] -}); -``` - ## Event Handlers ### `EntryAfterCreateEventHandler` @@ -1909,25 +1258,6 @@ namespace EntryAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterCreateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterCreateEventHandler.Event): Promise { - const { entry, input, model } = event.payload; - } -} - -export default EntryAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -1953,25 +1283,6 @@ namespace EntryAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterDeleteEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterDeleteMultipleEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -1997,25 +1308,6 @@ namespace EntryAfterDeleteMultipleEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterDeleteMultipleEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterDeleteMultipleEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterDeleteMultipleEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterDeleteMultipleEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2041,25 +1333,6 @@ namespace EntryAfterMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterMoveEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterMoveEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterPublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2085,25 +1358,6 @@ namespace EntryAfterPublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterPublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterPublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterPublishEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterPublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterRepublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2129,25 +1383,6 @@ namespace EntryAfterRepublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterRepublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterRepublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterRepublishEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterRepublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterRestoreFromBinEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2173,25 +1408,6 @@ namespace EntryAfterRestoreFromBinEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterRestoreFromBinEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterRestoreFromBinEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterRestoreFromBinEventHandler.Event): Promise { - // implementation - } -} - -export default EntryAfterRestoreFromBinEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2227,25 +1443,6 @@ namespace EntryAfterUnpublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterUnpublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterUnpublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterUnpublishEventHandler.Event): Promise { - const { entry, storageEntry, model } = event.payload; - } -} - -export default EntryAfterUnpublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2282,25 +1479,6 @@ namespace EntryAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryAfterUpdateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryAfterUpdateEventHandler.Event): Promise { - const { entry, original, input, model } = event.payload; - } -} - -export default EntryAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2336,25 +1514,6 @@ namespace EntryBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeCreateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeCreateEventHandler.Event): Promise { - const { entry, input, model } = event.payload; - } -} - -export default EntryBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2380,25 +1539,6 @@ namespace EntryBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeDeleteEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeDeleteMultipleEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2424,25 +1564,6 @@ namespace EntryBeforeDeleteMultipleEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeDeleteMultipleEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeDeleteMultipleEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeDeleteMultipleEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforeDeleteMultipleEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2468,25 +1589,6 @@ namespace EntryBeforeMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeMoveEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeMoveEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforeMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforePublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2512,25 +1614,6 @@ namespace EntryBeforePublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforePublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforePublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforePublishEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforePublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeRepublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2556,25 +1639,6 @@ namespace EntryBeforeRepublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeRepublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeRepublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeRepublishEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforeRepublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeRestoreFromBinEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2600,25 +1664,6 @@ namespace EntryBeforeRestoreFromBinEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeRestoreFromBinEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeRestoreFromBinEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeRestoreFromBinEventHandler.Event): Promise { - // implementation - } -} - -export default EntryBeforeRestoreFromBinEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2653,25 +1698,6 @@ namespace EntryBeforeUnpublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeUnpublishEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeUnpublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeUnpublishEventHandler.Event): Promise { - const { entry, model } = event.payload; - } -} - -export default EntryBeforeUnpublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2708,25 +1734,6 @@ namespace EntryBeforeUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryBeforeUpdateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryBeforeUpdateEventHandler.Event): Promise { - const { entry, original, input, model } = event.payload; - } -} - -export default EntryBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryRevisionAfterCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2752,25 +1759,6 @@ namespace EntryRevisionAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryRevisionAfterCreateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryRevisionAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryRevisionAfterCreateEventHandler.Event): Promise { - // implementation - } -} - -export default EntryRevisionAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryRevisionAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2796,25 +1784,6 @@ namespace EntryRevisionAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryRevisionAfterDeleteEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryRevisionAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryRevisionAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default EntryRevisionAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryRevisionBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2840,25 +1809,6 @@ namespace EntryRevisionBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryRevisionBeforeCreateEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryRevisionBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryRevisionBeforeCreateEventHandler.Event): Promise { - // implementation - } -} - -export default EntryRevisionBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `EntryRevisionBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/entry` @@ -2884,25 +1834,6 @@ namespace EntryRevisionBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { EntryRevisionBeforeDeleteEventHandler } from "webiny/api/cms/entry"; - -class MyHandler implements EntryRevisionBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: EntryRevisionBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default EntryRevisionBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## Services ### `CmsSortMapper` @@ -2930,25 +1861,6 @@ namespace CmsSortMapper { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CmsSortMapper } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private cmsSortMapper: CmsSortMapper.Interface) {} - - public async execute(/* ... */): Promise { - this.cmsSortMapper.map(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CmsSortMapper] -}); -``` - ### `CmsWhereMapper` **Abstraction** — imported from `webiny/api/cms/entry` @@ -2974,25 +1886,6 @@ namespace CmsWhereMapper { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CmsWhereMapper } from "webiny/api/cms/entry"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private cmsWhereMapper: CmsWhereMapper.Interface) {} - - public async execute(/* ... */): Promise { - this.cmsWhereMapper.map(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CmsWhereMapper] -}); -``` - ## Types & Classes ### `CmsEntry` diff --git a/docs/developer-docs/6.x/reference/api/cms/group.mdx b/docs/developer-docs/6.x/reference/api/cms/group.mdx index 2560c9dab..6dfdaec1f 100644 --- a/docs/developer-docs/6.x/reference/api/cms/group.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/group.mdx @@ -89,25 +89,6 @@ namespace CreateGroupUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateGroupUseCase } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createGroupUseCase: CreateGroupUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createGroupUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateGroupUseCase] -}); -``` - ### `DeleteGroupUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/group` @@ -136,25 +117,6 @@ namespace DeleteGroupUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteGroupUseCase } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteGroupUseCase: DeleteGroupUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteGroupUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteGroupUseCase] -}); -``` - ### `GetGroupUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/group` @@ -183,25 +145,6 @@ namespace GetGroupUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetGroupUseCase } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getGroupUseCase: GetGroupUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getGroupUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetGroupUseCase] -}); -``` - ### `ListGroupsUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/group` @@ -230,25 +173,6 @@ namespace ListGroupsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListGroupsUseCase } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listGroupsUseCase: ListGroupsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listGroupsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListGroupsUseCase] -}); -``` - ### `UpdateGroupUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/group` @@ -278,25 +202,6 @@ namespace UpdateGroupUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateGroupUseCase } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateGroupUseCase: UpdateGroupUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateGroupUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateGroupUseCase] -}); -``` - ## Event Handlers ### `GroupAfterCreateEventHandler` @@ -332,25 +237,6 @@ namespace GroupAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupAfterCreateEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupAfterCreateEventHandler.Event): Promise { - const { group } = event.payload; - } -} - -export default GroupAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `GroupAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/group` @@ -384,25 +270,6 @@ namespace GroupAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupAfterDeleteEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupAfterDeleteEventHandler.Event): Promise { - const { group } = event.payload; - } -} - -export default GroupAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `GroupAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/group` @@ -437,25 +304,6 @@ namespace GroupAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupAfterUpdateEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupAfterUpdateEventHandler.Event): Promise { - const { original, group } = event.payload; - } -} - -export default GroupAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `GroupBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/group` @@ -489,25 +337,6 @@ namespace GroupBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupBeforeCreateEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupBeforeCreateEventHandler.Event): Promise { - const { group } = event.payload; - } -} - -export default GroupBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `GroupBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/group` @@ -541,25 +370,6 @@ namespace GroupBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupBeforeDeleteEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupBeforeDeleteEventHandler.Event): Promise { - const { group } = event.payload; - } -} - -export default GroupBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `GroupBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/group` @@ -594,25 +404,6 @@ namespace GroupBeforeUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { GroupBeforeUpdateEventHandler } from "webiny/api/cms/group"; - -class MyHandler implements GroupBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: GroupBeforeUpdateEventHandler.Event): Promise { - const { original, group } = event.payload; - } -} - -export default GroupBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## Services ### `ModelGroupFactory` @@ -641,25 +432,6 @@ namespace ModelGroupFactory { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ModelGroupFactory } from "webiny/api/cms/group"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private modelGroupFactory: ModelGroupFactory.Interface) {} - - public async execute(/* ... */): Promise { - await this.modelGroupFactory.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ModelGroupFactory] -}); -``` - ## Types & Classes ### `CmsGroup` diff --git a/docs/developer-docs/6.x/reference/api/cms/model.mdx b/docs/developer-docs/6.x/reference/api/cms/model.mdx index a25a2dab3..3bd1c5e56 100644 --- a/docs/developer-docs/6.x/reference/api/cms/model.mdx +++ b/docs/developer-docs/6.x/reference/api/cms/model.mdx @@ -104,25 +104,6 @@ namespace CreateModelFromUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateModelFromUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createModelFromUseCase: CreateModelFromUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createModelFromUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateModelFromUseCase] -}); -``` - ### `CreateModelUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/model` @@ -152,25 +133,6 @@ namespace CreateModelUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateModelUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createModelUseCase: CreateModelUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createModelUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateModelUseCase] -}); -``` - ### `DeleteModelUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/model` @@ -199,25 +161,6 @@ namespace DeleteModelUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteModelUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteModelUseCase: DeleteModelUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteModelUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteModelUseCase] -}); -``` - ### `GetModelUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/model` @@ -246,25 +189,6 @@ namespace GetModelUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetModelUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getModelUseCase: GetModelUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getModelUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetModelUseCase] -}); -``` - ### `ListModelsUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/model` @@ -294,25 +218,6 @@ namespace ListModelsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListModelsUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listModelsUseCase: ListModelsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listModelsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListModelsUseCase] -}); -``` - ### `UpdateModelUseCase` **Use Case Abstraction** — imported from `webiny/api/cms/model` @@ -342,25 +247,6 @@ namespace UpdateModelUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateModelUseCase } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateModelUseCase: UpdateModelUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateModelUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateModelUseCase] -}); -``` - ## Event Handlers ### `ModelAfterCreateEventHandler` @@ -396,25 +282,6 @@ namespace ModelAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelAfterCreateEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelAfterCreateEventHandler.Event): Promise { - const { model } = event.payload; - } -} - -export default ModelAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelAfterCreateFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -449,25 +316,6 @@ namespace ModelAfterCreateFromEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelAfterCreateFromEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelAfterCreateFromEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelAfterCreateFromEventHandler.Event): Promise { - const { model, original } = event.payload; - } -} - -export default ModelAfterCreateFromEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -501,25 +349,6 @@ namespace ModelAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelAfterDeleteEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelAfterDeleteEventHandler.Event): Promise { - const { model } = event.payload; - } -} - -export default ModelAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -554,25 +383,6 @@ namespace ModelAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelAfterUpdateEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelAfterUpdateEventHandler.Event): Promise { - const { model, original } = event.payload; - } -} - -export default ModelAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -607,25 +417,6 @@ namespace ModelBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelBeforeCreateEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelBeforeCreateEventHandler.Event): Promise { - const { model, input } = event.payload; - } -} - -export default ModelBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelBeforeCreateFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -661,25 +452,6 @@ namespace ModelBeforeCreateFromEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelBeforeCreateFromEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelBeforeCreateFromEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelBeforeCreateFromEventHandler.Event): Promise { - const { model, original, input } = event.payload; - } -} - -export default ModelBeforeCreateFromEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -713,25 +485,6 @@ namespace ModelBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelBeforeDeleteEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelBeforeDeleteEventHandler.Event): Promise { - const { model } = event.payload; - } -} - -export default ModelBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ModelBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/cms/model` @@ -767,25 +520,6 @@ namespace ModelBeforeUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ModelBeforeUpdateEventHandler } from "webiny/api/cms/model"; - -class MyHandler implements ModelBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ModelBeforeUpdateEventHandler.Event): Promise { - const { model, original, input } = event.payload; - } -} - -export default ModelBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## Services ### `FieldType` @@ -812,25 +546,6 @@ interface FieldType.Interface { | `readonly type: string()` | Unique identifier for this field type | | `create()` | Create a new field builder instance | -**Usage:** - -```typescript extensions/MyImpl.ts -import { FieldType } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private fieldType: FieldType.Interface) {} - - public async execute(/* ... */): Promise { - this.fieldType.create(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [FieldType] -}); -``` - ### `ModelFactory` **Abstraction** — imported from `webiny/api/cms/model` @@ -858,25 +573,6 @@ namespace ModelFactory { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ModelFactory } from "webiny/api/cms/model"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private modelFactory: ModelFactory.Interface) {} - - public async execute(/* ... */): Promise { - await this.modelFactory.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ModelFactory] -}); -``` - ## Types & Classes ### `CmsModel` diff --git a/docs/developer-docs/6.x/reference/api/graphql.mdx b/docs/developer-docs/6.x/reference/api/graphql.mdx index ffc2a03ea..c0f555f93 100644 --- a/docs/developer-docs/6.x/reference/api/graphql.mdx +++ b/docs/developer-docs/6.x/reference/api/graphql.mdx @@ -65,25 +65,24 @@ namespace GraphQLSchemaFactory { } ``` -**Usage:** +**`SchemaBuilder` — `GraphQLSchemaBuilder.Interface`:** -```typescript extensions/MyImpl.ts -import { GraphQLSchemaFactory } from "webiny/api/graphql"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private graphQLSchemaFactory: GraphQLSchemaFactory.Interface) {} +Interface for building GraphQL schemas by adding type definitions and resolvers. - public async execute(/* ... */): Promise { - await this.graphQLSchemaFactory.execute(/* ... */); - } +```typescript +interface GraphQLSchemaBuilder.Interface { + addTypeDefs(typeDefs: TypeDefs): this; + addResolver(config: ResolverConfig): this; + build(): IGraphQLSchema; } - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GraphQLSchemaFactory] -}); ``` +| Method | Description | +| ------------------------------------------- | -------------------------------------------------- | +| `addTypeDefs()` | Add GraphQL type definitions to the schema. | +| `addResolver()` | Add a GraphQL resolver with optional dependencies. | +| `build()` | Build and return the GraphQL schema. | + ## Types & Classes ### `ErrorResponse` diff --git a/docs/developer-docs/6.x/reference/api/key-value-store.mdx b/docs/developer-docs/6.x/reference/api/key-value-store.mdx index ed1e87c39..177f40768 100644 --- a/docs/developer-docs/6.x/reference/api/key-value-store.mdx +++ b/docs/developer-docs/6.x/reference/api/key-value-store.mdx @@ -63,25 +63,6 @@ namespace GlobalKeyValueStore { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GlobalKeyValueStore } from "webiny/api/key-value-store"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private globalKeyValueStore: GlobalKeyValueStore.Interface) {} - - public async execute(/* ... */): Promise { - await this.globalKeyValueStore.get(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GlobalKeyValueStore] -}); -``` - ## `KeyValueStore` **Abstraction** — imported from `webiny/api/key-value-store` @@ -109,22 +90,3 @@ namespace KeyValueStore { type Error = KeyValueStoreRepository.Error; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { KeyValueStore } from "webiny/api/key-value-store"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private keyValueStore: KeyValueStore.Interface) {} - - public async execute(/* ... */): Promise { - await this.keyValueStore.get(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [KeyValueStore] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/logger.mdx b/docs/developer-docs/6.x/reference/api/logger.mdx index 8ad2dc50d..0f3c823d4 100644 --- a/docs/developer-docs/6.x/reference/api/logger.mdx +++ b/docs/developer-docs/6.x/reference/api/logger.mdx @@ -61,22 +61,3 @@ namespace Logger { type Interface = ILogger; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { Logger } from "webiny/api/logger"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private logger: Logger.Interface) {} - - public async execute(/* ... */): Promise { - this.logger.info(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Logger] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/security.mdx b/docs/developer-docs/6.x/reference/api/security.mdx index 8d4a7e8cf..b92fb0927 100644 --- a/docs/developer-docs/6.x/reference/api/security.mdx +++ b/docs/developer-docs/6.x/reference/api/security.mdx @@ -64,25 +64,6 @@ namespace ApiKeyFactory { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiKeyFactory } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiKeyFactory: ApiKeyFactory.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiKeyFactory.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiKeyFactory] -}); -``` - ### `Authenticator` **Abstraction** — imported from `webiny/api/security` @@ -107,25 +88,6 @@ namespace Authenticator { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { Authenticator } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private authenticator: Authenticator.Interface) {} - - public async execute(/* ... */): Promise { - await this.authenticator.authenticate(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Authenticator] -}); -``` - ### `Authorizer` **Abstraction** — imported from `webiny/api/security` @@ -150,25 +112,6 @@ namespace Authorizer { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { Authorizer } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private authorizer: Authorizer.Interface) {} - - public async execute(/* ... */): Promise { - await this.authorizer.authorize(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Authorizer] -}); -``` - ### `IdentityContext` **Abstraction** — imported from `webiny/api/security` @@ -205,25 +148,6 @@ namespace IdentityContext { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { IdentityContext } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private identityContext: IdentityContext.Interface) {} - - public async execute(/* ... */): Promise { - this.identityContext.getIdentity(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [IdentityContext] -}); -``` - ### `IdentityProvider` **Abstraction** — imported from `webiny/api/security` @@ -251,25 +175,6 @@ namespace IdentityProvider { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { IdentityProvider } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private identityProvider: IdentityProvider.Interface) {} - - public async execute(/* ... */): Promise { - this.identityProvider.isApplicable(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [IdentityProvider] -}); -``` - ### `JwtIdentityProvider` **Abstraction** — imported from `webiny/api/security` @@ -299,25 +204,6 @@ namespace JwtIdentityProvider { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { JwtIdentityProvider } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private jwtIdentityProvider: JwtIdentityProvider.Interface) {} - - public async execute(/* ... */): Promise { - this.jwtIdentityProvider.isApplicable(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [JwtIdentityProvider] -}); -``` - ### `OidcIdentityProvider` **Abstraction** — imported from `webiny/api/security` @@ -349,25 +235,6 @@ namespace OidcIdentityProvider { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { OidcIdentityProvider } from "webiny/api/security"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private oidcIdentityProvider: OidcIdentityProvider.Interface) {} - - public async execute(/* ... */): Promise { - this.oidcIdentityProvider.issuer: string(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [OidcIdentityProvider] -}); -``` - ## Types & Classes ### `ApiToken` diff --git a/docs/developer-docs/6.x/reference/api/security/api-key.mdx b/docs/developer-docs/6.x/reference/api/security/api-key.mdx index 000b2ed95..53c171d92 100644 --- a/docs/developer-docs/6.x/reference/api/security/api-key.mdx +++ b/docs/developer-docs/6.x/reference/api/security/api-key.mdx @@ -77,25 +77,6 @@ namespace CreateApiKeyUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateApiKeyUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createApiKeyUseCase: CreateApiKeyUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createApiKeyUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateApiKeyUseCase] -}); -``` - ### `DeleteApiKeyUseCase` **Use Case Abstraction** — imported from `webiny/api/security/api-key` @@ -121,25 +102,6 @@ namespace DeleteApiKeyUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteApiKeyUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteApiKeyUseCase: DeleteApiKeyUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteApiKeyUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteApiKeyUseCase] -}); -``` - ### `GetApiKeyByTokenUseCase` **Use Case Abstraction** — imported from `webiny/api/security/api-key` @@ -165,25 +127,6 @@ namespace GetApiKeyByTokenUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetApiKeyByTokenUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getApiKeyByTokenUseCase: GetApiKeyByTokenUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getApiKeyByTokenUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetApiKeyByTokenUseCase] -}); -``` - ### `GetApiKeyUseCase` **Use Case Abstraction** — imported from `webiny/api/security/api-key` @@ -209,25 +152,6 @@ namespace GetApiKeyUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetApiKeyUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getApiKeyUseCase: GetApiKeyUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getApiKeyUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetApiKeyUseCase] -}); -``` - ### `ListApiKeysUseCase` **Use Case Abstraction** — imported from `webiny/api/security/api-key` @@ -253,25 +177,6 @@ namespace ListApiKeysUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListApiKeysUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listApiKeysUseCase: ListApiKeysUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listApiKeysUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListApiKeysUseCase] -}); -``` - ### `UpdateApiKeyUseCase` **Use Case Abstraction** — imported from `webiny/api/security/api-key` @@ -297,25 +202,6 @@ namespace UpdateApiKeyUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateApiKeyUseCase } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateApiKeyUseCase: UpdateApiKeyUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateApiKeyUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateApiKeyUseCase] -}); -``` - ## Event Handlers ### `ApiKeyAfterCreateEventHandler` @@ -343,25 +229,6 @@ namespace ApiKeyAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyAfterCreateEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyAfterCreateEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ApiKeyAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` @@ -387,25 +254,6 @@ namespace ApiKeyAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyAfterDeleteEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ApiKeyAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` @@ -431,25 +279,6 @@ namespace ApiKeyAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyAfterUpdateEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyAfterUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ApiKeyBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` @@ -475,25 +304,6 @@ namespace ApiKeyBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyBeforeCreateEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyBeforeCreateEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ApiKeyBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` @@ -519,25 +329,6 @@ namespace ApiKeyBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyBeforeDeleteEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `ApiKeyBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/api-key` @@ -563,25 +354,6 @@ namespace ApiKeyBeforeUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { ApiKeyBeforeUpdateEventHandler } from "webiny/api/security/api-key"; - -class MyHandler implements ApiKeyBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: ApiKeyBeforeUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default ApiKeyBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## Services ### `ApiKeyFactory` @@ -609,22 +381,3 @@ namespace ApiKeyFactory { type ApiKey = CodeApiKey; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiKeyFactory } from "webiny/api/security/api-key"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiKeyFactory: ApiKeyFactory.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiKeyFactory.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiKeyFactory] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/security/authentication.mdx b/docs/developer-docs/6.x/reference/api/security/authentication.mdx index c1b0708d0..e44c716ce 100644 --- a/docs/developer-docs/6.x/reference/api/security/authentication.mdx +++ b/docs/developer-docs/6.x/reference/api/security/authentication.mdx @@ -50,25 +50,6 @@ namespace AfterAuthenticationEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { AfterAuthenticationEventHandler } from "webiny/api/security/authentication"; - -class MyHandler implements AfterAuthenticationEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: AfterAuthenticationEventHandler.Event): Promise { - // implementation - } -} - -export default AfterAuthenticationEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## `BeforeAuthenticationEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/authentication` @@ -93,22 +74,3 @@ namespace BeforeAuthenticationEventHandler { type Event = BeforeAuthenticationEvent; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { BeforeAuthenticationEventHandler } from "webiny/api/security/authentication"; - -class MyHandler implements BeforeAuthenticationEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: BeforeAuthenticationEventHandler.Event): Promise { - // implementation - } -} - -export default BeforeAuthenticationEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/security/role.mdx b/docs/developer-docs/6.x/reference/api/security/role.mdx index bf40f8438..1f41d9d73 100644 --- a/docs/developer-docs/6.x/reference/api/security/role.mdx +++ b/docs/developer-docs/6.x/reference/api/security/role.mdx @@ -71,25 +71,6 @@ namespace CreateRoleUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateRoleUseCase } from "webiny/api/security/role"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createRoleUseCase: CreateRoleUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createRoleUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateRoleUseCase] -}); -``` - ### `DeleteRoleUseCase` **Use Case Abstraction** — imported from `webiny/api/security/role` @@ -115,25 +96,6 @@ namespace DeleteRoleUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteRoleUseCase } from "webiny/api/security/role"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteRoleUseCase: DeleteRoleUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteRoleUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteRoleUseCase] -}); -``` - ### `GetRoleUseCase` **Use Case Abstraction** — imported from `webiny/api/security/role` @@ -159,25 +121,6 @@ namespace GetRoleUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetRoleUseCase } from "webiny/api/security/role"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getRoleUseCase: GetRoleUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getRoleUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetRoleUseCase] -}); -``` - ### `ListRolesUseCase` **Use Case Abstraction** — imported from `webiny/api/security/role` @@ -203,25 +146,6 @@ namespace ListRolesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListRolesUseCase } from "webiny/api/security/role"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listRolesUseCase: ListRolesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listRolesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListRolesUseCase] -}); -``` - ### `UpdateRoleUseCase` **Use Case Abstraction** — imported from `webiny/api/security/role` @@ -250,25 +174,6 @@ namespace UpdateRoleUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateRoleUseCase } from "webiny/api/security/role"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateRoleUseCase: UpdateRoleUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateRoleUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateRoleUseCase] -}); -``` - ## Event Handlers ### `RoleAfterCreateEventHandler` @@ -296,25 +201,6 @@ namespace RoleAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleAfterCreateEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleAfterCreateEventHandler.Event): Promise { - // implementation - } -} - -export default RoleAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RoleAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` @@ -340,25 +226,6 @@ namespace RoleAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleAfterDeleteEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default RoleAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RoleAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` @@ -384,25 +251,6 @@ namespace RoleAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleAfterUpdateEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleAfterUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default RoleAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RoleBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` @@ -428,25 +276,6 @@ namespace RoleBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleBeforeCreateEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleBeforeCreateEventHandler.Event): Promise { - // implementation - } -} - -export default RoleBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RoleBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` @@ -472,25 +301,6 @@ namespace RoleBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleBeforeDeleteEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default RoleBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RoleBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/role` @@ -515,22 +325,3 @@ namespace RoleBeforeUpdateEventHandler { type Event = RoleBeforeUpdateEvent; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { RoleBeforeUpdateEventHandler } from "webiny/api/security/role"; - -class MyHandler implements RoleBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RoleBeforeUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default RoleBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/security/user.mdx b/docs/developer-docs/6.x/reference/api/security/user.mdx index 4cbeb68db..b1f82f182 100644 --- a/docs/developer-docs/6.x/reference/api/security/user.mdx +++ b/docs/developer-docs/6.x/reference/api/security/user.mdx @@ -73,25 +73,6 @@ namespace CreateUserUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateUserUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createUserUseCase: CreateUserUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createUserUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateUserUseCase] -}); -``` - ### `DeleteUserUseCase` **Use Case Abstraction** — imported from `webiny/api/security/user` @@ -117,25 +98,6 @@ namespace DeleteUserUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteUserUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteUserUseCase: DeleteUserUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteUserUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteUserUseCase] -}); -``` - ### `GetUserUseCase` **Use Case Abstraction** — imported from `webiny/api/security/user` @@ -161,25 +123,6 @@ namespace GetUserUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetUserUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getUserUseCase: GetUserUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getUserUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetUserUseCase] -}); -``` - ### `ListUsersUseCase` **Use Case Abstraction** — imported from `webiny/api/security/user` @@ -205,25 +148,6 @@ namespace ListUsersUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListUsersUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listUsersUseCase: ListUsersUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listUsersUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListUsersUseCase] -}); -``` - ### `ListUserTeamsUseCase` **Use Case Abstraction** — imported from `webiny/api/security/user` @@ -249,25 +173,6 @@ namespace ListUserTeamsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListUserTeamsUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listUserTeamsUseCase: ListUserTeamsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listUserTeamsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListUserTeamsUseCase] -}); -``` - ### `UpdateUserUseCase` **Use Case Abstraction** — imported from `webiny/api/security/user` @@ -293,25 +198,6 @@ namespace UpdateUserUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateUserUseCase } from "webiny/api/security/user"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateUserUseCase: UpdateUserUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateUserUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateUserUseCase] -}); -``` - ## Event Handlers ### `UserAfterCreateEventHandler` @@ -339,25 +225,6 @@ namespace UserAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserAfterCreateEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserAfterCreateEventHandler.Event): Promise { - // implementation - } -} - -export default UserAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `UserAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` @@ -383,25 +250,6 @@ namespace UserAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserAfterDeleteEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default UserAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `UserAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` @@ -427,25 +275,6 @@ namespace UserAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserAfterUpdateEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserAfterUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default UserAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `UserBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` @@ -471,25 +300,6 @@ namespace UserBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserBeforeCreateEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserBeforeCreateEventHandler.Event): Promise { - // implementation - } -} - -export default UserBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `UserBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` @@ -515,25 +325,6 @@ namespace UserBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserBeforeDeleteEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default UserBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `UserBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/security/user` @@ -558,22 +349,3 @@ namespace UserBeforeUpdateEventHandler { type Event = UserBeforeUpdateEvent; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { UserBeforeUpdateEventHandler } from "webiny/api/security/user"; - -class MyHandler implements UserBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: UserBeforeUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default UserBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/system.mdx b/docs/developer-docs/6.x/reference/api/system.mdx index 1206ef325..00d6dbb44 100644 --- a/docs/developer-docs/6.x/reference/api/system.mdx +++ b/docs/developer-docs/6.x/reference/api/system.mdx @@ -69,25 +69,6 @@ Types | `app` | `string` | yes | — | | `data` | `Record` | yes | — | -**Usage:** - -```typescript extensions/MyImpl.ts -import { InstallSystemUseCase } from "webiny/api/system"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private installSystemUseCase: InstallSystemUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.installSystemUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [InstallSystemUseCase] -}); -``` - ## Event Handlers ### `SystemInstalledEventHandler` @@ -114,22 +95,3 @@ namespace SystemInstalledEventHandler { type Event = DomainEvent; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { SystemInstalledEventHandler } from "webiny/api/system"; - -class MyHandler implements SystemInstalledEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: SystemInstalledEventHandler.Event): Promise { - // implementation - } -} - -export default SystemInstalledEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/tasks.mdx b/docs/developer-docs/6.x/reference/api/tasks.mdx index d1a887a91..74f1f27c4 100644 --- a/docs/developer-docs/6.x/reference/api/tasks.mdx +++ b/docs/developer-docs/6.x/reference/api/tasks.mdx @@ -97,25 +97,6 @@ namespace TaskDefinition { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { TaskDefinition } from "webiny/api/tasks"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private taskDefinition: TaskDefinition.Interface) {} - - public async execute(/* ... */): Promise { - this.taskDefinition.id: string(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [TaskDefinition] -}); -``` - ## `TaskService` **Abstraction** — imported from `webiny/api/tasks` @@ -154,22 +135,3 @@ namespace TaskService { type Task = ITask; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { TaskService } from "webiny/api/tasks"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private taskService: TaskService.Interface) {} - - public async execute(/* ... */): Promise { - await this.taskService.trigger:(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [TaskService] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/tenancy.mdx b/docs/developer-docs/6.x/reference/api/tenancy.mdx index a0cd0c2f1..e1bbda4c3 100644 --- a/docs/developer-docs/6.x/reference/api/tenancy.mdx +++ b/docs/developer-docs/6.x/reference/api/tenancy.mdx @@ -85,25 +85,6 @@ namespace CreateTenantRepository { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateTenantRepository } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createTenantRepository: CreateTenantRepository.Interface) {} - - public async execute(/* ... */): Promise { - await this.createTenantRepository.create(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateTenantRepository] -}); -``` - ### `CreateTenantUseCase` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -133,25 +114,6 @@ namespace CreateTenantUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateTenantUseCase } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createTenantUseCase: CreateTenantUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createTenantUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateTenantUseCase] -}); -``` - ### `DeleteTenantRepository` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -176,25 +138,6 @@ namespace DeleteTenantRepository { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteTenantRepository } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteTenantRepository: DeleteTenantRepository.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteTenantRepository.delete(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteTenantRepository] -}); -``` - ### `DeleteTenantUseCase` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -219,25 +162,6 @@ namespace DeleteTenantUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteTenantUseCase } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteTenantUseCase: DeleteTenantUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteTenantUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteTenantUseCase] -}); -``` - ### `GetTenantByIdUseCase` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -264,25 +188,6 @@ namespace GetTenantByIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetTenantByIdUseCase } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getTenantByIdUseCase: GetTenantByIdUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getTenantByIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetTenantByIdUseCase] -}); -``` - ### `InstallTenantUseCase` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -313,25 +218,6 @@ namespace InstallTenantUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { InstallTenantUseCase } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private installTenantUseCase: InstallTenantUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.installTenantUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [InstallTenantUseCase] -}); -``` - ### `UpdateTenantRepository` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -356,25 +242,6 @@ namespace UpdateTenantRepository { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateTenantRepository } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateTenantRepository: UpdateTenantRepository.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateTenantRepository.update(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateTenantRepository] -}); -``` - ### `UpdateTenantUseCase` **Use Case Abstraction** — imported from `webiny/api/tenancy` @@ -399,25 +266,6 @@ namespace UpdateTenantUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateTenantUseCase } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateTenantUseCase: UpdateTenantUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateTenantUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateTenantUseCase] -}); -``` - ## Event Handlers ### `TenantAfterCreateEventHandler` @@ -445,25 +293,6 @@ namespace TenantAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantAfterCreateEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantAfterCreateEventHandler.Event): Promise { - // implementation - } -} - -export default TenantAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -489,25 +318,6 @@ namespace TenantAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantAfterDeleteEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantAfterDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default TenantAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -533,25 +343,6 @@ namespace TenantAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantAfterUpdateEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantAfterUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default TenantAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -577,25 +368,6 @@ namespace TenantBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantBeforeCreateEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantBeforeCreateEventHandler.Event): Promise { - // implementation - } -} - -export default TenantBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -621,25 +393,6 @@ namespace TenantBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantBeforeDeleteEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantBeforeDeleteEventHandler.Event): Promise { - // implementation - } -} - -export default TenantBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -665,25 +418,6 @@ namespace TenantBeforeUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantBeforeUpdateEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantBeforeUpdateEventHandler.Event): Promise { - // implementation - } -} - -export default TenantBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `TenantInstalledEventHandler` **Event Handler Abstraction** — imported from `webiny/api/tenancy` @@ -709,25 +443,6 @@ namespace TenantInstalledEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { TenantInstalledEventHandler } from "webiny/api/tenancy"; - -class MyHandler implements TenantInstalledEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: TenantInstalledEventHandler.Event): Promise { - // implementation - } -} - -export default TenantInstalledEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ## Services ### `AppInstaller` @@ -770,25 +485,6 @@ namespace AppInstaller { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AppInstaller } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private appInstaller: AppInstaller.Interface) {} - - public async execute(/* ... */): Promise { - this.appInstaller.readonly alwaysRun?: boolean(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AppInstaller] -}); -``` - ### `TenantContext` **Abstraction** — imported from `webiny/api/tenancy` @@ -819,22 +515,3 @@ namespace TenantContext { type Interface = ITenantContext; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { TenantContext } from "webiny/api/tenancy"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private tenantContext: TenantContext.Interface) {} - - public async execute(/* ... */): Promise { - this.tenantContext.setTenant(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [TenantContext] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx index a0a619a12..dbb1acfb5 100644 --- a/docs/developer-docs/6.x/reference/api/tenant-manager.mdx +++ b/docs/developer-docs/6.x/reference/api/tenant-manager.mdx @@ -53,25 +53,6 @@ namespace TenantModelExtension { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { TenantModelExtension } from "webiny/api/tenant-manager"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private tenantModelExtension: TenantModelExtension.Interface) {} - - public async execute(/* ... */): Promise { - this.tenantModelExtension.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [TenantModelExtension] -}); -``` - ## Types & Classes ### `TenantExtensions` diff --git a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx index 4286cd219..5a01f6d6b 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/nextjs.mdx @@ -44,22 +44,3 @@ namespace NextjsConfig { type Return = Promise; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { NextjsConfig } from "webiny/api/website-builder/nextjs"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private nextjsConfig: NextjsConfig.Interface) {} - - public async execute(/* ... */): Promise { - await this.nextjsConfig.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [NextjsConfig] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx index 4a7833812..dfbdd4207 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/page.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/page.mdx @@ -97,27 +97,6 @@ namespace CreatePageRevisionFromUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreatePageRevisionFromUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private createPageRevisionFromUseCase: CreatePageRevisionFromUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.createPageRevisionFromUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreatePageRevisionFromUseCase] -}); -``` - ### `CreatePageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -146,25 +125,6 @@ namespace CreatePageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreatePageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createPageUseCase: CreatePageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createPageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreatePageUseCase] -}); -``` - ### `DeletePageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -192,25 +152,6 @@ namespace DeletePageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeletePageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deletePageUseCase: DeletePageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deletePageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeletePageUseCase] -}); -``` - ### `DuplicatePageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -239,25 +180,6 @@ namespace DuplicatePageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DuplicatePageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private duplicatePageUseCase: DuplicatePageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.duplicatePageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DuplicatePageUseCase] -}); -``` - ### `GetPageByIdUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -287,25 +209,6 @@ namespace GetPageByIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPageByIdUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getPageByIdUseCase: GetPageByIdUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getPageByIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPageByIdUseCase] -}); -``` - ### `GetPageByPathUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -335,25 +238,6 @@ namespace GetPageByPathUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPageByPathUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getPageByPathUseCase: GetPageByPathUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getPageByPathUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPageByPathUseCase] -}); -``` - ### `GetPageRevisionsUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -383,25 +267,6 @@ namespace GetPageRevisionsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetPageRevisionsUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getPageRevisionsUseCase: GetPageRevisionsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getPageRevisionsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetPageRevisionsUseCase] -}); -``` - ### `ListPagesUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -431,25 +296,6 @@ namespace ListPagesUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListPagesUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listPagesUseCase: ListPagesUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listPagesUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListPagesUseCase] -}); -``` - ### `MovePageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -478,25 +324,6 @@ namespace MovePageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { MovePageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private movePageUseCase: MovePageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.movePageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [MovePageUseCase] -}); -``` - ### `PublishPageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -525,25 +352,6 @@ namespace PublishPageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { PublishPageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private publishPageUseCase: PublishPageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.publishPageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [PublishPageUseCase] -}); -``` - ### `UnpublishPageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -572,25 +380,6 @@ namespace UnpublishPageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UnpublishPageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private unpublishPageUseCase: UnpublishPageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.unpublishPageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UnpublishPageUseCase] -}); -``` - ### `UpdatePageUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/page` @@ -619,25 +408,6 @@ namespace UpdatePageUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdatePageUseCase } from "webiny/api/website-builder/page"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updatePageUseCase: UpdatePageUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updatePageUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdatePageUseCase] -}); -``` - ## Event Handlers ### `PageAfterCreateEventHandler` @@ -674,25 +444,6 @@ namespace PageAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterCreateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterCreateEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterCreateRevisionFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -727,25 +478,6 @@ namespace PageAfterCreateRevisionFromEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterCreateRevisionFromEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterCreateRevisionFromEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageAfterCreateRevisionFromEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -780,25 +512,6 @@ namespace PageAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterDeleteEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterDeleteEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterDuplicateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -834,25 +547,6 @@ namespace PageAfterDuplicateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterDuplicateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterDuplicateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterDuplicateEventHandler.Event): Promise { - const { original, page } = event.payload; - } -} - -export default PageAfterDuplicateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -889,25 +583,6 @@ namespace PageAfterMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterMoveEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterMoveEventHandler.Event): Promise { - const { original, input, page } = event.payload; - } -} - -export default PageAfterMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterPublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -942,25 +617,6 @@ namespace PageAfterPublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterPublishEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterPublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterPublishEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageAfterPublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -995,25 +651,6 @@ namespace PageAfterUnpublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterUnpublishEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterUnpublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterUnpublishEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageAfterUnpublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1053,25 +690,6 @@ namespace PageAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageAfterUpdateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageAfterUpdateEventHandler.Event): Promise { - const { original, input, page } = event.payload; - } -} - -export default PageAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1106,25 +724,6 @@ namespace PageBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeCreateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeCreateEventHandler.Event): Promise { - const { input } = event.payload; - } -} - -export default PageBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeCreateRevisionFromEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1159,25 +758,6 @@ namespace PageBeforeCreateRevisionFromEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeCreateRevisionFromEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeCreateRevisionFromEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeCreateRevisionFromEventHandler.Event): Promise { - const { params } = event.payload; - } -} - -export default PageBeforeCreateRevisionFromEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1212,25 +792,6 @@ namespace PageBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeDeleteEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeDeleteEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeDuplicateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1265,25 +826,6 @@ namespace PageBeforeDuplicateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeDuplicateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeDuplicateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeDuplicateEventHandler.Event): Promise { - const { original } = event.payload; - } -} - -export default PageBeforeDuplicateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1319,25 +861,6 @@ namespace PageBeforeMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeMoveEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeMoveEventHandler.Event): Promise { - const { original, input } = event.payload; - } -} - -export default PageBeforeMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforePublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1372,25 +895,6 @@ namespace PageBeforePublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforePublishEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforePublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforePublishEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageBeforePublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeUnpublishEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1425,25 +929,6 @@ namespace PageBeforeUnpublishEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeUnpublishEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeUnpublishEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeUnpublishEventHandler.Event): Promise { - const { page } = event.payload; - } -} - -export default PageBeforeUnpublishEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `PageBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/page` @@ -1481,22 +966,3 @@ namespace PageBeforeUpdateEventHandler { type Page = WbPage; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { PageBeforeUpdateEventHandler } from "webiny/api/website-builder/page"; - -class MyHandler implements PageBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: PageBeforeUpdateEventHandler.Event): Promise { - const { original, input } = event.payload; - } -} - -export default PageBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx index cbb25a7cf..24f7ea5be 100644 --- a/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx +++ b/docs/developer-docs/6.x/reference/api/website-builder/redirect.mdx @@ -79,25 +79,6 @@ namespace CreateRedirectUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CreateRedirectUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private createRedirectUseCase: CreateRedirectUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.createRedirectUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CreateRedirectUseCase] -}); -``` - ### `DeleteRedirectUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -125,25 +106,6 @@ namespace DeleteRedirectUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { DeleteRedirectUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private deleteRedirectUseCase: DeleteRedirectUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.deleteRedirectUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [DeleteRedirectUseCase] -}); -``` - ### `GetActiveRedirectsUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -173,25 +135,6 @@ namespace GetActiveRedirectsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetActiveRedirectsUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getActiveRedirectsUseCase: GetActiveRedirectsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getActiveRedirectsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetActiveRedirectsUseCase] -}); -``` - ### `GetRedirectByIdUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -221,25 +164,6 @@ namespace GetRedirectByIdUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetRedirectByIdUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getRedirectByIdUseCase: GetRedirectByIdUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.getRedirectByIdUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetRedirectByIdUseCase] -}); -``` - ### `InvalidateRedirectsCacheUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -266,27 +190,6 @@ namespace InvalidateRedirectsCacheUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { InvalidateRedirectsCacheUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor( - private invalidateRedirectsCacheUseCase: InvalidateRedirectsCacheUseCase.Interface - ) {} - - public async execute(/* ... */): Promise { - await this.invalidateRedirectsCacheUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [InvalidateRedirectsCacheUseCase] -}); -``` - ### `ListRedirectsUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -315,25 +218,6 @@ namespace ListRedirectsUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ListRedirectsUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private listRedirectsUseCase: ListRedirectsUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.listRedirectsUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ListRedirectsUseCase] -}); -``` - ### `MoveRedirectUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -362,25 +246,6 @@ namespace MoveRedirectUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { MoveRedirectUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private moveRedirectUseCase: MoveRedirectUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.moveRedirectUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [MoveRedirectUseCase] -}); -``` - ### `UpdateRedirectUseCase` **Use Case Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -409,25 +274,6 @@ namespace UpdateRedirectUseCase { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { UpdateRedirectUseCase } from "webiny/api/website-builder/redirect"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private updateRedirectUseCase: UpdateRedirectUseCase.Interface) {} - - public async execute(/* ... */): Promise { - await this.updateRedirectUseCase.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [UpdateRedirectUseCase] -}); -``` - ## Event Handlers ### `RedirectAfterCreateEventHandler` @@ -464,25 +310,6 @@ namespace RedirectAfterCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectAfterCreateEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectAfterCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectAfterCreateEventHandler.Event): Promise { - const { redirect } = event.payload; - } -} - -export default RedirectAfterCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectAfterDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -517,25 +344,6 @@ namespace RedirectAfterDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectAfterDeleteEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectAfterDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectAfterDeleteEventHandler.Event): Promise { - const { redirect } = event.payload; - } -} - -export default RedirectAfterDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectAfterMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -572,25 +380,6 @@ namespace RedirectAfterMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectAfterMoveEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectAfterMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectAfterMoveEventHandler.Event): Promise { - const { original, input, redirect } = event.payload; - } -} - -export default RedirectAfterMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectAfterUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -630,25 +419,6 @@ namespace RedirectAfterUpdateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectAfterUpdateEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectAfterUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectAfterUpdateEventHandler.Event): Promise { - const { original, input, redirect } = event.payload; - } -} - -export default RedirectAfterUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectBeforeCreateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -683,25 +453,6 @@ namespace RedirectBeforeCreateEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectBeforeCreateEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectBeforeCreateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectBeforeCreateEventHandler.Event): Promise { - const { input } = event.payload; - } -} - -export default RedirectBeforeCreateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectBeforeDeleteEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -736,25 +487,6 @@ namespace RedirectBeforeDeleteEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectBeforeDeleteEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectBeforeDeleteEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectBeforeDeleteEventHandler.Event): Promise { - const { redirect } = event.payload; - } -} - -export default RedirectBeforeDeleteEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectBeforeMoveEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -790,25 +522,6 @@ namespace RedirectBeforeMoveEventHandler { } ``` -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectBeforeMoveEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectBeforeMoveEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectBeforeMoveEventHandler.Event): Promise { - const { original, input } = event.payload; - } -} - -export default RedirectBeforeMoveEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` - ### `RedirectBeforeUpdateEventHandler` **Event Handler Abstraction** — imported from `webiny/api/website-builder/redirect` @@ -846,22 +559,3 @@ namespace RedirectBeforeUpdateEventHandler { type Redirect = WbRedirect; } ``` - -**Usage:** - -```typescript extensions/MyHandler.ts -import { RedirectBeforeUpdateEventHandler } from "webiny/api/website-builder/redirect"; - -class MyHandler implements RedirectBeforeUpdateEventHandler.Interface { - public constructor(/* inject dependencies here */) {} - - public async handle(event: RedirectBeforeUpdateEventHandler.Event): Promise { - const { original, input } = event.payload; - } -} - -export default RedirectBeforeUpdateEventHandler.createImplementation({ - implementation: MyHandler, - dependencies: [] -}); -``` diff --git a/docs/developer-docs/6.x/reference/cli/command.mdx b/docs/developer-docs/6.x/reference/cli/command.mdx index 111b264e2..3c3df8e89 100644 --- a/docs/developer-docs/6.x/reference/cli/command.mdx +++ b/docs/developer-docs/6.x/reference/cli/command.mdx @@ -38,20 +38,3 @@ namespace CliCommandFactory { type CommandDefinition = ICliCommandDefinition; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { CliCommandFactory } from "webiny/cli/command"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private cliCommandFactory: CliCommandFactory.Interface) {} - - public async execute(/* ... */): Promise {} -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CliCommandFactory] -}); -``` diff --git a/docs/developer-docs/6.x/reference/cli/overview.mdx b/docs/developer-docs/6.x/reference/cli/overview.mdx index dba8e26b1..25b435229 100644 --- a/docs/developer-docs/6.x/reference/cli/overview.mdx +++ b/docs/developer-docs/6.x/reference/cli/overview.mdx @@ -55,25 +55,6 @@ namespace Logger { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { Logger } from "webiny/cli/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private logger: Logger.Interface) {} - - public async execute(/* ... */): Promise { - this.logger.info(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Logger] -}); -``` - ## `Ui` **Abstraction** — imported from `webiny/cli/index` @@ -105,22 +86,3 @@ namespace Ui { type Interface = IUiService; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { Ui } from "webiny/cli/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private ui: Ui.Interface) {} - - public async execute(/* ... */): Promise { - this.ui.info(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Ui] -}); -``` diff --git a/docs/developer-docs/6.x/reference/infra/admin.mdx b/docs/developer-docs/6.x/reference/infra/admin.mdx index b1a450ab6..52b6ce44a 100644 --- a/docs/developer-docs/6.x/reference/infra/admin.mdx +++ b/docs/developer-docs/6.x/reference/infra/admin.mdx @@ -55,25 +55,6 @@ namespace AdminAfterBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminAfterBuildHook } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminAfterBuildHook: AdminAfterBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminAfterBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminAfterBuildHook] -}); -``` - ## `AdminAfterDeployHook` **Abstraction** — imported from `webiny/infra/admin` @@ -99,25 +80,6 @@ namespace AdminAfterDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminAfterDeployHook } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminAfterDeployHook: AdminAfterDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminAfterDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminAfterDeployHook] -}); -``` - ## `AdminBeforeBuildHook` **Abstraction** — imported from `webiny/infra/admin` @@ -143,25 +105,6 @@ namespace AdminBeforeBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminBeforeBuildHook } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminBeforeBuildHook: AdminBeforeBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminBeforeBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminBeforeBuildHook] -}); -``` - ## `AdminBeforeDeployHook` **Abstraction** — imported from `webiny/infra/admin` @@ -187,25 +130,6 @@ namespace AdminBeforeDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminBeforeDeployHook } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminBeforeDeployHook: AdminBeforeDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminBeforeDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminBeforeDeployHook] -}); -``` - ## `AdminBeforeWatchHook` **Abstraction** — imported from `webiny/infra/admin` @@ -231,25 +155,6 @@ namespace AdminBeforeWatchHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminBeforeWatchHook } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminBeforeWatchHook: AdminBeforeWatchHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminBeforeWatchHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminBeforeWatchHook] -}); -``` - ## `AdminPulumi` **Abstraction** — imported from `webiny/infra/admin` @@ -267,23 +172,6 @@ namespace AdminPulumi { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminPulumi } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminPulumi: AdminPulumi.Interface) {} - - public async execute(/* ... */): Promise {} -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminPulumi] -}); -``` - ## `GetAdminStackOutput` **Abstraction** — imported from `webiny/infra/admin` @@ -308,22 +196,3 @@ namespace GetAdminStackOutput { type Output = IAdminStackOutput; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetAdminStackOutput } from "webiny/infra/admin"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getAdminStackOutput: GetAdminStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.getAdminStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetAdminStackOutput] -}); -``` diff --git a/docs/developer-docs/6.x/reference/infra/api.mdx b/docs/developer-docs/6.x/reference/infra/api.mdx index 3bf0545b9..cb9614e18 100644 --- a/docs/developer-docs/6.x/reference/infra/api.mdx +++ b/docs/developer-docs/6.x/reference/infra/api.mdx @@ -55,25 +55,6 @@ namespace ApiAfterBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiAfterBuildHook } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiAfterBuildHook: ApiAfterBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiAfterBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiAfterBuildHook] -}); -``` - ## `ApiAfterDeployHook` **Abstraction** — imported from `webiny/infra/api` @@ -99,25 +80,6 @@ namespace ApiAfterDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiAfterDeployHook } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiAfterDeployHook: ApiAfterDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiAfterDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiAfterDeployHook] -}); -``` - ## `ApiBeforeBuildHook` **Abstraction** — imported from `webiny/infra/api` @@ -143,25 +105,6 @@ namespace ApiBeforeBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiBeforeBuildHook } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiBeforeBuildHook: ApiBeforeBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiBeforeBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiBeforeBuildHook] -}); -``` - ## `ApiBeforeDeployHook` **Abstraction** — imported from `webiny/infra/api` @@ -187,25 +130,6 @@ namespace ApiBeforeDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiBeforeDeployHook } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiBeforeDeployHook: ApiBeforeDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiBeforeDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiBeforeDeployHook] -}); -``` - ## `ApiBeforeWatchHook` **Abstraction** — imported from `webiny/infra/api` @@ -231,25 +155,6 @@ namespace ApiBeforeWatchHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiBeforeWatchHook } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiBeforeWatchHook: ApiBeforeWatchHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiBeforeWatchHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiBeforeWatchHook] -}); -``` - ## `ApiPulumi` **Abstraction** — imported from `webiny/infra/api` @@ -267,23 +172,6 @@ namespace ApiPulumi { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiPulumi } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiPulumi: ApiPulumi.Interface) {} - - public async execute(/* ... */): Promise {} -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiPulumi] -}); -``` - ## `GetApiStackOutput` **Abstraction** — imported from `webiny/infra/api` @@ -308,22 +196,3 @@ namespace GetApiStackOutput { type Output = IApiStackOutput; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetApiStackOutput } from "webiny/infra/api"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getApiStackOutput: GetApiStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.getApiStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetApiStackOutput] -}); -``` diff --git a/docs/developer-docs/6.x/reference/infra/core.mdx b/docs/developer-docs/6.x/reference/infra/core.mdx index 29bcd455a..1951f6482 100644 --- a/docs/developer-docs/6.x/reference/infra/core.mdx +++ b/docs/developer-docs/6.x/reference/infra/core.mdx @@ -54,25 +54,6 @@ namespace CoreAfterBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CoreAfterBuildHook } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private coreAfterBuildHook: CoreAfterBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.coreAfterBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CoreAfterBuildHook] -}); -``` - ## `CoreAfterDeployHook` **Abstraction** — imported from `webiny/infra/core` @@ -98,25 +79,6 @@ namespace CoreAfterDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CoreAfterDeployHook } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private coreAfterDeployHook: CoreAfterDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.coreAfterDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CoreAfterDeployHook] -}); -``` - ## `CoreBeforeBuildHook` **Abstraction** — imported from `webiny/infra/core` @@ -142,25 +104,6 @@ namespace CoreBeforeBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CoreBeforeBuildHook } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private coreBeforeBuildHook: CoreBeforeBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.coreBeforeBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CoreBeforeBuildHook] -}); -``` - ## `CoreBeforeDeployHook` **Abstraction** — imported from `webiny/infra/core` @@ -186,25 +129,6 @@ namespace CoreBeforeDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CoreBeforeDeployHook } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private coreBeforeDeployHook: CoreBeforeDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.coreBeforeDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CoreBeforeDeployHook] -}); -``` - ## `CorePulumi` **Abstraction** — imported from `webiny/infra/core` @@ -222,23 +146,6 @@ namespace CorePulumi { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CorePulumi } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private corePulumi: CorePulumi.Interface) {} - - public async execute(/* ... */): Promise {} -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CorePulumi] -}); -``` - ## `GetCoreStackOutput` **Abstraction** — imported from `webiny/infra/core` @@ -263,22 +170,3 @@ namespace GetCoreStackOutput { type Output = ICoreStackOutput; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { GetCoreStackOutput } from "webiny/infra/core"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private getCoreStackOutput: GetCoreStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.getCoreStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [GetCoreStackOutput] -}); -``` diff --git a/docs/developer-docs/6.x/reference/infra/overview.mdx b/docs/developer-docs/6.x/reference/infra/overview.mdx index 33b1bff02..88e6188e1 100644 --- a/docs/developer-docs/6.x/reference/infra/overview.mdx +++ b/docs/developer-docs/6.x/reference/infra/overview.mdx @@ -61,25 +61,6 @@ namespace AdminStackOutput { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AdminStackOutput } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private adminStackOutput: AdminStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.adminStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AdminStackOutput] -}); -``` - ## `AfterBuildHook` **Abstraction** — imported from `webiny/infra/index` @@ -105,25 +86,6 @@ namespace AfterBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AfterBuildHook } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private afterBuildHook: AfterBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.afterBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AfterBuildHook] -}); -``` - ## `AfterDeployHook` **Abstraction** — imported from `webiny/infra/index` @@ -149,25 +111,6 @@ namespace AfterDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { AfterDeployHook } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private afterDeployHook: AfterDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.afterDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [AfterDeployHook] -}); -``` - ## `ApiGqlClient` **Abstraction** — imported from `webiny/infra/index` @@ -200,25 +143,6 @@ namespace ApiGqlClient { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiGqlClient } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiGqlClient: ApiGqlClient.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiGqlClient.query(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiGqlClient] -}); -``` - ## `ApiStackOutput` **Abstraction** — imported from `webiny/infra/index` @@ -244,25 +168,6 @@ namespace ApiStackOutput { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { ApiStackOutput } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private apiStackOutput: ApiStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.apiStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [ApiStackOutput] -}); -``` - ## `BeforeBuildHook` **Abstraction** — imported from `webiny/infra/index` @@ -288,25 +193,6 @@ namespace BeforeBuildHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BeforeBuildHook } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private beforeBuildHook: BeforeBuildHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.beforeBuildHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BeforeBuildHook] -}); -``` - ## `BeforeDeployHook` **Abstraction** — imported from `webiny/infra/index` @@ -332,25 +218,6 @@ namespace BeforeDeployHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BeforeDeployHook } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private beforeDeployHook: BeforeDeployHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.beforeDeployHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BeforeDeployHook] -}); -``` - ## `BeforeWatchHook` **Abstraction** — imported from `webiny/infra/index` @@ -376,25 +243,6 @@ namespace BeforeWatchHook { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { BeforeWatchHook } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private beforeWatchHook: BeforeWatchHook.Interface) {} - - public async execute(/* ... */): Promise { - await this.beforeWatchHook.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [BeforeWatchHook] -}); -``` - ## `CoreStackOutput` **Abstraction** — imported from `webiny/infra/index` @@ -420,25 +268,6 @@ namespace CoreStackOutput { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { CoreStackOutput } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private coreStackOutput: CoreStackOutput.Interface) {} - - public async execute(/* ... */): Promise { - await this.coreStackOutput.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [CoreStackOutput] -}); -``` - ## `EnvVar` **Constant** — imported from `webiny/infra/index` @@ -485,25 +314,6 @@ namespace InvokeLambdaFunction { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { InvokeLambdaFunction } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private invokeLambdaFunction: InvokeLambdaFunction.Interface) {} - - public async execute(/* ... */): Promise { - await this.invokeLambdaFunction.execute(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [InvokeLambdaFunction] -}); -``` - ## `Logger` **Abstraction** — imported from `webiny/infra/index` @@ -534,25 +344,6 @@ namespace Logger { } ``` -**Usage:** - -```typescript extensions/MyImpl.ts -import { Logger } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private logger: Logger.Interface) {} - - public async execute(/* ... */): Promise { - this.logger.info(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Logger] -}); -``` - ## `Ui` **Abstraction** — imported from `webiny/infra/index` @@ -584,22 +375,3 @@ namespace Ui { type Interface = IUiService; } ``` - -**Usage:** - -```typescript extensions/MyImpl.ts -import { Ui } from "webiny/infra/index"; - -class MyImpl implements MyUseCase.Interface { - public constructor(private ui: Ui.Interface) {} - - public async execute(/* ... */): Promise { - this.ui.info(/* ... */); - } -} - -export default MyUseCase.createImplementation({ - implementation: MyImpl, - dependencies: [Ui] -}); -``` diff --git a/img_2.png b/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a09333915f63419fbbb44e2814b12564b54ff180 GIT binary patch literal 198052 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�}n)lwl~l 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%0Dq3_0X9fVWwRkHniXRN~`` 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 literal 0 HcmV?d00001 diff --git a/docs/developer-docs/6.x/headless-cms/assets/api-playground-url-location.png b/docs/developer-docs/6.x/headless-cms/assets/api-playground-url-location.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa131809dc44088b2ecc5cb289e929f182d8a10 GIT binary patch literal 139950 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