@analogjs/platform 0.2.0-rc.0 → 0.2.0-rc.2
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 +3 -3
- package/src/lib/nx-plugin/generators.json +12 -0
- package/src/lib/nx-plugin/src/generators/app/versions/nx_16_X/versions.d.ts +5 -5
- package/src/lib/nx-plugin/src/generators/app/versions/nx_16_X/versions.js +5 -5
- package/src/lib/nx-plugin/src/generators/page/__snapshots__/generator.spec.ts.snap +88 -0
- package/src/lib/nx-plugin/src/generators/page/files/__fileName__.page.ts__template__ +22 -0
- package/src/lib/nx-plugin/src/generators/page/generator.d.ts +5 -0
- package/src/lib/nx-plugin/src/generators/page/generator.js +46 -0
- package/src/lib/nx-plugin/src/generators/page/generator.js.map +1 -0
- package/src/lib/nx-plugin/src/generators/page/schema.d.ts +13 -0
- package/src/lib/nx-plugin/src/generators/page/schema.json +60 -0
- package/src/lib/platform-plugin.js +2 -6
- package/src/lib/ssr/dev-server-plugin.d.ts +0 -7
- package/src/lib/ssr/dev-server-plugin.js +0 -89
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/platform",
|
|
3
|
-
"version": "0.2.0-rc.
|
|
3
|
+
"version": "0.2.0-rc.2",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "The fullstack meta-framework for Angular",
|
|
6
6
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"nitropack": "^2.0.0",
|
|
28
|
-
"@analogjs/vite-plugin-angular": "^0.2.0-rc.
|
|
29
|
-
"@analogjs/vite-plugin-nitro": "^0.2.0-rc.
|
|
28
|
+
"@analogjs/vite-plugin-angular": "^0.2.0-rc.2",
|
|
29
|
+
"@analogjs/vite-plugin-nitro": "^0.2.0-rc.2",
|
|
30
30
|
"@nx/devkit": "^16.0.0"
|
|
31
31
|
},
|
|
32
32
|
"generators": "./src/lib/nx-plugin/generators.json",
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
"description": "Analog preset for create-nx-workspace",
|
|
15
15
|
"x-use-standalone-layout": true,
|
|
16
16
|
"hidden": true
|
|
17
|
+
},
|
|
18
|
+
"page": {
|
|
19
|
+
"factory": "./src/generators/page/generator",
|
|
20
|
+
"schema": "./src/generators/page/schema.json",
|
|
21
|
+
"description": "Creates a new Analog page in the given or default project.",
|
|
22
|
+
"aliases": ["p"]
|
|
17
23
|
}
|
|
18
24
|
},
|
|
19
25
|
"schematics": {
|
|
@@ -21,6 +27,12 @@
|
|
|
21
27
|
"factory": "./src/generators/app/compat",
|
|
22
28
|
"schema": "./src/generators/app/schema.json",
|
|
23
29
|
"description": "Generates an Analog application"
|
|
30
|
+
},
|
|
31
|
+
"page": {
|
|
32
|
+
"factory": "./src/generators/page/generator#analogPageGeneratorSchematic",
|
|
33
|
+
"schema": "./src/generators/page/schema.json",
|
|
34
|
+
"description": "Creates a new Analog page in the given or default project.",
|
|
35
|
+
"aliases": ["p"]
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare const V16_X_NX_DEVKIT = "^16.4.0";
|
|
2
2
|
export declare const V16_X_NX_ANGULAR = "^16.4.0";
|
|
3
|
-
export declare const V16_X_ANALOG_JS_CONTENT = "^0.2.0-rc.
|
|
4
|
-
export declare const V16_X_ANALOG_JS_ROUTER = "^0.2.0-rc.
|
|
5
|
-
export declare const V16_X_ANALOG_JS_TRPC = "^0.2.0-rc.
|
|
6
|
-
export declare const V16_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^0.2.0-rc.
|
|
3
|
+
export declare const V16_X_ANALOG_JS_CONTENT = "^0.2.0-rc.2";
|
|
4
|
+
export declare const V16_X_ANALOG_JS_ROUTER = "^0.2.0-rc.2";
|
|
5
|
+
export declare const V16_X_ANALOG_JS_TRPC = "^0.2.0-rc.2";
|
|
6
|
+
export declare const V16_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = "^0.2.0-rc.2";
|
|
7
7
|
export declare const V16_X_TRPC_CLIENT = "^10.25.0";
|
|
8
8
|
export declare const V16_X_TRPC_SERVER = "^10.25.0";
|
|
9
9
|
export declare const V16_X_ISOMORPHIC_FETCH = "^3.0.0";
|
|
@@ -14,7 +14,7 @@ export declare const V16_X_MARKED_GFM_HEADING_ID = "^3.0.4";
|
|
|
14
14
|
export declare const V16_X_MARKED_HIGHLIGHT = "^2.0.1";
|
|
15
15
|
export declare const V16_X_MERMAID = "^10.2.4";
|
|
16
16
|
export declare const V16_X_PRISMJS = "^1.29.0";
|
|
17
|
-
export declare const V16_X_ANALOG_JS_PLATFORM = "^0.2.0-rc.
|
|
17
|
+
export declare const V16_X_ANALOG_JS_PLATFORM = "^0.2.0-rc.2";
|
|
18
18
|
export declare const V16_X_NX_VITE = "^16.4.0";
|
|
19
19
|
export declare const V16_X_NX_LINTER = "^16.4.0";
|
|
20
20
|
export declare const V16_X_JSDOM = "^22.0.0";
|
|
@@ -5,10 +5,10 @@ exports.V16_X_ZOD = exports.V16_X_VITEST = exports.V16_X_VITE_TSCONFIG_PATHS = e
|
|
|
5
5
|
// dependencies
|
|
6
6
|
exports.V16_X_NX_DEVKIT = '^16.4.0';
|
|
7
7
|
exports.V16_X_NX_ANGULAR = '^16.4.0';
|
|
8
|
-
exports.V16_X_ANALOG_JS_CONTENT = '^0.2.0-rc.
|
|
9
|
-
exports.V16_X_ANALOG_JS_ROUTER = '^0.2.0-rc.
|
|
10
|
-
exports.V16_X_ANALOG_JS_TRPC = '^0.2.0-rc.
|
|
11
|
-
exports.V16_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^0.2.0-rc.
|
|
8
|
+
exports.V16_X_ANALOG_JS_CONTENT = '^0.2.0-rc.2';
|
|
9
|
+
exports.V16_X_ANALOG_JS_ROUTER = '^0.2.0-rc.2';
|
|
10
|
+
exports.V16_X_ANALOG_JS_TRPC = '^0.2.0-rc.2';
|
|
11
|
+
exports.V16_X_ANALOG_JS_VITE_PLUGIN_ANGULAR = '^0.2.0-rc.2';
|
|
12
12
|
exports.V16_X_TRPC_CLIENT = '^10.25.0';
|
|
13
13
|
exports.V16_X_TRPC_SERVER = '^10.25.0';
|
|
14
14
|
exports.V16_X_ISOMORPHIC_FETCH = '^3.0.0';
|
|
@@ -20,7 +20,7 @@ exports.V16_X_MARKED_HIGHLIGHT = '^2.0.1';
|
|
|
20
20
|
exports.V16_X_MERMAID = '^10.2.4';
|
|
21
21
|
exports.V16_X_PRISMJS = '^1.29.0';
|
|
22
22
|
// devDependencies
|
|
23
|
-
exports.V16_X_ANALOG_JS_PLATFORM = '^0.2.0-rc.
|
|
23
|
+
exports.V16_X_ANALOG_JS_PLATFORM = '^0.2.0-rc.2';
|
|
24
24
|
exports.V16_X_NX_VITE = '^16.4.0';
|
|
25
25
|
exports.V16_X_NX_LINTER = '^16.4.0';
|
|
26
26
|
exports.V16_X_JSDOM = '^22.0.0';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`analog-page generator > should create analog page correctly > page 1`] = `
|
|
4
|
+
"import { Component } from '@angular/core';
|
|
5
|
+
|
|
6
|
+
@Component({
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [],
|
|
9
|
+
template: \` <p>home page works!!</p> \`,
|
|
10
|
+
})
|
|
11
|
+
export default class HomePage {}
|
|
12
|
+
"
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
exports[`analog-page generator > should create analog page with metadata correctly > page 1`] = `
|
|
16
|
+
"import { RouteMeta } from '@analogjs/router';
|
|
17
|
+
import { Component } from '@angular/core';
|
|
18
|
+
|
|
19
|
+
export const routeMeta: RouteMeta = {
|
|
20
|
+
title: 'Home Page',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
@Component({
|
|
24
|
+
standalone: true,
|
|
25
|
+
imports: [],
|
|
26
|
+
template: \` <p>home page works!!</p> \`,
|
|
27
|
+
})
|
|
28
|
+
export default class HomePage {}
|
|
29
|
+
"
|
|
30
|
+
`;
|
|
31
|
+
|
|
32
|
+
exports[`analog-page generator > should create analog page with redirect correctly > page 1`] = `
|
|
33
|
+
"import { RouteMeta } from '@analogjs/router';
|
|
34
|
+
|
|
35
|
+
export const routeMeta: RouteMeta = {
|
|
36
|
+
redirectTo: '/home',
|
|
37
|
+
pathMatch: 'full',
|
|
38
|
+
};
|
|
39
|
+
"
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
exports[`analog-page generator > should create analog page with subfolder correctly > page 1`] = `
|
|
43
|
+
"import { Component } from '@angular/core';
|
|
44
|
+
|
|
45
|
+
@Component({
|
|
46
|
+
standalone: true,
|
|
47
|
+
imports: [],
|
|
48
|
+
template: \` <p>post page works!!</p> \`,
|
|
49
|
+
})
|
|
50
|
+
export default class PostPage {}
|
|
51
|
+
"
|
|
52
|
+
`;
|
|
53
|
+
|
|
54
|
+
exports[`analog-page generator > should create analog page with subfolder correctly > page 2`] = `
|
|
55
|
+
"import { Component } from '@angular/core';
|
|
56
|
+
|
|
57
|
+
@Component({
|
|
58
|
+
standalone: true,
|
|
59
|
+
imports: [],
|
|
60
|
+
template: \` <p>products page works!!</p> \`,
|
|
61
|
+
})
|
|
62
|
+
export default class ProductsPage {}
|
|
63
|
+
"
|
|
64
|
+
`;
|
|
65
|
+
|
|
66
|
+
exports[`analog-page generator > should create analog page with subfolder correctly > page 3`] = `
|
|
67
|
+
"import { Component } from '@angular/core';
|
|
68
|
+
|
|
69
|
+
@Component({
|
|
70
|
+
standalone: true,
|
|
71
|
+
imports: [],
|
|
72
|
+
template: \` <p>productsProductId page works!!</p> \`,
|
|
73
|
+
})
|
|
74
|
+
export default class ProductsProductIdPage {}
|
|
75
|
+
"
|
|
76
|
+
`;
|
|
77
|
+
|
|
78
|
+
exports[`analog-page generator > should create analog page with subfolder correctly > page 4`] = `
|
|
79
|
+
"import { Component } from '@angular/core';
|
|
80
|
+
|
|
81
|
+
@Component({
|
|
82
|
+
standalone: true,
|
|
83
|
+
imports: [],
|
|
84
|
+
template: \` <p>blog page works!!</p> \`,
|
|
85
|
+
})
|
|
86
|
+
export default class BlogPage {}
|
|
87
|
+
"
|
|
88
|
+
`;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<% if(redirectPage || metadata ) { %>import { RouteMeta } from '@analogjs/router'; <% } %>
|
|
2
|
+
<% if(!redirectPage) { %> import { Component } from '@angular/core'; <% } %>
|
|
3
|
+
|
|
4
|
+
<% if(!redirectPage) { %>
|
|
5
|
+
<% if(metadata) { %>
|
|
6
|
+
export const routeMeta: RouteMeta = {
|
|
7
|
+
title: '<%= title %>',
|
|
8
|
+
};
|
|
9
|
+
<% } %>
|
|
10
|
+
@Component({
|
|
11
|
+
standalone: true,
|
|
12
|
+
imports: [],
|
|
13
|
+
template: `
|
|
14
|
+
<p><%= propertyName %> page works!!</p>
|
|
15
|
+
`,
|
|
16
|
+
})
|
|
17
|
+
export default class <%= className %>Page {
|
|
18
|
+
} <% } else { %>
|
|
19
|
+
export const routeMeta: RouteMeta = {
|
|
20
|
+
redirectTo: '<%= redirectPath %>',
|
|
21
|
+
pathMatch: '<%= pathMatch %>',
|
|
22
|
+
};<% } %>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import { AnalogPageGeneratorSchema } from './schema';
|
|
3
|
+
export declare function analogPageGenerator(tree: Tree, options: AnalogPageGeneratorSchema): Promise<void>;
|
|
4
|
+
export declare const analogPageGeneratorSchematic: (generatorOptions: AnalogPageGeneratorSchema) => (tree: any, context: any) => Promise<any>;
|
|
5
|
+
export default analogPageGenerator;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analogPageGeneratorSchematic = exports.analogPageGenerator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
function normalizeOptions(tree, options) {
|
|
8
|
+
const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(tree).appsDir}/${options.project}`;
|
|
9
|
+
return Object.assign(Object.assign({}, options), { projectRoot });
|
|
10
|
+
}
|
|
11
|
+
function generateFileName(input) {
|
|
12
|
+
const pattern = /^[a-zA-Z0-9]+\.\[[a-zA-Z0-9-]+\]$/;
|
|
13
|
+
if (pattern.test(input)) {
|
|
14
|
+
return input.replace(/\[[a-zA-Z0-9-]+\]/, (match) => {
|
|
15
|
+
const wordId = match.slice(1, -1);
|
|
16
|
+
const camelCaseWordId = wordId.replace(/-([a-zA-Z0-9])/g, (_, letter) => letter.toUpperCase());
|
|
17
|
+
return `[${camelCaseWordId}]`;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return input;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function addFiles(tree, options) {
|
|
25
|
+
const splitName = options.pathname.split('/');
|
|
26
|
+
const routeName = splitName[splitName.length - 1];
|
|
27
|
+
const fileName = generateFileName(routeName);
|
|
28
|
+
const templateOptions = Object.assign(Object.assign(Object.assign({}, options), (0, devkit_1.names)(routeName)), { name: (0, devkit_1.names)(routeName).fileName, offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot), template: '', fileName });
|
|
29
|
+
const pageFolders = options.pathname.toLowerCase().split('/');
|
|
30
|
+
const pageDir = path.join(options.projectRoot, `/src/app/pages/${pageFolders.slice(0, -1)}`);
|
|
31
|
+
(0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files'), pageDir, templateOptions);
|
|
32
|
+
}
|
|
33
|
+
function analogPageGenerator(tree, options) {
|
|
34
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const normalizedOptions = normalizeOptions(tree, options);
|
|
36
|
+
if (options.redirectPage && !options.redirectPath) {
|
|
37
|
+
throw new Error((0, devkit_1.stripIndents) `A redirectPath is required when redirectPage is true.`);
|
|
38
|
+
}
|
|
39
|
+
addFiles(tree, normalizedOptions);
|
|
40
|
+
yield (0, devkit_1.formatFiles)(tree);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.analogPageGenerator = analogPageGenerator;
|
|
44
|
+
exports.analogPageGeneratorSchematic = (0, devkit_1.convertNxGenerator)(analogPageGenerator);
|
|
45
|
+
exports.default = analogPageGenerator;
|
|
46
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../../packages/nx-plugin/src/generators/page/generator.ts"],"names":[],"mappings":";;;;AAAA,uCASoB;AACpB,6BAA6B;AAG7B,SAAS,gBAAgB,CACvB,IAAU,EACV,OAAkC;IAElC,MAAM,WAAW,GAAG,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7E,uCACK,OAAO,KACV,WAAW,IACX;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,OAAO,GAAG,mCAAmC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtE,MAAM,CAAC,WAAW,EAAE,CACrB,CAAC;YACF,OAAO,IAAI,eAAe,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,OAAyB;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,eAAe,iDAChB,OAAO,GACP,IAAA,cAAK,EAAC,SAAS,CAAC,KACnB,IAAI,EAAE,IAAA,cAAK,EAAC,SAAS,CAAC,CAAC,QAAQ,EAC/B,cAAc,EAAE,IAAA,uBAAc,EAAC,OAAO,CAAC,WAAW,CAAC,EACnD,QAAQ,EAAE,EAAE,EACZ,QAAQ,GACT,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,OAAO,CAAC,WAAW,EACnB,kBAAkB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC;IAEF,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAC/E,CAAC;AAED,SAAsB,mBAAmB,CACvC,IAAU,EACV,OAAkC;;QAElC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACjD,MAAM,IAAI,KAAK,CACb,IAAA,qBAAY,EAAA,uDAAuD,CACpE,CAAC;SACH;QACD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAElC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAbD,kDAaC;AAEY,QAAA,4BAA4B,GACvC,IAAA,2BAAkB,EAAC,mBAAmB,CAAC,CAAC;AAE1C,kBAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"cli": "nx",
|
|
4
|
+
"$id": "page",
|
|
5
|
+
"title": "Create an Analog page",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"pathname": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Name of the page to be generated. Ex. `products/[products]`, `products`, `blog/post`, `index`. __Note: special names like product.[productId] or (blog) should be surrounded by single quotes__",
|
|
11
|
+
"$default": {
|
|
12
|
+
"$source": "argv",
|
|
13
|
+
"index": 0
|
|
14
|
+
},
|
|
15
|
+
"x-priority": "important",
|
|
16
|
+
"x-prompt": "What name would you like to use for the page? Ex. `products/[products]`, `products`, `blog/post`, `index`"
|
|
17
|
+
},
|
|
18
|
+
"project": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The project where the page will be located.",
|
|
21
|
+
"x-prompt": "Which project will this page be located in?",
|
|
22
|
+
"$default": {
|
|
23
|
+
"$source": "projectName"
|
|
24
|
+
},
|
|
25
|
+
"x-dropdown": "projects"
|
|
26
|
+
},
|
|
27
|
+
"metadata": {
|
|
28
|
+
"description": "If metadata is needed for the route.",
|
|
29
|
+
"type": "boolean",
|
|
30
|
+
"default": false
|
|
31
|
+
},
|
|
32
|
+
"title": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "The page title.",
|
|
35
|
+
"default": "Page Title"
|
|
36
|
+
},
|
|
37
|
+
"redirectPage": {
|
|
38
|
+
"description": "Whether the generated page is a redirect. _Note: Redirect path needs to be provided in the next prompt._",
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"default": false,
|
|
41
|
+
"x-priority": "important",
|
|
42
|
+
"x-prompt": "Is this a redirect page?"
|
|
43
|
+
},
|
|
44
|
+
"redirectPath": {
|
|
45
|
+
"description": "The path to redirect to. _Note: This is only needed if the redirect page is set to true._",
|
|
46
|
+
"type": "string",
|
|
47
|
+
"default": "/",
|
|
48
|
+
"x-priority": "important",
|
|
49
|
+
"x-prompt": "What is the path to redirect to?"
|
|
50
|
+
},
|
|
51
|
+
"pathMatch": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "The path to match for the redirect.",
|
|
54
|
+
"default": "full",
|
|
55
|
+
"enum": ["prefix", "full"],
|
|
56
|
+
"x-prompt": "What is the path to match for the redirect?"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"required": ["pathname", "project"]
|
|
60
|
+
}
|
|
@@ -4,7 +4,6 @@ exports.platformPlugin = void 0;
|
|
|
4
4
|
const vite_plugin_nitro_1 = require("@analogjs/vite-plugin-nitro");
|
|
5
5
|
const vite_plugin_angular_1 = require("@analogjs/vite-plugin-angular");
|
|
6
6
|
const router_plugin_1 = require("./router-plugin");
|
|
7
|
-
const dev_server_plugin_1 = require("./ssr/dev-server-plugin");
|
|
8
7
|
const ssr_build_plugin_1 = require("./ssr/ssr-build-plugin");
|
|
9
8
|
const content_plugin_1 = require("./content-plugin");
|
|
10
9
|
const clear_client_page_endpoint_1 = require("./clear-client-page-endpoint");
|
|
@@ -23,16 +22,13 @@ function platformPlugin(opts = {}) {
|
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
24
|
return [
|
|
26
|
-
(0, vite_plugin_nitro_1.default)(platformOptions, nitroOptions),
|
|
25
|
+
...(0, vite_plugin_nitro_1.default)(platformOptions, nitroOptions),
|
|
27
26
|
(platformOptions.ssr ? (0, ssr_build_plugin_1.ssrBuildPlugin)() : false),
|
|
28
27
|
...(0, router_plugin_1.routerPlugin)(),
|
|
29
28
|
...(0, content_plugin_1.contentPlugin)(),
|
|
30
|
-
(platformOptions.ssr
|
|
31
|
-
? (0, dev_server_plugin_1.devServerPlugin)({ entryServer: opts.entryServer })
|
|
32
|
-
: false),
|
|
33
29
|
...(0, vite_plugin_angular_1.default)({ jit: platformOptions.jit, ...(opts?.vite ?? {}) }),
|
|
34
30
|
(0, clear_client_page_endpoint_1.clearClientPageEndpointsPlugin)(),
|
|
35
31
|
];
|
|
36
32
|
}
|
|
37
33
|
exports.platformPlugin = platformPlugin;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUVBQTBEO0FBQzFELHVFQUFvRDtBQUdwRCxtREFBK0M7QUFDL0MsNkRBQXdEO0FBQ3hELHFEQUFpRDtBQUNqRCw2RUFBOEU7QUFFOUUsU0FBZ0IsY0FBYyxDQUFDLE9BQWdCLEVBQUU7SUFDL0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLGVBQWUsRUFBRSxHQUFHO1FBQ3hDLEdBQUcsRUFBRSxJQUFJO1FBQ1QsR0FBRyxJQUFJO0tBQ1IsQ0FBQztJQUVGLElBQUksWUFBWSxHQUFHLGVBQWUsRUFBRSxLQUFLLENBQUM7SUFDMUMsSUFBSSxTQUFTLEVBQUU7UUFDYixZQUFZLEdBQUc7WUFDYixHQUFHLFlBQVk7WUFDZixhQUFhLEVBQUU7Z0JBQ2IsU0FBUzthQUNWO1NBQ0YsQ0FBQztLQUNIO0lBRUQsT0FBTztRQUNMLEdBQUcsSUFBQSwyQkFBZSxFQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDakQsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFBLGlDQUFjLEdBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFXO1FBQzFELEdBQUcsSUFBQSw0QkFBWSxHQUFFO1FBQ2pCLEdBQUcsSUFBQSw4QkFBYSxHQUFFO1FBQ2xCLEdBQUcsSUFBQSw2QkFBTyxFQUFDLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMvRCxJQUFBLDJEQUE4QixHQUFFO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBeEJELHdDQXdCQyJ9
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// SSR dev server, middleware and error page source modified from
|
|
3
|
-
// https://github.com/solidjs/solid-start/blob/main/packages/start/dev/server.js
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.devServerPlugin = void 0;
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
function devServerPlugin(options) {
|
|
9
|
-
const entryServer = options.entryServer || 'src/main.server.ts';
|
|
10
|
-
const index = options.index || 'index.html';
|
|
11
|
-
return {
|
|
12
|
-
name: 'analogjs-dev-ssr-plugin',
|
|
13
|
-
config() {
|
|
14
|
-
return {
|
|
15
|
-
resolve: {
|
|
16
|
-
alias: {
|
|
17
|
-
'~analog/entry-server': entryServer,
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
configureServer(viteServer) {
|
|
23
|
-
return async () => {
|
|
24
|
-
remove_html_middlewares(viteServer.middlewares);
|
|
25
|
-
viteServer.middlewares.use(async (req, res) => {
|
|
26
|
-
let template = fs.readFileSync(path.resolve(viteServer.config.root, index), 'utf-8');
|
|
27
|
-
template = await viteServer.transformIndexHtml(req.originalUrl, template);
|
|
28
|
-
try {
|
|
29
|
-
const entryServer = (await viteServer.ssrLoadModule('~analog/entry-server'))['default'];
|
|
30
|
-
const result = await entryServer(req.originalUrl, template);
|
|
31
|
-
res.end(result);
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
viteServer && viteServer.ssrFixStacktrace(e);
|
|
35
|
-
res.statusCode = 500;
|
|
36
|
-
res.end(`
|
|
37
|
-
<!DOCTYPE html>
|
|
38
|
-
<html lang="en">
|
|
39
|
-
<head>
|
|
40
|
-
<meta charset="UTF-8" />
|
|
41
|
-
<title>Error</title>
|
|
42
|
-
<script type="module">
|
|
43
|
-
import { ErrorOverlay } from '/@vite/client'
|
|
44
|
-
document.body.appendChild(new ErrorOverlay(${JSON.stringify(prepareError(req, e)).replace(/</g, '\\u003c')}))
|
|
45
|
-
</script>
|
|
46
|
-
</head>
|
|
47
|
-
<body>
|
|
48
|
-
</body>
|
|
49
|
-
</html>
|
|
50
|
-
`);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
exports.devServerPlugin = devServerPlugin;
|
|
58
|
-
/**
|
|
59
|
-
* Removes Vite internal middleware
|
|
60
|
-
*
|
|
61
|
-
* @param server
|
|
62
|
-
*/
|
|
63
|
-
function remove_html_middlewares(server) {
|
|
64
|
-
const html_middlewares = [
|
|
65
|
-
'viteIndexHtmlMiddleware',
|
|
66
|
-
'vite404Middleware',
|
|
67
|
-
'viteSpaFallbackMiddleware',
|
|
68
|
-
];
|
|
69
|
-
for (let i = server.stack.length - 1; i > 0; i--) {
|
|
70
|
-
// @ts-ignore
|
|
71
|
-
if (html_middlewares.includes(server.stack[i].handle.name)) {
|
|
72
|
-
server.stack.splice(i, 1);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Formats error for SSR message in error overlay
|
|
78
|
-
* @param req
|
|
79
|
-
* @param error
|
|
80
|
-
* @returns
|
|
81
|
-
*/
|
|
82
|
-
function prepareError(req, error) {
|
|
83
|
-
const e = error;
|
|
84
|
-
return {
|
|
85
|
-
message: `An error occured while server rendering ${req.url}:\n\n\t${typeof e === 'string' ? e : e.message} `,
|
|
86
|
-
stack: typeof e === 'string' ? '' : e.stack,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LXNlcnZlci1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL3Nzci9kZXYtc2VydmVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFO0FBQ2pFLGdGQUFnRjs7O0FBR2hGLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFPekIsU0FBZ0IsZUFBZSxDQUFDLE9BQXNCO0lBQ3BELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksb0JBQW9CLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUM7SUFFNUMsT0FBTztRQUNMLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsTUFBTTtZQUNKLE9BQU87Z0JBQ0wsT0FBTyxFQUFFO29CQUNQLEtBQUssRUFBRTt3QkFDTCxzQkFBc0IsRUFBRSxXQUFXO3FCQUNwQztpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsZUFBZSxDQUFDLFVBQVU7WUFDeEIsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDaEIsdUJBQXVCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRCxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUM1QyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUMzQyxPQUFPLENBQ1IsQ0FBQztvQkFFRixRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsa0JBQWtCLENBQzVDLEdBQUcsQ0FBQyxXQUFxQixFQUN6QixRQUFRLENBQ1QsQ0FBQztvQkFFRixJQUFJO3dCQUNGLE1BQU0sV0FBVyxHQUFHLENBQ2xCLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUN2RCxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ2pCO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNWLFVBQVUsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBVSxDQUFDLENBQUM7d0JBQ3RELEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO3dCQUNyQixHQUFHLENBQUMsR0FBRyxDQUFDOzs7Ozs7OztpRUFRNkMsSUFBSSxDQUFDLFNBQVMsQ0FDekQsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDckIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQzs7Ozs7O2FBTWpDLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQTVERCwwQ0E0REM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxNQUFvQztJQUNuRSxNQUFNLGdCQUFnQixHQUFHO1FBQ3ZCLHlCQUF5QjtRQUN6QixtQkFBbUI7UUFDbkIsMkJBQTJCO0tBQzVCLENBQUM7SUFDRixLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2hELGFBQWE7UUFDYixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0I7S0FDRjtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsWUFBWSxDQUFDLEdBQTRCLEVBQUUsS0FBYztJQUNoRSxNQUFNLENBQUMsR0FBRyxLQUFjLENBQUM7SUFDekIsT0FBTztRQUNMLE9BQU8sRUFBRSwyQ0FBMkMsR0FBRyxDQUFDLEdBQUcsVUFDekQsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUNoQyxHQUFHO1FBQ0gsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztLQUM1QyxDQUFDO0FBQ0osQ0FBQyJ9
|