@analogjs/platform 2.7.0-beta.3 → 2.7.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md ADDED
@@ -0,0 +1,74 @@
1
+ # AnalogJS — conventions for AI coding assistants
2
+
3
+ This file ships with `@analogjs/platform` and documents how to work in an [AnalogJS](https://analogjs.org) app (an Angular meta-framework, powered by Vite). A generated app's root `AGENTS.md` points here so the guidance stays in sync with the installed version.
4
+
5
+ ## Commands
6
+
7
+ - `npm start` / `npm run dev` — start the dev server (Vite)
8
+ - `npm run build` — production build
9
+ - `npm test` — run unit tests (Vitest)
10
+ - `npm run preview` — run the built server locally
11
+
12
+ ## Project structure
13
+
14
+ - `src/app/pages/` — file-based routes (see Routing below)
15
+ - `src/app/` — components and app config (`app.config.ts`, `app.config.server.ts`)
16
+ - `src/server/routes/` — server and API routes (Nitro + h3)
17
+ - `src/main.ts` / `src/main.server.ts` — client and server bootstrap
18
+ - `vite.config.ts` — Vite + Analog plugin and Vitest config
19
+
20
+ ## Routing
21
+
22
+ Routes are file-based. A file in `src/app/pages/` ending in `.page.ts` becomes a route, and it must `export default` a standalone Angular component.
23
+
24
+ - `index.page.ts` → `/`
25
+ - `about.page.ts` → `/about`
26
+ - `products/index.page.ts` → `/products`
27
+ - `products/[productId].page.ts` → `/products/:productId` (dynamic segment)
28
+ - `(auth).page.ts` + `(auth)/*.page.ts` → pathless layout: `(auth).page.ts` renders a `<router-outlet />` and wraps its child routes (e.g. `(auth)/login.page.ts` → `/login`, `(auth)/signup.page.ts` → `/signup`) without adding a path segment
29
+ - `[...not-found].page.ts` → catch-all / 404
30
+
31
+ Read route params with `inject(ActivatedRoute)` from `@angular/router`.
32
+
33
+ Define per-route metadata (title, meta tags, guards, resolvers) by exporting a `RouteMeta`:
34
+
35
+ ```ts
36
+ import { RouteMeta } from '@analogjs/router';
37
+
38
+ export const routeMeta: RouteMeta = {
39
+ title: 'Products',
40
+ };
41
+ ```
42
+
43
+ ## Server & API routes
44
+
45
+ Server routes live in `src/server/routes/` and use [h3](https://h3.dev). API routes are conventionally under `src/server/routes/api/`.
46
+
47
+ ```ts
48
+ import { defineEventHandler } from 'h3';
49
+
50
+ export default defineEventHandler(() => ({ message: 'Hello World' }));
51
+ ```
52
+
53
+ Filenames encode the HTTP method and params: `hello.get.ts`, `users.post.ts`, `users/[id].get.ts`.
54
+
55
+ ## Data fetching
56
+
57
+ - **Page load functions:** add a sibling `.server.ts` `load` function and read its result in the page with `injectLoad` from `@analogjs/router`.
58
+ - **Server functions:** define functions in `.server.ts` files and call them from the client with `injectServerFn`.
59
+
60
+ ## Content routes
61
+
62
+ Markdown content is supported via `@analogjs/content`: `injectContent` / `injectContentFiles` to load content, and `MarkdownComponent` (`analog-markdown`) to render it. Content files live in `src/content/`.
63
+
64
+ ## Conventions
65
+
66
+ - Use modern Angular: standalone components, `inject()`, signals, and the built-in control flow (`@if`, `@for`, `@switch`).
67
+ - Page components are **default-exported**.
68
+ - Tests are colocated as `*.spec.ts` and run under Vitest (jsdom environment).
69
+ - Prefer existing Angular and Analog APIs over hand-rolled equivalents.
70
+
71
+ ## More
72
+
73
+ Full documentation: https://analogjs.org/docs
74
+ LLM-friendly docs index: https://analogjs.org/llms.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/platform",
3
- "version": "2.7.0-beta.3",
3
+ "version": "2.7.0-beta.4",
4
4
  "description": "The fullstack meta-framework for Angular",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "nitropack": "^2.13.1",
32
- "@analogjs/vite-plugin-angular": "^2.7.0-beta.3",
33
- "@analogjs/vite-plugin-nitro": "^2.7.0-beta.3",
32
+ "@analogjs/vite-plugin-angular": "^2.7.0-beta.4",
33
+ "@analogjs/vite-plugin-nitro": "^2.7.0-beta.4",
34
34
  "oxc-parser": "^0.121.0",
35
35
  "vitefu": "^1.1.2"
36
36
  },
@@ -1,10 +1,10 @@
1
1
  export declare const V18_X_NX_DEVKIT = "^20.0.0";
2
2
  export declare const V18_X_NX_ANGULAR = "^20.0.0";
3
- export declare const V18_X_ANALOG_JS_CONTENT = "^2.7.0-beta.3";
4
- export declare const V18_X_ANALOG_JS_ROUTER = "^2.7.0-beta.3";
3
+ export declare const V18_X_ANALOG_JS_CONTENT = "^2.7.0-beta.4";
4
+ export declare const V18_X_ANALOG_JS_ROUTER = "^2.7.0-beta.4";
5
5
  export declare const V18_X_ANALOG_JS_TRPC = "~0.4.0";
6
- export declare const V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.7.0-beta.3";
7
- export declare const V18_X_ANALOG_JS_VITEST_ANGULAR = "^2.7.0-beta.3";
6
+ export declare const V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.7.0-beta.4";
7
+ export declare const V18_X_ANALOG_JS_VITEST_ANGULAR = "^2.7.0-beta.4";
8
8
  export declare const V18_X_TRPC_CLIENT = "^10.25.0";
9
9
  export declare const V18_X_TRPC_SERVER = "^10.25.0";
10
10
  export declare const V18_X_ISOMORPHIC_FETCH = "^3.0.0";
@@ -20,7 +20,7 @@ export declare const V18_X_TAILWINDCSS = "^4.1.4";
20
20
  export declare const V18_X_TAILWINDCSS_VITE = "^4.1.4";
21
21
  export declare const V18_X_POSTCSS = "^8.5.3";
22
22
  export declare const V18_X_AUTOPREFIXER = "^10.4.0";
23
- export declare const V18_X_ANALOG_JS_PLATFORM = "^2.7.0-beta.3";
23
+ export declare const V18_X_ANALOG_JS_PLATFORM = "^2.7.0-beta.4";
24
24
  export declare const V18_X_ANGULAR_DEVKIT_BUILD_ANGULAR = "^19.0.0";
25
25
  export declare const V18_X_NX_VITE = "^21.0.0";
26
26
  export declare const V18_X_NX_LINTER = "^21.0.0";
@@ -5,11 +5,11 @@ exports.V18_X_ZOD = exports.V18_X_VITEST = exports.V18_X_VITE_TSCONFIG_PATHS = e
5
5
  // dependencies
6
6
  exports.V18_X_NX_DEVKIT = '^20.0.0';
7
7
  exports.V18_X_NX_ANGULAR = '^20.0.0';
8
- exports.V18_X_ANALOG_JS_CONTENT = '^2.7.0-beta.3';
9
- exports.V18_X_ANALOG_JS_ROUTER = '^2.7.0-beta.3';
8
+ exports.V18_X_ANALOG_JS_CONTENT = '^2.7.0-beta.4';
9
+ exports.V18_X_ANALOG_JS_ROUTER = '^2.7.0-beta.4';
10
10
  exports.V18_X_ANALOG_JS_TRPC = '~0.4.0';
11
- exports.V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.7.0-beta.3';
12
- exports.V18_X_ANALOG_JS_VITEST_ANGULAR = '^2.7.0-beta.3';
11
+ exports.V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.7.0-beta.4';
12
+ exports.V18_X_ANALOG_JS_VITEST_ANGULAR = '^2.7.0-beta.4';
13
13
  exports.V18_X_TRPC_CLIENT = '^10.25.0';
14
14
  exports.V18_X_TRPC_SERVER = '^10.25.0';
15
15
  exports.V18_X_ISOMORPHIC_FETCH = '^3.0.0';
@@ -26,7 +26,7 @@ exports.V18_X_TAILWINDCSS_VITE = '^4.1.4';
26
26
  exports.V18_X_POSTCSS = '^8.5.3';
27
27
  exports.V18_X_AUTOPREFIXER = '^10.4.0';
28
28
  // devDependencies
29
- exports.V18_X_ANALOG_JS_PLATFORM = '^2.7.0-beta.3';
29
+ exports.V18_X_ANALOG_JS_PLATFORM = '^2.7.0-beta.4';
30
30
  exports.V18_X_ANGULAR_DEVKIT_BUILD_ANGULAR = '^19.0.0';
31
31
  exports.V18_X_NX_VITE = '^21.0.0';
32
32
  exports.V18_X_NX_LINTER = '^21.0.0';
@@ -0,0 +1,11 @@
1
+ # AGENTS.md
2
+
3
+ This is an [AnalogJS](https://analogjs.org) app — an Angular meta-framework powered by Vite.
4
+
5
+ Framework conventions for AI assistants — file-based routing, server/API routes, data fetching, content routes, and modern Angular usage — ship with the framework and are installed alongside your dependencies. Read them here:
6
+
7
+ - `node_modules/@analogjs/platform/AGENTS.md`
8
+
9
+ Reading from `@analogjs/platform` keeps the guidance in sync with the installed version instead of drifting from a copy checked into the project.
10
+
11
+ Full documentation: https://analogjs.org/docs · LLM-friendly index: https://analogjs.org/llms.txt
@@ -0,0 +1 @@
1
+ Strictly follow the rules in @AGENTS.md
@@ -35,12 +35,17 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.default = default_1;
37
37
  const devkit_1 = require("@nx/devkit");
38
+ const node_path_1 = require("node:path");
38
39
  async function default_1(tree, options) {
39
40
  (0, devkit_1.ensurePackage)('@nx/angular', devkit_1.NX_VERSION);
40
41
  (0, devkit_1.ensurePackage)('@nx/vite', devkit_1.NX_VERSION);
41
42
  (0, devkit_1.ensurePackage)('@nx/eslint', devkit_1.NX_VERSION);
42
43
  (0, devkit_1.ensurePackage)('@angular-devkit/core', 'latest');
43
44
  (0, devkit_1.ensurePackage)('rxjs', 'latest');
44
- return await Promise.resolve().then(() => __importStar(require('../app/generator'))).then(({ appGenerator }) => appGenerator(tree, options));
45
+ const appTask = await Promise.resolve().then(() => __importStar(require('../app/generator'))).then(({ appGenerator }) => appGenerator(tree, options));
46
+ // Seed agent context at the workspace root so AI coding assistants pick up
47
+ // Analog conventions (see node_modules/@analogjs/platform/AGENTS.md).
48
+ (0, devkit_1.generateFiles)(tree, (0, node_path_1.join)(__dirname, 'files'), '.', options);
49
+ return appTask;
45
50
  }
46
51
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../../packages/nx-plugin/src/generators/preset/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,4BAUC;AAbD,uCAA6D;AAG9C,KAAK,oBAAW,IAAU,EAAE,OAA8B;IACvE,IAAA,sBAAa,EAAC,aAAa,EAAE,mBAAU,CAAC,CAAC;IACzC,IAAA,sBAAa,EAAC,UAAU,EAAE,mBAAU,CAAC,CAAC;IACtC,IAAA,sBAAa,EAAC,YAAY,EAAE,mBAAU,CAAC,CAAC;IACxC,IAAA,sBAAa,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAA,sBAAa,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,MAAM,kDAAO,kBAAkB,IAAE,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAChE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../../packages/nx-plugin/src/generators/preset/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4BAgBC;AApBD,uCAA4E;AAC5E,yCAAiC;AAGlB,KAAK,oBAAW,IAAU,EAAE,OAA8B;IACvE,IAAA,sBAAa,EAAC,aAAa,EAAE,mBAAU,CAAC,CAAC;IACzC,IAAA,sBAAa,EAAC,UAAU,EAAE,mBAAU,CAAC,CAAC;IACtC,IAAA,sBAAa,EAAC,YAAY,EAAE,mBAAU,CAAC,CAAC;IACxC,IAAA,sBAAa,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAA,sBAAa,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,kDAAO,kBAAkB,IAAE,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CACzE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAC5B,CAAC;IAEF,2EAA2E;IAC3E,sEAAsE;IACtE,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,gBAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,13 +1,13 @@
1
- export declare const V19_X_ANALOG_JS_ROUTER = "^2.7.0-beta.3";
2
- export declare const V19_X_ANALOG_JS_CONTENT = "^2.7.0-beta.3";
1
+ export declare const V19_X_ANALOG_JS_ROUTER = "^2.7.0-beta.4";
2
+ export declare const V19_X_ANALOG_JS_CONTENT = "^2.7.0-beta.4";
3
3
  export declare const V19_X_MARKED = "^15.0.7";
4
4
  export declare const V19_X_MARKED_GFM_HEADING_ID = "^4.1.1";
5
5
  export declare const V19_X_MARKED_HIGHLIGHT = "^2.2.1";
6
6
  export declare const V19_X_MARKED_MANGLE = "^1.1.10";
7
7
  export declare const V19_X_PRISMJS = "^1.29.0";
8
- export declare const V19_X_ANALOG_JS_PLATFORM = "^2.7.0-beta.3";
9
- export declare const V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.7.0-beta.3";
10
- export declare const V19_X_ANALOG_JS_VITEST_ANGULAR = "^2.7.0-beta.3";
8
+ export declare const V19_X_ANALOG_JS_PLATFORM = "^2.7.0-beta.4";
9
+ export declare const V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.7.0-beta.4";
10
+ export declare const V19_X_ANALOG_JS_VITEST_ANGULAR = "^2.7.0-beta.4";
11
11
  export declare const V19_X_NX_ANGULAR = "^22.0.0";
12
12
  export declare const V19_X_NX_VITE = "^22.0.0";
13
13
  export declare const V19_X_JSDOM = "^22.0.0";
@@ -2,17 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NX_X_LATEST_NX = exports.NX_X_LATEST_VITEST = exports.NX_X_LATEST_VITE = exports.V19_X_VITE = exports.V19_X_VITEST = exports.V19_X_VITE_TSCONFIG_PATHS = exports.V19_X_JSDOM = exports.V19_X_NX_VITE = exports.V19_X_NX_ANGULAR = exports.V19_X_ANALOG_JS_VITEST_ANGULAR = exports.V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = exports.V19_X_ANALOG_JS_PLATFORM = exports.V19_X_PRISMJS = exports.V19_X_MARKED_MANGLE = exports.V19_X_MARKED_HIGHLIGHT = exports.V19_X_MARKED_GFM_HEADING_ID = exports.V19_X_MARKED = exports.V19_X_ANALOG_JS_CONTENT = exports.V19_X_ANALOG_JS_ROUTER = void 0;
4
4
  // V19_X
5
- exports.V19_X_ANALOG_JS_ROUTER = '^2.7.0-beta.3';
6
- exports.V19_X_ANALOG_JS_CONTENT = '^2.7.0-beta.3';
5
+ exports.V19_X_ANALOG_JS_ROUTER = '^2.7.0-beta.4';
6
+ exports.V19_X_ANALOG_JS_CONTENT = '^2.7.0-beta.4';
7
7
  exports.V19_X_MARKED = '^15.0.7';
8
8
  exports.V19_X_MARKED_GFM_HEADING_ID = '^4.1.1';
9
9
  exports.V19_X_MARKED_HIGHLIGHT = '^2.2.1';
10
10
  exports.V19_X_MARKED_MANGLE = '^1.1.10';
11
11
  exports.V19_X_PRISMJS = '^1.29.0';
12
12
  // devDependencies
13
- exports.V19_X_ANALOG_JS_PLATFORM = '^2.7.0-beta.3';
14
- exports.V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.7.0-beta.3';
15
- exports.V19_X_ANALOG_JS_VITEST_ANGULAR = '^2.7.0-beta.3';
13
+ exports.V19_X_ANALOG_JS_PLATFORM = '^2.7.0-beta.4';
14
+ exports.V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.7.0-beta.4';
15
+ exports.V19_X_ANALOG_JS_VITEST_ANGULAR = '^2.7.0-beta.4';
16
16
  exports.V19_X_NX_ANGULAR = '^22.0.0';
17
17
  exports.V19_X_NX_VITE = '^22.0.0';
18
18
  exports.V19_X_JSDOM = '^22.0.0';