{"version":1,"pages":[{"id":"y3bZu2lboIE0kZtM4xNp","title":"Introduction","pathname":"/v1-docs","siteSpaceId":"sitesp_g3Wsf","description":"Get acquainted with Aurelia 1, the documentation, and how to get started."},{"id":"z4YXeqKO8g7xhZ3JsU5B","title":"Quick Start","pathname":"/v1-docs/introduction/quick-start","siteSpaceId":"sitesp_g3Wsf","description":"Welcome to Aurelia. This quick start guide will take you through creating a todo app using Aurelia and briefly explain its main concepts. We assume you are familiar with JavaScript, HTML, and CSS.","breadcrumbs":[{"label":"Introduction"}]},{"id":"xJYGFrhlALDfX4Teu4Cb","title":"Aurelia for new developers","pathname":"/v1-docs/introduction/aurelia-for-new-developers","siteSpaceId":"sitesp_g3Wsf","description":"If you're new to Aurelia or perhaps development in general, we've got you.","breadcrumbs":[{"label":"Introduction"}]},{"id":"4GDogRpygziZvow2Dsmy","title":"Contact manager tutorial","pathname":"/v1-docs/introduction/contact-manager-tutorial","siteSpaceId":"sitesp_g3Wsf","description":"Now that you've got the basics down, you need to learn how to use the CLI, build a more complex app and get a solid knowledge foundation for real-world work.","breadcrumbs":[{"label":"Introduction"}]},{"id":"xsecwpqgWMuXxKU7aPo8","title":"Component basics","pathname":"/v1-docs/components/component-basics","siteSpaceId":"sitesp_g3Wsf","description":"At its core, every Aurelia app is built from components. This guide will walk you through creating simple components, leveraging dependency injection, and mastering the component lifecycle.","breadcrumbs":[{"label":"Components"}]},{"id":"mRzoKmu0ChETXQvIYBse","title":"Component lifecycles","pathname":"/v1-docs/components/component-lifecycles","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Components"}]},{"id":"mEXrgEkKhd2NcPIj1TPL","title":"Styling components","pathname":"/v1-docs/components/styling-components","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Components"}]},{"id":"JktYYvmb1vR2zq7RDyAN","title":"Component options","pathname":"/v1-docs/components/component-options","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Components"}]},{"id":"tbG4lT0MzikdQxYmCaiu","title":"Bindable properties","pathname":"/v1-docs/components/bindable-properties","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Components"}]},{"id":"fV2DtN7AdtxwWSqj5tJh","title":"Slotted content","pathname":"/v1-docs/components/slotted-content","siteSpaceId":"sitesp_g3Wsf","description":"Slotted content allows you to build flexible and reusable components by enabling users to insert their own content into specified areas of your component.","breadcrumbs":[{"label":"Components"}]},{"id":"iJBGAoUJfJUq8OUYgbKA","title":"Template compilation using processContent","pathname":"/v1-docs/components/template-compilation-using-processcontent","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Components"}]},{"id":"YZW8Htz0lsUA7kukZfXt","title":"Component decorators","pathname":"/v1-docs/components/component-decorators","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Components"}]},{"id":"5KTCzsieNqtnHSNFy9aj","title":"Template syntax","pathname":"/v1-docs/templates/template-syntax","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"}]},{"id":"q4CN5lx7tbV3UmuaXgoe","title":"Binding","pathname":"/v1-docs/templates/template-syntax/binding","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"46wIxgo2QYQmTDIbr3SL","title":"Attribute binding","pathname":"/v1-docs/templates/template-syntax/attribute-binding","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"oE33ZflVyJHvuNsH2nbY","title":"Event binding","pathname":"/v1-docs/templates/template-syntax/event-binding","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"L2JFLfZQVvShCHFX2ndb","title":"Delegate vs trigger","pathname":"/v1-docs/templates/template-syntax/delegate-vs-trigger","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"S4sotd0set1GtK4tMWGZ","title":"Text interpolation","pathname":"/v1-docs/templates/template-syntax/text-interpolation","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"Sf3kT9aVha97OziDe18c","title":"Element content","pathname":"/v1-docs/templates/template-syntax/element-content","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"YMfD9qt2GdTjX79cJBHG","title":"Function references","pathname":"/v1-docs/templates/template-syntax/function-references","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"Bf2DgOaYZAS7ujhPUaXr","title":"Element references","pathname":"/v1-docs/templates/template-syntax/element-references","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"6m5VdIGPIXTNvpaqym45","title":"Contextual properties","pathname":"/v1-docs/templates/template-syntax/contextual-properties","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"dNbfzJXvB6ct6nOSagen","title":"Expression syntax","pathname":"/v1-docs/templates/template-syntax/expression-syntax","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"k7hYoajYci6xmSYEeTRF","title":"Computed properties","pathname":"/v1-docs/templates/template-syntax/computed-properties","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"hQEfIZ3LnBtr85Pf6HWP","title":"Let element","pathname":"/v1-docs/templates/template-syntax/let-element","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"Y0cXPy4DIsngx8agclV2","title":"Binding engine internals","pathname":"/v1-docs/templates/template-syntax/binding-engine-internals","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"},{"label":"Template syntax"}]},{"id":"8YeuX9LP2Qnbgb5FvzBw","title":"Custom attributes","pathname":"/v1-docs/templates/custom-attributes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"XOu26kYog3iVWj7I0tUb","title":"Value converters (pipes)","pathname":"/v1-docs/templates/value-converters-pipes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"twJBmn9lfPiy4Tdt9huh","title":"Binding behaviors","pathname":"/v1-docs/templates/binding-behaviors","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"}]},{"id":"BFoDXlsmvoAIbrDqtgjC","title":"Form inputs","pathname":"/v1-docs/templates/form-inputs","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"NuvBKhT3WB34GQnJ2nbP","title":"CSS classes and styling","pathname":"/v1-docs/templates/css-classes-and-styling","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"oG4TLxeRKkvrSZnCQAkL","title":"List rendering (repeaters)","pathname":"/v1-docs/templates/list-rendering-repeaters","siteSpaceId":"sitesp_g3Wsf","description":"Aurelia's repeat.for feature is your go-to tool for handling arrays and maps efficiently. It's like JavaScript's for loop, but tailored for the view.","breadcrumbs":[{"label":"Templates"}]},{"id":"zZYkE8LH2c4OGY5aPsqX","title":"Conditional rendering","pathname":"/v1-docs/templates/conditional-rendering","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"PU46PhDLGOGA20AmUl0t","title":"HTML & SVG attributes","pathname":"/v1-docs/templates/html-and-svg-attributes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"0PL1RQUIsvTGlsTo9yAE","title":"The as-element (element aliasing)","pathname":"/v1-docs/templates/the-as-element-element-aliasing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Templates"}]},{"id":"2GX7TaNffanM30g3ll7H","title":"View Resource pipeline","pathname":"/v1-docs/templates/view-resource-pipeline","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"}]},{"id":"YFYOYviGCOkCiM2fifIm","title":"View and Compilation Spies","pathname":"/v1-docs/templates/view-and-compilation-spies","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"}]},{"id":"x5JvzDBkek63dWBRkWpK","title":"HTML behaviors","pathname":"/v1-docs/templates/html-behaviors","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Templates"}]},{"id":"dq7PBJ6qiFGf3c7DmtBc","title":"App configuration and startup","pathname":"/v1-docs/getting-to-know-aurelia/app-configuration-and-startup","siteSpaceId":"sitesp_g3Wsf","description":"How to get Aurelia started.","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"5zjCMEitSXvfKI6tG9AC","title":"Routing","pathname":"/v1-docs/getting-to-know-aurelia/routing","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"aBpd7BR8OxlSDmieqAnh","title":"Getting started","pathname":"/v1-docs/getting-to-know-aurelia/routing/getting-started","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"IbhsQqUWC8EzE5B45OoD","title":"Router configuration","pathname":"/v1-docs/getting-to-know-aurelia/routing/router-configuration","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"6rfV6rCzlssMdhuo39uQ","title":"Configuring routes","pathname":"/v1-docs/getting-to-know-aurelia/routing/configuring-routes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"4KbiR2mkmABRmEgnfFAf","title":"Viewports","pathname":"/v1-docs/getting-to-know-aurelia/routing/viewports","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"24amu44QJqIwc1UxJacu","title":"Layouts","pathname":"/v1-docs/getting-to-know-aurelia/routing/layouts","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"GjfkFUMzTdxG7QmEmlR7","title":"Redirecting routes","pathname":"/v1-docs/getting-to-know-aurelia/routing/redirecting-routes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"uNAJ2QpQdtnjRfFaFE7v","title":"View Swapping and Animation","pathname":"/v1-docs/getting-to-know-aurelia/routing/view-swapping-and-animation","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"yQsUZKGsqyOYhi7NdzXI","title":"Internationalizing Titles","pathname":"/v1-docs/getting-to-know-aurelia/routing/internationalizing-titles","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"gf5EKyvRISBm8EWPOwzP","title":"Fallback Routes","pathname":"/v1-docs/getting-to-know-aurelia/routing/fallback-routes","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"sw8hOVs5CvUDEGjLaxwS","title":"Navigating","pathname":"/v1-docs/getting-to-know-aurelia/routing/navigating","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"eYgmtUseQ0pxLVSH2AR1","title":"Lifecycle hooks","pathname":"/v1-docs/getting-to-know-aurelia/routing/lifecycle-hooks","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"nFF28mduJIHWXG7R3DAL","title":"Router pipelines (hooks)","pathname":"/v1-docs/getting-to-know-aurelia/routing/router-hooks","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"tou1w9V4s6DFg8N7VQAr","title":"Reusing an Existing View Model","pathname":"/v1-docs/getting-to-know-aurelia/routing/reusing-an-existing-view-model","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"Pxu35hEHFkMuzEz0ztbx","title":"Router events","pathname":"/v1-docs/getting-to-know-aurelia/routing/router-events","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"FE180sYeGKlxGOy5IACM","title":"Child routers","pathname":"/v1-docs/getting-to-know-aurelia/routing/child-routers","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"BYVZaOvbmdgedubQn3XF","title":"Handling links","pathname":"/v1-docs/getting-to-know-aurelia/routing/handling-links","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Routing"}]},{"id":"6OYcoFj32aSuEGoxbCk9","title":"Enhance","pathname":"/v1-docs/getting-to-know-aurelia/enhance","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"w1AktETXVPI6NwBwaszi","title":"Dynamic composition","pathname":"/v1-docs/getting-to-know-aurelia/dynamic-composition","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"4mFYtp2Ulb7nmT5n9QCT","title":"Observation","pathname":"/v1-docs/getting-to-know-aurelia/observation","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"GjBVaAlFnnjuLcMSEVI9","title":"Dependency injection (DI)","pathname":"/v1-docs/getting-to-know-aurelia/dependency-injection-di","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"nbU09JOc8m8cSbTadaAO","title":"Overview","pathname":"/v1-docs/getting-to-know-aurelia/dependency-injection-di/overview","siteSpaceId":"sitesp_g3Wsf","description":"Aurelia's Dependency Injection (DI) system is a powerful feature that promotes modularity, testability, and maintainability in your applications. This documentation provides a comprehensive guide to u","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Dependency injection (DI)"}]},{"id":"ligbAg3VHIBbLPElkWvW","title":"Injection","pathname":"/v1-docs/getting-to-know-aurelia/dependency-injection-di/injection","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Dependency injection (DI)"}]},{"id":"2Tkokr0Ty5PDxE8UNkY4","title":"Resolvers","pathname":"/v1-docs/getting-to-know-aurelia/dependency-injection-di/resolvers","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Dependency injection (DI)"}]},{"id":"1qH6HgIpZwsK4pG0ixZG","title":"Task queue","pathname":"/v1-docs/getting-to-know-aurelia/task-queue","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"W3Glqh4CxAxNawpj4hUG","title":"Event aggregator","pathname":"/v1-docs/getting-to-know-aurelia/event-aggregator","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"qAF3itYQYz2O5bbRGYZm","title":"Server side rendering","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"ryjveFv3M8LKPvOZ3okW","title":"Setup and installation","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/setup-and-installation","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"9wPXptYu0dt9j9Y7YLRx","title":"How it works","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/how-it-works","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"42he8Xx267IFvnHqaIF7","title":"Isomorphic code","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/isomorphic-code","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"fHZ3AuswPZEo5BW5Cdh4","title":"Middleware configuration","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/middleware-configuration","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"ymXjiaWFODTXuUgof8GO","title":"Memory management","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/memory-management","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"m0xzkpD1HEsQv05yZnMK","title":"Different entry points","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/different-entry-points","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"ancA1WfEX0TVxg9uQnO6","title":"404 pages","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/404-pages","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"KN6DyvBMbrCYx8lufbyH","title":"Caveats","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/caveats","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"RR4bA1wXnAS8WeHDbfA2","title":"Troubleshooting","pathname":"/v1-docs/getting-to-know-aurelia/server-side-rendering/troubleshooting","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"Server side rendering"}]},{"id":"JnhgUkqZRIqjJdX6yPJo","title":"CLI","pathname":"/v1-docs/getting-to-know-aurelia/cli","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"}]},{"id":"0TfiyQ5YB7FO8zKNpyhV","title":"Machine setup","pathname":"/v1-docs/getting-to-know-aurelia/cli/machine-setup","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"FD0Ys8zN3JRQe1hmKWES","title":"Creating a new project","pathname":"/v1-docs/getting-to-know-aurelia/cli/creating-a-new-project","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"8IuQvQCe1cNoFToxFgQe","title":"Running your app","pathname":"/v1-docs/getting-to-know-aurelia/cli/running-your-app","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"QM6Hxo96TIXfuth5Jh1l","title":"Environments","pathname":"/v1-docs/getting-to-know-aurelia/cli/environments","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"mwd821EBLsPR9Am8jPkV","title":"Building your app","pathname":"/v1-docs/getting-to-know-aurelia/cli/building-your-app","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"GWtKdLE2f67zcrza0jgG","title":"Generators","pathname":"/v1-docs/getting-to-know-aurelia/cli/generators","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"ahnV3St6BmlTdImscHVf","title":"Command reference","pathname":"/v1-docs/getting-to-know-aurelia/cli/command-reference","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"vuX2Bb7Vlu5ft3yg8VHH","title":"Configuration with aurelia.json","pathname":"/v1-docs/getting-to-know-aurelia/cli/configuration-with-aurelia-json","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"DBFB93cE1ZnY4h4xjSGq","title":"Webpack vs built-in bundler","pathname":"/v1-docs/getting-to-know-aurelia/cli/webpack-vs-built-in-bundler","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"8xkVqguvgLuiItR3Denr","title":"Gulp tasks","pathname":"/v1-docs/getting-to-know-aurelia/cli/gulp-tasks","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"P7ajPfT4Yvc5AGdCW4Ec","title":"Webpack","pathname":"/v1-docs/getting-to-know-aurelia/cli/webpack","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"OwB2g8ctDmtH7yJZ5crZ","title":"Built-in bundler","pathname":"/v1-docs/getting-to-know-aurelia/cli/built-in-bundler","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"Gq0vXNrW40QjtOOfvuRj","title":"Updating & migrating","pathname":"/v1-docs/getting-to-know-aurelia/cli/updating-and-migrating","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"eKpjMMCd4wx7Dpi9qIez","title":"Recipes & known issues","pathname":"/v1-docs/getting-to-know-aurelia/cli/recipes-and-known-issues","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"LJC5xpX60tqC8Inr2JGy","title":"Getting help","pathname":"/v1-docs/getting-to-know-aurelia/cli/getting-help","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Getting to know Aurelia"},{"label":"CLI"}]},{"id":"7kPYFSCfwhJ2VBgY6pYu","title":"Security","pathname":"/v1-docs/developer-guides/security","siteSpaceId":"sitesp_g3Wsf","description":"Learn how to build secure Aurelia applications with proper authentication, authorization, and security best practices for both client-side and server-side implementation.","breadcrumbs":[{"label":"Developer guides"}]},{"id":"UJ2v7aBeK9qoh14W1nPU","title":"Animation","pathname":"/v1-docs/developer-guides/animation","siteSpaceId":"sitesp_g3Wsf","description":"Animations bring dynamic visual interactions to your Aurelia applications, enhancing user experience by smoothly transitioning elements' styles over time.","breadcrumbs":[{"label":"Developer guides"}]},{"id":"Mkp1PwGyKiCDcT6sXjOW","title":"Testing","pathname":"/v1-docs/developer-guides/testing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"}]},{"id":"4XztmRdsraRXSp2u9Evl","title":"Unit Testing","pathname":"/v1-docs/developer-guides/testing/unit-testing","siteSpaceId":"sitesp_g3Wsf","description":"","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"}]},{"id":"ayGAS0cefKMgoFIjgHFp","title":"Testing Custom Elements","pathname":"/v1-docs/developer-guides/testing/unit-testing/testing-custom-elements","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"6Cu9ipSqTL7x9hgT99Af","title":"Testing Custom Attributes","pathname":"/v1-docs/developer-guides/testing/unit-testing/testing-custom-attributes","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"F4Z1zoxsklu4HTUQGQKO","title":"Testing Routing and Navigation","pathname":"/v1-docs/developer-guides/testing/unit-testing/testing-routing-and-navigation","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"Di7euEHly3LjlMotjkf8","title":"Advanced Testing","pathname":"/v1-docs/developer-guides/testing/unit-testing/advanced-testing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"zov8w6BNiy9VoXYLzGM3","title":"Helpful Properties, Functions, and Advanced Querying","pathname":"/v1-docs/developer-guides/testing/unit-testing/helpful-properties-functions-and-advanced-querying","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"0BAep1vVcbTxKRjOAmMv","title":"Dependency Injection Testing","pathname":"/v1-docs/developer-guides/testing/unit-testing/dependency-injection-testing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"V8fHRexDn9kQkpYLqp6p","title":"Testing Custom Value Converters and Binding Behaviors","pathname":"/v1-docs/developer-guides/testing/unit-testing/testing-custom-value-converters-and-binding-behaviors","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"32dktoY142eyVWP7hYil","title":"Internationalization (i18n) Testing","pathname":"/v1-docs/developer-guides/testing/unit-testing/internationalization-i18n-testing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"Unit Testing"}]},{"id":"PhUUdzja7RvOF8KqnSz0","title":"End-to-end testing","pathname":"/v1-docs/developer-guides/testing/end-to-end-testing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"}]},{"id":"Ef3T2nRf02q21FwYyEUW","title":"Getting started with Playwright","pathname":"/v1-docs/developer-guides/testing/end-to-end-testing/getting-started-with-playwright","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"End-to-end testing"}]},{"id":"tBPH5Qo2aHgXKebAIVeL","title":"Writing E2E tests","pathname":"/v1-docs/developer-guides/testing/end-to-end-testing/writing-e2e-tests","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"End-to-end testing"}]},{"id":"DnAjzU7qGKA9hpRF2Ppi","title":"Advanced Techniques","pathname":"/v1-docs/developer-guides/testing/end-to-end-testing/advanced-techniques","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Testing"},{"label":"End-to-end testing"}]},{"id":"038omPAFTn4C5CPoCDLu","title":"Logging","pathname":"/v1-docs/developer-guides/logging","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"}]},{"id":"vmIN6b4ouCIViGrKmYXH","title":"Building plugins","pathname":"/v1-docs/developer-guides/building-plugins","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"}]},{"id":"iDG4Hmst5M5IjLqCj0va","title":"Plugin Development","pathname":"/v1-docs/developer-guides/building-plugins/plugin-development","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Building plugins"}]},{"id":"PyYGsuVVrTdlWUqWPS2e","title":"Building and Publishing","pathname":"/v1-docs/developer-guides/building-plugins/building-and-publishing","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Building plugins"}]},{"id":"vDAFQs3FZ1AL5UEEgCND","title":"Advanced Plugin Techniques","pathname":"/v1-docs/developer-guides/building-plugins/advanced-plugin-techniques","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"},{"label":"Building plugins"}]},{"id":"AmQiRIAWwofjQO0zn9DV","title":"UI Virtualization","pathname":"/v1-docs/developer-guides/ui-virtualization","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"}]},{"id":"XYo5nvp2wLjAwpodIVEE","title":"Integrations","pathname":"/v1-docs/developer-guides/integrations","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Developer guides"}]},{"id":"0wxGJ8UDGe6TwXwxf1Hw","title":"Cheat sheet","pathname":"/v1-docs/developer-guides/cheat-sheet","siteSpaceId":"sitesp_g3Wsf","description":"Forgot the syntax for bindings? Need to know how to create a custom attribute? This article contains answers to questions like those as well as a bunch of quick snippets for common tasks..","breadcrumbs":[{"label":"Developer guides"}]},{"id":"AnLBsLVWsAflPQXjVMIc","title":"Validation","pathname":"/v1-docs/aurelia-packages/validation","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"xaXG6suiREj4kUQK8pjc","title":"i18n Internationalization","pathname":"/v1-docs/aurelia-packages/i18n-internationalization","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"o3AJ2ThmxgOBpOWNPYp9","title":"Dialogs","pathname":"/v1-docs/aurelia-packages/dialogs","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"oDQVq4vxg1mVE1Yhgf1s","title":"Fetch client","pathname":"/v1-docs/aurelia-packages/fetch-client","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"6YG3ZCbRHjfx2qkradh3","title":"HTTP client","pathname":"/v1-docs/aurelia-packages/http-client","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"xrMZ0q90DDCZhoHNfjKI","title":"Store","pathname":"/v1-docs/aurelia-packages/store","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"}]},{"id":"P5P4LlRdEXkVNyDiIScJ","title":"Configuring your app","pathname":"/v1-docs/aurelia-packages/store/configuring-your-app","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"4uARt7I0KKvWk5bjMnVp","title":"What is the State?","pathname":"/v1-docs/aurelia-packages/store/what-is-the-state","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"GHm7ZdM3OA7ulGqLN8t1","title":"Reasons for state management","pathname":"/v1-docs/aurelia-packages/store/reasons-for-state-management","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"4KhMbA2AjGQ04AqP4eUw","title":"Subscribing to the stream of states","pathname":"/v1-docs/aurelia-packages/store/subscribing-to-the-stream-of-states","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"Y0WykByKN6YUZrGtHwa6","title":"Subscribing with the connectTo decorator","pathname":"/v1-docs/aurelia-packages/store/subscribing-with-the-connectto-decorator","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"VbcYsmMcBsEhqyGjioJ4","title":"What are actions?","pathname":"/v1-docs/aurelia-packages/store/what-are-actions","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"F28ttqdOdkS6i3t43SGx","title":"Async actions","pathname":"/v1-docs/aurelia-packages/store/async-actions","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"PIWAD9vy67Hdgj7mVh9n","title":"Dispatching actions","pathname":"/v1-docs/aurelia-packages/store/dispatching-actions","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"sQuqtdbPFtfSvXD86Y7K","title":"Resetting the store to a specific state","pathname":"/v1-docs/aurelia-packages/store/resetting-the-store-to-a-specific-state","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"DJHQHMcn3Hts9IS82i3m","title":"Two-way binding and state management","pathname":"/v1-docs/aurelia-packages/store/two-way-binding-and-state-management","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"MrPcf81d0vIEAOCfh7iN","title":"Recording a navigable history of the stream of states","pathname":"/v1-docs/aurelia-packages/store/recording-a-navigable-history-of-the-stream-of-states","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"Qh8x62dlBmJ2fixmdUKw","title":"Making our app history-aware","pathname":"/v1-docs/aurelia-packages/store/making-our-app-history-aware","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"20vZdKvOvSxA9nubmp8d","title":"Navigating through history","pathname":"/v1-docs/aurelia-packages/store/navigating-through-history","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"oZ4hPlccbuwuj1eaVcvW","title":"Handling side-effects with middleware","pathname":"/v1-docs/aurelia-packages/store/handling-side-effects-with-middleware","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"mb3ErHzhTEqUZmfvfdWx","title":"Accessing the original (unmodified) state in a middleware","pathname":"/v1-docs/aurelia-packages/store/accessing-the-original-unmodified-state-in-a-middleware","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"cawvL5SHlcXWziojTY7Q","title":"Defining settings for middlewares","pathname":"/v1-docs/aurelia-packages/store/defining-settings-for-middlewares","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"A6AXFn3tUxO1NWyYYiDb","title":"Error Propagation with Middlewares","pathname":"/v1-docs/aurelia-packages/store/error-propagation-with-middlewares","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"cS2GBQBuJVS06qTdFBUs","title":"Default middlewares","pathname":"/v1-docs/aurelia-packages/store/default-middlewares","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"wDpz630ye29lX8oxBAdc","title":"Tracking overall performance","pathname":"/v1-docs/aurelia-packages/store/tracking-overall-performance","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"hXRvoU6d94htVOz9Aiuw","title":"Defining custom devToolsOptions","pathname":"/v1-docs/aurelia-packages/store/defining-custom-devtoolsoptions","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"8yGza85qpEVq5aJT5xk4","title":"Defining custom loglevels","pathname":"/v1-docs/aurelia-packages/store/defining-custom-loglevels","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"IWfDnAVlzjyzf3DKOX5r","title":"Debugging with the Redux devtools extension","pathname":"/v1-docs/aurelia-packages/store/debugging-with-the-redux-devtools-extension","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]},{"id":"3Ugjnnfo49ebZ9Bx1ZPM","title":"Comparison to other state management libraries","pathname":"/v1-docs/aurelia-packages/store/comparison-to-other-state-management-libraries","siteSpaceId":"sitesp_g3Wsf","breadcrumbs":[{"label":"Aurelia packages"},{"label":"Store"}]}]}