create-analog 2.0.0-alpha.9 → 2.0.0-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/files/styles.css +3 -81
- package/index.js +14 -63
- package/package.json +7 -3
- package/template-angular-v17/package.json +5 -5
- package/template-angular-v18/package.json +5 -5
- package/template-angular-v18/vite.config.ts +1 -1
- package/{template-angular-v16 → template-angular-v19}/README.md +1 -1
- package/{template-angular-v16 → template-angular-v19}/_gitignore +2 -0
- package/{template-angular-v16 → template-angular-v19}/angular.json +1 -1
- package/{template-angular-v16 → template-angular-v19}/index.html +1 -1
- package/template-angular-v19/package.json +53 -0
- package/{template-latest → template-angular-v19}/src/app/app.component.ts +0 -1
- package/{template-angular-v16 → template-angular-v19}/src/app/app.config.server.ts +3 -8
- package/template-angular-v19/src/app/app.config.ts +20 -0
- package/template-angular-v19/src/app/pages/index.page.ts +54 -0
- package/template-angular-v19/src/main.server.ts +8 -0
- package/{template-angular-v16 → template-angular-v19}/src/main.ts +2 -2
- package/{template-angular-v16 → template-angular-v19}/src/styles.css +5 -0
- package/{template-angular-v16 → template-angular-v19}/tsconfig.app.json +2 -3
- package/{template-angular-v16 → template-angular-v19}/tsconfig.json +3 -6
- package/{template-angular-v16 → template-angular-v19}/tsconfig.spec.json +3 -3
- package/{template-angular-v16 → template-angular-v19}/vite.config.ts +5 -4
- package/template-blog/.vscode/extensions.json +1 -1
- package/template-blog/package.json +25 -25
- package/template-blog/src/app/app.config.ts +8 -3
- package/{template-latest/src/app/app.component.spec.ts → template-blog/src/app/app.spec.ts} +1 -1
- package/template-blog/src/app/{app.component.ts → app.ts} +0 -1
- package/template-blog/src/app/pages/blog/[slug].page.ts +0 -1
- package/template-blog/src/app/pages/blog/index.page.ts +0 -1
- package/template-blog/src/test-setup.ts +6 -5
- package/template-blog/tsconfig.json +4 -2
- package/template-blog/tsconfig.spec.json +1 -1
- package/template-blog/vite.config.ts +3 -3
- package/template-latest/.vscode/extensions.json +1 -1
- package/template-latest/package.json +25 -25
- package/template-latest/src/app/app.config.ts +8 -3
- package/template-latest/src/app/{app-root.spec.ts → app.spec.ts} +4 -4
- package/template-latest/src/app/app.ts +17 -0
- package/template-latest/src/app/pages/analog-welcome.ts +263 -0
- package/template-latest/src/app/pages/index.page.ts +5 -47
- package/template-latest/src/styles.css +3 -79
- package/template-latest/src/test-setup.ts +6 -5
- package/template-latest/tsconfig.json +4 -2
- package/template-latest/tsconfig.spec.json +1 -1
- package/template-latest/vite.config.ts +4 -2
- package/template-minimal/.vscode/extensions.json +1 -1
- package/template-minimal/package.json +25 -25
- package/template-minimal/src/app/app.config.ts +8 -3
- package/template-minimal/src/app/{app.component.ts → app.ts} +0 -1
- package/template-minimal/src/app/pages/index.page.ts +0 -1
- package/template-minimal/vite.config.ts +3 -3
- package/files/analog-env.d.ts +0 -13
- package/template-angular-v16/package.json +0 -54
- package/template-angular-v16/src/app/app.component.spec.ts +0 -17
- package/template-angular-v16/src/app/app.component.ts +0 -20
- package/template-angular-v16/src/app/app.config.ts +0 -12
- package/template-angular-v16/src/app/pages/index.page.ts +0 -49
- package/template-angular-v16/src/main.server.ts +0 -26
- package/template-angular-v18/src/app/app-root.ag +0 -16
- package/template-angular-v18/src/app/app-root.spec.ts +0 -20
- package/template-angular-v18/src/app/pages/index.page.ag +0 -53
- package/template-blog/src/app/app-root.ag +0 -25
- package/template-blog/src/app/app-root.spec.ts +0 -20
- package/template-blog/src/app/pages/blog/[slug].page.ag +0 -24
- package/template-blog/src/app/pages/blog/index.page.ag +0 -32
- package/template-latest/src/app/app-root.ag +0 -16
- package/template-latest/src/app/pages/index.page.ag +0 -53
- package/template-minimal/src/app/app-root.ag +0 -7
- package/template-minimal/src/app/pages/index.page.ag +0 -32
- /package/{template-angular-v16 → template-angular-v19}/.editorconfig +0 -0
- /package/{template-angular-v16 → template-angular-v19}/.vscode/extensions.json +0 -0
- /package/{template-angular-v16 → template-angular-v19}/.vscode/launch.json +0 -0
- /package/{template-angular-v16 → template-angular-v19}/.vscode/tasks.json +0 -0
- /package/{template-angular-v16/src/assets → template-angular-v19/public}/.gitkeep +0 -0
- /package/{template-angular-v16/src/assets → template-angular-v19/public}/analog.svg +0 -0
- /package/{template-angular-v16 → template-angular-v19/public}/favicon.ico +0 -0
- /package/{template-angular-v16/src/assets → template-angular-v19/public}/vite.svg +0 -0
- /package/{template-blog → template-angular-v19}/src/app/app.component.spec.ts +0 -0
- /package/{template-angular-v16/src/server/routes → template-angular-v19/src/server/routes/api}/v1/hello.ts +0 -0
- /package/{template-angular-v16/src/test.ts → template-angular-v19/src/test-setup.ts} +0 -0
- /package/{template-angular-v16 → template-angular-v19}/src/vite-env.d.ts +0 -0
package/files/styles.css
CHANGED
|
@@ -1,86 +1,8 @@
|
|
|
1
1
|
@import 'tailwindcss';
|
|
2
2
|
|
|
3
3
|
/* You can add global styles to this file, and also import other style files */
|
|
4
|
-
|
|
5
|
-
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
|
|
6
|
-
font-size: 16px;
|
|
7
|
-
line-height: 24px;
|
|
8
|
-
font-weight: 400;
|
|
9
|
-
|
|
10
|
-
color-scheme: light dark;
|
|
11
|
-
color: rgba(255, 255, 255, 0.87);
|
|
12
|
-
background-color: #242424;
|
|
13
|
-
|
|
14
|
-
font-synthesis: none;
|
|
15
|
-
text-rendering: optimizeLegibility;
|
|
16
|
-
-webkit-font-smoothing: antialiased;
|
|
17
|
-
-moz-osx-font-smoothing: grayscale;
|
|
18
|
-
-webkit-text-size-adjust: 100%;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
a {
|
|
22
|
-
font-weight: 500;
|
|
23
|
-
color: #646cff;
|
|
24
|
-
text-decoration: inherit;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
a:hover {
|
|
28
|
-
color: #535bf2;
|
|
29
|
-
}
|
|
30
|
-
|
|
4
|
+
html,
|
|
31
5
|
body {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
place-items: center;
|
|
35
|
-
min-width: 320px;
|
|
36
|
-
min-height: 100vh;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
h1 {
|
|
40
|
-
font-size: 3.2em;
|
|
41
|
-
line-height: 1.1;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
button {
|
|
45
|
-
border-radius: 8px;
|
|
46
|
-
border: 1px solid transparent;
|
|
47
|
-
padding: 0.6em 1.2em;
|
|
48
|
-
font-size: 1em;
|
|
49
|
-
font-weight: 500;
|
|
50
|
-
font-family: inherit;
|
|
51
|
-
background-color: #1a1a1a;
|
|
52
|
-
cursor: pointer;
|
|
53
|
-
transition: border-color 0.25s;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
button:hover {
|
|
57
|
-
border-color: #646cff;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
button:focus,
|
|
61
|
-
button:focus-visible {
|
|
62
|
-
outline: 4px auto -webkit-focus-ring-color;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.card {
|
|
66
|
-
padding: 2em;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.logo {
|
|
70
|
-
@apply box-content;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@media (prefers-color-scheme: light) {
|
|
74
|
-
:root {
|
|
75
|
-
color: #213547;
|
|
76
|
-
background-color: #ffffff;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
a:hover {
|
|
80
|
-
color: #747bff;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
button {
|
|
84
|
-
background-color: #f9f9f9;
|
|
85
|
-
}
|
|
6
|
+
display: block;
|
|
7
|
+
height: 100%;
|
|
86
8
|
}
|
package/index.js
CHANGED
|
@@ -42,7 +42,7 @@ const HIGHLIGHTERS = {
|
|
|
42
42
|
highlighter: 'withPrismHighlighter',
|
|
43
43
|
entryPoint: 'prism-highlighter',
|
|
44
44
|
dependencies: {
|
|
45
|
-
'marked-highlight': '^2.
|
|
45
|
+
'marked-highlight': '^2.2.1',
|
|
46
46
|
prismjs: '^1.29.0',
|
|
47
47
|
},
|
|
48
48
|
},
|
|
@@ -50,7 +50,7 @@ const HIGHLIGHTERS = {
|
|
|
50
50
|
highlighter: 'withShikiHighlighter',
|
|
51
51
|
entryPoint: 'shiki-highlighter',
|
|
52
52
|
dependencies: {
|
|
53
|
-
marked: '^
|
|
53
|
+
marked: '^15.0.7',
|
|
54
54
|
'marked-shiki': '^1.1.0',
|
|
55
55
|
shiki: '^1.6.1',
|
|
56
56
|
},
|
|
@@ -65,7 +65,6 @@ async function init() {
|
|
|
65
65
|
let targetDir = formatTargetDir(argv._[0]);
|
|
66
66
|
let template = argv.template || argv.t;
|
|
67
67
|
let skipTailwind = fromBoolArg(argv.skipTailwind);
|
|
68
|
-
let useAnalogSFC = fromBoolArg(argv.analogSFC);
|
|
69
68
|
|
|
70
69
|
const defaultTargetDir = 'analog-project';
|
|
71
70
|
const getProjectName = () =>
|
|
@@ -135,11 +134,6 @@ async function init() {
|
|
|
135
134
|
})),
|
|
136
135
|
initial: 1,
|
|
137
136
|
},
|
|
138
|
-
{
|
|
139
|
-
type: useAnalogSFC === undefined ? 'confirm' : null,
|
|
140
|
-
name: 'analogSFC',
|
|
141
|
-
message: 'Would you like to use Analog SFCs?',
|
|
142
|
-
},
|
|
143
137
|
{
|
|
144
138
|
type: skipTailwind === undefined ? 'confirm' : null,
|
|
145
139
|
name: 'tailwind',
|
|
@@ -163,7 +157,6 @@ async function init() {
|
|
|
163
157
|
overwrite,
|
|
164
158
|
packageName,
|
|
165
159
|
variant,
|
|
166
|
-
analogSFC,
|
|
167
160
|
tailwind,
|
|
168
161
|
syntaxHighlighter,
|
|
169
162
|
} = result;
|
|
@@ -181,7 +174,6 @@ async function init() {
|
|
|
181
174
|
// determine syntax highlighter
|
|
182
175
|
let highlighter = syntaxHighlighter ?? (template === 'blog' ? 'prism' : null);
|
|
183
176
|
skipTailwind = skipTailwind ?? !tailwind;
|
|
184
|
-
useAnalogSFC = useAnalogSFC ?? analogSFC;
|
|
185
177
|
|
|
186
178
|
console.log(`\nScaffolding project in ${root}...`);
|
|
187
179
|
|
|
@@ -214,6 +206,13 @@ async function init() {
|
|
|
214
206
|
addTailwindDirectives(write, filesDir);
|
|
215
207
|
}
|
|
216
208
|
|
|
209
|
+
replacePlaceholders(root, 'vite.config.ts', {
|
|
210
|
+
__TAILWIND_IMPORT__: !skipTailwind
|
|
211
|
+
? `\nimport tailwindcss from '@tailwindcss/vite';`
|
|
212
|
+
: '',
|
|
213
|
+
__TAILWIND_PLUGIN__: !skipTailwind ? '\n tailwindcss()' : '',
|
|
214
|
+
});
|
|
215
|
+
|
|
217
216
|
const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
|
|
218
217
|
const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
|
|
219
218
|
const pkg = JSON.parse(
|
|
@@ -241,7 +240,6 @@ async function init() {
|
|
|
241
240
|
write('package.json', JSON.stringify(pkg, null, 2));
|
|
242
241
|
|
|
243
242
|
setProjectTitle(root, getProjectName());
|
|
244
|
-
setComponentFormat(root, filesDir, write, template, useAnalogSFC);
|
|
245
243
|
|
|
246
244
|
console.log(`\nInitializing git repository:`);
|
|
247
245
|
execSync(`git init ${targetDir} && cd ${targetDir} && git add .`);
|
|
@@ -376,11 +374,11 @@ function addTailwindDependencies(pkg) {
|
|
|
376
374
|
|
|
377
375
|
function addYarnDevDependencies(pkg, template) {
|
|
378
376
|
// v18
|
|
379
|
-
if (template === 'latest' || template === 'blog') {
|
|
380
|
-
pkg.devDependencies['@nx/angular'] = '^
|
|
381
|
-
pkg.devDependencies['@nx/devkit'] = '^
|
|
382
|
-
pkg.devDependencies['@nx/vite'] = '^
|
|
383
|
-
pkg.devDependencies['nx'] = '^
|
|
377
|
+
if (template === 'latest' || template === 'blog' || template === 'minimal') {
|
|
378
|
+
pkg.devDependencies['@nx/angular'] = '^21.0.0';
|
|
379
|
+
pkg.devDependencies['@nx/devkit'] = '^21.0.0';
|
|
380
|
+
pkg.devDependencies['@nx/vite'] = '^21.0.0';
|
|
381
|
+
pkg.devDependencies['nx'] = '^21.0.0';
|
|
384
382
|
} else if (template === 'angular-v17') {
|
|
385
383
|
pkg.devDependencies['@angular-devkit/build-angular'] = '^17.2.0';
|
|
386
384
|
}
|
|
@@ -417,47 +415,6 @@ function setProjectTitle(root, title) {
|
|
|
417
415
|
});
|
|
418
416
|
}
|
|
419
417
|
|
|
420
|
-
function setComponentFormat(root, filesDir, write, template, useAnalogSFC) {
|
|
421
|
-
const getSFCConfig = () => {
|
|
422
|
-
const sfcConfigOption =
|
|
423
|
-
'vite: { experimental: { supportAnalogFormat: true } }';
|
|
424
|
-
|
|
425
|
-
return template === 'latest'
|
|
426
|
-
? `{ ${sfcConfigOption} }`
|
|
427
|
-
: `\n ${sfcConfigOption},`;
|
|
428
|
-
};
|
|
429
|
-
|
|
430
|
-
replacePlaceholders(root, 'vite.config.ts', {
|
|
431
|
-
__ANALOG_SFC_CONFIG__: useAnalogSFC ? getSFCConfig() : '',
|
|
432
|
-
});
|
|
433
|
-
replacePlaceholders(root, ['src/main.ts', 'src/main.server.ts'], {
|
|
434
|
-
__APP_COMPONENT__: useAnalogSFC ? 'App' : 'AppComponent',
|
|
435
|
-
__APP_COMPONENT_IMPORT__: useAnalogSFC
|
|
436
|
-
? "import App from './app/app-root.ag';"
|
|
437
|
-
: "import { AppComponent } from './app/app.component';",
|
|
438
|
-
});
|
|
439
|
-
|
|
440
|
-
const cmpForDelete = useAnalogSFC ? 'app.component' : 'app-root';
|
|
441
|
-
const deleteExt = useAnalogSFC ? 'ts' : 'ag';
|
|
442
|
-
deleteFiles(root, [
|
|
443
|
-
useAnalogSFC ? `src/app/${cmpForDelete}.ts` : `src/app/${cmpForDelete}.ag`,
|
|
444
|
-
template === 'blog'
|
|
445
|
-
? [
|
|
446
|
-
`src/app/pages/blog/index.page.${deleteExt}`,
|
|
447
|
-
`src/app/pages/blog/[slug].page.${deleteExt}`,
|
|
448
|
-
]
|
|
449
|
-
: `src/app/pages/index.page.${deleteExt}`,
|
|
450
|
-
template !== 'minimal' && `src/app/${cmpForDelete}.spec.ts`,
|
|
451
|
-
]);
|
|
452
|
-
|
|
453
|
-
if (useAnalogSFC) {
|
|
454
|
-
write(
|
|
455
|
-
'src/analog-env.d.ts',
|
|
456
|
-
fs.readFileSync(path.join(filesDir, 'analog-env.d.ts'), 'utf-8'),
|
|
457
|
-
);
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
418
|
function replacePlaceholders(root, files, config) {
|
|
462
419
|
for (const file of toFlatArray(files)) {
|
|
463
420
|
const filePath = path.join(root, file);
|
|
@@ -471,12 +428,6 @@ function replacePlaceholders(root, files, config) {
|
|
|
471
428
|
}
|
|
472
429
|
}
|
|
473
430
|
|
|
474
|
-
function deleteFiles(root, files) {
|
|
475
|
-
for (const file of toFlatArray(files)) {
|
|
476
|
-
fs.unlinkSync(path.join(root, file));
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
431
|
function toFlatArray(value) {
|
|
481
432
|
return (Array.isArray(value) ? value : [value]).filter(Boolean).flat();
|
|
482
433
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-analog",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Brandon Roberts",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"index.js",
|
|
13
|
-
"template-angular-v16",
|
|
14
13
|
"template-angular-v17",
|
|
15
14
|
"template-angular-v18",
|
|
15
|
+
"template-angular-v19",
|
|
16
16
|
"template-blog",
|
|
17
17
|
"template-latest",
|
|
18
18
|
"template-minimal",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"main": "index.js",
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": "
|
|
23
|
+
"node": ">=20.0.0"
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
@@ -38,5 +38,9 @@
|
|
|
38
38
|
"kolorist": "^1.6.0",
|
|
39
39
|
"minimist": "^1.2.7",
|
|
40
40
|
"prompts": "^2.4.2"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public",
|
|
44
|
+
"provenance": true
|
|
41
45
|
}
|
|
42
46
|
}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"test": "ng test"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@analogjs/content": "^2.0.0-
|
|
19
|
-
"@analogjs/router": "^2.0.0-
|
|
18
|
+
"@analogjs/content": "^2.0.0-beta.1",
|
|
19
|
+
"@analogjs/router": "^2.0.0-beta.1",
|
|
20
20
|
"@angular/animations": "^17.2.0",
|
|
21
21
|
"@angular/common": "^17.2.0",
|
|
22
22
|
"@angular/compiler": "^17.2.0",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"zone.js": "~0.14.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@analogjs/platform": "^2.0.0-
|
|
42
|
-
"@analogjs/vite-plugin-angular": "^2.0.0-
|
|
43
|
-
"@analogjs/vitest-angular": "^2.0.0-
|
|
41
|
+
"@analogjs/platform": "^2.0.0-beta.1",
|
|
42
|
+
"@analogjs/vite-plugin-angular": "^2.0.0-beta.1",
|
|
43
|
+
"@analogjs/vitest-angular": "^2.0.0-beta.1",
|
|
44
44
|
"@angular-devkit/build-angular": "^17.2.0",
|
|
45
45
|
"@angular/cli": "^17.2.0",
|
|
46
46
|
"@angular/compiler-cli": "^17.2.0",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"private": true,
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@analogjs/content": "^2.0.0-
|
|
19
|
-
"@analogjs/router": "^2.0.0-
|
|
18
|
+
"@analogjs/content": "^2.0.0-beta.1",
|
|
19
|
+
"@analogjs/router": "^2.0.0-beta.1",
|
|
20
20
|
"@angular/animations": "^18.0.0",
|
|
21
21
|
"@angular/build": "^18.0.0",
|
|
22
22
|
"@angular/common": "^18.0.0",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"zone.js": "~0.14.3"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@analogjs/platform": "^2.0.0-
|
|
42
|
-
"@analogjs/vite-plugin-angular": "^2.0.0-
|
|
43
|
-
"@analogjs/vitest-angular": "^2.0.0-
|
|
41
|
+
"@analogjs/platform": "^2.0.0-beta.1",
|
|
42
|
+
"@analogjs/vite-plugin-angular": "^2.0.0-beta.1",
|
|
43
|
+
"@analogjs/vitest-angular": "^2.0.0-beta.1",
|
|
44
44
|
"@angular/cli": "^18.0.0",
|
|
45
45
|
"@angular/compiler-cli": "^18.0.0",
|
|
46
46
|
"jsdom": "^22.0.0",
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-app",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": ">=18.19.1"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"ng": "ng",
|
|
10
|
+
"dev": "ng serve",
|
|
11
|
+
"start": "ng serve",
|
|
12
|
+
"build": "ng build",
|
|
13
|
+
"watch": "ng build --watch --configuration development",
|
|
14
|
+
"test": "ng test"
|
|
15
|
+
},
|
|
16
|
+
"private": true,
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@analogjs/content": "^2.0.0-beta.1",
|
|
19
|
+
"@analogjs/router": "^2.0.0-beta.1",
|
|
20
|
+
"@angular/animations": "^19.0.0",
|
|
21
|
+
"@angular/common": "^19.0.0",
|
|
22
|
+
"@angular/compiler": "^19.0.0",
|
|
23
|
+
"@angular/core": "^19.0.0",
|
|
24
|
+
"@angular/forms": "^19.0.0",
|
|
25
|
+
"@angular/platform-browser": "^19.0.0",
|
|
26
|
+
"@angular/platform-browser-dynamic": "^19.0.0",
|
|
27
|
+
"@angular/platform-server": "^19.0.0",
|
|
28
|
+
"@angular/router": "^19.0.0",
|
|
29
|
+
"front-matter": "^4.0.2",
|
|
30
|
+
"marked": "^15.0.7",
|
|
31
|
+
"marked-gfm-heading-id": "^4.1.1",
|
|
32
|
+
"marked-highlight": "^2.2.1",
|
|
33
|
+
"marked-mangle": "^1.1.10",
|
|
34
|
+
"prismjs": "^1.29.0",
|
|
35
|
+
"rxjs": "~7.8.0",
|
|
36
|
+
"tslib": "^2.3.0",
|
|
37
|
+
"zone.js": "~0.15.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@analogjs/platform": "^2.0.0-beta.1",
|
|
41
|
+
"@analogjs/vite-plugin-angular": "^2.0.0-beta.1",
|
|
42
|
+
"@analogjs/vitest-angular": "^2.0.0-beta.1",
|
|
43
|
+
"@angular-devkit/build-angular": "^19.0.0",
|
|
44
|
+
"@angular/build": "^19.0.0",
|
|
45
|
+
"@angular/cli": "^19.0.0",
|
|
46
|
+
"@angular/compiler-cli": "^19.0.0",
|
|
47
|
+
"jsdom": "^22.0.0",
|
|
48
|
+
"typescript": "~5.8.0",
|
|
49
|
+
"vite": "^6.0.0",
|
|
50
|
+
"vite-tsconfig-paths": "^4.2.0",
|
|
51
|
+
"vitest": "^3.0.0"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
ɵSERVER_CONTEXT as SERVER_CONTEXT,
|
|
5
|
-
} from '@angular/platform-server';
|
|
2
|
+
import { provideServerRendering } from '@angular/platform-server';
|
|
3
|
+
|
|
6
4
|
import { appConfig } from './app.config';
|
|
7
5
|
|
|
8
6
|
const serverConfig: ApplicationConfig = {
|
|
9
|
-
providers: [
|
|
10
|
-
provideServerRendering(),
|
|
11
|
-
{ provide: SERVER_CONTEXT, useValue: 'ssr-analog' },
|
|
12
|
-
],
|
|
7
|
+
providers: [provideServerRendering()],
|
|
13
8
|
};
|
|
14
9
|
|
|
15
10
|
export const config = mergeApplicationConfig(appConfig, serverConfig);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
provideHttpClient,
|
|
3
|
+
withFetch,
|
|
4
|
+
withInterceptors,
|
|
5
|
+
} from '@angular/common/http';
|
|
6
|
+
import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
|
|
7
|
+
import { provideClientHydration } from '@angular/platform-browser';
|
|
8
|
+
import { provideFileRouter, requestContextInterceptor } from '@analogjs/router';
|
|
9
|
+
|
|
10
|
+
export const appConfig: ApplicationConfig = {
|
|
11
|
+
providers: [
|
|
12
|
+
provideZoneChangeDetection({ eventCoalescing: true }),
|
|
13
|
+
provideFileRouter(),
|
|
14
|
+
provideHttpClient(
|
|
15
|
+
withFetch(),
|
|
16
|
+
withInterceptors([requestContextInterceptor])
|
|
17
|
+
),
|
|
18
|
+
provideClientHydration(),
|
|
19
|
+
],
|
|
20
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Component, signal } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Component({
|
|
4
|
+
selector: 'app-home',
|
|
5
|
+
template: `
|
|
6
|
+
<div>
|
|
7
|
+
<a href="https://analogjs.org/" target="_blank">
|
|
8
|
+
<img alt="Analog Logo" class="logo analog" src="/analog.svg" />
|
|
9
|
+
</a>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<h2>Analog</h2>
|
|
13
|
+
|
|
14
|
+
<h3>The fullstack meta-framework for Angular!</h3>
|
|
15
|
+
|
|
16
|
+
<div class="card">
|
|
17
|
+
<button type="button" (click)="increment()">Count {{ count() }}</button>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<p class="read-the-docs">
|
|
21
|
+
<a href="https://analogjs.org" target="_blank">Docs</a> |
|
|
22
|
+
<a href="https://github.com/analogjs/analog" target="_blank">GitHub</a> |
|
|
23
|
+
<a href="https://github.com/sponsors/brandonroberts" target="_blank">
|
|
24
|
+
Sponsor
|
|
25
|
+
</a>
|
|
26
|
+
</p>
|
|
27
|
+
`,
|
|
28
|
+
styles: `
|
|
29
|
+
.logo {
|
|
30
|
+
will-change: filter;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.logo:hover {
|
|
34
|
+
filter: drop-shadow(0 0 2em #646cffaa);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.read-the-docs > * {
|
|
38
|
+
color: #fff;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@media (prefers-color-scheme: light) {
|
|
42
|
+
.read-the-docs > * {
|
|
43
|
+
color: #213547;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`,
|
|
47
|
+
})
|
|
48
|
+
export default class HomeComponent {
|
|
49
|
+
count = signal(0);
|
|
50
|
+
|
|
51
|
+
increment() {
|
|
52
|
+
this.count.update((count) => count + 1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'zone.js';
|
|
2
2
|
import { bootstrapApplication } from '@angular/platform-browser';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
__APP_COMPONENT_IMPORT__
|
|
5
5
|
import { appConfig } from './app/app.config';
|
|
6
6
|
|
|
7
|
-
bootstrapApplication(
|
|
7
|
+
bootstrapApplication(__APP_COMPONENT__, appConfig);
|
|
@@ -21,6 +21,7 @@ a {
|
|
|
21
21
|
color: #646cff;
|
|
22
22
|
text-decoration: inherit;
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
a:hover {
|
|
25
26
|
color: #535bf2;
|
|
26
27
|
}
|
|
@@ -49,9 +50,11 @@ button {
|
|
|
49
50
|
cursor: pointer;
|
|
50
51
|
transition: border-color 0.25s;
|
|
51
52
|
}
|
|
53
|
+
|
|
52
54
|
button:hover {
|
|
53
55
|
border-color: #646cff;
|
|
54
56
|
}
|
|
57
|
+
|
|
55
58
|
button:focus,
|
|
56
59
|
button:focus-visible {
|
|
57
60
|
outline: 4px auto -webkit-focus-ring-color;
|
|
@@ -66,9 +69,11 @@ button:focus-visible {
|
|
|
66
69
|
color: #213547;
|
|
67
70
|
background-color: #ffffff;
|
|
68
71
|
}
|
|
72
|
+
|
|
69
73
|
a:hover {
|
|
70
74
|
color: #747bff;
|
|
71
75
|
}
|
|
76
|
+
|
|
72
77
|
button {
|
|
73
78
|
background-color: #f9f9f9;
|
|
74
79
|
}
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
{
|
|
3
3
|
"extends": "./tsconfig.json",
|
|
4
4
|
"compilerOptions": {
|
|
5
|
-
"composite": false,
|
|
6
5
|
"outDir": "./out-tsc/app",
|
|
7
6
|
"types": []
|
|
8
7
|
},
|
|
9
8
|
"files": ["src/main.ts", "src/main.server.ts"],
|
|
10
9
|
"include": [
|
|
11
10
|
"src/**/*.d.ts",
|
|
12
|
-
"src/app/
|
|
13
|
-
"src/
|
|
11
|
+
"src/app/pages/**/*.page.ts",
|
|
12
|
+
"src/server/middleware/**/*.ts"
|
|
14
13
|
]
|
|
15
14
|
}
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"declaration": false,
|
|
15
15
|
"downlevelIteration": true,
|
|
16
16
|
"experimentalDecorators": true,
|
|
17
|
-
"moduleResolution": "
|
|
17
|
+
"moduleResolution": "bundler",
|
|
18
|
+
"isolatedModules": true,
|
|
18
19
|
"importHelpers": true,
|
|
19
20
|
"target": "ES2022",
|
|
20
21
|
"module": "ES2022",
|
|
@@ -27,9 +28,5 @@
|
|
|
27
28
|
"strictInjectionParameters": true,
|
|
28
29
|
"strictInputAccessModifiers": true,
|
|
29
30
|
"strictTemplates": true
|
|
30
|
-
}
|
|
31
|
-
"references": [
|
|
32
|
-
{ "path": "tsconfig.app.json" },
|
|
33
|
-
{ "path": "tsconfig.spec.json" }
|
|
34
|
-
]
|
|
31
|
+
}
|
|
35
32
|
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
{
|
|
3
3
|
"extends": "./tsconfig.json",
|
|
4
4
|
"compilerOptions": {
|
|
5
|
-
"composite": false,
|
|
6
5
|
"outDir": "./out-tsc/spec",
|
|
6
|
+
"target": "es2016",
|
|
7
7
|
"types": ["node", "vitest/globals"]
|
|
8
8
|
},
|
|
9
|
-
"files": ["src/test.ts"],
|
|
10
|
-
"include": ["src/**/*.spec.ts", "src/**/*.ts"]
|
|
9
|
+
"files": ["src/test-setup.ts"],
|
|
10
|
+
"include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
|
|
11
11
|
}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
/// <reference types="vitest" />
|
|
2
2
|
|
|
3
3
|
import { defineConfig } from 'vite';
|
|
4
|
-
import analog from '@analogjs/platform';
|
|
4
|
+
import analog from '@analogjs/platform';__TAILWIND_IMPORT__
|
|
5
5
|
|
|
6
6
|
// https://vitejs.dev/config/
|
|
7
7
|
export default defineConfig(({ mode }) => ({
|
|
8
|
-
publicDir: 'src/assets',
|
|
9
8
|
build: {
|
|
10
9
|
target: ['es2020'],
|
|
11
10
|
},
|
|
12
11
|
resolve: {
|
|
13
12
|
mainFields: ['module'],
|
|
14
13
|
},
|
|
15
|
-
plugins: [
|
|
14
|
+
plugins: [
|
|
15
|
+
analog(),__TAILWIND_PLUGIN__
|
|
16
|
+
],
|
|
16
17
|
test: {
|
|
17
18
|
globals: true,
|
|
18
19
|
environment: 'jsdom',
|
|
19
|
-
setupFiles: ['src/test.ts'],
|
|
20
|
+
setupFiles: ['src/test-setup.ts'],
|
|
20
21
|
include: ['**/*.spec.ts'],
|
|
21
22
|
reporters: ['default'],
|
|
22
23
|
},
|