@shad0wz7/nestjs-pdf 2.4.3 → 2.5.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/README.md +17 -1
- package/dist/index.cjs +3840 -0
- package/dist/index.d.cts +407 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +376 -362
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3736 -5142
- package/dist/index.mjs.map +1 -0
- package/package.json +116 -86
- package/dist/index.d.ts +0 -393
- package/dist/index.js +0 -5184
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["BrowserType","render","fs","common_1","shared_utils_1","common_1","common_1","module","exports","exports","exports","exports","ConfigModule"],"sources":["../src/helpers/getRelativePath.helper.ts","../src/helpers/signature.helper.ts","../src/helpers/deepMergePdfparams.ts","../src/helpers/tokens.ts","../src/puppeteer/browser/browser.service.ts","../src/puppeteer/engines/ejs/ejs.service.ts","../src/puppeteer/engines/eta/eta.service.ts","../src/puppeteer/engines/mjml/mjml.service.ts","../src/puppeteer/engines/mustache/mustache.service.ts","../src/puppeteer/engines/nunjucks/nunjucks.service.ts","../src/puppeteer/engines/pug/pug.service.ts","../src/puppeteer/libs/requireService.utils.ts","../src/puppeteer/puppeteer.service.ts","../src/nestjs-pdf.service.ts","../node_modules/.pnpm/dotenv@17.4.1/node_modules/dotenv/lib/main.js","../node_modules/.pnpm/dotenv-expand@12.0.3/node_modules/dotenv-expand/lib/main.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/config.constants.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isArray.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_freeGlobal.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_root.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_Symbol.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_getRawTag.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_objectToString.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseGetTag.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isObjectLike.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isSymbol.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_isKey.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isObject.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isFunction.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_coreJsData.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_isMasked.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_toSource.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseIsNative.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_getValue.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_getNative.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_nativeCreate.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hashClear.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hashDelete.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hashGet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hashHas.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hashSet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_Hash.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_listCacheClear.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/eq.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_assocIndexOf.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_listCacheDelete.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_listCacheGet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_listCacheHas.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_listCacheSet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_ListCache.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_Map.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_mapCacheClear.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_isKeyable.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_getMapData.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_mapCacheDelete.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_mapCacheGet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_mapCacheHas.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_mapCacheSet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_MapCache.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/memoize.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_memoizeCapped.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_stringToPath.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_arrayMap.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseToString.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/toString.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_castPath.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_toKey.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseGet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/get.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseHas.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseIsArguments.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isArguments.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_isIndex.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isLength.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_hasPath.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/has.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_defineProperty.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseAssignValue.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_assignValue.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseSet.js","../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/set.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/config.service.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/config-host.module.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/get-config-token.util.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/create-config-factory.util.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/get-registration-token.util.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/merge-configs.util.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/config.module.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/conditional.module.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/types/config-object.type.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/types/config.type.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/types/no-infer.type.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/types/path-value.type.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/types/index.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/register-as.util.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/utils/index.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/interfaces/config-change-event.interface.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/interfaces/config-factory.interface.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/interfaces/index.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/dist/index.js","../node_modules/.pnpm/@nestjs+config@4.0.4_@nestjs+common@11.1.27_reflect-metadata@0.2.2_rxjs@7.8.2_supports-color@8.1.1__rxjs@7.8.2/node_modules/@nestjs/config/index.js","../src/puppeteer/puppeteer.module.ts","../src/nestjs-pdf.module.ts"],"sourcesContent":["import { relative, resolve } from 'node:path';\n\n/**\n * Get the relative path to a value from the module directory.\n * @param moduleDir the path of the module, typically __dirname\n * @param relativeToModule the path to the value relative to the module directory\n * @returns the relative path from the current working directory to the value\n * @example\n * getRelativePathToValue(__dirname, './templates/my-template.hbs');\n * // returns 'context/pdf/templates/my-template.hbs' if the current working directory is '/\n */\nexport function getRelativePathToValue(\n moduleDir: string,\n relativeToModule: string,\n): string {\n const fullTemplatePath = resolve(moduleDir, relativeToModule);\n return relative(process.cwd(), fullTemplatePath);\n}\n","import {\n PDFArray,\n PDFDict,\n PDFDocument,\n PDFName,\n PDFNumber,\n PDFString,\n} from 'pdf-lib';\nimport type { TextItem } from 'pdfjs-dist/types/src/display/api';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nlet pdfjsPromise: typeof import('pdfjs-dist/legacy/build/pdf.mjs') | undefined;\n\nasync function loadPdfjs() {\n if (!pdfjsPromise) {\n try {\n pdfjsPromise = await import('pdfjs-dist/legacy/build/pdf.mjs');\n } catch (error) {\n pdfjsPromise = undefined;\n throw new Error(\n [\n 'Failed to load pdfjs-dist.',\n 'If you use anchor-based signature placement in Node.js, make sure @napi-rs/canvas is installed.',\n 'Try: npm install @napi-rs/canvas',\n '',\n `Original error: ${error instanceof Error ? error.message : String(error)}`,\n ].join('\\n'),\n { cause: error },\n );\n }\n }\n return pdfjsPromise;\n}\n\nfunction toU8(input: Uint8Array | Buffer): Uint8Array {\n return new Uint8Array(input);\n}\n\nasync function findAnchorPosition(\n pdfBytes: Uint8Array,\n anchorText: string,\n): Promise<null | {\n pageIndex: number;\n x: number;\n y: number;\n pageWidth: number;\n pageHeight: number;\n}> {\n const pdfjsLib = await loadPdfjs();\n const loadingTask = pdfjsLib.getDocument({ data: pdfBytes });\n\n try {\n const pdf = await loadingTask.promise;\n\n for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\n const page = await pdf.getPage(pageNum);\n const viewport = page.getViewport({ scale: 1 });\n const textContent = await page.getTextContent();\n\n for (const itemRaw of textContent.items) {\n const item = itemRaw as TextItem;\n const str = item.str;\n if (!str?.includes(anchorText)) continue;\n\n const t = pdfjsLib.Util.transform(viewport.transform, item.transform);\n const [_a, _b, _c, _d, e, f] = t as Array<number>;\n\n const x = e;\n const y = viewport.height - f;\n\n return {\n pageIndex: pageNum - 1,\n x,\n y,\n pageWidth: viewport.width,\n pageHeight: viewport.height,\n };\n }\n }\n return null;\n } finally {\n await loadingTask.destroy();\n }\n}\n\nfunction addSignatureFieldAt(\n pdfDoc: PDFDocument,\n pageIndex: number,\n opts: {\n fieldName: string;\n x: number;\n y: number;\n width: number;\n height: number;\n },\n) {\n const { fieldName, x, y, width, height } = opts;\n const context = pdfDoc.context;\n\n const page = pdfDoc.getPages()[pageIndex];\n if (!page) throw new Error(`Page ${pageIndex} not found`);\n\n const rectArray = context.obj([\n PDFNumber.of(x),\n PDFNumber.of(y),\n PDFNumber.of(x + width),\n PDFNumber.of(y + height),\n ]);\n\n const widgetDict = context.obj({\n Type: PDFName.of('Annot'),\n Subtype: PDFName.of('Widget'),\n Rect: rectArray,\n F: PDFNumber.of(4),\n P: page.ref,\n });\n const widgetRef = context.register(widgetDict);\n\n const fieldDict = context.obj({\n FT: PDFName.of('Sig'),\n T: PDFString.of(fieldName),\n Ff: PDFNumber.of(0),\n Kids: context.obj([widgetRef]),\n });\n const fieldRef = context.register(fieldDict);\n\n widgetDict.set(PDFName.of('Parent'), fieldRef);\n\n let annots = page.node.lookupMaybe(PDFName.of('Annots'), PDFArray);\n if (!annots) {\n annots = context.obj([]);\n page.node.set(PDFName.of('Annots'), annots);\n }\n annots.push(widgetRef);\n\n let acroForm = pdfDoc.catalog.lookupMaybe(PDFName.of('AcroForm'), PDFDict);\n if (!acroForm) {\n acroForm = context.obj({\n Fields: context.obj([]),\n SigFlags: PDFNumber.of(3),\n });\n const acroFormRef = context.register(acroForm);\n pdfDoc.catalog.set(PDFName.of('AcroForm'), acroFormRef);\n }\n\n let fields = acroForm.lookupMaybe(PDFName.of('Fields'), PDFArray);\n if (!fields) {\n fields = context.obj([]);\n acroForm.set(PDFName.of('Fields'), fields);\n }\n fields.push(fieldRef);\n\n return { fieldRef, widgetRef };\n}\n\nexport async function addSignatureFieldUsingAnchor(\n pdf: Uint8Array | Buffer,\n fieldName = 'SignatureDebtor',\n anchorText = '__SIG_DEBTOR_ANCHOR__',\n) {\n const bytes = toU8(pdf);\n\n const anchor = await findAnchorPosition(bytes.slice(), anchorText);\n\n const pdfDoc = await PDFDocument.load(bytes);\n\n const sigWidth = 240;\n const sigHeight = 50;\n\n if (anchor) {\n const pageIndex = anchor.pageIndex;\n const page = pdfDoc.getPages()[pageIndex];\n const { width: pw, height: ph } = page.getSize();\n\n const padX = 40;\n const padY = 7;\n let x = anchor.x - sigWidth / 2 + padX;\n\n let y = anchor.y - sigHeight + padY;\n\n const margin = 10;\n\n x = Math.max(margin, Math.min(x, pw - sigWidth - margin));\n y = Math.max(margin, Math.min(y, ph - sigHeight - margin));\n\n addSignatureFieldAt(pdfDoc, anchor.pageIndex, {\n fieldName,\n x,\n y,\n width: sigWidth,\n height: sigHeight,\n });\n } else {\n const pages = pdfDoc.getPages();\n const pageIndex = pages.length - 1;\n const page = pages[pageIndex];\n const { width: pageWidth } = page.getSize();\n const x = (pageWidth - sigWidth) / 2;\n const y = 90;\n\n addSignatureFieldAt(pdfDoc, pageIndex, {\n fieldName,\n x,\n y,\n width: sigWidth,\n height: sigHeight,\n });\n }\n\n return await pdfDoc.save();\n}\n\n// Test helper to inject a mocked pdfjs implementation and avoid dynamic import in tests\n// This helper throws outside of tests to avoid exposing a test-only API in production.\nexport function __setPdfjsForTests(p: any) {\n if (process.env.NODE_ENV !== 'test') {\n throw new Error('__setPdfjsForTests is only available in test environment');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n pdfjsPromise = p;\n}\n","import { deepmerge } from 'deepmerge-ts';\n\nimport { type PuppeteerParameters } from '../puppeteer/puppeteer-parameters.interface';\n\nexport function mergePuppeteerParameters(\n defaults: PuppeteerParameters,\n overrides?: PuppeteerParameters,\n): PuppeteerParameters {\n if (!overrides) {\n return { ...defaults };\n }\n\n return deepmerge(defaults, overrides);\n}\n","export const PDF_PARAMETERS = 'PDF_PARAMETERS' as const;\nexport const HANDLEBARS_PARAMETERS = 'HANDLEBARS_PARAMETERS' as const;\n","import { existsSync, promises, readFileSync, writeFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nimport { Inject, Injectable, Logger, OnModuleDestroy } from '@nestjs/common';\nimport {\n Browser as BrowserType,\n BrowserPlatform,\n canDownload,\n detectBrowserPlatform,\n getInstalledBrowsers,\n install,\n resolveBuildId,\n} from '@puppeteer/browsers';\nimport { Browser, BrowserContext, launch } from 'puppeteer';\n\nimport type { PuppeteerParameters } from '../puppeteer-parameters.interface';\n\nexport enum BrowserTag {\n LATEST = 'latest',\n BETA = 'beta',\n DEV = 'dev',\n STABLE = 'stable',\n CANARY = 'canary',\n}\n\nexport type Headless = boolean | 'shell' | undefined;\n\nasync function sleep(ms: number) {\n await new Promise((r) => setTimeout(r, ms));\n}\n\nasync function rmWithRetries(dir: string, retries = 5): Promise<void> {\n for (let attempt = 1; attempt <= retries; attempt++) {\n try {\n await promises.rm(dir, { recursive: true, force: true });\n return;\n } catch (err: unknown) {\n const code = (err as NodeJS.ErrnoException)?.code;\n\n const retryable =\n code === 'EPERM' || code === 'EBUSY' || code === 'ENOTEMPTY';\n\n if (!retryable || attempt === retries) {\n throw err;\n }\n\n await sleep(50 * 2 ** (attempt - 1));\n }\n }\n}\n\nfunction isTargetClosedError(error: unknown): boolean {\n if (!(error instanceof Error)) return false;\n\n return (\n error.name === 'TargetCloseError' ||\n error.message.includes('Target closed') ||\n error.message.includes('Target.createTarget')\n );\n}\n\n@Injectable()\nexport class BrowserService implements OnModuleDestroy {\n private readonly cacheDir: string;\n private readonly options?: PuppeteerParameters;\n\n private _browserInstance: Browser | null = null;\n private browser: BrowserType;\n\n public activeJobs = 0;\n public totalJobs = 0;\n\n private recycleRequested = false;\n private recycling = false;\n\n private browserTag: BrowserTag;\n private useLockedBrowser: boolean;\n private buildId: string | undefined;\n\n constructor(@Inject('PDF_PARAMETERS') pdfParams: PuppeteerParameters) {\n this.cacheDir = resolve('.cache/puppeteer-browser');\n this.options = pdfParams;\n\n if (pdfParams.cleanupBrowserCacheOnExit) {\n this.registerCleanupHooks();\n }\n\n this.loadBuildId();\n this.loadBrowser();\n this.loadBrowserTag();\n this.loadUseLockedBrowser();\n }\n\n async onModuleDestroy() {\n if (this._browserInstance?.connected) {\n try {\n await this._browserInstance.close();\n } catch (error) {\n Logger.warn(\n `Failed to close browser on module destroy: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n }\n\n await this.cleanupCacheBestEffort();\n }\n\n async getBrowserInstance(\n args: Array<string>,\n headless: boolean | 'shell' | undefined,\n executablePathBin: string | undefined,\n ) {\n if (!this._browserInstance?.connected) {\n this._browserInstance = await this.launchBrowser(\n args,\n headless,\n executablePathBin,\n );\n }\n\n return this._browserInstance;\n }\n\n async createContext(\n args: Array<string>,\n headless: Headless,\n executablePath?: string,\n ): Promise<BrowserContext> {\n const browser = await this.getBrowserInstance(\n args,\n headless,\n executablePath,\n );\n try {\n return await browser.createBrowserContext();\n } catch (error) {\n if (!isTargetClosedError(error)) {\n throw error;\n }\n\n Logger.warn(\n 'Puppeteer browser closed while creating a context, retrying once',\n );\n\n this._browserInstance = null;\n const freshBrowser = await this.getBrowserInstance(\n args,\n headless,\n executablePath,\n );\n return await freshBrowser.createBrowserContext();\n }\n }\n\n markJobStarted() {\n this.activeJobs += 1;\n this.totalJobs += 1;\n\n if (this.totalJobs >= 200) {\n this.recycleRequested = true;\n }\n }\n\n async markJobFinished() {\n this.activeJobs = Math.max(0, this.activeJobs - 1);\n await this.recycleBrowserIfNeeded();\n }\n\n async recycleBrowserIfNeeded() {\n if (!this.recycleRequested) return;\n if (this.recycling) return;\n if (this.activeJobs > 0) return;\n if (!this._browserInstance) return;\n\n this.recycling = true;\n\n try {\n if (this._browserInstance.connected) {\n await this._browserInstance.close();\n }\n\n this._browserInstance = null;\n this.totalJobs = 0;\n this.recycleRequested = false;\n\n Logger.log('Puppeteer browser recycled successfully');\n } catch (error) {\n Logger.warn(\n `Failed to recycle browser: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n } finally {\n this.recycling = false;\n }\n }\n\n private async cleanupCacheBestEffort() {\n const logger = new Logger('NestJsPdf');\n const dir = this.cacheDir;\n try {\n if (!existsSync(dir)) return;\n\n logger.log(`Cleanup puppeteer cache on signal: ${dir}`);\n\n await rmWithRetries(dir, 6);\n if (existsSync(dir)) {\n await sleep(100);\n await rmWithRetries(dir, 3);\n }\n\n logger.log('Cleanup done');\n } catch (err) {\n logger.error(\n `Cleanup failed for ${dir}`,\n err instanceof Error ? err.stack : String(err),\n );\n }\n try {\n const leftover = await promises.readdir(dir, { recursive: true });\n logger.warn(`Leftover files: ${leftover.slice(0, 20).join(', ')}...`);\n } catch {\n logger.log(`No leftover files in ${dir}`);\n }\n }\n\n async install(lock: boolean = false) {\n const browser: BrowserType = this.browser;\n const versionTag: BrowserTag = this.browserTag;\n\n const browserPlatform = detectBrowserPlatform() ?? BrowserPlatform.LINUX;\n\n let buildId: string;\n if (this.buildId === undefined) {\n buildId = await resolveBuildId(browser, browserPlatform, versionTag);\n } else {\n buildId = this.buildId;\n }\n\n Logger.log(\n `Browser ${browser} ${versionTag} build id: ${buildId}`,\n 'NestJsPdf',\n );\n\n if (await this.hasBrowserInstalled(browser, buildId)) {\n Logger.log('Browser already installed', 'NestJsPdf');\n if (lock) {\n this.writeLockFile(browser, buildId);\n }\n return;\n } else {\n Logger.log('Starting browser installation', 'NestJsPdf');\n\n const installOption = {\n cacheDir: this.cacheDir,\n browser: browser,\n buildId: buildId,\n baseUrl: this.options?.browserInstallBaseUrl ?? undefined,\n };\n\n if (await canDownload(installOption)) {\n Logger.log(\n `Installing ${installOption.browser} ${installOption.buildId}`,\n 'NestJsPdf',\n );\n const installedBrowser = await install(installOption);\n if (await this.hasBrowserInstalled(browser, buildId)) {\n Logger.log('Browser installed successfully', 'NestJsPdf');\n if (lock) {\n this.writeLockFile(browser, buildId);\n }\n return installedBrowser;\n } else {\n Logger.error('Browser installation failed', 'NestJsPdf');\n }\n } else {\n Logger.error(\n `Error, can't install ${installOption.browser} ${installOption.buildId}`,\n 'NestJsPdf',\n );\n }\n }\n return null;\n }\n\n private registerCleanupHooks() {\n const cleanup = async (signal: string) => {\n try {\n Logger.log(\n `Received ${signal}, cleaning up puppeteer cache...`,\n 'NestJsPdf',\n );\n await this.cleanupCacheBestEffort();\n process.exit(0);\n } catch {\n process.exit(1);\n }\n };\n\n const cleanupHandler = (signal: string) => {\n void cleanup(signal);\n };\n\n process.once('SIGTERM', cleanupHandler);\n process.once('SIGINT', cleanupHandler); // ctrl+c\n process.once('exit', cleanupHandler);\n }\n\n private loadBrowser(): void {\n let browser: BrowserType;\n if (this.options?.browser === undefined) {\n browser = BrowserType.CHROMIUM;\n } else {\n browser = this.options.browser;\n }\n this.browser = browser;\n }\n\n public setBrowser(browser: BrowserType): void {\n this.browser = browser;\n }\n\n public getBrowser(): BrowserType {\n return this.browser;\n }\n\n private loadBrowserTag(): void {\n let versionTag: BrowserTag;\n if (this.options?.browserTag === undefined) {\n if (this.browser === BrowserType.CHROMIUM) {\n versionTag = BrowserTag.LATEST;\n } else {\n versionTag = BrowserTag.STABLE;\n }\n } else {\n versionTag = this.options.browserTag;\n }\n this.browserTag = versionTag;\n }\n\n private loadBuildId(): void {\n let buildId: string | undefined;\n if (this.options?.buildId === undefined) {\n buildId = undefined;\n } else {\n buildId = this.options.buildId;\n }\n this.buildId = buildId;\n }\n\n public setBrowserTag(browserTag: BrowserTag): void {\n this.browserTag = browserTag;\n }\n\n public getBrowserTag(): BrowserTag {\n return this.browserTag;\n }\n\n getBuildId(): string | undefined {\n return this.buildId;\n }\n\n setBuildId(value: string | undefined) {\n this.buildId = value;\n }\n\n private loadUseLockedBrowser(): void {\n let useLockedBrowser: boolean;\n if (this.options?.useLockedBrowser === undefined) {\n useLockedBrowser = false;\n } else {\n useLockedBrowser = this.options.useLockedBrowser;\n }\n this.useLockedBrowser = useLockedBrowser;\n }\n\n async hasBrowserInstalled(browser: BrowserType, buildId: string) {\n const installedBrowserlist = await getInstalledBrowsers({\n cacheDir: this.cacheDir,\n });\n\n const installedBrowser = installedBrowserlist.find((insBrowser) => {\n return insBrowser.browser === browser && insBrowser.buildId === buildId;\n });\n return installedBrowser !== undefined;\n }\n\n async getExecutablePath(): Promise<string> {\n const browser: BrowserType = this.browser;\n const versionTag: BrowserTag = this.browserTag;\n const browserPlatform = detectBrowserPlatform() ?? BrowserPlatform.LINUX;\n let buildId: string | null = null;\n if (this.useLockedBrowser) {\n buildId = this.getLockedBuildId(browser);\n Logger.log(`Using locked browser ${buildId}`, 'NestJsPdf');\n }\n buildId ??= await resolveBuildId(browser, browserPlatform, versionTag);\n const installedBrowserlist = await getInstalledBrowsers({\n cacheDir: this.cacheDir,\n });\n const installedBrowser = installedBrowserlist.find((insBrowser) => {\n return insBrowser.browser === browser && insBrowser.buildId === buildId;\n });\n if (installedBrowser === undefined) {\n const newinstalledBrowser = await this.install();\n if (newinstalledBrowser === null || newinstalledBrowser === undefined) {\n throw new Error('Could not install browser');\n } else {\n return newinstalledBrowser.executablePath;\n }\n }\n return installedBrowser.executablePath;\n }\n\n private async launchBrowser(\n args: Array<string>,\n headless: Headless,\n executablePathBin: string | undefined,\n ) {\n const executablePath =\n executablePathBin ?? (await this.getExecutablePath());\n\n const browser = await launch({\n executablePath,\n headless,\n args,\n });\n\n browser.on('disconnected', () => {\n Logger.warn('Puppeteer browser disconnected');\n if (this._browserInstance === browser) {\n this._browserInstance = null;\n }\n });\n\n return browser;\n }\n\n private writeLockFile(browser: BrowserType, buildId: string) {\n const lockFile = resolve(this.cacheDir, `${browser}.lock`);\n const data = JSON.stringify({\n browser: browser,\n buildId: buildId,\n date: new Date().toISOString(),\n });\n writeFileSync(lockFile, data);\n\n Logger.log(`Browser ${browser} locked to build ${buildId}`, 'NestJsPdf');\n }\n\n getLockedBuildId(browser: BrowserType): string | null {\n const lockFile = resolve(this.cacheDir, `${browser}.lock`);\n if (existsSync(lockFile)) {\n const data = readFileSync(lockFile);\n const lock = JSON.parse(data.toString()) as {\n browser: Browser;\n buildId: string;\n date: string;\n };\n return lock.buildId;\n }\n return null;\n }\n}\n","import { Injectable } from '@nestjs/common';\nimport { Data, Options, render, renderFile } from 'ejs';\n\nexport interface EjsOptions extends Omit<Options, 'async'> {\n async?: boolean;\n}\n\n@Injectable()\nexport class EjsService {\n async render(template: string, data: Data = {}, options?: EjsOptions) {\n try {\n return await render(template, data, {\n async: true,\n ...options,\n });\n } catch (error) {\n throw new Error(`EJS rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n\n async renderFile(filePath: string, data: Data = {}, options?: EjsOptions) {\n try {\n return await renderFile(filePath, data, {\n async: true,\n ...options,\n });\n } catch (error) {\n throw new Error(`EJS file rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nimport { Injectable } from '@nestjs/common';\nimport { Eta, EtaConfig } from 'eta';\n\nexport interface EtaOptions extends Partial<EtaConfig> {\n cache?: boolean;\n autoEscape?: boolean;\n varName?: string;\n views?: string;\n useWith?: boolean;\n plugins?: Array<any>;\n}\n\n@Injectable()\nexport class EtaService {\n private readonly eta: Eta;\n private readonly templateCache: Map<string, string> = new Map();\n private readonly maxCacheSize = 100;\n\n constructor() {\n this.eta = new Eta({\n cache: true,\n autoEscape: true,\n useWith: true,\n });\n }\n\n /**\n * Render an Eta template from a string\n * @param template The template string to render\n * @param data The data object to use for rendering\n * @param options Optional Eta rendering options\n * @returns The rendered HTML string\n */\n render(\n template: string,\n data: Record<string, unknown> = {},\n options?: EtaOptions,\n ): string {\n try {\n const eta =\n options && Object.keys(options).length > 0\n ? new Eta({\n cache: true,\n autoEscape: true,\n useWith: true,\n ...options,\n varName: options.varName ?? 'it',\n })\n : this.eta;\n\n return eta.renderString(template, data);\n } catch (error) {\n throw new Error(`Eta rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n\n /**\n * Render an Eta template from a file\n * @param filePath The path to the template file\n * @param data The data object to use for rendering\n * @param options Optional Eta rendering options\n * @returns The rendered HTML string\n */\n renderFile(\n filePath: string,\n data: Record<string, unknown> = {},\n options?: EtaOptions,\n ): string {\n try {\n const resolvedPath = resolve(filePath);\n const useCache = options?.cache ?? true;\n let template = useCache\n ? this.templateCache.get(resolvedPath)\n : undefined;\n\n if (!template) {\n template = readFileSync(resolvedPath, 'utf-8');\n\n if (useCache && this.templateCache.size < this.maxCacheSize) {\n this.templateCache.set(resolvedPath, template);\n }\n }\n return this.render(template, data, options);\n } catch (error) {\n throw new Error(\n `Eta file rendering failed for ${filePath}: ${String(error)}`,\n {\n cause: error,\n },\n );\n }\n }\n\n /**\n * Clear the template cache\n */\n clearCache(): void {\n this.templateCache.clear();\n }\n\n /**\n * Get the current cache size\n * @returns The number of cached templates\n */\n getCacheSize(): number {\n return this.templateCache.size;\n }\n}\n","import { readFileSync } from 'node:fs';\n\nimport { Injectable } from '@nestjs/common';\nimport mjml from 'mjml';\nimport { MJMLParsingOptions } from 'mjml-core';\n\n@Injectable()\nexport class MjmlService {\n async render(\n template: string,\n options?: MJMLParsingOptions,\n ): Promise<string> {\n const { html } = await mjml(template, options);\n return html;\n }\n\n async renderFile(\n filePath: string,\n options?: MJMLParsingOptions,\n ): Promise<string> {\n const template = readFileSync(filePath, 'utf-8');\n return await this.render(template, options);\n }\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nimport { Injectable } from '@nestjs/common';\nimport mustache, { EscapeFunction } from 'mustache';\n\nexport interface MustacheOptions {\n tags?: [string, string];\n escape?: EscapeFunction;\n}\n\n@Injectable()\nexport class MustacheService {\n private readonly templateCache: Map<string, string> = new Map();\n private readonly maxCacheSize = 100;\n\n /**\n * Render a Mustache template from a string\n * @param template The template string to render\n * @param data The data object to use for rendering\n * @param options Optional Mustache rendering options\n * @returns The rendered HTML string\n */\n render(\n template: string,\n data: Record<string, unknown> = {},\n options?: MustacheOptions,\n ): string {\n try {\n const tags = options?.tags ?? ['{{', '}}'];\n return mustache.render(template, data, undefined, {\n tags: tags,\n escape: options?.escape,\n });\n } catch (error) {\n throw new Error(`Mustache rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n\n /**\n * Render a Mustache template from a file\n * @param filePath The path to the template file\n * @param data The data object to use for rendering\n * @param options Optional Mustache rendering options\n * @returns The rendered HTML string\n */\n renderFile(\n filePath: string,\n data: Record<string, unknown> = {},\n options?: MustacheOptions,\n ): string {\n try {\n const resolvedPath = resolve(filePath);\n let template = this.templateCache.get(resolvedPath);\n\n if (!template) {\n template = readFileSync(resolvedPath, 'utf-8');\n\n if (this.templateCache.size < this.maxCacheSize) {\n this.templateCache.set(resolvedPath, template);\n }\n }\n\n return this.render(template, data, options);\n } catch (error) {\n throw new Error(\n `Mustache file rendering failed for ${filePath}: ${String(error)}`,\n {\n cause: error,\n },\n );\n }\n }\n\n /**\n * Clear the template cache\n */\n clearCache(): void {\n this.templateCache.clear();\n }\n\n /**\n * Get the current cache size\n * @returns The number of cached templates\n */\n getCacheSize(): number {\n return this.templateCache.size;\n }\n}\n","import { Injectable } from '@nestjs/common';\nimport { configure, ConfigureOptions, render, renderString } from 'nunjucks';\n\nexport interface NunjucksOptions extends Partial<ConfigureOptions> {\n noCache?: boolean;\n watch?: boolean;\n throwOnUndefined?: boolean;\n trimBlocks?: boolean;\n lstripBlocks?: boolean;\n}\n\n@Injectable()\nexport class NunjucksService {\n constructor() {\n // Configure default Nunjucks environment\n configure({\n noCache: true,\n trimBlocks: true,\n lstripBlocks: true,\n });\n }\n\n render(\n template: string,\n data: Record<string, unknown> = {},\n options?: NunjucksOptions,\n ) {\n try {\n if (options) {\n const configOptions: Record<string, unknown> = {\n noCache: options.noCache ?? true,\n watch: options.watch ?? false,\n throwOnUndefined: options.throwOnUndefined ?? false,\n trimBlocks: options.trimBlocks ?? true,\n lstripBlocks: options.lstripBlocks ?? true,\n };\n configure(configOptions as ConfigureOptions);\n }\n return renderString(template, data);\n } catch (error) {\n throw new Error(`Nunjucks rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n\n renderFile(\n filePath: string,\n data: Record<string, unknown> = {},\n options?: NunjucksOptions,\n ) {\n try {\n if (options) {\n const configOptions: Record<string, unknown> = {\n noCache: options.noCache ?? true,\n watch: options.watch ?? false,\n throwOnUndefined: options.throwOnUndefined ?? false,\n trimBlocks: options.trimBlocks ?? true,\n lstripBlocks: options.lstripBlocks ?? true,\n };\n configure(configOptions as ConfigureOptions);\n }\n return render(filePath, data);\n } catch (error) {\n throw new Error(`Nunjucks file rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n}\n","import { readFileSync } from 'node:fs';\n\nimport { Injectable } from '@nestjs/common';\nimport { compile, LocalsObject, Options } from 'pug';\n\nexport type PugOptions = Options;\n\n@Injectable()\nexport class PugService {\n render(\n template: string,\n data: LocalsObject = {},\n options?: PugOptions,\n ): string {\n try {\n const compiledFn = compile(template, {\n ...options,\n });\n return compiledFn(data);\n } catch (error) {\n throw new Error(`Pug rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n\n renderFile(\n filePath: string,\n data: LocalsObject = {},\n options?: PugOptions,\n ): string {\n try {\n const template = readFileSync(filePath, 'utf-8');\n return this.render(template, data, options);\n } catch (error) {\n throw new Error(`Pug file rendering failed: ${String(error)}`, {\n cause: error,\n });\n }\n }\n}\n","export function requireService<T>(service: T | undefined, name: string): T {\n if (!service) {\n throw new Error(\n `${name} service is not available. If the problem persists, open an issue in the repo.`,\n );\n }\n\n return service;\n}\n","import { HandlebarsService } from '@gboutte/nestjs-hbs';\nimport { Inject, Injectable, Logger, Optional } from '@nestjs/common';\nimport { Data } from 'ejs';\nimport pLimit from 'p-limit';\nimport { LocalsObject } from 'pug';\nimport { PDFOptions } from 'puppeteer';\n\nimport { mergePuppeteerParameters } from '../helpers/deepMergePdfparams';\nimport { PDF_PARAMETERS } from '../helpers/tokens';\nimport { BrowserService } from './browser/browser.service';\nimport { EjsService } from './engines/ejs/ejs.service';\nimport { EtaService } from './engines/eta/eta.service';\nimport { MjmlService } from './engines/mjml/mjml.service';\nimport { MustacheService } from './engines/mustache/mustache.service';\nimport { NunjucksService } from './engines/nunjucks/nunjucks.service';\nimport { PugService } from './engines/pug/pug.service';\nimport { requireService } from './libs/requireService.utils';\nimport type { PuppeteerParameters } from './puppeteer-parameters.interface';\n\n@Injectable()\nexport class PuppeteerService {\n constructor(\n private readonly browserService: BrowserService,\n @Inject(PDF_PARAMETERS) private readonly options: PuppeteerParameters,\n @Optional() private readonly hbsService?: HandlebarsService,\n @Optional() private readonly mjmlService?: MjmlService,\n @Optional() private readonly pugService?: PugService,\n @Optional() private readonly ejsService?: EjsService,\n @Optional() private readonly nunjucksService?: NunjucksService,\n @Optional() private readonly etaService?: EtaService,\n @Optional() private readonly mustacheService?: MustacheService,\n ) {}\n\n private readonly limit = pLimit(3);\n\n async generatePdfFromHtml(\n html: string,\n options?: PuppeteerParameters,\n ): Promise<Uint8Array> {\n return this.limit(async () => {\n const mergePuppeteerOptions = mergePuppeteerParameters(\n this.options,\n options,\n );\n if (mergePuppeteerOptions.chromiumRevision !== undefined) {\n Logger.warn(\n 'Using `chromiumRevision` is no longer supported since the puppeteer update.',\n );\n }\n\n const headless: boolean | 'shell' =\n mergePuppeteerOptions.headless ?? true;\n\n const executablePath = mergePuppeteerOptions.executablePath || undefined;\n\n //src: https://www.bannerbear.com/blog/ways-to-speed-up-puppeteer-screenshots/\n const args = mergePuppeteerOptions.extraPuppeteerArgs || [\n '--autoplay-policy=user-gesture-required',\n '--disable-background-networking',\n '--disable-background-timer-throttling',\n '--disable-backgrounding-occluded-windows',\n '--disable-breakpad',\n '--disable-client-side-phishing-detection',\n '--disable-component-update',\n '--disable-default-apps',\n '--disable-dev-shm-usage',\n '--disable-domain-reliability',\n '--disable-extensions',\n '--disable-features=AudioServiceOutOfProcess',\n '--disable-hang-monitor',\n '--disable-ipc-flooding-protection',\n '--disable-notifications',\n '--disable-offer-store-unmasked-wallet-cards',\n '--disable-popup-blocking',\n '--disable-print-preview',\n '--disable-prompt-on-repost',\n '--disable-renderer-backgrounding',\n '--disable-setuid-sandbox',\n '--disable-speech-api',\n '--disable-sync',\n '--hide-scrollbars',\n '--ignore-gpu-blacklist',\n '--metrics-recording-only',\n '--mute-audio',\n '--no-default-browser-check',\n '--no-first-run',\n '--no-pings',\n '--password-store=basic',\n '--use-gl=swiftshader',\n '--use-mock-keychain',\n '--disable-accelerated-2d-canvas',\n '--no-zygote',\n '--disable-gpu',\n ];\n\n this.browserService.markJobStarted();\n let context: Awaited<ReturnType<BrowserService['createContext']>> | null =\n null;\n\n try {\n context = await this.browserService.createContext(\n args,\n headless,\n executablePath,\n );\n const page = await context.newPage();\n\n const pdfOptions: PDFOptions = mergePuppeteerOptions.pdfOptions ?? {\n format: 'A4',\n };\n\n await page.setContent(html, { waitUntil: 'domcontentloaded' });\n await page.emulateMediaType('screen');\n await page.waitForNetworkIdle({ idleTime: 500, timeout: 30000 });\n await page.evaluate(() => document.fonts.ready);\n\n return await page.pdf(pdfOptions);\n } catch (e) {\n Logger.error(e);\n throw e;\n } finally {\n if (context) {\n try {\n await context.close();\n } catch (error) {\n Logger.error(error);\n }\n }\n await this.browserService.markJobFinished();\n }\n });\n }\n\n async generatePdfFromTemplateHbsString(\n template: string,\n parameters: any = {},\n options?: PuppeteerParameters,\n ) {\n const hbsService = requireService(this.hbsService, 'Handlebars');\n const html = hbsService.render(template, parameters);\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromTemplateHbsFile(\n file: string,\n parameters: any = {},\n options?: PuppeteerParameters,\n ) {\n const hbsService = requireService(this.hbsService, 'Handlebars');\n const html = hbsService.renderFile(file, parameters);\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromMjmlString(\n template: string,\n options?: PuppeteerParameters,\n ) {\n const mjmlService = requireService(this.mjmlService, 'MJML');\n const html = await mjmlService.render(\n template,\n options?.mjmlOptions ?? this.options.mjmlOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromMjmlFile(file: string, options?: PuppeteerParameters) {\n const mjmlService = requireService(this.mjmlService, 'MJML');\n const html = await mjmlService.renderFile(\n file,\n options?.mjmlOptions ?? this.options.mjmlOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromPugString(\n template: string,\n data: LocalsObject = {},\n options?: PuppeteerParameters,\n ) {\n const pugService = requireService(this.pugService, 'Pug');\n const html = pugService.render(\n template,\n data,\n options?.pugOptions ?? this.options.pugOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromPugFile(\n file: string,\n data: LocalsObject = {},\n options?: PuppeteerParameters,\n ) {\n const pugService = requireService(this.pugService, 'Pug');\n const html = pugService.renderFile(\n file,\n data,\n options?.pugOptions ?? this.options.pugOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromEjsString(\n template: string,\n data: Data = {},\n options?: PuppeteerParameters,\n ) {\n const ejsService = requireService(this.ejsService, 'EJS');\n const html = await ejsService.render(\n template,\n data,\n options?.ejsOptions ?? this.options.ejsOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromEjsFile(\n file: string,\n data: Data = {},\n options?: PuppeteerParameters,\n ) {\n const ejsService = requireService(this.ejsService, 'EJS');\n const html = await ejsService.renderFile(\n file,\n data,\n options?.ejsOptions ?? this.options.ejsOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromNunjucksString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const nunjucksService = requireService(this.nunjucksService, 'Nunjucks');\n const html = nunjucksService.render(\n template,\n data,\n options?.nunjucksOptions ?? this.options.nunjucksOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromNunjucksFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const nunjucksService = requireService(this.nunjucksService, 'Nunjucks');\n const html = nunjucksService.renderFile(\n file,\n data,\n options?.nunjucksOptions ?? this.options.nunjucksOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromEtaString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const etaService = requireService(this.etaService, 'Eta');\n const html = etaService.render(\n template,\n data,\n options?.etaOptions ?? this.options.etaOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromEtaFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const etaService = requireService(this.etaService, 'Eta');\n const html = etaService.renderFile(\n file,\n data,\n options?.etaOptions ?? this.options.etaOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromMustacheString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const mustacheService = requireService(this.mustacheService, 'Mustache');\n const html = mustacheService.render(\n template,\n data,\n options?.mustacheOptions ?? this.options.mustacheOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n\n async generatePdfFromMustacheFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n const mustacheService = requireService(this.mustacheService, 'Mustache');\n const html = mustacheService.renderFile(\n file,\n data,\n options?.mustacheOptions ?? this.options.mustacheOptions,\n );\n return this.generatePdfFromHtml(html, options);\n }\n}\n","import { Injectable } from '@nestjs/common';\nimport { Data } from 'ejs';\nimport { LocalsObject } from 'pug';\n\nimport { addSignatureFieldUsingAnchor } from './helpers/signature.helper';\nimport { PuppeteerService } from './puppeteer/puppeteer.service';\nimport { PuppeteerParameters } from './puppeteer/puppeteer-parameters.interface';\n\n@Injectable()\nexport class NestjsPdfService {\n constructor(private readonly puppeteerService: PuppeteerService) {}\n\n /**\n * @param html HTML string to convert to PDF\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided HTML\n * @description This method uses the Puppeteer service to generate a PDF from an HTML string. Generation options can be customized by passing a `PuppeteerParameters` object as the second argument. This allows you to control various aspects of PDF rendering, such as page size, margins, background display, etc. If no options are provided, the default parameters defined in the Puppeteer service will be used.\n */\n generatePdfFromHtml(html: string, options?: PuppeteerParameters) {\n return this.puppeteerService.generatePdfFromHtml(html, options);\n }\n\n /**\n * @param template Handlebars template string\n * @param parameters Data parameters to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided Handlebars template with parameters applied\n * @description This method generates a PDF from a Handlebars template provided as a string. The parameters to inject into the template are passed in the `parameters` object, which is used to render the template before converting it to PDF. PDF generation options can also be customized by passing a `PuppeteerParameters` object as the third argument. This allows you to control various aspects of PDF rendering, such as page size, margins, background display, etc. If no options are provided, the default parameters defined in the Puppeteer service will be used.\n */\n generatePdfFromTemplateHbsString(\n template: string,\n parameters: any = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromTemplateHbsString(\n template,\n parameters,\n options,\n );\n }\n\n /**\n * @param file Path to the Handlebars template file\n * @param parameters Data parameters to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the Handlebars template at the provided file path with parameters applied\n * @description This method generates a PDF from a Handlebars template located at the specified file path. The file path is passed as a string in the `file` parameter. The parameters to inject into the template are passed in the `parameters` object, which is used to render the template before converting it to PDF. PDF generation options can also be customized by passing a `PuppeteerParameters` object as the third argument. This allows you to control various aspects of PDF rendering, such as page size, margins, background display, etc. If no options are provided, the default parameters defined in the Puppeteer service will be used.\n */\n generatePdfFromTemplateHbsFile(\n file: string,\n parameters: any = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromTemplateHbsFile(\n file,\n parameters,\n options,\n );\n }\n\n /**\n * @param template MJML template string\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided MJML template\n * @description This method generates a PDF from an MJML template provided as a string. MJML (MJML Markup Language) is a markup language designed to reduce the pain of coding a responsive email. The template is first rendered to HTML using the MJML renderer, then converted to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the second argument.\n */\n generatePdfFromMjmlString(template: string, options?: PuppeteerParameters) {\n return this.puppeteerService.generatePdfFromMjmlString(template, options);\n }\n\n /**\n * @param file Path to the MJML template file\n * @param options PDF generation options (optional)\n * @returns PDF generated from the MJML template at the provided file path\n * @description This method generates a PDF from an MJML template located at the specified file path. The file path is passed as a string in the `file` parameter. The template is first rendered to HTML using the MJML renderer, then converted to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the second argument.\n */\n generatePdfFromMjmlFile(file: string, options?: PuppeteerParameters) {\n return this.puppeteerService.generatePdfFromMjmlFile(file, options);\n }\n\n /**\n * @param template EJS template string\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided EJS template with data applied\n * @description This method generates a PDF from an EJS (Embedded JavaScript) template provided as a string. EJS is a templating language with a simple, straightforward syntax. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromEjsString(\n template: string,\n data: Data = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromEjsString(\n template,\n data,\n options,\n );\n }\n\n /**\n * @param file Path to the EJS template file\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the EJS template at the provided file path with data applied\n * @description This method generates a PDF from an EJS template located at the specified file path. The file path is passed as a string in the `file` parameter. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromEjsFile(\n file: string,\n data: Data = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromEjsFile(file, data, options);\n }\n\n /**\n * @param template Pug template string\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided Pug template with data applied\n * @description This method generates a PDF from a Pug template provided as a string. Pug is a clean, whitespace-sensitive syntax for writing HTML. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromPugString(\n template: string,\n data: LocalsObject = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromPugString(\n template,\n data,\n options,\n );\n }\n\n /**\n * @param file Path to the Pug template file\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the Pug template at the provided file path with data applied\n * @description This method generates a PDF from a Pug template located at the specified file path. The file path is passed as a string in the `file` parameter. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromPugFile(\n file: string,\n data: LocalsObject = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromPugFile(file, data, options);\n }\n\n /**\n * @param template Nunjucks template string\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided Nunjucks template with data applied\n * @description This method generates a PDF from a Nunjucks template provided as a string. Nunjucks is a powerful templating language with support for inheritance, macros, and filters. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromNunjucksString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromNunjucksString(\n template,\n data,\n options,\n );\n }\n\n /**\n * @param file Path to the Nunjucks template file\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the Nunjucks template at the provided file path with data applied\n * @description This method generates a PDF from a Nunjucks template located at the specified file path. The file path is passed as a string in the `file` parameter. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromNunjucksFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromNunjucksFile(\n file,\n data,\n options,\n );\n }\n\n /**\n * @param template Eta template string\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided Eta template with data applied\n * @description This method generates a PDF from an Eta template provided as a string. Eta is a fast and lightweight embedded templating language with a syntax similar to EJS but with better performance. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromEtaString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromEtaString(\n template,\n data,\n options,\n );\n }\n\n /**\n * @param file Path to the Eta template file\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the Eta template at the provided file path with data applied\n * @description This method generates a PDF from an Eta template located at the specified file path. The file path is passed as a string in the `file` parameter. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromEtaFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromEtaFile(file, data, options);\n }\n\n /**\n * @param template Mustache template string\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the provided Mustache template with data applied\n * @description This method generates a PDF from a Mustache template provided as a string. Mustache is a logic-less template language that emphasizes readable and simple templates. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromMustacheString(\n template: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromMustacheString(\n template,\n data,\n options,\n );\n }\n\n /**\n * @param file Path to the Mustache template file\n * @param data Data to inject into the template\n * @param options PDF generation options (optional)\n * @returns PDF generated from the Mustache template at the provided file path with data applied\n * @description This method generates a PDF from a Mustache template located at the specified file path. The file path is passed as a string in the `file` parameter. The data to inject into the template is passed in the `data` object, which is used to render the template before converting it to PDF. PDF generation options can be customized by passing a `PuppeteerParameters` object as the third argument.\n */\n generatePdfFromMustacheFile(\n file: string,\n data: Record<string, unknown> = {},\n options?: PuppeteerParameters,\n ) {\n return this.puppeteerService.generatePdfFromMustacheFile(\n file,\n data,\n options,\n );\n }\n\n /**\n * @param pdf The PDF bytes to modify\n * @param fieldName The name of the signature field to add (default: 'SignatureDebtor')\n * @param anchorText The text anchor to locate the signature field position (default: '__SIG_DEBTOR_ANCHOR__')\n * @returns Modified PDF with a signature field added at the anchor position\n * @description This method adds a signature field to a PDF using a text anchor as a reference for the field position. It uses the `addSignatureFieldUsingAnchor` function which finds the anchor in the PDF and inserts a signature field at that location. The signature field is named according to the `fieldName` parameter and the anchor is defined by `anchorText`.\n *\n * Usage example:\n * ```typescript\n * const modifiedPdf = await pdfService.addSignatureFieldSignatureDebtorRaw(\n * originalPdfBytes,\n * 'SignatureDebtor',\n * '__SIG_DEBTOR_ANCHOR__'\n * );\n * ```\n *\n * In this example, `originalPdfBytes` is a byte array representing the original PDF, `SignatureDebtor` is the name of the signature field to add, and `__SIG_DEBTOR_ANCHOR__` is the anchor text used to position the signature field in the PDF.\n *\n * If the anchor is not found, the signature field will be added at a default position (centered at the bottom of the last page).\n *\n * Note: Ensure that the input PDF contains the anchor defined by `anchorText` for the signature field to be positioned correctly. Otherwise, it will be added at a default position.\n */\n async addSignatureFieldSignatureDebtorRaw(\n pdf: Uint8Array | Buffer,\n fieldName: string = 'SignatureDebtor',\n anchorText: string = '__SIG_DEBTOR_ANCHOR__',\n ) {\n return await addSignatureFieldUsingAnchor(pdf, fieldName, anchorText);\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\n\n// Array of tips to display randomly\nconst TIPS = [\n '◈ encrypted .env [www.dotenvx.com]',\n '◈ secrets for agents [www.dotenvx.com]',\n '⌁ auth for agents [www.vestauth.com]',\n '⌘ custom filepath { path: \\'/custom/path/.env\\' }',\n '⌘ enable debugging { debug: true }',\n '⌘ override existing { override: true }',\n '⌘ suppress logs { quiet: true }',\n '⌘ multiple files { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`⚠ ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`┆ ${message}`)\n}\n\nfunction _log (message) {\n console.log(`◇ ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('no encoding is specified (UTF-8 is used by default)')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injected env (${keysCount}) from ${shortPaths.join(',')} ${dim(`// tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","'use strict'\n\nfunction _resolveEscapeSequences (value) {\n return value.replace(/\\\\\\$/g, '$')\n}\n\nfunction expandValue (value, processEnv, runningParsed) {\n const env = { ...runningParsed, ...processEnv } // process.env wins\n\n const regex = /(?<!\\\\)\\${([^{}]+)}|(?<!\\\\)\\$([A-Za-z_][A-Za-z0-9_]*)/g\n\n let result = value\n let match\n const seen = new Set() // self-referential checker\n\n while ((match = regex.exec(result)) !== null) {\n seen.add(result)\n\n const [template, bracedExpression, unbracedExpression] = match\n const expression = bracedExpression || unbracedExpression\n\n // match the operators `:+`, `+`, `:-`, and `-`\n const opRegex = /(:\\+|\\+|:-|-)/\n // find first match\n const opMatch = expression.match(opRegex)\n const splitter = opMatch ? opMatch[0] : null\n\n const r = expression.split(splitter)\n\n let defaultValue\n let value\n\n const key = r.shift()\n\n if ([':+', '+'].includes(splitter)) {\n defaultValue = env[key] ? r.join(splitter) : ''\n value = null\n } else {\n defaultValue = r.join(splitter)\n value = env[key]\n }\n\n if (value) {\n // self-referential check\n if (seen.has(value)) {\n result = result.replace(template, defaultValue)\n } else {\n result = result.replace(template, value)\n }\n } else {\n result = result.replace(template, defaultValue)\n }\n\n // if the result equaled what was in process.env and runningParsed then stop expanding\n if (result === runningParsed[key]) {\n break\n }\n\n regex.lastIndex = 0 // reset regex search position to re-evaluate after each replacement\n }\n\n return result\n}\n\nfunction expand (options) {\n // for use with progressive expansion\n const runningParsed = {}\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n // dotenv.config() ran before this so the assumption is process.env has already been set\n for (const key in options.parsed) {\n let value = options.parsed[key]\n\n // short-circuit scenario: process.env was already set prior to the file value\n if (processEnv[key] && processEnv[key] !== value) {\n value = processEnv[key]\n } else {\n value = expandValue(value, processEnv, runningParsed)\n }\n\n options.parsed[key] = _resolveEscapeSequences(value)\n\n // for use with progressive expansion\n runningParsed[key] = _resolveEscapeSequences(value)\n }\n\n for (const processKey in options.parsed) {\n processEnv[processKey] = options.parsed[processKey]\n }\n\n return options\n}\n\nmodule.exports.expand = expand\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AS_PROVIDER_METHOD_KEY = exports.VALIDATED_ENV_PROPNAME = exports.PARTIAL_CONFIGURATION_PROPNAME = exports.PARTIAL_CONFIGURATION_KEY = exports.VALIDATED_ENV_LOADER = exports.CONFIGURATION_LOADER = exports.CONFIGURATION_TOKEN = exports.CONFIGURATION_SERVICE_TOKEN = void 0;\n/**\n * Injection tokens\n */\nexports.CONFIGURATION_SERVICE_TOKEN = Symbol('CONFIG_SERVICE');\nexports.CONFIGURATION_TOKEN = 'CONFIGURATION_TOKEN';\nexports.CONFIGURATION_LOADER = 'CONFIGURATION_LOADER';\nexports.VALIDATED_ENV_LOADER = 'VALIDATED_ENV_LOADER';\nexports.PARTIAL_CONFIGURATION_KEY = 'PARTIAL_CONFIGURATION_KEY';\nexports.PARTIAL_CONFIGURATION_PROPNAME = 'KEY';\nexports.VALIDATED_ENV_PROPNAME = '_PROCESS_ENV_VALIDATED';\nexports.AS_PROVIDER_METHOD_KEY = 'asProvider';\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigService = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst shared_utils_1 = require(\"@nestjs/common/utils/shared.utils\");\nconst dotenv = __importStar(require(\"dotenv\"));\nconst fs_1 = __importDefault(require(\"fs\"));\nconst get_1 = __importDefault(require(\"lodash/get\"));\nconst has_1 = __importDefault(require(\"lodash/has\"));\nconst set_1 = __importDefault(require(\"lodash/set\"));\nconst rxjs_1 = require(\"rxjs\");\nconst config_constants_1 = require(\"./config.constants\");\n/**\n * @publicApi\n */\nlet ConfigService = class ConfigService {\n set isCacheEnabled(value) {\n this._isCacheEnabled = value;\n }\n get isCacheEnabled() {\n return this._isCacheEnabled;\n }\n set skipProcessEnv(value) {\n this._skipProcessEnv = value;\n }\n get skipProcessEnv() {\n return this._skipProcessEnv;\n }\n constructor(internalConfig = {}) {\n this.internalConfig = internalConfig;\n this.cache = {};\n this._changes$ = new rxjs_1.Subject();\n this._skipProcessEnv = false;\n this._isCacheEnabled = false;\n this.envFilePaths = [];\n }\n /**\n * Returns a stream of configuration changes.\n * Each event contains the attribute path, the old value and the new value.\n */\n get changes$() {\n return this._changes$.asObservable();\n }\n /**\n * Get a configuration value (either custom configuration or process environment variable)\n * based on property path (you can use dot notation to traverse nested object, e.g. \"database.host\").\n * It returns a default value if the key does not exist.\n * @param propertyPath\n * @param defaultValueOrOptions\n */\n get(propertyPath, defaultValueOrOptions, options) {\n const internalValue = this.getFromInternalConfig(propertyPath);\n if (!(0, shared_utils_1.isUndefined)(internalValue)) {\n return internalValue;\n }\n const validatedEnvValue = this.getFromValidatedEnv(propertyPath);\n if (!(0, shared_utils_1.isUndefined)(validatedEnvValue)) {\n return validatedEnvValue;\n }\n const defaultValue = this.isGetOptionsObject(defaultValueOrOptions) &&\n !options\n ? undefined\n : defaultValueOrOptions;\n if (!this._skipProcessEnv) {\n const processEnvValue = this.getFromProcessEnv(propertyPath, defaultValue);\n if (!(0, shared_utils_1.isUndefined)(processEnvValue)) {\n return processEnvValue;\n }\n }\n return defaultValue;\n }\n /**\n * Get a configuration value (either custom configuration or process environment variable)\n * based on property path (you can use dot notation to traverse nested object, e.g. \"database.host\").\n * It returns a default value if the key does not exist.\n * If the default value is undefined an exception will be thrown.\n * @param propertyPath\n * @param defaultValueOrOptions\n */\n getOrThrow(propertyPath, defaultValueOrOptions, options) {\n // @ts-expect-error Bypass method overloads\n const value = this.get(propertyPath, defaultValueOrOptions, options);\n if ((0, shared_utils_1.isUndefined)(value)) {\n throw new TypeError(`Configuration key \"${propertyPath.toString()}\" does not exist`);\n }\n return value;\n }\n /**\n * Sets a configuration value based on property path.\n * @param propertyPath\n * @param value\n */\n set(propertyPath, value) {\n const oldValue = this.get(propertyPath);\n (0, set_1.default)(this.internalConfig, propertyPath, value);\n if (typeof propertyPath === 'string') {\n process.env[propertyPath] = String(value);\n this.updateInterpolatedEnv(propertyPath, String(value));\n }\n if (this.isCacheEnabled) {\n this.setInCacheIfDefined(propertyPath, value);\n }\n this._changes$.next({\n path: propertyPath,\n oldValue,\n newValue: value,\n });\n }\n /**\n * Sets env file paths from `config.module.ts` to parse.\n * @param paths\n */\n setEnvFilePaths(paths) {\n this.envFilePaths = paths;\n }\n getFromCache(propertyPath, defaultValue) {\n const cachedValue = (0, get_1.default)(this.cache, propertyPath);\n return (0, shared_utils_1.isUndefined)(cachedValue)\n ? defaultValue\n : cachedValue;\n }\n getFromValidatedEnv(propertyPath) {\n const validatedEnvValue = (0, get_1.default)(this.internalConfig[config_constants_1.VALIDATED_ENV_PROPNAME], propertyPath);\n return validatedEnvValue;\n }\n getFromProcessEnv(propertyPath, defaultValue) {\n if (this.isCacheEnabled &&\n (0, has_1.default)(this.cache, propertyPath)) {\n const cachedValue = this.getFromCache(propertyPath, defaultValue);\n return !(0, shared_utils_1.isUndefined)(cachedValue) ? cachedValue : defaultValue;\n }\n const processValue = (0, get_1.default)(process.env, propertyPath);\n this.setInCacheIfDefined(propertyPath, processValue);\n return processValue;\n }\n getFromInternalConfig(propertyPath) {\n const internalValue = (0, get_1.default)(this.internalConfig, propertyPath);\n return internalValue;\n }\n setInCacheIfDefined(propertyPath, value) {\n if (typeof value === 'undefined') {\n return;\n }\n (0, set_1.default)(this.cache, propertyPath, value);\n }\n isGetOptionsObject(options) {\n return options && options?.infer && Object.keys(options).length === 1;\n }\n updateInterpolatedEnv(propertyPath, value) {\n let config = {};\n for (const envFilePath of this.envFilePaths) {\n if (fs_1.default.existsSync(envFilePath)) {\n config = Object.assign(dotenv.parse(fs_1.default.readFileSync(envFilePath)), config);\n }\n }\n const regex = new RegExp(`\\\\$\\\\{?${propertyPath}\\\\}?`, 'g');\n for (const [k, v] of Object.entries(config)) {\n if (regex.test(v)) {\n process.env[k] = v.replace(regex, value);\n }\n }\n }\n};\nexports.ConfigService = ConfigService;\nexports.ConfigService = ConfigService = __decorate([\n (0, common_1.Injectable)(),\n __param(0, (0, common_1.Optional)()),\n __param(0, (0, common_1.Inject)(config_constants_1.CONFIGURATION_TOKEN)),\n __metadata(\"design:paramtypes\", [Object])\n], ConfigService);\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigHostModule = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst config_constants_1 = require(\"./config.constants\");\nconst config_service_1 = require(\"./config.service\");\n/**\n * @publicApi\n */\nlet ConfigHostModule = class ConfigHostModule {\n};\nexports.ConfigHostModule = ConfigHostModule;\nexports.ConfigHostModule = ConfigHostModule = __decorate([\n (0, common_1.Global)(),\n (0, common_1.Module)({\n providers: [\n {\n provide: config_constants_1.CONFIGURATION_TOKEN,\n useFactory: () => ({}),\n },\n {\n provide: config_constants_1.CONFIGURATION_SERVICE_TOKEN,\n useClass: config_service_1.ConfigService,\n },\n ],\n exports: [config_constants_1.CONFIGURATION_TOKEN, config_constants_1.CONFIGURATION_SERVICE_TOKEN],\n })\n], ConfigHostModule);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getConfigToken = getConfigToken;\n/**\n * @publicApi\n */\nfunction getConfigToken(token) {\n return `CONFIGURATION(${token.toString()})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConfigProvider = createConfigProvider;\nconst get_config_token_util_1 = require(\"./get-config-token.util\");\nconst crypto_1 = require(\"crypto\");\n/**\n * @publicApi\n */\nfunction createConfigProvider(factory) {\n return {\n provide: factory.KEY || (0, get_config_token_util_1.getConfigToken)((0, crypto_1.randomUUID)()),\n useFactory: factory,\n inject: [],\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRegistrationToken = getRegistrationToken;\nconst config_constants_1 = require(\"../config.constants\");\n/**\n * @publicApi\n */\nfunction getRegistrationToken(config) {\n return config[config_constants_1.PARTIAL_CONFIGURATION_KEY];\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeConfigObject = mergeConfigObject;\nconst set_1 = __importDefault(require(\"lodash/set\"));\n/**\n * @publicApi\n */\nfunction mergeConfigObject(host, partial, token) {\n if (token) {\n (0, set_1.default)(host, token, partial);\n return partial;\n }\n Object.assign(host, partial);\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar ConfigModule_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigModule = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst shared_utils_1 = require(\"@nestjs/common/utils/shared.utils\");\nconst dotenv = __importStar(require(\"dotenv\"));\nconst dotenv_expand_1 = require(\"dotenv-expand\");\nconst fs = __importStar(require(\"fs\"));\nconst path_1 = require(\"path\");\nconst config_host_module_1 = require(\"./config-host.module\");\nconst config_constants_1 = require(\"./config.constants\");\nconst config_service_1 = require(\"./config.service\");\nconst create_config_factory_util_1 = require(\"./utils/create-config-factory.util\");\nconst get_registration_token_util_1 = require(\"./utils/get-registration-token.util\");\nconst merge_configs_util_1 = require(\"./utils/merge-configs.util\");\n/**\n * @publicApi\n */\nlet ConfigModule = ConfigModule_1 = class ConfigModule {\n /**\n * This promise resolves when \"dotenv\" completes loading environment variables.\n * When \"ignoreEnvFile\" is set to true, then it will resolve immediately after the\n * \"ConfigModule#forRoot\" method is called.\n */\n static get envVariablesLoaded() {\n return this._envVariablesLoaded;\n }\n /**\n * Loads environment variables based on the \"ignoreEnvFile\" flag and \"envFilePath\" value.\n * Additionally, registers custom configurations globally.\n * @param options\n */\n static async forRoot(options = {}) {\n const envFilePaths = Array.isArray(options.envFilePath)\n ? options.envFilePath\n : [options.envFilePath || (0, path_1.resolve)(process.cwd(), '.env')];\n let validatedEnvConfig = undefined;\n let config = options.ignoreEnvFile\n ? {}\n : this.loadEnvFile(envFilePaths, options);\n if (!options.ignoreEnvVars && options.validatePredefined !== false) {\n config = {\n ...config,\n ...process.env,\n };\n }\n if (options.validate) {\n const validatedConfig = options.validate(config);\n validatedEnvConfig = validatedConfig;\n this.assignVariablesToProcess(validatedConfig);\n }\n else if (options.validationSchema) {\n const validationOptions = this.getSchemaValidationOptions(options);\n const { error, value: validatedConfig } = options.validationSchema.validate(config, validationOptions);\n if (error) {\n throw new Error(`Config validation error: ${error.message}`);\n }\n validatedEnvConfig = validatedConfig;\n this.assignVariablesToProcess(validatedConfig);\n }\n else {\n this.assignVariablesToProcess(config);\n }\n const isConfigToLoad = options.load && options.load.length;\n const configFactory = await Promise.all(options.load || []);\n const providers = configFactory\n .map(factory => (0, create_config_factory_util_1.createConfigProvider)(factory))\n .filter(item => item);\n const configProviderTokens = providers.map(item => item.provide);\n const configServiceProvider = {\n provide: config_service_1.ConfigService,\n useFactory: (configService) => {\n const untypedConfigService = configService;\n if (options.cache) {\n untypedConfigService.isCacheEnabled = true;\n }\n if (options.skipProcessEnv) {\n untypedConfigService.skipProcessEnv = true;\n }\n configService.setEnvFilePaths(envFilePaths);\n return configService;\n },\n inject: [config_constants_1.CONFIGURATION_SERVICE_TOKEN, ...configProviderTokens],\n };\n providers.push(configServiceProvider);\n if (validatedEnvConfig) {\n const validatedEnvConfigLoader = {\n provide: config_constants_1.VALIDATED_ENV_LOADER,\n useFactory: (host) => {\n host[config_constants_1.VALIDATED_ENV_PROPNAME] = validatedEnvConfig;\n },\n inject: [config_constants_1.CONFIGURATION_TOKEN],\n };\n providers.push(validatedEnvConfigLoader);\n }\n this.environmentVariablesLoadedSignal();\n return {\n module: ConfigModule_1,\n global: options.isGlobal,\n providers: isConfigToLoad\n ? [\n ...providers,\n {\n provide: config_constants_1.CONFIGURATION_LOADER,\n useFactory: (host, ...configurations) => {\n configurations.forEach((item, index) => this.mergePartial(host, item, providers[index]));\n },\n inject: [config_constants_1.CONFIGURATION_TOKEN, ...configProviderTokens],\n },\n ]\n : providers,\n exports: [config_service_1.ConfigService, ...configProviderTokens],\n };\n }\n /**\n * Registers configuration object (partial registration).\n * @param config\n */\n static forFeature(config) {\n const configProvider = (0, create_config_factory_util_1.createConfigProvider)(config);\n const serviceProvider = {\n provide: config_service_1.ConfigService,\n useFactory: (configService) => configService,\n inject: [config_constants_1.CONFIGURATION_SERVICE_TOKEN, configProvider.provide],\n };\n return {\n module: ConfigModule_1,\n providers: [\n configProvider,\n serviceProvider,\n {\n provide: config_constants_1.CONFIGURATION_LOADER,\n useFactory: (host, partialConfig) => {\n this.mergePartial(host, partialConfig, configProvider);\n },\n inject: [config_constants_1.CONFIGURATION_TOKEN, configProvider.provide],\n },\n ],\n exports: [config_service_1.ConfigService, configProvider.provide],\n };\n }\n static loadEnvFile(envFilePaths, options) {\n let config = {};\n for (const envFilePath of envFilePaths) {\n if (fs.existsSync(envFilePath)) {\n config = Object.assign(dotenv.parse(fs.readFileSync(envFilePath)), config);\n if (options.expandVariables) {\n const expandOptions = typeof options.expandVariables === 'object'\n ? options.expandVariables\n : {};\n config =\n (0, dotenv_expand_1.expand)({ ...expandOptions, parsed: config }).parsed || config;\n }\n }\n }\n return config;\n }\n static assignVariablesToProcess(config) {\n if (!(0, shared_utils_1.isObject)(config)) {\n return;\n }\n const keys = Object.keys(config).filter(key => !(key in process.env));\n keys.forEach(key => {\n const value = config[key];\n if (typeof value === 'string') {\n process.env[key] = value;\n }\n else if (typeof value === 'boolean' || typeof value === 'number') {\n process.env[key] = `${value}`;\n }\n });\n }\n static mergePartial(host, item, provider) {\n const factoryRef = provider.useFactory;\n const token = (0, get_registration_token_util_1.getRegistrationToken)(factoryRef);\n (0, merge_configs_util_1.mergeConfigObject)(host, item, token);\n }\n static getSchemaValidationOptions(options) {\n if (options.validationOptions) {\n if (typeof options.validationOptions.allowUnknown === 'undefined') {\n options.validationOptions.allowUnknown = true;\n }\n return options.validationOptions;\n }\n return {\n abortEarly: false,\n allowUnknown: true,\n };\n }\n};\nexports.ConfigModule = ConfigModule;\nConfigModule._envVariablesLoaded = new Promise(resolve => (ConfigModule_1.environmentVariablesLoadedSignal = resolve));\nexports.ConfigModule = ConfigModule = ConfigModule_1 = __decorate([\n (0, common_1.Module)({\n imports: [config_host_module_1.ConfigHostModule],\n providers: [\n {\n provide: config_service_1.ConfigService,\n useExisting: config_constants_1.CONFIGURATION_SERVICE_TOKEN,\n },\n ],\n exports: [config_host_module_1.ConfigHostModule, config_service_1.ConfigService],\n })\n], ConfigModule);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConditionalModule = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst config_module_1 = require(\"./config.module\");\n/**\n * Same logic as in `@nestjs/core` package.\n * @param instance The instance which should get the name from\n * @returns The name of an instance or `undefined`\n */\nconst getInstanceName = (instance) => {\n if (instance?.forwardRef) {\n return instance.forwardRef()?.name;\n }\n if (instance.module) {\n return instance.module?.name;\n }\n return instance.name;\n};\n/**\n * @publicApi\n */\nclass ConditionalModule {\n /**\n * @publicApi\n */\n static async registerWhen(module, condition, options) {\n const { timeout = 5000, debug = true } = options ?? {};\n const moduleName = getInstanceName(module) || module.toString();\n const timer = setTimeout(() => {\n throw new Error(`Nest was not able to resolve the config variables within ${timeout} milliseconds. Bause of this, the ConditionalModule was not able to determine if ${moduleName} should be registered or not`);\n }, timeout);\n timer.unref();\n const returnModule = { module: ConditionalModule, imports: [], exports: [] };\n if (typeof condition === 'string') {\n const key = condition;\n condition = env => {\n return env[key]?.toLowerCase() !== 'false';\n };\n }\n await config_module_1.ConfigModule.envVariablesLoaded;\n clearTimeout(timer);\n const evaluation = condition(process.env);\n if (evaluation) {\n returnModule.imports.push(module);\n returnModule.exports.push(module);\n }\n else {\n if (debug) {\n common_1.Logger.debug(`${condition.toString()} evaluated to false. Skipping the registration of ${moduleName}`, ConditionalModule.name);\n }\n }\n return returnModule;\n }\n}\nexports.ConditionalModule = ConditionalModule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./config-object.type\"), exports);\n__exportStar(require(\"./config.type\"), exports);\n__exportStar(require(\"./no-infer.type\"), exports);\n__exportStar(require(\"./path-value.type\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerAs = registerAs;\nconst __1 = require(\"..\");\nconst config_constants_1 = require(\"../config.constants\");\nconst get_config_token_util_1 = require(\"./get-config-token.util\");\n/**\n * @publicApi\n *\n * Registers the configuration object behind a specified token.\n */\nfunction registerAs(token, configFactory) {\n const defineProperty = (key, value) => {\n Object.defineProperty(configFactory, key, {\n configurable: false,\n enumerable: false,\n value,\n writable: false,\n });\n };\n defineProperty(config_constants_1.PARTIAL_CONFIGURATION_KEY, token);\n defineProperty(config_constants_1.PARTIAL_CONFIGURATION_PROPNAME, (0, get_config_token_util_1.getConfigToken)(token));\n defineProperty(config_constants_1.AS_PROVIDER_METHOD_KEY, () => ({\n imports: [__1.ConfigModule.forFeature(configFactory)],\n useFactory: (config) => config,\n inject: [(0, get_config_token_util_1.getConfigToken)(token)],\n }));\n return configFactory;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./register-as.util\"), exports);\n__exportStar(require(\"./get-config-token.util\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./config-change-event.interface\"), exports);\n__exportStar(require(\"./config-factory.interface\"), exports);\n__exportStar(require(\"./config-module-options.interface\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./conditional.module\"), exports);\n__exportStar(require(\"./config.module\"), exports);\n__exportStar(require(\"./config.service\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./utils\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nexports.__esModule = true;\n__export(require(\"./dist\"));\n","import { HandlebarsService } from '@gboutte/nestjs-hbs';\nimport { HandlebarsOptions } from '@gboutte/nestjs-hbs/dist/handlebars-options.interface';\nimport {\n DynamicModule,\n Inject,\n InjectionToken,\n Module,\n ModuleMetadata,\n OnModuleInit,\n OptionalFactoryDependency,\n Provider,\n} from '@nestjs/common';\nimport { ConfigModule } from '@nestjs/config';\n\nimport { HANDLEBARS_PARAMETERS, PDF_PARAMETERS } from '../helpers/tokens';\nimport { BrowserService } from './browser/browser.service';\nimport { EjsService } from './engines/ejs/ejs.service';\nimport { EtaService } from './engines/eta/eta.service';\nimport { MjmlService } from './engines/mjml/mjml.service';\nimport { MustacheService } from './engines/mustache/mustache.service';\nimport { NunjucksService } from './engines/nunjucks/nunjucks.service';\nimport { PugService } from './engines/pug/pug.service';\nimport { PuppeteerService } from './puppeteer.service';\nimport type { PuppeteerParameters } from './puppeteer-parameters.interface';\n\nexport interface PuppeteerModuleAsyncOptions extends Pick<\n ModuleMetadata,\n 'imports'\n> {\n inject?: Array<InjectionToken | OptionalFactoryDependency>;\n useFactory: (\n ...args: Array<any>\n ) => Promise<PuppeteerParameters> | PuppeteerParameters;\n}\n\n@Module({\n providers: [\n PuppeteerService,\n BrowserService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ],\n exports: [\n PuppeteerService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ],\n})\nexport class PuppeteerModule implements OnModuleInit {\n constructor(\n private readonly browserService: BrowserService,\n @Inject(PDF_PARAMETERS) private readonly pdfParams: PuppeteerParameters,\n ) {}\n\n async onModuleInit() {\n if (!this.pdfParams.executablePath) {\n await this.browserService.install(\n this.pdfParams.useLockedBrowser ?? false,\n );\n }\n }\n\n static forRoot(pdfParameters: PuppeteerParameters): DynamicModule {\n const providers: Array<Provider> = [\n {\n provide: PDF_PARAMETERS,\n useValue: pdfParameters,\n },\n {\n provide: HANDLEBARS_PARAMETERS,\n useValue: pdfParameters.hbsOptions ?? {},\n },\n HandlebarsService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ];\n\n return {\n module: PuppeteerModule,\n imports: [ConfigModule.forRoot()],\n providers,\n exports: [\n PuppeteerService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ],\n };\n }\n\n static forRootAsync(options: PuppeteerModuleAsyncOptions): DynamicModule {\n const pdfParamsProvider: Provider = {\n provide: PDF_PARAMETERS,\n inject: options.inject ?? [],\n useFactory: async (...args: Array<unknown>) =>\n options.useFactory(...args),\n };\n\n const hbsParamsProvider: Provider = {\n provide: HANDLEBARS_PARAMETERS,\n inject: [PDF_PARAMETERS],\n useFactory: (params: PuppeteerParameters): HandlebarsOptions =>\n params.hbsOptions ?? {},\n };\n\n return {\n module: PuppeteerModule,\n imports: [...(options.imports ?? []), ConfigModule.forRoot()],\n providers: [\n pdfParamsProvider,\n hbsParamsProvider,\n PuppeteerService,\n BrowserService,\n HandlebarsService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ],\n exports: [\n PuppeteerService,\n MjmlService,\n PugService,\n EjsService,\n NunjucksService,\n EtaService,\n MustacheService,\n ],\n };\n }\n}\n","import { DynamicModule, Module, ModuleMetadata } from '@nestjs/common';\n\nimport { NestjsPdfService } from './nestjs-pdf.service';\nimport { PuppeteerModule } from './puppeteer/puppeteer.module';\nimport { PuppeteerParameters } from './puppeteer/puppeteer-parameters.interface';\n\nexport interface PdfLibModuleAsyncOptions extends Pick<\n ModuleMetadata,\n 'imports'\n> {\n inject?: Array<any>;\n useFactory: (...args: Array<any>) => any;\n}\n\n@Module({})\nexport class NestjsPdfModule {\n static forRoot(options: PuppeteerParameters): DynamicModule {\n return {\n module: NestjsPdfModule,\n imports: [PuppeteerModule.forRoot(options)],\n providers: [NestjsPdfService],\n exports: [NestjsPdfService],\n };\n }\n\n static forRootAsync(options: PdfLibModuleAsyncOptions): DynamicModule {\n return {\n module: NestjsPdfModule,\n imports: [PuppeteerModule.forRootAsync(options)],\n providers: [NestjsPdfService],\n exports: [NestjsPdfService],\n };\n }\n}\n"],"x_google_ignoreList":[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101],"mappings":"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"}
|