create-analog 2.0.0-alpha.2 → 2.0.0-alpha.20
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 +4 -85
- package/index.js +25 -93
- package/package.json +3 -3
- package/template-angular-v17/package.json +8 -8
- package/template-angular-v18/package.json +9 -9
- 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/angular.json +1 -1
- package/template-blog/package.json +24 -18
- 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 +5 -3
- package/template-blog/vite.config.ts +3 -3
- package/template-latest/.vscode/extensions.json +1 -1
- package/template-latest/angular.json +1 -1
- package/template-latest/package.json +24 -18
- 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 +5 -3
- package/template-latest/vite.config.ts +4 -2
- package/template-minimal/.vscode/extensions.json +1 -1
- package/template-minimal/angular.json +1 -1
- package/template-minimal/package.json +24 -18
- 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/tsconfig.json +1 -1
- package/template-minimal/vite.config.ts +3 -3
- package/files/analog-env.d.ts +0 -13
- package/files/postcss.config.cjs +0 -6
- package/files/tailwind.config.ts +0 -9
- 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/template-blog/src/server/routes/{v1 → api/v1}/hello.ts +0 -0
- /package/template-latest/src/server/routes/{v1 → api/v1}/hello.ts +0 -0
package/files/styles.css
CHANGED
|
@@ -1,89 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
@tailwind base;
|
|
3
|
-
@tailwind components;
|
|
4
|
-
@tailwind utilities;
|
|
1
|
+
@import 'tailwindcss';
|
|
5
2
|
|
|
6
3
|
/* You can add global styles to this file, and also import other style files */
|
|
7
|
-
|
|
8
|
-
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
|
|
9
|
-
font-size: 16px;
|
|
10
|
-
line-height: 24px;
|
|
11
|
-
font-weight: 400;
|
|
12
|
-
|
|
13
|
-
color-scheme: light dark;
|
|
14
|
-
color: rgba(255, 255, 255, 0.87);
|
|
15
|
-
background-color: #242424;
|
|
16
|
-
|
|
17
|
-
font-synthesis: none;
|
|
18
|
-
text-rendering: optimizeLegibility;
|
|
19
|
-
-webkit-font-smoothing: antialiased;
|
|
20
|
-
-moz-osx-font-smoothing: grayscale;
|
|
21
|
-
-webkit-text-size-adjust: 100%;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
a {
|
|
25
|
-
font-weight: 500;
|
|
26
|
-
color: #646cff;
|
|
27
|
-
text-decoration: inherit;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
a:hover {
|
|
31
|
-
color: #535bf2;
|
|
32
|
-
}
|
|
33
|
-
|
|
4
|
+
html,
|
|
34
5
|
body {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
place-items: center;
|
|
38
|
-
min-width: 320px;
|
|
39
|
-
min-height: 100vh;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
h1 {
|
|
43
|
-
font-size: 3.2em;
|
|
44
|
-
line-height: 1.1;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
button {
|
|
48
|
-
border-radius: 8px;
|
|
49
|
-
border: 1px solid transparent;
|
|
50
|
-
padding: 0.6em 1.2em;
|
|
51
|
-
font-size: 1em;
|
|
52
|
-
font-weight: 500;
|
|
53
|
-
font-family: inherit;
|
|
54
|
-
background-color: #1a1a1a;
|
|
55
|
-
cursor: pointer;
|
|
56
|
-
transition: border-color 0.25s;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
button:hover {
|
|
60
|
-
border-color: #646cff;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
button:focus,
|
|
64
|
-
button:focus-visible {
|
|
65
|
-
outline: 4px auto -webkit-focus-ring-color;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.card {
|
|
69
|
-
padding: 2em;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.logo {
|
|
73
|
-
@apply box-content;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@media (prefers-color-scheme: light) {
|
|
77
|
-
:root {
|
|
78
|
-
color: #213547;
|
|
79
|
-
background-color: #ffffff;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
a:hover {
|
|
83
|
-
color: #747bff;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
button {
|
|
87
|
-
background-color: #f9f9f9;
|
|
88
|
-
}
|
|
6
|
+
display: block;
|
|
7
|
+
height: 100%;
|
|
89
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',
|
|
@@ -150,7 +144,7 @@ async function init() {
|
|
|
150
144
|
onCancel: () => {
|
|
151
145
|
throw new Error(red('✖') + ' Operation cancelled');
|
|
152
146
|
},
|
|
153
|
-
}
|
|
147
|
+
},
|
|
154
148
|
);
|
|
155
149
|
} catch (cancelled) {
|
|
156
150
|
console.log(cancelled.message);
|
|
@@ -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,14 +174,13 @@ 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
|
|
|
188
180
|
const templateDir = path.resolve(
|
|
189
181
|
fileURLToPath(import.meta.url),
|
|
190
182
|
'..',
|
|
191
|
-
`template-${template}
|
|
183
|
+
`template-${template}`,
|
|
192
184
|
);
|
|
193
185
|
|
|
194
186
|
const filesDir = path.resolve(fileURLToPath(import.meta.url), '..', `files`);
|
|
@@ -211,15 +203,20 @@ async function init() {
|
|
|
211
203
|
}
|
|
212
204
|
|
|
213
205
|
if (!skipTailwind) {
|
|
214
|
-
addTailwindConfig(write, filesDir);
|
|
215
|
-
addPostCssConfig(write, filesDir);
|
|
216
206
|
addTailwindDirectives(write, filesDir);
|
|
217
207
|
}
|
|
218
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
|
+
|
|
219
216
|
const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
|
|
220
217
|
const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
|
|
221
218
|
const pkg = JSON.parse(
|
|
222
|
-
fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8')
|
|
219
|
+
fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8'),
|
|
223
220
|
);
|
|
224
221
|
|
|
225
222
|
pkg.name = packageName || getProjectName();
|
|
@@ -230,7 +227,7 @@ async function init() {
|
|
|
230
227
|
}
|
|
231
228
|
|
|
232
229
|
if (!skipTailwind) {
|
|
233
|
-
|
|
230
|
+
addTailwindDependencies(pkg);
|
|
234
231
|
}
|
|
235
232
|
|
|
236
233
|
if (pkgManager === 'yarn') {
|
|
@@ -243,7 +240,6 @@ async function init() {
|
|
|
243
240
|
write('package.json', JSON.stringify(pkg, null, 2));
|
|
244
241
|
|
|
245
242
|
setProjectTitle(root, getProjectName());
|
|
246
|
-
setComponentFormat(root, filesDir, write, template, useAnalogSFC);
|
|
247
243
|
|
|
248
244
|
console.log(`\nInitializing git repository:`);
|
|
249
245
|
execSync(`git init ${targetDir} && cd ${targetDir} && git add .`);
|
|
@@ -284,7 +280,7 @@ function copy(src, dest) {
|
|
|
284
280
|
*/
|
|
285
281
|
function isValidPackageName(projectName) {
|
|
286
282
|
return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(
|
|
287
|
-
projectName
|
|
283
|
+
projectName,
|
|
288
284
|
);
|
|
289
285
|
}
|
|
290
286
|
|
|
@@ -366,40 +362,23 @@ function getStartCommand(pkgManager) {
|
|
|
366
362
|
function addTailwindDirectives(write, filesDir) {
|
|
367
363
|
write(
|
|
368
364
|
'src/styles.css',
|
|
369
|
-
fs.readFileSync(path.join(filesDir, `styles.css`), 'utf-8')
|
|
370
|
-
);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
function addPostCssConfig(write, filesDir) {
|
|
374
|
-
write(
|
|
375
|
-
'postcss.config.cjs',
|
|
376
|
-
fs.readFileSync(path.join(filesDir, `postcss.config.cjs`), 'utf-8')
|
|
377
|
-
);
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
function addTailwindConfig(write, filesDir) {
|
|
381
|
-
write(
|
|
382
|
-
'tailwind.config.ts',
|
|
383
|
-
fs.readFileSync(path.join(filesDir, `tailwind.config.ts`), 'utf-8')
|
|
365
|
+
fs.readFileSync(path.join(filesDir, `styles.css`), 'utf-8'),
|
|
384
366
|
);
|
|
385
367
|
}
|
|
386
368
|
|
|
387
|
-
function
|
|
388
|
-
['tailwindcss
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
pkg.devDependencies[name] = version;
|
|
392
|
-
}
|
|
393
|
-
);
|
|
369
|
+
function addTailwindDependencies(pkg) {
|
|
370
|
+
pkg.dependencies['tailwindcss'] = '^4.1.4';
|
|
371
|
+
pkg.dependencies['postcss'] = '^8.5.3';
|
|
372
|
+
pkg.dependencies['@tailwindcss/vite'] = '^4.1.4';
|
|
394
373
|
}
|
|
395
374
|
|
|
396
375
|
function addYarnDevDependencies(pkg, template) {
|
|
397
376
|
// v18
|
|
398
|
-
if (template === 'latest' || template === 'blog') {
|
|
399
|
-
pkg.devDependencies['@nx/angular'] = '^
|
|
400
|
-
pkg.devDependencies['@nx/devkit'] = '^
|
|
401
|
-
pkg.devDependencies['@nx/vite'] = '^
|
|
402
|
-
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';
|
|
403
382
|
} else if (template === 'angular-v17') {
|
|
404
383
|
pkg.devDependencies['@angular-devkit/build-angular'] = '^17.2.0';
|
|
405
384
|
}
|
|
@@ -436,47 +415,6 @@ function setProjectTitle(root, title) {
|
|
|
436
415
|
});
|
|
437
416
|
}
|
|
438
417
|
|
|
439
|
-
function setComponentFormat(root, filesDir, write, template, useAnalogSFC) {
|
|
440
|
-
const getSFCConfig = () => {
|
|
441
|
-
const sfcConfigOption =
|
|
442
|
-
'vite: { experimental: { supportAnalogFormat: true } }';
|
|
443
|
-
|
|
444
|
-
return template === 'latest'
|
|
445
|
-
? `{ ${sfcConfigOption} }`
|
|
446
|
-
: `\n ${sfcConfigOption},`;
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
replacePlaceholders(root, 'vite.config.ts', {
|
|
450
|
-
__ANALOG_SFC_CONFIG__: useAnalogSFC ? getSFCConfig() : '',
|
|
451
|
-
});
|
|
452
|
-
replacePlaceholders(root, ['src/main.ts', 'src/main.server.ts'], {
|
|
453
|
-
__APP_COMPONENT__: useAnalogSFC ? 'App' : 'AppComponent',
|
|
454
|
-
__APP_COMPONENT_IMPORT__: useAnalogSFC
|
|
455
|
-
? "import App from './app/app-root.ag';"
|
|
456
|
-
: "import { AppComponent } from './app/app.component';",
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
const cmpForDelete = useAnalogSFC ? 'app.component' : 'app-root';
|
|
460
|
-
const deleteExt = useAnalogSFC ? 'ts' : 'ag';
|
|
461
|
-
deleteFiles(root, [
|
|
462
|
-
useAnalogSFC ? `src/app/${cmpForDelete}.ts` : `src/app/${cmpForDelete}.ag`,
|
|
463
|
-
template === 'blog'
|
|
464
|
-
? [
|
|
465
|
-
`src/app/pages/blog/index.page.${deleteExt}`,
|
|
466
|
-
`src/app/pages/blog/[slug].page.${deleteExt}`,
|
|
467
|
-
]
|
|
468
|
-
: `src/app/pages/index.page.${deleteExt}`,
|
|
469
|
-
template !== 'minimal' && `src/app/${cmpForDelete}.spec.ts`,
|
|
470
|
-
]);
|
|
471
|
-
|
|
472
|
-
if (useAnalogSFC) {
|
|
473
|
-
write(
|
|
474
|
-
'src/analog-env.d.ts',
|
|
475
|
-
fs.readFileSync(path.join(filesDir, 'analog-env.d.ts'), 'utf-8')
|
|
476
|
-
);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
418
|
function replacePlaceholders(root, files, config) {
|
|
481
419
|
for (const file of toFlatArray(files)) {
|
|
482
420
|
const filePath = path.join(root, file);
|
|
@@ -484,18 +422,12 @@ function replacePlaceholders(root, files, config) {
|
|
|
484
422
|
const newFileContent = Object.keys(config).reduce(
|
|
485
423
|
(content, placeholder) =>
|
|
486
424
|
content.replace(RegExp(placeholder, 'g'), config[placeholder]),
|
|
487
|
-
fileContent
|
|
425
|
+
fileContent,
|
|
488
426
|
);
|
|
489
427
|
fs.writeFileSync(filePath, newFileContent);
|
|
490
428
|
}
|
|
491
429
|
}
|
|
492
430
|
|
|
493
|
-
function deleteFiles(root, files) {
|
|
494
|
-
for (const file of toFlatArray(files)) {
|
|
495
|
-
fs.unlinkSync(path.join(root, file));
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
|
|
499
431
|
function toFlatArray(value) {
|
|
500
432
|
return (Array.isArray(value) ? value : [value]).filter(Boolean).flat();
|
|
501
433
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-analog",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.20",
|
|
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",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"test": "ng test"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@analogjs/content": "^2.0.0-alpha.
|
|
19
|
-
"@analogjs/router": "^2.0.0-alpha.
|
|
18
|
+
"@analogjs/content": "^2.0.0-alpha.20",
|
|
19
|
+
"@analogjs/router": "^2.0.0-alpha.20",
|
|
20
20
|
"@angular/animations": "^17.2.0",
|
|
21
21
|
"@angular/common": "^17.2.0",
|
|
22
22
|
"@angular/compiler": "^17.2.0",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"@angular/router": "^17.2.0",
|
|
29
29
|
"@nx/angular": "~18.0.0",
|
|
30
30
|
"front-matter": "^4.0.2",
|
|
31
|
-
"marked": "^
|
|
32
|
-
"marked-gfm-heading-id": "^
|
|
33
|
-
"marked-highlight": "^2.
|
|
31
|
+
"marked": "^15.0.7",
|
|
32
|
+
"marked-gfm-heading-id": "^4.1.1",
|
|
33
|
+
"marked-highlight": "^2.2.1",
|
|
34
34
|
"mermaid": "^10.2.4",
|
|
35
35
|
"prismjs": "^1.29.0",
|
|
36
36
|
"rxjs": "~7.5.6",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"zone.js": "~0.14.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@analogjs/platform": "^2.0.0-alpha.
|
|
42
|
-
"@analogjs/vite-plugin-angular": "^2.0.0-alpha.
|
|
43
|
-
"@analogjs/vitest-angular": "^2.0.0-alpha.
|
|
41
|
+
"@analogjs/platform": "^2.0.0-alpha.20",
|
|
42
|
+
"@analogjs/vite-plugin-angular": "^2.0.0-alpha.20",
|
|
43
|
+
"@analogjs/vitest-angular": "^2.0.0-alpha.20",
|
|
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-alpha.
|
|
19
|
-
"@analogjs/router": "^2.0.0-alpha.
|
|
18
|
+
"@analogjs/content": "^2.0.0-alpha.20",
|
|
19
|
+
"@analogjs/router": "^2.0.0-alpha.20",
|
|
20
20
|
"@angular/animations": "^18.0.0",
|
|
21
21
|
"@angular/build": "^18.0.0",
|
|
22
22
|
"@angular/common": "^18.0.0",
|
|
@@ -28,19 +28,19 @@
|
|
|
28
28
|
"@angular/platform-server": "^18.0.0",
|
|
29
29
|
"@angular/router": "^18.0.0",
|
|
30
30
|
"front-matter": "^4.0.2",
|
|
31
|
-
"marked": "^
|
|
32
|
-
"marked-gfm-heading-id": "^
|
|
33
|
-
"marked-highlight": "^2.
|
|
34
|
-
"marked-mangle": "^1.1.
|
|
31
|
+
"marked": "^15.0.7",
|
|
32
|
+
"marked-gfm-heading-id": "^4.1.1",
|
|
33
|
+
"marked-highlight": "^2.2.1",
|
|
34
|
+
"marked-mangle": "^1.1.10",
|
|
35
35
|
"prismjs": "^1.29.0",
|
|
36
36
|
"rxjs": "~7.8.0",
|
|
37
37
|
"tslib": "^2.3.0",
|
|
38
38
|
"zone.js": "~0.14.3"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@analogjs/platform": "^2.0.0-alpha.
|
|
42
|
-
"@analogjs/vite-plugin-angular": "^2.0.0-alpha.
|
|
43
|
-
"@analogjs/vitest-angular": "^2.0.0-alpha.
|
|
41
|
+
"@analogjs/platform": "^2.0.0-alpha.20",
|
|
42
|
+
"@analogjs/vite-plugin-angular": "^2.0.0-alpha.20",
|
|
43
|
+
"@analogjs/vitest-angular": "^2.0.0-alpha.20",
|
|
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": "^1.17.0-beta.6",
|
|
19
|
+
"@analogjs/router": "^1.17.0-beta.6",
|
|
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": "^1.17.0-beta.6",
|
|
41
|
+
"@analogjs/vite-plugin-angular": "^1.17.0-beta.6",
|
|
42
|
+
"@analogjs/vitest-angular": "^1.17.0-beta.6",
|
|
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);
|