@spinajs/templates-pdf 2.0.139 → 2.0.141

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.
@@ -0,0 +1,15 @@
1
+ declare const pdf: {
2
+ templates: {
3
+ pdf: {
4
+ static: {
5
+ port: number;
6
+ };
7
+ args: {
8
+ headless: boolean;
9
+ };
10
+ options: {};
11
+ };
12
+ };
13
+ };
14
+ export default pdf;
15
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG;;;;;;;;;;;;CAYR,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pdf = {
4
+ templates: {
5
+ pdf: {
6
+ static: {
7
+ port: 3000,
8
+ },
9
+ args: {
10
+ headless: true,
11
+ },
12
+ options: {},
13
+ },
14
+ },
15
+ };
16
+ exports.default = pdf;
17
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":";;AAAA,MAAM,GAAG,GAAG;IACV,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;aACX;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AAEF,kBAAe,GAAG,CAAC"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="node" />
1
2
  import { TemplateRenderer, Templates } from '@spinajs/templates';
2
3
  import { Log } from '@spinajs/log';
3
- import "@spinajs/templates-pug";
4
+ import * as http from 'http';
5
+ import '@spinajs/templates-pug';
4
6
  export declare class PdfRenderer extends TemplateRenderer {
5
7
  protected Options: any;
6
8
  protected Log: Log;
@@ -10,5 +12,6 @@ export declare class PdfRenderer extends TemplateRenderer {
10
12
  renderToFile(template: string, model: unknown, filePath: string, language?: string): Promise<void>;
11
13
  render(_templateName: string, _model: unknown, _language?: string): Promise<string>;
12
14
  protected compile(_path: string): Promise<void>;
15
+ protected runLocalServer(basePath: string): Promise<http.Server>;
13
16
  }
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;CACtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;cAErB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAmBvE"}
package/lib/cjs/index.js CHANGED
@@ -20,6 +20,7 @@ const configuration_1 = require("@spinajs/configuration");
20
20
  const di_1 = require("@spinajs/di");
21
21
  const path_1 = require("path");
22
22
  const log_1 = require("@spinajs/log");
23
+ const express_1 = __importDefault(require("express"));
23
24
  require("@spinajs/templates-pug");
24
25
  let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
25
26
  get Type() {
@@ -29,16 +30,23 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
29
30
  return '.pdf';
30
31
  }
31
32
  async renderToFile(template, model, filePath, language) {
33
+ let server = null;
34
+ let browser = null;
32
35
  try {
33
36
  this.Log.timeStart(`pdf-template-rendering-${filePath}`);
34
37
  this.Log.trace(`Rendering pdf template ${template} to file ${filePath}`);
35
- const compiledTemplate = await this.TemplatingService.render((0, path_1.join)((0, path_1.dirname)(template), (0, path_1.basename)(template, '.pdf')) + ".pug", model, language);
36
- const browser = await puppeteer_1.default.launch();
38
+ const templateBasePath = (0, path_1.dirname)(template);
39
+ const compiledTemplate = await this.TemplatingService.render((0, path_1.join)(templateBasePath, (0, path_1.basename)(template, '.pdf')) + '.pug', model, language);
40
+ // fire up local http server for serving images etc
41
+ // becouse chromium prevents from reading local files when not
42
+ // rendering file with file:// protocol for security reasons
43
+ server = await this.runLocalServer(templateBasePath);
44
+ browser = await puppeteer_1.default.launch(this.Options.args);
37
45
  const page = await browser.newPage();
38
46
  await page.setContent(compiledTemplate);
39
47
  await page.pdf({
40
48
  path: filePath,
41
- ...this.Options
49
+ ...this.Options,
42
50
  });
43
51
  }
44
52
  catch (err) {
@@ -51,6 +59,12 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
51
59
  if (duration > this.Options.renderDurationWarning) {
52
60
  this.Log.warn(`Rendering pdf template ${template} to file ${filePath} took too long.`);
53
61
  }
62
+ if (browser) {
63
+ await browser.close();
64
+ }
65
+ if (server) {
66
+ await server.close();
67
+ }
54
68
  }
55
69
  }
56
70
  async render(_templateName, _model, _language) {
@@ -58,6 +72,23 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
58
72
  }
59
73
  // no compilation at start
60
74
  async compile(_path) { }
75
+ async runLocalServer(basePath) {
76
+ const self = this;
77
+ const app = (0, express_1.default)();
78
+ app.use(express_1.default.static(basePath));
79
+ return new Promise((resolve, reject) => {
80
+ app
81
+ .listen(this.Options.static.port, function () {
82
+ self.Log.trace(`PDF image server started`);
83
+ self.Log.trace(`PDF static file dir at ${basePath}`);
84
+ resolve(this);
85
+ })
86
+ .on('error', (err) => {
87
+ self.Log.error(err, `PDF image server cannot start`);
88
+ reject(err);
89
+ });
90
+ });
91
+ }
61
92
  };
