@analogjs/platform 1.5.1-beta.1 → 1.6.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/platform",
3
- "version": "1.5.1-beta.1",
3
+ "version": "1.6.0-beta.1",
4
4
  "description": "The fullstack meta-framework for Angular",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -25,8 +25,8 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "nitropack": "^2.9.0",
28
- "@analogjs/vite-plugin-angular": "^1.5.1-beta.1",
29
- "@analogjs/vite-plugin-nitro": "^1.5.1-beta.1"
28
+ "@analogjs/vite-plugin-angular": "^1.6.0-beta.1",
29
+ "@analogjs/vite-plugin-nitro": "^1.6.0-beta.1"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -0,0 +1,6 @@
1
+ export interface MarkedContentHighlighter {
2
+ augmentCodeBlock?(code: string, lang: string): string;
3
+ }
4
+ export declare abstract class MarkedContentHighlighter {
5
+ abstract getHighlightExtension(): import('marked').marked.MarkedExtension;
6
+ }
@@ -0,0 +1,3 @@
1
+ export class MarkedContentHighlighter {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLWNvbnRlbnQtaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvbWFya2VkLWNvbnRlbnQtaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQix3QkFBd0I7Q0FFN0MifQ==
@@ -0,0 +1,8 @@
1
+ import { marked } from 'marked';
2
+ import { MarkedContentHighlighter } from './marked-content-highlighter.js';
3
+ export declare class MarkedSetupService {
4
+ private readonly highlighter?;
5
+ private readonly marked;
6
+ constructor(highlighter?: MarkedContentHighlighter | undefined);
7
+ getMarkedInstance(): typeof marked;
8
+ }
@@ -0,0 +1,38 @@
1
+ import { marked } from 'marked';
2
+ import { gfmHeadingId } from 'marked-gfm-heading-id';
3
+ import { mangle } from 'marked-mangle';
4
+ export class MarkedSetupService {
5
+ constructor(highlighter) {
6
+ this.highlighter = highlighter;
7
+ const renderer = new marked.Renderer();
8
+ renderer.code = (code, lang) => {
9
+ // Let's do a language based detection like on GitHub
10
+ // So we can still have non-interpreted mermaid code
11
+ if (lang === 'mermaid') {
12
+ return '<pre class="mermaid">' + code + '</pre>';
13
+ }
14
+ if (!lang) {
15
+ return '<pre><code>' + code + '</code></pre>';
16
+ }
17
+ if (this.highlighter?.augmentCodeBlock) {
18
+ return this.highlighter?.augmentCodeBlock(code, lang);
19
+ }
20
+ return `<pre class="language-${lang}"><code class="language-${lang}">${code}</code></pre>`;
21
+ };
22
+ const extensions = [gfmHeadingId(), mangle()];
23
+ if (this.highlighter) {
24
+ extensions.push(this.highlighter.getHighlightExtension());
25
+ }
26
+ marked.use(...extensions, {
27
+ renderer,
28
+ pedantic: false,
29
+ gfm: true,
30
+ breaks: false,
31
+ });
32
+ this.marked = marked;
33
+ }
34
+ getMarkedInstance() {
35
+ return this.marked;
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLXNldHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvbWFya2VkLXNldHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2QyxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQTZCLFdBQXNDO1FBQXRDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQzdDLHFEQUFxRDtZQUNyRCxvREFBb0Q7WUFDcEQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNuRCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE9BQU8sYUFBYSxHQUFHLElBQUksR0FBRyxlQUFlLENBQUM7WUFDaEQsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxPQUFPLHdCQUF3QixJQUFJLDJCQUEyQixJQUFJLEtBQUssSUFBSSxlQUFlLENBQUM7UUFDN0YsQ0FBQyxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUU7WUFDeEIsUUFBUTtZQUNSLFFBQVEsRUFBRSxLQUFLO1lBQ2YsR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGIn0=
File without changes
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ (function () {
3
+ if (typeof Prism === 'undefined') {
4
+ return;
5
+ }
6
+ Prism.languages.angular = Prism.languages.extend('markup', {
7
+ keyword: /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\b/,
8
+ operator: /\b(?:on|when)\b/,
9
+ number: {
10
+ pattern: /\b(minimum|after)\s+\d+(?:s|ms|)/gi,
11
+ lookbehind: true,
12
+ },
13
+ builtin: {
14
+ pattern: /\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,
15
+ },
16
+ function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
17
+ });
18
+ Prism.languages.ng = Prism.languages.angular;
19
+ })();
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvY29udGVudC9wcmlzbS9hbmd1bGFyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDO0lBQ0MsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxPQUFPLEVBQ0wscUVBQXFFO1FBQ3ZFLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLG9DQUFvQztZQUM3QyxVQUFVLEVBQUUsSUFBSTtTQUNqQjtRQUNELE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFDTCxxRUFBcUU7U0FDeEU7UUFDRCxRQUFRLEVBQ04sbUdBQW1HO0tBQ3RHLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxFQUFFLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { PrismHighlighter } from './prism-highlighter.js';
2
+ export { PrismHighlighter };
3
+ export declare function getPrismHighlighter(): PrismHighlighter;
@@ -0,0 +1,6 @@
1
+ import { PrismHighlighter } from './prism-highlighter.js';
2
+ export { PrismHighlighter };
3
+ export function getPrismHighlighter() {
4
+ return new PrismHighlighter();
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvcHJpc20vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7QUFFNUIsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUNoQyxDQUFDIn0=
@@ -0,0 +1,15 @@
1
+ import 'prismjs';
2
+ import 'prismjs/components/prism-bash.js';
3
+ import 'prismjs/components/prism-css.js';
4
+ import 'prismjs/components/prism-javascript.js';
5
+ import 'prismjs/components/prism-json.js';
6
+ import 'prismjs/components/prism-markup.js';
7
+ import 'prismjs/components/prism-typescript.js';
8
+ import 'prismjs/plugins/toolbar/prism-toolbar.js';
9
+ import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js';
10
+ import './angular.js';
11
+ import { MarkedContentHighlighter } from '../marked-content-highlighter.js';
12
+ export declare class PrismHighlighter extends MarkedContentHighlighter {
13
+ augmentCodeBlock(code: string, lang: string): string;
14
+ getHighlightExtension(): import("marked").marked.MarkedExtension;
15
+ }
@@ -0,0 +1,54 @@
1
+ import { markedHighlight } from 'marked-highlight';
2
+ import 'prismjs';
3
+ import 'prismjs/components/prism-bash.js';
4
+ import 'prismjs/components/prism-css.js';
5
+ import 'prismjs/components/prism-javascript.js';
6
+ import 'prismjs/components/prism-json.js';
7
+ import 'prismjs/components/prism-markup.js';
8
+ import 'prismjs/components/prism-typescript.js';
9
+ import 'prismjs/plugins/toolbar/prism-toolbar.js';
10
+ import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js';
11
+ import './angular.js';
12
+ import { MarkedContentHighlighter } from '../marked-content-highlighter.js';
13
+ export class PrismHighlighter extends MarkedContentHighlighter {
14
+ augmentCodeBlock(code, lang) {
15
+ const classes = lang.startsWith('diff') && Prism.languages['diff']
16
+ ? `language-${lang} diff-highlight`
17
+ : `language-${lang.replace('diff-', '')}`;
18
+ return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
19
+ }
20
+ getHighlightExtension() {
21
+ return markedHighlight({
22
+ async: true,
23
+ highlight: (code, lang) => {
24
+ let diff = lang?.startsWith('diff-');
25
+ lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
26
+ if (diff && !Prism.languages['diff']) {
27
+ diff = false;
28
+ console.warn(`Notice:
29
+ ---------------------------------------------------------------------------------------
30
+ The \`diff\` language and plugin are not available in the provided setup.
31
+ To enable it, add the following imports your \`main.ts\`:
32
+ import 'prismjs/components/prism-diff.js';
33
+ import 'prismjs/plugins/diff-highlight/prism-diff-highlight.js';
34
+ ---------------------------------------------------------------------------------------
35
+ `);
36
+ }
37
+ if (!Prism.languages[lang]) {
38
+ if (lang !== 'mermaid') {
39
+ console.warn(`Notice:
40
+ ---------------------------------------------------------------------------------------
41
+ The requested language '${lang}' is not available in the provided setup.
42
+ To enable it, add the following import your \`main.ts\`:
43
+ import 'prismjs/components/prism-${lang}.js';
44
+ ---------------------------------------------------------------------------------------
45
+ `);
46
+ }
47
+ return code;
48
+ }
49
+ return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
50
+ },
51
+ });
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20taGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvcHJpc20vcHJpc20taGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sMENBQTBDLENBQUM7QUFDbEQsT0FBTyw4REFBOEQsQ0FBQztBQUN0RSxPQUFPLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUk1RSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsd0JBQXdCO0lBQ25ELGdCQUFnQixDQUFDLElBQVksRUFBRSxJQUFZO1FBQ2xELE1BQU0sT0FBTyxHQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDaEQsQ0FBQyxDQUFDLFlBQVksSUFBSSxpQkFBaUI7WUFDbkMsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLGVBQWUsT0FBTyxrQkFBa0IsT0FBTyxLQUFLLElBQUksZUFBZSxDQUFDO0lBQ2pGLENBQUM7SUFFUSxxQkFBcUI7UUFDNUIsT0FBTyxlQUFlLENBQUM7WUFDckIsS0FBSyxFQUFFLElBQUk7WUFDWCxTQUFTLEVBQUUsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDO2dCQUUvRCxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDOzs7Ozs7O2FBT1YsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUM7OzhCQUVLLElBQUk7O3lDQUVPLElBQUk7O2VBRTlCLENBQUMsQ0FBQztvQkFDUCxDQUFDO29CQUNELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUNwQixJQUFJLEVBQ0osSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUN0RCxJQUFJLENBQ0wsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,11 @@
1
+ import { ShikiHighlighter, ShikiHighlighterOptions, ShikiHighlightOptions } from './shiki-highlighter.js';
2
+ import { BundledLanguage } from 'shiki/langs';
3
+ export { ShikiHighlighter };
4
+ export interface WithShikiHighlighterOptions {
5
+ highlighter?: Partial<ShikiHighlighterOptions> & {
6
+ additionalLangs?: BundledLanguage[];
7
+ };
8
+ highlight?: ShikiHighlightOptions;
9
+ container?: string;
10
+ }
11
+ export declare function getShikiHighlighter({ highlighter, highlight, container, }?: WithShikiHighlighterOptions): ShikiHighlighter;
@@ -0,0 +1,24 @@
1
+ import { defaultHighlighterOptions, ShikiHighlighter, } from './shiki-highlighter.js';
2
+ export { ShikiHighlighter };
3
+ export function getShikiHighlighter({ highlighter = {}, highlight = {}, container = '%s', } = {}) {
4
+ if (!highlighter.themes) {
5
+ if (highlight.theme) {
6
+ highlighter.themes = [highlight.theme];
7
+ }
8
+ else if (highlight.themes && typeof highlight.themes === 'object') {
9
+ highlighter.themes = Object.values(highlight.themes);
10
+ }
11
+ else {
12
+ highlighter.themes = defaultHighlighterOptions.themes;
13
+ }
14
+ }
15
+ if (!highlighter.langs) {
16
+ highlighter.langs = defaultHighlighterOptions.langs;
17
+ }
18
+ if (highlighter.additionalLangs) {
19
+ highlighter.langs.push(...highlighter.additionalLangs);
20
+ delete highlighter.additionalLangs;
21
+ }
22
+ return new ShikiHighlighter(highlighter, highlight, container, !!highlighter.langs.includes('mermaid'));
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvc2hpa2kvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQkFBZ0IsR0FHakIsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQVU1QixNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFDbEMsV0FBVyxHQUFHLEVBQUUsRUFDaEIsU0FBUyxHQUFHLEVBQUUsRUFDZCxTQUFTLEdBQUcsSUFBSSxNQUNlLEVBQUU7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFhLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsV0FBVyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxJQUFJLGdCQUFnQixDQUN6QixXQUFzQyxFQUN0QyxTQUFTLEVBQ1QsU0FBUyxFQUNULENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDeEMsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,17 @@
1
+ import { type BundledLanguage, type BundledTheme, type CodeOptionsMeta, type CodeOptionsMultipleThemes, type CodeOptionsSingleTheme, type CodeToHastOptionsCommon, getHighlighter } from 'shiki';
2
+ import { MarkedContentHighlighter } from '../marked-content-highlighter.js';
3
+ export type ShikiHighlighterOptions = Parameters<typeof getHighlighter>[0];
4
+ export type ShikiHighlightOptions = Partial<Omit<CodeToHastOptionsCommon<BundledLanguage>, 'lang'>> & CodeOptionsMeta & Partial<CodeOptionsSingleTheme<BundledTheme>> & Partial<CodeOptionsMultipleThemes<BundledTheme>>;
5
+ export declare const defaultHighlighterOptions: {
6
+ langs: string[];
7
+ themes: string[];
8
+ };
9
+ export declare class ShikiHighlighter extends MarkedContentHighlighter {
10
+ private highlighterOptions;
11
+ private highlightOptions;
12
+ private container;
13
+ private hasLoadMermaid;
14
+ private readonly highlighter;
15
+ constructor(highlighterOptions: ShikiHighlighterOptions, highlightOptions: ShikiHighlightOptions, container: string, hasLoadMermaid?: boolean);
16
+ getHighlightExtension(): MarkedExtension;
17
+ }
@@ -0,0 +1,45 @@
1
+ import markedShiki from 'marked-shiki';
2
+ import { getHighlighter, } from 'shiki';
3
+ import { MarkedContentHighlighter } from '../marked-content-highlighter.js';
4
+ export const defaultHighlighterOptions = {
5
+ langs: [
6
+ 'json',
7
+ 'ts',
8
+ 'tsx',
9
+ 'js',
10
+ 'jsx',
11
+ 'html',
12
+ 'css',
13
+ 'angular-html',
14
+ 'angular-ts',
15
+ ],
16
+ themes: ['github-dark', 'github-light'],
17
+ };
18
+ export class ShikiHighlighter extends MarkedContentHighlighter {
19
+ constructor(highlighterOptions, highlightOptions, container, hasLoadMermaid = false) {
20
+ super();
21
+ this.highlighterOptions = highlighterOptions;
22
+ this.highlightOptions = highlightOptions;
23
+ this.container = container;
24
+ this.hasLoadMermaid = hasLoadMermaid;
25
+ this.highlighter = getHighlighter(this.highlighterOptions);
26
+ }
27
+ getHighlightExtension() {
28
+ return markedShiki({
29
+ container: this.container,
30
+ highlight: async (code, lang, props) => {
31
+ if (this.hasLoadMermaid && lang === 'mermaid') {
32
+ return `<pre class="mermaid">${code}</pre>`;
33
+ }
34
+ const { codeToHtml } = await this.highlighter;
35
+ return codeToHtml(code, Object.assign({
36
+ lang,
37
+ // required by `transformerMeta*`
38
+ meta: { __raw: props.join(' ') },
39
+ theme: 'github-dark',
40
+ }, this.highlightOptions));
41
+ },
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpa2ktaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvc2hpa2kvc2hpa2ktaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFPTCxjQUFjLEdBQ2YsTUFBTSxPQUFPLENBQUM7QUFFZixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxLQUFLLEVBQUU7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxJQUFJO1FBQ0osS0FBSztRQUNMLE1BQU07UUFDTixLQUFLO1FBQ0wsY0FBYztRQUNkLFlBQVk7S0FDYjtJQUNELE1BQU0sRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUM7Q0FDeEMsQ0FBQztBQUVGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFHNUQsWUFDVSxrQkFBMkMsRUFDM0MsZ0JBQXVDLEVBQ3ZDLFNBQWlCLEVBQ2pCLGlCQUFpQixLQUFLO1FBRTlCLEtBQUssRUFBRSxDQUFDO1FBTEEsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF5QjtRQUMzQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXVCO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFOZixnQkFBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQVN2RSxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLE9BQU8sV0FBVyxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzlDLE9BQU8sd0JBQXdCLElBQUksUUFBUSxDQUFDO2dCQUM5QyxDQUFDO2dCQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzlDLE9BQU8sVUFBVSxDQUNmLElBQUksRUFDSixNQUFNLENBQUMsTUFBTSxDQUNYO29CQUNFLElBQUk7b0JBQ0osaUNBQWlDO29CQUNqQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDaEMsS0FBSyxFQUFFLGFBQWE7aUJBQ3JCLEVBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUNGLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
@@ -1,2 +1,6 @@
1
1
  import { Plugin } from 'vite';
2
- export declare function contentPlugin(): Plugin[];
2
+ import { WithShikiHighlighterOptions } from './content/shiki/index.js';
3
+ export declare function contentPlugin({ highlighter, shikiOptions, }?: {
4
+ highlighter?: 'shiki' | 'prism';
5
+ shikiOptions?: WithShikiHighlighterOptions;
6
+ }): Plugin[];
@@ -1,6 +1,11 @@
1
1
  import { readFileSync } from 'node:fs';
2
- export function contentPlugin() {
2
+ import { getShikiHighlighter, } from './content/shiki/index.js';
3
+ import { getPrismHighlighter } from './content/prism/index.js';
4
+ export function contentPlugin({ highlighter, shikiOptions, } = { highlighter: 'prism' }) {
3
5
  const cache = new Map();
6
+ const markedHighlighter = highlighter === 'shiki'
7
+ ? getShikiHighlighter(shikiOptions)
8
+ : getPrismHighlighter();
4
9
  return [
5
10
  {
6
11
  name: 'analogjs-content-frontmatter',
@@ -32,6 +37,29 @@ export function contentPlugin() {
32
37
  return `export default ${content.attributes}`;
33
38
  },
34
39
  },
40
+ {
41
+ name: 'analogjs-content-file',
42
+ enforce: 'post',
43
+ async load(id) {
44
+ if (!id.includes('analog-content-file=true')) {
45
+ return;
46
+ }
47
+ const fm = await import('front-matter');
48
+ // The `default` property will be available in CommonJS environment, for instance,
49
+ // when running unit tests. It's safe to retrieve `default` first, since we still
50
+ // fallback to the original implementation.
51
+ const frontmatterFn = fm.default || fm;
52
+ const fileContents = readFileSync(id.split('?')[0], 'utf8');
53
+ const { body, frontmatter } = frontmatterFn(fileContents);
54
+ // parse markdown and highlight
55
+ const { MarkedSetupService } = await import('./content/marked-setup.service.js');
56
+ const markedSetupService = new MarkedSetupService(markedHighlighter);
57
+ const mdContent = (await markedSetupService
58
+ .getMarkedInstance()
59
+ .parse(body));
60
+ return `export default ${JSON.stringify(`---\n${frontmatter}\n---\n\n${mdContent}`)}`;
61
+ },
62
+ },
35
63
  ];
36
64
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFPdkMsTUFBTSxVQUFVLGFBQWE7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFekMsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLDhCQUE4QjtZQUNwQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN0Qiw4REFBOEQ7Z0JBQzlELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQztvQkFDN0MsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLHlFQUF5RTtnQkFDekUsOEVBQThFO2dCQUM5RSw4RUFBOEU7Z0JBQzlFLDBDQUEwQztnQkFDMUMsSUFBSSxhQUFhLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNqQyxPQUFPLGtCQUFrQixhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3RELENBQUM7Z0JBRUQsTUFBTSxFQUFFLEdBQVEsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzdDLGtGQUFrRjtnQkFDbEYsaUZBQWlGO2dCQUNqRiwyQ0FBMkM7Z0JBQzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUNyQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsSUFBSTtvQkFDSixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7aUJBQ3ZDLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXZCLE9BQU8sa0JBQWtCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyJ9
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdkMsT0FBTyxFQUVMLG1CQUFtQixHQUNwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTy9ELE1BQU0sVUFBVSxhQUFhLENBQzNCLEVBQ0UsV0FBVyxFQUNYLFlBQVksTUFJVixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUU7SUFFNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFekMsTUFBTSxpQkFBaUIsR0FDckIsV0FBVyxLQUFLLE9BQU87UUFDckIsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQztRQUNuQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUU1QixPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3RCLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO29CQUM3QyxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEMseUVBQXlFO2dCQUN6RSw4RUFBOEU7Z0JBQzlFLDhFQUE4RTtnQkFDOUUsMENBQTBDO2dCQUMxQyxJQUFJLGFBQWEsRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sa0JBQWtCLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEQsQ0FBQztnQkFFRCxNQUFNLEVBQUUsR0FBUSxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDN0Msa0ZBQWtGO2dCQUNsRixpRkFBaUY7Z0JBQ2pGLDJDQUEyQztnQkFDM0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLE9BQU8sR0FBRztvQkFDZCxJQUFJO29CQUNKLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztpQkFDdkMsQ0FBQztnQkFDRixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFdkIsT0FBTyxrQkFBa0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hELENBQUM7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixPQUFPLEVBQUUsTUFBTTtZQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLEVBQUUsR0FBUSxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDN0Msa0ZBQWtGO2dCQUNsRixpRkFBaUY7Z0JBQ2pGLDJDQUEyQztnQkFDM0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFMUQsK0JBQStCO2dCQUMvQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FDekMsbUNBQW1DLENBQ3BDLENBQUM7Z0JBQ0YsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxrQkFBa0I7cUJBQ3hDLGlCQUFpQixFQUFFO3FCQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQXNCLENBQUM7Z0JBRXJDLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQ3JDLFFBQVEsV0FBVyxZQUFZLFNBQVMsRUFBRSxDQUMzQyxFQUFFLENBQUM7WUFDTixDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,6 +1,7 @@
1
1
  import type { PluginOptions } from '@analogjs/vite-plugin-angular';
2
2
  import type { NitroConfig, PrerenderRoute } from 'nitropack';
3
3
  import type { SitemapConfig } from '@analogjs/vite-plugin-nitro';
4
+ import type { WithShikiHighlighterOptions } from './content/shiki/index.js';
4
5
  export interface PrerenderOptions {
5
6
  /**
6
7
  * Add additional routes to prerender through crawling page links.
@@ -29,6 +30,10 @@ export interface Options {
29
30
  jit?: boolean;
30
31
  index?: string;
31
32
  workspaceRoot?: string;
33
+ content?: {
34
+ highlighter: 'shiki' | 'prism';
35
+ shikiOptions?: WithShikiHighlighterOptions;
36
+ };
32
37
  }
33
38
  export interface PrerenderContentDir {
34
39
  /**
@@ -23,7 +23,10 @@ export function platformPlugin(opts = {}) {
23
23
  ...viteNitroPlugin(platformOptions, nitroOptions),
24
24
  (platformOptions.ssr ? ssrBuildPlugin() : false),
25
25
  ...routerPlugin(),
26
- ...contentPlugin(),
26
+ ...contentPlugin({
27
+ highlighter: platformOptions?.content?.highlighter,
28
+ shikiOptions: platformOptions?.content?.shikiOptions,
29
+ }),
27
30
  ...angular({
28
31
  jit: platformOptions.jit,
29
32
  workspaceRoot: platformOptions.workspaceRoot,
@@ -33,4 +36,4 @@ export function platformPlugin(opts = {}) {
33
36
  clearClientPageEndpointsPlugin(),
34
37
  ];
35
38
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxlQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sK0JBQStCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFnQixFQUFFO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRztRQUN4QyxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsSUFBSTtLQUNSLENBQUM7SUFFRixJQUFJLFlBQVksR0FBRyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxZQUFZLEdBQUc7WUFDYixHQUFHLFlBQVk7WUFDZixhQUFhLEVBQUU7Z0JBQ2IsU0FBUzthQUNWO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxlQUFlLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUNqRCxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQVc7UUFDMUQsR0FBRyxZQUFZLEVBQUU7UUFDakIsR0FBRyxhQUFhLEVBQUU7UUFDbEIsR0FBRyxPQUFPLENBQUM7WUFDVCxHQUFHLEVBQUUsZUFBZSxDQUFDLEdBQUc7WUFDeEIsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO1lBQzVDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUN0QixDQUFDO1FBQ0YsaUJBQWlCLEVBQUU7UUFDbkIsOEJBQThCLEVBQUU7S0FDakMsQ0FBQztBQUNKLENBQUMifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxlQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sK0JBQStCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFnQixFQUFFO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRztRQUN4QyxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsSUFBSTtLQUNSLENBQUM7SUFFRixJQUFJLFlBQVksR0FBRyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxZQUFZLEdBQUc7WUFDYixHQUFHLFlBQVk7WUFDZixhQUFhLEVBQUU7Z0JBQ2IsU0FBUzthQUNWO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxlQUFlLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUNqRCxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQVc7UUFDMUQsR0FBRyxZQUFZLEVBQUU7UUFDakIsR0FBRyxhQUFhLENBQUM7WUFDZixXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxXQUFXO1lBQ2xELFlBQVksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVk7U0FDckQsQ0FBQztRQUNGLEdBQUcsT0FBTyxDQUFDO1lBQ1QsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHO1lBQ3hCLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtZQUM1QyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7U0FDdEIsQ0FBQztRQUNGLGlCQUFpQixFQUFFO1FBQ25CLDhCQUE4QixFQUFFO0tBQ2pDLENBQUM7QUFDSixDQUFDIn0=