diff --git a/404.html b/404.html index 89b410ba8..7a77b2564 100644 --- a/404.html +++ b/404.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
App Builder
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file diff --git a/404/index.html b/404/index.html index b3cc3ec44..5a2799c99 100644 --- a/404/index.html +++ b/404/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
App Builder
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index e69c06510..5609764dd 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-132fafb14534b67cb3e4.js"],"component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md":["/component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md-e8287b7ee1e877d41721.js"],"component---src-pages-getting-started-common-troubleshooting-md":["/component---src-pages-getting-started-common-troubleshooting-md-56eeea4c2ebf3eaa29fd.js"],"component---src-pages-getting-started-first-app-md":["/component---src-pages-getting-started-first-app-md-cfca5f04bd749d77d340.js"],"component---src-pages-getting-started-index-md":["/component---src-pages-getting-started-index-md-a2557c35f1b6d68cac3c.js"],"component---src-pages-getting-started-publish-app-md":["/component---src-pages-getting-started-publish-app-md-80069dbdc154384390af.js"],"component---src-pages-guides-app-hooks-md":["/component---src-pages-guides-app-hooks-md-651dfac8b673be713bc4.js"],"component---src-pages-guides-application-logging-azure-log-analytics-md":["/component---src-pages-guides-application-logging-azure-log-analytics-md-968dc7a663059e2057c7.js"],"component---src-pages-guides-application-logging-index-md":["/component---src-pages-guides-application-logging-index-md-5457d259a683db121834.js"],"component---src-pages-guides-application-logging-new-relic-md":["/component---src-pages-guides-application-logging-new-relic-md-0bd4b50b02725f4b1d7c.js"],"component---src-pages-guides-application-logging-splunk-cloud-md":["/component---src-pages-guides-application-logging-splunk-cloud-md-59307f947f76305d80bd.js"],"component---src-pages-guides-application-logging-splunk-enterprise-md":["/component---src-pages-guides-application-logging-splunk-enterprise-md-e455bd2c290d59be0bad.js"],"component---src-pages-guides-application-state-md":["/component---src-pages-guides-application-state-md-4f143671da9ccc131812.js"],"component---src-pages-guides-configuration-index-md":["/component---src-pages-guides-configuration-index-md-518ed5cd8602838e72e6.js"],"component---src-pages-guides-configuration-webpack-configuration-md":["/component---src-pages-guides-configuration-webpack-configuration-md-12d5fd03b560dd5c030c.js"],"component---src-pages-guides-contribution-guides-index-md":["/component---src-pages-guides-contribution-guides-index-md-0105c12375a1ea8157b8.js"],"component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md":["/component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md-ae98ee5b7279877c033d.js"],"component---src-pages-guides-deployment-credential-rotation-md":["/component---src-pages-guides-deployment-credential-rotation-md-1c322abfc09c9f0216ed.js"],"component---src-pages-guides-deployment-index-md":["/component---src-pages-guides-deployment-index-md-0b91206fcab62b2fd73a.js"],"component---src-pages-guides-deployment-setting-response-headers-md":["/component---src-pages-guides-deployment-setting-response-headers-md-991da7b81ceaf46090c2.js"],"component---src-pages-guides-development-index-md":["/component---src-pages-guides-development-index-md-ba0e47b9e300a3bbb8de.js"],"component---src-pages-guides-distribution-index-md":["/component---src-pages-guides-distribution-index-md-d60f372ea2f4847cd127.js"],"component---src-pages-guides-distribution-private-md":["/component---src-pages-guides-distribution-private-md-bb44e5421d25df3fc198.js"],"component---src-pages-guides-distribution-public-md":["/component---src-pages-guides-distribution-public-md-e1911f05840dd003b75e.js"],"component---src-pages-guides-events-custom-events-md":["/component---src-pages-guides-events-custom-events-md-9f9348cf7cd303e544d6.js"],"component---src-pages-guides-events-webhooks-md":["/component---src-pages-guides-events-webhooks-md-bedf4d5612175c3e2a6b.js"],"component---src-pages-guides-exc-app-index-md":["/component---src-pages-guides-exc-app-index-md-784a940668cc5a09cc2c.js"],"component---src-pages-guides-exc-app-interfaces-index-md":["/component---src-pages-guides-exc-app-interfaces-index-md-9d8eee529728b7a19785.js"],"component---src-pages-guides-exc-app-interfaces-index-runtime-md":["/component---src-pages-guides-exc-app-interfaces-index-runtime-md-122a3e0e1c1c32cdcd55.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md-784a4cd22e6f8eea3f97.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md-ff53a924900563bd02e4.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapi-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapi-md-a67967ab519e3cba7e94.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md-e9097f8baa6264d401c5.js"],"component---src-pages-guides-exc-app-interfaces-topbar-callback-md":["/component---src-pages-guides-exc-app-interfaces-topbar-callback-md-b964e0d8f679e579f4fd.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md-6701e50b7f386406cde1.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md-3a640dfd9300c3191b21.js"],"component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md-2ede3fec155684444f30.js"],"component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md-f11d506f7ceac5ccaa52.js"],"component---src-pages-guides-exc-app-interfaces-topbar-solution-md":["/component---src-pages-guides-exc-app-interfaces-topbar-solution-md-d188806d44fc577ba711.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md-7c353933926a956b08ee.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md-bc42f320fd353a910004.js"],"component---src-pages-guides-exc-app-interfaces-user-userapi-md":["/component---src-pages-guides-exc-app-interfaces-user-userapi-md-430bb9475820c727f376.js"],"component---src-pages-guides-exc-app-interfaces-user-userinfo-md":["/component---src-pages-guides-exc-app-interfaces-user-userinfo-md-64e555b22cece068c3aa.js"],"component---src-pages-guides-exc-app-modules-index-md":["/component---src-pages-guides-exc-app-modules-index-md-4f226d91b7d574120dc2.js"],"component---src-pages-guides-exc-app-modules-page-md":["/component---src-pages-guides-exc-app-modules-page-md-b0c97e49e29b00a52493.js"],"component---src-pages-guides-exc-app-modules-topbar-md":["/component---src-pages-guides-exc-app-modules-topbar-md-66870a00b0e1c63f6c90.js"],"component---src-pages-guides-exc-app-modules-user-md":["/component---src-pages-guides-exc-app-modules-user-md-30da1f6a33cdceca488b.js"],"component---src-pages-guides-extensions-extension-migration-guide-md":["/component---src-pages-guides-extensions-extension-migration-guide-md-3433afa60d003e77b4a2.js"],"component---src-pages-guides-extensions-index-md":["/component---src-pages-guides-extensions-index-md-2820a3fbf5085f976103.js"],"component---src-pages-guides-extensions-ui-extensibility-md":["/component---src-pages-guides-extensions-ui-extensibility-md-70b5620535129800c671.js"],"component---src-pages-guides-index-md":["/component---src-pages-guides-index-md-23d777e9cf8d8d8d607f.js"],"component---src-pages-guides-introduction-to-react-spectrum-md":["/component---src-pages-guides-introduction-to-react-spectrum-md-65f101721c46d363026b.js"],"component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md":["/component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md-76016cd313d277b33b73.js"],"component---src-pages-guides-reference-documentation-index-md":["/component---src-pages-guides-reference-documentation-index-md-748da52cdb69509e135a.js"],"component---src-pages-guides-security-index-md":["/component---src-pages-guides-security-index-md-7bc0800f5d5e4108bc16.js"],"component---src-pages-guides-security-understanding-authentication-md":["/component---src-pages-guides-security-understanding-authentication-md-9c8d91b3b2b76ca5d7f4.js"],"component---src-pages-guides-telemetry-md":["/component---src-pages-guides-telemetry-md-03fdd46dcc36b853a893.js"],"component---src-pages-guides-tips-tricks-md":["/component---src-pages-guides-tips-tricks-md-b7be511ac3f3c8b74b54.js"],"component---src-pages-guides-using-sdks-md":["/component---src-pages-guides-using-sdks-md-76c9e7351110967b6201.js"],"component---src-pages-overview-community-md":["/component---src-pages-overview-community-md-ca8914738c6436ec9fae.js"],"component---src-pages-overview-faq-md":["/component---src-pages-overview-faq-md-3f3c281a77a5b6e73aa4.js"],"component---src-pages-overview-firefly-and-runtime-md":["/component---src-pages-overview-firefly-and-runtime-md-363740f11048fa646542.js"],"component---src-pages-overview-getting-access-md":["/component---src-pages-overview-getting-access-md-04a8f9df96e2b295f02d.js"],"component---src-pages-overview-how-it-works-md":["/component---src-pages-overview-how-it-works-md-0a899a5e4f304d7fbe02.js"],"component---src-pages-overview-index-md":["/component---src-pages-overview-index-md-e312e6a2d948c48ab09e.js"],"component---src-pages-resources-asset-compute-worker-ps-api-index-md":["/component---src-pages-resources-asset-compute-worker-ps-api-index-md-df27f1562bc366d4594a.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md-140291dcd0429e13b0e4.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md-f3230667f4cf422ca74d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md-b77c03b1a14dc1ae1b3f.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md-e0989a9f98ba44d6f68d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-requirements-md":["/component---src-pages-resources-asset-compute-worker-ps-api-requirements-md-70cb7a398177268ad87a.js"],"component---src-pages-resources-asset-compute-worker-ps-api-welldone-md":["/component---src-pages-resources-asset-compute-worker-ps-api-welldone-md-d4a35756db9a9b5b1d61.js"],"component---src-pages-resources-barcode-reader-barcode-md":["/component---src-pages-resources-barcode-reader-barcode-md-1bf67c96bfae9c83d23b.js"],"component---src-pages-resources-barcode-reader-bootstrap-md":["/component---src-pages-resources-barcode-reader-bootstrap-md-843e877747e0240b750c.js"],"component---src-pages-resources-barcode-reader-index-md":["/component---src-pages-resources-barcode-reader-index-md-c54c07b89ff83e8a7f73.js"],"component---src-pages-resources-barcode-reader-requirements-md":["/component---src-pages-resources-barcode-reader-requirements-md-1441a6da691226935850.js"],"component---src-pages-resources-barcode-reader-test-md":["/component---src-pages-resources-barcode-reader-test-md-aac29ffaeb8b311c68bf.js"],"component---src-pages-resources-barcode-reader-welldone-md":["/component---src-pages-resources-barcode-reader-welldone-md-ee3be90415021c7ece9c.js"],"component---src-pages-resources-blog-articles-md":["/component---src-pages-resources-blog-articles-md-e6074b1927cfa03e5d03.js"],"component---src-pages-resources-ci-cd-index-md":["/component---src-pages-resources-ci-cd-index-md-c8e5113dc46e92dffe95.js"],"component---src-pages-resources-ci-cd-lesson-1-md":["/component---src-pages-resources-ci-cd-lesson-1-md-cd53f7a727c04478bcd6.js"],"component---src-pages-resources-ci-cd-lesson-2-md":["/component---src-pages-resources-ci-cd-lesson-2-md-d9e24c98097332d31b22.js"],"component---src-pages-resources-ci-cd-lesson-3-md":["/component---src-pages-resources-ci-cd-lesson-3-md-db130b0ddae3e6d3f35a.js"],"component---src-pages-resources-ci-cd-requirements-md":["/component---src-pages-resources-ci-cd-requirements-md-cdd558c79395898b61b3.js"],"component---src-pages-resources-ci-cd-welldone-md":["/component---src-pages-resources-ci-cd-welldone-md-15bc3fca67405f925c09.js"],"component---src-pages-resources-cron-jobs-index-md":["/component---src-pages-resources-cron-jobs-index-md-5aeb5329e6e10c4570d3.js"],"component---src-pages-resources-cron-jobs-lesson-1-md":["/component---src-pages-resources-cron-jobs-lesson-1-md-b4c3a888558a80813ee7.js"],"component---src-pages-resources-cron-jobs-lesson-2-md":["/component---src-pages-resources-cron-jobs-lesson-2-md-a6779e51fe7f791e701b.js"],"component---src-pages-resources-cron-jobs-lesson-3-md":["/component---src-pages-resources-cron-jobs-lesson-3-md-4ac4b4e0f9daf6b919d5.js"],"component---src-pages-resources-cron-jobs-requirements-md":["/component---src-pages-resources-cron-jobs-requirements-md-38cd22dbcb84b652f49e.js"],"component---src-pages-resources-cron-jobs-welldone-md":["/component---src-pages-resources-cron-jobs-welldone-md-514f93a129ec0ade4164.js"],"component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md":["/component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md-b61fa6a857f4c54e0089.js"],"component---src-pages-resources-custom-asset-compute-worker-index-md":["/component---src-pages-resources-custom-asset-compute-worker-index-md-78ba78661d2799b82d2f.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-1-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-1-md-9233bd53bfe542a53320.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-2-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-2-md-ec19167d88e8d3ec8070.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-3-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-3-md-798e17855a68fd22b690.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-4-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-4-md-707ffa20e9f4a907b721.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js"],"component---src-pages-resources-custom-asset-compute-worker-our-worker-md":["/component---src-pages-resources-custom-asset-compute-worker-our-worker-md-b60a27296e901d8dbd8d.js"],"component---src-pages-resources-custom-asset-compute-worker-requirements-md":["/component---src-pages-resources-custom-asset-compute-worker-requirements-md-e64918cfdca252cfc65b.js"],"component---src-pages-resources-custom-asset-compute-worker-welldone-md":["/component---src-pages-resources-custom-asset-compute-worker-welldone-md-3a48e15a72aab5109734.js"],"component---src-pages-resources-customer-dashboard-index-md":["/component---src-pages-resources-customer-dashboard-index-md-74325c934ec263f79e8a.js"],"component---src-pages-resources-customer-dashboard-lesson-1-md":["/component---src-pages-resources-customer-dashboard-lesson-1-md-4d4c1719ef3b46d46c74.js"],"component---src-pages-resources-customer-dashboard-lesson-2-md":["/component---src-pages-resources-customer-dashboard-lesson-2-md-65dd5459b94acfd6dabd.js"],"component---src-pages-resources-customer-dashboard-lesson-3-md":["/component---src-pages-resources-customer-dashboard-lesson-3-md-dec0cdd5a2e117b08df9.js"],"component---src-pages-resources-customer-dashboard-lesson-4-md":["/component---src-pages-resources-customer-dashboard-lesson-4-md-05e221b170026fabbf1e.js"],"component---src-pages-resources-customer-dashboard-lesson-5-md":["/component---src-pages-resources-customer-dashboard-lesson-5-md-d2edc493ee062f06b7da.js"],"component---src-pages-resources-customer-dashboard-requirements-md":["/component---src-pages-resources-customer-dashboard-requirements-md-cfe913380bfe910baec5.js"],"component---src-pages-resources-customer-dashboard-welldone-md":["/component---src-pages-resources-customer-dashboard-welldone-md-76e7e421096c568ad613.js"],"component---src-pages-resources-debugging-index-md":["/component---src-pages-resources-debugging-index-md-3e7225f5932e967ec118.js"],"component---src-pages-resources-debugging-lesson-1-md":["/component---src-pages-resources-debugging-lesson-1-md-312d881c097a10d405c2.js"],"component---src-pages-resources-debugging-lesson-2-md":["/component---src-pages-resources-debugging-lesson-2-md-65b79a91814522d23da6.js"],"component---src-pages-resources-debugging-lesson-3-md":["/component---src-pages-resources-debugging-lesson-3-md-3ca5b2f139b98e84ef46.js"],"component---src-pages-resources-debugging-requirements-md":["/component---src-pages-resources-debugging-requirements-md-6736bf12d6bbeb1f2a06.js"],"component---src-pages-resources-debugging-welldone-md":["/component---src-pages-resources-debugging-welldone-md-b31cfebaaeb8eeccfccc.js"],"component---src-pages-resources-event-driven-index-md":["/component---src-pages-resources-event-driven-index-md-fb16543eae8475287d95.js"],"component---src-pages-resources-event-driven-lesson-1-md":["/component---src-pages-resources-event-driven-lesson-1-md-d9cd3c7a02f50ed3010c.js"],"component---src-pages-resources-event-driven-lesson-2-md":["/component---src-pages-resources-event-driven-lesson-2-md-52375f09c89df8f0329f.js"],"component---src-pages-resources-event-driven-lesson-3-md":["/component---src-pages-resources-event-driven-lesson-3-md-b250d176fe7ec5ccf8ce.js"],"component---src-pages-resources-event-driven-lesson-4-md":["/component---src-pages-resources-event-driven-lesson-4-md-aa6abd539bf9e8a0fa6f.js"],"component---src-pages-resources-event-driven-requirements-md":["/component---src-pages-resources-event-driven-requirements-md-f4be671d3fb58ae75d76.js"],"component---src-pages-resources-event-driven-welldone-md":["/component---src-pages-resources-event-driven-welldone-md-1e16d48419b5953c5cb9.js"],"component---src-pages-resources-events-runtime-index-md":["/component---src-pages-resources-events-runtime-index-md-6a637359adf514a2384d.js"],"component---src-pages-resources-events-runtime-lesson-1-md":["/component---src-pages-resources-events-runtime-lesson-1-md-75ec6648c317e5c6b0fc.js"],"component---src-pages-resources-events-runtime-lesson-2-md":["/component---src-pages-resources-events-runtime-lesson-2-md-15c71750218c486dc22c.js"],"component---src-pages-resources-events-runtime-requirements-md":["/component---src-pages-resources-events-runtime-requirements-md-4445f0d4efb01d5fff6f.js"],"component---src-pages-resources-events-runtime-welldone-md":["/component---src-pages-resources-events-runtime-welldone-md-c3ee017479ebdf5de561.js"],"component---src-pages-resources-index-md":["/component---src-pages-resources-index-md-b2c1a1c0842ae7f045ef.js"],"component---src-pages-resources-journaling-events-index-md":["/component---src-pages-resources-journaling-events-index-md-19686602b0f07e21d5ed.js"],"component---src-pages-resources-journaling-events-lesson-1-md":["/component---src-pages-resources-journaling-events-lesson-1-md-2c48bff053703a6c6905.js"],"component---src-pages-resources-journaling-events-lesson-2-md":["/component---src-pages-resources-journaling-events-lesson-2-md-05f28e1b8b5195e597d0.js"],"component---src-pages-resources-journaling-events-lesson-3-md":["/component---src-pages-resources-journaling-events-lesson-3-md-8566781d4f6eb04dbda9.js"],"component---src-pages-resources-journaling-events-requirements-md":["/component---src-pages-resources-journaling-events-requirements-md-c88f8e55b6e521ea65e7.js"],"component---src-pages-resources-journaling-events-welldone-md":["/component---src-pages-resources-journaling-events-welldone-md-0e6f9b427d4cc0575a77.js"],"component---src-pages-resources-sample-apps-code-snippets-analytics-md":["/component---src-pages-resources-sample-apps-code-snippets-analytics-md-5f65b2f92f17cdfcaa35.js"],"component---src-pages-resources-sample-apps-code-snippets-events-md":["/component---src-pages-resources-sample-apps-code-snippets-events-md-9574b5710ca5a047a69a.js"],"component---src-pages-resources-sample-apps-code-snippets-files-md":["/component---src-pages-resources-sample-apps-code-snippets-files-md-adc9e8f6be74df4f2a16.js"],"component---src-pages-resources-sample-apps-code-snippets-index-md":["/component---src-pages-resources-sample-apps-code-snippets-index-md-54c254755f8d697d3355.js"],"component---src-pages-resources-sample-apps-code-snippets-state-md":["/component---src-pages-resources-sample-apps-code-snippets-state-md-3eb29ca55b874ea4e968.js"],"component---src-pages-resources-sample-apps-demo-md":["/component---src-pages-resources-sample-apps-demo-md-3c63a5c1e0c933f221a3.js"],"component---src-pages-resources-sample-apps-index-md":["/component---src-pages-resources-sample-apps-index-md-0cb3c5625603e7bf9e7e.js"],"component---src-pages-resources-spectrum-intro-index-md":["/component---src-pages-resources-spectrum-intro-index-md-f195bd7a5cb6e9a0099d.js"],"component---src-pages-resources-spectrum-intro-lesson-1-md":["/component---src-pages-resources-spectrum-intro-lesson-1-md-8f7fc36fffec398df2ea.js"],"component---src-pages-resources-spectrum-intro-lesson-2-md":["/component---src-pages-resources-spectrum-intro-lesson-2-md-5b1fe4f172a1ef1f7145.js"],"component---src-pages-resources-spectrum-intro-lesson-3-md":["/component---src-pages-resources-spectrum-intro-lesson-3-md-e931836db27bdfd93956.js"],"component---src-pages-resources-spectrum-intro-lesson-4-md":["/component---src-pages-resources-spectrum-intro-lesson-4-md-3edd55ee76309d1ac6c9.js"],"component---src-pages-resources-spectrum-intro-requirements-md":["/component---src-pages-resources-spectrum-intro-requirements-md-3df99d4649ee5690e41b.js"],"component---src-pages-resources-spectrum-intro-welldone-md":["/component---src-pages-resources-spectrum-intro-welldone-md-f10cc750fbc019acf112.js"],"component---src-pages-resources-todo-app-index-md":["/component---src-pages-resources-todo-app-index-md-6b8122b188baae344f86.js"],"component---src-pages-resources-todo-app-lesson-1-md":["/component---src-pages-resources-todo-app-lesson-1-md-f1070bdf2a69b5a3daf1.js"],"component---src-pages-resources-todo-app-lesson-2-md":["/component---src-pages-resources-todo-app-lesson-2-md-be74b0aafba06e08b1d4.js"],"component---src-pages-resources-todo-app-lesson-3-md":["/component---src-pages-resources-todo-app-lesson-3-md-3eb878fff1f1e0bfdbfd.js"],"component---src-pages-resources-todo-app-lesson-4-md":["/component---src-pages-resources-todo-app-lesson-4-md-14cd70628d5f269ce65a.js"],"component---src-pages-resources-todo-app-lesson-5-md":["/component---src-pages-resources-todo-app-lesson-5-md-0f99a69cda202c1cf2f2.js"],"component---src-pages-resources-todo-app-lesson-6-md":["/component---src-pages-resources-todo-app-lesson-6-md-62db9344545908c0b9c7.js"],"component---src-pages-resources-todo-app-requirements-md":["/component---src-pages-resources-todo-app-requirements-md-c75ad368418a1559ad4b.js"],"component---src-pages-resources-todo-app-welldone-md":["/component---src-pages-resources-todo-app-welldone-md-17a80e5958a71b635e4b.js"],"component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md":["/component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md-a6f5bb534104ff0f9d81.js"],"component---src-pages-resources-videos-developers-live-deep-dive-md":["/component---src-pages-resources-videos-developers-live-deep-dive-md-13b96a3284411b567eff.js"],"component---src-pages-resources-videos-developers-live-extend-experience-cloud-md":["/component---src-pages-resources-videos-developers-live-extend-experience-cloud-md-c5a72b3fe61e9a17b681.js"],"component---src-pages-resources-videos-exploring-ci-cd-md":["/component---src-pages-resources-videos-exploring-ci-cd-md-35b37eae4f5bead66e0a.js"],"component---src-pages-resources-videos-exploring-custom-events-md":["/component---src-pages-resources-videos-exploring-custom-events-md-be2bd7ac7d90c0f1d7c4.js"],"component---src-pages-resources-videos-exploring-dashboard-case-study-md":["/component---src-pages-resources-videos-exploring-dashboard-case-study-md-26843d8e7bc12cbec7bf.js"],"component---src-pages-resources-videos-exploring-debugging-md":["/component---src-pages-resources-videos-exploring-debugging-md-c1dcec6216923213f748.js"],"component---src-pages-resources-videos-exploring-deep-dive-use-cases-md":["/component---src-pages-resources-videos-exploring-deep-dive-use-cases-md-9ed9da611db5de2e997d.js"],"component---src-pages-resources-videos-exploring-learning-resources-md":["/component---src-pages-resources-videos-exploring-learning-resources-md-524e3d96652ed6017adc.js"],"component---src-pages-resources-videos-exploring-live-wired-sneak-md":["/component---src-pages-resources-videos-exploring-live-wired-sneak-md-ded5e1eff8eb72636d3c.js"],"component---src-pages-resources-videos-exploring-ode-case-study-md":["/component---src-pages-resources-videos-exploring-ode-case-study-md-4d9940dc9281076c484f.js"],"component---src-pages-resources-videos-exploring-projects-and-workspaces-md":["/component---src-pages-resources-videos-exploring-projects-and-workspaces-md-7d03d08697f1defd4f53.js"],"component---src-pages-resources-videos-exploring-react-spectrum-md":["/component---src-pages-resources-videos-exploring-react-spectrum-md-aa9c118a44ac3d328a38.js"],"component---src-pages-resources-videos-exploring-softcrylic-showcase-md":["/component---src-pages-resources-videos-exploring-softcrylic-showcase-md-c28fa74d9c6062c7dee8.js"],"component---src-pages-resources-videos-index-md":["/component---src-pages-resources-videos-index-md-407eebad1752452472cb.js"],"component---src-pages-resources-videos-overview-architecture-md":["/component---src-pages-resources-videos-overview-architecture-md-25b3b9adc2a5f59bfb73.js"],"component---src-pages-resources-videos-overview-e-2-e-user-journey-md":["/component---src-pages-resources-videos-overview-e-2-e-user-journey-md-d6803bc1097239885290.js"],"component---src-pages-resources-videos-overview-getting-started-md":["/component---src-pages-resources-videos-overview-getting-started-md-4c73157b68b44aaeef2f.js"],"component---src-pages-resources-videos-overview-introduction-md":["/component---src-pages-resources-videos-overview-introduction-md-2db8e902b8b7a7c44aa3.js"],"component---src-pages-resources-videos-overview-security-md":["/component---src-pages-resources-videos-overview-security-md-e61ae0df14f68cd88380.js"]} \ No newline at end of file +{"app":["/app-132fafb14534b67cb3e4.js"],"component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md":["/component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md-e8287b7ee1e877d41721.js"],"component---src-pages-getting-started-common-troubleshooting-md":["/component---src-pages-getting-started-common-troubleshooting-md-56eeea4c2ebf3eaa29fd.js"],"component---src-pages-getting-started-first-app-md":["/component---src-pages-getting-started-first-app-md-cfca5f04bd749d77d340.js"],"component---src-pages-getting-started-index-md":["/component---src-pages-getting-started-index-md-a2557c35f1b6d68cac3c.js"],"component---src-pages-getting-started-publish-app-md":["/component---src-pages-getting-started-publish-app-md-80069dbdc154384390af.js"],"component---src-pages-guides-app-hooks-md":["/component---src-pages-guides-app-hooks-md-651dfac8b673be713bc4.js"],"component---src-pages-guides-application-logging-azure-log-analytics-md":["/component---src-pages-guides-application-logging-azure-log-analytics-md-968dc7a663059e2057c7.js"],"component---src-pages-guides-application-logging-index-md":["/component---src-pages-guides-application-logging-index-md-5457d259a683db121834.js"],"component---src-pages-guides-application-logging-new-relic-md":["/component---src-pages-guides-application-logging-new-relic-md-0bd4b50b02725f4b1d7c.js"],"component---src-pages-guides-application-logging-splunk-cloud-md":["/component---src-pages-guides-application-logging-splunk-cloud-md-59307f947f76305d80bd.js"],"component---src-pages-guides-application-logging-splunk-enterprise-md":["/component---src-pages-guides-application-logging-splunk-enterprise-md-e455bd2c290d59be0bad.js"],"component---src-pages-guides-application-state-md":["/component---src-pages-guides-application-state-md-4f143671da9ccc131812.js"],"component---src-pages-guides-configuration-index-md":["/component---src-pages-guides-configuration-index-md-518ed5cd8602838e72e6.js"],"component---src-pages-guides-configuration-webpack-configuration-md":["/component---src-pages-guides-configuration-webpack-configuration-md-12d5fd03b560dd5c030c.js"],"component---src-pages-guides-contribution-guides-index-md":["/component---src-pages-guides-contribution-guides-index-md-0105c12375a1ea8157b8.js"],"component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md":["/component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md-ae98ee5b7279877c033d.js"],"component---src-pages-guides-deployment-credential-rotation-md":["/component---src-pages-guides-deployment-credential-rotation-md-1c322abfc09c9f0216ed.js"],"component---src-pages-guides-deployment-index-md":["/component---src-pages-guides-deployment-index-md-0b91206fcab62b2fd73a.js"],"component---src-pages-guides-deployment-setting-response-headers-md":["/component---src-pages-guides-deployment-setting-response-headers-md-991da7b81ceaf46090c2.js"],"component---src-pages-guides-development-index-md":["/component---src-pages-guides-development-index-md-ba0e47b9e300a3bbb8de.js"],"component---src-pages-guides-distribution-index-md":["/component---src-pages-guides-distribution-index-md-d60f372ea2f4847cd127.js"],"component---src-pages-guides-distribution-private-md":["/component---src-pages-guides-distribution-private-md-bb44e5421d25df3fc198.js"],"component---src-pages-guides-distribution-public-md":["/component---src-pages-guides-distribution-public-md-e1911f05840dd003b75e.js"],"component---src-pages-guides-events-custom-events-md":["/component---src-pages-guides-events-custom-events-md-9f9348cf7cd303e544d6.js"],"component---src-pages-guides-events-webhooks-md":["/component---src-pages-guides-events-webhooks-md-bedf4d5612175c3e2a6b.js"],"component---src-pages-guides-exc-app-index-md":["/component---src-pages-guides-exc-app-index-md-784a940668cc5a09cc2c.js"],"component---src-pages-guides-exc-app-interfaces-index-md":["/component---src-pages-guides-exc-app-interfaces-index-md-9d8eee529728b7a19785.js"],"component---src-pages-guides-exc-app-interfaces-index-runtime-md":["/component---src-pages-guides-exc-app-interfaces-index-runtime-md-122a3e0e1c1c32cdcd55.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md-784a4cd22e6f8eea3f97.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md-ff53a924900563bd02e4.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapi-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapi-md-a67967ab519e3cba7e94.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md-e9097f8baa6264d401c5.js"],"component---src-pages-guides-exc-app-interfaces-topbar-callback-md":["/component---src-pages-guides-exc-app-interfaces-topbar-callback-md-b964e0d8f679e579f4fd.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md-6701e50b7f386406cde1.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md-3a640dfd9300c3191b21.js"],"component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md-2ede3fec155684444f30.js"],"component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md-f11d506f7ceac5ccaa52.js"],"component---src-pages-guides-exc-app-interfaces-topbar-solution-md":["/component---src-pages-guides-exc-app-interfaces-topbar-solution-md-d188806d44fc577ba711.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md-7c353933926a956b08ee.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md-bc42f320fd353a910004.js"],"component---src-pages-guides-exc-app-interfaces-user-userapi-md":["/component---src-pages-guides-exc-app-interfaces-user-userapi-md-430bb9475820c727f376.js"],"component---src-pages-guides-exc-app-interfaces-user-userinfo-md":["/component---src-pages-guides-exc-app-interfaces-user-userinfo-md-64e555b22cece068c3aa.js"],"component---src-pages-guides-exc-app-modules-index-md":["/component---src-pages-guides-exc-app-modules-index-md-4f226d91b7d574120dc2.js"],"component---src-pages-guides-exc-app-modules-page-md":["/component---src-pages-guides-exc-app-modules-page-md-b0c97e49e29b00a52493.js"],"component---src-pages-guides-exc-app-modules-topbar-md":["/component---src-pages-guides-exc-app-modules-topbar-md-66870a00b0e1c63f6c90.js"],"component---src-pages-guides-exc-app-modules-user-md":["/component---src-pages-guides-exc-app-modules-user-md-30da1f6a33cdceca488b.js"],"component---src-pages-guides-extensions-extension-migration-guide-md":["/component---src-pages-guides-extensions-extension-migration-guide-md-3433afa60d003e77b4a2.js"],"component---src-pages-guides-extensions-index-md":["/component---src-pages-guides-extensions-index-md-2820a3fbf5085f976103.js"],"component---src-pages-guides-extensions-ui-extensibility-md":["/component---src-pages-guides-extensions-ui-extensibility-md-70b5620535129800c671.js"],"component---src-pages-guides-index-md":["/component---src-pages-guides-index-md-23d777e9cf8d8d8d607f.js"],"component---src-pages-guides-introduction-to-react-spectrum-md":["/component---src-pages-guides-introduction-to-react-spectrum-md-65f101721c46d363026b.js"],"component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md":["/component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md-76016cd313d277b33b73.js"],"component---src-pages-guides-reference-documentation-index-md":["/component---src-pages-guides-reference-documentation-index-md-748da52cdb69509e135a.js"],"component---src-pages-guides-security-index-md":["/component---src-pages-guides-security-index-md-7bc0800f5d5e4108bc16.js"],"component---src-pages-guides-security-understanding-authentication-md":["/component---src-pages-guides-security-understanding-authentication-md-9c8d91b3b2b76ca5d7f4.js"],"component---src-pages-guides-telemetry-md":["/component---src-pages-guides-telemetry-md-03fdd46dcc36b853a893.js"],"component---src-pages-guides-tips-tricks-md":["/component---src-pages-guides-tips-tricks-md-b7be511ac3f3c8b74b54.js"],"component---src-pages-guides-using-sdks-md":["/component---src-pages-guides-using-sdks-md-76c9e7351110967b6201.js"],"component---src-pages-overview-community-md":["/component---src-pages-overview-community-md-ca8914738c6436ec9fae.js"],"component---src-pages-overview-faq-md":["/component---src-pages-overview-faq-md-3f3c281a77a5b6e73aa4.js"],"component---src-pages-overview-firefly-and-runtime-md":["/component---src-pages-overview-firefly-and-runtime-md-363740f11048fa646542.js"],"component---src-pages-overview-getting-access-md":["/component---src-pages-overview-getting-access-md-04a8f9df96e2b295f02d.js"],"component---src-pages-overview-how-it-works-md":["/component---src-pages-overview-how-it-works-md-0a899a5e4f304d7fbe02.js"],"component---src-pages-overview-index-md":["/component---src-pages-overview-index-md-e312e6a2d948c48ab09e.js"],"component---src-pages-resources-asset-compute-worker-ps-api-index-md":["/component---src-pages-resources-asset-compute-worker-ps-api-index-md-df27f1562bc366d4594a.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md-140291dcd0429e13b0e4.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md-f3230667f4cf422ca74d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md-b77c03b1a14dc1ae1b3f.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md-e0989a9f98ba44d6f68d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-requirements-md":["/component---src-pages-resources-asset-compute-worker-ps-api-requirements-md-70cb7a398177268ad87a.js"],"component---src-pages-resources-asset-compute-worker-ps-api-welldone-md":["/component---src-pages-resources-asset-compute-worker-ps-api-welldone-md-d4a35756db9a9b5b1d61.js"],"component---src-pages-resources-barcode-reader-barcode-md":["/component---src-pages-resources-barcode-reader-barcode-md-1bf67c96bfae9c83d23b.js"],"component---src-pages-resources-barcode-reader-bootstrap-md":["/component---src-pages-resources-barcode-reader-bootstrap-md-843e877747e0240b750c.js"],"component---src-pages-resources-barcode-reader-index-md":["/component---src-pages-resources-barcode-reader-index-md-c54c07b89ff83e8a7f73.js"],"component---src-pages-resources-barcode-reader-requirements-md":["/component---src-pages-resources-barcode-reader-requirements-md-1441a6da691226935850.js"],"component---src-pages-resources-barcode-reader-test-md":["/component---src-pages-resources-barcode-reader-test-md-aac29ffaeb8b311c68bf.js"],"component---src-pages-resources-barcode-reader-welldone-md":["/component---src-pages-resources-barcode-reader-welldone-md-ee3be90415021c7ece9c.js"],"component---src-pages-resources-blog-articles-md":["/component---src-pages-resources-blog-articles-md-e6074b1927cfa03e5d03.js"],"component---src-pages-resources-ci-cd-index-md":["/component---src-pages-resources-ci-cd-index-md-c8e5113dc46e92dffe95.js"],"component---src-pages-resources-ci-cd-lesson-1-md":["/component---src-pages-resources-ci-cd-lesson-1-md-cd53f7a727c04478bcd6.js"],"component---src-pages-resources-ci-cd-lesson-2-md":["/component---src-pages-resources-ci-cd-lesson-2-md-d9e24c98097332d31b22.js"],"component---src-pages-resources-ci-cd-lesson-3-md":["/component---src-pages-resources-ci-cd-lesson-3-md-db130b0ddae3e6d3f35a.js"],"component---src-pages-resources-ci-cd-requirements-md":["/component---src-pages-resources-ci-cd-requirements-md-cdd558c79395898b61b3.js"],"component---src-pages-resources-ci-cd-welldone-md":["/component---src-pages-resources-ci-cd-welldone-md-15bc3fca67405f925c09.js"],"component---src-pages-resources-cron-jobs-index-md":["/component---src-pages-resources-cron-jobs-index-md-5aeb5329e6e10c4570d3.js"],"component---src-pages-resources-cron-jobs-lesson-1-md":["/component---src-pages-resources-cron-jobs-lesson-1-md-b4c3a888558a80813ee7.js"],"component---src-pages-resources-cron-jobs-lesson-2-md":["/component---src-pages-resources-cron-jobs-lesson-2-md-a6779e51fe7f791e701b.js"],"component---src-pages-resources-cron-jobs-lesson-3-md":["/component---src-pages-resources-cron-jobs-lesson-3-md-4ac4b4e0f9daf6b919d5.js"],"component---src-pages-resources-cron-jobs-requirements-md":["/component---src-pages-resources-cron-jobs-requirements-md-38cd22dbcb84b652f49e.js"],"component---src-pages-resources-cron-jobs-welldone-md":["/component---src-pages-resources-cron-jobs-welldone-md-514f93a129ec0ade4164.js"],"component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md":["/component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md-b61fa6a857f4c54e0089.js"],"component---src-pages-resources-custom-asset-compute-worker-index-md":["/component---src-pages-resources-custom-asset-compute-worker-index-md-78ba78661d2799b82d2f.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-1-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-1-md-9233bd53bfe542a53320.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-2-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-2-md-ec19167d88e8d3ec8070.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-3-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-3-md-798e17855a68fd22b690.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-4-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-4-md-707ffa20e9f4a907b721.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js"],"component---src-pages-resources-custom-asset-compute-worker-our-worker-md":["/component---src-pages-resources-custom-asset-compute-worker-our-worker-md-b60a27296e901d8dbd8d.js"],"component---src-pages-resources-custom-asset-compute-worker-requirements-md":["/component---src-pages-resources-custom-asset-compute-worker-requirements-md-e64918cfdca252cfc65b.js"],"component---src-pages-resources-custom-asset-compute-worker-welldone-md":["/component---src-pages-resources-custom-asset-compute-worker-welldone-md-3a48e15a72aab5109734.js"],"component---src-pages-resources-customer-dashboard-index-md":["/component---src-pages-resources-customer-dashboard-index-md-74325c934ec263f79e8a.js"],"component---src-pages-resources-customer-dashboard-lesson-1-md":["/component---src-pages-resources-customer-dashboard-lesson-1-md-4d4c1719ef3b46d46c74.js"],"component---src-pages-resources-customer-dashboard-lesson-2-md":["/component---src-pages-resources-customer-dashboard-lesson-2-md-65dd5459b94acfd6dabd.js"],"component---src-pages-resources-customer-dashboard-lesson-3-md":["/component---src-pages-resources-customer-dashboard-lesson-3-md-dec0cdd5a2e117b08df9.js"],"component---src-pages-resources-customer-dashboard-lesson-4-md":["/component---src-pages-resources-customer-dashboard-lesson-4-md-05e221b170026fabbf1e.js"],"component---src-pages-resources-customer-dashboard-lesson-5-md":["/component---src-pages-resources-customer-dashboard-lesson-5-md-d2edc493ee062f06b7da.js"],"component---src-pages-resources-customer-dashboard-requirements-md":["/component---src-pages-resources-customer-dashboard-requirements-md-cfe913380bfe910baec5.js"],"component---src-pages-resources-customer-dashboard-welldone-md":["/component---src-pages-resources-customer-dashboard-welldone-md-76e7e421096c568ad613.js"],"component---src-pages-resources-debugging-index-md":["/component---src-pages-resources-debugging-index-md-3e7225f5932e967ec118.js"],"component---src-pages-resources-debugging-lesson-1-md":["/component---src-pages-resources-debugging-lesson-1-md-312d881c097a10d405c2.js"],"component---src-pages-resources-debugging-lesson-2-md":["/component---src-pages-resources-debugging-lesson-2-md-65b79a91814522d23da6.js"],"component---src-pages-resources-debugging-lesson-3-md":["/component---src-pages-resources-debugging-lesson-3-md-3ca5b2f139b98e84ef46.js"],"component---src-pages-resources-debugging-requirements-md":["/component---src-pages-resources-debugging-requirements-md-6736bf12d6bbeb1f2a06.js"],"component---src-pages-resources-debugging-welldone-md":["/component---src-pages-resources-debugging-welldone-md-b31cfebaaeb8eeccfccc.js"],"component---src-pages-resources-event-driven-index-md":["/component---src-pages-resources-event-driven-index-md-fb16543eae8475287d95.js"],"component---src-pages-resources-event-driven-lesson-1-md":["/component---src-pages-resources-event-driven-lesson-1-md-d9cd3c7a02f50ed3010c.js"],"component---src-pages-resources-event-driven-lesson-2-md":["/component---src-pages-resources-event-driven-lesson-2-md-52375f09c89df8f0329f.js"],"component---src-pages-resources-event-driven-lesson-3-md":["/component---src-pages-resources-event-driven-lesson-3-md-b250d176fe7ec5ccf8ce.js"],"component---src-pages-resources-event-driven-lesson-4-md":["/component---src-pages-resources-event-driven-lesson-4-md-aa6abd539bf9e8a0fa6f.js"],"component---src-pages-resources-event-driven-requirements-md":["/component---src-pages-resources-event-driven-requirements-md-f4be671d3fb58ae75d76.js"],"component---src-pages-resources-event-driven-welldone-md":["/component---src-pages-resources-event-driven-welldone-md-1e16d48419b5953c5cb9.js"],"component---src-pages-resources-events-runtime-index-md":["/component---src-pages-resources-events-runtime-index-md-6a637359adf514a2384d.js"],"component---src-pages-resources-events-runtime-lesson-1-md":["/component---src-pages-resources-events-runtime-lesson-1-md-75ec6648c317e5c6b0fc.js"],"component---src-pages-resources-events-runtime-lesson-2-md":["/component---src-pages-resources-events-runtime-lesson-2-md-15c71750218c486dc22c.js"],"component---src-pages-resources-events-runtime-requirements-md":["/component---src-pages-resources-events-runtime-requirements-md-4445f0d4efb01d5fff6f.js"],"component---src-pages-resources-events-runtime-welldone-md":["/component---src-pages-resources-events-runtime-welldone-md-c3ee017479ebdf5de561.js"],"component---src-pages-resources-index-md":["/component---src-pages-resources-index-md-b2c1a1c0842ae7f045ef.js"],"component---src-pages-resources-journaling-events-index-md":["/component---src-pages-resources-journaling-events-index-md-19686602b0f07e21d5ed.js"],"component---src-pages-resources-journaling-events-lesson-1-md":["/component---src-pages-resources-journaling-events-lesson-1-md-2c48bff053703a6c6905.js"],"component---src-pages-resources-journaling-events-lesson-2-md":["/component---src-pages-resources-journaling-events-lesson-2-md-05f28e1b8b5195e597d0.js"],"component---src-pages-resources-journaling-events-lesson-3-md":["/component---src-pages-resources-journaling-events-lesson-3-md-8566781d4f6eb04dbda9.js"],"component---src-pages-resources-journaling-events-requirements-md":["/component---src-pages-resources-journaling-events-requirements-md-c88f8e55b6e521ea65e7.js"],"component---src-pages-resources-journaling-events-welldone-md":["/component---src-pages-resources-journaling-events-welldone-md-0e6f9b427d4cc0575a77.js"],"component---src-pages-resources-sample-apps-code-snippets-analytics-md":["/component---src-pages-resources-sample-apps-code-snippets-analytics-md-5f65b2f92f17cdfcaa35.js"],"component---src-pages-resources-sample-apps-code-snippets-events-md":["/component---src-pages-resources-sample-apps-code-snippets-events-md-9574b5710ca5a047a69a.js"],"component---src-pages-resources-sample-apps-code-snippets-files-md":["/component---src-pages-resources-sample-apps-code-snippets-files-md-adc9e8f6be74df4f2a16.js"],"component---src-pages-resources-sample-apps-code-snippets-index-md":["/component---src-pages-resources-sample-apps-code-snippets-index-md-54c254755f8d697d3355.js"],"component---src-pages-resources-sample-apps-code-snippets-state-md":["/component---src-pages-resources-sample-apps-code-snippets-state-md-3eb29ca55b874ea4e968.js"],"component---src-pages-resources-sample-apps-demo-md":["/component---src-pages-resources-sample-apps-demo-md-3c63a5c1e0c933f221a3.js"],"component---src-pages-resources-sample-apps-index-md":["/component---src-pages-resources-sample-apps-index-md-0cb3c5625603e7bf9e7e.js"],"component---src-pages-resources-spectrum-intro-index-md":["/component---src-pages-resources-spectrum-intro-index-md-f195bd7a5cb6e9a0099d.js"],"component---src-pages-resources-spectrum-intro-lesson-1-md":["/component---src-pages-resources-spectrum-intro-lesson-1-md-8f7fc36fffec398df2ea.js"],"component---src-pages-resources-spectrum-intro-lesson-2-md":["/component---src-pages-resources-spectrum-intro-lesson-2-md-5b1fe4f172a1ef1f7145.js"],"component---src-pages-resources-spectrum-intro-lesson-3-md":["/component---src-pages-resources-spectrum-intro-lesson-3-md-e931836db27bdfd93956.js"],"component---src-pages-resources-spectrum-intro-lesson-4-md":["/component---src-pages-resources-spectrum-intro-lesson-4-md-3edd55ee76309d1ac6c9.js"],"component---src-pages-resources-spectrum-intro-requirements-md":["/component---src-pages-resources-spectrum-intro-requirements-md-3df99d4649ee5690e41b.js"],"component---src-pages-resources-spectrum-intro-welldone-md":["/component---src-pages-resources-spectrum-intro-welldone-md-f10cc750fbc019acf112.js"],"component---src-pages-resources-todo-app-index-md":["/component---src-pages-resources-todo-app-index-md-6b8122b188baae344f86.js"],"component---src-pages-resources-todo-app-lesson-1-md":["/component---src-pages-resources-todo-app-lesson-1-md-f1070bdf2a69b5a3daf1.js"],"component---src-pages-resources-todo-app-lesson-2-md":["/component---src-pages-resources-todo-app-lesson-2-md-be74b0aafba06e08b1d4.js"],"component---src-pages-resources-todo-app-lesson-3-md":["/component---src-pages-resources-todo-app-lesson-3-md-3eb878fff1f1e0bfdbfd.js"],"component---src-pages-resources-todo-app-lesson-4-md":["/component---src-pages-resources-todo-app-lesson-4-md-14cd70628d5f269ce65a.js"],"component---src-pages-resources-todo-app-lesson-5-md":["/component---src-pages-resources-todo-app-lesson-5-md-0f99a69cda202c1cf2f2.js"],"component---src-pages-resources-todo-app-lesson-6-md":["/component---src-pages-resources-todo-app-lesson-6-md-62db9344545908c0b9c7.js"],"component---src-pages-resources-todo-app-requirements-md":["/component---src-pages-resources-todo-app-requirements-md-c75ad368418a1559ad4b.js"],"component---src-pages-resources-todo-app-welldone-md":["/component---src-pages-resources-todo-app-welldone-md-17a80e5958a71b635e4b.js"],"component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md":["/component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md-a6f5bb534104ff0f9d81.js"],"component---src-pages-resources-videos-developers-live-deep-dive-md":["/component---src-pages-resources-videos-developers-live-deep-dive-md-13b96a3284411b567eff.js"],"component---src-pages-resources-videos-developers-live-extend-experience-cloud-md":["/component---src-pages-resources-videos-developers-live-extend-experience-cloud-md-c5a72b3fe61e9a17b681.js"],"component---src-pages-resources-videos-exploring-ci-cd-md":["/component---src-pages-resources-videos-exploring-ci-cd-md-35b37eae4f5bead66e0a.js"],"component---src-pages-resources-videos-exploring-custom-events-md":["/component---src-pages-resources-videos-exploring-custom-events-md-be2bd7ac7d90c0f1d7c4.js"],"component---src-pages-resources-videos-exploring-dashboard-case-study-md":["/component---src-pages-resources-videos-exploring-dashboard-case-study-md-26843d8e7bc12cbec7bf.js"],"component---src-pages-resources-videos-exploring-debugging-md":["/component---src-pages-resources-videos-exploring-debugging-md-c1dcec6216923213f748.js"],"component---src-pages-resources-videos-exploring-deep-dive-use-cases-md":["/component---src-pages-resources-videos-exploring-deep-dive-use-cases-md-9ed9da611db5de2e997d.js"],"component---src-pages-resources-videos-exploring-learning-resources-md":["/component---src-pages-resources-videos-exploring-learning-resources-md-524e3d96652ed6017adc.js"],"component---src-pages-resources-videos-exploring-live-wired-sneak-md":["/component---src-pages-resources-videos-exploring-live-wired-sneak-md-ded5e1eff8eb72636d3c.js"],"component---src-pages-resources-videos-exploring-ode-case-study-md":["/component---src-pages-resources-videos-exploring-ode-case-study-md-4d9940dc9281076c484f.js"],"component---src-pages-resources-videos-exploring-projects-and-workspaces-md":["/component---src-pages-resources-videos-exploring-projects-and-workspaces-md-7d03d08697f1defd4f53.js"],"component---src-pages-resources-videos-exploring-react-spectrum-md":["/component---src-pages-resources-videos-exploring-react-spectrum-md-aa9c118a44ac3d328a38.js"],"component---src-pages-resources-videos-exploring-softcrylic-showcase-md":["/component---src-pages-resources-videos-exploring-softcrylic-showcase-md-c28fa74d9c6062c7dee8.js"],"component---src-pages-resources-videos-index-md":["/component---src-pages-resources-videos-index-md-407eebad1752452472cb.js"],"component---src-pages-resources-videos-overview-architecture-md":["/component---src-pages-resources-videos-overview-architecture-md-25b3b9adc2a5f59bfb73.js"],"component---src-pages-resources-videos-overview-e-2-e-user-journey-md":["/component---src-pages-resources-videos-overview-e-2-e-user-journey-md-d6803bc1097239885290.js"],"component---src-pages-resources-videos-overview-getting-started-md":["/component---src-pages-resources-videos-overview-getting-started-md-4c73157b68b44aaeef2f.js"],"component---src-pages-resources-videos-overview-introduction-md":["/component---src-pages-resources-videos-overview-introduction-md-2db8e902b8b7a7c44aa3.js"],"component---src-pages-resources-videos-overview-security-md":["/component---src-pages-resources-videos-overview-security-md-e61ae0df14f68cd88380.js"]} \ No newline at end of file diff --git a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js new file mode 100644 index 000000000..0b90259be --- /dev/null +++ b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkadobe_developer_app_builder=self.webpackChunkadobe_developer_app_builder||[]).push([[2705],{91342:function(e,a,t){t.r(a),t.d(a,{_frontmatter:function(){return s},default:function(){return b}});var p=t(58168),i=t(80045),d=(t(88763),t(15680)),r=t(83407);const n=["components"],s={},o={_frontmatter:s},l=r.A;function b(e){let{components:a}=e,t=(0,i.A)(e,n);return(0,d.mdx)(l,(0,p.A)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,d.mdx)("h1",{id:"lesson-5-set-up-aem-to-use-the-worker"},"Lesson 5: Set Up AEM to Use the Worker"),(0,d.mdx)("p",null,"Go to your ",(0,d.mdx)("strong",{parentName:"p"},"AEM Cloud")," instance and open ",(0,d.mdx)("strong",{parentName:"p"},"Tools -> Assets -> Processing Profiles"),", then create a new processing profile, e.g. ",(0,d.mdx)("inlineCode",{parentName:"p"},"My Worker test profile"),".\nOn the ",(0,d.mdx)("strong",{parentName:"p"},"Custom")," tab, configure your renditions to use your worker, as shown here:"),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"21.875%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/cf960edddb585dfec49b32bffcbbc274/5530d/processing-profile-1800.webp 320w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0c8fb/processing-profile-1800.webp 640w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/94b1e/processing-profile-1800.webp 1280w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0f190/processing-profile-1800.webp 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/cf960edddb585dfec49b32bffcbbc274/dd4a7/processing-profile-1800.png 320w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0f09e/processing-profile-1800.png 640w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/bbbf7/processing-profile-1800.png 1280w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/28bdc/processing-profile-1800.png 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/cf960edddb585dfec49b32bffcbbc274/bbbf7/processing-profile-1800.png",alt:"Config of custom renditions",title:"Config of custom renditions",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")),(0,d.mdx)("p",null,"These examples use renditions created following imgix configuration parameters; we don't need to escape JSON if it's used in AEM."),(0,d.mdx)("ol",null,(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"Crop an image to 300x300 px around faces if detected, or around busy sections of the image (entropy):"),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "fit": "crop",\n "crop": "faces,entropy",\n "w": 300,\n "h": 300\n}\n'))),(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"In addition, apply an ellipse mask around the cropped area:"),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "fit": "crop",\n "crop": "faces,entropy",\n "w": 300,\n "h": 300,\n "fm": "png",\n "mask": "ellipse"\n}\n'))),(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"This time, add a text watermark to the image:"),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "h": 300,\n "w": 300,\n "fit": "crop",\n "crop": "faces,entropy",\n "mark": "https://assets.imgix.net/~text?w=200&txt-color=fff&txt=Hello+world&txt-size=16&txt-lead=0&txt-pad=15&bg=80002228&txt-font=Avenir-Heavy"\n}\n')))),(0,d.mdx)("p",null,"As the last step, apply the profile to DAM folder:"),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"22.1875%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/5530d/apply-profile-to-folder.webp 320w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0c8fb/apply-profile-to-folder.webp 640w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/94b1e/apply-profile-to-folder.webp 1280w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0b34d/apply-profile-to-folder.webp 1920w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/d5269/apply-profile-to-folder.webp 2560w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/19f78/apply-profile-to-folder.webp 2732w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/dd4a7/apply-profile-to-folder.png 320w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0f09e/apply-profile-to-folder.png 640w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/bbbf7/apply-profile-to-folder.png 1280w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/ac7a9/apply-profile-to-folder.png 1920w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/c7a69/apply-profile-to-folder.png 2560w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/a6aea/apply-profile-to-folder.png 2732w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/bbbf7/apply-profile-to-folder.png",alt:"Apply Profile to Folder",title:"Apply Profile to Folder",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")),(0,d.mdx)("p",null,"Now you can upload images to the folder and observe results on the asset details page:"),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"44.99999999999999%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/1550412ef2fdd2fbdec2186409941067/5530d/worker-results.webp 320w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0c8fb/worker-results.webp 640w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/94b1e/worker-results.webp 1280w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0f190/worker-results.webp 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/1550412ef2fdd2fbdec2186409941067/dd4a7/worker-results.png 320w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0f09e/worker-results.png 640w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/bbbf7/worker-results.png 1280w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/28bdc/worker-results.png 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/1550412ef2fdd2fbdec2186409941067/bbbf7/worker-results.png",alt:"Renditions list in Asset view",title:"Renditions list in Asset view",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")," "),(0,d.mdx)("p",null,(0,d.mdx)("em",{parentName:"p"},"Photo by ",(0,d.mdx)("a",{parentName:"em",href:"https://unsplash.com/@linkedinsalesnavigator?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"},"LinkedIn Sales Navigator")," on ",(0,d.mdx)("a",{parentName:"em",href:"https://unsplash.com/s/photos/women-sitting?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"},"Unsplash"))," "))}b.isMDXComponent=!0}}]); +//# sourceMappingURL=component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js.map \ No newline at end of file diff --git a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js.map b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js.map new file mode 100644 index 000000000..b040fa393 --- /dev/null +++ b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-2943d21b9e24d6c08743.js","mappings":"kTAMaA,EAAe,CAAC,EACvBC,EAAc,CAClBD,gBAEIE,EAAYC,EAAAA,EACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,GAAKC,EAAAA,EAAAA,GAAAH,EAAAI,GAER,OAAOC,EAAAA,EAAAA,KAACR,GAASS,EAAAA,EAAAA,GAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,eAG5EF,EAAAA,EAAAA,KAAA,MACE,GAAM,yCACJ,2CACJA,EAAAA,EAAAA,KAAA,SAAI,eAAcA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,aAAsB,uBAAsBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,0CAAmD,iDAAgDH,EAAAA,EAAAA,KAAA,cAAYG,WAAW,KAAK,0BAAuC,cAC/QH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,UAAmB,uEAChDH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,UACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,+FAAgG,+FAAgG,gGAAiG,iGAC5S,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,8FAA+F,8FAA+F,+FAAgG,gGACzS,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,yFACP,IAAO,8BACP,MAAS,8BACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,YAEjBH,EAAAA,EAAAA,KAAA,SAAI,sIACJA,EAAAA,EAAAA,KAAA,WACEA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,0GACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,oFAQRH,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,gEACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,0HAURH,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,kDACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,0OAUVH,EAAAA,EAAAA,KAAA,SAAI,uDACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,WACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,+FAAgG,+FAAgG,gGAAiG,gGAAiG,gGAAiG,iGAC9e,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,8FAA+F,8FAA+F,+FAAgG,+FAAgG,+FAAgG,gGACze,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,yFACP,IAAO,0BACP,MAAS,0BACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,YAEjBH,EAAAA,EAAAA,KAAA,SAAI,2FACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,qBACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,sFAAuF,sFAAuF,uFAAwF,wFACjR,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,qFAAsF,qFAAsF,sFAAuF,uFAC9Q,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,gFACP,IAAO,gCACP,MAAS,gCACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,UACP,MACVH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,KAAK,aAAYH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KAC3C,KAAQ,mHACN,4BAAgC,QAAOH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KACvD,KAAQ,kHACN,aAAqB,KAGjC,CAEAT,EAAWU,gBAAiB,C","sources":["webpack://adobe-developer-app-builder/./src/pages/resources/custom-asset-compute-worker/lesson5.md"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/components/MDXFilter/index.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Lesson 5: Set Up AEM to Use the Worker`}

