├── .all-contributorsrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .githooks
├── commit-msg
└── pre-commit
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── 01-bug-report.yml
│ └── 02-feature-request.yml
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── ci.yml
│ ├── release.yml
│ └── test-release.yml
├── .gitignore
├── .lintstagedrc
├── .node-version
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .vscode
├── extensions.json
└── settings.json
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── MAINTAINER.md
├── README.md
├── apps
├── .gitkeep
├── analog-app-e2e-cypress
│ ├── .eslintrc.json
│ ├── cypress.config.ts
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── e2e
│ │ │ ├── app.cy.ts
│ │ │ ├── cart.cy.ts
│ │ │ ├── newsletter.cy.ts
│ │ │ └── products.cy.ts
│ │ ├── fixtures
│ │ │ └── .gitkeep
│ │ └── support
│ │ │ ├── app.po.ts
│ │ │ ├── cart.po.ts
│ │ │ ├── commands.ts
│ │ │ ├── e2e.ts
│ │ │ ├── form.ts
│ │ │ ├── newsletter.po.ts
│ │ │ ├── phones.ts
│ │ │ ├── product-details.po.ts
│ │ │ ├── product-list.po.ts
│ │ │ └── product.ts
│ └── tsconfig.json
├── analog-app-e2e-playwright
│ ├── .eslintrc.json
│ ├── package.json
│ ├── project.json
│ ├── tests
│ │ ├── app.spec.ts
│ │ ├── cart.spec.ts
│ │ ├── fixtures
│ │ │ ├── cart.po.ts
│ │ │ ├── phones.ts
│ │ │ ├── products-details.po.ts
│ │ │ └── products-list.po.ts
│ │ └── products.spec.ts
│ └── vite.config.ts
├── analog-app
│ ├── .eslintrc.json
│ ├── error.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── project.json
│ ├── src
│ │ ├── app
│ │ │ ├── about.ts
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.server.ts
│ │ │ ├── app.config.ts
│ │ │ ├── cart.service.ts
│ │ │ ├── pages
│ │ │ │ ├── (auth).page.ts
│ │ │ │ ├── (auth)
│ │ │ │ │ └── sign-up.page.ts
│ │ │ │ ├── (home).page.ts
│ │ │ │ ├── (home).server.ts
│ │ │ │ ├── [...slug].page.ts
│ │ │ │ ├── [...slug].server.ts
│ │ │ │ ├── cart.page.ts
│ │ │ │ ├── client
│ │ │ │ │ └── (client).page.ts
│ │ │ │ ├── goodbye.page.analog
│ │ │ │ ├── newsletter.page.ts
│ │ │ │ ├── newsletter.server.ts
│ │ │ │ ├── package.page.ts
│ │ │ │ ├── products.[productId].page.ts
│ │ │ │ ├── products.[productId].server.ts
│ │ │ │ ├── search.page.ts
│ │ │ │ ├── search.server.ts
│ │ │ │ ├── server
│ │ │ │ │ └── (server).page.ts
│ │ │ │ └── shipping
│ │ │ │ │ ├── [...slug].page.ts
│ │ │ │ │ ├── [...slug].server.ts
│ │ │ │ │ ├── index.page.ts
│ │ │ │ │ ├── index.server.ts
│ │ │ │ │ ├── shipping.html
│ │ │ │ │ └── shipping.scss
│ │ │ ├── product-alerts
│ │ │ │ └── product-alerts.component.ts
│ │ │ └── products.ts
│ │ ├── main-cf.server.ts
│ │ ├── main.server.ts
│ │ ├── main.ts
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ └── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ └── shipping.json
│ │ ├── server
│ │ │ ├── components
│ │ │ │ ├── goodbye.ag
│ │ │ │ └── hello.ts
│ │ │ ├── middleware
│ │ │ │ └── redirect.ts
│ │ │ └── routes
│ │ │ │ └── api
│ │ │ │ └── v1
│ │ │ │ └── products.ts
│ │ ├── styles.css
│ │ ├── test-setup.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.editor.json
│ ├── tsconfig.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── analog-preset-e2e
│ ├── project.json
│ ├── tests
│ │ └── analog-preset.spec.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── astro-app-e2e-playwright
│ ├── .eslintrc.json
│ ├── package.json
│ ├── project.json
│ ├── tests
│ │ └── app.spec.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── astro-app
│ ├── .astro
│ │ └── settings.json
│ ├── .gitignore
│ ├── .npmrc
│ ├── .vscode
│ │ ├── extensions.json
│ │ └── launch.json
│ ├── README.md
│ ├── astro.config.mjs
│ ├── project.json
│ ├── public
│ │ └── favicon.svg
│ ├── src
│ │ ├── components
│ │ │ ├── Card.astro
│ │ │ ├── Instructions.tsx
│ │ │ ├── card.component.ts
│ │ │ └── todos.component.ts
│ │ ├── env.d.ts
│ │ ├── layouts
│ │ │ └── Layout.astro
│ │ └── pages
│ │ │ ├── index.astro
│ │ │ └── test.mdx
│ ├── tsconfig.app.json
│ └── tsconfig.json
├── blog-app-e2e-cypress
│ ├── .eslintrc.json
│ ├── cypress.config.ts
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── e2e
│ │ │ └── app.cy.ts
│ │ ├── fixtures
│ │ │ └── .gitkeep
│ │ └── support
│ │ │ ├── app.po.ts
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ └── tsconfig.json
├── blog-app
│ ├── index.html
│ ├── project.json
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.server.ts
│ │ │ ├── app.config.ts
│ │ │ ├── components
│ │ │ │ └── nav.component.ts
│ │ │ └── pages
│ │ │ │ ├── [...page-not-found].md
│ │ │ │ ├── about.md
│ │ │ │ ├── archived
│ │ │ │ ├── [slug].page.ts
│ │ │ │ ├── index.page.ts
│ │ │ │ ├── models.ts
│ │ │ │ └── resolvers.ts
│ │ │ │ ├── blog
│ │ │ │ ├── [slug].page.ts
│ │ │ │ ├── index.page.ts
│ │ │ │ ├── models.ts
│ │ │ │ └── resolvers.ts
│ │ │ │ ├── contact.md
│ │ │ │ └── index.page.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── analog.svg
│ │ │ └── angular-gradient.png
│ │ ├── content
│ │ │ ├── 2022-12-27-my-first-post.md
│ │ │ ├── 2022-12-31-my-second-post.md
│ │ │ └── archived
│ │ │ │ ├── 2022-01-08-post1-2024.md
│ │ │ │ └── 2022-01-10-post2-2024.md
│ │ ├── favicon.ico
│ │ ├── main.server.ts
│ │ ├── main.ts
│ │ ├── server
│ │ │ └── routes
│ │ │ │ ├── rss.xml.ts
│ │ │ │ └── v1
│ │ │ │ └── [...slug].ts
│ │ ├── styles.css
│ │ └── vite-env.d.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.editor.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── create-analog-e2e
│ ├── project.json
│ ├── tests
│ │ └── create-analog.spec.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── docs-app
│ ├── README.md
│ ├── babel.config.js
│ ├── blog
│ │ └── .gitkeep
│ ├── docs
│ │ ├── contributing.md
│ │ ├── contributors.mdx
│ │ ├── contributors.module.css
│ │ ├── experimental
│ │ │ └── sfc
│ │ │ │ └── index.md
│ │ ├── features
│ │ │ ├── api
│ │ │ │ ├── og-image-generation.md
│ │ │ │ ├── overview.md
│ │ │ │ └── websockets.md
│ │ │ ├── data-fetching
│ │ │ │ ├── overview.md
│ │ │ │ └── server-side-data-fetching.md
│ │ │ ├── deployment
│ │ │ │ ├── overview.md
│ │ │ │ └── providers.md
│ │ │ ├── generation
│ │ │ │ └── code-generation.md
│ │ │ ├── routing
│ │ │ │ ├── content.md
│ │ │ │ ├── metadata.md
│ │ │ │ ├── middleware.md
│ │ │ │ └── overview.md
│ │ │ ├── server
│ │ │ │ ├── server-side-rendering.md
│ │ │ │ └── static-site-generation.md
│ │ │ ├── testing
│ │ │ │ ├── overview.md
│ │ │ │ └── vitest.md
│ │ │ └── updating
│ │ │ │ └── overview.md
│ │ ├── getting-started.md
│ │ ├── guides
│ │ │ ├── compatibility.md
│ │ │ ├── forms.md
│ │ │ ├── libraries.md
│ │ │ └── migrating.md
│ │ ├── integrations
│ │ │ ├── angular-material
│ │ │ │ └── index.md
│ │ │ ├── ionic
│ │ │ │ └── index.md
│ │ │ ├── nx
│ │ │ │ └── index.md
│ │ │ └── storybook
│ │ │ │ └── index.md
│ │ ├── introduction.md
│ │ ├── packages
│ │ │ ├── astro-angular
│ │ │ │ └── overview.md
│ │ │ ├── create-analog
│ │ │ │ └── overview.md
│ │ │ ├── router
│ │ │ │ └── overview.md
│ │ │ ├── vite-plugin-angular
│ │ │ │ ├── css-preprocessors.md
│ │ │ │ └── overview.md
│ │ │ └── vite-plugin-nitro
│ │ │ │ └── overview.md
│ │ ├── sponsoring.mdx
│ │ └── support.md
│ ├── docusaurus.config.js
│ ├── i18n
│ │ ├── de
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ ├── current.json
│ │ │ │ └── current
│ │ │ │ │ ├── contributing.md
│ │ │ │ │ ├── contributors.mdx
│ │ │ │ │ ├── contributors.module.css
│ │ │ │ │ ├── features
│ │ │ │ │ ├── api
│ │ │ │ │ │ ├── og-image-generation.md
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── websockets.md
│ │ │ │ │ ├── data-fetching
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── server-side-data-fetching.md
│ │ │ │ │ ├── deployment
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── providers.md
│ │ │ │ │ ├── generation
│ │ │ │ │ │ └── code-generation.md
│ │ │ │ │ ├── routing
│ │ │ │ │ │ ├── content.md
│ │ │ │ │ │ ├── metadata.md
│ │ │ │ │ │ ├── middleware.md
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── server
│ │ │ │ │ │ ├── server-side-rendering.md
│ │ │ │ │ │ └── static-site-generation.md
│ │ │ │ │ ├── testing
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── vitest.md
│ │ │ │ │ └── updating
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── getting-started.md
│ │ │ │ │ ├── guides
│ │ │ │ │ ├── compatibility.md
│ │ │ │ │ └── migrating.md
│ │ │ │ │ ├── integrations
│ │ │ │ │ ├── angular-material
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── ionic
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── nx
│ │ │ │ │ │ └── index.md
│ │ │ │ │ └── storybook
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── introduction.md
│ │ │ │ │ ├── packages
│ │ │ │ │ ├── astro-angular
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── create-analog
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── router
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ └── vite-plugin-angular
│ │ │ │ │ │ ├── css-preprocessors.md
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── sponsoring.mdx
│ │ │ │ │ └── support.md
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ ├── es
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ ├── current.json
│ │ │ │ └── current
│ │ │ │ │ ├── contributing.md
│ │ │ │ │ ├── contributors.mdx
│ │ │ │ │ ├── contributors.module.css
│ │ │ │ │ ├── experimental
│ │ │ │ │ └── sfc
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── features
│ │ │ │ │ ├── api
│ │ │ │ │ │ ├── og-image-generation.md
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── data-fetching
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── server-side-data-fetching.md
│ │ │ │ │ ├── deployment
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── providers.md
│ │ │ │ │ ├── generation
│ │ │ │ │ │ └── code-generation.md
│ │ │ │ │ ├── routing
│ │ │ │ │ │ ├── content.md
│ │ │ │ │ │ ├── metadata.md
│ │ │ │ │ │ ├── middleware.md
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── server
│ │ │ │ │ │ ├── server-side-rendering.md
│ │ │ │ │ │ └── static-site-generation.md
│ │ │ │ │ ├── testing
│ │ │ │ │ │ ├── overview.md
│ │ │ │ │ │ └── vitest.md
│ │ │ │ │ └── updating
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── getting-started.md
│ │ │ │ │ ├── guides
│ │ │ │ │ ├── compatibility.md
│ │ │ │ │ ├── forms.md
│ │ │ │ │ └── migrating.md
│ │ │ │ │ ├── integrations
│ │ │ │ │ ├── angular-material
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── ionic
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── nx
│ │ │ │ │ │ └── index.md
│ │ │ │ │ └── storybook
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── introduction.md
│ │ │ │ │ ├── packages
│ │ │ │ │ ├── astro-angular
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── create-analog
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── router
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ └── vite-plugin-angular
│ │ │ │ │ │ ├── css-preprocessors.md
│ │ │ │ │ │ └── overview.md
│ │ │ │ │ ├── sponsoring.mdx
│ │ │ │ │ └── support.md
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ ├── fr
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ └── current.json
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ ├── ko
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ └── current.json
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ ├── pt-br
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ └── current.json
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ ├── tr
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ │ └── current.json
│ │ │ └── docusaurus-theme-classic
│ │ │ │ ├── footer.json
│ │ │ │ └── navbar.json
│ │ └── zh-hans
│ │ │ ├── code.json
│ │ │ ├── docusaurus-plugin-content-docs
│ │ │ ├── current.json
│ │ │ └── current
│ │ │ │ ├── contributors.mdx
│ │ │ │ ├── contributors.module.css
│ │ │ │ ├── experimental
│ │ │ │ └── sfc
│ │ │ │ │ └── index.md
│ │ │ │ ├── features
│ │ │ │ ├── api
│ │ │ │ │ ├── og-image-generation.md
│ │ │ │ │ ├── overview.md
│ │ │ │ │ └── websockets.md
│ │ │ │ ├── data-fetching
│ │ │ │ │ ├── overview.md
│ │ │ │ │ └── server-side-data-fetching.md
│ │ │ │ ├── deployment
│ │ │ │ │ ├── overview.md
│ │ │ │ │ └── providers.md
│ │ │ │ ├── generation
│ │ │ │ │ └── code-generation.md
│ │ │ │ ├── routing
│ │ │ │ │ ├── content.md
│ │ │ │ │ ├── metadata.md
│ │ │ │ │ ├── middleware.md
│ │ │ │ │ └── overview.md
│ │ │ │ ├── server
│ │ │ │ │ ├── server-side-rendering.md
│ │ │ │ │ └── static-site-generation.md
│ │ │ │ ├── testing
│ │ │ │ │ ├── overview.md
│ │ │ │ │ └── vitest.md
│ │ │ │ └── updating
│ │ │ │ │ └── overview.md
│ │ │ │ ├── getting-started.md
│ │ │ │ ├── guides
│ │ │ │ ├── compatibility.md
│ │ │ │ ├── forms.md
│ │ │ │ └── migrating.md
│ │ │ │ ├── integrations
│ │ │ │ ├── angular-material
│ │ │ │ │ └── index.md
│ │ │ │ ├── ionic
│ │ │ │ │ └── index.md
│ │ │ │ ├── nx
│ │ │ │ │ └── index.md
│ │ │ │ └── storybook
│ │ │ │ │ └── index.md
│ │ │ │ ├── introduction.md
│ │ │ │ ├── packages
│ │ │ │ ├── astro-angular
│ │ │ │ │ └── overview.md
│ │ │ │ ├── create-analog
│ │ │ │ │ └── overview.md
│ │ │ │ ├── vite-plugin-angular
│ │ │ │ │ ├── css-preprocessors.md
│ │ │ │ │ └── overview.md
│ │ │ │ └── vite-plugin-nitro
│ │ │ │ │ └── overview.md
│ │ │ │ ├── sponsoring.mdx
│ │ │ │ └── support.md
│ │ │ └── docusaurus-theme-classic
│ │ │ ├── footer.json
│ │ │ └── navbar.json
│ ├── package.json
│ ├── project.json
│ ├── sidebars.js
│ ├── src
│ │ ├── components
│ │ │ ├── HomepageFeatures
│ │ │ │ ├── index.tsx
│ │ │ │ └── styles.module.css
│ │ │ └── StackblitzButton
│ │ │ │ ├── index.tsx
│ │ │ │ └── styles.module.css
│ │ ├── css
│ │ │ └── custom.css
│ │ └── pages
│ │ │ ├── index.module.css
│ │ │ └── index.tsx
│ ├── static
│ │ ├── .nojekyll
│ │ ├── img
│ │ │ ├── analog-banner.png
│ │ │ ├── debug-routes.png
│ │ │ ├── favicon.ico
│ │ │ └── logos
│ │ │ │ ├── analog-logo.svg
│ │ │ │ ├── angular-gradient.png
│ │ │ │ ├── angular-logo.svg
│ │ │ │ ├── code.build-1x1.svg
│ │ │ │ ├── github-logo.svg
│ │ │ │ ├── github-sponsors-logo.svg
│ │ │ │ ├── house-of-angular.png
│ │ │ │ ├── mirahi-logo.svg
│ │ │ │ ├── nx-logo.dark.svg
│ │ │ │ ├── nx-logo.light.svg
│ │ │ │ ├── snyder-logo.dark.svg
│ │ │ │ ├── snyder-logo.light.svg
│ │ │ │ ├── stackblitz-logo.svg
│ │ │ │ ├── vite-logo.svg
│ │ │ │ └── zerops-logo.svg
│ │ └── new
│ │ │ └── index.html
│ └── tsconfig.json
├── ng-app
│ ├── .eslintrc.json
│ ├── index.html
│ ├── project.json
│ ├── src
│ │ ├── app
│ │ │ ├── another-one.ag
│ │ │ ├── app.component.ag
│ │ │ ├── app.config.ts
│ │ │ ├── export-stuff.ag
│ │ │ ├── external
│ │ │ │ ├── external-two.css
│ │ │ │ ├── external.ag
│ │ │ │ ├── external.css
│ │ │ │ └── external.html
│ │ │ ├── goodbye.ag
│ │ │ ├── hello.ag
│ │ │ ├── hello.ag.spec.ts
│ │ │ ├── hello.ts
│ │ │ ├── highlight.ag
│ │ │ ├── models.ts
│ │ │ ├── my-components.ts
│ │ │ ├── my.service.ts
│ │ │ └── pages
│ │ │ │ ├── (home).page.ag
│ │ │ │ ├── about.page.ag
│ │ │ │ ├── another.page.ag
│ │ │ │ ├── posts.[slug].page.ag
│ │ │ │ └── posts.page.ag
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── content
│ │ │ └── post.agx
│ │ ├── favicon.ico
│ │ ├── main.ts
│ │ ├── styles.css
│ │ ├── test-setup.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.editor.json
│ ├── tsconfig.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── nx-plugin-e2e
│ ├── project.json
│ ├── tests
│ │ └── nx-plugin.spec.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── trpc-app-e2e-playwright
│ ├── .eslintrc.json
│ ├── project.json
│ ├── tests
│ │ ├── app.spec.ts
│ │ └── fixtures
│ │ │ ├── notes.po.ts
│ │ │ └── notes.ts
│ ├── tsconfig.json
│ └── vite.config.ts
└── trpc-app
│ ├── .eslintrc.json
│ ├── favicon.ico
│ ├── index.html
│ ├── postcss.config.cjs
│ ├── project.json
│ ├── src
│ ├── app.config.server.ts
│ ├── app.config.ts
│ ├── app
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── pages
│ │ │ └── index.page.ts
│ ├── main.server.ts
│ ├── main.ts
│ ├── note.ts
│ ├── public
│ │ └── assets
│ │ │ ├── .gitkeep
│ │ │ └── spartan.svg
│ ├── server
│ │ ├── routes
│ │ │ ├── health.ts
│ │ │ └── trpc
│ │ │ │ └── [trpc].ts
│ │ └── trpc
│ │ │ ├── context.ts
│ │ │ ├── routers
│ │ │ ├── index.ts
│ │ │ └── notes.ts
│ │ │ └── trpc.ts
│ ├── styles.css
│ ├── test-setup.ts
│ ├── trpc-client.ts
│ └── vite-env.d.ts
│ ├── tailwind.config.cjs
│ ├── tsconfig.app.json
│ ├── tsconfig.editor.json
│ ├── tsconfig.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── commitlint.config.cjs
├── decorate-angular-cli.js
├── jest.config.ts
├── jest.preset.js
├── libs
├── card
│ ├── .eslintrc.json
│ ├── README.md
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── autocomplete
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── autocomplete.component.spec.ts.snap
│ │ │ │ ├── autocomplete.component.html
│ │ │ │ ├── autocomplete.component.scss
│ │ │ │ ├── autocomplete.component.spec.ts
│ │ │ │ ├── autocomplete.component.ts
│ │ │ │ └── index.ts
│ │ │ ├── card
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── card.component.spec.ts.snap
│ │ │ │ ├── card.component.css
│ │ │ │ ├── card.component.html
│ │ │ │ ├── card.component.spec.ts
│ │ │ │ └── card.component.ts
│ │ │ └── card2
│ │ │ │ ├── __snapshots__
│ │ │ │ └── card.component.spec.ts.snap
│ │ │ │ ├── card.component.css
│ │ │ │ ├── card.component.html
│ │ │ │ ├── card.component.spec.ts
│ │ │ │ └── card.component.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── my-package
│ ├── .eslintrc.json
│ ├── README.md
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ └── my-package
│ │ │ │ ├── my-package.component.css
│ │ │ │ ├── my-package.component.html
│ │ │ │ ├── my-package.component.spec.ts
│ │ │ │ └── my-package.component.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── shared
│ └── feature
│ │ ├── .eslintrc.json
│ │ ├── README.md
│ │ ├── project.json
│ │ ├── src
│ │ ├── api
│ │ │ └── routes
│ │ │ │ └── api
│ │ │ │ └── ping.ts
│ │ ├── content
│ │ │ ├── test.agx
│ │ │ └── test.md
│ │ ├── index.ts
│ │ ├── pages
│ │ │ ├── about-me.page.ts
│ │ │ ├── about-you.page.analog
│ │ │ ├── test.page.ts
│ │ │ └── test.server.ts
│ │ └── test-setup.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.lib.json
│ │ └── tsconfig.spec.json
└── top-bar
│ ├── .eslintrc.json
│ ├── README.md
│ ├── project.json
│ ├── src
│ ├── index.ts
│ ├── lib
│ │ └── top-bar
│ │ │ ├── template.html
│ │ │ ├── top-bar.component.spec.ts
│ │ │ └── top-bar.component.ts
│ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── nx.json
├── package.json
├── packages
├── .gitkeep
├── astro-angular
│ ├── .eslintrc.json
│ ├── README.md
│ ├── migrations
│ │ └── migration.json
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── client.ts
│ │ ├── index.spec.mts
│ │ ├── index.ts
│ │ ├── server.ts
│ │ ├── test-setup.ts
│ │ ├── utils.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── content-plugin
│ ├── .eslintrc.json
│ ├── README.md
│ ├── migrations.json
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ └── migrations
│ │ │ ├── update-markdown-renderer-feature
│ │ │ ├── compat.ts
│ │ │ ├── update-markdown-renderer-feature.spec.ts
│ │ │ └── update-markdown-renderer-feature.ts
│ │ │ └── update-markdown-version
│ │ │ ├── compat.ts
│ │ │ ├── update-markdown-version.spec.ts
│ │ │ └── update-markdown-version.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── content
│ ├── .eslintrc.json
│ ├── README.md
│ ├── ng-package.json
│ ├── og
│ │ ├── README.md
│ │ ├── ng-package.json
│ │ └── src
│ │ │ ├── index.ts
│ │ │ └── lib
│ │ │ ├── og.ts
│ │ │ └── options.ts
│ ├── package.json
│ ├── prism-highlighter
│ │ ├── README.md
│ │ ├── ng-package.json
│ │ └── src
│ │ │ ├── index.ts
│ │ │ └── lib
│ │ │ ├── prism-highlighter.ts
│ │ │ └── prism
│ │ │ └── angular.js
│ ├── project.json
│ ├── shiki-highlighter
│ │ ├── README.md
│ │ ├── ng-package.json
│ │ └── src
│ │ │ └── index.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── LICENSE.scully.md
│ │ │ ├── anchor-navigation.directive.spec.ts
│ │ │ ├── anchor-navigation.directive.ts
│ │ │ ├── content-file.ts
│ │ │ ├── content-files-list-token.spec.ts
│ │ │ ├── content-files-list-token.ts
│ │ │ ├── content-files-token.ts
│ │ │ ├── content-renderer.ts
│ │ │ ├── content.spec.ts
│ │ │ ├── content.ts
│ │ │ ├── get-content-files.ts
│ │ │ ├── inject-content-files.spec.ts
│ │ │ ├── inject-content-files.ts
│ │ │ ├── markdown-content-renderer.service.spec.ts
│ │ │ ├── markdown-content-renderer.service.ts
│ │ │ ├── markdown-route.component.ts
│ │ │ ├── markdown.component.ts
│ │ │ ├── marked-content-highlighter.ts
│ │ │ ├── marked-setup.service.ts
│ │ │ ├── parse-raw-content-file.ts
│ │ │ ├── provide-content.ts
│ │ │ ├── render-task.service.ts
│ │ │ └── utils
│ │ │ │ └── zone-wait-for.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── create-analog
│ ├── .gitignore
│ ├── .npmignore
│ ├── LICENSE
│ ├── README.md
│ ├── __tests__
│ │ └── cli.spec.ts
│ ├── files
│ │ ├── analog-env.d.ts
│ │ └── styles.css
│ ├── index.js
│ ├── package.json
│ ├── project.json
│ ├── template-angular-v16
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ └── pages
│ │ │ │ │ └── index.page.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── analog.svg
│ │ │ │ └── vite.svg
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-angular-v17
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ └── pages
│ │ │ │ │ └── index.page.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── analog.svg
│ │ │ │ └── vite.svg
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-angular-v18
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ ├── analog.svg
│ │ │ ├── favicon.ico
│ │ │ └── vite.svg
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app-root.ag
│ │ │ │ ├── app-root.spec.ts
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ └── pages
│ │ │ │ │ ├── index.page.ag
│ │ │ │ │ └── index.page.ts
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test-setup.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-angular-v19
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ ├── analog.svg
│ │ │ ├── favicon.ico
│ │ │ └── vite.svg
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app-root.ag
│ │ │ │ ├── app-root.spec.ts
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ └── pages
│ │ │ │ │ ├── index.page.ag
│ │ │ │ │ └── index.page.ts
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── api
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test-setup.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-blog
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ ├── analog.svg
│ │ │ ├── favicon.ico
│ │ │ └── vite.svg
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app-root.ag
│ │ │ │ ├── app-root.spec.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.spec.ts
│ │ │ │ ├── app.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── blog
│ │ │ │ │ │ ├── [slug].page.ag
│ │ │ │ │ │ ├── [slug].page.ts
│ │ │ │ │ │ ├── index.page.ag
│ │ │ │ │ │ └── index.page.ts
│ │ │ │ │ └── index.page.ts
│ │ │ │ └── post-attributes.ts
│ │ │ ├── content
│ │ │ │ └── example-post.md
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── api
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test-setup.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-latest
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ ├── analog.svg
│ │ │ ├── favicon.ico
│ │ │ └── vite.svg
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app-root.ag
│ │ │ │ ├── app-root.spec.ts
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.spec.ts
│ │ │ │ ├── app.ts
│ │ │ │ └── pages
│ │ │ │ │ ├── analog-welcome.ts
│ │ │ │ │ ├── index.page.ag
│ │ │ │ │ └── index.page.ts
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── server
│ │ │ │ └── routes
│ │ │ │ │ └── api
│ │ │ │ │ └── v1
│ │ │ │ │ └── hello.ts
│ │ │ ├── styles.css
│ │ │ ├── test-setup.ts
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.spec.json
│ │ └── vite.config.ts
│ ├── template-minimal
│ │ ├── .editorconfig
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── angular.json
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── .gitkeep
│ │ │ └── favicon.ico
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app-root.ag
│ │ │ │ ├── app.config.server.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.ts
│ │ │ │ └── pages
│ │ │ │ │ ├── index.page.ag
│ │ │ │ │ └── index.page.ts
│ │ │ ├── main.server.ts
│ │ │ ├── main.ts
│ │ │ ├── styles.css
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── nx-plugin
│ ├── .babelrc
│ ├── .eslintrc.json
│ ├── README.md
│ ├── executors.json
│ ├── generators.json
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── executors
│ │ │ ├── vite-dev-server
│ │ │ │ ├── compat.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ ├── schema.json
│ │ │ │ └── vite-dev-server.impl.ts
│ │ │ ├── vite
│ │ │ │ ├── compat.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ ├── schema.json
│ │ │ │ └── vite.impl.ts
│ │ │ └── vitest
│ │ │ │ ├── compat.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ ├── schema.json
│ │ │ │ └── vitest.impl.ts
│ │ ├── generators
│ │ │ ├── app
│ │ │ │ ├── compat.ts
│ │ │ │ ├── files
│ │ │ │ │ ├── index-page
│ │ │ │ │ │ └── src
│ │ │ │ │ │ │ └── app
│ │ │ │ │ │ │ └── pages
│ │ │ │ │ │ │ └── (home).page.ts__template__
│ │ │ │ │ ├── root
│ │ │ │ │ │ └── tsconfig.base.json
│ │ │ │ │ ├── tailwind
│ │ │ │ │ │ ├── v2
│ │ │ │ │ │ │ ├── postcss.config.cjs__template__
│ │ │ │ │ │ │ └── tailwind.config.cjs__template__
│ │ │ │ │ │ └── v3
│ │ │ │ │ │ │ ├── postcss.config.cjs__template__
│ │ │ │ │ │ │ └── tailwind.config.ts__template__
│ │ │ │ │ ├── template-angular-v15
│ │ │ │ │ │ ├── .eslintrc.json__template__
│ │ │ │ │ │ ├── index.html__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ └── app.component.ts__template__
│ │ │ │ │ │ │ ├── favicon.ico__template__
│ │ │ │ │ │ │ ├── main.providers.ts__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ │ └── assets
│ │ │ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ │ │ ├── analog.svg__template__
│ │ │ │ │ │ │ │ │ └── vite.svg__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── template-angular-v16
│ │ │ │ │ │ ├── .eslintrc.json__template__
│ │ │ │ │ │ ├── index.html__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ ├── app.component.ts__template__
│ │ │ │ │ │ │ │ ├── app.config.server.ts__template__
│ │ │ │ │ │ │ │ └── app.config.ts__template__
│ │ │ │ │ │ │ ├── favicon.ico__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ │ └── assets
│ │ │ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ │ │ └── analog.svg__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── template-angular-v17
│ │ │ │ │ │ ├── .eslintrc.json__template__
│ │ │ │ │ │ ├── index.html__template__
│ │ │ │ │ │ ├── package.json__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ ├── app.component.ts__template__
│ │ │ │ │ │ │ │ ├── app.config.server.ts__template__
│ │ │ │ │ │ │ │ └── app.config.ts__template__
│ │ │ │ │ │ │ ├── favicon.ico__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ │ └── assets
│ │ │ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ │ │ └── analog.svg__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── template-angular-v18
│ │ │ │ │ │ ├── .eslintrc.json__template__
│ │ │ │ │ │ ├── index.html__template__
│ │ │ │ │ │ ├── package.json__template__
│ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ ├── analog.svg__template__
│ │ │ │ │ │ │ └── favicon.ico__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ ├── app.component.ts__template__
│ │ │ │ │ │ │ │ ├── app.config.server.ts__template__
│ │ │ │ │ │ │ │ └── app.config.ts__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── api
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── template-angular-v19
│ │ │ │ │ │ ├── index.html__template__
│ │ │ │ │ │ ├── package.json__template__
│ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ ├── analog.svg__template__
│ │ │ │ │ │ │ └── favicon.ico__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ ├── app.component.ts__template__
│ │ │ │ │ │ │ │ ├── app.config.server.ts__template__
│ │ │ │ │ │ │ │ └── app.config.ts__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── api
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── template-angular
│ │ │ │ │ │ ├── package.json__template__
│ │ │ │ │ │ ├── public
│ │ │ │ │ │ │ ├── .gitkeep__template__
│ │ │ │ │ │ │ ├── analog.svg__template__
│ │ │ │ │ │ │ └── favicon.ico__template__
│ │ │ │ │ │ ├── src
│ │ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ │ ├── app.component.spec.ts__template__
│ │ │ │ │ │ │ │ ├── app.component.ts__template__
│ │ │ │ │ │ │ │ ├── app.config.server.ts__template__
│ │ │ │ │ │ │ │ └── app.config.ts__template__
│ │ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ │ ├── main.ts__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ │ │ └── api
│ │ │ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ │ │ ├── styles.css__template__
│ │ │ │ │ │ │ ├── test-setup.ts__template__
│ │ │ │ │ │ │ └── vite-env.d.ts__template__
│ │ │ │ │ │ ├── tsconfig.app.json__template__
│ │ │ │ │ │ ├── tsconfig.editor.json__template__
│ │ │ │ │ │ ├── tsconfig.json__template__
│ │ │ │ │ │ ├── tsconfig.spec.json__template__
│ │ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ │ ├── trpc
│ │ │ │ │ │ └── src
│ │ │ │ │ │ │ ├── note.ts__template__
│ │ │ │ │ │ │ ├── server
│ │ │ │ │ │ │ ├── routes
│ │ │ │ │ │ │ │ └── api
│ │ │ │ │ │ │ │ │ └── trpc
│ │ │ │ │ │ │ │ │ └── [trpc].ts__template__
│ │ │ │ │ │ │ └── trpc
│ │ │ │ │ │ │ │ ├── context.ts__template__
│ │ │ │ │ │ │ │ ├── routers
│ │ │ │ │ │ │ │ ├── index.ts__template__
│ │ │ │ │ │ │ │ └── notes.ts__template__
│ │ │ │ │ │ │ │ └── trpc.ts__template__
│ │ │ │ │ │ │ └── trpc-client.ts__template__
│ │ │ │ │ └── welcome-components
│ │ │ │ │ │ ├── css-trpc
│ │ │ │ │ │ └── src
│ │ │ │ │ │ │ └── app
│ │ │ │ │ │ │ └── pages
│ │ │ │ │ │ │ └── analog-welcome.component.ts__template__
│ │ │ │ │ │ ├── css
│ │ │ │ │ │ └── src
│ │ │ │ │ │ │ └── app
│ │ │ │ │ │ │ └── pages
│ │ │ │ │ │ │ └── analog-welcome.component.ts__template__
│ │ │ │ │ │ ├── tailwind-trpc
│ │ │ │ │ │ └── src
│ │ │ │ │ │ │ └── app
│ │ │ │ │ │ │ └── pages
│ │ │ │ │ │ │ └── analog-welcome.component.ts__template__
│ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ └── src
│ │ │ │ │ │ └── app
│ │ │ │ │ │ └── pages
│ │ │ │ │ │ └── analog-welcome.component.ts__template__
│ │ │ │ ├── generator.spec.ts
│ │ │ │ ├── generator.ts
│ │ │ │ ├── lib
│ │ │ │ │ ├── add-analog-dependencies.ts
│ │ │ │ │ ├── add-analog-project-config.ts
│ │ │ │ │ ├── add-angular-app.ts
│ │ │ │ │ ├── add-eslint.ts
│ │ │ │ │ ├── add-files.ts
│ │ │ │ │ ├── add-home-page.ts
│ │ │ │ │ ├── add-tailwind-config.ts
│ │ │ │ │ ├── add-tailwind-helpers.ts
│ │ │ │ │ ├── add-trpc.ts
│ │ │ │ │ ├── add-vite-plugin.ts
│ │ │ │ │ ├── cleanup-files.ts
│ │ │ │ │ └── initialize-analog-workspace.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ ├── schema.json
│ │ │ │ ├── versions.ts
│ │ │ │ └── versions
│ │ │ │ │ ├── dependencies.ts
│ │ │ │ │ ├── dev-dependencies.ts
│ │ │ │ │ ├── minimum-supported-versions.ts
│ │ │ │ │ ├── nx-dependencies.ts
│ │ │ │ │ ├── nx_15_X
│ │ │ │ │ └── versions.ts
│ │ │ │ │ ├── nx_16_X
│ │ │ │ │ └── versions.ts
│ │ │ │ │ ├── nx_17_X
│ │ │ │ │ └── versions.ts
│ │ │ │ │ ├── nx_18_X
│ │ │ │ │ └── versions.ts
│ │ │ │ │ ├── tailwind-dependencies.ts
│ │ │ │ │ └── trpc-dependencies.ts
│ │ │ ├── init
│ │ │ │ ├── compat.ts
│ │ │ │ ├── files
│ │ │ │ │ ├── src
│ │ │ │ │ │ ├── app
│ │ │ │ │ │ │ └── app.config.server.ts__template__
│ │ │ │ │ │ ├── main.server.ts__template__
│ │ │ │ │ │ └── server
│ │ │ │ │ │ │ └── routes
│ │ │ │ │ │ │ └── api
│ │ │ │ │ │ │ └── v1
│ │ │ │ │ │ │ └── hello.ts__template__
│ │ │ │ │ └── vite.config.ts__template__
│ │ │ │ ├── generator.ts
│ │ │ │ ├── lib
│ │ │ │ │ ├── add-analog-dependencies.ts
│ │ │ │ │ ├── update-app-tsconfig.ts
│ │ │ │ │ ├── update-build-target.ts
│ │ │ │ │ ├── update-git-ignore.ts
│ │ │ │ │ ├── update-index-html.ts
│ │ │ │ │ ├── update-main.ts
│ │ │ │ │ ├── update-package-json.ts
│ │ │ │ │ ├── update-serve-target.ts
│ │ │ │ │ ├── update-test-target.ts
│ │ │ │ │ └── update-test-tsconfig.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ ├── schema.json
│ │ │ │ └── test-files
│ │ │ │ │ └── src
│ │ │ │ │ └── test-setup.ts__template__
│ │ │ ├── page
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── generator.spec.ts.snap
│ │ │ │ ├── files
│ │ │ │ │ └── __fileName__.page.ts__template__
│ │ │ │ ├── generator.spec.ts
│ │ │ │ ├── generator.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ └── schema.json
│ │ │ ├── preset
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── generator.spec.ts.snap
│ │ │ │ ├── generator.spec.ts
│ │ │ │ ├── generator.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ └── schema.json
│ │ │ └── setup-vitest
│ │ │ │ ├── compat.ts
│ │ │ │ ├── files
│ │ │ │ ├── src
│ │ │ │ │ └── test-setup.ts__template__
│ │ │ │ └── vite.config.mts__template__
│ │ │ │ ├── generator.spec.ts
│ │ │ │ ├── generator.ts
│ │ │ │ ├── lib
│ │ │ │ ├── add-analog-dependencies.ts
│ │ │ │ ├── update-test-target.ts
│ │ │ │ └── update-tsconfig.ts
│ │ │ │ ├── schema.d.ts
│ │ │ │ └── schema.json
│ │ ├── index.ts
│ │ └── utils
│ │ │ ├── version-utils.ts
│ │ │ └── versions
│ │ │ ├── dependencies.ts
│ │ │ ├── dev-dependencies.ts
│ │ │ ├── ng_15_X
│ │ │ └── versions.ts
│ │ │ ├── ng_16_X
│ │ │ └── versions.ts
│ │ │ ├── ng_17_X
│ │ │ └── versions.ts
│ │ │ ├── ng_18_X
│ │ │ └── versions.ts
│ │ │ └── ng_19_X
│ │ │ └── versions.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── platform
│ ├── .eslintrc.json
│ ├── README.md
│ ├── migrations
│ │ └── migration.json
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── clear-client-page-endpoint.ts
│ │ │ ├── content-plugin.spec.ts
│ │ │ ├── content-plugin.ts
│ │ │ ├── content
│ │ │ │ ├── marked
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── marked-content-highlighter.ts
│ │ │ │ │ └── marked-setup.service.ts
│ │ │ │ ├── prism
│ │ │ │ │ ├── angular.js
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options.ts
│ │ │ │ │ └── prism-highlighter.ts
│ │ │ │ └── shiki
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options.ts
│ │ │ │ │ └── shiki-highlighter.ts
│ │ │ ├── deps-plugin.ts
│ │ │ ├── options.ts
│ │ │ ├── platform-plugin.spec.ts
│ │ │ ├── platform-plugin.ts
│ │ │ ├── router-plugin.ts
│ │ │ └── ssr
│ │ │ │ ├── inject-html-plugin.ts
│ │ │ │ ├── ssr-build-plugin.ts
│ │ │ │ └── ssr-xhr-plugin.ts
│ │ ├── server-mode-plugin.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── router
│ ├── .eslintrc.json
│ ├── LICENSE
│ ├── README.md
│ ├── migrations
│ │ └── migration.json
│ ├── ng-package.json
│ ├── package.json
│ ├── project.json
│ ├── server
│ │ ├── actions
│ │ │ ├── ng-package.json
│ │ │ └── src
│ │ │ │ ├── actions.ts
│ │ │ │ └── index.ts
│ │ ├── ng-package.json
│ │ └── src
│ │ │ ├── index.ts
│ │ │ ├── provide-server-context.ts
│ │ │ ├── render.ts
│ │ │ ├── server-component-render.ts
│ │ │ └── tokens.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── cache-key.ts
│ │ │ ├── constants.ts
│ │ │ ├── cookie-interceptor.ts
│ │ │ ├── debug
│ │ │ │ ├── debug.page.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── routes.ts
│ │ │ ├── define-route.ts
│ │ │ ├── endpoints.ts
│ │ │ ├── form-action.directive.ts
│ │ │ ├── get-load-resolver.ts
│ │ │ ├── inject-load.ts
│ │ │ ├── inject-route-endpoint-url.ts
│ │ │ ├── markdown-helpers.ts
│ │ │ ├── meta-tags.spec.ts
│ │ │ ├── meta-tags.ts
│ │ │ ├── models.ts
│ │ │ ├── provide-file-router.ts
│ │ │ ├── request-context.ts
│ │ │ ├── route-config.ts
│ │ │ ├── route-types.ts
│ │ │ ├── routes.spec.ts
│ │ │ ├── routes.ts
│ │ │ └── server.component.ts
│ │ └── test-setup.ts
│ ├── tokens
│ │ ├── ng-package.json
│ │ └── src
│ │ │ └── index.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── storybook-angular
│ ├── .eslintrc.json
│ ├── README.md
│ ├── package.json
│ ├── preset
│ │ ├── preset.d.ts
│ │ ├── preset.js.map
│ │ └── preset.mjs
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── build-storybook
│ │ │ │ ├── build-storybook.ts
│ │ │ │ └── schema.json
│ │ │ ├── builders.json
│ │ │ ├── start-storybook
│ │ │ │ ├── schema.json
│ │ │ │ └── start-storybook.ts
│ │ │ └── utils
│ │ │ │ └── standalone-options.ts
│ │ ├── test-setup.ts
│ │ └── types.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── trpc
│ ├── .eslintrc.json
│ ├── README.md
│ ├── migrations
│ │ └── migration.json
│ ├── ng-package.json
│ ├── package.json
│ ├── project.json
│ ├── server
│ │ ├── ng-package.json
│ │ └── src
│ │ │ ├── index.ts
│ │ │ └── lib
│ │ │ └── server.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── client
│ │ │ │ ├── cache-state.ts
│ │ │ │ ├── client.ts
│ │ │ │ ├── links
│ │ │ │ │ └── transfer-state-link.ts
│ │ │ │ ├── shared-internal.ts
│ │ │ │ └── trpc-rxjs-proxy.ts
│ │ │ └── utils
│ │ │ │ └── wait-for.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.lib.prod.json
│ └── vite.config.ts
├── vite-plugin-angular
│ ├── .eslintrc.json
│ ├── README.md
│ ├── esbuild.ts
│ ├── jest.config.ts
│ ├── migrations
│ │ └── migration.json
│ ├── package.json
│ ├── project.json
│ ├── setup-vitest.ts
│ ├── src
│ │ ├── index.ts
│ │ ├── lib
│ │ │ ├── __snapshots__
│ │ │ │ └── angular-fixture-snapshot.spec.ts.snap
│ │ │ ├── angular-build-optimizer-plugin.ts
│ │ │ ├── angular-fixture-snapshot.spec.ts
│ │ │ ├── angular-jit-plugin.ts
│ │ │ ├── angular-pending-tasks.plugin.ts
│ │ │ ├── angular-storybook-plugin.ts
│ │ │ ├── angular-vite-plugin.spec.ts
│ │ │ ├── angular-vite-plugin.ts
│ │ │ ├── angular-vitest-plugin.spec.ts
│ │ │ ├── angular-vitest-plugin.ts
│ │ │ ├── authoring
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── analog.spec.ts.snap
│ │ │ │ ├── analog.spec.ts
│ │ │ │ ├── analog.ts
│ │ │ │ ├── constants.ts
│ │ │ │ ├── frontmatter.ts
│ │ │ │ ├── markdown-transform.ts
│ │ │ │ └── marked-setup.service.ts
│ │ │ ├── compiler-plugin.ts
│ │ │ ├── component-resolvers.spec.ts
│ │ │ ├── component-resolvers.ts
│ │ │ ├── host.ts
│ │ │ ├── live-reload-plugin.ts
│ │ │ ├── models.ts
│ │ │ ├── router-plugin.ts
│ │ │ └── utils
│ │ │ │ ├── compiler-plugin-options.ts
│ │ │ │ ├── devkit.ts
│ │ │ │ ├── hmr-candidates.ts
│ │ │ │ └── source-file-cache.ts
│ │ └── test-setup.ts
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
├── vite-plugin-nitro
│ ├── .eslintrc.json
│ ├── README.md
│ ├── migrations
│ │ └── migration.json
│ ├── package.json
│ ├── project.json
│ ├── src
│ │ ├── index.ts
│ │ └── lib
│ │ │ ├── build-server.ts
│ │ │ ├── build-sitemap.spec.ts
│ │ │ ├── build-sitemap.ts
│ │ │ ├── build-ssr.ts
│ │ │ ├── hooks
│ │ │ ├── post-rendering-hook.ts
│ │ │ └── post-rendering-hooks.spec.ts
│ │ │ ├── options.ts
│ │ │ ├── plugins
│ │ │ ├── dev-server-plugin.ts
│ │ │ └── page-endpoints.ts
│ │ │ ├── runtime
│ │ │ ├── renderer-client.mjs
│ │ │ ├── renderer-client.ts
│ │ │ └── renderer.ts
│ │ │ ├── utils
│ │ │ ├── get-content-files.ts
│ │ │ ├── get-page-handlers.ts
│ │ │ ├── load-esm.ts
│ │ │ └── register-dev-middleware.ts
│ │ │ ├── vite-nitro-plugin.spec.data.ts
│ │ │ ├── vite-plugin-nitro.spec.ts
│ │ │ └── vite-plugin-nitro.ts
│ ├── test-data
│ │ └── content
│ │ │ ├── 01-first.md
│ │ │ ├── 02-second.md
│ │ │ └── 03-third.md
│ ├── tsconfig.json
│ ├── tsconfig.lib.json
│ ├── tsconfig.spec.json
│ └── vite.config.ts
└── vitest-angular
│ ├── .eslintrc.json
│ ├── README.md
│ ├── builders.json
│ ├── package.json
│ ├── project.json
│ ├── setup-snapshots.ts
│ ├── setup-zone.ts
│ ├── src
│ ├── index.ts
│ └── lib
│ │ └── builders
│ │ ├── build
│ │ ├── devkit.ts
│ │ ├── plugins
│ │ │ ├── angular-memory-plugin.ts
│ │ │ └── esbuild-downlevel-plugin.ts
│ │ ├── schema.d.ts
│ │ ├── schema.json
│ │ ├── utils.ts
│ │ └── vitest.impl.ts
│ │ └── test
│ │ ├── LICENSE.nx.md
│ │ ├── schema.d.ts
│ │ ├── schema.json
│ │ └── vitest.impl.ts
│ ├── tsconfig.json
│ └── tsconfig.lib.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── release.config.cjs
├── server.mjs
├── tools
├── publish.sh
├── scripts
│ └── publish.mjs
└── tsconfig.tools.json
├── tsconfig.base.json
├── vitest.workspace.ts
└── zerops.yaml
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/.githooks/commit-msg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | pnpm exec commitlint --edit $1
4 |
--------------------------------------------------------------------------------
/.githooks/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | pnpm exec lint-staged
4 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [brandonroberts, goetzrobin] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | custom: https://analogjs.org/docs/sponsoring # Replace with a single custom sponsorship URL
5 |
--------------------------------------------------------------------------------
/.lintstagedrc:
--------------------------------------------------------------------------------
1 | {
2 | "*.{js,ts,css,scss,html,json,md}": "prettier --write"
3 | }
4 |
--------------------------------------------------------------------------------
/.node-version:
--------------------------------------------------------------------------------
1 | 22.14.0
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | node-options=--max-old-space-size=16384
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Add files here to ignore them from prettier formatting
2 |
3 | /dist
4 | /coverage
5 | .prettierignore
6 | .docusaurus/
7 | pnpm-lock.yaml
8 | /.nx/cache
9 | .angular
10 | *.analog
11 | /.nx/workspace-data
12 | /packages/create-analog/template-*
13 | .vite-inspect
14 | .all-contributorsrc
15 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all",
4 | "overrides": [
5 | {
6 | "files": "*.md",
7 | "options": {
8 | "printWidth": 80
9 | }
10 | },
11 | {
12 | "files": "*.analog",
13 | "options": {
14 | "parser": "angular"
15 | }
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "angular.ng-template",
4 | "nrwl.angular-console",
5 | "esbenp.prettier-vscode",
6 | "firsttris.vscode-jest-runner",
7 | "dbaeumer.vscode-eslint",
8 | "ms-playwright.playwright"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "eslint.validate": ["json"]
3 | }
4 |
--------------------------------------------------------------------------------
/apps/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/.gitkeep
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"],
3 | "ignorePatterns": ["!**/*"],
4 | "overrides": [
5 | {
6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7 | "rules": {}
8 | },
9 | {
10 | "files": ["src/plugins/index.js"],
11 | "rules": {
12 | "@typescript-eslint/no-var-requires": "off",
13 | "no-undef": "off"
14 | }
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "analog-app-e2e-cypress",
3 | "private": true,
4 | "type": "commonjs"
5 | }
6 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/fixtures/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/app.po.ts:
--------------------------------------------------------------------------------
1 | export const getTitle = () => cy.contains('h1', /my store/i);
2 |
3 | export const get404Title = () => cy.contains('h2', /page not found/i);
4 |
5 | export const getNested404Title = () =>
6 | cy.contains('h2', /shipping page not found/i);
7 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/form.ts:
--------------------------------------------------------------------------------
1 | export const getControlByLabel = (label: string | RegExp) => {
2 | return cy
3 | .contains('label', label)
4 | .invoke('attr', 'for')
5 | .then((id) => cy.get(`#${id}`));
6 | };
7 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/newsletter.po.ts:
--------------------------------------------------------------------------------
1 | export const typeEmail = (email: string) =>
2 | cy.get('input[name="email"]').type(email);
3 |
4 | export const submit = () => cy.contains('button', /submit/i).click();
5 |
6 | export const getSubmitMessage = () => cy.get('#signup-message');
7 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/phones.ts:
--------------------------------------------------------------------------------
1 | export const phones = {
2 | mini: {
3 | name: /phone mini/i,
4 | price: '$699.00',
5 | },
6 | standard: {
7 | name: /phone standard/i,
8 | price: '$299.00',
9 | },
10 | xl: {
11 | name: /phone xl/i,
12 | price: '$799.00',
13 | },
14 | } as const;
15 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/product-details.po.ts:
--------------------------------------------------------------------------------
1 | import * as productList from './product-list.po';
2 |
3 | const isActiveScreen = () =>
4 | cy
5 | .contains('h2', /product details/i)
6 | .closest('h2')
7 | .should('be.visible');
8 |
9 | export const getBuyButton = () => cy.contains('button', /buy/i);
10 | export const getPrice = () => cy.get('h4');
11 | export const navigateToByName = (name: string | RegExp) => {
12 | productList.getHeadingByName(name).find('a').click();
13 | isActiveScreen();
14 | };
15 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-cypress/src/support/product.ts:
--------------------------------------------------------------------------------
1 | export interface Product {
2 | readonly name: RegExp;
3 | readonly price: string;
4 | }
5 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-playwright/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["../../.eslintrc.json"],
3 | "ignorePatterns": [
4 | "!**/*",
5 | "**/vite.config.*.timestamp*",
6 | "**/vitest.config.*.timestamp*"
7 | ],
8 | "overrides": [
9 | {
10 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
11 | "rules": {}
12 | },
13 | {
14 | "files": ["src/plugins/index.js"],
15 | "rules": {
16 | "@typescript-eslint/no-var-requires": "off",
17 | "no-undef": "off"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-playwright/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "analog-app-e2e-playwright",
3 | "private": true,
4 | "type": "commonjs"
5 | }
6 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-playwright/tests/fixtures/phones.ts:
--------------------------------------------------------------------------------
1 | interface Phone {
2 | name: string;
3 | price: string;
4 | }
5 |
6 | export const phones: Record<'mini' | 'standard' | 'xl', Phone> = {
7 | mini: {
8 | name: 'phone mini',
9 | price: '$699.00',
10 | },
11 | standard: {
12 | name: 'phone standard',
13 | price: '$299.00',
14 | },
15 | xl: {
16 | name: 'phone xl',
17 | price: '$799.00',
18 | },
19 | } as const;
20 |
21 | export const allPhones = Object.values(phones);
22 |
--------------------------------------------------------------------------------
/apps/analog-app-e2e-playwright/tests/fixtures/products-details.po.ts:
--------------------------------------------------------------------------------
1 | import { Page } from 'playwright';
2 |
3 | export class ProductDetailPage {
4 | constructor(readonly page: Page) {}
5 |
6 | getPrice() {
7 | return this.page.locator('h4');
8 | }
9 |
10 | getBuyButton() {
11 | return this.page.locator('button >> text=/buy/i');
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/apps/analog-app/error.ts:
--------------------------------------------------------------------------------
1 | export default async function errorHandler(error, event) {
2 | event.res.end('error' + error.toString());
3 | }
4 |
--------------------------------------------------------------------------------
/apps/analog-app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/analog-app/favicon.ico
--------------------------------------------------------------------------------
/apps/analog-app/src/app/about.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-about',
5 | template: `About Store`,
6 | })
7 | export default class AboutComponent {}
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 | import { TopBarComponent } from '@analogjs/top-bar';
4 |
5 | @Component({
6 | selector: 'analogjs-root',
7 | standalone: true,
8 | imports: [TopBarComponent, RouterOutlet],
9 | template: `
10 |
11 |
12 |
13 |
14 | `,
15 | })
16 | export class AppComponent {}
17 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/(auth).page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | imports: [RouterOutlet],
6 | template: ` `,
7 | })
8 | export default class AuthLayoutPageComponent {}
9 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/(auth)/sign-up.page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | template: ` SignUp
`,
5 | })
6 | export default class SignupPageComponent {}
7 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/(home).server.ts:
--------------------------------------------------------------------------------
1 | import { setCookie } from 'h3';
2 | import { PageServerLoad } from '@analogjs/router';
3 |
4 | import { Product } from '../products';
5 |
6 | export const load = async ({ fetch, event }: PageServerLoad) => {
7 | setCookie(event, 'test', 'test');
8 | const products = await fetch('/api/v1/products');
9 |
10 | return {
11 | products: products,
12 | };
13 | };
14 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/[...slug].page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-page-not-found',
5 | template: ` Page Not Found
`,
6 | })
7 | export default class PageNotFoundComponent {}
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/[...slug].server.ts:
--------------------------------------------------------------------------------
1 | import { PageServerLoad } from '@analogjs/router';
2 |
3 | export function load({ params }: PageServerLoad) {
4 | console.log('params', params);
5 |
6 | return {
7 | loaded: true,
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/goodbye.page.analog:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Goodbye on the client
7 |
8 |
9 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/package.page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { MyPackageComponent } from 'my-package';
3 |
4 | @Component({
5 | imports: [MyPackageComponent],
6 | template: ` `,
7 | })
8 | export default class PackagePageComponent {}
9 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/products.[productId].server.ts:
--------------------------------------------------------------------------------
1 | import { PageServerLoad } from '@analogjs/router';
2 |
3 | export const load = async ({ params, fetch }: PageServerLoad) => {
4 | return {
5 | slug: true,
6 | };
7 | };
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/search.server.ts:
--------------------------------------------------------------------------------
1 | import type { PageServerLoad } from '@analogjs/router';
2 | import { getQuery } from 'h3';
3 |
4 | export async function load({ event }: PageServerLoad) {
5 | const query = getQuery(event);
6 | console.log('loaded search', query['search']);
7 |
8 | return {
9 | loaded: true,
10 | searchTerm: `${query['search'] || ''}`,
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/server/(server).page.ts:
--------------------------------------------------------------------------------
1 | import { RouteMeta } from '@analogjs/router';
2 |
3 | import { ServerOnly } from '@analogjs/router';
4 |
5 | export const routeMeta: RouteMeta = {
6 | data: {
7 | component: 'hello',
8 | },
9 | };
10 |
11 | export default ServerOnly;
12 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/shipping/[...slug].page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-shipping-page-not-found',
5 | template: ` Shipping Page Not Found
`,
6 | })
7 | export default class ShippingPageNotFoundComponent {}
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/shipping/[...slug].server.ts:
--------------------------------------------------------------------------------
1 | import { PageServerLoad } from '@analogjs/router';
2 |
3 | export function load({ params }: PageServerLoad) {
4 | console.log('slug', params?.['slug']);
5 |
6 | return {
7 | loaded: true,
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/shipping/index.server.ts:
--------------------------------------------------------------------------------
1 | import { parseCookies } from 'h3';
2 | import { PageServerLoad } from '@analogjs/router';
3 |
4 | export const load = async ({ event }: PageServerLoad) => {
5 | console.log('shipping');
6 | const cookies = parseCookies(event);
7 |
8 | console.log('test cookie', cookies['test']);
9 |
10 | return {
11 | shipping: true,
12 | };
13 | };
14 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/shipping/shipping.html:
--------------------------------------------------------------------------------
1 | Shipping Prices
2 | @for (shipping of shippingCosts | async; track $index) {
3 |
4 | {{ shipping.type }}
5 | {{ shipping.price | currency }}
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/pages/shipping/shipping.scss:
--------------------------------------------------------------------------------
1 | h3 {
2 | border: solid 1px darkblue;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/analog-app/src/app/products.ts:
--------------------------------------------------------------------------------
1 | export interface Product {
2 | id: number;
3 | name: string;
4 | price: number;
5 | description: string;
6 | }
7 |
--------------------------------------------------------------------------------
/apps/analog-app/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { config } from './app/app.config.server';
6 | import { AppComponent } from './app/app.component';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/apps/analog-app/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig);
8 |
--------------------------------------------------------------------------------
/apps/analog-app/src/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/analog-app/src/public/.gitkeep
--------------------------------------------------------------------------------
/apps/analog-app/src/public/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/analog-app/src/public/assets/.gitkeep
--------------------------------------------------------------------------------
/apps/analog-app/src/public/assets/shipping.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "type": "Overnight",
4 | "price": 25.99
5 | },
6 | {
7 | "type": "2-Day",
8 | "price": 9.99
9 | },
10 | {
11 | "type": "Postal",
12 | "price": 2.99
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/apps/analog-app/src/server/components/goodbye.ag:
--------------------------------------------------------------------------------
1 |
2 | Goodbye from the server
3 |
--------------------------------------------------------------------------------
/apps/analog-app/src/server/middleware/redirect.ts:
--------------------------------------------------------------------------------
1 | import { eventHandler, sendRedirect, setHeaders } from 'h3';
2 |
3 | export default eventHandler((event) => {
4 | if (event.node.req.originalUrl === '/checkout') {
5 | console.log('event url', event.node.req.originalUrl);
6 |
7 | setHeaders(event, {
8 | 'x-analog-test': 'true',
9 | });
10 |
11 | sendRedirect(event, '/cart');
12 | }
13 | });
14 |
--------------------------------------------------------------------------------
/apps/analog-app/src/server/routes/api/v1/products.ts:
--------------------------------------------------------------------------------
1 | import { eventHandler } from 'h3';
2 |
3 | export default eventHandler(() => [
4 | {
5 | id: 1,
6 | name: 'Phone XL',
7 | price: 799,
8 | description: 'A large phone with one of the best screens',
9 | },
10 | {
11 | id: 2,
12 | name: 'Phone Mini',
13 | price: 699,
14 | description: 'A great phone with one of the best cameras',
15 | },
16 | {
17 | id: 3,
18 | name: 'Phone Standard',
19 | price: 299,
20 | description: '',
21 | },
22 | ]);
23 |
--------------------------------------------------------------------------------
/apps/analog-app/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting(),
12 | );
13 |
--------------------------------------------------------------------------------
/apps/analog-app/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface ImportMetaEnv {
4 | readonly VITE_ANALOG_PUBLIC_BASE_URL: string;
5 | }
6 |
7 | interface ImportMeta {
8 | readonly env: ImportMetaEnv;
9 | }
10 |
--------------------------------------------------------------------------------
/apps/analog-app/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": [],
6 | "target": "ES2022",
7 | "useDefineForClassFields": false
8 | },
9 | "files": ["src/main.ts", "src/main.server.ts"],
10 | "include": [
11 | "src/**/*.d.ts",
12 | "src/app/pages/**/*.page.ts",
13 | "src/server/components/**/*.ts",
14 | "src/server/middleware/**/*.ts"
15 | ],
16 | "exclude": ["**/*.test.ts", "**/*.spec.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/apps/analog-app/tsconfig.editor.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/analog-app/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": ["src/test-setup.ts", "src/polyfills.ts"],
8 | "include": ["src/**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/apps/analog-preset-e2e/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "analog-preset-e2e",
3 | "$schema": "../../node_modules/nx/schemas/project-schema.json",
4 | "projectType": "application",
5 | "sourceRoot": "apps/analog-preset-e2e/src",
6 | "tags": [],
7 | "implicitDependencies": ["platform"],
8 | "targets": {
9 | "e2e": {
10 | "executor": "@nx/vite:test"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/apps/astro-app-e2e-playwright/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["../../.eslintrc.json"],
3 | "ignorePatterns": [
4 | "!**/*",
5 | "**/vite.config.*.timestamp*",
6 | "**/vitest.config.*.timestamp*"
7 | ],
8 | "overrides": [
9 | {
10 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
11 | "rules": {}
12 | },
13 | {
14 | "files": ["src/plugins/index.js"],
15 | "rules": {
16 | "@typescript-eslint/no-var-requires": "off",
17 | "no-undef": "off"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/apps/astro-app-e2e-playwright/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "astro-app-e2e-playwright",
3 | "private": true,
4 | "type": "commonjs"
5 | }
6 |
--------------------------------------------------------------------------------
/apps/astro-app/.astro/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "_variables": {
3 | "lastUpdateCheck": 1743174745314
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/apps/astro-app/.gitignore:
--------------------------------------------------------------------------------
1 | # build output
2 | dist/
3 | .output/
4 |
5 | # dependencies
6 | node_modules/
7 |
8 | # logs
9 | npm-debug.log*
10 | yarn-debug.log*
11 | yarn-error.log*
12 | pnpm-debug.log*
13 |
14 |
15 | # environment variables
16 | .env
17 | .env.production
18 |
19 | # macOS-specific files
20 | .DS_Store
21 |
--------------------------------------------------------------------------------
/apps/astro-app/.npmrc:
--------------------------------------------------------------------------------
1 | # Expose Astro dependencies for `pnpm` users
2 | shamefully-hoist=true
3 |
--------------------------------------------------------------------------------
/apps/astro-app/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["astro-build.astro-vscode"],
3 | "unwantedRecommendations": []
4 | }
5 |
--------------------------------------------------------------------------------
/apps/astro-app/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "command": "./node_modules/.bin/astro dev",
6 | "name": "Development server",
7 | "request": "launch",
8 | "type": "node-terminal"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/apps/astro-app/astro.config.mjs:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'astro/config';
2 | import angular from '@analogjs/astro-angular';
3 | import react from '@astrojs/react';
4 | import mdx from '@astrojs/mdx';
5 |
6 | // https://astro.build/config
7 | export default defineConfig({
8 | outDir: '../../dist/apps/astro-app',
9 | integrations: [angular(), react(), mdx({ syntaxHighlight: 'prism' })],
10 | });
11 |
--------------------------------------------------------------------------------
/apps/astro-app/src/components/Instructions.tsx:
--------------------------------------------------------------------------------
1 | export const Instructions = () => {
2 | return (
3 | <>
4 |
5 | Check out the src/pages
directory to get started.
6 |
7 | Code Challenge: Tweak the "Welcome to Astro" message
8 | above.
9 |
10 | >
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/apps/astro-app/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/apps/astro-app/src/pages/test.mdx:
--------------------------------------------------------------------------------
1 | import { CardComponent } from '../components/card.component.ts';
2 |
3 | Angular Component in an MDX file
4 |
5 |
10 |
--------------------------------------------------------------------------------
/apps/astro-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "astro/tsconfigs/strict",
3 | "compilerOptions": {
4 | "jsx": "react-jsx",
5 | "jsxImportSource": "react"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/blog-app-e2e-cypress/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"],
3 | "ignorePatterns": ["!**/*"],
4 | "overrides": [
5 | {
6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7 | "rules": {}
8 | }
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/apps/blog-app-e2e-cypress/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "blog-app-e2e-cypress",
3 | "private": true,
4 | "type": "commonjs"
5 | }
6 |
--------------------------------------------------------------------------------
/apps/blog-app-e2e-cypress/src/fixtures/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/apps/blog-app-e2e-cypress/src/support/app.po.ts:
--------------------------------------------------------------------------------
1 | // leaving this empty for now
2 |
--------------------------------------------------------------------------------
/apps/blog-app-e2e-cypress/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "sourceMap": false,
5 | "outDir": "../../dist/out-tsc",
6 | "allowJs": true,
7 | "types": ["cypress", "node"]
8 | },
9 | "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 | import NavComponent from './components/nav.component';
4 |
5 | @Component({
6 | selector: 'blog-root',
7 | standalone: true,
8 | imports: [RouterOutlet, NavComponent],
9 | template: `
10 |
11 |
12 | `,
13 | })
14 | export class AppComponent {}
15 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/components/nav.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterLink } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-nav',
6 | standalone: true,
7 | imports: [RouterLink],
8 | template: `
9 |
14 | `,
15 | })
16 | export default class NavComponent {}
17 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/[...page-not-found].md:
--------------------------------------------------------------------------------
1 | ## Oops
2 |
3 | Page Not Found
4 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About
3 | meta:
4 | - name: description
5 | content: About Page Description
6 | - property: og:title
7 | content: About
8 | ---
9 |
10 | ## About Analog
11 |
12 | Analog is a meta-framework for Angular.
13 |
14 | This is some codes
15 |
16 | ```ts
17 | import { enableProdMode } from '@angular/core';
18 | ```
19 |
20 | [Back Home](./)
21 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/archived/models.ts:
--------------------------------------------------------------------------------
1 | export interface ArchivedPostAttributes {
2 | title: string;
3 | slug: string;
4 | description: string;
5 | coverImage: string;
6 | draft?: boolean;
7 | }
8 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/blog/models.ts:
--------------------------------------------------------------------------------
1 | export interface PostAttributes {
2 | title: string;
3 | slug: string;
4 | description: string;
5 | coverImage: string;
6 | }
7 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/contact.md:
--------------------------------------------------------------------------------
1 | # Contact Us
2 |
3 | Take me [home](./).
4 |
--------------------------------------------------------------------------------
/apps/blog-app/src/app/pages/index.page.ts:
--------------------------------------------------------------------------------
1 | import { RouteMeta } from '@analogjs/router';
2 |
3 | export const routeMeta: RouteMeta = {
4 | redirectTo: '/blog',
5 | pathMatch: 'full',
6 | };
7 |
--------------------------------------------------------------------------------
/apps/blog-app/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/blog-app/src/assets/.gitkeep
--------------------------------------------------------------------------------
/apps/blog-app/src/assets/angular-gradient.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/blog-app/src/assets/angular-gradient.png
--------------------------------------------------------------------------------
/apps/blog-app/src/content/archived/2022-01-08-post1-2024.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: My First Archived Blog Post
3 | slug: post1-2024
4 | description: My First Archived Blog Post Description
5 | ---
6 |
7 | This is the first archived blog post in 2024 with a custom slug
8 |
--------------------------------------------------------------------------------
/apps/blog-app/src/content/archived/2022-01-10-post2-2024.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: My Second Archived Blog Post
3 | description: My Second Archived Post Description
4 | draft: true
5 | ---
6 |
7 | This is the second archived blog post in 2024 with the slug inherited from filename and in draft mode, so it shouldn't be visible / pre-rendered at all.
8 |
--------------------------------------------------------------------------------
/apps/blog-app/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/blog-app/src/favicon.ico
--------------------------------------------------------------------------------
/apps/blog-app/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { config } from './app/app.config.server';
6 | import { AppComponent } from './app/app.component';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/apps/blog-app/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig);
8 |
--------------------------------------------------------------------------------
/apps/blog-app/src/server/routes/rss.xml.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 | export default defineEventHandler((event) => {
3 | const feedString = `
4 |
5 |
6 | `;
7 | event.node.res.setHeader('content-type', 'text/xml');
8 | event.node.res.end(feedString);
9 | });
10 |
--------------------------------------------------------------------------------
/apps/blog-app/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | /* include CSS for prism toolbar */
3 | @import 'prismjs/plugins/toolbar/prism-toolbar.css';
4 | /* check node_modules/prismjs/themes/ for the available themes */
5 | @import 'prismjs/themes/prism-tomorrow.css';
6 |
--------------------------------------------------------------------------------
/apps/blog-app/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface ImportMetaEnv {
4 | readonly VITE_ANALOG_PUBLIC_BASE_URL: string;
5 | }
6 |
7 | interface ImportMeta {
8 | readonly env: ImportMetaEnv;
9 | }
10 |
--------------------------------------------------------------------------------
/apps/blog-app/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": [],
6 | "target": "ES2022",
7 | "useDefineForClassFields": false
8 | },
9 | "files": ["src/main.ts", "src/main.server.ts"],
10 | "include": [
11 | "src/**/*.d.ts",
12 | "src/app/routes/**/*.ts",
13 | "src/app/pages/**/*.page.ts"
14 | ],
15 | "exclude": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts"]
16 | }
17 |
--------------------------------------------------------------------------------
/apps/blog-app/tsconfig.editor.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["src/**/*.ts"],
4 | "compilerOptions": {
5 | "types": []
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/create-analog-e2e/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-analog-e2e",
3 | "$schema": "../../node_modules/nx/schemas/project-schema.json",
4 | "projectType": "application",
5 | "sourceRoot": "apps/create-analog-e2e/src",
6 | "tags": [],
7 | "implicitDependencies": ["create-analog"],
8 | "targets": {
9 | "e2e": {
10 | "executor": "@nx/vite:test"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/apps/docs-app/README.md:
--------------------------------------------------------------------------------
1 | # analogjs.org website and docs
2 |
3 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
4 |
5 | See [`CONTRIBUTING.md`](../../CONTRIBUTING.md) for instructions on contributing to this project.
6 |
--------------------------------------------------------------------------------
/apps/docs-app/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3 | };
4 |
--------------------------------------------------------------------------------
/apps/docs-app/blog/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/blog/.gitkeep
--------------------------------------------------------------------------------
/apps/docs-app/docs/contributing.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 4
3 | title: Contributing
4 | ---
5 |
6 | import Contributing, { toc as ContributingToc } from '../../../CONTRIBUTING.md';
7 |
8 |
9 |
10 |
11 |
12 |
13 | export const toc = [...ContributingToc];
14 |
--------------------------------------------------------------------------------
/apps/docs-app/docs/contributors.module.css:
--------------------------------------------------------------------------------
1 | [data-theme='light'] .githubLogo > * {
2 | fill: #000000;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/docs-app/docs/packages/astro-angular/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import AstroIntegration, { toc as AstroIntegrationTOC } from '../../../../../packages/astro-angular/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...AstroIntegrationTOC];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/docs/packages/router/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import RouterIntegration, { toc as RouterIntegrationTOC } from '../../../../../packages/router/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...RouterIntegrationTOC];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/docs/packages/vite-plugin-angular/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import VitePlugin, { toc as VitePluginToc } from '../../../../../packages/vite-plugin-angular/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...VitePluginToc];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/docs/packages/vite-plugin-nitro/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import VitePlugin, { toc as VitePluginToc } from '../../../../../packages/vite-plugin-nitro/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...VitePluginToc];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/de/docusaurus-plugin-content-docs/current/contributors.module.css:
--------------------------------------------------------------------------------
1 | [data-theme='light'] .githubLogo > * {
2 | fill: #000000;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/de/docusaurus-plugin-content-docs/current/packages/router/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | # Analog
6 |
7 | Das Fullstack-Meta-Framework für Angular
8 |
9 | Weitere Informationen unter [analogjs.org](https://analogjs.org)
10 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/de/docusaurus-theme-classic/navbar.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": {
3 | "message": "Analog",
4 | "description": "The title in the navbar"
5 | },
6 | "item.label.Docs": {
7 | "message": "Dokumentation",
8 | "description": "Navbar item with label Docs"
9 | },
10 | "item.label.GitHub": {
11 | "message": "GitHub",
12 | "description": "Navbar item with label GitHub"
13 | },
14 | "item.label.Discord": {
15 | "message": "Discord",
16 | "description": "Navbar item with label Discord"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/es/docusaurus-plugin-content-docs/current/contributing.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 4
3 | title: Contribuyendo
4 | ---
5 |
6 | import Contributing, { toc as ContributingToc } from '../../../../../../CONTRIBUTING.md';
7 |
8 |
9 |
10 |
11 |
12 |
13 | export const toc = [...ContributingToc];
14 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/es/docusaurus-plugin-content-docs/current/contributors.module.css:
--------------------------------------------------------------------------------
1 | [data-theme='light'] .githubLogo > * {
2 | fill: #000000;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/es/docusaurus-plugin-content-docs/current/packages/astro-angular/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import AstroIntegration, { toc as AstroIntegrationTOC } from '../../../../../../../../packages/astro-angular/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...AstroIntegrationTOC];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/es/docusaurus-plugin-content-docs/current/packages/router/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import RouterIntegration, { toc as RouterIntegrationTOC } from '../../../../../../../../packages/router/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...RouterIntegrationTOC];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/es/docusaurus-plugin-content-docs/current/packages/vite-plugin-angular/overview.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ''
3 | ---
4 |
5 | import VitePlugin, { toc as VitePluginToc } from '../../../../../../../../packages/vite-plugin-angular/README.md';
6 |
7 |
8 |
9 |
10 |
11 |
12 | export const toc = [...VitePluginToc];
13 |
--------------------------------------------------------------------------------
/apps/docs-app/i18n/zh-hans/docusaurus-plugin-content-docs/current/contributors.module.css:
--------------------------------------------------------------------------------
1 | [data-theme='light'] .githubLogo > * {
2 | fill: #000000;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/docs-app/src/components/HomepageFeatures/styles.module.css:
--------------------------------------------------------------------------------
1 | .features {
2 | display: flex;
3 | align-items: center;
4 | padding: 2rem 0;
5 | width: 100%;
6 | border-top: var(--ifm-global-border-width) solid var(--global-border-color);
7 | }
8 |
9 | .featureSvg {
10 | height: 200px;
11 | width: 200px;
12 | }
13 |
--------------------------------------------------------------------------------
/apps/docs-app/static/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/.nojekyll
--------------------------------------------------------------------------------
/apps/docs-app/static/img/analog-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/img/analog-banner.png
--------------------------------------------------------------------------------
/apps/docs-app/static/img/debug-routes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/img/debug-routes.png
--------------------------------------------------------------------------------
/apps/docs-app/static/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/img/favicon.ico
--------------------------------------------------------------------------------
/apps/docs-app/static/img/logos/angular-gradient.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/img/logos/angular-gradient.png
--------------------------------------------------------------------------------
/apps/docs-app/static/img/logos/house-of-angular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/docs-app/static/img/logos/house-of-angular.png
--------------------------------------------------------------------------------
/apps/docs-app/static/img/logos/stackblitz-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/apps/docs-app/static/new/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Analog - New Project
6 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/apps/docs-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "esModuleInterop": true,
6 | "jsx": "react",
7 | "lib": ["DOM"],
8 | "noEmit": true,
9 | "noImplicitAny": false,
10 | "types": [
11 | "node",
12 | "@docusaurus/module-type-aliases",
13 | "@docusaurus/theme-classic"
14 | ],
15 | "baseUrl": ".",
16 | "paths": {
17 | "@site/*": ["./*"]
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/apps/ng-app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ng-app
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/export-stuff.ag:
--------------------------------------------------------------------------------
1 |
19 |
20 | Sharing is caring
21 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/external/external-two.css:
--------------------------------------------------------------------------------
1 | h1 {
2 | color: darkblue;
3 | }
4 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/external/external.ag:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/external/external.css:
--------------------------------------------------------------------------------
1 | p {
2 | color: tomato;
3 | background: #eee;
4 | }
5 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/external/external.html:
--------------------------------------------------------------------------------
1 |
2 |
I am in external template!!!
3 |
4 |
Value: {{ value() }}
5 |
6 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/goodbye.ag:
--------------------------------------------------------------------------------
1 |
2 | Goodbye
3 |
4 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/hello.ag.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 | import Hello from './hello.ag';
3 |
4 | describe('Hello', () => {
5 | beforeEach(async () => {
6 | await TestBed.configureTestingModule({
7 | imports: [Hello],
8 | }).compileComponents();
9 | });
10 |
11 | it('should create the component', () => {
12 | const fixture = TestBed.createComponent(Hello);
13 | const app = fixture.componentInstance;
14 | expect(app).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/highlight.ag:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/models.ts:
--------------------------------------------------------------------------------
1 | export interface PostAttributes {
2 | title: string;
3 | slug: string;
4 | description: string;
5 | coverImage: string;
6 | }
7 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/my-components.ts:
--------------------------------------------------------------------------------
1 | import Goodbye from './goodbye.ag';
2 |
3 | export { Goodbye };
4 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/my.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | @Injectable()
4 | export class MyService {
5 | sayHello() {
6 | return 'hello';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/apps/ng-app/src/app/pages/(home).page.ag:
--------------------------------------------------------------------------------
1 | Welcome Home
2 |
--------------------------------------------------------------------------------
/apps/ng-app/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/ng-app/src/assets/.gitkeep
--------------------------------------------------------------------------------
/apps/ng-app/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/ng-app/src/favicon.ico
--------------------------------------------------------------------------------
/apps/ng-app/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 | import { appConfig } from './app/app.config';
4 | import AppComponent from './app/app.component.ag';
5 |
6 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
7 | console.error(err),
8 | );
9 |
--------------------------------------------------------------------------------
/apps/ng-app/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | /* include CSS for prism toolbar */
3 | @import 'prismjs/plugins/toolbar/prism-toolbar.css';
4 | /* check node_modules/prismjs/themes/ for the available themes */
5 | @import 'prismjs/themes/prism-tomorrow.css';
6 |
--------------------------------------------------------------------------------
/apps/ng-app/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting(),
12 | );
13 |
--------------------------------------------------------------------------------
/apps/ng-app/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": []
6 | },
7 | "files": ["src/main.ts"],
8 | "include": ["src/**/*.d.ts"],
9 | "exclude": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/apps/ng-app/tsconfig.editor.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["src/**/*.ts"],
4 | "compilerOptions": {
5 | "types": []
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/ng-app/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"],
6 | "target": "es2016"
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/apps/nx-plugin-e2e/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nx-plugin-e2e",
3 | "$schema": "../../node_modules/nx/schemas/project-schema.json",
4 | "projectType": "application",
5 | "sourceRoot": "apps/nx-plugin-e2e/src",
6 | "tags": [],
7 | "implicitDependencies": ["platform", "trpc", "content"],
8 | "targets": {
9 | "e2e": {
10 | "executor": "@nx/vite:test"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/apps/trpc-app-e2e-playwright/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["../../.eslintrc.json"],
3 | "ignorePatterns": [
4 | "!**/*",
5 | "**/vite.config.*.timestamp*",
6 | "**/vitest.config.*.timestamp*"
7 | ],
8 | "overrides": [
9 | {
10 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
11 | "rules": {}
12 | },
13 | {
14 | "files": ["src/plugins/index.js"],
15 | "rules": {
16 | "@typescript-eslint/no-var-requires": "off",
17 | "no-undef": "off"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/apps/trpc-app-e2e-playwright/tests/fixtures/notes.ts:
--------------------------------------------------------------------------------
1 | type Note = {
2 | note: string;
3 | };
4 |
5 | export const notes: Record<'first', Note> = {
6 | first: {
7 | note: 'I am the first note',
8 | },
9 | } as const;
10 |
--------------------------------------------------------------------------------
/apps/trpc-app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/trpc-app/favicon.ico
--------------------------------------------------------------------------------
/apps/trpc-app/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | const { join } = require('node:path');
2 |
3 | module.exports = {
4 | plugins: {
5 | tailwindcss: {
6 | config: join(__dirname, 'tailwind.config.cjs'),
7 | },
8 | autoprefixer: {},
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig, mergeApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 | import { appConfig } from './app.config';
4 | import { provideClientHydration } from '@angular/platform-browser';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering(), provideClientHydration()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideClientHydration } from '@angular/platform-browser';
3 | import { provideFileRouter } from '@analogjs/router';
4 | import { provideTrpcClient } from './trpc-client';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [
8 | provideFileRouter(),
9 | provideClientHydration(),
10 | provideTrpcClient(),
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'trpc-app-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | host: {
9 | class: 'max-w-screen-md mx-auto block h-full bg-zinc-900 text-zinc-50',
10 | },
11 | changeDetection: ChangeDetectionStrategy.Default,
12 | template: ` `,
13 | })
14 | export class AppComponent {}
15 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { config } from './app.config.server';
6 | import { AppComponent } from './app/app.component';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err),
9 | );
10 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/note.ts:
--------------------------------------------------------------------------------
1 | export type Note = {
2 | id: number;
3 | note: string;
4 | createdAt: Date;
5 | };
6 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/public/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/apps/trpc-app/src/public/assets/.gitkeep
--------------------------------------------------------------------------------
/apps/trpc-app/src/server/routes/health.ts:
--------------------------------------------------------------------------------
1 | import { eventHandler } from 'h3';
2 |
3 | export default eventHandler(() => ({ success: true }));
4 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/server/routes/trpc/[trpc].ts:
--------------------------------------------------------------------------------
1 | import { appRouter } from '../../trpc/routers';
2 | import { createContext } from '../../trpc/context';
3 | import { createTrpcNitroHandler } from '@analogjs/trpc/server';
4 | // export API handler
5 | export default createTrpcNitroHandler({
6 | router: appRouter,
7 | createContext,
8 | });
9 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/server/trpc/routers/index.ts:
--------------------------------------------------------------------------------
1 | import { router } from '../trpc';
2 | import { noteRouter } from './notes';
3 |
4 | export const appRouter = router({
5 | note: noteRouter,
6 | });
7 | // export type definition of API
8 | export type AppRouter = typeof appRouter;
9 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/styles.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @tailwind base;
6 | @tailwind components;
7 | @tailwind utilities;
8 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting(),
12 | );
13 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/trpc-client.ts:
--------------------------------------------------------------------------------
1 | import { AppRouter } from './server/trpc/routers';
2 | import { createTrpcClient } from '@analogjs/trpc';
3 | import { inject } from '@angular/core';
4 | import superjson from 'superjson';
5 |
6 | export const { provideTrpcClient, TrpcClient, TrpcHeaders } =
7 | createTrpcClient({
8 | url: '/api/trpc',
9 | options: {
10 | transformer: superjson,
11 | },
12 | });
13 |
14 | export function injectTrpcClient() {
15 | return inject(TrpcClient);
16 | }
17 |
--------------------------------------------------------------------------------
/apps/trpc-app/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/apps/trpc-app/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | const { createGlobPatternsForDependencies } = require('@nx/angular/tailwind');
2 | const { join } = require('node:path');
3 |
4 | /** @type {import('tailwindcss').Config} */
5 | module.exports = {
6 | darkMode: 'class',
7 | content: [
8 | './index.html',
9 | join(__dirname, 'src/**/!(*.stories|*.spec).{ts,html}'),
10 | ...createGlobPatternsForDependencies(__dirname),
11 | ],
12 | theme: {
13 | extend: {},
14 | },
15 | plugins: [],
16 | };
17 |
--------------------------------------------------------------------------------
/apps/trpc-app/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": [],
6 | "target": "ES2022",
7 | "useDefineForClassFields": false
8 | },
9 | "files": ["src/main.ts", "src/main.server.ts"],
10 | "include": [
11 | "src/**/*.d.ts",
12 | "src/app/routes/**/*.ts",
13 | "src/app/pages/**/*.page.ts"
14 | ],
15 | "exclude": ["**/*.test.ts", "**/*.spec.ts"]
16 | }
17 |
--------------------------------------------------------------------------------
/apps/trpc-app/tsconfig.editor.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/trpc-app/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": ["src/test-setup.ts", "src/polyfills.ts"],
8 | "include": ["src/**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/jest.config.ts:
--------------------------------------------------------------------------------
1 | import { getJestProjectsAsync } from '@nx/jest';
2 |
3 | export default async () => ({
4 | projects: await getJestProjectsAsync(),
5 | });
6 |
--------------------------------------------------------------------------------
/libs/card/README.md:
--------------------------------------------------------------------------------
1 | # libs/card
2 |
3 | This library was generated with [Nx](https://nx.dev).
4 |
--------------------------------------------------------------------------------
/libs/card/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "card",
3 | "$schema": "../../node_modules/nx/schemas/project-schema.json",
4 | "sourceRoot": "libs/card/src",
5 | "prefix": "lib",
6 | "projectType": "library",
7 | "tags": [],
8 | "targets": {
9 | "tests": {
10 | "executor": "@nx/vite:test"
11 | },
12 | "lint": {
13 | "executor": "@nx/eslint:lint",
14 | "outputs": ["{options.outputFile}"]
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/libs/card/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/card/card.component';
2 |
--------------------------------------------------------------------------------
/libs/card/src/lib/autocomplete/autocomplete.component.scss:
--------------------------------------------------------------------------------
1 | :host {
2 | display: block;
3 | }
4 |
--------------------------------------------------------------------------------
/libs/card/src/lib/autocomplete/index.ts:
--------------------------------------------------------------------------------
1 | export * from './autocomplete.component';
2 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card/__snapshots__/card.component.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`CardComponent > should create the app 1`] = `
4 |
5 | card-works
6 |
7 |
13 |
16 |
17 | `;
18 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card/card.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/libs/card/src/lib/card/card.component.css
--------------------------------------------------------------------------------
/libs/card/src/lib/card/card.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 | Some card
4 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card/card.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { MatCardModule } from '@angular/material/card';
4 |
5 | @Component({
6 | selector: 'lib-card',
7 | standalone: true,
8 | imports: [CommonModule, MatCardModule],
9 | templateUrl: './card.component.html',
10 | styleUrls: ['./card.component.css'],
11 | })
12 | export class CardComponent {
13 | title = 'card-works';
14 | render = false;
15 | }
16 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card2/__snapshots__/card.component.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`CardComponent > should create the app 1`] = `
4 |
5 | card-works
6 |
7 |
13 |
16 |
17 | `;
18 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card2/card.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/libs/card/src/lib/card2/card.component.css
--------------------------------------------------------------------------------
/libs/card/src/lib/card2/card.component.html:
--------------------------------------------------------------------------------
1 | {{ title }}
2 |
3 | Some card
4 |
--------------------------------------------------------------------------------
/libs/card/src/lib/card2/card.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { MatCardModule } from '@angular/material/card';
4 |
5 | @Component({
6 | selector: 'lib-card',
7 | standalone: true,
8 | imports: [CommonModule, MatCardModule],
9 | templateUrl: './card.component.html',
10 | styleUrls: ['./card.component.css'],
11 | })
12 | export class CardComponent {
13 | title = 'card-works';
14 | render = false;
15 | }
16 |
--------------------------------------------------------------------------------
/libs/card/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | /**
4 | * Initialize TestBed for all tests inside of content
5 | */
6 | import { TestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting,
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | TestBed.initTestEnvironment(
13 | BrowserDynamicTestingModule,
14 | platformBrowserDynamicTesting(),
15 | );
16 |
--------------------------------------------------------------------------------
/libs/card/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": [],
9 | "esModuleInterop": true,
10 | "isolatedModules": true,
11 | "moduleResolution": "bundler"
12 | },
13 | "exclude": ["src/**/*.spec.ts", "vite.config.ts"],
14 | "include": ["src/**/*.ts"]
15 | }
16 |
--------------------------------------------------------------------------------
/libs/card/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": ["src/test-setup.ts"],
8 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/libs/my-package/README.md:
--------------------------------------------------------------------------------
1 | # my-package
2 |
3 | This library was generated with [Nx](https://nx.dev).
4 |
5 | ## Running unit tests
6 |
7 | Run `nx test my-package` to execute the unit tests.
8 |
--------------------------------------------------------------------------------
/libs/my-package/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/my-package/my-package.component';
2 |
--------------------------------------------------------------------------------
/libs/my-package/src/lib/my-package/my-package.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/libs/my-package/src/lib/my-package/my-package.component.css
--------------------------------------------------------------------------------
/libs/my-package/src/lib/my-package/my-package.component.html:
--------------------------------------------------------------------------------
1 | MyPackage works!
2 |
--------------------------------------------------------------------------------
/libs/my-package/src/lib/my-package/my-package.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | @Component({
5 | selector: 'lib-my-package',
6 | imports: [CommonModule],
7 | templateUrl: './my-package.component.html',
8 | styleUrl: './my-package.component.css',
9 | })
10 | export class MyPackageComponent {}
11 |
--------------------------------------------------------------------------------
/libs/my-package/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | /**
4 | * Initialize TestBed for all tests inside of content
5 | */
6 | import { TestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting,
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | TestBed.initTestEnvironment(
13 | BrowserDynamicTestingModule,
14 | platformBrowserDynamicTesting(),
15 | );
16 |
--------------------------------------------------------------------------------
/libs/my-package/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": []
9 | },
10 | "exclude": [
11 | "src/**/*.spec.ts",
12 | "src/test-setup.ts",
13 | "vite.config.ts",
14 | "src/**/*.test.ts"
15 | ],
16 | "include": ["src/**/*.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/libs/my-package/tsconfig.lib.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.lib.json",
3 | "compilerOptions": {
4 | "declarationMap": false,
5 | "target": "ES2022",
6 | "useDefineForClassFields": false
7 | },
8 | "angularCompilerOptions": {
9 | "compilationMode": "partial"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/libs/my-package/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": ["src/test-setup.ts"],
8 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/libs/shared/feature/README.md:
--------------------------------------------------------------------------------
1 | # shared-routes
2 |
3 | This library was generated with [Nx](https://nx.dev).
4 |
5 | ## Running unit tests
6 |
7 | Run `nx test shared-routes` to execute the unit tests.
8 |
--------------------------------------------------------------------------------
/libs/shared/feature/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shared-feature",
3 | "$schema": "../../../node_modules/nx/schemas/project-schema.json",
4 | "sourceRoot": "libs/shared/feature/src",
5 | "prefix": "lib",
6 | "projectType": "library",
7 | "tags": [],
8 | "targets": {}
9 | }
10 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/api/routes/api/ping.ts:
--------------------------------------------------------------------------------
1 | import { eventHandler } from 'h3';
2 |
3 | export default eventHandler(() => 'pong');
4 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/content/test.agx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Shared Test Agx
3 | slug: shared-test-agx
4 | ---
5 |
6 |
9 |
10 |
11 | My First Post on {{ name }}
12 |
13 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/content/test.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Shared Test Content
3 | slug: shared-test
4 | ---
5 |
6 | This is a test
7 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/libs/shared/feature/src/index.ts
--------------------------------------------------------------------------------
/libs/shared/feature/src/pages/about-me.page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-about',
5 | standalone: true,
6 | template: `about me page
`,
7 | })
8 | export default class AboutPageComponent {}
9 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/pages/about-you.page.analog:
--------------------------------------------------------------------------------
1 | Hello You
--------------------------------------------------------------------------------
/libs/shared/feature/src/pages/test.page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-test',
5 | standalone: true,
6 | template: `shared test page works
`,
7 | })
8 | export default class SharedTestPageComponent {}
9 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/pages/test.server.ts:
--------------------------------------------------------------------------------
1 | export function load() {
2 | console.log('test from server');
3 | return {
4 | tested: true,
5 | };
6 | }
7 |
--------------------------------------------------------------------------------
/libs/shared/feature/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | /**
4 | * Initialize TestBed for all tests inside of content
5 | */
6 | import { TestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting,
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | TestBed.initTestEnvironment(
13 | BrowserDynamicTestingModule,
14 | platformBrowserDynamicTesting(),
15 | );
16 |
--------------------------------------------------------------------------------
/libs/shared/feature/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": []
9 | },
10 | "exclude": [
11 | "src/**/*.spec.ts",
12 | "src/test-setup.ts",
13 | "jest.config.ts",
14 | "src/**/*.test.ts"
15 | ],
16 | "include": ["src/**/*.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/libs/shared/feature/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"],
6 | "target": "es2016"
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/libs/top-bar/README.md:
--------------------------------------------------------------------------------
1 | # top-bar
2 |
3 | This library was generated with [Nx](https://nx.dev).
4 |
5 | ## Running unit tests
6 |
7 | Run `nx test top-bar` to execute the unit tests.
8 |
--------------------------------------------------------------------------------
/libs/top-bar/project.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "top-bar",
3 | "$schema": "../../node_modules/nx/schemas/project-schema.json",
4 | "projectType": "library",
5 | "sourceRoot": "libs/top-bar/src",
6 | "prefix": "analogjs",
7 | "tags": [],
8 | "targets": {
9 | "test": {
10 | "executor": "@nx/vite:test"
11 | },
12 | "lint": {
13 | "executor": "@nx/eslint:lint",
14 | "outputs": ["{options.outputFile}"]
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/libs/top-bar/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/top-bar/top-bar.component';
2 |
--------------------------------------------------------------------------------
/libs/top-bar/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 | import '@angular/compiler';
3 |
4 | /**
5 | * Initialize TestBed for all tests inside of content
6 | */
7 | import { TestBed } from '@angular/core/testing';
8 | import {
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting,
11 | } from '@angular/platform-browser-dynamic/testing';
12 |
13 | TestBed.initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting(),
16 | );
17 |
--------------------------------------------------------------------------------
/libs/top-bar/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": []
9 | },
10 | "exclude": ["src/test-setup.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
11 | "include": ["src/**/*.ts"]
12 | }
13 |
--------------------------------------------------------------------------------
/libs/top-bar/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": ["src/test-setup.ts"],
8 | "include": ["src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/.gitkeep
--------------------------------------------------------------------------------
/packages/astro-angular/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/astro-angular/src/index.spec.mts:
--------------------------------------------------------------------------------
1 | import astroPlugin from './index';
2 |
3 | describe('angularVitePlugin', () => {
4 | it('should return astro configurations', () => {
5 | expect(astroPlugin().name).toEqual('@analogjs/astro-angular');
6 | expect(astroPlugin().hooks).toStrictEqual({
7 | 'astro:config:setup': expect.anything(),
8 | 'astro:config:done': expect.anything(),
9 | });
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/packages/astro-angular/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 |
--------------------------------------------------------------------------------
/packages/astro-angular/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/astro-angular/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["node", "vitest/globals"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/content-plugin/README.md:
--------------------------------------------------------------------------------
1 | # content-plugin
2 |
3 | This library was generated with [Nx](https://nx.dev).
4 |
5 | ## Building
6 |
7 | Run `nx build content-plugin` to build the library.
8 |
9 | ## Running unit tests
10 |
11 | Run `nx test content-plugin` to execute the unit tests via [Jest](https://jestjs.io).
12 |
--------------------------------------------------------------------------------
/packages/content-plugin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "content-plugin",
3 | "version": "0.0.1",
4 | "main": "./src/index.js",
5 | "type": "commonjs"
6 | }
7 |
--------------------------------------------------------------------------------
/packages/content-plugin/src/index.ts:
--------------------------------------------------------------------------------
1 | export default void 0;
2 |
--------------------------------------------------------------------------------
/packages/content-plugin/src/migrations/update-markdown-renderer-feature/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxGenerator } from '@nx/devkit';
2 | import updateMarkdownRendererFeature from './update-markdown-renderer-feature';
3 |
4 | export default convertNxGenerator(updateMarkdownRendererFeature);
5 |
--------------------------------------------------------------------------------
/packages/content-plugin/src/migrations/update-markdown-version/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxGenerator } from '@nx/devkit';
2 | import updateMarkdownVersion from './update-markdown-version';
3 |
4 | export default convertNxGenerator(updateMarkdownVersion);
5 |
--------------------------------------------------------------------------------
/packages/content-plugin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "module": "CommonJS"
5 | },
6 | "files": [],
7 | "include": [],
8 | "references": [
9 | {
10 | "path": "./tsconfig.lib.json"
11 | },
12 | {
13 | "path": "./tsconfig.spec.json"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/content-plugin/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "types": ["node"]
7 | },
8 | "include": ["src/**/*.ts"],
9 | "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/content-plugin/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "include": ["src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"],
9 | "exclude": [
10 | "src/**/files/**/*.test.ts",
11 | "src/**/files/**/*.spec.ts",
12 | "src/**/files/**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/content/README.md:
--------------------------------------------------------------------------------
1 | # Analog
2 |
3 | The fullstack meta-framework for Angular
4 |
5 | Learn more at [analogjs.org](https://analogjs.org)
6 |
--------------------------------------------------------------------------------
/packages/content/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../node_modules/@analogjs/content",
4 | "lib": {
5 | "entryFile": "src/index.ts"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/content/og/README.md:
--------------------------------------------------------------------------------
1 | # @analogjs/content/og
2 |
3 | Secondary entry point of `@analogjs/content`. It can be used by importing from `@analogjs/content/og`.
4 |
--------------------------------------------------------------------------------
/packages/content/og/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/content/og/src/index.ts:
--------------------------------------------------------------------------------
1 | export { ImageResponse } from './lib/og';
2 | export { ImageResponseOptions } from './lib/options';
3 |
--------------------------------------------------------------------------------
/packages/content/og/src/lib/options.ts:
--------------------------------------------------------------------------------
1 | import type { SatoriOptions } from 'satori/wasm';
2 |
3 | export interface ImageResponseOptions {
4 | width?: number;
5 | height?: number;
6 | fonts?: SatoriOptions['fonts'];
7 | debug?: boolean;
8 | status?: number;
9 | statusText?: string;
10 | headers?: Record;
11 | tailwindConfig?: SatoriOptions['tailwindConfig'];
12 | }
13 |
--------------------------------------------------------------------------------
/packages/content/prism-highlighter/README.md:
--------------------------------------------------------------------------------
1 | # @analogjs/content/prism-highlighter
2 |
3 | Secondary entry point of `@analogjs/content`. It can be used by importing from `@analogjs/content/prism-highlighter`.
4 |
--------------------------------------------------------------------------------
/packages/content/prism-highlighter/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/content/shiki-highlighter/README.md:
--------------------------------------------------------------------------------
1 | # @analogjs/content/shiki-highlighter
2 |
3 | Secondary entry point of `@analogjs/content`. It can be used by importing from `@analogjs/content/shiki-highlighter`.
4 |
--------------------------------------------------------------------------------
/packages/content/shiki-highlighter/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/content/src/lib/content-file.ts:
--------------------------------------------------------------------------------
1 | export interface ContentFile<
2 | Attributes extends Record = Record,
3 | > {
4 | filename: string;
5 | slug: string;
6 | content?: string | object;
7 | attributes: Attributes;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/content/src/lib/parse-raw-content-file.ts:
--------------------------------------------------------------------------------
1 | import fm from 'front-matter';
2 |
3 | export function parseRawContentFile>(
4 | rawContentFile: string,
5 | ): { content: string; attributes: Attributes } {
6 | const { body, attributes } = fm(rawContentFile);
7 | return { content: body, attributes };
8 | }
9 |
--------------------------------------------------------------------------------
/packages/content/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 | import '@angular/compiler';
3 |
4 | /**
5 | * Initialize TestBed for all tests inside of content
6 | */
7 | import { TestBed } from '@angular/core/testing';
8 | import {
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting,
11 | } from '@angular/platform-browser-dynamic/testing';
12 |
13 | TestBed.initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting(),
16 | );
17 |
--------------------------------------------------------------------------------
/packages/content/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": [],
9 | "allowJs": true
10 | },
11 | "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"],
12 | "include": ["**/*.ts"]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/content/tsconfig.lib.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.lib.json",
3 | "compilerOptions": {
4 | "declarationMap": false
5 | },
6 | "angularCompilerOptions": {
7 | "compilationMode": "partial"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/content/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["node", "vitest/globals"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/create-analog/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/packages/create-analog/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | __tests__
3 | yarn.lock
4 | project.json
--------------------------------------------------------------------------------
/packages/create-analog/files/analog-env.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.analog' {
2 | import { Type } from '@angular/core';
3 |
4 | const cmp: Type;
5 | export default cmp;
6 | }
7 |
8 | declare module '*.ag' {
9 | import { Type } from '@angular/core';
10 |
11 | const cmp: Type;
12 | export default cmp;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v16/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | MyApp
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { provideHttpClient } from '@angular/common/http';
2 | import { ApplicationConfig } from '@angular/core';
3 | import { provideClientHydration } from '@angular/platform-browser';
4 | import { provideFileRouter } from '@analogjs/router';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [
8 | provideFileRouter(),
9 | provideHttpClient(),
10 | provideClientHydration(),
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v16/src/assets/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/server/routes/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/test.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "composite": false,
6 | "outDir": "./out-tsc/app",
7 | "types": []
8 | },
9 | "files": ["src/main.ts", "src/main.server.ts"],
10 | "include": [
11 | "src/**/*.d.ts",
12 | "src/app/routes/**/*.ts",
13 | "src/app/pages/**/*.page.ts"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v16/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "composite": false,
6 | "outDir": "./out-tsc/spec",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v17/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | MyApp
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { provideHttpClient, withFetch } from '@angular/common/http';
2 | import { ApplicationConfig } from '@angular/core';
3 | import { provideClientHydration } from '@angular/platform-browser';
4 | import { provideFileRouter } from '@analogjs/router';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [
8 | provideFileRouter(),
9 | provideHttpClient(withFetch()),
10 | provideClientHydration(),
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v17/src/assets/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/src/server/routes/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/src/test.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/routes/**/*.ts",
12 | "src/app/pages/**/*.page.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v17/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "target": "es2016",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v18/public/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v18/public/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/app/app-root.ag:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | template: ``,
9 | styles: `
10 | :host {
11 | max-width: 1280px;
12 | margin: 0 auto;
13 | padding: 2rem;
14 | text-align: center;
15 | }
16 | `,
17 | })
18 | export class AppComponent {}
19 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | __APP_COMPONENT_IMPORT__
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(__APP_COMPONENT__, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/server/routes/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/pages/**/*.page.ts",
12 | "src/server/middleware/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v18/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "target": "es2016",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test-setup.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v19/public/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-angular-v19/public/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/app/app-root.ag:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | imports: [RouterOutlet],
7 | template: ``,
8 | styles: `
9 | :host {
10 | max-width: 1280px;
11 | margin: 0 auto;
12 | padding: 2rem;
13 | text-align: center;
14 | }
15 | `,
16 | })
17 | export class AppComponent {}
18 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | __APP_COMPONENT_IMPORT__
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(__APP_COMPONENT__, config);
9 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | __APP_COMPONENT_IMPORT__
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(__APP_COMPONENT__, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/server/routes/api/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/pages/**/*.page.ts",
12 | "src/server/middleware/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/template-angular-v19/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "target": "es2016",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test-setup.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | __PROJECT_TITLE__
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-blog/public/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-blog/public/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 | import { appConfig } from './app.config';
4 |
5 | const serverConfig: ApplicationConfig = {
6 | providers: [provideServerRendering()],
7 | };
8 |
9 | export const config = mergeApplicationConfig(appConfig, serverConfig);
10 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/app/pages/index.page.ts:
--------------------------------------------------------------------------------
1 | import { RouteMeta } from '@analogjs/router';
2 |
3 | export const routeMeta: RouteMeta = {
4 | redirectTo: '/blog',
5 | pathMatch: 'full',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/app/post-attributes.ts:
--------------------------------------------------------------------------------
1 | export default interface PostAttributes {
2 | title: string;
3 | slug: string;
4 | description: string;
5 | coverImage: string;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | __APP_COMPONENT_IMPORT__
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(__APP_COMPONENT__, config);
9 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | __APP_COMPONENT_IMPORT__
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(__APP_COMPONENT__, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/server/routes/api/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@angular/compiler';
2 | import '@analogjs/vitest-angular/setup-zone';
3 |
4 | import {
5 | BrowserTestingModule,
6 | platformBrowserTesting,
7 | } from '@angular/platform-browser/testing';
8 | import { getTestBed } from '@angular/core/testing';
9 |
10 | getTestBed().initTestEnvironment(
11 | BrowserTestingModule,
12 | platformBrowserTesting()
13 | );
14 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/pages/**/*.page.ts",
12 | "src/server/middleware/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/template-blog/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "target": "es2016",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test-setup.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-latest/public/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-latest/public/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/app/app-root.ag:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/app/app.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | imports: [RouterOutlet],
7 | template: ``,
8 | styles: `
9 | :host {
10 | max-width: 1280px;
11 | margin: 0 auto;
12 | padding: 2rem;
13 | text-align: center;
14 | }
15 | `,
16 | })
17 | export class AppComponent {}
18 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/app/pages/index.page.ag:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/app/pages/index.page.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | import { AnalogWelcome } from './analog-welcome';
4 |
5 | @Component({
6 | selector: 'app-home',
7 | imports: [AnalogWelcome],
8 | template: `
9 |
10 | `,
11 | })
12 | export default class HomeComponent {
13 | }
14 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | __APP_COMPONENT_IMPORT__
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(__APP_COMPONENT__, config);
9 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | __APP_COMPONENT_IMPORT__
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(__APP_COMPONENT__, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/server/routes/api/v1/hello.ts:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/styles.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@angular/compiler';
2 | import '@analogjs/vitest-angular/setup-zone';
3 |
4 | import {
5 | BrowserTestingModule,
6 | platformBrowserTesting,
7 | } from '@angular/platform-browser/testing';
8 | import { getTestBed } from '@angular/core/testing';
9 |
10 | getTestBed().initTestEnvironment(
11 | BrowserTestingModule,
12 | platformBrowserTesting()
13 | );
14 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/pages/**/*.page.ts",
12 | "src/server/middleware/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/template-latest/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "target": "es2016",
7 | "types": ["node", "vitest/globals"]
8 | },
9 | "files": ["src/test-setup.ts"],
10 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template", "analogjs.vscode-analog"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
3 | "version": "0.2.0",
4 | "configurations": [
5 | {
6 | "name": "ng serve",
7 | "type": "chrome",
8 | "request": "launch",
9 | "preLaunchTask": "npm: start",
10 | "url": "http://localhost:5173/"
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/public/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-minimal/public/.gitkeep
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/create-analog/template-minimal/public/favicon.ico
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/app/app-root.ag:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/app/app.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | imports: [RouterOutlet],
7 | template: ``,
8 | })
9 | export class AppComponent {}
10 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | __APP_COMPONENT_IMPORT__
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(__APP_COMPONENT__, config);
9 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | __APP_COMPONENT_IMPORT__
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(__APP_COMPONENT__, appConfig);
8 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/create-analog/template-minimal/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/main.server.ts"],
9 | "include": [
10 | "src/**/*.d.ts",
11 | "src/app/pages/**/*.page.ts",
12 | "src/server/middleware/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/create-analog/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "target": "es2020",
5 | "module": "es2020",
6 | "forceConsistentCasingInFileNames": true,
7 | "strict": true,
8 | "noImplicitOverride": true,
9 | "noPropertyAccessFromIndexSignature": true,
10 | "noImplicitReturns": true,
11 | "noFallthroughCasesInSwitch": true
12 | },
13 | "files": [],
14 | "include": []
15 | }
16 |
--------------------------------------------------------------------------------
/packages/create-analog/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "module": "commonjs",
5 | "outDir": "../../dist/out-tsc",
6 | "inlineSourceMap": true,
7 | "sourceMap": false,
8 | "declaration": true,
9 | "types": []
10 | },
11 | "include": ["**/*.ts"],
12 | "exclude": [
13 | "vite.config.ts",
14 | "**/*.spec.ts",
15 | "**/*.test.ts",
16 | "src/test-setup.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/packages/create-analog/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["vitest/globals", "node"]
7 | },
8 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/create-analog/vite.config.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | import { defineConfig } from 'vite';
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig(({ mode }) => {
7 | return {
8 | test: {
9 | globals: true,
10 | environment: 'jsdom',
11 | include: ['__tests__/**/*.spec.ts'],
12 | reporters: ['default'],
13 | },
14 | define: {
15 | 'import.meta.vitest': mode !== 'production',
16 | },
17 | };
18 | });
19 |
--------------------------------------------------------------------------------
/packages/nx-plugin/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@nx/js/babel",
5 | {
6 | "useBuiltIns": "usage"
7 | }
8 | ]
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/README.md:
--------------------------------------------------------------------------------
1 | # @analogjs/platform
2 |
3 | Official plugin to add Analog to your Nx monorepo.
4 |
5 | ## Supported Generators
6 |
7 | ### app
8 |
9 | Creates a preconfigured Analog application.
10 |
11 | ```sh
12 | nx g @analogjs/platform:application analog-app
13 | ```
14 |
15 | ## Development
16 |
17 | ### Building
18 |
19 | Run `nx build nx-plugin` to build the library.
20 |
21 | ### Running unit tests
22 |
23 | Run `nx test nx-plugin` to execute the unit tests via [Jest](https://jestjs.io).
24 |
--------------------------------------------------------------------------------
/packages/nx-plugin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@analogjs/nx",
3 | "version": "0.0.1",
4 | "main": "src/index.js"
5 | }
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite-dev-server/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxExecutor } from '@nx/devkit';
2 |
3 | import viteDevServerExecutor from './vite-dev-server.impl';
4 |
5 | export default convertNxExecutor(viteDevServerExecutor);
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite-dev-server/schema.d.ts:
--------------------------------------------------------------------------------
1 | export { ViteDevServerExecutorOptions } from '@nx/vite/executors';
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.ts:
--------------------------------------------------------------------------------
1 | import { viteDevServerExecutor } from '@nx/vite/executors';
2 |
3 | export default viteDevServerExecutor;
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxExecutor } from '@nx/devkit';
2 |
3 | import viteBuildExecutor from './vite.impl';
4 |
5 | export default convertNxExecutor(viteBuildExecutor);
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite/schema.d.ts:
--------------------------------------------------------------------------------
1 | import type { FileReplacement } from '@nx/vite/plugins/rollup-replace-files.plugin';
2 | export { ViteBuildExecutorOptions } from '@nx/vite/executors';
3 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vite/vite.impl.ts:
--------------------------------------------------------------------------------
1 | import { viteBuildExecutor } from '@nx/vite/executors';
2 |
3 | export default viteBuildExecutor;
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vitest/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxExecutor } from '@nx/devkit';
2 |
3 | import vitestExecutor from './vitest.impl';
4 |
5 | export default convertNxExecutor(vitestExecutor);
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vitest/schema.d.ts:
--------------------------------------------------------------------------------
1 | export { VitestExecutorOptions } from '@nx/vite/executors';
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/executors/vitest/vitest.impl.ts:
--------------------------------------------------------------------------------
1 | import { vitestExecutor } from '@nx/vite/executors';
2 |
3 | export default vitestExecutor;
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxGenerator } from '@nx/devkit';
2 | import generator from './generator';
3 |
4 | export default convertNxGenerator(generator);
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/index-page/src/app/pages/(home).page.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | import { AnalogWelcomeComponent } from './analog-welcome.component';
4 |
5 | @Component({
6 | selector: '<%= fileName %>-home',
7 | <% if (majorAngularVersion < 19) { %>standalone: true,<% } %>
8 | imports: [AnalogWelcomeComponent],
9 | template: `
10 | <<%= fileName %>-analog-welcome/>
11 | `,
12 | })
13 | export default class HomeComponent {
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/tailwind/v2/postcss.config.cjs__template__:
--------------------------------------------------------------------------------
1 | const { join } = require('node:path');
2 |
3 | module.exports = {
4 | plugins: {
5 | tailwindcss: {
6 | config: join(__dirname, 'tailwind.config.cjs')
7 | },
8 | autoprefixer: {}
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/tailwind/v2/tailwind.config.cjs__template__:
--------------------------------------------------------------------------------
1 | const { createGlobPatternsForDependencies } = require('@nx/angular/tailwind');
2 | const { join } = require('node:path');
3 |
4 | /** @type {import('tailwindcss').Config} */
5 | module.exports = {
6 | content: [
7 | join(__dirname, '<%= relativeSourceRoot %>/**/!(*.stories|*.spec).{ts,html}'),
8 | ...createGlobPatternsForDependencies(__dirname),
9 | ],
10 | theme: {
11 | extend: {},
12 | },
13 | plugins: [],
14 | };
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/tailwind/v3/postcss.config.cjs__template__:
--------------------------------------------------------------------------------
1 | const { join } = require('node:path');
2 |
3 | module.exports = {
4 | plugins: {
5 | tailwindcss: {
6 | config: join(__dirname, 'tailwind.config.ts')
7 | },
8 | autoprefixer: {}
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/tailwind/v3/tailwind.config.ts__template__:
--------------------------------------------------------------------------------
1 | import type { Config } from 'tailwindcss';
2 | import { createGlobPatternsForDependencies } from '@nx/angular/tailwind';
3 | import { join } from 'node:path';
4 |
5 | export default {
6 | content: [
7 | join(__dirname, '<%= relativeSourceRoot %>/**/!(*.stories|*.spec).{ts,html,md,analog,ag}'),
8 | ...createGlobPatternsForDependencies(__dirname),
9 | ],
10 | theme: {
11 | extend: {},
12 | },
13 | plugins: [],
14 | } satisfies Config;
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: '<%= fileName %>-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | template: ` `,
9 | })
10 | export class AppComponent {}
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/main.providers.ts__template__:
--------------------------------------------------------------------------------
1 | /**
2 | * Common providers shared with client and server-side.
3 | */
4 |
5 | export const mainProviders = [];
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/server/routes/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/test-setup.ts__template__:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: '<%= fileName %>-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | template: ` `,
9 | })
10 | export class AppComponent {}
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/app/app.config.server.ts__template__:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig, mergeApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 | import { appConfig } from './app.config';
4 |
5 | const serverConfig: ApplicationConfig = {
6 | providers: [provideServerRendering()],
7 | };
8 |
9 | export const config = mergeApplicationConfig(appConfig, serverConfig);
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/main.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err)
9 | );
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/public/assets/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/public/assets/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/server/routes/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/test-setup.ts__template__:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v16/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/package.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module"
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: '<%= fileName %>-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | template: ` `,
9 | })
10 | export class AppComponent {}
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/main.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err)
9 | );
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/public/assets/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/public/assets/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/server/routes/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/test-setup.ts__template__:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v17/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/package.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module"
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/public/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular-v18/public/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: '<%= fileName %>-root',
6 | standalone: true,
7 | imports: [RouterOutlet],
8 | template: ` `,
9 | })
10 | export class AppComponent {}
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/app/app.config.server.ts__template__:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/main.server.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { config } from './app/app.config.server';
6 | import { AppComponent } from './app/app.component';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/main.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err)
9 | );
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/server/routes/api/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/test-setup.ts__template__:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v18/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/package.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module"
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/public/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular-v19/public/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: '<%= fileName %>-root',
6 | imports: [RouterOutlet],
7 | template: ` `,
8 | })
9 | export class AppComponent {}
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/app/app.config.server.ts__template__:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/main.server.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { AppComponent } from './app/app.component';
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/main.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err)
9 | );
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/server/routes/api/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/test-setup.ts__template__:
--------------------------------------------------------------------------------
1 | import '@analogjs/vitest-angular/setup-zone';
2 |
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 | import { getTestBed } from '@angular/core/testing';
8 |
9 | getTestBed().initTestEnvironment(
10 | BrowserDynamicTestingModule,
11 | platformBrowserDynamicTesting()
12 | );
13 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/package.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "type": "module"
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/public/.gitkeep__template__:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/generators/app/files/template-angular/public/.gitkeep__template__
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/app/app.component.ts__template__:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterOutlet } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | imports: [RouterOutlet],
7 | template: ` `,
8 | })
9 | export class AppComponent {}
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/app/app.config.server.ts__template__:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/main.server.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { AppComponent } from './app/app.component';
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/main.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 | import { bootstrapApplication } from '@angular/platform-browser';
3 |
4 | import { AppComponent } from './app/app.component';
5 | import { appConfig } from './app/app.config';
6 |
7 | bootstrapApplication(AppComponent, appConfig).catch((err) =>
8 | console.error(err)
9 | );
10 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/server/routes/api/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/styles.css__template__:
--------------------------------------------------------------------------------
1 | html, body {
2 | display: block;
3 | height: 100%;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/src/vite-env.d.ts__template__:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/tsconfig.editor.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.ts"],
4 | "compilerOptions": {
5 | "types": ["node", "vitest/globals"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/template-angular/tsconfig.spec.json__template__:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5 | "types": ["node", "vitest/globals"]
6 | },
7 | "files": [
8 | "src/test-setup.ts",
9 | ],
10 | "include": [
11 | "src/**/*.spec.ts",
12 | "**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/note.ts__template__:
--------------------------------------------------------------------------------
1 | export type Note = {
2 | id: number;
3 | note: string;
4 | createdAt: string;
5 | };
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/server/routes/api/trpc/[trpc].ts__template__:
--------------------------------------------------------------------------------
1 | import { createTrpcNitroHandler } from '@analogjs/trpc/server';
2 |
3 | import { appRouter } from '../../../trpc/routers';
4 | import { createContext } from '../../../trpc/context';
5 |
6 | // export API handler
7 | export default createTrpcNitroHandler({
8 | router: appRouter,
9 | createContext,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/server/trpc/context.ts__template__:
--------------------------------------------------------------------------------
1 | import { inferAsyncReturnType } from '@trpc/server';
2 | /**
3 | * Creates context for an incoming request
4 | * @link https://trpc.io/docs/context
5 | */
6 | export const createContext = () => ({});
7 | export type Context = inferAsyncReturnType;
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/server/trpc/routers/index.ts__template__:
--------------------------------------------------------------------------------
1 | import { router } from '../trpc';
2 | import { noteRouter } from './notes';
3 |
4 | export const appRouter = router({
5 | note: noteRouter,
6 | });
7 | // export type definition of API
8 | export type AppRouter = typeof appRouter;
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/server/trpc/trpc.ts__template__:
--------------------------------------------------------------------------------
1 | import { initTRPC } from '@trpc/server';
2 | import { Context } from './context';
3 | import { SuperJSON } from 'superjson';
4 |
5 | const t = initTRPC.context().create({
6 | transformer: SuperJSON,
7 | });
8 | /**
9 | * Unprotected procedure
10 | **/
11 | export const publicProcedure = t.procedure;
12 | export const router = t.router;
13 | export const middleware = t.middleware;
14 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/files/trpc/src/trpc-client.ts__template__:
--------------------------------------------------------------------------------
1 | import { AppRouter } from './server/trpc/routers';
2 | import { createTrpcClient } from '@analogjs/trpc';
3 | import { inject } from '@angular/core';
4 | import { SuperJSON } from 'superjson';
5 |
6 | export const { provideTrpcClient, TrpcClient } = createTrpcClient({
7 | url: '/api/trpc',
8 | options: {
9 | transformer: SuperJSON,
10 | },
11 | });
12 |
13 | export function injectTrpcClient() {
14 | return inject(TrpcClient);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/lib/add-vite-plugin.ts:
--------------------------------------------------------------------------------
1 | import { Tree } from '@nx/devkit';
2 |
3 | export async function initVite(tree: Tree): Promise {
4 | const linterOptions = {
5 | addPlugin: true,
6 | skipFormat: true,
7 | };
8 | await (
9 | await import(
10 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11 | // @ts-ignore
12 | '@nx/vite'
13 | )
14 | ).initGenerator(tree, linterOptions);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/app/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface AnalogNxApplicationGeneratorOptions {
2 | analogAppName: string;
3 | tags?: string;
4 | addTailwind?: boolean;
5 | addTRPC?: boolean;
6 | skipFormat?: boolean;
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/init/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxGenerator } from '@nx/devkit';
2 |
3 | import setupAnalogGenerator from './generator';
4 |
5 | export default convertNxGenerator(setupAnalogGenerator);
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/init/files/src/app/app.config.server.ts__template__:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 |
4 | import { appConfig } from './app.config';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [provideServerRendering()],
8 | };
9 |
10 | export const config = mergeApplicationConfig(appConfig, serverConfig);
11 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/init/files/src/main.server.ts__template__:
--------------------------------------------------------------------------------
1 | import 'zone.js/node';
2 | import '@angular/platform-server/init';
3 | import { render } from '@analogjs/router/server';
4 |
5 | import { AppComponent } from './app/app.component';
6 | import { config } from './app/app.config.server';
7 |
8 | export default render(AppComponent, config);
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/init/files/src/server/routes/api/v1/hello.ts__template__:
--------------------------------------------------------------------------------
1 | import { defineEventHandler } from 'h3';
2 |
3 | export default defineEventHandler(() => ({ message: 'Hello World' }));
4 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/init/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface SetupAnalogGeneratorSchema {
2 | project: string;
3 | vitest: boolean;
4 | }
5 |
6 | export interface NormalizedSchema extends SetupAnalogGeneratorSchema {
7 | projectRoot: string;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/page/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface AnalogPageGeneratorSchema {
2 | pathname: string;
3 | project: string;
4 | metadata?: boolean;
5 | title?: string;
6 | redirectPage?: boolean;
7 | redirectPath?: string;
8 | pathMatch?: string;
9 | }
10 |
11 | export interface NormalizedSchema extends AnalogPageGeneratorSchema {
12 | projectRoot: string;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/preset/generator.ts:
--------------------------------------------------------------------------------
1 | import { ensurePackage, NX_VERSION, Tree } from '@nx/devkit';
2 | import { PresetGeneratorSchema } from './schema';
3 |
4 | export default async function (tree: Tree, options: PresetGeneratorSchema) {
5 | ensurePackage('@nx/angular', NX_VERSION);
6 | ensurePackage('@angular-devkit/build-angular', 'latest');
7 |
8 | return await import('../app/generator').then(({ appGenerator }) =>
9 | appGenerator(tree, options),
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/preset/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface PresetGeneratorSchema {
2 | analogAppName: string;
3 | tags?: string;
4 | addTailwind?: boolean;
5 | addTRPC?: boolean;
6 | skipFormat?: boolean;
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/setup-vitest/compat.ts:
--------------------------------------------------------------------------------
1 | import { convertNxGenerator } from '@nx/devkit';
2 |
3 | import setupVitestGenerator from './generator';
4 |
5 | export default convertNxGenerator(setupVitestGenerator);
6 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.ts:
--------------------------------------------------------------------------------
1 | import { addDependenciesToPackageJson, Tree } from '@nx/devkit';
2 |
3 | import { getAnalogDevDependencies } from '../../../utils/versions/dev-dependencies';
4 |
5 | export function addAnalogDependencies(
6 | tree: Tree,
7 | angularVersion: string,
8 | nxVersion: string,
9 | ) {
10 | const devDependencies = getAnalogDevDependencies(angularVersion, nxVersion);
11 |
12 | addDependenciesToPackageJson(tree, {}, devDependencies);
13 | }
14 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/generators/setup-vitest/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface SetupVitestGeneratorSchema {
2 | project: string;
3 | }
4 |
5 | export interface NormalizedSchema extends AnalogPageGeneratorSchema {
6 | projectRoot: string;
7 | }
8 |
--------------------------------------------------------------------------------
/packages/nx-plugin/src/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/nx-plugin/src/index.ts
--------------------------------------------------------------------------------
/packages/nx-plugin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "module": "commonjs"
5 | },
6 | "files": [],
7 | "include": [],
8 | "references": [
9 | {
10 | "path": "./tsconfig.lib.json"
11 | },
12 | {
13 | "path": "./tsconfig.spec.json"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/nx-plugin/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "resolveJsonModule": true,
5 | "esModuleInterop": true,
6 | "outDir": "../../dist/out-tsc",
7 | "declaration": true,
8 | "types": ["node"]
9 | },
10 | "include": ["src/**/*.ts"],
11 | "exclude": [
12 | "src/generators/app/files/**/*",
13 | "src/**/*.spec.ts",
14 | "src/**/*.test.ts"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/nx-plugin/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "include": ["src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"],
9 | "exclude": [
10 | "src/**/files/**/*.test.ts",
11 | "src/**/files/**/*.spec.ts",
12 | "src/**/files/**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/platform/README.md:
--------------------------------------------------------------------------------
1 | # Analog
2 |
3 | The fullstack meta-framework for Angular
4 |
5 | Learn more at [analogjs.org](https://analogjs.org)
6 |
--------------------------------------------------------------------------------
/packages/platform/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/platform/src/index.ts:
--------------------------------------------------------------------------------
1 | import { platformPlugin } from './lib/platform-plugin.js';
2 |
3 | export { Options, PrerenderContentFile } from './lib/options';
4 | export default platformPlugin;
5 |
--------------------------------------------------------------------------------
/packages/platform/src/lib/content/marked/index.ts:
--------------------------------------------------------------------------------
1 | import { MarkedExtension } from 'marked';
2 |
3 | export type WithMarkedOptions = {
4 | mangle?: boolean;
5 | extensions?: MarkedExtension[];
6 | };
7 |
--------------------------------------------------------------------------------
/packages/platform/src/lib/content/marked/marked-content-highlighter.ts:
--------------------------------------------------------------------------------
1 | export interface MarkedContentHighlighter {
2 | augmentCodeBlock?(code: string, lang: string): string;
3 | }
4 |
5 | export abstract class MarkedContentHighlighter {
6 | abstract getHighlightExtension(): import('marked').MarkedExtension;
7 | }
8 |
--------------------------------------------------------------------------------
/packages/platform/src/lib/content/prism/index.ts:
--------------------------------------------------------------------------------
1 | import { PrismHighlighter } from './prism-highlighter.js';
2 |
3 | export { PrismHighlighter };
4 |
5 | export function getPrismHighlighter() {
6 | return new PrismHighlighter();
7 | }
8 |
--------------------------------------------------------------------------------
/packages/platform/src/lib/content/prism/options.ts:
--------------------------------------------------------------------------------
1 | export type WithPrismHighlighterOptions = {
2 | additionalLangs?: string[];
3 | };
4 |
--------------------------------------------------------------------------------
/packages/platform/src/lib/content/shiki/options.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ShikiHighlighterOptions,
3 | ShikiHighlightOptions,
4 | } from './shiki-highlighter.js';
5 |
6 | import { BundledLanguage } from 'shiki/langs';
7 |
8 | export interface WithShikiHighlighterOptions {
9 | highlighter?: Partial & {
10 | additionalLangs?: BundledLanguage[];
11 | };
12 | highlight?: ShikiHighlightOptions;
13 | container?: string;
14 | }
15 |
--------------------------------------------------------------------------------
/packages/platform/src/test-setup.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/analogjs/analog/057b3020a94455a054c4eb87bb4b46755ab54b43/packages/platform/src/test-setup.ts
--------------------------------------------------------------------------------
/packages/platform/tsconfig.lib.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.lib.json",
3 | "compilerOptions": {
4 | "declarationMap": false
5 | },
6 | "angularCompilerOptions": {
7 | "compilationMode": "partial"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/platform/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["vitest/globals", "node"]
7 | },
8 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/router/README.md:
--------------------------------------------------------------------------------
1 | # Analog
2 |
3 | The fullstack meta-framework for Angular
4 |
5 | Learn more at [analogjs.org](https://analogjs.org)
6 |
--------------------------------------------------------------------------------
/packages/router/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/router/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../node_modules/@analogjs/router",
4 | "assets": ["*.md", "migrations/migration.json"],
5 | "lib": {
6 | "entryFile": "src/index.ts"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/router/server/actions/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/router/server/actions/src/index.ts:
--------------------------------------------------------------------------------
1 | export { PageServerAction, json, redirect, fail } from './actions';
2 |
--------------------------------------------------------------------------------
/packages/router/server/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/router/server/src/index.ts:
--------------------------------------------------------------------------------
1 | export { provideServerContext } from './provide-server-context';
2 | export { injectStaticProps, injectStaticOutputs } from './tokens';
3 | export {
4 | serverComponentRequest,
5 | renderServerComponent,
6 | } from './server-component-render';
7 | export { render } from './render';
8 |
--------------------------------------------------------------------------------
/packages/router/src/lib/constants.ts:
--------------------------------------------------------------------------------
1 | export const ENDPOINT_EXTENSION = '.server.ts';
2 | export const APP_DIR = 'src/app';
3 |
--------------------------------------------------------------------------------
/packages/router/src/lib/debug/index.ts:
--------------------------------------------------------------------------------
1 | import { ROUTES } from '@angular/router';
2 |
3 | /**
4 | * Provides routes that provide additional
5 | * pages for displaying and debugging
6 | * routes.
7 | */
8 | export function withDebugRoutes() {
9 | const routes = [
10 | {
11 | path: '__analog/routes',
12 | loadComponent: () => import('./debug.page'),
13 | },
14 | ];
15 |
16 | return {
17 | ɵkind: 101 as number,
18 | ɵproviders: [{ provide: ROUTES, useValue: routes, multi: true }],
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/packages/router/src/lib/endpoints.ts:
--------------------------------------------------------------------------------
1 | export const ANALOG_META_KEY = Symbol(
2 | '@analogjs/router Analog Route Metadata Key',
3 | );
4 |
5 | /**
6 | * This variable reference is replaced with a glob of all route endpoints.
7 | */
8 | export let ANALOG_PAGE_ENDPOINTS: any = {};
9 |
--------------------------------------------------------------------------------
/packages/router/src/lib/get-load-resolver.ts:
--------------------------------------------------------------------------------
1 | import { ActivatedRouteSnapshot } from '@angular/router';
2 |
3 | /**
4 | * Get server load resolver data for the route
5 | *
6 | * @param route Provides the route to get server load resolver
7 | * @returns Returns server load resolver data for the route
8 | */
9 | export async function getLoadResolver(
10 | route: ActivatedRouteSnapshot,
11 | ): Promise {
12 | return route.routeConfig?.resolve?.['load']?.(route);
13 | }
14 |
--------------------------------------------------------------------------------
/packages/router/src/lib/route-types.ts:
--------------------------------------------------------------------------------
1 | import type { H3Event, H3EventContext } from 'h3';
2 | import type { $Fetch } from 'nitropack';
3 |
4 | export type PageServerLoad = {
5 | params: H3EventContext['params'];
6 | req: H3Event['node']['req'];
7 | res: H3Event['node']['res'];
8 | fetch: $Fetch;
9 | event: H3Event;
10 | };
11 |
12 | export type LoadResult<
13 | A extends (pageServerLoad: PageServerLoad) => Promise,
14 | > = Awaited>;
15 |
--------------------------------------------------------------------------------
/packages/router/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 | import '@angular/compiler';
3 |
4 | /**
5 | * Initialize TestBed for all tests inside of router
6 | */
7 | import { TestBed } from '@angular/core/testing';
8 | import {
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting,
11 | } from '@angular/platform-browser-dynamic/testing';
12 |
13 | TestBed.initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting(),
16 | );
17 |
--------------------------------------------------------------------------------
/packages/router/tokens/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/router/tsconfig.lib.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.lib.json",
3 | "compilerOptions": {
4 | "declarationMap": false,
5 | "target": "ES2022",
6 | "useDefineForClassFields": false
7 | },
8 | "angularCompilerOptions": {
9 | "compilationMode": "partial"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/router/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["node", "vitest/globals"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/storybook-angular/preset/preset.d.ts:
--------------------------------------------------------------------------------
1 | import { PresetProperty } from 'storybook/internal/types';
2 | import { StorybookConfig } from './src/types';
3 | export declare const core: PresetProperty<'core'>;
4 | export declare const viteFinal: NonNullable;
5 | export { addons, previewAnnotations } from '@storybook/angular/dist/preset.js';
6 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './types';
2 | export * from '@storybook/angular/dist/client/index.js';
3 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/lib/build-storybook/build-storybook.ts:
--------------------------------------------------------------------------------
1 | import BuildStorybookBuilder from '@storybook/angular/dist/builders/build-storybook/index.js';
2 |
3 | export default BuildStorybookBuilder;
4 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/lib/builders.json:
--------------------------------------------------------------------------------
1 | {
2 | "builders": {
3 | "build-storybook": {
4 | "implementation": "./build-storybook/build-storybook",
5 | "schema": "./build-storybook/schema.json",
6 | "description": "Build storybook"
7 | },
8 | "start-storybook": {
9 | "implementation": "./start-storybook/start-storybook",
10 | "schema": "./start-storybook/schema.json",
11 | "description": "Start storybook"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/lib/start-storybook/start-storybook.ts:
--------------------------------------------------------------------------------
1 | import StartStorybookBuilder from '@storybook/angular/dist/builders/start-storybook/index.js';
2 |
3 | export default StartStorybookBuilder;
4 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/lib/utils/standalone-options.ts:
--------------------------------------------------------------------------------
1 | import {
2 | BuilderOptions,
3 | CLIOptions,
4 | LoadOptions,
5 | } from 'storybook/internal/types';
6 |
7 | export type StandaloneOptions = CLIOptions &
8 | LoadOptions &
9 | BuilderOptions & {
10 | mode?: 'static' | 'dev';
11 | enableProdMode: boolean;
12 | angularBuilderOptions?: Record & {
13 | experimentalZoneless?: boolean;
14 | };
15 | tsConfig?: string;
16 | };
17 |
--------------------------------------------------------------------------------
/packages/storybook-angular/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 | import { getTestBed } from '@angular/core/testing';
3 | import {
4 | BrowserDynamicTestingModule,
5 | platformBrowserDynamicTesting,
6 | } from '@angular/platform-browser-dynamic/testing';
7 |
8 | getTestBed().initTestEnvironment(
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting(),
11 | );
12 |
--------------------------------------------------------------------------------
/packages/storybook-angular/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "module": "commonjs"
5 | },
6 | "files": [],
7 | "include": [],
8 | "references": [
9 | {
10 | "path": "./tsconfig.lib.json"
11 | },
12 | {
13 | "path": "./tsconfig.spec.json"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/storybook-angular/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "resolveJsonModule": true,
5 | "esModuleInterop": true,
6 | "outDir": "../../dist/out-tsc",
7 | "declaration": true,
8 | "types": ["node"]
9 | },
10 | "include": ["src/**/*.ts"],
11 | "exclude": [
12 | "src/generators/app/files/**/*",
13 | "src/**/*.spec.ts",
14 | "src/**/*.test.ts",
15 | "**/template/**"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/packages/storybook-angular/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["webpack-env", "node"],
5 | "typeRoots": ["../../node_modules/@types", "node_modules/@types"],
6 | "allowJs": true
7 | },
8 | "include": ["**/*.test.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/trpc/README.md:
--------------------------------------------------------------------------------
1 | # Analog
2 |
3 | The fullstack meta-framework for Angular
4 |
5 | Learn more at [analogjs.org](https://analogjs.org)
6 |
--------------------------------------------------------------------------------
/packages/trpc/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {},
4 | "packageJsonUpdates": {
5 | "0.2.30": {
6 | "version": "0.2.29",
7 | "description": "Updates the superjson dependency from 1.x to 2.x",
8 | "packages": {
9 | "superjson": {
10 | "version": "^2.2.1",
11 | "alwaysAddToPackageJson": true
12 | }
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/trpc/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../node_modules/@analogjs/trpc",
4 | "assets": ["*.md", "migrations/migration.json"],
5 | "lib": {
6 | "entryFile": "src/index.ts"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/trpc/server/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "lib": {
3 | "entryFile": "src/index.ts"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/trpc/server/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/server';
2 |
--------------------------------------------------------------------------------
/packages/trpc/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/client/client';
2 | export * from './lib/utils/wait-for';
3 |
4 | export { CreateTrpcProxyClient } from './lib/client/trpc-rxjs-proxy';
5 |
--------------------------------------------------------------------------------
/packages/trpc/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '@analogjs/vite-plugin-angular/setup-vitest';
2 | import '@angular/compiler';
3 |
4 | /**
5 | * Initialize TestBed for all tests inside of router
6 | */
7 | import { TestBed } from '@angular/core/testing';
8 | import {
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting,
11 | } from '@angular/platform-browser-dynamic/testing';
12 |
13 | TestBed.initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting(),
16 | );
17 |
--------------------------------------------------------------------------------
/packages/trpc/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "declarationMap": true,
7 | "inlineSources": true,
8 | "types": ["node"]
9 | },
10 | "exclude": ["src/**/*.spec.ts", "jest.config.ts", "src/**/*.test.ts"],
11 | "include": ["src/**/*.ts"]
12 | }
13 |
--------------------------------------------------------------------------------
/packages/trpc/tsconfig.lib.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.lib.json",
3 | "compilerOptions": {
4 | "declarationMap": false
5 | },
6 | "angularCompilerOptions": {
7 | "compilationMode": "partial"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/jest.config.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | export default {
3 | displayName: 'vite-plugin-angular',
4 | preset: '../../jest.preset.js',
5 | globals: {
6 | 'ts-jest': {
7 | tsconfig: '/tsconfig.spec.json',
8 | },
9 | },
10 | transform: {
11 | '^.+\\.[tj]s$': 'ts-jest',
12 | },
13 | moduleFileExtensions: ['ts', 'js', 'html'],
14 | coverageDirectory: '../../coverage/packages/vite-plugin-angular',
15 | };
16 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/src/index.ts:
--------------------------------------------------------------------------------
1 | import { angular } from './lib/angular-vite-plugin.js';
2 | export { PluginOptions } from './lib/angular-vite-plugin.js';
3 | export { compileAnalogFile } from './lib/authoring/analog.js';
4 | export {
5 | MarkdownTemplateTransform,
6 | defaultMarkdownTemplateTransforms,
7 | } from './lib/authoring/markdown-transform.js';
8 |
9 | export default angular;
10 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/src/lib/models.ts:
--------------------------------------------------------------------------------
1 | import type ts from 'typescript';
2 |
3 | export interface EmitFileResult {
4 | content?: string;
5 | map?: string;
6 | dependencies: readonly string[];
7 | hash?: Uint8Array;
8 | errors?: (string | ts.DiagnosticMessageChain)[];
9 | warnings?: (string | ts.DiagnosticMessageChain)[];
10 | hmrUpdateCode?: string | null;
11 | hmrEligible?: boolean | null;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import '../setup-vitest';
2 | import '@angular/compiler';
3 |
4 | /**
5 | * Initialize TestBed for all tests inside of vite-plugin-angular
6 | */
7 | import { getTestBed } from '@angular/core/testing';
8 | import {
9 | BrowserDynamicTestingModule,
10 | platformBrowserDynamicTesting,
11 | } from '@angular/platform-browser-dynamic/testing';
12 |
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting(),
16 | );
17 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "module": "es2020",
5 | "outDir": "../../dist/out-tsc",
6 | "declaration": true,
7 | "types": [],
8 | "allowSyntheticDefaultImports": true
9 | },
10 | "include": ["**/*.ts"],
11 | "exclude": [
12 | "jest.config.ts",
13 | "**/*.spec.ts",
14 | "**/*.test.ts",
15 | "src/test-setup.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/packages/vite-plugin-angular/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["node", "vitest/globals"]
7 | },
8 | "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["../../.eslintrc.json"],
3 | "ignorePatterns": [
4 | "!**/*",
5 | "**/vite.config.*.timestamp*",
6 | "**/vitest.config.*.timestamp*"
7 | ],
8 | "overrides": [
9 | {
10 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
11 | "rules": {}
12 | },
13 | {
14 | "files": ["*.ts", "*.tsx"],
15 | "rules": {}
16 | },
17 | {
18 | "files": ["*.js", "*.jsx"],
19 | "rules": {}
20 | }
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/migrations/migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3 | "schematics": {}
4 | }
5 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/src/index.ts:
--------------------------------------------------------------------------------
1 | import { nitro } from './lib/vite-plugin-nitro.js';
2 | export {
3 | Options,
4 | SitemapConfig,
5 | PrerenderRouteConfig,
6 | PrerenderContentDir,
7 | PrerenderContentFile,
8 | } from './lib/options.js';
9 |
10 | declare module 'nitropack' {
11 | interface NitroRouteConfig {
12 | ssr?: boolean;
13 | }
14 |
15 | interface NitroRouteRules {
16 | ssr?: boolean;
17 | }
18 | }
19 |
20 | export default nitro;
21 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/src/lib/hooks/post-rendering-hook.ts:
--------------------------------------------------------------------------------
1 | import { Nitro, PrerenderRoute } from 'nitropack';
2 |
3 | export function addPostRenderingHooks(
4 | nitro: Nitro,
5 | hooks: ((pr: PrerenderRoute) => Promise)[],
6 | ): void {
7 | hooks.forEach((hook: (preRoute: PrerenderRoute) => void) => {
8 | nitro.hooks.hook('prerender:generate', (route: PrerenderRoute) => {
9 | hook(route);
10 | });
11 | });
12 | }
13 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/src/lib/runtime/renderer-client.mjs:
--------------------------------------------------------------------------------
1 | import { eventHandler } from 'h3';
2 |
3 | // @ts-ignore
4 | import template from '#analog/index';
5 |
6 | export default eventHandler(async () => {
7 | return template;
8 | });
9 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/src/lib/runtime/renderer-client.ts:
--------------------------------------------------------------------------------
1 | import { eventHandler } from 'h3';
2 |
3 | // @ts-ignore
4 | import template from '#analog/index';
5 |
6 | export default eventHandler(async () => {
7 | return template;
8 | });
9 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/test-data/content/01-first.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: First
3 | slug: first
4 | description: My First Post
5 | ---
6 |
7 | First Content File
8 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/test-data/content/02-second.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Second
3 | description: My Second Post
4 | ---
5 |
6 | Second Content File
7 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/test-data/content/03-third.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Third (Draft)
3 | description: My Third Post (Draft)
4 | draft: true
5 | ---
6 |
7 | Third Content File (Draft)
8 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "esModuleInterop": true,
5 | "outDir": "../../dist/out-tsc",
6 | "declaration": true,
7 | "types": []
8 | },
9 | "include": ["src/**/*.ts"],
10 | "exclude": [
11 | "vite.config.ts",
12 | "src/**/*.spec.ts",
13 | "src/**/*.spec.data.ts",
14 | "src/**/*.test.ts",
15 | "src/lib/runtime/*.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/packages/vite-plugin-nitro/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["vitest/globals", "vitest/importMeta", "vite/client", "node"]
6 | },
7 | "include": [
8 | "vite.config.ts",
9 | "./src/**/*.test.ts",
10 | "./src/**/*.spec.ts",
11 | "./src/**/*.d.ts"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/vitest-angular/builders.json:
--------------------------------------------------------------------------------
1 | {
2 | "builders": {
3 | "test": {
4 | "implementation": "./src/lib/builders/test/vitest.impl",
5 | "schema": "./src/lib/builders/test/schema.json",
6 | "description": "Run tests with Vitest"
7 | },
8 | "build-test": {
9 | "implementation": "./src/lib/builders/build/vitest.impl",
10 | "schema": "./src/lib/builders/build/schema.json",
11 | "description": "Bundle and run tests with Vitest using the Application Builder"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/vitest-angular/src/index.ts:
--------------------------------------------------------------------------------
1 | import vitestBuilder from './lib/builders/test/vitest.impl';
2 | import vitestApplicationBuilder from './lib/builders/build/vitest.impl';
3 |
4 | export { vitestBuilder, vitestApplicationBuilder };
5 |
--------------------------------------------------------------------------------
/packages/vitest-angular/src/lib/builders/build/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface VitestSchema {
2 | mode?: string;
3 | setupFile: string;
4 | configFile?: string;
5 | include: string[];
6 | exclude?: string[];
7 | watch?: boolean;
8 | tsConfig: string;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/vitest-angular/src/lib/builders/build/utils.ts:
--------------------------------------------------------------------------------
1 | export type AngularMemoryOutputFiles = Map<
2 | string,
3 | { contents: Uint8Array; hash: string; servable: boolean }
4 | >;
5 |
--------------------------------------------------------------------------------
/packages/vitest-angular/src/lib/builders/test/schema.d.ts:
--------------------------------------------------------------------------------
1 | export interface VitestSchema {
2 | mode?: string;
3 | configFile?: string;
4 | reportsDirectory?: string;
5 | testFiles?: string[];
6 | watch?: boolean;
7 | ui?: boolean;
8 | coverage?: boolean;
9 | update?: boolean;
10 | }
11 |
--------------------------------------------------------------------------------
/packages/vitest-angular/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "declaration": true,
6 | "types": ["node"]
7 | },
8 | "include": [
9 | "src/**/*.ts",
10 | "setup-zone.ts",
11 | "setup-snapshots.ts",
12 | "plugin.ts"
13 | ],
14 | "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"]
15 | }
16 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'apps/docs-app'
3 |
--------------------------------------------------------------------------------
/tools/tsconfig.tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.base.json",
3 | "compilerOptions": {
4 | "outDir": "../dist/out-tsc/tools",
5 | "rootDir": ".",
6 | "module": "commonjs",
7 | "target": "es5",
8 | "types": ["node"],
9 | "importHelpers": false
10 | },
11 | "include": ["**/*.ts"]
12 | }
13 |
--------------------------------------------------------------------------------
/vitest.workspace.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | 'packages/**/vite.config.{mjs,js,ts,mts}',
3 | '!**/create-analog/**',
4 | ];
5 |
--------------------------------------------------------------------------------
/zerops.yaml:
--------------------------------------------------------------------------------
1 | zerops:
2 | - setup: docs0
3 | build:
4 | base: nodejs@22
5 | envVariables:
6 | CI: true
7 | buildCommands:
8 | - pnpm i
9 | - pnpm exec nx build docs-app
10 | deployFiles:
11 | - dist/apps/docs-app/~
12 | cache:
13 | - node_modules
14 | run:
15 | base: static
16 |
--------------------------------------------------------------------------------