@embeddable.com/sdk-core 3.13.7-next.0 → 3.14.0-next.2

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/lib/index.esm.js CHANGED
@@ -1,12 +1,15 @@
1
1
  import * as fs from 'node:fs/promises';
2
- import { readdir, lstat } from 'node:fs/promises';
3
- import * as path from 'node:path';
2
+ import { readdir, lstat, readFile } from 'node:fs/promises';
3
+ import * as path$1 from 'node:path';
4
4
  import path__default, { join } from 'node:path';
5
5
  import * as vite from 'vite';
6
6
  import ora from 'ora';
7
7
  import 'node:child_process';
8
8
  import * as crypto from 'node:crypto';
9
- import * as fs$1 from 'node:fs';
9
+ import * as path from 'path';
10
+ import path__default$1, { basename } from 'path';
11
+ import fg from 'fast-glob';
12
+ import * as fsSync from 'node:fs';
10
13
  import { existsSync } from 'node:fs';
11
14
  import { createNodeLogger, createNodeSys } from '@stencil/core/sys/node';
12
15
  import { loadConfig, createCompiler } from '@stencil/core/compiler';
@@ -20,8 +23,6 @@ import require$$3 from 'http';
20
23
  import require$$4 from 'https';
21
24
  import require$$0$1 from 'url';
22
25
  import require$$2$1, { createReadStream } from 'fs';
23
- import * as path$1 from 'path';
24
- import path__default$1, { basename } from 'path';
25
26
  import axios from 'axios';
26
27
  import archiver from 'archiver';
27
28
  import { select } from '@inquirer/prompts';
@@ -29,7 +30,6 @@ import * as http from 'node:http';
29
30
  import { WebSocketServer } from 'ws';
30
31
  import * as chokidar from 'chokidar';
31
32
  import minimist from 'minimist';
32
- import fg from 'fast-glob';
33
33
  import * as dotenv from 'dotenv';
34
34
  import finalhandler from 'finalhandler';
35
35
  import serveStatic from 'serve-static';
@@ -286,7 +286,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
286
286
  var errorUtil$1;
287
287
  (function (errorUtil) {
288
288
  errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};
289
- errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === undefined ? undefined : message.message;
289
+ errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;
290
290
  })(errorUtil$1 || (errorUtil$1 = {}));
291
291
  var ZodFirstPartyTypeKind$1;