\n

{`Go to your `}{`AEM Cloud`}{` instance and open `}{`Tools -> Assets -> Processing Profiles`}{`, then create a new processing profile, e.g. `}{`My Worker test profile`}{`.\nOn the `}{`Custom`}{` tab, configure your renditions to use your worker, as shown here:`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}

\n

{`These examples use renditions created following imgix configuration parameters; we don't need to escape JSON if it's used in AEM.`}

\n
    \n
  1. \n

    {`Crop an image to 300x300 px around faces if detected, or around busy sections of the image (entropy):`}

    \n
    {`{\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"w\": 300,\n  \"h\": 300\n}\n`}
    \n
  2. \n
  3. \n

    {`In addition, apply an ellipse mask around the cropped area:`}

    \n
    {`{\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"w\": 300,\n  \"h\": 300,\n  \"fm\": \"png\",\n  \"mask\": \"ellipse\"\n}\n`}
    \n
  4. \n
  5. \n

    {`This time, add a text watermark to the image:`}

    \n
    {`{\n  \"h\": 300,\n  \"w\": 300,\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"mark\": \"https://assets.imgix.net/~text?w=200&txt-color=fff&txt=Hello+world&txt-size=16&txt-lead=0&txt-pad=15&bg=80002228&txt-font=Avenir-Heavy\"\n}\n`}
    \n
  6. \n