62
93
  __decorate([
63
94
  (0, configuration_1.Config)('templates.pdf'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAiD;AACjD,oDAAmD;AACnD,kDAAiE;AACjE,0DAAgD;AAChD,oCAAqD;AACrD,+BAA+C;AAC/C,sCAA2C;AAE3C,kCAAgC;AAGzB,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,4BAAgB;IAU/C,IAAW,IAAI;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAc,EAAE,QAAgB,EAAE,QAAiB;QAE7F,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,QAAQ,YAAY,QAAQ,EAAE,CAAC,CAAC;YAIzE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,IAAA,eAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAE5I,MAAM,OAAO,GAAG,MAAM,mBAAS,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,GAAG,CAAC;gBACb,IAAI,EAAE,QAAQ;gBACd,GAAG,IAAI,CAAC,OAAO;aAChB,CAAC,CAAC;SAEJ;QAAC,OAAO,GAAG,EAAE;YAEZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,gCAAgC,QAAQ,YAAY,QAAQ,EAAE,CAAC,CAAC;YACpF,MAAM,GAAG,CAAC;SAEX;gBAAS;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,QAAQ,YAAY,QAAQ,WAAW,QAAQ,IAAI,CAAC,CAAC;YAEpG,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;gBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,QAAQ,YAAY,QAAQ,iBAAiB,CAAC,CAAC;aACxF;SACF;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,MAAe,EAAE,SAAkB;QAC5E,MAAM,IAAI,yBAAY,CAAC,sCAAsC,CAAC,CAAC;IACjE,CAAC;IAED,0BAA0B;IAChB,KAAK,CAAC,OAAO,CAAC,KAAa,IAAI,CAAC;CAC3C,CAAA;AAxDC;IAAC,IAAA,sBAAM,EAAC,eAAe,CAAC;;4CACD;AAEvB;IAAC,IAAA,YAAM,EAAC,eAAe,CAAC;8BACT,SAAG;wCAAC;AAEnB;IAAC,IAAA,eAAU,GAAE;8BACgB,qBAAS;sDAAC;AAR5B,WAAW;IADvB,IAAA,eAAU,EAAC,4BAAgB,CAAC;GAChB,WAAW,CAyDvB;AAzDY,kCAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ declare const pdf: {
2
+ templates: {
3
+ pdf: {
4
+ static: {
5
+ port: number;
6
+ };
7
+ args: {
8
+ headless: boolean;
9
+ };
10
+ options: {};
11
+ };
12
+ };
13
+ };
14
+ export default pdf;
15
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG;;;;;;;;;;;;CAYR,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,15 @@
1
+ const pdf = {
2
+ templates: {
3
+ pdf: {
4
+ static: {
5
+ port: 3000,
6
+ },
7
+ args: {
8
+ headless: true,
9
+ },
10
+ options: {},
11
+ },
12
+ },
13
+ };
14
+ export default pdf;
15
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG;IACV,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;aACX;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="node" resolution-mode="require"/>
1
2
  import { TemplateRenderer, Templates } from '@spinajs/templates';
2
3
  import { Log } from '@spinajs/log';
3
- import "@spinajs/templates-pug";
4
+ import * as http from 'http';
5
+ import '@spinajs/templates-pug';
4
6
  export declare class PdfRenderer extends TemplateRenderer {
5
7
  protected Options: any;
6
8
  protected Log: Log;
@@ -10,5 +12,6 @@ export declare class PdfRenderer extends TemplateRenderer {
10
12
  renderToFile(template: string, model: unknown, filePath: string, language?: string): Promise<void>;
11
13
  render(_templateName: string, _model: unknown, _language?: string): Promise<string>;
12
14
  protected compile(_path: string): Promise<void>;
15
+ protected runLocalServer(basePath: string): Promise<http.Server>;
13
16
  }
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;CACtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;cAErB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAmBvE"}
package/lib/mjs/index.js CHANGED
@@ -14,7 +14,8 @@ import { Config } from '@spinajs/configuration';
14
14
  import { Injectable, LazyInject } from '@spinajs/di';
15
15
  import { basename, dirname, join } from 'path';
16
16
  import { Log, Logger } from '@spinajs/log';
17
- import "@spinajs/templates-pug";
17
+ import Express from 'express';
18
+ import '@spinajs/templates-pug';
18
19
  let PdfRenderer = class PdfRenderer extends TemplateRenderer {
19
20
  get Type() {
20
21
  return 'pdf';
@@ -23,16 +24,23 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
23
24
  return '.pdf';
24
25
  }
25
26
  async renderToFile(template, model, filePath, language) {
27
+ let server = null;
28
+ let browser = null;
26
29
  try {
27
30
  this.Log.timeStart(`pdf-template-rendering-${filePath}`);
28
31
  this.Log.trace(`Rendering pdf template ${template} to file ${filePath}`);
29
- const compiledTemplate = await this.TemplatingService.render(join(dirname(template), basename(template, '.pdf')) + ".pug", model, language);
30
- const browser = await puppeteer.launch();
32
+ const templateBasePath = dirname(template);
33
+ const compiledTemplate = await this.TemplatingService.render(join(templateBasePath, basename(template, '.pdf')) + '.pug', model, language);
34
+ // fire up local http server for serving images etc
35
+ // becouse chromium prevents from reading local files when not
36
+ // rendering file with file:// protocol for security reasons
37
+ server = await this.runLocalServer(templateBasePath);
38
+ browser = await puppeteer.launch(this.Options.args);
31
39
  const page = await browser.newPage();
32
40
  await page.setContent(compiledTemplate);
33
41
  await page.pdf({
34
42
  path: filePath,
35
- ...this.Options
43
+ ...this.Options,
36
44
  });
37
45
  }
38
46
  catch (err) {
@@ -45,6 +53,12 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
45
53
  if (duration > this.Options.renderDurationWarning) {
46
54
  this.Log.warn(`Rendering pdf template ${template} to file ${filePath} took too long.`);
47
55
  }
56
+ if (browser) {
57
+ await browser.close();
58
+ }
59
+ if (server) {
60
+ await server.close();
61
+ }
48
62
  }
49
63
  }
50
64
  async render(_templateName, _model, _language) {
@@ -52,6 +66,23 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
52
66
  }
53
67
  // no compilation at start
54
68
  async compile(_path) { }
69
+ async runLocalServer(basePath) {
70
+ const self = this;
71
+ const app = Express();
72
+ app.use(Express.static(basePath));
73
+ return new Promise((resolve, reject) => {
74
+ app
75
+ .listen(this.Options.static.port, function () {
76
+ self.Log.trace(`PDF image server started`);
77
+ self.Log.trace(`PDF static file dir at ${basePath}`);
78
+ resolve(this);
79
+ })
80
+ .on('error', (err) => {
81
+ self.Log.error(err, `PDF image server cannot start`);
82
+ reject(err);
83
+ });
84
+ });
85
+ }
55
86
  };
56
87
  __decorate([
57
88
  Config('templates.pdf'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,wBAAwB,CAAC;AAGzB,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,gBAAgB;IAU/C,IAAW,IAAI;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAc,EAAE,QAAgB,EAAE,QAAiB;QAE7F,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,QAAQ,YAAY,QAAQ,EAAE,CAAC,CAAC;YAIzE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAE5I,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,GAAG,CAAC;gBACb,IAAI,EAAE,QAAQ;gBACd,GAAG,IAAI,CAAC,OAAO;aAChB,CAAC,CAAC;SAEJ;QAAC,OAAO,GAAG,EAAE;YAEZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,gCAAgC,QAAQ,YAAY,QAAQ,EAAE,CAAC,CAAC;YACpF,MAAM,GAAG,CAAC;SAEX;gBAAS;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,QAAQ,YAAY,QAAQ,WAAW,QAAQ,IAAI,CAAC,CAAC;YAEpG,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;gBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,QAAQ,YAAY,QAAQ,iBAAiB,CAAC,CAAC;aACxF;SACF;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,MAAe,EAAE,SAAkB;QAC5E,MAAM,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAC;IACjE,CAAC;IAED,0BAA0B;IAChB,KAAK,CAAC,OAAO,CAAC,KAAa,IAAI,CAAC;CAC3C,CAAA;AAxDC;IAAC,MAAM,CAAC,eAAe,CAAC;;4CACD;AAEvB;IAAC,MAAM,CAAC,eAAe,CAAC;8BACT,GAAG;wCAAC;AAEnB;IAAC,UAAU,EAAE;8BACgB,SAAS;sDAAC;AAR5B,WAAW;IADvB,UAAU,CAAC,gBAAgB,CAAC;GAChB,WAAW,CAyDvB;SAzDY,WAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}