292
292
  (function (ZodFirstPartyTypeKind) {
@@ -371,6 +371,32 @@ const getContentHash = (contentString) => {
371
371
  .substring(0, 5);
372
372
  };
373
373
 
374
+ const loadJson = async (filePath) => {
375
+ const data = await readFile(filePath, "utf-8");
376
+ return JSON.parse(data);
377
+ };
378
+
379
+ const getComponentLibraryConfig = (componentLibrary) => {
380
+ let libraryName = componentLibrary;
381
+ const include = [];
382
+ const exclude = [];
383
+ if (typeof componentLibrary === "object" && componentLibrary !== null) {
384
+ libraryName = componentLibrary.name;
385
+ if (componentLibrary.include) {
386
+ include.push(...componentLibrary.include);
387
+ }
388
+ if (componentLibrary.exclude) {
389
+ exclude.push(...componentLibrary.exclude);
390
+ }
391
+ }
392
+ return { libraryName, include, exclude };
393
+ };
394
+ const EXTERNAL_LIBRARY_GLOBAL_HOOKS_META_NAME = "globalHooks.json";
395
+ const getGlobalHooksMeta = async (ctx, libraryName) => {
396
+ return (await loadJson(getLibraryPath(ctx, libraryName, EXTERNAL_LIBRARY_GLOBAL_HOOKS_META_NAME)));
397
+ };
398
+ const getLibraryPath = (ctx, libraryName, fileName) => path.resolve(ctx.client.rootDir, "node_modules", libraryName, "dist", fileName);
399
+
374
400
  const EMB_TYPE_FILE_REGEX = /^(.*)\.type\.emb\.[jt]s$/;
375
401
  const EMB_OPTIONS_FILE_REGEX = /^(.*)\.options\.emb\.[jt]s$/;
376
402
  var buildTypes = async (ctx) => {
@@ -383,17 +409,19 @@ var buildTypes = async (ctx) => {
383
409
  async function generate$1(ctx) {
384
410
  const typeFiles = await findFiles(ctx.client.srcDir, EMB_TYPE_FILE_REGEX);
385
411
  const optionsFiles = await findFiles(ctx.client.srcDir, EMB_OPTIONS_FILE_REGEX);
386
- const typeImports = typeFiles
412
+ const additionalImports = await getAdditionalImportsFromInstalledLibraries(ctx);
413
+ const repositoryTypeImports = typeFiles
387
414
  .concat(optionsFiles)
388
- .map(([_fileName, filePath]) => `import '../${path
415
+ .map(([_fileName, filePath]) => `import '../${path$1
389
416
  .relative(ctx.client.rootDir, filePath)
390
417
  .replaceAll("\\", "/")}';`)
391
418
  .join("\n");
392
- await fs.writeFile(path.resolve(ctx.client.buildDir, ctx.outputOptions.typesEntryPointFilename), typeImports);
419
+ const typeImports = additionalImports.join("\n") + repositoryTypeImports;
420
+ await fs.writeFile(path$1.resolve(ctx.client.buildDir, ctx.outputOptions.typesEntryPointFilename), typeImports);
393
421
  }
394
422
  async function build$1(ctx) {
395
423
  var _a;
396
- const typesFilePath = path.resolve(ctx.client.buildDir, ctx.outputOptions.typesEntryPointFilename);
424
+ const typesFilePath = path$1.resolve(ctx.client.buildDir, ctx.outputOptions.typesEntryPointFilename);
397
425
  await vite.build({
398
426
  logLevel: "error",
399
427
  build: {
@@ -406,28 +434,211 @@ async function build$1(ctx) {
406
434
  outDir: ctx.client.buildDir,
407
435
  },
408
436
  });
409
- if (!((_a = ctx.dev) === null || _a === undefined ? undefined : _a.watch)) {
437
+ if (!((_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch)) {
410
438
  const fileContent = await fs.readFile(typesFilePath, "utf8");
411
439
  const fileHash = getContentHash(fileContent);
412
440
  const fileName = `embeddable-types-${fileHash}.js`;
413
- await fs.rename(path.resolve(ctx.client.buildDir, "embeddable-types.js"), path.resolve(ctx.client.buildDir, fileName));
441
+ await fs.rename(path$1.resolve(ctx.client.buildDir, "embeddable-types.js"), path$1.resolve(ctx.client.buildDir, fileName));
414
442
  }
415
443
  }
416
444
  async function cleanup$1(ctx) {
417
- await fs.rm(path.resolve(ctx.client.buildDir, "embeddable-types-entry-point.js"));
445
+ await fs.rm(path$1.resolve(ctx.client.buildDir, "embeddable-types-entry-point.js"));
446
+ }
447
+ async function getAdditionalImportsFromInstalledLibraries(ctx) {
448
+ const componentLibraries = ctx.client.componentLibraries;
449
+ const additionalImports = [];
450
+ for (const componentLibrary of componentLibraries) {
451
+ const { libraryName } = getComponentLibraryConfig(componentLibrary);
452
+ try {
453
+ fg.sync(path$1.resolve(ctx.client.rootDir, "node_modules", libraryName, "dist", "embeddable-types-*.js")).forEach((file) => {
454
+ const fileName = path$1.basename(file);
455
+ additionalImports.push(`import '${libraryName}/dist/${fileName}';`);
456
+ });
457
+ }
458
+ catch (e) {
459
+ console.error(`Can't load component library: ${libraryName}`, e);
460
+ throw e;
461
+ }
462
+ }
463
+ return additionalImports;
418
464
  }
419
465
 
420
- var prepare = async (ctx) => {
466
+ const TEMP_JS_HOOK_FILE = "embeddableThemeHook.js";
467
+ const LIFECYCLE_OUTPUT_NAME = "embeddable-lifecycle";
468
+ const THEME_PROVIDER_OUTPUT_NAME = "embeddable-theme";
469
+ var buildGlobalHooks = async (ctx) => {
470
+ var _a;
471
+ const watch = (_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch;
472
+ const progress = watch ? undefined : ora("Building global hooks...").start();
473
+ try {
474
+ const { fileName: themeProvider, watcher: themeWatcher } = await buildThemeHook(ctx);
475
+ const { lifecycleHooks, watcher: lifecycleWatcher } = await buildLifecycleHooks(ctx);
476
+ await saveGlobalHooksMeta(ctx, themeProvider, lifecycleHooks);
477
+ progress === null || progress === void 0 ? void 0 : progress.succeed("Global hooks build completed");
478
+ return { themeWatcher, lifecycleWatcher };
479
+ }
480
+ catch (error) {
481
+ progress === null || progress === void 0 ? void 0 : progress.fail("Global hooks build failed");
482
+ throw error;
483
+ }
484
+ };
485
+ /**
486
+ * Build theme hooks for a given component library.
487
+ */
488
+ async function buildThemeHook(ctx) {
489
+ var _a, _b, _c;
490
+ const componentLibraries = ctx.client.componentLibraries;
491
+ const repoThemeHookExists = existsSync(ctx.client.customizationFile);
492
+ const imports = [];
493
+ const functionNames = [];
494
+ for (let i = 0; i < componentLibraries.length; i++) {
495
+ const libraryConfig = componentLibraries[i];
496
+ const { libraryName } = getComponentLibraryConfig(libraryConfig);
497
+ const libMeta = await getGlobalHooksMeta(ctx, libraryName);
498
+ const themeProvider = libMeta.themeProvider;
499
+ if (!themeProvider)
500
+ continue;
501
+ // Prepare imports: library theme + repo theme (if exists)
502
+ const functionName = `libraryThemeProvider${i}`;
503
+ const libraryThemeImport = `import ${functionName} from '${libraryName}/dist/${themeProvider}'`;
504
+ functionNames.push(functionName);
505
+ imports.push(libraryThemeImport);
506
+ }
507
+ if (!imports.length && !repoThemeHookExists) {
508
+ return { fileName: undefined, watcher: undefined };
509
+ }
510
+ const repoThemeImport = repoThemeHookExists
511
+ ? `import localThemeProvider from '${ctx.client.customizationFile}';`
512
+ : "const localThemeProvider = () => {};";
513
+ // Generate a temporary file that imports both library and repo theme
514
+ await generateTemporaryHookFile(ctx, imports, functionNames, repoThemeImport);
515
+ // Build the temporary file with Vite
516
+ const buildResults = await buildWithVite(ctx, getTempHookFilePath(ctx), THEME_PROVIDER_OUTPUT_NAME, (_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch, !((_b = ctx.dev) === null || _b === void 0 ? void 0 : _b.watch));
517
+ // Cleanup temporary file
518
+ if (!((_c = ctx.dev) === null || _c === void 0 ? void 0 : _c.watch)) {
519
+ await cleanupTemporaryHookFile(ctx);
520
+ }
521
+ return buildResults;
522
+ }
523
+ /**
524
+ * Build theme hooks for a given component library.
525
+ */
526
+ async function buildLifecycleHooks(ctx) {
527
+ var _a, _b;
528
+ const componentLibraries = ctx.client.componentLibraries;
529
+ const builtLifecycleHooks = [];
530
+ const repoLifecycleExist = existsSync(ctx.client.lifecycleHooksFile);
531
+ let lifecycleWatcher = undefined;
532
+ // If lifecycle exists, build it right away to get the hashed output
533
+ if (repoLifecycleExist) {
534
+ const { fileName: repoLifecycleFileName, watcher } = await buildWithVite(ctx, ctx.client.lifecycleHooksFile, LIFECYCLE_OUTPUT_NAME, (_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch, false);
535
+ if ((_b = ctx.dev) === null || _b === void 0 ? void 0 : _b.watch) {
536
+ lifecycleWatcher = watcher;
537
+ }
538
+ builtLifecycleHooks.push(repoLifecycleFileName);
539
+ }
540
+ for (const libraryConfig of componentLibraries) {
541
+ const { libraryName } = getComponentLibraryConfig(libraryConfig);
542
+ const libMeta = await getGlobalHooksMeta(ctx, libraryName);
543
+ const lifecycleHooks = libMeta.lifecycleHooks;
544
+ for (const lifecycleHook of lifecycleHooks) {
545
+ const libLifecycleHook = path$1.resolve(ctx.client.rootDir, "node_modules", libraryName, "dist", lifecycleHook);
546
+ const { fileName: lifecycleHookFileName } = await buildWithVite(ctx, libLifecycleHook, LIFECYCLE_OUTPUT_NAME);
547
+ builtLifecycleHooks.push(lifecycleHookFileName);
548
+ }
549
+ }
550
+ return { lifecycleHooks: builtLifecycleHooks, watcher: lifecycleWatcher };
551
+ }
552
+ /**
553
+ * Write the final global hooks metadata to disk (themeHooksMeta, lifecycleHookMeta).
554
+ */
555
+ async function saveGlobalHooksMeta(ctx, themeProvider, lifecycleHooks) {
556
+ const metaFilePath = path$1.resolve(ctx.client.buildDir, EXTERNAL_LIBRARY_GLOBAL_HOOKS_META_NAME);
557
+ const data = JSON.stringify({ themeProvider, lifecycleHooks }, null, 2);
558
+ fsSync.writeFileSync(metaFilePath, data);
559
+ }
560
+ /**
561
+ * Generate a temporary file which imports the library theme and repository theme,
562
+ * replacing template placeholders.
563
+ */
564
+ async function generateTemporaryHookFile(ctx, libraryThemeImports, functionNames, repoThemeImport) {
565
+ const templatePath = path$1.resolve(ctx.core.templatesDir, "embeddableThemeHook.js.template");
566
+ const templateContent = await fs.readFile(templatePath, "utf8");
567
+ const newContent = templateContent
568
+ .replace("{{LIBRARY_THEME_IMPORTS}}", libraryThemeImports.join("\n"))
569
+ .replace("{{ARRAY_OF_LIBRARY_THEME_PROVIDERS}}", functionNames.join("\n"))
570
+ .replace("{{LOCAL_THEME_IMPORT}}", repoThemeImport);
571
+ // Write to temporary hook file
572
+ await fs.writeFile(getTempHookFilePath(ctx), newContent, "utf8");
573
+ }
574
+ /**
575
+ * Build a file with Vite and return the hashed output file name (e.g., embeddable-theme-xxxx.js).
576
+ */
577
+ async function buildWithVite(ctx, entryFile, outputFile, watch = false, useHash = true) {
578
+ const fileContent = await fs.readFile(entryFile, "utf8");
579
+ const fileHash = getContentHash(fileContent);
580
+ // Bundle using Vite
581
+ const fileName = useHash ? `${outputFile}-${fileHash}` : outputFile;
582
+ const fileWatcher = await vite.build({
583
+ logLevel: watch ? "info" : "error",
584
+ build: {
585
+ emptyOutDir: false,
586
+ lib: {
587
+ entry: entryFile,
588
+ formats: ["es"],
589
+ fileName: fileName,
590
+ },
591
+ outDir: ctx.client.buildDir,
592
+ watch: watch ? {} : undefined,
593
+ },
594
+ });
595
+ if (watch) {
596
+ await waitForInitialBuild(fileWatcher);
597
+ }
598
+ const watcher = watch
599
+ ? fileWatcher
600
+ : undefined;
601
+ return { fileName: `${fileName}.js`, watcher };
602
+ }
603
+ /**
604
+ * Remove the temporary hook file after building.
605
+ */
606
+ async function cleanupTemporaryHookFile(ctx) {
607
+ await fs.rm(getTempHookFilePath(ctx), { force: true });
608
+ }
609
+ /**
610
+ * Get the path to the temporary hook file in the build directory.
611
+ */
612
+ function getTempHookFilePath(ctx) {
613
+ return path$1.resolve(ctx.client.buildDir, TEMP_JS_HOOK_FILE);
614
+ }
615
+ function waitForInitialBuild(watcher) {
616
+ return new Promise((resolve, reject) => {
617
+ function onEvent(event) {
618
+ if (event.code === "END") {
619
+ watcher.off("event", onEvent);
620
+ resolve();
621
+ }
622
+ else if (event.code === "ERROR") {
623
+ watcher.off("event", onEvent);
624
+ reject(event.error);
625
+ }
626
+ }
627
+ watcher.on("event", onEvent);
628
+ });
629
+ }
630
+
631
+ var prepare$1 = async (ctx) => {
421
632
  await removeIfExists(ctx);
422
633
  await copyStencilConfigsToClient(ctx);
423
634
  await createComponentDir(ctx.client.componentDir);
424
635
  };
425
636
  async function removeIfExists(ctx) {
426
637
  const promises = [];
427
- if (fs$1.existsSync(ctx.client.buildDir)) {
638
+ if (fsSync.existsSync(ctx.client.buildDir)) {
428
639
  promises.push(fs.rm(ctx.client.buildDir, { recursive: true }));
429
640
  }
430
- if (fs$1.existsSync(ctx.client.tmpDir)) {
641
+ if (fsSync.existsSync(ctx.client.tmpDir)) {
431
642
  promises.push(fs.rm(ctx.client.tmpDir, { recursive: true }));
432
643
  }
433
644
  await Promise.all(promises);
@@ -450,27 +661,35 @@ var generate = async (ctx, pluginName) => {
450
661
  await generateSourceMap(ctx, pluginName);
451
662
  };
452
663
  async function injectCSS(ctx, pluginName) {
453
- const CUSTOMER_BUILD = path.resolve(ctx.client.buildDir, ctx[pluginName].outputOptions.buildName);
664
+ const CUSTOMER_BUILD = path$1.resolve(ctx.client.buildDir, ctx[pluginName].outputOptions.buildName);
454
665
  const allFiles = await fs.readdir(CUSTOMER_BUILD);
455
- const cssFilesImportsStr = allFiles
666
+ const imports = allFiles
456
667
  .filter((fileName) => fileName.endsWith(".css"))
457
- .map((fileName) => `@import '../${ctx[pluginName].outputOptions.buildName}/${fileName}';`)
458
- .join("\n");
459
- const content = await fs.readFile(path.resolve(ctx.core.templatesDir, "style.css.template"), "utf8");
460
- await fs.writeFile(path.resolve(ctx.client.componentDir, "style.css"), content.replace(STYLE_IMPORTS_TOKEN, cssFilesImportsStr));
668
+ .map((fileName) => `@import '../${ctx[pluginName].outputOptions.buildName}/${fileName}';`);
669
+ const componentLibraries = ctx.client.componentLibraries;
670
+ for (const componentLibrary of componentLibraries) {
671
+ const { libraryName } = getComponentLibraryConfig(componentLibrary);
672
+ const allLibFiles = await fs.readdir(path$1.resolve(ctx.client.rootDir, "node_modules", libraryName, "dist"));
673
+ allLibFiles
674
+ .filter((fileName) => fileName.endsWith(".css"))
675
+ .forEach((fileName) => imports.push(`@import '~${libraryName}/dist/${fileName}';`));
676
+ }
677
+ const cssFilesImportsStr = imports.join("\n");
678
+ const content = await fs.readFile(path$1.resolve(ctx.core.templatesDir, "style.css.template"), "utf8");
679
+ await fs.writeFile(path$1.resolve(ctx.client.componentDir, "style.css"), content.replace(STYLE_IMPORTS_TOKEN, cssFilesImportsStr));
461
680
  }
462
681
  async function injectBundleRender(ctx, pluginName) {
463
682
  var _a;
464
683
  const importStr = `import render from '../${ctx[pluginName].outputOptions.buildName}/${ctx[pluginName].outputOptions.fileName}';`;
465
- let content = await fs.readFile(path.resolve(ctx.core.templatesDir, "component.tsx.template"), "utf8");
466
- if (!!((_a = ctx.dev) === null || _a === undefined ? undefined : _a.watch)) {
684
+ let content = await fs.readFile(path$1.resolve(ctx.core.templatesDir, "component.tsx.template"), "utf8");
685
+ if (!!((_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch)) {
467
686
  content = content.replace(COMPONENT_TAG_TOKEN, "embeddable-component");
468
687
  }
469
- await fs.writeFile(path.resolve(ctx.client.componentDir, "component.tsx"), content.replace(RENDER_IMPORT_TOKEN, importStr));
688
+ await fs.writeFile(path$1.resolve(ctx.client.componentDir, "component.tsx"), content.replace(RENDER_IMPORT_TOKEN, importStr));
470
689
  }
471
690
  async function addComponentTagName(filePath, bundleHash) {
472
691
  // find entry file with a name *.entry.js
473
- const entryFiles = await findFiles(path.dirname(filePath), /.*\.entry\.js/);
692
+ const entryFiles = await findFiles(path$1.dirname(filePath), /.*\.entry\.js/);
474
693
  if (!entryFiles.length) {
475
694
  return;
476
695
  }
@@ -488,9 +707,9 @@ async function addComponentTagName(filePath, bundleHash) {
488
707
  }
489
708
  async function runStencil(ctx) {
490
709
  var _a, _b, _c;
491
- const logger = ((_a = ctx.dev) === null || _a === undefined ? undefined : _a.logger) || createNodeLogger();
492
- const sys = ((_b = ctx.dev) === null || _b === undefined ? undefined : _b.sys) || createNodeSys({ process });
493
- const devMode = !!((_c = ctx.dev) === null || _c === undefined ? undefined : _c.watch);
710
+ const logger = ((_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.logger) || createNodeLogger();
711
+ const sys = ((_b = ctx.dev) === null || _b === void 0 ? void 0 : _b.sys) || createNodeSys({ process });
712
+ const devMode = !!((_c = ctx.dev) === null || _c === void 0 ? void 0 : _c.watch);
494
713
  const isWindows = process.platform === "win32";
495
714
  const validated = await loadConfig({
496
715
  initTsConfig: true,
@@ -500,10 +719,10 @@ async function runStencil(ctx) {
500
719
  devMode,
501
720
  maxConcurrentWorkers: isWindows ? 0 : 8, // workers break on windows
502
721
  rootDir: ctx.client.buildDir,
503
- configPath: path.resolve(ctx.client.buildDir, "stencil.config.ts"),
504
- tsconfig: path.resolve(ctx.client.buildDir, "tsconfig.json"),
722
+ configPath: path$1.resolve(ctx.client.buildDir, "stencil.config.ts"),
723
+ tsconfig: path$1.resolve(ctx.client.buildDir, "tsconfig.json"),
505
724
  namespace: "embeddable-wrapper",
506
- srcDir: path.resolve(ctx.client.buildDir, "component"),
725
+ srcDir: path$1.resolve(ctx.client.buildDir, "component"),
507
726
  sourceMap: true, // always generate source maps in both dev and prod
508
727
  minifyJs: !devMode,
509
728
  minifyCss: !devMode,
@@ -513,7 +732,7 @@ async function runStencil(ctx) {
513
732
  },
514
733
  ],
515
734
  watchDirs: [
516
- path.resolve(ctx.client.buildDir, ctx["sdk-react"].outputOptions.buildName),
735
+ path$1.resolve(ctx.client.buildDir, ctx["sdk-react"].outputOptions.buildName),
517
736
  ],
518
737
  },
519
738
  });
@@ -533,27 +752,24 @@ async function runStencil(ctx) {
533
752
  }
534
753
  async function handleStencilBuildOutput(ctx) {
535
754
  var _a;
536
- const entryFilePath = path.resolve(ctx.client.stencilBuild, "embeddable-wrapper.esm.js");
755
+ const entryFilePath = path$1.resolve(ctx.client.stencilBuild, "embeddable-wrapper.esm.js");
537
756
  let fileName = "embeddable-wrapper.esm.js";
538
- if (!((_a = ctx.dev) === null || _a === undefined ? undefined : _a.watch)) {
539
- const entryFileContent = await fs.readFile(entryFilePath, "utf8");
540
- const fileHash = getContentHash(entryFileContent);
541
- fileName = `embeddable-wrapper.esm-${fileHash}.js`;
542
- ctx.client.bundleHash = fileHash;
757
+ if (!((_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch) && ctx.client.bundleHash) {
758
+ fileName = `embeddable-wrapper.esm-${ctx.client.bundleHash}.js`;
543
759
  await addComponentTagName(entryFilePath, ctx.client.bundleHash);
544
760
  }
545
- await fs.rename(entryFilePath, path.resolve(ctx.client.stencilBuild, fileName));
761
+ await fs.rename(entryFilePath, path$1.resolve(ctx.client.stencilBuild, fileName));
546
762
  }
547
763
  async function generateSourceMap(ctx, pluginName) {
548
- const componentBuildDir = path.resolve(ctx.client.buildDir, ctx[pluginName].outputOptions.buildName);
549
- const stencilBuild = path.resolve(ctx.client.stencilBuild);
550
- const tmpComponentDir = path.resolve(stencilBuild, ctx[pluginName].outputOptions.buildName);
764
+ const componentBuildDir = path$1.resolve(ctx.client.buildDir, ctx[pluginName].outputOptions.buildName);
765
+ const stencilBuild = path$1.resolve(ctx.client.stencilBuild);
766
+ const tmpComponentDir = path$1.resolve(stencilBuild, ctx[pluginName].outputOptions.buildName);
551
767
  await fs.cp(componentBuildDir, tmpComponentDir, { recursive: true });
552
768
  const stencilFiles = await fs.readdir(stencilBuild);
553
769
  const jsFiles = stencilFiles.filter((file) => file.toLowerCase().endsWith(".js"));
554
770
  await Promise.all(jsFiles.map(async (jsFile) => {
555
771
  try {
556
- const chain = await sorcery.load(path.resolve(stencilBuild, jsFile));
772
+ const chain = await sorcery.load(path$1.resolve(stencilBuild, jsFile));
557
773
  // overwrite the existing file
558
774
  await chain.write();
559
775
  }
@@ -564,8 +780,8 @@ async function generateSourceMap(ctx, pluginName) {
564
780
  await fs.rm(tmpComponentDir, { recursive: true });
565
781
  }
566
782
 
567
- const CREDENTIALS_DIR = path.resolve(os.homedir(), ".embeddable");
568
- const CREDENTIALS_FILE = path.resolve(CREDENTIALS_DIR, "credentials");
783
+ const CREDENTIALS_DIR = path$1.resolve(os.homedir(), ".embeddable");
784
+ const CREDENTIALS_FILE = path$1.resolve(CREDENTIALS_DIR, "credentials");
569
785
 
570
786
  const checkNodeVersion = async () => {
571
787
  const spinner = ora("Checking node version...").start();
@@ -753,14 +969,15 @@ async function createManifest({ ctx, typesFileName, metaFileName, editorsMetaFil
753
969
  const sdkVersions = await getSDKVersions();
754
970
  // identify user's package manager and its version
755
971
  let packageManager = "npm";
756
- if ((_a = process.env.npm_config_user_agent) === null || _a === undefined ? undefined : _a.includes("yarn")) {
972
+ if ((_a = process.env.npm_config_user_agent) === null || _a === void 0 ? void 0 : _a.includes("yarn")) {
757
973
  packageManager = "yarn";
758
974
  }
759
- if ((_b = process.env.npm_config_user_agent) === null || _b === undefined ? undefined : _b.includes("pnpm")) {
975
+ if ((_b = process.env.npm_config_user_agent) === null || _b === void 0 ? void 0 : _b.includes("pnpm")) {
760
976
  packageManager = "pnpm";
761
977
  }
762
- const packageManagerVersion = ((_d = (_c = process.env.npm_config_user_agent) === null || _c === undefined ? undefined : _c.match(/(\d+\.\d+\.\d+)/)) === null || _d === undefined ? undefined : _d[0]) ||
978
+ const packageManagerVersion = ((_d = (_c = process.env.npm_config_user_agent) === null || _c === void 0 ? void 0 : _c.match(/(\d+\.\d+\.\d+)/)) === null || _d === void 0 ? void 0 : _d[0]) ||
763
979
  "unknown";
980
+ const globalHooks = await loadJson(path$1.resolve(ctx.client.buildDir, "globalHooks.json"));
764
981
  // write manifest file with files with hash
765
982
  const manifest = {
766
983
  entryFiles: {
@@ -776,31 +993,43 @@ async function createManifest({ ctx, typesFileName, metaFileName, editorsMetaFil
776
993
  sdkVersions,
777
994
  packageManager,
778
995
  packageManagerVersion,
996
+ globalHooks,
779
997
  metrics: {
780
998
  buildTime: hrtimeToISO8601(ctx.buildTime),
781
999
  },
782
- origin: ((_e = ctx.dev) === null || _e === undefined ? undefined : _e.watch) ? "dev" : "push",
1000
+ origin: ((_e = ctx.dev) === null || _e === void 0 ? void 0 : _e.watch) ? "dev" : "push",
783
1001
  },
784
1002
  };
785
- await fs.writeFile(path.join(ctx.client.tmpDir, "embeddable-manifest.json"), JSON.stringify(manifest));
1003
+ await fs.writeFile(path$1.join(ctx.client.tmpDir, "embeddable-manifest.json"), JSON.stringify(manifest));
786
1004
  }
787
1005
  async function extractBuild(ctx) {
788
1006
  const stencilBuildFiles = await findFiles(ctx.client.stencilBuild, /embeddable-wrapper.esm-[a-z0-9]+\.js/);
789
1007
  const [[, stencilWrapperFilePath]] = stencilBuildFiles || [];
790
- const stencilWrapperFileName = path.basename(stencilWrapperFilePath);
791
- await fs.rename(path.resolve(ctx.client.buildDir, ctx.client.stencilBuild), ctx.client.tmpDir);
1008
+ const stencilWrapperFileName = path$1.basename(stencilWrapperFilePath);
1009
+ await fs.rename(path$1.resolve(ctx.client.buildDir, ctx.client.stencilBuild), ctx.client.tmpDir);
792
1010
  const typesBuildFiles = await findFiles(ctx.client.buildDir, /embeddable-types-[a-z0-9]+\.js/);
793
1011
  const [[, typesFilePath]] = typesBuildFiles || [];
794
- const typesFileName = path.basename(typesFilePath);
795
- await fs.rename(typesFilePath, path.join(ctx.client.tmpDir, typesFileName));
1012
+ const typesFileName = path$1.basename(typesFilePath);
1013
+ await fs.rename(typesFilePath, path$1.join(ctx.client.tmpDir, typesFileName));
796
1014
  const metaBuildFiles = await findFiles(ctx.client.buildDir, /embeddable-components-meta-[a-z0-9]+\.js/);
797
1015
  const [[, metaFilePath]] = metaBuildFiles || [];
798
- const metaFileName = path.basename(metaFilePath);
799
- await fs.rename(metaFilePath, path.join(ctx.client.tmpDir, metaFileName));
1016
+ const metaFileName = path$1.basename(metaFilePath);
1017
+ await fs.rename(metaFilePath, path$1.join(ctx.client.tmpDir, metaFileName));
800
1018
  const editorsMetaBuildFiles = await findFiles(ctx.client.buildDir, /embeddable-editors-meta-[a-z0-9]+\.js/);
801
1019
  const [[, editorsMetaFilePath]] = editorsMetaBuildFiles || [];
802
- const editorsMetaFileName = path.basename(editorsMetaFilePath);
803
- await fs.rename(editorsMetaFilePath, path.join(ctx.client.tmpDir, editorsMetaFileName));
1020
+ const editorsMetaFileName = path$1.basename(editorsMetaFilePath);
1021
+ await fs.rename(editorsMetaFilePath, path$1.join(ctx.client.tmpDir, editorsMetaFileName));
1022
+ const themeFile = (await findFiles(ctx.client.buildDir, /embeddable-theme-[0-9a-f]+\.js/)) ||
1023
+ [];
1024
+ for (const [, themeFilePath] of themeFile) {
1025
+ const themeFilePathFileName = path$1.basename(themeFilePath);
1026
+ await fs.rename(themeFilePath, path$1.join(ctx.client.tmpDir, themeFilePathFileName));
1027
+ }
1028
+ const lifecycleFiles = (await findFiles(ctx.client.buildDir, /embeddable-lifecycle(?:-[0-9a-f]+)?\.js/)) || [];
1029
+ for (const [, lifecycleFilePath] of lifecycleFiles) {
1030
+ const lifecycleFilePathFileName = path$1.basename(lifecycleFilePath);
1031
+ await fs.rename(lifecycleFilePath, path$1.join(ctx.client.tmpDir, lifecycleFilePathFileName));
1032
+ }
804
1033
  await createManifest({
805
1034
  ctx,
806
1035
  typesFileName,
@@ -1362,7 +1591,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
1362
1591
  var errorUtil;
1363
1592
  (function (errorUtil) {
1364
1593
  errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};
1365
- errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === undefined ? undefined : message.message;
1594
+ errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;
1366
1595
  })(errorUtil || (errorUtil = {}));
1367
1596
 
1368
1597
  var _ZodEnum_cache, _ZodNativeEnum_cache;
@@ -1419,14 +1648,14 @@ function processCreateParams(params) {
1419
1648
  var _a, _b;
1420
1649
  const { message } = params;
1421
1650
  if (iss.code === "invalid_enum_value") {
1422
- return { message: message !== null && message !== undefined ? message : ctx.defaultError };
1651
+ return { message: message !== null && message !== void 0 ? message : ctx.defaultError };
1423
1652
  }
1424
1653
  if (typeof ctx.data === "undefined") {
1425
- return { message: (_a = message !== null && message !== undefined ? message : required_error) !== null && _a !== undefined ? _a : ctx.defaultError };
1654
+ return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };
1426
1655
  }
1427
1656
  if (iss.code !== "invalid_type")
1428
1657
  return { message: ctx.defaultError };
1429
- return { message: (_b = message !== null && message !== undefined ? message : invalid_type_error) !== null && _b !== undefined ? _b : ctx.defaultError };
1658
+ return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };
1430
1659
  };
1431
1660
  return { errorMap: customMap, description };
1432
1661
  }
@@ -1482,10 +1711,10 @@ class ZodType {
1482
1711
  const ctx = {
1483
1712
  common: {
1484
1713
  issues: [],
1485
- async: (_a = params === null || params === undefined ? undefined : params.async) !== null && _a !== undefined ? _a : false,
1486
- contextualErrorMap: params === null || params === undefined ? undefined : params.errorMap,
1714
+ async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,
1715
+ contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,
1487
1716
  },
1488
- path: (params === null || params === undefined ? undefined : params.path) || [],
1717
+ path: (params === null || params === void 0 ? void 0 : params.path) || [],
1489
1718
  schemaErrorMap: this._def.errorMap,
1490
1719
  parent: null,
1491
1720
  data,
@@ -1519,7 +1748,7 @@ class ZodType {
1519
1748
  };
1520
1749
  }
1521
1750
  catch (err) {
1522
- if ((_b = (_a = err === null || err === undefined ? undefined : err.message) === null || _a === undefined ? undefined : _a.toLowerCase()) === null || _b === undefined ? undefined : _b.includes("encountered")) {
1751
+ if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes("encountered")) {
1523
1752
  this["~standard"].async = true;
1524
1753
  }
1525
1754
  ctx.common = {
@@ -1546,10 +1775,10 @@ class ZodType {
1546
1775
  const ctx = {
1547
1776
  common: {
1548
1777
  issues: [],
1549
- contextualErrorMap: params === null || params === undefined ? undefined : params.errorMap,
1778
+ contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,
1550
1779
  async: true,
1551
1780
  },
1552
- path: (params === null || params === undefined ? undefined : params.path) || [],
1781
+ path: (params === null || params === void 0 ? void 0 : params.path) || [],
1553
1782
  schemaErrorMap: this._def.errorMap,
1554
1783
  parent: null,
1555
1784
  data,
@@ -2240,10 +2469,10 @@ class ZodString extends ZodType {
2240
2469
  }
2241
2470
  return this._addCheck({
2242
2471
  kind: "datetime",
2243
- precision: typeof (options === null || options === undefined ? undefined : options.precision) === "undefined" ? null : options === null || options === undefined ? undefined : options.precision,
2244
- offset: (_a = options === null || options === undefined ? undefined : options.offset) !== null && _a !== undefined ? _a : false,
2245
- local: (_b = options === null || options === undefined ? undefined : options.local) !== null && _b !== undefined ? _b : false,
2246
- ...errorUtil.errToObj(options === null || options === undefined ? undefined : options.message),
2472
+ precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision,
2473
+ offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,
2474
+ local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,
2475
+ ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),
2247
2476
  });
2248
2477
  }
2249
2478
  date(message) {
@@ -2259,8 +2488,8 @@ class ZodString extends ZodType {
2259
2488
  }
2260
2489
  return this._addCheck({
2261
2490
  kind: "time",
2262
- precision: typeof (options === null || options === undefined ? undefined : options.precision) === "undefined" ? null : options === null || options === undefined ? undefined : options.precision,
2263
- ...errorUtil.errToObj(options === null || options === undefined ? undefined : options.message),
2491
+ precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision,
2492
+ ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),
2264
2493
  });
2265
2494
  }
2266
2495
  duration(message) {
@@ -2277,8 +2506,8 @@ class ZodString extends ZodType {
2277
2506
  return this._addCheck({
2278
2507
  kind: "includes",
2279
2508
  value: value,
2280
- position: options === null || options === undefined ? undefined : options.position,
2281
- ...errorUtil.errToObj(options === null || options === undefined ? undefined : options.message),
2509
+ position: options === null || options === void 0 ? void 0 : options.position,
2510
+ ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),
2282
2511
  });
2283
2512
  }
2284
2513
  startsWith(value, message) {
@@ -2415,7 +2644,7 @@ ZodString.create = (params) => {
2415
2644
  return new ZodString({
2416
2645
  checks: [],
2417
2646
  typeName: ZodFirstPartyTypeKind.ZodString,
2418
- coerce: (_a = params === null || params === undefined ? undefined : params.coerce) !== null && _a !== undefined ? _a : false,
2647
+ coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,
2419
2648
  ...processCreateParams(params),
2420
2649
  });
2421
2650
  };
@@ -2669,7 +2898,7 @@ ZodNumber.create = (params) => {
2669
2898
  return new ZodNumber({
2670
2899
  checks: [],
2671
2900
  typeName: ZodFirstPartyTypeKind.ZodNumber,
2672
- coerce: (params === null || params === undefined ? undefined : params.coerce) || false,
2901
+ coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
2673
2902
  ...processCreateParams(params),
2674
2903
  });
2675
2904
  };
@@ -2850,7 +3079,7 @@ ZodBigInt.create = (params) => {
2850
3079
  return new ZodBigInt({
2851
3080
  checks: [],
2852
3081
  typeName: ZodFirstPartyTypeKind.ZodBigInt,
2853
- coerce: (_a = params === null || params === undefined ? undefined : params.coerce) !== null && _a !== undefined ? _a : false,
3082
+ coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,
2854
3083
  ...processCreateParams(params),
2855
3084
  });
2856
3085
  };
@@ -2875,7 +3104,7 @@ class ZodBoolean extends ZodType {
2875
3104
  ZodBoolean.create = (params) => {
2876
3105
  return new ZodBoolean({
2877
3106
  typeName: ZodFirstPartyTypeKind.ZodBoolean,
2878
- coerce: (params === null || params === undefined ? undefined : params.coerce) || false,
3107
+ coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
2879
3108
  ...processCreateParams(params),
2880
3109
  });
2881
3110
  };
@@ -2985,7 +3214,7 @@ class ZodDate extends ZodType {
2985
3214
  ZodDate.create = (params) => {
2986
3215
  return new ZodDate({
2987
3216
  checks: [],
2988
- coerce: (params === null || params === undefined ? undefined : params.coerce) || false,
3217
+ coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
2989
3218
  typeName: ZodFirstPartyTypeKind.ZodDate,
2990
3219
  ...processCreateParams(params),
2991
3220
  });
@@ -3413,10 +3642,10 @@ class ZodObject extends ZodType {
3413
3642
  ? {
3414
3643
  errorMap: (issue, ctx) => {
3415
3644
  var _a, _b, _c, _d;
3416
- const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === undefined ? undefined : _b.call(_a, issue, ctx).message) !== null && _c !== undefined ? _c : ctx.defaultError;
3645
+ const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;
3417
3646
  if (issue.code === "unrecognized_keys")
3418
3647
  return {
3419
- message: (_d = errorUtil.errToObj(message).message) !== null && _d !== undefined ? _d : defaultError,
3648
+ message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,
3420
3649
  };
3421
3650
  return {
3422
3651
  message: defaultError,
@@ -4426,7 +4655,7 @@ function createZodEnum(values, params) {
4426
4655
  class ZodEnum extends ZodType {
4427
4656
  constructor() {
4428
4657
  super(...arguments);
4429
- _ZodEnum_cache.set(this, undefined);
4658
+ _ZodEnum_cache.set(this, void 0);
4430
4659
  }
4431
4660
  _parse(input) {
4432
4661
  if (typeof input.data !== "string") {
@@ -4496,7 +4725,7 @@ ZodEnum.create = createZodEnum;
4496
4725
  class ZodNativeEnum extends ZodType {
4497
4726
  constructor() {
4498
4727
  super(...arguments);
4499
- _ZodNativeEnum_cache.set(this, undefined);
4728
+ _ZodNativeEnum_cache.set(this, void 0);
4500
4729
  }
4501
4730
  _parse(input) {
4502
4731
  const nativeEnumValues = util$1.getValidEnumValues(this._def.values);
@@ -4996,14 +5225,14 @@ fatal) {
4996
5225
  var _a, _b;
4997
5226
  if (!r) {
4998
5227
  const params = cleanParams(_params, data);
4999
- const _fatal = (_b = (_a = params.fatal) !== null && _a !== undefined ? _a : fatal) !== null && _b !== undefined ? _b : true;
5228
+ const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;
5000
5229
  ctx.addIssue({ code: "custom", ...params, fatal: _fatal });
5001
5230
  }
5002
5231
  });
5003
5232
  }
5004
5233
  if (!r) {
5005
5234
  const params = cleanParams(_params, data);
5006
- const _fatal = (_b = (_a = params.fatal) !== null && _a !== undefined ? _a : fatal) !== null && _b !== undefined ? _b : true;
5235
+ const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;
5007
5236
  ctx.addIssue({ code: "custom", ...params, fatal: _fatal });
5008
5237
  }
5009
5238
  return;
@@ -5368,7 +5597,7 @@ const cubeModelSchema = z
5368
5597
  .array()
5369
5598
  .min(1),
5370
5599
  })
5371
- .refine((data) => data.cubes.every((cube) => { var _a, _b; return ((_a = cube.dimensions) === null || _a === undefined ? undefined : _a.length) || ((_b = cube.measures) === null || _b === undefined ? undefined : _b.length); }), {
5600
+ .refine((data) => data.cubes.every((cube) => { var _a, _b; return ((_a = cube.dimensions) === null || _a === void 0 ? void 0 : _a.length) || ((_b = cube.measures) === null || _b === void 0 ? void 0 : _b.length); }), {
5372
5601
  message: "At least one measure or dimension must be defined",
5373
5602
  path: ["cubes"],
5374
5603
  });
@@ -5404,12 +5633,12 @@ const clientContextSchema = z.array(z
5404
5633
  var provideConfig = async () => {
5405
5634
  const configFilePath = `${process.cwd()}/embeddable.config.js`;
5406
5635
  const tsConfigFilePath = `${process.cwd()}/embeddable.config.ts`;
5407
- if (!fs$1.existsSync(configFilePath) && !fs$1.existsSync(tsConfigFilePath)) {
5636
+ if (!fsSync.existsSync(configFilePath) && !fsSync.existsSync(tsConfigFilePath)) {
5408
5637
  console.log("Please create a proper `embeddable.config.js` or `embeddable.config.ts` file in the root of your project.");
5409
5638
  process.exit(1);
5410
5639
  }
5411
5640
  const isWindows = process.platform === "win32";
5412
- const configPath = fs$1.existsSync(tsConfigFilePath)
5641
+ const configPath = fsSync.existsSync(tsConfigFilePath)
5413
5642
  ? tsConfigFilePath
5414
5643
  : configFilePath;
5415
5644
  const pathOrUrl = isWindows ? url.pathToFileURL(configPath).href : configPath;
@@ -5421,7 +5650,7 @@ function getDefaultExportFromCjs (x) {
5421
5650
  }
5422
5651
 
5423
5652
  function getAugmentedNamespace(n) {
5424
- if (n.__esModule) return n;
5653
+ if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
5425
5654
  var f = n.default;
5426
5655
  if (typeof f == "function") {
5427
5656
  var a = function a () {
@@ -5445,106 +5674,8 @@ function getAugmentedNamespace(n) {
5445
5674
  return a;
5446
5675
  }
5447
5676
 
5448
- var name = "rollbar";
5449
5677
  var version = "2.26.4";
5450
- var repository = {
5451
- type: "git",
5452
- url: "http://github.com/rollbar/rollbar.js"
5453
- };
5454
- var description = "Effortlessly track and debug errors in your JavaScript applications with Rollbar. This package includes advanced error tracking features and an intuitive interface to help you identify and fix issues more quickly.";
5455
- var keywords = [
5456
- "error",
5457
- "tracking",
5458
- "logging",
5459
- "debugging",
5460
- "javascript"
5461
- ];
5462
- var license = "MIT";
5463
- var main = "src/server/rollbar.js";
5464
- var browser = "dist/rollbar.umd.min.js";
5465
- var types = "./index.d.ts";
5466
- var dependencies = {
5467
- async: "~3.2.3",
5468
- "console-polyfill": "0.3.0",
5469
- "error-stack-parser": "^2.0.4",
5470
- "json-stringify-safe": "~5.0.0",
5471
- "lru-cache": "~2.2.1",
5472
- "request-ip": "~3.3.0",
5473
- "source-map": "^0.5.7"
5474
- };
5475
- var devDependencies = {
5476
- "@babel/core": "^7.22.11",
5477
- "babel-eslint": "^10.0.3",
5478
- "babel-loader": "^8.0.4",
5479
- bluebird: "^3.3.5",
5480
- chai: "^4.2.0",
5481
- chalk: "^1.1.1",
5482
- "coverage-istanbul-loader": "^3.0.5",
5483
- eslint: "^6.8.0",
5484
- "eslint-loader": "^3.0.3",
5485
- express: "^4.18.2",
5486
- glob: "^5.0.14",
5487
- grunt: "^1.1.0",
5488
- "grunt-bumpup": "^0.6.3",
5489
- "grunt-cli": "^1.3.2",
5490
- "grunt-contrib-concat": "^2.1.0",
5491
- "grunt-contrib-connect": "^2.1.0",
5492
- "grunt-contrib-copy": "^1.0.0",
5493
- "grunt-contrib-jshint": "^3.2.0",
5494
- "grunt-contrib-uglify": "^4.0.0",
5495
- "grunt-contrib-watch": "^1.1.0",
5496
- "grunt-karma": "^4.0.2",
5497
- "grunt-parallel": "^0.5.1",
5498
- "grunt-text-replace": "^0.4.0",
5499
- "grunt-vows": "^0.4.2",
5500
- "grunt-webpack": "^5.0.0",
5501
- jade: "~0.27.7",
5502
- "jasmine-core": "^2.3.4",
5503
- "jquery-mockjax": "^2.5.0",
5504
- karma: "^6.4.2",
5505
- "karma-chai": "^0.1.0",
5506
- "karma-chrome-launcher": "^2.2.0",
5507
- "karma-expect": "^1.1.0",
5508
- "karma-firefox-launcher": "^0.1.6",
5509
- "karma-html2js-preprocessor": "^1.1.0",
5510
- "karma-jquery": "^0.1.0",
5511
- "karma-mocha": "^2.0.1",
5512
- "karma-mocha-reporter": "^2.2.5",
5513
- "karma-requirejs": "^0.2.2",
5514
- "karma-safari-launcher": "^0.1.1",
5515
- "karma-sinon": "^1.0.4",
5516
- "karma-sourcemap-loader": "^0.3.5",
5517
- "karma-webpack": "^5.0.0",
5518
- mocha: "^10.2.0",
5519
- natives: "^1.1.6",
5520
- nock: "^11.9.1",
5521
- "node-libs-browser": "^0.5.2",
5522
- prettier: "^3.2.5",
5523
- requirejs: "^2.1.20",
5524
- "script-loader": "0.6.1",
5525
- sinon: "^8.1.1",
5526
- stackframe: "^0.2.2",
5527
- "strict-loader": "^1.2.0",
5528
- "time-grunt": "^1.0.0",
5529
- vows: "^0.8.3",
5530
- webpack: "^5.88.2"
5531
- };
5532
- var optionalDependencies = {
5533
- decache: "^3.0.5"
5534
- };
5535
- var scripts = {
5536
- build: "./node_modules/.bin/grunt",
5537
- test: "./node_modules/.bin/grunt test",
5538
- "test-browser": "./node_modules/.bin/grunt test-browser",
5539
- "test-server": "./node_modules/.bin/grunt test-server",
5540
- test_ci: "./node_modules/.bin/grunt test",
5541
- lint: "./node_modules/.bin/eslint . --ext .js"
5542
- };
5543
- var cdn = {
5544
- host: "cdn.rollbar.com"
5545
- };
5546
5678
  var defaults = {
5547
- endpoint: "api.rollbar.com/api/1/item/",
5548
5679
  server: {
5549
5680
  scrubHeaders: [
5550
5681
  "authorization",
@@ -5586,43 +5717,10 @@ var defaults = {
5586
5717
  "request.cookies"
5587
5718
  ]
5588
5719
  },
5589
- reactNative: {
5590
- rewriteFilenamePatterns: [
5591
- "^.*/[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}/[^/]*.app/(.*)$",
5592
- "^.*/[0-9A-Fa-f]{64}/codepush_ios/(.*)$",
5593
- "^.*/[0-9A-Fa-f]{64}/codepush_android/(.*)$",
5594
- "^.*/[0-9A-Fa-f]{64}/CodePush/(.*)$"
5595
- ]
5596
- },
5597
- logLevel: "debug",
5598
- reportLevel: "debug",
5599
- uncaughtErrorLevel: "error",
5600
- maxItems: 0,
5601
- itemsPerMin: 60
5602
- };
5603
- var plugins = {
5604
- jquery: {
5605
- version: "0.0.8"
5606
- }
5607
- };
5720
+ reportLevel: "debug"};
5608
5721
  var require$$2 = {
5609
- name: name,
5610
5722
  version: version,
5611
- repository: repository,
5612
- description: description,
5613
- keywords: keywords,
5614
- license: license,
5615
- main: main,
5616
- browser: browser,
5617
- types: types,
5618
- dependencies: dependencies,
5619
- devDependencies: devDependencies,
5620
- optionalDependencies: optionalDependencies,
5621
- scripts: scripts,
5622
- cdn: cdn,
5623
- defaults: defaults,
5624
- plugins: plugins
5625
- };
5723
+ defaults: defaults};
5626
5724
 
5627
5725
  var merge_1;
5628
5726
  var hasRequiredMerge;
@@ -5912,7 +6010,6 @@ function requireUtility () {
5912
6010
  }
5913
6011
 
5914
6012
  var parseUriOptions = {
5915
- strictMode: false,
5916
6013
  key: [
5917
6014
  'source',
5918
6015
  'protocol',
@@ -21427,7 +21524,7 @@ const reportErrorToRollbar = async (error) => {
21427
21524
 
21428
21525
  const getSdkPackageVersionInfo = async (config) => {
21429
21526
  try {
21430
- const packageJsonFilePath = path.resolve(
21527
+ const packageJsonFilePath = path$1.resolve(
21431
21528
  config.client.rootDir,
21432
21529
  "package.json",
21433
21530
  );
@@ -21487,8 +21584,8 @@ async function getUserData() {
21487
21584
  }
21488
21585
  }
21489
21586
 
21490
- const LOG_DIR = path.join(process.cwd(), ".embeddable", "logs");
21491
- const ERROR_LOG_FILE = path.join(LOG_DIR, "error.log");
21587
+ const LOG_DIR = path$1.join(process.cwd(), ".embeddable", "logs");
21588
+ const ERROR_LOG_FILE = path$1.join(LOG_DIR, "error.log");
21492
21589
  const MAX_LOG_SIZE = 5 * 1024 * 1024; // 5 MB
21493
21590
  const MAX_LOG_FILES = 5;
21494
21591
  async function initLogger(command) {
@@ -21580,8 +21677,9 @@ var build = async () => {
21580
21677
  removeBuildSuccessFlag();
21581
21678
  const config = await provideConfig();
21582
21679
  await validate(config);
21583
- await prepare(config);
21680
+ await prepare$1(config);
21584
21681
  await buildTypes(config);
21682
+ await buildGlobalHooks(config);
21585
21683
  for (const getPlugin of config.plugins) {
21586
21684
  const plugin = getPlugin();
21587
21685
  breadcrumbs.push(`${plugin.pluginName}: validate`);
@@ -21714,11 +21812,11 @@ async function getWorkspaces(ctx, token, workspaceSpinner) {
21714
21812
  return (_a = response.data) === null || _a === void 0 ? void 0 : _a.filter((w) => !w.devWorkspace);
21715
21813
  }
21716
21814
  catch (e) {
21717
- if ((_b = ctx.dev) === null || _b === undefined ? undefined : _b.watch) {
21815
+ if ((_b = ctx.dev) === null || _b === void 0 ? void 0 : _b.watch) {
21718
21816
  workspaceSpinner.stop();
21719
21817
  throw e;
21720
21818
  }
21721
- if (((_c = e.response) === null || _c === undefined ? undefined : _c.status) === 401) {
21819
+ if (((_c = e.response) === null || _c === void 0 ? void 0 : _c.status) === 401) {
21722
21820
  workspaceSpinner.fail('Unauthorized. Please login using "embeddable login" command.');
21723
21821
  }
21724
21822
  else {
@@ -21741,7 +21839,7 @@ async function selectWorkspace(ora, ctx, token) {
21741
21839
  process.exit(1);
21742
21840
  }
21743
21841
  workspaceSpinner.info(`Found ${availableWorkspaces.length} workspace(s)`);
21744
- const isDev = (_a = ctx.dev) === null || _a === undefined ? undefined : _a.watch;
21842
+ const isDev = (_a = ctx.dev) === null || _a === void 0 ? void 0 : _a.watch;
21745
21843
  if (availableWorkspaces.length === 1) {
21746
21844
  selectedWorkspace = availableWorkspaces[0];
21747
21845
  }
@@ -21804,10 +21902,10 @@ var push = async () => {
21804
21902
  spinnerPushing.succeed(`Published to ${workspaceName} using ${workspacePreviewUrl}`);
21805
21903
  }
21806
21904
  catch (error) {
21807
- spinnerPushing === null || spinnerPushing === undefined ? undefined : spinnerPushing.fail("Publishing failed");
21905
+ spinnerPushing === null || spinnerPushing === void 0 ? void 0 : spinnerPushing.fail("Publishing failed");
21808
21906
  await logError({ command: "push", breadcrumbs, error });
21809
21907
  await reportErrorToRollbar(error);
21810
- console.log(((_a = error.response) === null || _a === undefined ? undefined : _a.data) || error);
21908
+ console.log(((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error);
21811
21909
  process.exit(1);
21812
21910
  }
21813
21911
  };
@@ -21862,10 +21960,10 @@ async function buildArchive(config) {
21862
21960
  const cubeFilesList = await findFiles(config.client.modelsSrc || config.client.srcDir, CUBE_FILES);
21863
21961
  const contextFilesList = await findFiles(config.client.presetsSrc || config.client.srcDir, PRESET_FILES);
21864
21962
  filesList.push(...cubeFilesList.map((entry) => [
21865
- path$1.basename(entry[1]),
21963
+ path.basename(entry[1]),
21866
21964
  entry[1],
21867
21965
  ]), ...contextFilesList.map((entry) => [
21868
- path$1.basename(entry[1]),
21966
+ path.basename(entry[1]),
21869
21967
  entry[1],
21870
21968
  ]));
21871
21969
  }
@@ -21878,7 +21976,7 @@ async function buildArchive(config) {
21878
21976
  }
21879
21977
  async function archive(args) {
21880
21978
  const { ctx, filesList, isDev } = args;
21881
- const output = fs$1.createWriteStream(ctx.client.archiveFile);
21979
+ const output = fsSync.createWriteStream(ctx.client.archiveFile);
21882
21980
  const archive = archiver.create("zip", {
21883
21981
  zlib: { level: 9 },
21884
21982
  });
@@ -21896,7 +21994,7 @@ async function archive(args) {
21896
21994
  }
21897
21995
  await archive.finalize();
21898
21996
  return new Promise((resolve, _reject) => {
21899
- output.on("close", resolve);
21997
+ output.on("close", () => resolve());
21900
21998
  });
21901
21999
  }
21902
22000
  async function createFormData(filePath, metadata) {
@@ -21956,7 +22054,7 @@ const buildWebComponent = async (config) => {
21956
22054
  };
21957
22055
  const addToGitingore = async () => {
21958
22056
  try {
21959
- const gitignorePath = path$1.resolve(process.cwd(), ".gitignore");
22057
+ const gitignorePath = path.resolve(process.cwd(), ".gitignore");
21960
22058
  const gitignoreContent = await fs.readFile(gitignorePath, "utf8");
21961
22059
  if (!gitignoreContent.includes(BUILD_DEV_DIR)) {
21962
22060
  await fs.appendFile(gitignorePath, `\n${BUILD_DEV_DIR}\n`);
@@ -21986,7 +22084,7 @@ var dev = async () => {
21986
22084
  const logger = createNodeLogger();
21987
22085
  const sys = createNodeSys({ process });
21988
22086
  const defaultConfig = await provideConfig();
21989
- const buildDir = path$1.resolve(defaultConfig.client.rootDir, BUILD_DEV_DIR);
22087
+ const buildDir = path.resolve(defaultConfig.client.rootDir, BUILD_DEV_DIR);
21990
22088
  const config = {
21991
22089
  ...defaultConfig,
21992
22090
  dev: {
@@ -21997,13 +22095,13 @@ var dev = async () => {
21997
22095
  client: {
21998
22096
  ...defaultConfig.client,
21999
22097
  buildDir,
22000
- componentDir: path$1.resolve(buildDir, "component"),
22001
- stencilBuild: path$1.resolve(buildDir, "dist", "embeddable-wrapper"),
22002
- tmpDir: path$1.resolve(defaultConfig.client.rootDir, ".embeddable-dev-tmp"),
22098
+ componentDir: path.resolve(buildDir, "component"),
22099
+ stencilBuild: path.resolve(buildDir, "dist", "embeddable-wrapper"),
22100
+ tmpDir: path.resolve(defaultConfig.client.rootDir, ".embeddable-dev-tmp"),
22003
22101
  },
22004
22102
  };
22005
22103
  breadcrumbs.push("prepare config");
22006
- await prepare(config);
22104
+ await prepare$1(config);
22007
22105
  const serve = serveStatic(config.client.buildDir);
22008
22106
  let workspacePreparation = ora("Preparing workspace...").start();
22009
22107
  breadcrumbs.push("get preview workspace");
@@ -22023,6 +22121,13 @@ var dev = async () => {
22023
22121
  }
22024
22122
  }
22025
22123
  workspacePreparation.succeed("Workspace is ready");
22124
+ const { themeWatcher, lifecycleWatcher } = await buildGlobalHooks(config);
22125
+ if (themeWatcher) {
22126
+ await globalHookWatcher(themeWatcher, config);
22127
+ }
22128
+ if (lifecycleWatcher) {
22129
+ await globalHookWatcher(lifecycleWatcher, config);
22130
+ }
22026
22131
  const server = http.createServer(async (request, res) => {
22027
22132
  var _a;
22028
22133
  res.setHeader("Access-Control-Allow-Origin", "*");
@@ -22080,6 +22185,12 @@ var dev = async () => {
22080
22185
  const customGlobalCssWatch = globalCssWatcher(config);
22081
22186
  watchers.push(dataModelAndSecurityContextWatch);
22082
22187
  watchers.push(customGlobalCssWatch);
22188
+ if (themeWatcher) {
22189
+ watchers.push(themeWatcher);
22190
+ }
22191
+ if (lifecycleWatcher) {
22192
+ watchers.push(lifecycleWatcher);
22193
+ }
22083
22194
  });
22084
22195
  }
22085
22196
  catch (error) {
@@ -22102,13 +22213,33 @@ const configureWatcher = async (watcher, ctx) => {
22102
22213
  changedFiles = [];
22103
22214
  }
22104
22215
  if (e.code === "ERROR") {
22105
- sendMessage("componentsBuildError", { error: (_a = e.error) === null || _a === undefined ? undefined : _a.message });
22216
+ sendMessage("componentsBuildError", { error: (_a = e.error) === null || _a === void 0 ? void 0 : _a.message });
22217
+ changedFiles = [];
22218
+ }
22219
+ });
22220
+ };
22221
+ const globalHookWatcher = async (watcher, ctx) => {
22222
+ watcher.on("change", (path) => {
22223
+ changedFiles.push(path);
22224
+ });
22225
+ watcher.on("event", async (e) => {
22226
+ var _a;
22227
+ if (e.code === "BUNDLE_START") {
22228
+ sendMessage("componentsBuildStart", { changedFiles });
22229
+ }
22230
+ if (e.code === "BUNDLE_END") {
22231
+ sendMessage("componentsBuildSuccess");
22232
+ changedFiles = [];
22233
+ }
22234
+ if (e.code === "ERROR") {
22235
+ sendMessage("componentsBuildError", { error: (_a = e.error) === null || _a === void 0 ? void 0 : _a.message });
22106
22236
  changedFiles = [];
22107
22237
  }
22108
22238
  });
22109
22239
  };
22110
22240
  const sendMessage = (type, meta = {}) => {
22111
- wss.clients.forEach((ws) => {
22241
+ var _a;
22242
+ (_a = wss === null || wss === void 0 ? void 0 : wss.clients) === null || _a === void 0 ? void 0 : _a.forEach((ws) => {
22112
22243
  ws.send(JSON.stringify({ type, ...meta }));
22113
22244
  });
22114
22245
  };
@@ -22165,11 +22296,11 @@ const sendDataModelsAndContextsChanges = async (ctx) => {
22165
22296
  const cubeFilesList = await findFiles(ctx.client.modelsSrc, CUBE_FILES);
22166
22297
  const contextFilesList = await findFiles(ctx.client.presetsSrc, PRESET_FILES);
22167
22298
  // Map the files to include their full filenames
22168
- const filesList = [...cubeFilesList, ...contextFilesList].map((entry) => [path$1.basename(entry[1]), entry[1]]);
22299
+ const filesList = [...cubeFilesList, ...contextFilesList].map((entry) => [path.basename(entry[1]), entry[1]]);
22169
22300
  // add manifest to the archive
22170
22301
  filesList.push([
22171
22302
  "embeddable-manifest.json",
22172
- path$1.resolve(ctx.client.buildDir, "embeddable-manifest.json"),
22303
+ path.resolve(ctx.client.buildDir, "embeddable-manifest.json"),
22173
22304
  ]);
22174
22305
  await archive({
22175
22306
  ctx,
@@ -22187,7 +22318,7 @@ const sendDataModelsAndContextsChanges = async (ctx) => {
22187
22318
  const onClose = async (server, sys, watchers, config) => {
22188
22319
  server.close();
22189
22320
  wss.close();
22190
- browserWindow === null || browserWindow === undefined ? undefined : browserWindow.unref();
22321
+ browserWindow === null || browserWindow === void 0 ? void 0 : browserWindow.unref();
22191
22322
  for (const watcher of watchers) {
22192
22323
  if (watcher.close) {
22193
22324
  await watcher.close();
@@ -22259,6 +22390,11 @@ const REGION_CONFIGS = {
22259
22390
  authClientId: "dygrSUmI6HmgY5ymVbEAoLDEBxIOyr1V",
22260
22391
  },
22261
22392
  };
22393
+ const ComponentLibraryConfigSchema = z.object({
22394
+ name: z.string(),
22395
+ include: z.array(z.string()).optional(),
22396
+ exclude: z.array(z.string()).optional(),
22397
+ });
22262
22398
  const embeddableConfigSchema = z
22263
22399
  .object({
22264
22400
  plugins: z.array(z.function()),
@@ -22279,6 +22415,11 @@ const embeddableConfigSchema = z
22279
22415
  presetsSrc: z.string().optional(),
22280
22416
  componentsSrc: z.string().optional(),
22281
22417
  globalCss: z.string().optional(),
22418
+ customizationFile: z.string().optional(),
22419
+ lifecycleHooksFile: z.string().optional(),
22420
+ componentLibraries: z
22421
+ .union([z.array(z.string()), z.array(ComponentLibraryConfigSchema)])
22422
+ .optional(),
22282
22423
  viteConfig: z
22283
22424
  .object({
22284
22425
  resolve: z
@@ -22302,25 +22443,25 @@ var defineConfig = (config) => {
22302
22443
  if (errors.length > 0) {
22303
22444
  throw new Error(`Invalid Embeddable Configuration: ${errors.join("\n")}}`);
22304
22445
  }
22305
- let { plugins, region = "legacy-US", pushModels = true, pushComponents = true, pushBaseUrl, audienceUrl, authDomain, authClientId, errorFallbackComponent, applicationEnvironment, rollbarAccessToken, previewBaseUrl, modelsSrc = "src", presetsSrc = "src", componentsSrc = "src", globalCss = "src/global.css", viteConfig = {}, rollupOptions = {}, } = config;
22446
+ let { plugins, region = "legacy-US", pushModels = true, pushComponents = true, pushBaseUrl, audienceUrl, authDomain, authClientId, errorFallbackComponent, applicationEnvironment, rollbarAccessToken, previewBaseUrl, modelsSrc = "src", presetsSrc = "src", componentsSrc = "src", globalCss = "src/global.css", viteConfig = {}, rollupOptions = {}, componentLibraries = [], customizationFile = "embeddable.theme.ts", lifecycleHooksFile = "lifecycle.config.ts", } = config;
22306
22447
  const regionConfig = REGION_CONFIGS[region];
22307
22448
  const __dirname = import.meta.dirname;
22308
- const coreRoot = path.resolve(__dirname, "..");
22449
+ const coreRoot = path$1.resolve(__dirname, "..");
22309
22450
  const clientRoot = process.cwd();
22310
- if (!path.isAbsolute(componentsSrc)) {
22311
- componentsSrc = path.resolve(clientRoot, componentsSrc);
22451
+ if (!path$1.isAbsolute(componentsSrc)) {
22452
+ componentsSrc = path$1.resolve(clientRoot, componentsSrc);
22312
22453
  if (!existsSync(componentsSrc)) {
22313
22454
  throw new Error(`componentsSrc directory ${componentsSrc} does not exist`);
22314
22455
  }
22315
22456
  }
22316
- if (modelsSrc && !path.isAbsolute(modelsSrc)) {
22317
- modelsSrc = path.resolve(clientRoot, modelsSrc);
22457
+ if (modelsSrc && !path$1.isAbsolute(modelsSrc)) {
22458
+ modelsSrc = path$1.resolve(clientRoot, modelsSrc);
22318
22459
  if (!existsSync(modelsSrc)) {
22319
22460
  throw new Error(`modelsSrc directory ${modelsSrc} does not exist`);
22320
22461
  }
22321
22462
  }
22322
- if (presetsSrc && !path.isAbsolute(presetsSrc)) {
22323
- presetsSrc = path.resolve(clientRoot, presetsSrc);
22463
+ if (presetsSrc && !path$1.isAbsolute(presetsSrc)) {
22464
+ presetsSrc = path$1.resolve(clientRoot, presetsSrc);
22324
22465
  if (!existsSync(presetsSrc)) {
22325
22466
  throw new Error(`presetsSrc directory ${presetsSrc} does not exist`);
22326
22467
  }
@@ -22328,26 +22469,29 @@ var defineConfig = (config) => {
22328
22469
  return {
22329
22470
  core: {
22330
22471
  rootDir: coreRoot,
22331
- templatesDir: path.resolve(coreRoot, "templates"),
22332
- configsDir: path.resolve(coreRoot, "configs"),
22472
+ templatesDir: path$1.resolve(coreRoot, "templates"),
22473
+ configsDir: path$1.resolve(coreRoot, "configs"),
22333
22474
  },
22334
22475
  client: {
22335
22476
  rootDir: clientRoot,
22336
- srcDir: path.resolve(clientRoot, componentsSrc),
22337
- modelsSrc: modelsSrc ? path.resolve(clientRoot, modelsSrc) : undefined,
22338
- presetsSrc: presetsSrc ? path.resolve(clientRoot, presetsSrc) : undefined,
22339
- buildDir: path.resolve(clientRoot, ".embeddable-build"),
22340
- tmpDir: path.resolve(clientRoot, ".embeddable-tmp"),
22341
- globalCss: path.resolve(clientRoot, globalCss),
22342
- componentDir: path.resolve(clientRoot, ".embeddable-build", "component"),
22343
- stencilBuild: path.resolve(clientRoot, ".embeddable-build", "dist", "embeddable-wrapper"),
22344
- archiveFile: path.resolve(clientRoot, "embeddable-build.zip"),
22477
+ srcDir: path$1.resolve(clientRoot, componentsSrc),
22478
+ modelsSrc: modelsSrc ? path$1.resolve(clientRoot, modelsSrc) : undefined,
22479
+ presetsSrc: presetsSrc ? path$1.resolve(clientRoot, presetsSrc) : undefined,
22480
+ buildDir: path$1.resolve(clientRoot, ".embeddable-build"),
22481
+ tmpDir: path$1.resolve(clientRoot, ".embeddable-tmp"),
22482
+ globalCss: path$1.resolve(clientRoot, globalCss),
22483
+ componentDir: path$1.resolve(clientRoot, ".embeddable-build", "component"),
22484
+ stencilBuild: path$1.resolve(clientRoot, ".embeddable-build", "dist", "embeddable-wrapper"),
22485
+ archiveFile: path$1.resolve(clientRoot, "embeddable-build.zip"),
22345
22486
  errorFallbackComponent: errorFallbackComponent
22346
- ? path.resolve(clientRoot, errorFallbackComponent)
22487
+ ? path$1.resolve(clientRoot, errorFallbackComponent)
22347
22488
  : undefined,
22348
22489
  bundleHash: undefined, // This will be set by the build process
22349
22490
  viteConfig,
22350
22491
  rollupOptions,
22492
+ componentLibraries,
22493
+ customizationFile: path$1.resolve(clientRoot, customizationFile),
22494
+ lifecycleHooksFile: path$1.resolve(clientRoot, lifecycleHooksFile),
22351
22495
  },
22352
22496
  outputOptions: {
22353
22497
  typesEntryPointFilename: "embeddable-types-entry-point.js",
@@ -22360,17 +22504,53 @@ var defineConfig = (config) => {
22360
22504
  },
22361
22505
  pushModels,
22362
22506
  pushComponents,
22363
- pushBaseUrl: pushBaseUrl !== null && pushBaseUrl !== undefined ? pushBaseUrl : regionConfig.pushBaseUrl,
22364
- audienceUrl: audienceUrl !== null && audienceUrl !== undefined ? audienceUrl : regionConfig.audienceUrl,
22365
- previewBaseUrl: previewBaseUrl !== null && previewBaseUrl !== undefined ? previewBaseUrl : regionConfig.previewBaseUrl,
22366
- authDomain: authDomain !== null && authDomain !== undefined ? authDomain : regionConfig.authDomain,
22367
- authClientId: authClientId !== null && authClientId !== undefined ? authClientId : regionConfig.authClientId,
22368
- applicationEnvironment: applicationEnvironment !== null && applicationEnvironment !== undefined ? applicationEnvironment : "production",
22369
- rollbarAccessToken: rollbarAccessToken !== null && rollbarAccessToken !== undefined ? rollbarAccessToken : "5c6028038d844bf1835a0f4db5f55d9e",
22507
+ pushBaseUrl: pushBaseUrl !== null && pushBaseUrl !== void 0 ? pushBaseUrl : regionConfig.pushBaseUrl,
22508
+ audienceUrl: audienceUrl !== null && audienceUrl !== void 0 ? audienceUrl : regionConfig.audienceUrl,
22509
+ previewBaseUrl: previewBaseUrl !== null && previewBaseUrl !== void 0 ? previewBaseUrl : regionConfig.previewBaseUrl,
22510
+ authDomain: authDomain !== null && authDomain !== void 0 ? authDomain : regionConfig.authDomain,
22511
+ authClientId: authClientId !== null && authClientId !== void 0 ? authClientId : regionConfig.authClientId,
22512
+ applicationEnvironment: applicationEnvironment !== null && applicationEnvironment !== void 0 ? applicationEnvironment : "production",
22513
+ rollbarAccessToken: rollbarAccessToken !== null && rollbarAccessToken !== void 0 ? rollbarAccessToken : "5c6028038d844bf1835a0f4db5f55d9e",
22370
22514
  plugins,
22371
22515
  };
22372
22516
  };
22373
22517
 
22518
+ var buildPackage = async () => {
22519
+ await initLogger("package");
22520
+ const breadcrumbs = [];
22521
+ try {
22522
+ const startTime = process.hrtime();
22523
+ await checkNodeVersion();
22524
+ breadcrumbs.push("checkNodeVersion");
22525
+ await removeBuildSuccessFlag();
22526
+ const config = await provideConfig();
22527
+ config.client.buildDir = path$1.resolve(config.client.rootDir, "dist");
22528
+ await prepare(config);
22529
+ await buildTypes(config);
22530
+ await buildGlobalHooks(config);
22531
+ for (const getPlugin of config.plugins) {
22532
+ const plugin = getPlugin();
22533
+ breadcrumbs.push(`${plugin.pluginName}: validate`);
22534
+ await plugin.validate(config);
22535
+ breadcrumbs.push(`${plugin.pluginName}: buildPackage`);
22536
+ await plugin.buildPackage(config);
22537
+ }
22538
+ // Calculating build time in seconds
22539
+ config.buildTime = process.hrtime(startTime);
22540
+ await storeBuildSuccessFlag();
22541
+ }
22542
+ catch (error) {
22543
+ await logError({ command: "package", breadcrumbs, error });
22544
+ console.log(error);
22545
+ process.exit(1);
22546
+ }
22547
+ };
22548
+ const prepare = async (config) => {
22549
+ if (fsSync.existsSync(config.client.buildDir))
22550
+ await fs.rm(config.client.buildDir, { recursive: true });
22551
+ await fs.mkdir(config.client.buildDir);
22552
+ };
22553
+
22374
22554
  var __accessCheck = (obj, member, msg) => {
22375
22555
  if (!member.has(obj))
22376
22556
  throw TypeError("Cannot " + msg);
@@ -22554,7 +22734,7 @@ var _Blob = class _Blob {
22554
22734
  __privateSet(this, _size, __privateGet(this, _size) + (ArrayBuffer.isView(part) ? part.byteLength : part.size));
22555
22735
  __privateGet(this, _parts).push(part);
22556
22736
  }
22557
- const type = options.type === undefined ? "" : String(options.type);
22737
+ const type = options.type === void 0 ? "" : String(options.type);
22558
22738
  __privateSet(this, _type, /^[\x20-\x7E]*$/.test(type) ? type : "");
22559
22739
  }
22560
22740
  static [Symbol.hasInstance](value) {
@@ -22660,7 +22840,7 @@ var File = class extends Blob {
22660
22840
  /**
22661
22841
  * Returns the name of the file referenced by the File object.
22662
22842
  */
22663
- __privateAdd(this, _name, undefined);
22843
+ __privateAdd(this, _name, void 0);
22664
22844
  /**
22665
22845
  * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
22666
22846
  */
@@ -22671,7 +22851,7 @@ var File = class extends Blob {
22671
22851
  );
22672
22852
  }
22673
22853
  __privateSet(this, _name, String(name));
22674
- const lastModified = options.lastModified === undefined ? Date.now() : Number(options.lastModified);
22854
+ const lastModified = options.lastModified === void 0 ? Date.now() : Number(options.lastModified);
22675
22855
  if (!Number.isNaN(lastModified)) {
22676
22856
  __privateSet(this, _lastModified, lastModified);
22677
22857
  }
@@ -22706,8 +22886,8 @@ _lastModified = new WeakMap();
22706
22886
  var _path, _start;
22707
22887
  var _FileFromPath = class _FileFromPath {
22708
22888
  constructor(input) {
22709
- __privateAdd(this, _path, undefined);
22710
- __privateAdd(this, _start, undefined);
22889
+ __privateAdd(this, _path, void 0);
22890
+ __privateAdd(this, _start, void 0);
22711
22891
  __privateSet(this, _path, input.path);
22712
22892
  __privateSet(this, _start, input.start || 0);
22713
22893
  this.name = basename(__privateGet(this, _path));
@@ -22747,7 +22927,7 @@ var FileFromPath = _FileFromPath;
22747
22927
  function createFileFromPath(path, { mtimeMs, size }, filenameOrOptions, options = {}) {
22748
22928
  let filename;
22749
22929
  if (isObject(filenameOrOptions)) {
22750
- [options, filename] = [filenameOrOptions, undefined];
22930
+ [options, filename] = [filenameOrOptions, void 0];
22751
22931
  } else {
22752
22932
  filename = filenameOrOptions;
22753
22933
  }
@@ -22771,5 +22951,5 @@ var fileFromPath$1 = /*#__PURE__*/Object.freeze({
22771
22951
  fileFromPath: fileFromPath
22772
22952
  });
22773
22953
 
22774
- export { build, defineConfig, dev, login, push };
22954
+ export { build, buildPackage, defineConfig, dev, login, push };
22775
22955
  //# sourceMappingURL=index.esm.js.map