@analogjs/platform 2.0.0-beta.9 → 2.0.1-beta.1
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/package.json +6 -6
- package/src/lib/content-plugin.d.ts +11 -1
- package/src/lib/content-plugin.js +38 -9
- package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.d.ts +5 -5
- package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js +5 -5
- package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js +1 -0
- package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/preset/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.d.ts +10 -10
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js +10 -10
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js.map +1 -1
- package/src/lib/router-plugin.d.ts +14 -4
- package/src/lib/router-plugin.js +69 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/platform",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1-beta.1",
|
|
4
4
|
"description": "The fullstack meta-framework for Angular",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"nitropack": "^2.11.0",
|
|
32
|
-
"@analogjs/vite-plugin-angular": "^2.0.
|
|
33
|
-
"@analogjs/vite-plugin-nitro": "^2.0.
|
|
32
|
+
"@analogjs/vite-plugin-angular": "^2.0.1-beta.1",
|
|
33
|
+
"@analogjs/vite-plugin-nitro": "^2.0.1-beta.1",
|
|
34
34
|
"vitefu": "^1.0.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
38
|
-
"@nx/devkit": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
39
|
-
"@nx/vite": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
37
|
+
"@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0",
|
|
38
|
+
"@nx/devkit": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0",
|
|
39
|
+
"@nx/vite": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0",
|
|
40
40
|
"marked": "^15.0.7",
|
|
41
41
|
"marked-gfm-heading-id": "^4.1.1",
|
|
42
42
|
"marked-highlight": "^2.2.1",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Plugin } from 'vite';
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
2
|
import type { WithShikiHighlighterOptions } from './content/shiki/options.js';
|
|
3
3
|
import type { WithPrismHighlighterOptions } from './content/prism/options.js';
|
|
4
4
|
import type { WithMarkedOptions } from './content/marked/index.js';
|
|
@@ -9,4 +9,14 @@ export type ContentPluginOptions = {
|
|
|
9
9
|
shikiOptions?: WithShikiHighlighterOptions;
|
|
10
10
|
prismOptions?: WithPrismHighlighterOptions;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Content plugin that provides markdown and content file processing for Analog.
|
|
14
|
+
*
|
|
15
|
+
* IMPORTANT: This plugin uses tinyglobby for file discovery.
|
|
16
|
+
* Key pitfall with { dot: true }:
|
|
17
|
+
* - Returns relative paths from cwd (e.g., "apps/blog-app/src/content/...")
|
|
18
|
+
* - These paths CANNOT be used directly in ES module imports
|
|
19
|
+
* - Relative paths without ./ or ../ are treated as package names
|
|
20
|
+
* - Must convert to absolute paths for imports to work correctly
|
|
21
|
+
*/
|
|
12
22
|
export declare function contentPlugin({ highlighter, markedOptions, shikiOptions, prismOptions, }?: ContentPluginOptions, options?: Options): Plugin[];
|
|
@@ -1,16 +1,39 @@
|
|
|
1
1
|
import { normalizePath } from 'vite';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { globSync } from 'tinyglobby';
|
|
5
|
+
/**
|
|
6
|
+
* Content plugin that provides markdown and content file processing for Analog.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: This plugin uses tinyglobby for file discovery.
|
|
9
|
+
* Key pitfall with { dot: true }:
|
|
10
|
+
* - Returns relative paths from cwd (e.g., "apps/blog-app/src/content/...")
|
|
11
|
+
* - These paths CANNOT be used directly in ES module imports
|
|
12
|
+
* - Relative paths without ./ or ../ are treated as package names
|
|
13
|
+
* - Must convert to absolute paths for imports to work correctly
|
|
14
|
+
*/
|
|
15
|
+
export function contentPlugin({ highlighter, markedOptions, shikiOptions, prismOptions, } = {}, options) {
|
|
9
16
|
const cache = new Map();
|
|
10
17
|
let markedHighlighter;
|
|
11
18
|
const workspaceRoot = normalizePath(options?.workspaceRoot ?? process.cwd());
|
|
12
19
|
let config;
|
|
13
20
|
let root;
|
|
21
|
+
if (!highlighter) {
|
|
22
|
+
return [
|
|
23
|
+
{
|
|
24
|
+
name: 'analogjs-external-content',
|
|
25
|
+
config() {
|
|
26
|
+
return {
|
|
27
|
+
build: {
|
|
28
|
+
rollupOptions: {
|
|
29
|
+
external: ['@analogjs/content'],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
}
|
|
14
37
|
return [
|
|
15
38
|
{
|
|
16
39
|
name: 'analogjs-content-frontmatter',
|
|
@@ -82,7 +105,7 @@ export function contentPlugin({ highlighter, markedOptions, shikiOptions, prismO
|
|
|
82
105
|
const { body, frontmatter } = frontmatterFn(fileContents);
|
|
83
106
|
// parse markdown and highlight
|
|
84
107
|
const { MarkedSetupService } = await import('./content/marked/marked-setup.service.js');
|
|
85
|
-
const markedSetupService = new MarkedSetupService(markedOptions, markedHighlighter);
|
|
108
|
+
const markedSetupService = new MarkedSetupService({ mangle: true, ...(markedOptions || {}) }, markedHighlighter);
|
|
86
109
|
const mdContent = (await markedSetupService
|
|
87
110
|
.getMarkedInstance()
|
|
88
111
|
.parse(body));
|
|
@@ -97,13 +120,19 @@ export function contentPlugin({ highlighter, markedOptions, shikiOptions, prismO
|
|
|
97
120
|
},
|
|
98
121
|
transform(code) {
|
|
99
122
|
if (code.includes('ANALOG_CONTENT_FILE_LIST')) {
|
|
100
|
-
const contentFilesList =
|
|
123
|
+
const contentFilesList = globSync([
|
|
101
124
|
`${root}/src/content/**/*.md`,
|
|
102
125
|
...(options?.additionalContentDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.md`),
|
|
103
126
|
], { dot: true });
|
|
104
127
|
const eagerImports = [];
|
|
105
128
|
contentFilesList.forEach((module, index) => {
|
|
106
|
-
|
|
129
|
+
// CRITICAL: tinyglobby returns relative paths like "apps/blog-app/src/content/file.md"
|
|
130
|
+
// These MUST be converted to absolute paths for ES module imports
|
|
131
|
+
// Otherwise Node.js treats "apps" as a package name and throws "Cannot find package 'apps'"
|
|
132
|
+
const absolutePath = module.startsWith('/')
|
|
133
|
+
? module
|
|
134
|
+
: `${workspaceRoot}/${module}`;
|
|
135
|
+
eagerImports.push(`import { default as analog_module_${index} } from "${absolutePath}?analog-content-list=true";`);
|
|
107
136
|
});
|
|
108
137
|
let result = code.replace('let ANALOG_CONTENT_FILE_LIST = {};', `
|
|
109
138
|
let ANALOG_CONTENT_FILE_LIST = {${contentFilesList.map((module, index) => `"${module.replace(root, '')}": analog_module_${index}`)}};
|
|
@@ -146,4 +175,4 @@ export function contentPlugin({ highlighter, markedOptions, shikiOptions, prismO
|
|
|
146
175
|
},
|
|
147
176
|
];
|
|
148
177
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFvQnRDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLEVBQ0UsV0FBVyxFQUNYLGFBQWEsRUFDYixZQUFZLEVBQ1osWUFBWSxNQUNZLEVBQUUsRUFDNUIsT0FBaUI7SUFFakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFekMsSUFBSSxpQkFBMkMsQ0FBQztJQUNoRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3RSxJQUFJLE1BQWtCLENBQUM7SUFDdkIsSUFBSSxJQUFZLENBQUM7SUFFakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLE9BQU87WUFDTDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxNQUFNO29CQUNKLE9BQU87d0JBQ0wsS0FBSyxFQUFFOzRCQUNMLGFBQWEsRUFBRTtnQ0FDYixRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDaEM7eUJBQ0Y7cUJBQ0YsQ0FBQztnQkFDSixDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTDtZQUNFLElBQUksRUFBRSw4QkFBOEI7WUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVB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
|
|
@@ -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.0.
|
|
4
|
-
export declare const V18_X_ANALOG_JS_ROUTER = "^2.0.
|
|
3
|
+
export declare const V18_X_ANALOG_JS_CONTENT = "^2.0.1-beta.1";
|
|
4
|
+
export declare const V18_X_ANALOG_JS_ROUTER = "^2.0.1-beta.1";
|
|
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.0.
|
|
7
|
-
export declare const V18_X_ANALOG_JS_VITEST_ANGULAR = "^2.0.
|
|
6
|
+
export declare const V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.0.1-beta.1";
|
|
7
|
+
export declare const V18_X_ANALOG_JS_VITEST_ANGULAR = "^2.0.1-beta.1";
|
|
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.0.
|
|
23
|
+
export declare const V18_X_ANALOG_JS_PLATFORM = "^2.0.1-beta.1";
|
|
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.0.
|
|
9
|
-
exports.V18_X_ANALOG_JS_ROUTER = '^2.0.
|
|
8
|
+
exports.V18_X_ANALOG_JS_CONTENT = '^2.0.1-beta.1';
|
|
9
|
+
exports.V18_X_ANALOG_JS_ROUTER = '^2.0.1-beta.1';
|
|
10
10
|
exports.V18_X_ANALOG_JS_TRPC = '~0.4.0';
|
|
11
|
-
exports.V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.0.
|
|
12
|
-
exports.V18_X_ANALOG_JS_VITEST_ANGULAR = '^2.0.
|
|
11
|
+
exports.V18_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.0.1-beta.1';
|
|
12
|
+
exports.V18_X_ANALOG_JS_VITEST_ANGULAR = '^2.0.1-beta.1';
|
|
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.0.
|
|
29
|
+
exports.V18_X_ANALOG_JS_PLATFORM = '^2.0.1-beta.1';
|
|
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';
|
|
@@ -9,7 +9,7 @@ function addAnalogDependencies(tree, angularVersion) {
|
|
|
9
9
|
const dependencies = (0, dependencies_1.getAnalogDependencies)(angularVersion);
|
|
10
10
|
(0, devkit_1.addDependenciesToPackageJson)(tree, {
|
|
11
11
|
...dependencies,
|
|
12
|
-
'@angular/platform-server': angularVersion
|
|
12
|
+
'@angular/platform-server': `^${angularVersion}`,
|
|
13
13
|
}, devDependencies);
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=add-analog-dependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-analog-dependencies.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/generators/init/lib/add-analog-dependencies.ts"],"names":[],"mappings":";;AAKA,sDAYC;AAjBD,uCAAgE;AAEhE,+EAAoF;AACpF,uEAA6E;AAE7E,SAAgB,qBAAqB,CAAC,IAAU,EAAE,cAAsB;IACtE,MAAM,eAAe,GAAG,IAAA,2CAAwB,EAAC,cAAc,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAA,oCAAqB,EAAC,cAAc,CAAC,CAAC;IAE3D,IAAA,qCAA4B,EAC1B,IAAI,EACJ;QACE,GAAG,YAAY;QACf,0BAA0B,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"add-analog-dependencies.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/generators/init/lib/add-analog-dependencies.ts"],"names":[],"mappings":";;AAKA,sDAYC;AAjBD,uCAAgE;AAEhE,+EAAoF;AACpF,uEAA6E;AAE7E,SAAgB,qBAAqB,CAAC,IAAU,EAAE,cAAsB;IACtE,MAAM,eAAe,GAAG,IAAA,2CAAwB,EAAC,cAAc,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAA,oCAAqB,EAAC,cAAc,CAAC,CAAC;IAE3D,IAAA,qCAA4B,EAC1B,IAAI,EACJ;QACE,GAAG,YAAY;QACf,0BAA0B,EAAE,IAAI,cAAc,EAAE;KACjD,EACD,eAAe,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -36,6 +36,7 @@ function updateServeTarget(tree, schema) {
|
|
|
36
36
|
const projectConfig = projects.get(schema.project);
|
|
37
37
|
projectConfig.targets.serve = {
|
|
38
38
|
executor: '@analogjs/platform:vite-dev-server',
|
|
39
|
+
continuous: true,
|
|
39
40
|
...commonConfig,
|
|
40
41
|
};
|
|
41
42
|
projectConfig.targets.build.outputs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-serve-target.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/generators/init/lib/update-serve-target.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"update-serve-target.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/generators/init/lib/update-serve-target.ts"],"names":[],"mappings":";;AASA,8CAuDC;AAhED,uCAKoB;AAIpB,SAAgB,iBAAiB,CAC/B,IAAU,EACV,MAAkC;IAElC,MAAM,eAAe,GAAG,eAAe,CAAC;IAExC,MAAM,YAAY,GAAG;QACnB,oBAAoB,EAAE,aAAa;QACnC,OAAO,EAAE;YACP,WAAW,EAAE,GAAG,MAAM,CAAC,OAAO,QAAQ;YACtC,IAAI,EAAE,IAAI;SACX;QACD,cAAc,EAAE;YACd,WAAW,EAAE;gBACX,WAAW,EAAE,GAAG,MAAM,CAAC,OAAO,oBAAoB;gBAClD,GAAG,EAAE,IAAI;aACV;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,GAAG,MAAM,CAAC,OAAO,mBAAmB;aAClD;SACF;KACF,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,IAAA,mBAAU,EACR,IAAI,EACJ,eAAe,EACf,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI;gBAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG;gBAC9C,OAAO,EAAE,oCAAoC;gBAC7C,GAAG,YAAY;aAChB,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CACnD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG;YAC5B,QAAQ,EAAE,oCAAoC;YAC9C,UAAU,EAAE,IAAI;YAChB,GAAG,YAAY;SAChB,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;YACpC,6BAA6B,aAAa,CAAC,IAAI,EAAE;SAClD,CAAC;QAEF,IAAA,mCAA0B,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export declare const V19_X_ANALOG_JS_ROUTER = "^2.0.
|
|
2
|
-
export declare const V19_X_ANALOG_JS_CONTENT = "^2.0.
|
|
3
|
-
export declare const V19_X_MARKED = "^
|
|
1
|
+
export declare const V19_X_ANALOG_JS_ROUTER = "^2.0.1-beta.1";
|
|
2
|
+
export declare const V19_X_ANALOG_JS_CONTENT = "^2.0.1-beta.1";
|
|
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.0.
|
|
9
|
-
export declare const V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.0.
|
|
10
|
-
export declare const V19_X_ANALOG_JS_VITEST_ANGULAR = "^2.0.
|
|
11
|
-
export declare const V19_X_NX_ANGULAR = "^
|
|
12
|
-
export declare const V19_X_NX_VITE = "^
|
|
8
|
+
export declare const V19_X_ANALOG_JS_PLATFORM = "^2.0.1-beta.1";
|
|
9
|
+
export declare const V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^2.0.1-beta.1";
|
|
10
|
+
export declare const V19_X_ANALOG_JS_VITEST_ANGULAR = "^2.0.1-beta.1";
|
|
11
|
+
export declare const V19_X_NX_ANGULAR = "^22.0.0";
|
|
12
|
+
export declare const V19_X_NX_VITE = "^22.0.0";
|
|
13
13
|
export declare const V19_X_JSDOM = "^22.0.0";
|
|
14
14
|
export declare const V19_X_VITE_TSCONFIG_PATHS = "^4.2.0";
|
|
15
15
|
export declare const V19_X_VITEST = "^2.0.0";
|
|
16
16
|
export declare const V19_X_VITE = "^5.0.0";
|
|
17
|
-
export declare const NX_X_LATEST_VITE = "^
|
|
18
|
-
export declare const NX_X_LATEST_VITEST = "^
|
|
17
|
+
export declare const NX_X_LATEST_VITE = "^7.0.0";
|
|
18
|
+
export declare const NX_X_LATEST_VITEST = "^4.0.0";
|
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
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.0.
|
|
6
|
-
exports.V19_X_ANALOG_JS_CONTENT = '^2.0.
|
|
7
|
-
exports.V19_X_MARKED = '^
|
|
5
|
+
exports.V19_X_ANALOG_JS_ROUTER = '^2.0.1-beta.1';
|
|
6
|
+
exports.V19_X_ANALOG_JS_CONTENT = '^2.0.1-beta.1';
|
|
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.0.
|
|
14
|
-
exports.V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.0.
|
|
15
|
-
exports.V19_X_ANALOG_JS_VITEST_ANGULAR = '^2.0.
|
|
16
|
-
exports.V19_X_NX_ANGULAR = '^
|
|
17
|
-
exports.V19_X_NX_VITE = '^
|
|
13
|
+
exports.V19_X_ANALOG_JS_PLATFORM = '^2.0.1-beta.1';
|
|
14
|
+
exports.V19_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^2.0.1-beta.1';
|
|
15
|
+
exports.V19_X_ANALOG_JS_VITEST_ANGULAR = '^2.0.1-beta.1';
|
|
16
|
+
exports.V19_X_NX_ANGULAR = '^22.0.0';
|
|
17
|
+
exports.V19_X_NX_VITE = '^22.0.0';
|
|
18
18
|
exports.V19_X_JSDOM = '^22.0.0';
|
|
19
19
|
exports.V19_X_VITE_TSCONFIG_PATHS = '^4.2.0';
|
|
20
20
|
exports.V19_X_VITEST = '^2.0.0';
|
|
21
21
|
exports.V19_X_VITE = '^5.0.0';
|
|
22
|
-
exports.NX_X_LATEST_VITE = '^
|
|
23
|
-
exports.NX_X_LATEST_VITEST = '^
|
|
22
|
+
exports.NX_X_LATEST_VITE = '^7.0.0';
|
|
23
|
+
exports.NX_X_LATEST_VITEST = '^4.0.0';
|
|
24
24
|
//# sourceMappingURL=versions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/utils/versions/ng_19_X/versions.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACK,QAAA,sBAAsB,GAAG,eAAe,CAAC;AACzC,QAAA,uBAAuB,GAAG,eAAe,CAAC;AAC1C,QAAA,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../../../../../../packages/nx-plugin/src/utils/versions/ng_19_X/versions.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACK,QAAA,sBAAsB,GAAG,eAAe,CAAC;AACzC,QAAA,uBAAuB,GAAG,eAAe,CAAC;AAC1C,QAAA,YAAY,GAAG,SAAS,CAAC;AACzB,QAAA,2BAA2B,GAAG,QAAQ,CAAC;AACvC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,aAAa,GAAG,SAAS,CAAC;AAEvC,kBAAkB;AACL,QAAA,wBAAwB,GAAG,eAAe,CAAC;AAC3C,QAAA,mCAAmC,GAAG,eAAe,CAAC;AACtD,QAAA,8BAA8B,GAAG,eAAe,CAAC;AACjD,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,yBAAyB,GAAG,QAAQ,CAAC;AACrC,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,QAAA,kBAAkB,GAAG,QAAQ,CAAC"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
2
|
import { Options } from './options.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* are added/deleted.
|
|
4
|
+
* Router plugin that handles route file discovery and hot module replacement.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
6
|
+
* This plugin provides three main functionalities:
|
|
7
|
+
* 1. Route invalidation when files are added/deleted (HMR workaround)
|
|
8
|
+
* 2. Dynamic route file discovery and import generation
|
|
9
|
+
* 3. Content route file discovery for markdown and Analog content
|
|
8
10
|
*
|
|
9
|
-
* @
|
|
11
|
+
* @param options Configuration options for the router plugin
|
|
12
|
+
* @returns Array of Vite plugins for route handling
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: This plugin uses tinyglobby for file discovery.
|
|
15
|
+
* Key behavior with { dot: true, absolute: true }:
|
|
16
|
+
* - Returns absolute paths for ALL discovered files
|
|
17
|
+
* - Path normalization is required to match expected output format
|
|
18
|
+
* - Files within project root must use relative paths in object keys
|
|
19
|
+
* - Files outside project root keep absolute paths in object keys
|
|
10
20
|
*/
|
|
11
21
|
export declare function routerPlugin(options?: Options): Plugin[];
|
package/src/lib/router-plugin.js
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { normalizePath } from 'vite';
|
|
2
|
-
import
|
|
2
|
+
import { globSync } from 'tinyglobby';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* are added/deleted.
|
|
5
|
+
* Router plugin that handles route file discovery and hot module replacement.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
7
|
+
* This plugin provides three main functionalities:
|
|
8
|
+
* 1. Route invalidation when files are added/deleted (HMR workaround)
|
|
9
|
+
* 2. Dynamic route file discovery and import generation
|
|
10
|
+
* 3. Content route file discovery for markdown and Analog content
|
|
9
11
|
*
|
|
10
|
-
* @
|
|
12
|
+
* @param options Configuration options for the router plugin
|
|
13
|
+
* @returns Array of Vite plugins for route handling
|
|
14
|
+
*
|
|
15
|
+
* IMPORTANT: This plugin uses tinyglobby for file discovery.
|
|
16
|
+
* Key behavior with { dot: true, absolute: true }:
|
|
17
|
+
* - Returns absolute paths for ALL discovered files
|
|
18
|
+
* - Path normalization is required to match expected output format
|
|
19
|
+
* - Files within project root must use relative paths in object keys
|
|
20
|
+
* - Files outside project root keep absolute paths in object keys
|
|
11
21
|
*/
|
|
12
22
|
export function routerPlugin(options) {
|
|
13
23
|
const workspaceRoot = normalizePath(options?.workspaceRoot ?? process.cwd());
|
|
@@ -17,6 +27,12 @@ export function routerPlugin(options) {
|
|
|
17
27
|
{
|
|
18
28
|
name: 'analogjs-router-invalidate-routes',
|
|
19
29
|
configureServer(server) {
|
|
30
|
+
/**
|
|
31
|
+
* Invalidates route modules when files are added or deleted.
|
|
32
|
+
* This is a workaround for Vite's HMR limitations with dynamic imports.
|
|
33
|
+
*
|
|
34
|
+
* @param path The file path that was added or deleted
|
|
35
|
+
*/
|
|
20
36
|
function invalidateRoutes(path) {
|
|
21
37
|
if (path.includes(`routes`) ||
|
|
22
38
|
path.includes(`pages`) ||
|
|
@@ -46,26 +62,49 @@ export function routerPlugin(options) {
|
|
|
46
62
|
config = _config;
|
|
47
63
|
root = normalizePath(resolve(workspaceRoot, config.root || '.') || '.');
|
|
48
64
|
},
|
|
65
|
+
/**
|
|
66
|
+
* Transforms code to replace ANALOG_ROUTE_FILES and ANALOG_CONTENT_ROUTE_FILES
|
|
67
|
+
* placeholders with actual dynamic imports of discovered route and content files.
|
|
68
|
+
*
|
|
69
|
+
* @param code The source code to transform
|
|
70
|
+
* @returns Transformed code with dynamic imports or undefined if no transformation needed
|
|
71
|
+
*/
|
|
49
72
|
transform(code) {
|
|
50
73
|
if (code.includes('ANALOG_ROUTE_FILES') ||
|
|
51
74
|
code.includes('ANALOG_CONTENT_ROUTE_FILES')) {
|
|
52
|
-
|
|
75
|
+
// Discover route files using tinyglobby
|
|
76
|
+
// NOTE: { absolute: true } returns absolute paths for ALL files
|
|
77
|
+
const routeFiles = globSync([
|
|
53
78
|
`${root}/app/routes/**/*.ts`,
|
|
54
79
|
`${root}/src/app/routes/**/*.ts`,
|
|
55
80
|
`${root}/src/app/pages/**/*.page.ts`,
|
|
56
81
|
...(options?.additionalPagesDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.page.ts`),
|
|
57
|
-
], { dot: true });
|
|
58
|
-
|
|
82
|
+
], { dot: true, absolute: true });
|
|
83
|
+
// Discover content files using tinyglobby
|
|
84
|
+
const contentRouteFiles = globSync([
|
|
59
85
|
`${root}/src/app/routes/**/*.md`,
|
|
60
86
|
`${root}/src/app/pages/**/*.md`,
|
|
61
87
|
`${root}/src/content/**/*.md`,
|
|
62
88
|
...(options?.additionalContentDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.md`),
|
|
63
|
-
], { dot: true });
|
|
89
|
+
], { dot: true, absolute: true });
|
|
64
90
|
let result = code.replace('ANALOG_ROUTE_FILES = {};', `
|
|
65
|
-
ANALOG_ROUTE_FILES = {${routeFiles.map((module) =>
|
|
91
|
+
ANALOG_ROUTE_FILES = {${routeFiles.map((module) => {
|
|
92
|
+
// CRITICAL: tinyglobby returns absolute paths, but we need relative paths for project files
|
|
93
|
+
// to match expected output format. Library files keep absolute paths.
|
|
94
|
+
const key = module.startsWith(root)
|
|
95
|
+
? module.replace(root, '')
|
|
96
|
+
: module;
|
|
97
|
+
return `"${key}": () => import('${module}')`;
|
|
98
|
+
})}};
|
|
66
99
|
`);
|
|
67
100
|
result = result.replace('ANALOG_CONTENT_ROUTE_FILES = {};', `
|
|
68
|
-
ANALOG_CONTENT_ROUTE_FILES = {${contentRouteFiles.map((module) =>
|
|
101
|
+
ANALOG_CONTENT_ROUTE_FILES = {${contentRouteFiles.map((module) => {
|
|
102
|
+
// Same path normalization as route files
|
|
103
|
+
const key = module.startsWith(root)
|
|
104
|
+
? module.replace(root, '')
|
|
105
|
+
: module;
|
|
106
|
+
return `"${key}": () => import('${module}?analog-content-file=true').then(m => m.default)`;
|
|
107
|
+
})}};
|
|
69
108
|
`);
|
|
70
109
|
return {
|
|
71
110
|
code: result,
|
|
@@ -77,14 +116,28 @@ export function routerPlugin(options) {
|
|
|
77
116
|
},
|
|
78
117
|
{
|
|
79
118
|
name: 'analog-glob-endpoints',
|
|
119
|
+
/**
|
|
120
|
+
* Transforms code to replace ANALOG_PAGE_ENDPOINTS placeholder
|
|
121
|
+
* with actual dynamic imports of discovered server endpoint files.
|
|
122
|
+
*
|
|
123
|
+
* @param code The source code to transform
|
|
124
|
+
* @returns Transformed code with dynamic imports or undefined if no transformation needed
|
|
125
|
+
*/
|
|
80
126
|
transform(code) {
|
|
81
127
|
if (code.includes('ANALOG_PAGE_ENDPOINTS')) {
|
|
82
|
-
|
|
128
|
+
// Discover server endpoint files using tinyglobby
|
|
129
|
+
const endpointFiles = globSync([
|
|
83
130
|
`${root}/src/app/pages/**/*.server.ts`,
|
|
84
|
-
...(options?.additionalPagesDirs || [])
|
|
85
|
-
], { dot: true });
|
|
131
|
+
...(options?.additionalPagesDirs || []).map((glob) => `${workspaceRoot}${glob}/**/*.server.ts`),
|
|
132
|
+
], { dot: true, absolute: true });
|
|
86
133
|
const result = code.replace('ANALOG_PAGE_ENDPOINTS = {};', `
|
|
87
|
-
ANALOG_PAGE_ENDPOINTS = {${endpointFiles.map((module) =>
|
|
134
|
+
ANALOG_PAGE_ENDPOINTS = {${endpointFiles.map((module) => {
|
|
135
|
+
// Same path normalization for consistency
|
|
136
|
+
const key = module.startsWith(root)
|
|
137
|
+
? module.replace(root, '')
|
|
138
|
+
: module;
|
|
139
|
+
return `"${key}": () => import('${module}')`;
|
|
140
|
+
})}};
|
|
88
141
|
`);
|
|
89
142
|
return {
|
|
90
143
|
code: result,
|
|
@@ -96,4 +149,4 @@ export function routerPlugin(options) {
|
|
|
96
149
|
},
|
|
97
150
|
];
|
|
98
151
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvcm91dGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFpQjtJQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3RSxJQUFJLE1BQWtCLENBQUM7SUFDdkIsSUFBSSxJQUFZLENBQUM7SUFFakIsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLG1DQUFtQztZQUN6QyxlQUFlLENBQUMsTUFBTTtnQkFDcEI7Ozs7O21CQUtHO2dCQUNILFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtvQkFDcEMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3hCLENBQUM7d0JBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUNuQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxF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
|