\n

{`As the last step, apply the profile to DAM folder:`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}

\n

{`Now you can upload images to the folder and observe results on the asset details page:`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{` `}

\n

{`Photo by `}{`LinkedIn Sales Navigator`}{` on `}{`Unsplash`}{` `}

\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js deleted file mode 100644 index 7837a9d01..000000000 --- a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkadobe_developer_app_builder=self.webpackChunkadobe_developer_app_builder||[]).push([[2705],{91342:function(e,a,t){t.r(a),t.d(a,{_frontmatter:function(){return s},default:function(){return b}});var p=t(58168),i=t(80045),d=(t(88763),t(15680)),r=t(83407);const n=["components"],s={},o={_frontmatter:s},l=r.A;function b(e){let{components:a}=e,t=(0,i.A)(e,n);return(0,d.mdx)(l,(0,p.A)({},o,t,{components:a,mdxType:"MDXLayout"}),(0,d.mdx)("h1",{id:"lesson-5-setup-aem-to-use-the-worker"},"Lesson 5: Setup AEM to use the worker"),(0,d.mdx)("p",null,"Go to your ",(0,d.mdx)("strong",{parentName:"p"},"AEM Cloud")," instance and open ",(0,d.mdx)("strong",{parentName:"p"},"Tools -> Assets -> Processing Profiles")," and then create a new processing profile, e.g. ",(0,d.mdx)("inlineCode",{parentName:"p"},"My Worker test profile"),".\nOn the ",(0,d.mdx)("strong",{parentName:"p"},"Custom")," tab, configure your renditions to use your worker, as shown below."),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"21.875%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/cf960edddb585dfec49b32bffcbbc274/5530d/processing-profile-1800.webp 320w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0c8fb/processing-profile-1800.webp 640w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/94b1e/processing-profile-1800.webp 1280w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0f190/processing-profile-1800.webp 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/cf960edddb585dfec49b32bffcbbc274/dd4a7/processing-profile-1800.png 320w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/0f09e/processing-profile-1800.png 640w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/bbbf7/processing-profile-1800.png 1280w","/app-builder/static/cf960edddb585dfec49b32bffcbbc274/28bdc/processing-profile-1800.png 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/cf960edddb585dfec49b32bffcbbc274/bbbf7/processing-profile-1800.png",alt:"Config of custom renditions",title:"Config of custom renditions",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")),(0,d.mdx)("p",null,"I configured 3 renditions using following imgix configuration params (we don't need to escape JSON if it's used in AEM)"),(0,d.mdx)("ol",null,(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"Crop an image to 300x300 px around faces if detected, or around busy sections of the image (entropy)."),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "fit": "crop",\n "crop": "faces,entropy",\n "w": 300,\n "h": 300\n}\n'))),(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"Same as the previous, but additionally apply an ellipse mask around the cropped area."),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "fit": "crop",\n "crop": "faces,entropy",\n "w": 300,\n "h": 300,\n "fm": "png",\n "mask": "ellipse"\n}\n'))),(0,d.mdx)("li",{parentName:"ol"},(0,d.mdx)("p",{parentName:"li"},"The last one is similar to the first, but this time we add a text watermark to the image."),(0,d.mdx)("pre",{parentName:"li"},(0,d.mdx)("code",{parentName:"pre",className:"language-json"},'{\n "h": 300,\n "w": 300,\n "fit": "crop",\n "crop": "faces,entropy",\n "mark": "https://assets.imgix.net/~text?w=200&txt-color=fff&txt=Hello+world&txt-size=16&txt-lead=0&txt-pad=15&bg=80002228&txt-font=Avenir-Heavy"\n}\n')))),(0,d.mdx)("p",null,"As the last step, you need to apply the profile to DAM folder."),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"22.1875%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/5530d/apply-profile-to-folder.webp 320w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0c8fb/apply-profile-to-folder.webp 640w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/94b1e/apply-profile-to-folder.webp 1280w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0b34d/apply-profile-to-folder.webp 1920w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/d5269/apply-profile-to-folder.webp 2560w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/19f78/apply-profile-to-folder.webp 2732w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/dd4a7/apply-profile-to-folder.png 320w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/0f09e/apply-profile-to-folder.png 640w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/bbbf7/apply-profile-to-folder.png 1280w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/ac7a9/apply-profile-to-folder.png 1920w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/c7a69/apply-profile-to-folder.png 2560w","/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/a6aea/apply-profile-to-folder.png 2732w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/abd35ababaf38ada3b37739e2d6dbdf2/bbbf7/apply-profile-to-folder.png",alt:"Apply Profile to Folder",title:"Apply Profile to Folder",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")),(0,d.mdx)("p",null,"Now you can upload images to the folder and observe results on the asset details page."),(0,d.mdx)("p",null,(0,d.mdx)("span",{parentName:"p",className:"gatsby-resp-image-wrapper",style:{position:"relative",display:"block",marginLeft:"auto",marginRight:"auto",maxWidth:"1280px"}},"\n ",(0,d.mdx)("span",{parentName:"span",className:"gatsby-resp-image-background-image",style:{paddingBottom:"44.99999999999999%",position:"relative",bottom:"0",left:"0",display:"block",transition:"opacity 0.5s 0.5s",pointerEvents:"none"}}),"\n ",(0,d.mdx)("picture",{parentName:"span"},"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/1550412ef2fdd2fbdec2186409941067/5530d/worker-results.webp 320w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0c8fb/worker-results.webp 640w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/94b1e/worker-results.webp 1280w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0f190/worker-results.webp 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/webp"}),"\n ",(0,d.mdx)("source",{parentName:"picture",srcSet:["/app-builder/static/1550412ef2fdd2fbdec2186409941067/dd4a7/worker-results.png 320w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/0f09e/worker-results.png 640w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/bbbf7/worker-results.png 1280w","/app-builder/static/1550412ef2fdd2fbdec2186409941067/28bdc/worker-results.png 1800w"],sizes:"(max-width: 1280px) 100vw, 1280px",type:"image/png"}),"\n ",(0,d.mdx)("img",{parentName:"picture",className:"gatsby-resp-image-image",src:"/app-builder/static/1550412ef2fdd2fbdec2186409941067/bbbf7/worker-results.png",alt:"Renditions list in Asset view",title:"Renditions list in Asset view",loading:"lazy",style:{width:"100%",height:"100%",margin:"0",verticalAlign:"middle",position:"absolute",opacity:"0",transition:"opacity 0.5s",color:"inherit",boxShadow:"inset 0px 0px 0px 400px none",top:"0",left:"0"}}),"\n "),"\n ")," "),(0,d.mdx)("p",null,(0,d.mdx)("em",{parentName:"p"},"Photo by ",(0,d.mdx)("a",{parentName:"em",href:"https://unsplash.com/@linkedinsalesnavigator?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"},"LinkedIn Sales Navigator")," on ",(0,d.mdx)("a",{parentName:"em",href:"https://unsplash.com/s/photos/women-sitting?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"},"Unsplash"))," "))}b.isMDXComponent=!0}}]); -//# sourceMappingURL=component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js.map \ No newline at end of file diff --git a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js.map b/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js.map deleted file mode 100644 index 4bc969c41..000000000 --- a/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js","mappings":"kTAMaA,EAAe,CAAC,EACvBC,EAAc,CAClBD,gBAEIE,EAAYC,EAAAA,EACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,GAAKC,EAAAA,EAAAA,GAAAH,EAAAI,GAER,OAAOC,EAAAA,EAAAA,KAACR,GAASS,EAAAA,EAAAA,GAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,eAG5EF,EAAAA,EAAAA,KAAA,MACE,GAAM,wCACJ,0CACJA,EAAAA,EAAAA,KAAA,SAAI,eAAcA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,aAAsB,uBAAsBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,0CAAmD,oDAAmDH,EAAAA,EAAAA,KAAA,cAAYG,WAAW,KAAK,0BAAuC,cAClRH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,UAAmB,wEAChDH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,UACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,+FAAgG,+FAAgG,gGAAiG,iGAC5S,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,8FAA+F,8FAA+F,+FAAgG,gGACzS,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,yFACP,IAAO,8BACP,MAAS,8BACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,YAEjBH,EAAAA,EAAAA,KAAA,SAAI,4HACJA,EAAAA,EAAAA,KAAA,WACEA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,0GACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,oFAQRH,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,0FACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,0HAURH,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OACbH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,MAAM,8FACpBH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,MAClC,UAAa,iBACX,0OAUVH,EAAAA,EAAAA,KAAA,SAAI,mEACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,WACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,+FAAgG,+FAAgG,gGAAiG,gGAAiG,gGAAiG,iGAC9e,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,8FAA+F,8FAA+F,+FAAgG,+FAAgG,+FAAgG,gGACze,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,yFACP,IAAO,0BACP,MAAS,0BACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,YAEjBH,EAAAA,EAAAA,KAAA,SAAI,2FACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,QAAMG,WAAW,IAChB,UAAa,4BACb,MAAS,CACP,SAAY,WACZ,QAAW,QACX,WAAc,OACd,YAAe,OACf,SAAY,WAEZ,YACFH,EAAAA,EAAAA,KAAA,QAAMG,WAAW,OACf,UAAa,qCACb,MAAS,CACP,cAAiB,qBACjB,SAAY,WACZ,OAAU,IACV,KAAQ,IACR,QAAW,QACX,WAAc,oBACd,cAAiB,UAEV,QACfH,EAAAA,EAAAA,KAAA,WAASG,WAAW,QAAQ,gBACpBH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,sFAAuF,sFAAuF,uFAAwF,wFACjR,MAAS,oCACT,KAAQ,eACG,gBACXH,EAAAA,EAAAA,KAAA,UAAQG,WAAW,UACnB,OAAU,CAAC,qFAAsF,qFAAsF,sFAAuF,uFAC9Q,MAAS,oCACT,KAAQ,cACG,gBACXH,EAAAA,EAAAA,KAAA,OAAKG,WAAW,UAChB,UAAa,0BACb,IAAO,gFACP,IAAO,gCACP,MAAS,gCACT,QAAW,OACX,MAAS,CACP,MAAS,OACT,OAAU,OACV,OAAU,IACV,cAAiB,SACjB,SAAY,WACZ,QAAW,IACX,WAAc,eACd,MAAS,UACT,UAAa,+BACb,IAAO,IACP,KAAQ,OAEF,cACC,UACP,MACVH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,KAAK,aAAYH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KAC3C,KAAQ,mHACN,4BAAgC,QAAOH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KACvD,KAAQ,kHACN,aAAqB,KAGjC,CAEAT,EAAWU,gBAAiB,C","sources":["webpack://adobe-developer-app-builder/./src/pages/resources/custom-asset-compute-worker/lesson5.md"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/components/MDXFilter/index.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Lesson 5: Setup AEM to use the worker`}

\n

{`Go to your `}{`AEM Cloud`}{` instance and open `}{`Tools -> Assets -> Processing Profiles`}{` and then create a new processing profile, e.g. `}{`My Worker test profile`}{`.\nOn the `}{`Custom`}{` tab, configure your renditions to use your worker, as shown below.`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}

\n

{`I configured 3 renditions using following imgix configuration params (we don't need to escape JSON if it's used in AEM)`}

\n
    \n
  1. \n

    {`Crop an image to 300x300 px around faces if detected, or around busy sections of the image (entropy).`}

    \n
    {`{\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"w\": 300,\n  \"h\": 300\n}\n`}
    \n
  2. \n
  3. \n

    {`Same as the previous, but additionally apply an ellipse mask around the cropped area.`}

    \n
    {`{\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"w\": 300,\n  \"h\": 300,\n  \"fm\": \"png\",\n  \"mask\": \"ellipse\"\n}\n`}
    \n
  4. \n
  5. \n

    {`The last one is similar to the first, but this time we add a text watermark to the image.`}

    \n
    {`{\n  \"h\": 300,\n  \"w\": 300,\n  \"fit\": \"crop\",\n  \"crop\": \"faces,entropy\",\n  \"mark\": \"https://assets.imgix.net/~text?w=200&txt-color=fff&txt=Hello+world&txt-size=16&txt-lead=0&txt-pad=15&bg=80002228&txt-font=Avenir-Heavy\"\n}\n`}
    \n
  6. \n
\n

{`As the last step, you need to apply the profile to DAM folder.`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}

\n

{`Now you can upload images to the folder and observe results on the asset details page.`}

\n

{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{`\n `}{` `}

\n

{`Photo by `}{`LinkedIn Sales Navigator`}{` on `}{`Unsplash`}{` `}

\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/getting_started/common_troubleshooting/index.html b/getting_started/common_troubleshooting/index.html index 81fb5aeca..6fd133f49 100644 --- a/getting_started/common_troubleshooting/index.html +++ b/getting_started/common_troubleshooting/index.html @@ -112,4 +112,4 @@ Copied to your clipboard
aio runtime activation list

It lists the most recent activations and summary (ID, start / end time, duration, status, and so on). There are 4 most popular statuses of a finished activation:

You could also try running your actions locally with the aio app dev command. This is very similar to aio app run except that it will run your action code on localhost in a node process. Not all api calls will work in this context because of cors restrictions, but this is still useful in catching syntax errors, logic errors and enables step debugging of your actions without timeouts.

Action logs

When you have web actions in your app, they are blocking requests and their activation results are not recorded if they are invoked successfully. To enforce the persistence of activation results, you need to pass the x-ow-extra-logging: on flag in the request headers. In the development mode of an SPA, you can add this flag directly to the "invoking action" function so that you will have the activation results and logs recorded for all requests. Then they could be retrieved as demonstrated in the General debugging section above.

Copied to your clipboard
headers['x-ow-extra-logging'] = 'on'

Action authentication errors

When Adobe authentication and authorization checks are enabled for an action with the require-adobe-auth annotation set to true, you may see the following errors when making requests to the action:

  1. request is invalid, failed authorization. Please use a valid user token for this SPA.
  2. request is invalid, failed authorization. Please use a valid JWT or user access token for this headless application.

An SPA is an application with web UI components (located in the web-src/ folder). Headless app are back-end microservices without web UI. For authentication and authorization checks, the back-end actions of an SPA are validated against a valid user token which is passed directly from Adobe Experience Cloud (ExC) Shell.

On the other hand, the actions of a headless app can be validated against a valid user token from ExC Shell or a valid access token generated with the JWT (Service Account) Authentication. Please go through the App Builder Security Overview for more details about SPA vs. headless app authentication.

If you are developing a headless app but accidentally have the web-src/ folder added during the app initialization process, you could remove it by executing the command aio app delete web-assets at the root of your application source code folder. This will also assure that your actions are validated against the appropriate JWT auth.

Debugging errors with State and Files SDK

If your code uses App Builder State or Files SDKs, you cannot use aio app dev to debug it. The reason is that State and Files services have additional security which limits calls from outside of Adobe Runtime actions. Your action code is run on localhost which is not authorized to access the out-of-the-box cloud storage behind State and Files SDKs.

Note: This is not a problem if you configure the State or Files SDKs to connect to your own cloud storage (e.g. Cosmos DB).

NodeJS with Mac M1 chip

There are no pre-compiled NodeJS binaries for versions prior to 15.x for Apple's new M1 chip (arm64 architecture). -One solution is to change the architecture of your shell from arm64 to x86.

We recommend using the Node Version Manager (nvm) over Homebrew and follow their troubleshooting guides for macOS (section Macs with M1 chip).

Valerii NaidaStephan RingelMichael GoberlingShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file +One solution is to change the architecture of your shell from arm64 to x86.

We recommend using the Node Version Manager (nvm) over Homebrew and follow their troubleshooting guides for macOS (section Macs with M1 chip).

Valerii NaidaStephan RingelMichael GoberlingShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/first_app/index.html b/getting_started/first_app/index.html index 604e81578..c5f72e14c 100644 --- a/getting_started/first_app/index.html +++ b/getting_started/first_app/index.html @@ -354,4 +354,4 @@
Your deployed actions:
-> demoproject-0.0.1/__secured_analytics
...
To view your deployed application:
-> https://<namespace>.adobeio-static.net/<packagename>/index.html
To view your deployed application in the Experience Cloud shell:
-> https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=https://<namespace>.adobeio-static.net/<packagename>/index.html
Well done, your app is now online 🏄

Note the last section of the output To view your deployed application. There are 2 urls of the app shown by default, which allow access either to the CDN host or Experience Cloud Shell. In the latter case, The URL format of the app should follow https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=<your-app-url>.

You can also undeploy your app with aio app undeploy. To learn more about deployment, please refer to Deployment Overview. To automate your build, deploy and build process with our out-of-the-box CI/CD GitHub actions, please refer to CI/CD for App Builder Applications.

Common Issues

  1. When in doubt, please first ensure your CLI and all plugins are up to date. For the CLI, you can check the version through aio -v and compare it with npm show @adobe/aio-cli version. If your CLI is outdated, update it by running npm install -g @adobe/aio-cli. After that, you can simply run aio update to ensure all core plugins are updated.

  2. Validation error. If you see the following error, it is because you did not pass in an authorization header to an action expecting one. See Trying the Sample App section above or learn more about this in our Security Overview.

    Copied to your clipboard
    {"error": "cannot validate token, reason: missing authorization header"}
  3. Missing param error. If you see the following error, it is because you did not pass in required params to an action expecting one. See Trying the Sample App section above.

    Copied to your clipboard
    {"error": "missing parameter(s) 'apiKey,companyId'"}`

Next steps

For more code examples and use cases, please refer to the Resources page.

Olga KopylovaShazron AbdullahJesse MacFadyenPatrick RussellRon Nagy
Last updated 8/27/2024
Was this helpful?
\ No newline at end of file +Copied to your clipboard
{"error": "missing parameter(s) 'apiKey,companyId'"}`

Next steps

For more code examples and use cases, please refer to the Resources page.

Olga KopylovaShazron AbdullahJesse MacFadyenPatrick RussellRon Nagy
Last updated 8/27/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/index.html b/getting_started/index.html index 9d2f415c7..936c02fcd 100644 --- a/getting_started/index.html +++ b/getting_started/index.html @@ -115,4 +115,4 @@ Copied to your clipboard
- App Builder access is provided via an Adobe Experience Cloud IMS Org. If you are using the trial you should use the IMS org you requested or that was assigned to you. If you have a license for App Builder, then the IMS org was selected by the person who purchsed it for your company.
- If you do not have access to an organization:
- _Customers: Please contact your account manager for access._
- _Partners: Please contact your partner manager or request sandbox access via [Adobe Solution Partner Portal](https://solutionpartners.adobe.com/home.html)._

Local Environment Set Up

Required Tools

Please ensure you have these tools:

Copied to your clipboard
› Warning: @adobe/aio-cli update available from 3.3.0 to 3.4.1.
› Run npm install -g @adobe/aio-cli to update.

Supported Local Environment

We aim to provide similar quality of local development experience on both Windows 10 or 11 and macOS 10.14 and higher. -Our CLI and its plugins are automatically tested against NodeJS versions 14 and 16 on both Windows and Linux Xenial.

Supported Terminals for the CLI

The CLI uses the popular inquirer package for all its interactive functionalities, such as the application generators.

See inquirer's Support section and its known issues for up-to-date details.

Optional Tools

The following is required if you intend to use local development (aio app dev) features provided by the CLI:

Next Step

Now that you have your environment set up, you can start creating your own App Builder application.

Stephan RingelMichael GoberlingDan MooneyJesse MacFadyenRon Nagy
Last updated 8/27/2024
Was this helpful?
\ No newline at end of file +Our CLI and its plugins are automatically tested against NodeJS versions 14 and 16 on both Windows and Linux Xenial.

Supported Terminals for the CLI

The CLI uses the popular inquirer package for all its interactive functionalities, such as the application generators.

See inquirer's Support section and its known issues for up-to-date details.

Optional Tools

The following is required if you intend to use local development (aio app dev) features provided by the CLI:

Next Step

Now that you have your environment set up, you can start creating your own App Builder application.

Stephan RingelMichael GoberlingDan MooneyJesse MacFadyenRon Nagy
Last updated 8/27/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/publish_app/index.html b/getting_started/publish_app/index.html index d819504e5..a1d881fbe 100644 --- a/getting_started/publish_app/index.html +++ b/getting_started/publish_app/index.html @@ -179,4 +179,4 @@ approval myapp customapps -

Publishing your headless App Builder App

The App Builder Apps Adobe Experience Cloud only lists App Builder Apps that are SPAs. If you publish a headless app, please refer to our code lab Your First Headless App with App Builder.

We might provide supplementary discoverability mechanisms for published headless apps in future App Builder releases.

Next steps

For more code examples and use cases, please refer to the Resources page.

Valerii NaidaStephan RingelKanika GeraNaomi RobichaudShazron Abdullah
Last updated 5/21/2024
Was this helpful?
\ No newline at end of file +

Publishing your headless App Builder App

The App Builder Apps Adobe Experience Cloud only lists App Builder Apps that are SPAs. If you publish a headless app, please refer to our code lab Your First Headless App with App Builder.

We might provide supplementary discoverability mechanisms for published headless apps in future App Builder releases.

Next steps

For more code examples and use cases, please refer to the Resources page.

Valerii NaidaStephan RingelKanika GeraNaomi RobichaudShazron Abdullah
Last updated 5/21/2024
Was this helpful?
\ No newline at end of file diff --git a/guides/app-hooks/index.html b/guides/app-hooks/index.html index 930790f11..5d54ba35a 100644 --- a/guides/app-hooks/index.html +++ b/guides/app-hooks/index.html @@ -185,4 +185,4 @@ aio-app-undeploy lifecycle -

Valerii NaidaStephan RingelShazron AbdullahMichael Goberling
Last updated 6/28/2024
Was this helpful?
\ No newline at end of file +

Valerii NaidaStephan RingelShazron AbdullahMichael Goberling
Last updated 6/28/2024
Was this helpful?
\ No newline at end of file diff --git a/guides/application_logging/azure_log_analytics/index.html b/guides/application_logging/azure_log_analytics/index.html index c3da42738..a970b4cea 100644 --- a/guides/application_logging/azure_log_analytics/index.html +++ b/guides/application_logging/azure_log_analytics/index.html @@ -115,4 +115,4 @@ ? log type: <table_name_alpha_chars_only> Copied to your clipboard
aio app config set log-forwarding
? select log forwarding destination: Azure Log Analytics
? customer ID: <Workspace ID>
? shared key: <Primary Key>
? log type: <table_name_alpha_chars_only>

Note:

  • Verify that the config change has taken effect

    Copied to your clipboard
    aio app config get log-forwarding
  • Execute an action in your App Builder application workspace to generate logs.

  • Go to Azure Portal, and on the overview screen of your workspace, select Logs on the left menu. Run a query using the table name you provided in step 3. Note the table name that shows up on the Azure portal will have the suffix _CL appended to the table name you provided.

  • If you don't see any logs in Azure, please check the log forwarding errors.

    Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

  • Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/index.html b/guides/application_logging/index.html index d3a137421..59f9bb5cb 100644 --- a/guides/application_logging/index.html +++ b/guides/application_logging/index.html @@ -111,4 +111,4 @@ );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Managing Application Logs

    Logging is one of the most important tools in a developer's tool kit. Application logs allow a developer to debug an application in development as well as monitor it in production. The App Builder SDK and CLI provide significant out-of-the-box capabilities to facilitate logging from code and for viewing and forwarding those applications logs as needed.

    Logging with App Builder SDK

    The App Builder SDK provides a core logging library that defines an API on top of the popular WinstonJS and Debug npm packages. The core logging library can be used in a Runtime action or in other libraries.

    Furthermore, the App Builder core logging library can be used with the App Builder core errors library. The App Builder core errors library aims to streamline error management across the AIO SDK and App Builder applications. When the core errors library is used in conjunction with the core logging library, the error log messages output specific error codes, as defined by each App Builder SDK, that further aid debugging.

    Both the core logging library and the core errors library can be directly used in an App Builder application, a Runtime action, and other libraries. For example, both libraries are used in:

    Accessing logs with App Builder CLI

    App Builder CLI exposes application logs to the developers at different levels:

    • At an App Builder application level using the aio app plugin.
    • At a Runtime action level using the aio runtime plugin.

    App Builder app plugin

    The AIO CLI App plugin provides the aio app logs command, which fetches the logs for an App Builder application deployed to the App Builder Workspace that is configured in the current working folder:

    • The command accepts an integer argument with the --limit flag that allows fetching logs from the last n Runtime activations.
    • The command accepts an action name with the --action flag that allows fetching logs from a particular action within the App Builder application.
    • The command allows a --tail or --watch flag that would continuously fetch logs as they appear.

    To see more command options, run aio app logs --help on your terminal.

    The aio app logs command can be used either by a developer or even by a script running in a CI/CD pipeline. Furthermore, the command can be used for App Builder Applications deployed on Runtime or even those running locally through the aio app run --local command (see the Deployment guide).

    Runtime plugin

    The AIO CLI Runtime plugin operates at the level of a Runtime action. When a Runtime action is invoked, the corresponding activation's logs can be fetched using the aio runtime logs <activation_id> command.

    This command also offers command options to --watch or --tail the logs among other options (run aio runtime logs --help).

    Again, the aio runtime logs command can be used by a developer or by a script running in a CI/CD pipeline. Furthermore, the command can be used for App Builder Applications deployed on Runtime or even those running locally through the aio app run --local command (see the Deployment guide).

    Forwarding Application logs

    Apart from viewing application logs using the AIO CLI, a developer can also configure an App Builder application to forward all application logs to a customer-owned log management solution. Forwarding logs has several benefits over retrieving logs through the AIO CLI, especially for applications deployed in Production or Staging environments.

    The supported log management solutions include:

    1. Adobe I/O Runtime (default)
    2. Splunk Cloud
    3. Splunk Enterprise
    4. Azure Log Analytics
    5. New Relic

    Visit the above links to view the steps to set up log forwarding with that solution.

    When to use Log forwarding

    The following table outlines a quick comparison between storing logs in Adobe I/O Runtime vs. forwarding application logs to a log management solution of your choice.

    Storing logs in Adobe I/O RuntimeForwarding application logs
    Setup
    All workspaces default to storing logs in Runtime. Included in App Builder SKU.
    Log Forwarding needs to be configured per workspace of an App Builder application. As a customer, you would need to bring in a log management solution you own.
    When to use
    Storing logs in Runtime is a good option for local development and when each developer works in their own workspace.
    Forwarding logs is ideal for shared environments such as Stage and Production workspaces.
    Access to all logs
    Adobe I/O Runtime stores application logs for only failed or asynchronous activations.
    Log forwarding allows you to gain access to all your application logs.
    Retrieving logs
    The AIO CLI can be used to fetch logs stored in Adobe I/O Runtime.
    Once logs are forwarded to your configured log management solution, they cannot be fetched using the AIO CLI. You can directly retrieve logs from your configured log management solution.
    Logging limits
    Adobe I/O Runtime allows up to a maximum of 10 MB of log lines per activation beyond which log lines are truncated.
    Adobe I/O Runtime allows up to a maximum of 10 MB of log lines per activation beyond which log lines are truncated.
    Throttling
    The x-ow-extra-logging header directs Adobe I/O Runtime to store all application logs, but the header is meant to be used only in local development. Furthermore, overuse of the header is throttled at high log volumes.
    Log Forwarding removes the need to use x-ow-extra-logging as all application logs are forwarded by design.
    Log retention
    Logs stored in Adobe I/O Runtime are retained for 7 days.
    Once logs are forwarded to your configured log management solution, you can choose to retain logs for a longer duration.
    Capabilities
    AIO CLI provides the ability to view and tail application logs on a per application or activation level.
    Most industry-leading log management solutions offer the ability to view logs, search through unstructured logs, and chart data extracted from logs. Forwarding logs further allows you to consolidate your App Builder application logs with the logs from the rest of your infrastructure for better correlation.

    Log Forwarding Commands

    Setting Log Forwarding

    Copied to your clipboard
    aio app config set log-forwarding

    This command allows you to configure log forwarding for your workspace or reset it to store logs in Adobe I/O Runtime.

    Once a log forwarding configuration is successfully set, the log forwarding configuration is also stored in the .aio and .env files. Any changes made directly to the log forwarding configuration in the .aio or .env file would now be deployed when you run aio app deploy.

    Note: Running aio app deploy --no-actions or aio app deploy --no-log-forwarding-update would skip deploying any changes made to the local log forwarding configuration.

    Please visit the individual guides to set up log forwarding for your log management solution of choice.

    1. Splunk Cloud
    2. Splunk Enterprise
    3. Azure Log Analytics
    4. New Relic

    Viewing the current Log Forwarding configuration

    Copied to your clipboard
    aio app config get log-forwarding

    This command outputs the current log forwarding configuration for your workspace and compares it to the locally set log forwarding configuration. If log forwarding is not configured for your workspace, then Adobe I/O Runtime would be returned by default.

    Note: We never return the configured secret from our servers for security reasons.

    Debugging Log Forwarding

    Copied to your clipboard
    aio app config get log-forwarding errors

    This command outputs any errors that occurred when application logs were being forwarded to your configured log management solution. The command shows the most recent 10 log forwarding errors for the current log forwarding configuration, up to 30 days.

    Next steps

    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    This command outputs any errors that occurred when application logs were being forwarded to your configured log management solution. The command shows the most recent 10 log forwarding errors for the current log forwarding configuration, up to 30 days.

    Next steps

    Manik JindalTim KimKevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/new_relic/index.html b/guides/application_logging/new_relic/index.html index f465dedf4..6cc0c882e 100644 --- a/guides/application_logging/new_relic/index.html +++ b/guides/application_logging/new_relic/index.html @@ -114,4 +114,4 @@ ? license key: <license_key> Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: New Relic
    ? base URI: <base_uri>
    ? license key: <license_key>

    The URI value must include the protocol (https://).

  • Verify that the config change has taken effect.

    Copied to your clipboard
    aio app config get log-forwarding
  • Execute an action in your App Builder application workspace to generate logs.

  • Go to New Relic Home > Logs and run your query.

  • If you don't see any logs in New Relic, check the log forwarding errors.

    Copied to your clipboard
    aio app config get log-forwarding errors
  • If you are unable to set up log forwarding, visit the App Builder forums for support.

    Kevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    If you are unable to set up log forwarding, visit the App Builder forums for support.

    Kevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/splunk_cloud/index.html b/guides/application_logging/splunk_cloud/index.html index a4a95f87a..7ec5aa404 100644 --- a/guides/application_logging/splunk_cloud/index.html +++ b/guides/application_logging/splunk_cloud/index.html @@ -120,4 +120,4 @@ Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: Splunk HEC
    ? host: <hostname>
    ? port: <port_number>
    ? index: <index>
    ? hec_token: <token>

    Note:

    1. Verify that the config change has taken effect

      Copied to your clipboard
      aio app config get log-forwarding
    2. Execute an action in your App Builder application workspace to generate logs.

    3. Go to Splunk Home > Search and run the query

      Copied to your clipboard
      index=<index>
    4. If you don't see any logs in Splunk, please check the log forwarding errors.

      Copied to your clipboard
      aio app config get log-forwarding errors

      Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/splunk_enterprise/index.html b/guides/application_logging/splunk_enterprise/index.html index 4c49d2ffd..8f66bc365 100644 --- a/guides/application_logging/splunk_enterprise/index.html +++ b/guides/application_logging/splunk_enterprise/index.html @@ -120,4 +120,4 @@ Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: Splunk HEC
    ? host: <hostname>
    ? port: <port_number>
    ? index: <index>
    ? hec_token: <token>

    Note:

    1. Verify that the config change has taken effect

      Copied to your clipboard
      aio app config get log-forwarding
    2. Execute an action in your App Builder application workspace to generate logs.

    3. Go to Splunk Home > Search and run the query

      Copied to your clipboard
      index=<index>
    4. If you don't see any logs in Splunk, please check the log forwarding errors.

      Copied to your clipboard
      aio app config get log-forwarding errors

      Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_state/index.html b/guides/application_state/index.html index a13ad70f2..280a97369 100644 --- a/guides/application_state/index.html +++ b/guides/application_state/index.html @@ -172,4 +172,4 @@
    COMMANDS
    app state delete Delete key-values
    app state get Get a key-value
    app state list List key-values
    app state put Put a key-value
    app state stats Display stats

    The default region is amer, to access another region, you can use the --region flag or add the AIO_STATE_REGION=emea variable to your .env.

    Navigate the CLI usage documentation from the repo's README or by using the --help flag on the desired command.

    Usage limits

    Usage limits are enforced at the workspace level within a single region.

    Load

    In case of exceeding the usage limits, the State service will return with 429s. However, a retry mechanism in the State library will mitigate the propagation of the error on short time windows.

    Storage

    In case of exceeding the storage limits the service will return with an error and you will have to delete keys or wait for expiration to resume writing.

    Quotas

    Every organization with App Builder access is entitled to at least 1 State quota.

    At the organization level, 1 quota provides:

    The quota is shared for all State containers in the organization, across all regions and is tracked for billing purposes.

    Example: org 123 is entitled to 3 quotas, the total bandwidth usage of the organization should not exceed 600GB/month and the storage across regions should not exceed 3GB.

    List guarantees

    Using state.list, you can scan through the keys stored in your State container. list is a cursor-based iterator, which requires multiple calls to the State service to traverse all your keys.

    It is important to understand that list is scanning through your keys:

    list provides the following guarantees:

    However, list also has the following drawbacks:

    Please note, that list is subject to the bandwidth rate-limiting quotas, so listing many keys may result in 429s.

    match option

    state.deleteAll and state.list support a match option to filter keys.

    match supports a glob-style pattern via the * character, suppose you have the following keys: key, base.key, key-1

    The match filter is applied server-side after traversing elements, this means:

    Troubleshooting

    Set DEBUG=@adobe/aio-lib-state* to see debug logs.

    Files

    Files is currently implemented as an abstraction layer over Azure Blob. Major changes and additional features are planned, stay tuned.

    To learn more please visit the Adobe I/O File Storage library repository.

    Feature Matrix

    FilesStateState Legacy
    read
    write
    delete
    Y
    Y
    Y
    list
    Y
    Y
    N
    streams
    Y
    N
    N
    copy
    Y
    N
    N
    deleteAll
    N
    Y
    N
    sharing
    Y (pre-sign URLs)
    N
    N
    Time-To-Live
    N
    Y
    Y
    max TTL
    infinite
    365 days
    infinite
    max file/value size
    200GB
    1MB
    2MB
    max key size
    1KB
    1KB
    1KB
    key charset
    open
    alphanumeric with _-.
    any but /\?#
    max load
    N/A
    10MB/min, 1MB/s
    1k/min list requests
    900 RU/min (~KB/min)
    max key values
    N/A
    100K (scalable)
    N/A
    max storage
    1TB
    1GB (scalable)
    10GB
    max monthly load
    N/A
    200GB (scalable)
    N/A
    regions
    East US
    West US read-only
    Amer (US)
    Emea (EU)
    Apac (JPN)
    East US
    Europe read-only
    consistency
    strong
    strong
    eventual
    Valerii NaidaStephan RingelShazron AbdullahMoritz Raho
    Last updated 12/9/2024
    Was this helpful?
    \ No newline at end of file +array first and then remove any duplicates.
  • In some rare cases, list may return expired keys.
  • Please note, that list is subject to the bandwidth rate-limiting quotas, so listing many keys may result in 429s.

    match option

    state.deleteAll and state.list support a match option to filter keys.

    match supports a glob-style pattern via the * character, suppose you have the following keys: key, base.key, key-1

    The match filter is applied server-side after traversing elements, this means:

    Troubleshooting

    Set DEBUG=@adobe/aio-lib-state* to see debug logs.

    Files

    Files is currently implemented as an abstraction layer over Azure Blob. Major changes and additional features are planned, stay tuned.

    To learn more please visit the Adobe I/O File Storage library repository.

    Feature Matrix

    FilesStateState Legacy
    read
    write
    delete
    Y
    Y
    Y
    list
    Y
    Y
    N
    streams
    Y
    N
    N
    copy
    Y
    N
    N
    deleteAll
    N
    Y
    N
    sharing
    Y (pre-sign URLs)
    N
    N
    Time-To-Live
    N
    Y
    Y
    max TTL
    infinite
    365 days
    infinite
    max file/value size
    200GB
    1MB
    2MB
    max key size
    1KB
    1KB
    1KB
    key charset
    open
    alphanumeric with _-.
    any but /\?#
    max load
    N/A
    10MB/min, 1MB/s
    1k/min list requests
    900 RU/min (~KB/min)
    max key values
    N/A
    100K (scalable)
    N/A
    max storage
    1TB
    1GB (scalable)
    10GB
    max monthly load
    N/A
    200GB (scalable)
    N/A
    regions
    East US
    West US read-only
    Amer (US)
    Emea (EU)
    Apac (JPN)
    East US
    Europe read-only
    consistency
    strong
    strong
    eventual
    Valerii NaidaStephan RingelShazron AbdullahMoritz Raho
    Last updated 12/9/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/configuration/index.html b/guides/configuration/index.html index e0de48f6f..c4500f18d 100644 --- a/guides/configuration/index.html +++ b/guides/configuration/index.html @@ -325,4 +325,4 @@ Copied to your clipboard
    async function main (params) {
    if (params.ENABLE_DEV_DEBUG) {
    console.debug("Enabling dev tools, extra usage data will be captured...")
    }
    }
    exports.main = main

    .aio

    The .aio file is auto generated and contains Developer Console specific configuration. This file is updated via the aio app use command and should not be edited manually.

    Legacy configuration system

    Apps initialized using a @adobe/aio-cli CLI version prior to 8.x use a legacy configuration system that we still support in newer CLI versions. -Those apps do not support extensions, and only get deployed as standalone applications.

    The legacy configuration system does not have an app.config.yaml and instead uses:

    1. .aio to store common configuration bits, but hooks and Runtime Manifest, such as actions path.
    2. manifest.yaml to stores the Runtime Manifest.
    3. package.json to store hooks.
    4. .env behaves the same.

    Migrating between Standalone Application and DX Experience Cloud SPA v1

    Next steps

    Jesse MacFadyenShazron AbdullahMichael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file +Those apps do not support extensions, and only get deployed as standalone applications.

    The legacy configuration system does not have an app.config.yaml and instead uses:

    1. .aio to store common configuration bits, but hooks and Runtime Manifest, such as actions path.
    2. manifest.yaml to stores the Runtime Manifest.
    3. package.json to store hooks.
    4. .env behaves the same.

    Migrating between Standalone Application and DX Experience Cloud SPA v1

    Next steps

    Jesse MacFadyenShazron AbdullahMichael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/configuration/webpack-configuration/index.html b/guides/configuration/webpack-configuration/index.html index 97fade5b1..7630c053e 100644 --- a/guides/configuration/webpack-configuration/index.html +++ b/guides/configuration/webpack-configuration/index.html @@ -200,4 +200,4 @@
    }

    Base Options

    App Builder starts off with the following Webpack configuration options, any additional values will be added on for these fields:

    Defaults

    App Builder defaults to the following Webpack configuration options if they are not present in your configuration file:

    Immutable Options

    App Builder does not allow changing of the following Webpack configuration options. These fields will be ignored if present in your configuration file:

    Environment Variables

    If you have chosen to export a function, an async function, or an array of functions from your Webpack configuration file, App Builder will pass the environment to these functions. You can use this, for instance, to make decisions about bundling based on the environment.

    Example: If you exported an environment variable called FEATURE_FLAG_PIRATES_BOUNTY before building your application, you can use this in your Webpack configuration file:

    Copied to your clipboard
    module.exports = (env) => ({
    mode: env.FEATURE_FLAG_PIRATES_BOUNTY ? 'production' : 'development'
    })
    Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    module.exports = (env) => ({
    mode: env.FEATURE_FLAG_PIRATES_BOUNTY ? 'production' : 'development'
    })
    Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/contribution_guides/index.html b/guides/contribution_guides/index.html index b84069198..164618c1c 100644 --- a/guides/contribution_guides/index.html +++ b/guides/contribution_guides/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Contributing

    Thanks for choosing to contribute! The following are a set of guidelines to follow when contributing to this project.

    Code Of Conduct

    This project adheres to the Adobe code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to Grp-opensourceoffice@adobe.com.

    Contributor License Agreement

    All third-party contributions to this project must be accompanied by a signed contributor license agreement. This gives Adobe permission to redistribute your contributions as part of the project. Sign our CLA. You only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go!

    Code Reviews

    All submissions should come in the form of pull requests and need to be reviewed by project committers. Read GitHub's pull request documentation for more information on sending pull requests.

    Lastly, please follow the pull request template when submitting a pull request!

    CLI and plugins best practises

    We follow the 12 Factors CLI principles for our CLI and plugins.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Contributing

    Thanks for choosing to contribute! The following are a set of guidelines to follow when contributing to this project.

    Code Of Conduct

    This project adheres to the Adobe code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to Grp-opensourceoffice@adobe.com.

    Contributor License Agreement

    All third-party contributions to this project must be accompanied by a signed contributor license agreement. This gives Adobe permission to redistribute your contributions as part of the project. Sign our CLA. You only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go!

    Code Reviews

    All submissions should come in the form of pull requests and need to be reviewed by project committers. Read GitHub's pull request documentation for more information on sending pull requests.

    Lastly, please follow the pull request template when submitting a pull request!

    CLI and plugins best practises

    We follow the 12 Factors CLI principles for our CLI and plugins.

    \ No newline at end of file diff --git a/guides/deployment/ci_cd_for_firefly_apps/index.html b/guides/deployment/ci_cd_for_firefly_apps/index.html index 9d3df4b9f..be0340abf 100644 --- a/guides/deployment/ci_cd_for_firefly_apps/index.html +++ b/guides/deployment/ci_cd_for_firefly_apps/index.html @@ -124,4 +124,4 @@ CI/CD with Github Actions -

    GitHub Actions for AIO CLI

    The following GitHub Actions have been built to support the usage of the CLI in a CI/CD workflow running within GitHub infrastructure.

    They are used in the default App Builder Apps workflows, but can also be used further in custom GitHub workflows built by developers to fulfil their project needs.

    These both actions have been published and can be found on GitHub Marketplace. See CLI Setup and Apps.

    GitHub Secrets

    The following GitHub Actions leverage GitHub Secrets to store environment specific secrets.

    They currently need an administrator to manually add the following secrets to the application repository:

    We aim to simplify this configuration process in the future.

    Bring your own CI/CD pipeline

    The default implementation of the CI/CD workflow for App Builder Applications relies on GitHub capabilities. However, a developer might need an alternative solution due to project specific requirements, or team preference.

    In that case, we recommend implementing the custom solution with focus on two main aspects:

    Valerii NaidaStephan RingelShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +

    GitHub Actions for AIO CLI

    The following GitHub Actions have been built to support the usage of the CLI in a CI/CD workflow running within GitHub infrastructure.

    They are used in the default App Builder Apps workflows, but can also be used further in custom GitHub workflows built by developers to fulfil their project needs.

    These both actions have been published and can be found on GitHub Marketplace. See CLI Setup and Apps.

    GitHub Secrets

    The following GitHub Actions leverage GitHub Secrets to store environment specific secrets.

    They currently need an administrator to manually add the following secrets to the application repository:

    We aim to simplify this configuration process in the future.

    Bring your own CI/CD pipeline

    The default implementation of the CI/CD workflow for App Builder Applications relies on GitHub capabilities. However, a developer might need an alternative solution due to project specific requirements, or team preference.

    In that case, we recommend implementing the custom solution with focus on two main aspects:

    Valerii NaidaStephan RingelShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/credential-rotation/index.html b/guides/deployment/credential-rotation/index.html index 47f0aef4f..8c3e4b1d2 100644 --- a/guides/deployment/credential-rotation/index.html +++ b/guides/deployment/credential-rotation/index.html @@ -135,4 +135,4 @@ Copied to your clipboard
    # actionInputs.json
    {
    "actionCredential": "value from actionInputs.json"
    }
    ➜ aio runtime action update <action-name> --param-file=<value>
    # concrete example
    ➜ aio runtime action update dx-excshell-1/generic --param-file=actionInputs.json
    -
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file +
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/index.html b/guides/deployment/index.html index 5020a6b7c..465e93d1a 100644 --- a/guides/deployment/index.html +++ b/guides/deployment/index.html @@ -130,4 +130,4 @@ Remote Runtime Actions and UI -

    The UI is deployed to the out-of-the-box content Content Delivery Network on behalf of the developer's Runtime credentials. It communicates with Runtime actions deployed to the developer's Runtime namespace.

    The out-of-the-box Token-Vending Machine is implicitely used by the CLI aio app deploy command, and validates the developer's Runtime credentials against Runtime.

    If the credentials are valid, the Token-Vending Machine provides an access token to the CLI, which will authorize the CLI to deploy the static files of the Custom Application to the Content Delivery Network.

    The deployed Custom Application will then be available at https://<namespace>.adobeio-static.net/index.html

    Next steps

    Stephan RingelMichael GoberlingTim KimPablo MorenoJesse MacFadyen
    Last updated 6/25/2024
    Was this helpful?
    \ No newline at end of file +

    The UI is deployed to the out-of-the-box content Content Delivery Network on behalf of the developer's Runtime credentials. It communicates with Runtime actions deployed to the developer's Runtime namespace.

    The out-of-the-box Token-Vending Machine is implicitely used by the CLI aio app deploy command, and validates the developer's Runtime credentials against Runtime.

    If the credentials are valid, the Token-Vending Machine provides an access token to the CLI, which will authorize the CLI to deploy the static files of the Custom Application to the Content Delivery Network.

    The deployed Custom Application will then be available at https://<namespace>.adobeio-static.net/index.html

    Next steps

    Stephan RingelMichael GoberlingTim KimPablo MorenoJesse MacFadyen
    Last updated 6/25/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/setting-response-headers/index.html b/guides/deployment/setting-response-headers/index.html index 9c2af002e..54725f9fe 100644 --- a/guides/deployment/setting-response-headers/index.html +++ b/guides/deployment/setting-response-headers/index.html @@ -123,4 +123,4 @@ /lib/sample.js: # add headers to specific ile Content-security-policy: default-src 'self' example.com *.example.com Copied to your clipboard
    application:
    actions: actions
    web:
    src: web-src
    response-headers:
    /*: # add headers to all content
    X-custom-header: generic header
    /secure-dir/*: # specific folder
    Content-security-policy: default-src 'self'
    /widgets/*.html: # add headers to all html content
    X-custom-header: widget specific header
    Content-security-policy: default-src 'self'
    /lib/sample.js: # add headers to specific ile
    Content-security-policy: default-src 'self' example.com *.example.com

    Once headers are added, they can be easily deployed with the app using the aio app:deploy command. -Note: the paths specified in rules are relative to the dist folder (created post app build) and not to the app root.

    Allowed Headers

    This feature allows developers to set any HTTP or custom response headers, except those in the list below.

    If these headers are specified in the manifest, they are ignored and are not included in the response.

    These particular headers are ignored because they are either meant for internal usage or are CDN-specific headers which should not be overridden.

    1. accept-ranges
    2. age
    3. allow
    4. alt-svc
    5. cache-control
    6. connection
    7. content-length
    8. content-type
    9. content-disposition
    10. content-encoding
    11. content-language
    12. content-length
    13. date
    14. etag
    15. expires
    16. last-modified
    17. location
    18. server
    19. trailer
    20. transfer-encoding
    21. upgrade
    22. x-cache
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file +Note: the paths specified in rules are relative to the dist folder (created post app build) and not to the app root.

    Allowed Headers

    This feature allows developers to set any HTTP or custom response headers, except those in the list below.

    If these headers are specified in the manifest, they are ignored and are not included in the response.

    These particular headers are ignored because they are either meant for internal usage or are CDN-specific headers which should not be overridden.

    1. accept-ranges
    2. age
    3. allow
    4. alt-svc
    5. cache-control
    6. connection
    7. content-length
    8. content-type
    9. content-disposition
    10. content-encoding
    11. content-language
    12. content-length
    13. date
    14. etag
    15. expires
    16. last-modified
    17. location
    18. server
    19. trailer
    20. transfer-encoding
    21. upgrade
    22. x-cache
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/development/index.html b/guides/development/index.html index 04f8845aa..804cf5836 100644 --- a/guides/development/index.html +++ b/guides/development/index.html @@ -144,4 +144,4 @@ } Copied to your clipboard
    {
    "version": "0.3.0",
    "configurations": [
    {
    "name": "App Builder: debug actions",
    "type": "node-terminal",
    "request": "launch",
    "command": "aio app dev",
    "skipFiles": [
    "<node_internals>/**/*.js",
    "${workspaceFolder}/node_modules/**/*.js"
    ]
    }, {
    "name": "App Builder: debug full stack",
    "type": "node-terminal",
    "request": "launch",
    "command": "aio app dev",
    "sourceMapPathOverrides": {
    "/__parcel_source_root/*": "${webRoot}/*"
    },
    "skipFiles": [
    "<node_internals>/**/*.js",
    "${workspaceFolder}/node_modules/**/*.js"
    ],
    "serverReadyAction": {
    "pattern": "server running on port : ([0-9]+)",
    "uriFormat": "https://localhost:%s",
    "action": "debugWithChrome",
    "webRoot": "${workspaceFolder}"
    }
    }
    ]
    }
    1. Open the Debug panel (Ctrl+Shift+D on Windows/Linux, ⇧+⌘+D on macOS)
    2. Select a launch configuration
    3. Press F5 or select Debug: Start Debugging from the Command Palette to start your debugging session.

    Note: This debug configuration is dynamic and allows you to set a port in the .env file
    ex.
    PORT=3000

    Actions are loaded dynamically so the code is not evaluated until an http request is made. This means that when you put a breakpoint in your action code it will be grayed out until you trigger a call to the action. Web action urls are mapped to https://localhost:PORT/api/v1/web/<package-name>/<action-name> and can be called from your frontend, opening the url in the browser, or with cURL etc.

    You can use the step through debugging features of VS Code, inspect variables, add watches, etc.

    More Information

    Learn more about using a JavaScript debugger

    Jesse MacFadyenShazron Abdullah
    Last updated 8/15/2024
    Was this helpful?
    \ No newline at end of file +  PORT=3000

    Actions are loaded dynamically so the code is not evaluated until an http request is made. This means that when you put a breakpoint in your action code it will be grayed out until you trigger a call to the action. Web action urls are mapped to https://localhost:PORT/api/v1/web/<package-name>/<action-name> and can be called from your frontend, opening the url in the browser, or with cURL etc.

    You can use the step through debugging features of VS Code, inspect variables, add watches, etc.

    More Information

    Learn more about using a JavaScript debugger

    Jesse MacFadyenShazron Abdullah
    Last updated 8/15/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/distribution/index.html b/guides/distribution/index.html index 732cb4b5b..c90758450 100644 --- a/guides/distribution/index.html +++ b/guides/distribution/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Distribution Overview

    Developers can distribute their App Builder apps privately or publicly.

    Private

    Privately distributed apps are only available to members of the developer's organization. See Private Distribution for more details.

    Public

    Publicly distributed apps are available for install via Adobe Exchange. See Public Distribution for details on how to configure and prepare your app for public distribution.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Distribution Overview

    Developers can distribute their App Builder apps privately or publicly.

    Private

    Privately distributed apps are only available to members of the developer's organization. See Private Distribution for more details.

    Public

    Publicly distributed apps are available for install via Adobe Exchange. See Public Distribution for details on how to configure and prepare your app for public distribution.

    \ No newline at end of file diff --git a/guides/distribution/private/index.html b/guides/distribution/private/index.html index d0e87248c..398281ca7 100644 --- a/guides/distribution/private/index.html +++ b/guides/distribution/private/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Private Distribution

    Distribute apps to other members in your Adobe organization.

    Overview

    Privately distributed apps are only available to users in the developer's organization and can be accessed via the App Builder Catalog. These apps are submitted via the Developer Console and reviewed by admins of the developer's organization.

    See Publishing Your First App Builder Application for a thorough walkthrough on this topic.

    Note: In order for your app to show up in the App Builder Catalog, it must be an Experience Cloud Shell extension.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Private Distribution

    Distribute apps to other members in your Adobe organization.

    Overview

    Privately distributed apps are only available to users in the developer's organization and can be accessed via the App Builder Catalog. These apps are submitted via the Developer Console and reviewed by admins of the developer's organization.

    See Publishing Your First App Builder Application for a thorough walkthrough on this topic.

    Note: In order for your app to show up in the App Builder Catalog, it must be an Experience Cloud Shell extension.

    \ No newline at end of file diff --git a/guides/distribution/public/index.html b/guides/distribution/public/index.html index 2747a9686..13a1b5ae8 100644 --- a/guides/distribution/public/index.html +++ b/guides/distribution/public/index.html @@ -266,4 +266,4 @@ minVersion: 0.0.0 maxVersion: 1.0.0 Copied to your clipboard
    application:
    <application config>
    extensions:
    <extension configs>
    configSchema:
    <customer configuration>
    productDependencies:
    - code: AEP
    minVersion: 0.0.0
    maxVersion: 1.0.0

    Valid products

    Product version information can be found on Adobe Experience League.

    Packaging for developer distribution

    Once you've configured your app for public distribution, it's time to upload it to Adobe Developer Distribution. Before you do that, you will need to package it.

    The aio app pack command will verify and bundle your app. In the root of your app folder, run this command:

    Copied to your clipboard
    aio app pack

    After this command completes, you can find the app package in your app folder as: dist/app.zip.

    Continue to the Adobe Developer Distribution documentation for details on how to upload your package.

    Validation

    When a developer uploads a package to Adobe Developer Distribution, the following validations are performed:

    1. app.config.yaml
    2. package.json version
    3. files to be packaged. All the files in your app folder will be packaged EXCEPT:
    4. event registrations will be validated (if any)

    Hooks

    Two hooks are available to customize the packaging step:

    1. pre-pack - runs before packaging
    2. post-pack - runs after packaging

    Your hook handler function will be passed two items:

    1. appConfig (object) - this contains the config of the current application
    2. artifactsFolder (string) - this will be the location of the folder containing all the packaging artifacts that will be bundled
    Michael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app pack

    After this command completes, you can find the app package in your app folder as: dist/app.zip.

    Continue to the Adobe Developer Distribution documentation for details on how to upload your package.

    Validation

    When a developer uploads a package to Adobe Developer Distribution, the following validations are performed:

    1. app.config.yaml
    2. package.json version
    3. files to be packaged. All the files in your app folder will be packaged EXCEPT:
    4. event registrations will be validated (if any)

    Hooks

    Two hooks are available to customize the packaging step:

    1. pre-pack - runs before packaging
    2. post-pack - runs after packaging

    Your hook handler function will be passed two items:

    1. appConfig (object) - this contains the config of the current application
    2. artifactsFolder (string) - this will be the location of the folder containing all the packaging artifacts that will be bundled
    Michael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/events/custom-events/index.html b/guides/events/custom-events/index.html index 6104c7cb2..2496de5d9 100644 --- a/guides/events/custom-events/index.html +++ b/guides/events/custom-events/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Custom I/O Events Overview

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Custom I/O Events Overview

    \ No newline at end of file diff --git a/guides/events/webhooks/index.html b/guides/events/webhooks/index.html index b5d880694..49dfb2fd2 100644 --- a/guides/events/webhooks/index.html +++ b/guides/events/webhooks/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to Adobe I/O Events Webhooks

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to Adobe I/O Events Webhooks

    \ No newline at end of file diff --git a/guides/exc_app/index.html b/guides/exc_app/index.html index d7f1410e0..87423f574 100644 --- a/guides/exc_app/index.html +++ b/guides/exc_app/index.html @@ -179,4 +179,4 @@ }); } Copied to your clipboard
    import runtime from '@exc/runtime';
    -
    function setup() {
    const runtime = excApp();
    runtime.on('history', ({type, path}) => {
    const cleanedPath = path[0] === '/' ? path : '/' + path;
    if (type === 'external' && this.history.location.pathname !== cleanedPath) {
    this.history.replace(cleanedPath);
    }
    });
    }

    Payload:

    Licensing

    This project is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International Public License. See LICENSE for more information.

    Next steps

    Stephan RingelValerii NaidaMichael GoberlingTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    function setup() {
    const runtime = excApp();
    runtime.on('history', ({type, path}) => {
    const cleanedPath = path[0] === '/' ? path : '/' + path;
    if (type === 'external' && this.history.location.pathname !== cleanedPath) {
    this.history.replace(cleanedPath);
    }
    });
    }

    Payload:

    Licensing

    This project is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International Public License. See LICENSE for more information.

    Next steps

    Stephan RingelValerii NaidaMichael GoberlingTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/index.html b/guides/exc_app/interfaces/index.html index 59de77997..fbb8e18a9 100644 --- a/guides/exc_app/interfaces/index.html +++ b/guides/exc_app/interfaces/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Modules

    Hierarchy

    • Modules

    Index

    Properties

    Properties

    default

    default: function

    Type declaration:

    ▸ (options?: any): Runtime

    Parameters:

    NameType
    options?
    any

    page

    page: PageApi


    runtime

    runtime: Runtime


    topbar

    topbar: TopbarApi


    user

    user: function

    Type declaration:

    ▸ (): UserApi

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Modules

    Hierarchy

    • Modules

    Index

    Properties

    Properties

    default

    default: function

    Type declaration:

    ▸ (options?: any): Runtime

    Parameters:

    NameType
    options?
    any

    page

    page: PageApi


    runtime

    runtime: Runtime


    topbar

    topbar: TopbarApi


    user

    user: function

    Type declaration:

    ▸ (): UserApi

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/index.runtime/index.html b/guides/exc_app/interfaces/index.runtime/index.html index 5a187c38b..b1a53367e 100644 --- a/guides/exc_app/interfaces/index.runtime/index.html +++ b/guides/exc_app/interfaces/index.runtime/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Runtime <T>

    Defines the runtime object providing all unified-shell APIs for solution authors.

    Type parameters

    T

    Hierarchy

    • EventEmitter

      Runtime

    Index

    EventEmitter Methods

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: T[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    T[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Runtime <T>

    Defines the runtime object providing all unified-shell APIs for solution authors.

    Type parameters

    T

    Hierarchy

    • EventEmitter

      Runtime

    Index

    EventEmitter Methods

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: T[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    T[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.objectwithhref/index.html b/guides/exc_app/interfaces/page.objectwithhref/index.html index 9270b8156..b0eb9b630 100644 --- a/guides/exc_app/interfaces/page.objectwithhref/index.html +++ b/guides/exc_app/interfaces/page.objectwithhref/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ObjectWithHref

    Hierarchy

    • ObjectWithHref

    Index

    Properties

    Properties

    href

    href: string

    The URL of the solution page.

    Example:

    Copied to your clipboard
    { href: 'https://example.com/abc' }
    \ No newline at end of file +Copied to your clipboard
    { href: 'https://example.com/abc' }
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.objectwithpath/index.html b/guides/exc_app/interfaces/page.objectwithpath/index.html index 4c8b899fa..5ee57a9b0 100644 --- a/guides/exc_app/interfaces/page.objectwithpath/index.html +++ b/guides/exc_app/interfaces/page.objectwithpath/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ObjectWithPath

    Hierarchy

    • ObjectWithPath

    Index

    Properties

    Properties

    path

    path: string

    The relative path within the solution.

    Example:

    Copied to your clipboard
    {path: '/abc'}
    \ No newline at end of file +Copied to your clipboard
    {path: '/abc'}
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.pageapi/index.html b/guides/exc_app/interfaces/page.pageapi/index.html index e68e6989a..9af7bdfc5 100644 --- a/guides/exc_app/interfaces/page.pageapi/index.html +++ b/guides/exc_app/interfaces/page.pageapi/index.html @@ -148,4 +148,4 @@ Copied to your clipboard
    page.openInNewTab('/path');

    Parameters:

    NameTypeDescription
    path
    string
    The relative path within the solution.

    Returns: void


    shellRedirect

    shellRedirect(path: string): void

    Redirects to another unified shell solution. Path should be the complete relative path of a valid unified shell solution url (i.e. if shellRedirect is called from /target to /analytics, the path paremeter would need to start with /analytics). Query and hash are optional.

    Example:

    Copied to your clipboard
    page.shellRedirect('/path?a=b#workspace');

    Parameters:

    NameTypeDescription
    path
    string
    Path including search and hash to a unified shell solution.

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    page.shellRedirect('/path?a=b#workspace');

    Parameters:

    NameTypeDescription
    path
    string
    Path including search and hash to a unified shell solution.

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.pageapiproperties/index.html b/guides/exc_app/interfaces/page.pageapiproperties/index.html index 96f5e1ff0..bb2f4bd46 100644 --- a/guides/exc_app/interfaces/page.pageapiproperties/index.html +++ b/guides/exc_app/interfaces/page.pageapiproperties/index.html @@ -133,4 +133,4 @@ order to alternate the z-index values, putting the iframe above the Shell, set:

    Copied to your clipboard
    page.viewportTakeover = true;

    Now the solution application is 100% of the browser's viewport and can open any views at 100%. When the takeover is complete, set the value back to false to return the Shell to the top of -the application.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +the application.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.callback/index.html b/guides/exc_app/interfaces/topbar.callback/index.html index 77b16bcb6..4457e00a5 100644 --- a/guides/exc_app/interfaces/topbar.callback/index.html +++ b/guides/exc_app/interfaces/topbar.callback/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Callback

    Hierarchy

    • Callback

    Callable

    ▸ (value?: any): void

    Parameters:

    NameType
    value?
    any

    Returns: void

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Callback

    Hierarchy

    • Callback

    Callable

    ▸ (value?: any): void

    Parameters:

    NameType
    value?
    any

    Returns: void

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html index 661f87e24..635d536c0 100644 --- a/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomFeedbackConfig

    Hierarchy

    • CustomFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    callback

    callback: Callback


    enabled

    enabled: boolean


    type

    type: "custom"

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomFeedbackConfig

    Hierarchy

    • CustomFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    callback

    callback: Callback


    enabled

    enabled: boolean


    type

    type: "custom"

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.customsearchconfig/index.html b/guides/exc_app/interfaces/topbar.customsearchconfig/index.html index c17d100e4..dbdeefef3 100644 --- a/guides/exc_app/interfaces/topbar.customsearchconfig/index.html +++ b/guides/exc_app/interfaces/topbar.customsearchconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomSearchConfig

    Hierarchy

    • CustomSearchConfig

    Index

    Properties

    Properties

    Optional callback

    callback? : Callback

    The callback to execute when the search icon is clicked.


    Optional enabled

    enabled? : undefined | false | true

    Used to control whether or not the search icon in the top bar is enabled and clickable.


    Optional open

    open? : undefined | false | true

    Flag used to notify shell whether the custom search dialog has been opened/closed.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomSearchConfig

    Hierarchy

    • CustomSearchConfig

    Index

    Properties

    Properties

    Optional callback

    callback? : Callback

    The callback to execute when the search icon is clicked.


    Optional enabled

    enabled? : undefined | false | true

    Used to control whether or not the search icon in the top bar is enabled and clickable.


    Optional open

    open? : undefined | false | true

    Flag used to notify shell whether the custom search dialog has been opened/closed.

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html index bdec59195..7b12f58de 100644 --- a/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ExternalFeedbackConfig

    Hierarchy

    • ExternalFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    type

    type: "external"


    url

    url: string

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ExternalFeedbackConfig

    Hierarchy

    • ExternalFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    type

    type: "external"


    url

    url: string

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html index 8c5e05a90..170b52fc3 100644 --- a/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: HelpCenterFeedbackConfig

    Hierarchy

    • HelpCenterFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    Optional subject

    subject? : undefined | string


    type

    type: "openFeedback"

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: HelpCenterFeedbackConfig

    Hierarchy

    • HelpCenterFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    Optional subject

    subject? : undefined | string


    type

    type: "openFeedback"

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.solution/index.html b/guides/exc_app/interfaces/topbar.solution/index.html index 25f633426..c6b4b5912 100644 --- a/guides/exc_app/interfaces/topbar.solution/index.html +++ b/guides/exc_app/interfaces/topbar.solution/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Solution

    Defines the attributes of the solution to display on the left-side of the top bar.

    Hierarchy

    • Solution

    Index

    Properties

    Properties

    icon

    icon: string

    The icon to display in the solution area. If this isn't set, then the default experience cloud -icon will be used.


    shortTitle

    shortTitle: string

    The title to display on smaller browser resolutions where the horizonal space is constrained.


    title

    title: string

    The title to display. Defaults to 'Adobe Experience Cloud'.

    \ No newline at end of file +icon will be used.


    shortTitle

    shortTitle: string

    The title to display on smaller browser resolutions where the horizonal space is constrained.


    title

    title: string

    The title to display. Defaults to 'Adobe Experience Cloud'.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.topbarapi/index.html b/guides/exc_app/interfaces/topbar.topbarapi/index.html index 742b4eab8..0d55b121c 100644 --- a/guides/exc_app/interfaces/topbar.topbarapi/index.html +++ b/guides/exc_app/interfaces/topbar.topbarapi/index.html @@ -144,4 +144,4 @@ ]; Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];

    Methods

    onHeroClick

    onHeroClick(callback: Callback): void

    Registers a callback to execute when the hero (solution) icon in the upper lefthand corner of the Shell is clicked.

    Parameters:

    NameTypeDescription
    callback
    The callback to execute.

    Returns: void


    setCustomSearch

    setCustomSearch(config: CustomSearchConfig | null): void

    Determines whether or not to enable the custom search property and enacts a callback -when the custom search icon is clicked.

    Parameters:

    NameType
    config

    Returns: void


    setFeedbackButton

    setFeedbackButton(config: CustomFeedbackConfig | HelpCenterFeedbackConfig | ExternalFeedbackConfig | null): void

    Determines whether or not to enable a feedback button.

    Parameters:

    NameType
    config

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +when the custom search icon is clicked.

    Parameters:

    NameType
    config

    Returns: void


    setFeedbackButton

    setFeedbackButton(config: CustomFeedbackConfig | HelpCenterFeedbackConfig | ExternalFeedbackConfig | null): void

    Determines whether or not to enable a feedback button.

    Parameters:

    NameType
    config

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html b/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html index f9dc3dfdd..237d7813c 100644 --- a/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html +++ b/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html @@ -142,4 +142,4 @@ ] } ]; -Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/user.userapi/index.html b/guides/exc_app/interfaces/user.userapi/index.html index f049e42be..a409111e4 100644 --- a/guides/exc_app/interfaces/user.userapi/index.html +++ b/guides/exc_app/interfaces/user.userapi/index.html @@ -111,4 +111,4 @@ );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserApi

    Hierarchy

    • EventEmitter‹UserInfoEvent›

      UserApi

    Index

    Properties

    EventEmitter Methods

    Other Methods

    Properties

    logoutUrl

    logoutUrl: string | undefined

    Optional. When specified this URL will be invoked upon user logging out. This is useful to reduce the number of lingering sessions for solutions who have their own sessions server (in addition to IMS).

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: UserInfoEvent[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    UserInfoEvent[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: UserInfoEvent[K]): void

    Parameters:

    NameType
    event?
    UserInfoEvent[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: UserInfoEvent[K]): void

    Parameters:

    NameType
    event?
    UserInfoEvent[K]

    Returns: void


    Other Methods

    authExpired

    authExpired(): void

    API to notify the unified shell that APIs are returning 401 and user needs to be -re-authenticated.

    Returns: void


    get

    get<T>(type: T): Promise‹UserInfo[T]›

    Gets the specified type of information about an user.

    Type parameters:

    T: keyof UserInfo

    Parameters:

    NameTypeDescription
    type
    T
    The type of information to get.

    Returns: Promise‹UserInfo[T]›

    \ No newline at end of file +re-authenticated.

    Returns: void


    get

    get<T>(type: T): Promise‹UserInfo[T]›

    Gets the specified type of information about an user.

    Type parameters:

    T: keyof UserInfo

    Parameters:

    NameTypeDescription
    type
    T
    The type of information to get.

    Returns: Promise‹UserInfo[T]›

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/user.userinfo/index.html b/guides/exc_app/interfaces/user.userinfo/index.html index dbc331ce5..5d57df3f3 100644 --- a/guides/exc_app/interfaces/user.userinfo/index.html +++ b/guides/exc_app/interfaces/user.userinfo/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserInfo

    Hierarchy

    • UserInfo

    Index

    Properties

    Properties

    imsOrg

    imsOrg: string


    imsOrgName

    imsOrgName: string


    imsOrgs

    imsOrgs: object[]


    imsProfile

    imsProfile: Record‹string, any›


    imsToken

    imsToken: string


    locale

    locale: string


    preferredLanguages

    preferredLanguages: string[]


    subOrg

    subOrg: string | null


    tenant

    tenant: string

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserInfo

    Hierarchy

    • UserInfo

    Index

    Properties

    Properties

    imsOrg

    imsOrg: string


    imsOrgName

    imsOrgName: string


    imsOrgs

    imsOrgs: object[]


    imsProfile

    imsProfile: Record‹string, any›


    imsToken

    imsToken: string


    locale

    locale: string


    preferredLanguages

    preferredLanguages: string[]


    subOrg

    subOrg: string | null


    tenant

    tenant: string

    \ No newline at end of file diff --git a/guides/exc_app/modules/index.html b/guides/exc_app/modules/index.html index 686618094..eb6c55045 100644 --- a/guides/exc_app/modules/index.html +++ b/guides/exc_app/modules/index.html @@ -129,4 +129,4 @@ } } Copied to your clipboard
    import React from 'react';
    import ReactDOM from 'react-dom';
    import excApp from '@exc/runtime';
    -
    export class MyComponent extends React.Component {
    constructor(props) {
    this.runtime = excApp();
    }
    }

    Returns: Runtime

    The runtime object.

    Stephan RingelValerii NaidaTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    export class MyComponent extends React.Component {
    constructor(props) {
    this.runtime = excApp();
    }
    }

    Returns: Runtime

    The runtime object.

    Stephan RingelValerii NaidaTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/modules/page/index.html b/guides/exc_app/modules/page/index.html index 1f65a68ae..bb959030c 100644 --- a/guides/exc_app/modules/page/index.html +++ b/guides/exc_app/modules/page/index.html @@ -52,11 +52,11 @@ --spectrum-dialog-confirm-buttongroup-padding-top )}.spectrum-Dialog--fullscreen .spectrum-Dialog-heading,.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading{font-size:var(--spectrum-dialog-confirm-title-text-size)}}@media (forced-colors:active){.spectrum-Dialog{border:solid}}.spectrum-Dialog-heading{color:var(--spectrum-dialog-confirm-title-text-color,var(--spectrum-alias-heading-text-color))}.spectrum-Dialog-content,.spectrum-Dialog-footer{color:var(--spectrum-dialog-confirm-description-text-color,var(--spectrum-global-color-gray-800))}.spectrum-Dialog-typeIcon{color:var(--spectrum-dialog-confirm-icon-color,var(--spectrum-global-color-gray-900))}.spectrum-Dialog--error .spectrum-Dialog-typeIcon{color:var(--spectrum-dialog-error-icon-color,var(--spectrum-semantic-negative-icon-color))}External module: page