@analogjs/vite-plugin-angular 0.1.0
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/README.md +25 -0
- package/package.json +26 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/angular-vite-plugin.d.ts +17 -0
- package/src/lib/angular-vite-plugin.js +201 -0
- package/src/lib/angular-vite-plugin.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @analogjs/vite-plugin-angular
|
|
2
|
+
|
|
3
|
+
A Vite plugin for building Angular applications
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
yarn add @analogjs/vite-plugin-angular
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
Add the plugin to the `plugins` array in your Vite config
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { defineConfig } from 'vite';
|
|
15
|
+
import angular from '@analogjs/vite-plugin-angular';
|
|
16
|
+
|
|
17
|
+
// https://vitejs.dev/config/
|
|
18
|
+
export default defineConfig({
|
|
19
|
+
resolve: {
|
|
20
|
+
mainFields: ['module'],
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
plugins: [angular()],
|
|
24
|
+
});
|
|
25
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@analogjs/vite-plugin-angular",
|
|
3
|
+
"description": "Vite Plugin for Angular",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"vite-plugin",
|
|
7
|
+
"angular"
|
|
8
|
+
],
|
|
9
|
+
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/analogjs/analog/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/analogjs/analog#readme",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/analogjs/analog.git"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@angular-devkit/build-angular": "^14.0.0",
|
|
21
|
+
"tslib": "^2.0.0"
|
|
22
|
+
},
|
|
23
|
+
"main": "./src/index.js",
|
|
24
|
+
"typings": "./src/index.d.ts",
|
|
25
|
+
"dependencies": {}
|
|
26
|
+
}
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-angular/src/index.ts"],"names":[],"mappings":";;AAAA,mEAAoD;AAEpD,kBAAe,6BAAO,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BundleStylesheetOptions } from '@angular-devkit/build-angular/src/builders/browser-esbuild/stylesheets';
|
|
2
|
+
import * as ts from 'typescript';
|
|
3
|
+
import { Plugin } from 'vite';
|
|
4
|
+
interface EmitFileResult {
|
|
5
|
+
content?: string;
|
|
6
|
+
map?: string;
|
|
7
|
+
dependencies: readonly string[];
|
|
8
|
+
hash?: Uint8Array;
|
|
9
|
+
}
|
|
10
|
+
declare type FileEmitter = (file: string) => Promise<EmitFileResult | undefined>;
|
|
11
|
+
export declare function angular(pluginOptions?: {
|
|
12
|
+
tsconfig: string;
|
|
13
|
+
sourcemap: boolean;
|
|
14
|
+
advancedOptimizations: boolean;
|
|
15
|
+
}, styleOptions?: BundleStylesheetOptions): Plugin;
|
|
16
|
+
export declare function createFileEmitter(program: ts.BuilderProgram, transformers?: ts.CustomTransformers, onAfterEmit?: (sourceFile: ts.SourceFile) => void): FileEmitter;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFileEmitter = exports.angular = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@babel/core");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const application_1 = require("@angular-devkit/build-angular/src/babel/presets/application");
|
|
8
|
+
const webpack_loader_1 = require("@angular-devkit/build-angular/src/babel/webpack-loader");
|
|
9
|
+
const ts = require("typescript");
|
|
10
|
+
const compiler_plugin_1 = require("@angular-devkit/build-angular/src/builders/browser-esbuild/compiler-plugin");
|
|
11
|
+
const load_esm_1 = require("@angular-devkit/build-angular/src/utils/load-esm");
|
|
12
|
+
function angular(pluginOptions = {
|
|
13
|
+
tsconfig: './tsconfig.app.json',
|
|
14
|
+
sourcemap: false,
|
|
15
|
+
advancedOptimizations: false,
|
|
16
|
+
}, styleOptions = {
|
|
17
|
+
optimization: false,
|
|
18
|
+
sourcemap: true,
|
|
19
|
+
}) {
|
|
20
|
+
// The file emitter created during `onStart` that will be used during the build in `onLoad` callbacks for TS files
|
|
21
|
+
let fileEmitter;
|
|
22
|
+
let compilerOptions = {};
|
|
23
|
+
// Temporary deep import for transformer support
|
|
24
|
+
const { mergeTransformers, replaceBootstrap, } = require('@ngtools/webpack/src/ivy/transformation');
|
|
25
|
+
const { augmentProgramWithVersioning, } = require('@ngtools/webpack/src/ivy/host');
|
|
26
|
+
let compilerCli;
|
|
27
|
+
let rootNames;
|
|
28
|
+
let host;
|
|
29
|
+
let nextProgram;
|
|
30
|
+
let builderProgram;
|
|
31
|
+
let mode;
|
|
32
|
+
return {
|
|
33
|
+
name: 'vite-plugin-angular',
|
|
34
|
+
config(config, { command }) {
|
|
35
|
+
mode = command;
|
|
36
|
+
return {
|
|
37
|
+
optimizeDeps: {
|
|
38
|
+
exclude: ['rxjs'],
|
|
39
|
+
esbuildOptions: {
|
|
40
|
+
plugins: [
|
|
41
|
+
(0, compiler_plugin_1.createCompilerPlugin)({
|
|
42
|
+
tsconfig: pluginOptions.tsconfig,
|
|
43
|
+
sourcemap: pluginOptions.sourcemap,
|
|
44
|
+
advancedOptimizations: pluginOptions.advancedOptimizations,
|
|
45
|
+
}, {
|
|
46
|
+
sourcemap: styleOptions.sourcemap,
|
|
47
|
+
optimization: styleOptions.optimization,
|
|
48
|
+
}),
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
buildStart() {
|
|
55
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
compilerCli = yield (0, load_esm_1.loadEsmModule)('@angular/compiler-cli');
|
|
57
|
+
const { options: tsCompilerOptions, rootNames: rn } = compilerCli.readConfiguration(pluginOptions.tsconfig, {
|
|
58
|
+
enableIvy: true,
|
|
59
|
+
noEmitOnError: false,
|
|
60
|
+
suppressOutputPathCheck: true,
|
|
61
|
+
outDir: undefined,
|
|
62
|
+
inlineSources: pluginOptions.sourcemap,
|
|
63
|
+
inlineSourceMap: pluginOptions.sourcemap,
|
|
64
|
+
sourceMap: false,
|
|
65
|
+
mapRoot: undefined,
|
|
66
|
+
sourceRoot: undefined,
|
|
67
|
+
declaration: false,
|
|
68
|
+
declarationMap: false,
|
|
69
|
+
allowEmptyCodegenFiles: false,
|
|
70
|
+
annotationsAs: 'decorators',
|
|
71
|
+
enableResourceInlining: false,
|
|
72
|
+
});
|
|
73
|
+
rootNames = rn;
|
|
74
|
+
compilerOptions = tsCompilerOptions;
|
|
75
|
+
host = ts.createIncrementalCompilerHost(compilerOptions);
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
transform(code, id) {
|
|
79
|
+
var _a, _b, _c;
|
|
80
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
// Skip transforming rxjs
|
|
82
|
+
if (id.includes('rxjs')) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Create the Angular specific program that contains the Angular compiler
|
|
86
|
+
const angularProgram = new compilerCli.NgtscProgram(rootNames, compilerOptions, host, nextProgram);
|
|
87
|
+
const angularCompiler = angularProgram.compiler;
|
|
88
|
+
const typeScriptProgram = angularProgram.getTsProgram();
|
|
89
|
+
augmentProgramWithVersioning(typeScriptProgram);
|
|
90
|
+
let builder;
|
|
91
|
+
if (mode === 'serve') {
|
|
92
|
+
builder = builderProgram =
|
|
93
|
+
ts.createEmitAndSemanticDiagnosticsBuilderProgram(typeScriptProgram, host, builderProgram);
|
|
94
|
+
nextProgram = angularProgram;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// When not in watch mode, the startup cost of the incremental analysis can be avoided by
|
|
98
|
+
// using an abstract builder that only wraps a TypeScript program.
|
|
99
|
+
builder = ts.createAbstractBuilder(typeScriptProgram, host);
|
|
100
|
+
}
|
|
101
|
+
yield angularCompiler.analyzeAsync();
|
|
102
|
+
fileEmitter = createFileEmitter(builder, mergeTransformers(angularCompiler.prepareEmit().transformers, {
|
|
103
|
+
before: [
|
|
104
|
+
replaceBootstrap(() => builder.getProgram().getTypeChecker()),
|
|
105
|
+
],
|
|
106
|
+
}), () => []);
|
|
107
|
+
if (/\.[cm]?js$/.test(id) && id.includes('@angular')) {
|
|
108
|
+
const angularPackage = /[\\/]node_modules[\\/]@angular[\\/]/.test(id);
|
|
109
|
+
const linkerPluginCreator = (yield (0, load_esm_1.loadEsmModule)('@angular/compiler-cli/linker/babel')).createEs2015LinkerPlugin;
|
|
110
|
+
const data = yield fs_1.promises.readFile(id, 'utf-8');
|
|
111
|
+
const result = yield (0, core_1.transformAsync)(data, {
|
|
112
|
+
filename: id,
|
|
113
|
+
inputSourceMap: (pluginOptions.sourcemap
|
|
114
|
+
? undefined
|
|
115
|
+
: false),
|
|
116
|
+
sourceMaps: pluginOptions.sourcemap ? 'inline' : false,
|
|
117
|
+
compact: false,
|
|
118
|
+
configFile: false,
|
|
119
|
+
babelrc: false,
|
|
120
|
+
browserslistConfigFile: false,
|
|
121
|
+
plugins: [],
|
|
122
|
+
presets: [
|
|
123
|
+
[
|
|
124
|
+
application_1.default,
|
|
125
|
+
{
|
|
126
|
+
angularLinker: {
|
|
127
|
+
shouldLink: yield (0, webpack_loader_1.requiresLinking)(id, data),
|
|
128
|
+
jitMode: false,
|
|
129
|
+
linkerPluginCreator,
|
|
130
|
+
},
|
|
131
|
+
forceAsyncTransformation: !/[\\/][_f]?esm2015[\\/]/.test(id) && data.includes('async'),
|
|
132
|
+
optimize: pluginOptions.advancedOptimizations && {
|
|
133
|
+
looseEnums: angularPackage,
|
|
134
|
+
pureTopLevel: angularPackage,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
code: (_a = result === null || result === void 0 ? void 0 : result.code) !== null && _a !== void 0 ? _a : data,
|
|
142
|
+
map: result === null || result === void 0 ? void 0 : result.map,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
if (/\.[cm]?tsx?$/.test(id)) {
|
|
146
|
+
const typescriptResult = yield fileEmitter(id);
|
|
147
|
+
// return fileEmitter
|
|
148
|
+
const data = (_b = typescriptResult === null || typescriptResult === void 0 ? void 0 : typescriptResult.content) !== null && _b !== void 0 ? _b : '';
|
|
149
|
+
// console.log(id, data);
|
|
150
|
+
const babelResult = yield (0, core_1.transformAsync)(data, {
|
|
151
|
+
filename: id,
|
|
152
|
+
inputSourceMap: (pluginOptions.sourcemap
|
|
153
|
+
? undefined
|
|
154
|
+
: false),
|
|
155
|
+
sourceMaps: pluginOptions.sourcemap ? 'inline' : false,
|
|
156
|
+
compact: false,
|
|
157
|
+
configFile: false,
|
|
158
|
+
babelrc: false,
|
|
159
|
+
browserslistConfigFile: false,
|
|
160
|
+
plugins: [],
|
|
161
|
+
presets: [
|
|
162
|
+
[
|
|
163
|
+
application_1.default,
|
|
164
|
+
{
|
|
165
|
+
forceAsyncTransformation: data.includes('async'),
|
|
166
|
+
optimize: pluginOptions.advancedOptimizations && {},
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
],
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
code: (_c = babelResult === null || babelResult === void 0 ? void 0 : babelResult.code) !== null && _c !== void 0 ? _c : '',
|
|
173
|
+
map: babelResult === null || babelResult === void 0 ? void 0 : babelResult.map,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
code,
|
|
178
|
+
};
|
|
179
|
+
});
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
exports.angular = angular;
|
|
184
|
+
function createFileEmitter(program, transformers = {}, onAfterEmit) {
|
|
185
|
+
return (file) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
const sourceFile = program.getSourceFile(file);
|
|
187
|
+
if (!sourceFile) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
let content;
|
|
191
|
+
program.emit(sourceFile, (filename, data) => {
|
|
192
|
+
if (/\.[cm]?js$/.test(filename)) {
|
|
193
|
+
content = data;
|
|
194
|
+
}
|
|
195
|
+
}, undefined /* cancellationToken */, undefined /* emitOnlyDtsFiles */, transformers);
|
|
196
|
+
onAfterEmit === null || onAfterEmit === void 0 ? void 0 : onAfterEmit(sourceFile);
|
|
197
|
+
return { content, dependencies: [] };
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
exports.createFileEmitter = createFileEmitter;
|
|
201
|
+
//# sourceMappingURL=angular-vite-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-vite-plugin.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts"],"names":[],"mappings":";;;;AACA,sCAA6C;AAC7C,2BAAoC;AACpC,6FAAmG;AACnG,2FAAyF;AAKzF,iCAAiC;AAGjC,gHAAkH;AAClH,+EAAiF;AAUjF,SAAgB,OAAO,CACrB,aAAa,GAAG;IACd,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE,KAAK;IAChB,qBAAqB,EAAE,KAAK;CAC7B,EACD,eAAwC;IACtC,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,IAAI;CAChB;IAED,kHAAkH;IAClH,IAAI,WAAoC,CAAC;IACzC,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,gDAAgD;IAChD,MAAM,EACJ,iBAAiB,EACjB,gBAAgB,GACjB,GAAG,OAAO,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,EACJ,4BAA4B,GAC7B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7C,IAAI,WAAmD,CAAC;IACxD,IAAI,SAAmB,CAAC;IACxB,IAAI,IAAqB,CAAC;IAC1B,IAAI,WAAyB,CAAC;IAC9B,IAAI,cAA2D,CAAC;IAChE,IAAI,IAAuB,CAAC;IAE5B,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE;YACxB,IAAI,GAAG,OAAO,CAAC;YACf,OAAO;gBACL,YAAY,EAAE;oBACZ,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,cAAc,EAAE;wBACd,OAAO,EAAE;4BACP,IAAA,sCAAoB,EAClB;gCACE,QAAQ,EAAE,aAAa,CAAC,QAAQ;gCAChC,SAAS,EAAE,aAAa,CAAC,SAAS;gCAClC,qBAAqB,EAAE,aAAa,CAAC,qBAAqB;6BAC3D,EACD;gCACE,SAAS,EAAE,YAAY,CAAC,SAAS;gCACjC,YAAY,EAAE,YAAY,CAAC,YAAY;6BACxC,CACsB;yBAC1B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACK,UAAU;;gBACd,WAAW,GAAG,MAAM,IAAA,wBAAa,EAC/B,uBAAuB,CACxB,CAAC;gBAEF,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,GACjD,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE;oBACpD,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE,KAAK;oBACpB,uBAAuB,EAAE,IAAI;oBAC7B,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,aAAa,CAAC,SAAS;oBACtC,eAAe,EAAE,aAAa,CAAC,SAAS;oBACxC,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,SAAS;oBAClB,UAAU,EAAE,SAAS;oBACrB,WAAW,EAAE,KAAK;oBAClB,cAAc,EAAE,KAAK;oBACrB,sBAAsB,EAAE,KAAK;oBAC7B,aAAa,EAAE,YAAY;oBAC3B,sBAAsB,EAAE,KAAK;iBAC9B,CAAC,CAAC;gBAEL,SAAS,GAAG,EAAE,CAAC;gBACf,eAAe,GAAG,iBAAiB,CAAC;gBACpC,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,eAAe,CAAC,CAAC;YAC3D,CAAC;SAAA;QACK,SAAS,CAAC,IAAI,EAAE,EAAE;;;gBACtB,yBAAyB;gBACzB,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACvB,OAAO;iBACR;gBAED,yEAAyE;gBACzE,MAAM,cAAc,GAAiB,IAAI,WAAW,CAAC,YAAY,CAC/D,SAAS,EACT,eAAe,EACf,IAAoB,EACpB,WAAW,CACZ,CAAC;gBACF,MAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAC;gBAChD,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC;gBACxD,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;gBAEhD,IAAI,OAE2C,CAAC;gBAEhD,IAAI,IAAI,KAAK,OAAO,EAAE;oBACpB,OAAO,GAAG,cAAc;wBACtB,EAAE,CAAC,8CAA8C,CAC/C,iBAAiB,EACjB,IAAI,EACJ,cAAc,CACf,CAAC;oBAEJ,WAAW,GAAG,cAAc,CAAC;iBAC9B;qBAAM;oBACL,yFAAyF;oBACzF,kEAAkE;oBAClE,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;iBAC7D;gBAED,MAAM,eAAe,CAAC,YAAY,EAAE,CAAC;gBAErC,WAAW,GAAG,iBAAiB,CAC7B,OAAO,EACP,iBAAiB,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE;oBAC5D,MAAM,EAAE;wBACN,gBAAgB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC;qBAC9D;iBACF,CAAC,EACF,GAAG,EAAE,CAAC,EAAE,CACT,CAAC;gBAEF,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACpD,MAAM,cAAc,GAAG,qCAAqC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEtE,MAAM,mBAAmB,GAAG,CAC1B,MAAM,IAAA,wBAAa,EAEjB,oCAAoC,CAAC,CACxC,CAAC,wBAAwB,CAAC;oBAE3B,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE;wBACxC,QAAQ,EAAE,EAAE;wBACZ,cAAc,EAAE,CAAC,aAAa,CAAC,SAAS;4BACtC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,KAAK,CAAc;wBACvB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;wBACtD,OAAO,EAAE,KAAK;wBACd,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,KAAK;wBACd,sBAAsB,EAAE,KAAK;wBAC7B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACP;gCACE,qBAAwB;gCACxB;oCACE,aAAa,EAAE;wCACb,UAAU,EAAE,MAAM,IAAA,gCAAe,EAAC,EAAE,EAAE,IAAI,CAAC;wCAC3C,OAAO,EAAE,KAAK;wCACd,mBAAmB;qCACpB;oCACD,wBAAwB,EACtB,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oCAC9D,QAAQ,EAAE,aAAa,CAAC,qBAAqB,IAAI;wCAC/C,UAAU,EAAE,cAAc;wCAC1B,YAAY,EAAE,cAAc;qCAC7B;iCACF;6BACF;yBACF;qBACF,CAAC,CAAC;oBAEH,OAAO;wBACL,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,IAAI;wBAC1B,GAAG,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG;qBACjB,CAAC;iBACH;gBAED,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC3B,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;oBAE/C,qBAAqB;oBACrB,MAAM,IAAI,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,mCAAI,EAAE,CAAC;oBAC7C,yBAAyB;oBACzB,MAAM,WAAW,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE;wBAC7C,QAAQ,EAAE,EAAE;wBACZ,cAAc,EAAE,CAAC,aAAa,CAAC,SAAS;4BACtC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,KAAK,CAAc;wBACvB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;wBACtD,OAAO,EAAE,KAAK;wBACd,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,KAAK;wBACd,sBAAsB,EAAE,KAAK;wBAC7B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACP;gCACE,qBAAwB;gCACxB;oCACE,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oCAChD,QAAQ,EAAE,aAAa,CAAC,qBAAqB,IAAI,EAAE;iCACpD;6BACF;yBACF;qBACF,CAAC,CAAC;oBAEH,OAAO;wBACL,IAAI,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,mCAAI,EAAE;wBAC7B,GAAG,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG;qBACtB,CAAC;iBACH;gBAED,OAAO;oBACL,IAAI;iBACL,CAAC;;SACH;KACF,CAAC;AACJ,CAAC;AAvND,0BAuNC;AAED,SAAgB,iBAAiB,CAC/B,OAA0B,EAC1B,eAAsC,EAAE,EACxC,WAAiD;IAEjD,OAAO,CAAO,IAAY,EAAE,EAAE;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,OAA2B,CAAC;QAChC,OAAO,CAAC,IAAI,CACV,UAAU,EACV,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO,GAAG,IAAI,CAAC;aAChB;QACH,CAAC,EACD,SAAS,CAAC,uBAAuB,EACjC,SAAS,CAAC,sBAAsB,EAChC,YAAY,CACb,CAAC;QAEF,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,UAAU,CAAC,CAAC;QAE1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC,CAAA,CAAC;AACJ,CAAC;AA5BD,8CA4BC"}
|