@arcgis/lumina-compiler 5.0.0-next.62 → 5.0.0-next.64

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.
Files changed (2) hide show
  1. package/dist/index.js +54 -47
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { externalizeDependencies as as, path as u, toSystemPathSeparators as de, retrievePackageJson as R, fetchPackageLocation as Ai, asyncRetrievePackageJson as Li, existsAsync as H, findPath as cs, toPosixPathSeparators as De, isPosix as Ni, getCwd as Fi } from "@arcgis/components-build-utils";
1
+ import { externalizeDependencies as as, path as u, toSystemPathSeparators as de, retrievePackageJson as R, fetchPackageLocation as Ai, asyncRetrievePackageJson as Li, existsAsync as U, findPath as cs, toPosixPathSeparators as De, isPosix as Ni, getCwd as Fi } from "@arcgis/components-build-utils";
2
2
  import ls from "vite-plugin-dts";
3
3
  import o from "typescript";
4
4
  import { f as E, l as T } from "./logger-hJvg0JOj.js";
@@ -743,7 +743,7 @@ const $r = "Fragment", nt = "DynamicHtmlTag", st = "DynamicSvgTag", Be = Symbol(
743
743
  meta: /* @__PURE__ */ new Set(["charset"]),
744
744
  math: /* @__PURE__ */ new Set(["dir", "displaystyle", "scriptlevel"]),
745
745
  menu: /* @__PURE__ */ new Set(["label", "type"])
746
- }, U = {
746
+ }, z = {
747
747
  common: {
748
748
  reflected: {
749
749
  hidden: "hidden",
@@ -1556,8 +1556,8 @@ const $r = "Fragment", nt = "DynamicHtmlTag", st = "DynamicSvgTag", Be = Symbol(
1556
1556
  }
1557
1557
  }
1558
1558
  };
1559
- Qi(U.common);
1560
- Object.values(U.perElement).forEach(Qi);
1559
+ Qi(z.common);
1560
+ Object.values(z.perElement).forEach(Qi);
1561
1561
  function Qi(e) {
1562
1562
  e?.reflected !== void 0 && (e.reflected = Object.assign(/* @__PURE__ */ Object.create(null), e.reflected)), e?.stringifiedReflected !== void 0 && (e.stringifiedReflected = Object.assign(
1563
1563
  /* @__PURE__ */ Object.create(null),
@@ -2945,7 +2945,7 @@ const qo = /* @__PURE__ */ new Set([
2945
2945
  let ze, bt, le;
2946
2946
  async function Sn(e, t) {
2947
2947
  const i = await Ai(e, t), n = await Li(i), s = "exports" in n, r = Yo.bind(void 0, s), a = "@stencil/core" in (n.dependencies ?? {}) || "@stencil/core" in (n.devDependencies ?? {}), c = u.join(i, "dist/esm/loader.js");
2948
- if (a ? await H(c) : !1) {
2948
+ if (a ? await U(c) : !1) {
2949
2949
  const g = await B(c, "utf8"), y = Vo(g, "bootstrapLazy("), h = g.indexOf(", options", y), v = g.slice(y, h), b = v.startsWith('JSON.parse("') ? v.slice(12, -2).replaceAll('\\"', '"') : v;
2950
2950
  try {
2951
2951
  const w = JSON.parse(b), I = Qo(w, { packageName: e, getImportPath: r });
@@ -2973,7 +2973,7 @@ Error: ${String(w)}`);
2973
2973
  return { type: "unknown", packageName: e, components: h, packageLocation: i, packageJson: n };
2974
2974
  }
2975
2975
  const f = u.join(i, "dist/components");
2976
- if (await H(f)) {
2976
+ if (await U(f)) {
2977
2977
  const g = await Zo(f, {
2978
2978
  packageName: e,
2979
2979
  getImportPath: r
@@ -3261,15 +3261,15 @@ function oa(e, t, i) {
3261
3261
  if (r !== void 0)
3262
3262
  return { name: r, type: "reflected" };
3263
3263
  }
3264
- const n = at(U.common, t);
3264
+ const n = at(z.common, t);
3265
3265
  if (n !== void 0)
3266
3266
  return n;
3267
3267
  if (typeof e == "string") {
3268
- const s = at(U.perElement[e], t);
3268
+ const s = at(z.perElement[e], t);
3269
3269
  if (s !== void 0)
3270
3270
  return s;
3271
3271
  } else {
3272
- const s = Object.values(U.perElement).map(
3272
+ const s = Object.values(z.perElement).map(
3273
3273
  (a) => at(a, t)
3274
3274
  ), r = ve(s, (a) => a?.type === "stringifiedNonReflected" ? a : void 0) ?? ve(s, (a) => a?.type === "stringifiedReflected" ? a : void 0);
3275
3275
  if (r !== void 0)
@@ -3389,7 +3389,7 @@ function da(e, t, i) {
3389
3389
  return ma.has(e) ? e : e.startsWith("on") && t !== void 0 && o.isJsxExpression(t) && t.expression !== void 0 ? "event" : Gi.has(e) || e.includes("-") ? "attribute" : !kt(i) && (Xi.has(e) || (i === yt ? !1 : i === Be ? (
3390
3390
  // When tag name is dynamic, we can't help but check if the prop name matches an "always attribute" in any html element
3391
3391
  Object.values(ht).some((r) => r.has(e))
3392
- ) : ht[i]?.has(e) === !0)) ? Qt.has(e) ? "booleanAttribute" : "attribute" : i === "svg" || i === "math" || i === yt || i !== Be && (xt.has(i) || It.has(i)) ? e in U.common.reflected || e in U.common.stringifiedReflected || e in U.common.stringifiedNonReflected ? "property" : Qt.has(e) ? "booleanAttribute" : "attribute" : "property";
3392
+ ) : ht[i]?.has(e) === !0)) ? Qt.has(e) ? "booleanAttribute" : "attribute" : i === "svg" || i === "math" || i === yt || i !== Be && (xt.has(i) || It.has(i)) ? e in z.common.reflected || e in z.common.stringifiedReflected || e in z.common.stringifiedNonReflected ? "property" : Qt.has(e) ? "booleanAttribute" : "attribute" : "property";
3393
3393
  }
3394
3394
  const pa = ["class", "style", "ref", "directives", "key", "deferLoad"], ma = new Set(pa), ua = (e) => typeof e != "string" || e.trim().length > 0;
3395
3395
  function Qe({ key: e, parts: t, litTag: i }, n) {
@@ -3743,13 +3743,13 @@ Found ${C.getText(e.sourceFile)}`
3743
3743
  const N = ra[D](e, q?.initializer ?? k, L, c);
3744
3744
  if (N.length === 0)
3745
3745
  return [];
3746
- const _ = e.compiler.shouldMinifyJsx ? [" "] : ya(Tn(S, e));
3747
- return D === "key" ? (m = typeof N[0] == "object" && !xn(S, e) ? N[0] : void 0, _.some(ua) ? _ : []) : D === "directives" || D === "ref" || L === "deferLoad" ? (y ||= D === "deferLoad", g.push(
3748
- ..._,
3746
+ const W = e.compiler.shouldMinifyJsx ? [" "] : ya(Tn(S, e));
3747
+ return D === "key" ? (m = typeof N[0] == "object" && !xn(S, e) ? N[0] : void 0, W.some(ua) ? W : []) : D === "directives" || D === "ref" || L === "deferLoad" ? (y ||= D === "deferLoad", g.push(
3748
+ ...W,
3749
3749
  ...N.flatMap(
3750
3750
  (O, J) => typeof O == "string" || J === 0 || typeof N[J - 1] == "string" ? O : [" ", O]
3751
3751
  )
3752
- ), []) : [..._, ...N];
3752
+ ), []) : [...W, ...N];
3753
3753
  });
3754
3754
  if (f !== void 0 && f.size > 0 && e.compiler.logLintError(
3755
3755
  "mustIncludeAllRequiredProperties",
@@ -4581,7 +4581,7 @@ const fi = (e) => ({
4581
4581
  });
4582
4582
  async function ac(e, t, i) {
4583
4583
  const n = u.resolve(e.dir.root, t);
4584
- e.viteConfig.build.emptyOutDir !== !1 && await H(n) && await xs(n, { recursive: !0, force: !0 }), await ee(n, { recursive: !0 }), await Is(e.dir.distCdn, u.join(n, "build"), { recursive: !0 });
4584
+ e.viteConfig.build.emptyOutDir !== !1 && await U(n) && await xs(n, { recursive: !0, force: !0 }), await ee(n, { recursive: !0 }), await Is(e.dir.distCdn, u.join(n, "build"), { recursive: !0 });
4585
4585
  const s = [
4586
4586
  "index.html",
4587
4587
  ...await Ls("**/*.html", {
@@ -4632,7 +4632,7 @@ const Jn = /* @__PURE__ */ new Set([
4632
4632
  "collection",
4633
4633
  "extras",
4634
4634
  "support"
4635
- ]), z = "@arcgis/lumina:buildCdn", xe = "cdn", Kn = "index", ne = "main";
4635
+ ]), _ = "@arcgis/lumina:buildCdn", xe = "cdn", Kn = "index", ne = "main";
4636
4636
  function cc(e) {
4637
4637
  const { skip: t = !1, namespace: i, esbuildOptions: n = {}, entrypointTransformer: s } = e.options.build?.cdn ?? {}, r = e.options.build?.webApp?.destination, a = i !== void 0;
4638
4638
  if (a) {
@@ -4655,10 +4655,17 @@ function cc(e) {
4655
4655
  }
4656
4656
  ]), !t)
4657
4657
  return {
4658
- name: z,
4658
+ name: _,
4659
4659
  async writeBundle() {
4660
4660
  if (e.isInStorybook)
4661
4661
  return;
4662
+ if (e.privateApiJson.modules.length === 0) {
4663
+ T.warn(
4664
+ _,
4665
+ "Skipping CDN build as no custom elements were found in this package. Double check that your component files follow the required naming convention: https://qawebgis.esri.com/references/lumina/component."
4666
+ );
4667
+ return;
4668
+ }
4662
4669
  const d = Pe && R().name !== "@arcgis/embeddable-components", l = Date.now(), p = Array.isArray(n.entryPoints) ? n.entryPoints.map((g) => typeof g == "string" ? { in: g, out: "" } : g) : typeof n.entryPoints == "object" ? Object.entries(n.entryPoints).map(([g, y]) => ({ in: y, out: g })) : [], f = await lc(
4663
4670
  e,
4664
4671
  c,
@@ -4675,7 +4682,7 @@ function cc(e) {
4675
4682
  d
4676
4683
  );
4677
4684
  const m = Date.now();
4678
- T.info(z, `CDN was built in ${m - l}ms`), r && await ac(e, r, `${a ? `${c}.esm` : c}.js`);
4685
+ T.info(_, `CDN was built in ${m - l}ms`), r && await ac(e, r, `${a ? `${c}.esm` : c}.js`);
4679
4686
  }
4680
4687
  };
4681
4688
  }
@@ -4684,14 +4691,14 @@ async function lc(e, t, i, n, s, r) {
4684
4691
  if (i.minify && r)
4685
4692
  throw Error(
4686
4693
  E(
4687
- z,
4694
+ _,
4688
4695
  "Unminified CDN build is not yet supported - open a feature request with Lumina maintainers if it is needed"
4689
4696
  )
4690
4697
  );
4691
4698
  if (i.sourcemap && r)
4692
4699
  throw Error(
4693
4700
  E(
4694
- z,
4701
+ _,
4695
4702
  "Source maps in the CDN build are not yet supported - open a feature request with Lumina maintainers if it is needed"
4696
4703
  )
4697
4704
  );
@@ -4828,11 +4835,11 @@ function mc(e, t) {
4828
4835
  const s = [];
4829
4836
  for (const r of t) {
4830
4837
  if (r.in.includes("*")) {
4831
- T.warn(z, `$arcgis.import does not support wildcard imports, so ${r.in} will be ignored.`);
4838
+ T.warn(_, `$arcgis.import does not support wildcard imports, so ${r.in} will be ignored.`);
4832
4839
  continue;
4833
4840
  }
4834
4841
  if (r.out.startsWith(".") || r.out.startsWith("/"))
4835
- throw Error(E(z, `CDN entrypoint path must not start with '.' or '/'. Found: ${r.out}`));
4842
+ throw Error(E(_, `CDN entrypoint path must not start with '.' or '/'. Found: ${r.out}`));
4836
4843
  s.push(r.out);
4837
4844
  }
4838
4845
  i += `"${s.join(",")}".split(",").map(e=>i[p+e+j]=i[p+e]=import.meta.resolve("./"+e+j));`;
@@ -4867,12 +4874,12 @@ function Bn(e, t) {
4867
4874
  let c = 0;
4868
4875
  const d = e.code.matchAll(uc);
4869
4876
  for (const S of d) {
4870
- const [k, L, q, D, N] = S, _ = N.startsWith(Ve);
4877
+ const [k, L, q, D, N] = S, W = N.startsWith(Ve);
4871
4878
  if (c !== 0 && c !== S.index) {
4872
4879
  const O = e.code.slice(c, S.index);
4873
4880
  s.push(O), a.push([c, O.length, 0, ""]);
4874
4881
  }
4875
- if (c = S.index + k.length, _)
4882
+ if (c = S.index + k.length, W)
4876
4883
  a.push([S.index, k.length, 0, ""]), n.push(`"${Wn(N.slice(Ve.length))}"`), i.push(L?.replaceAll(" as ", ":") ?? q ?? D ?? "");
4877
4884
  else {
4878
4885
  const O = _n(N, t), J = O?.isAsync === !0;
@@ -4892,7 +4899,7 @@ function Bn(e, t) {
4892
4899
  if (J)
4893
4900
  throw Error(
4894
4901
  E(
4895
- z,
4902
+ _,
4896
4903
  `Expected local import specifiers to use only named or side-effect import syntax. Found ${k} in a chunk:
4897
4904
  ${O.code}`
4898
4905
  )
@@ -4911,12 +4918,12 @@ ${O.code}`
4911
4918
  let f = e.code.slice(0, c);
4912
4919
  for (let S = a.length - 1; S >= 0; S--) {
4913
4920
  const [k, L, q, D] = a[S];
4914
- let N = L, _ = "";
4921
+ let N = L, W = "";
4915
4922
  if (L === 0) {
4916
4923
  const J = p();
4917
- n.push(J), _ = ` ${J} from`, D !== "" ? (N = q + 4, i.push(D)) : i.push("");
4924
+ n.push(J), W = ` ${J} from`, D !== "" ? (N = q + 4, i.push(D)) : i.push("");
4918
4925
  }
4919
- f = f.slice(0, k) + _ + f.slice(k + N);
4926
+ f = f.slice(0, k) + W + f.slice(k + N);
4920
4927
  }
4921
4928
  const [m, g] = gi(e), y = i.findLastIndex((S) => S.length > 0), h = i.slice(0, y + 1).join(","), b = `export default $arcgis.t(${i.length === 0 ? "_" : `([${h}])`}=>{`, w = n.join(","), I = `${g}},${w})`;
4922
4929
  let A = e.code.slice(c, m);
@@ -4947,9 +4954,9 @@ function _n(e, t) {
4947
4954
  return;
4948
4955
  const i = e.slice(2), n = t.get(i);
4949
4956
  if (n === void 0)
4950
- throw Error(E(z, `Failed to find the ${e} module`));
4957
+ throw Error(E(_, `Failed to find the ${e} module`));
4951
4958
  if (n.isAsync === void 0 && Bn(n, t), n.isAsync === void 0)
4952
- throw Error(E(z, `Failed to infer whether the ${e} module has top-level await`));
4959
+ throw Error(E(_, `Failed to infer whether the ${e} module has top-level await`));
4953
4960
  return n;
4954
4961
  }
4955
4962
  function yi(e, t) {
@@ -5050,9 +5057,9 @@ async function Un(e) {
5050
5057
  }
5051
5058
  async function hi(e, t) {
5052
5059
  const i = u.join(e, t, `${t}.css`), n = u.join(e, t, "assets"), s = u.join(e, t, `${t}.esm.js`), [r, a, c] = await Promise.all([
5053
- H(i),
5054
- H(n),
5055
- H(s)
5060
+ U(i),
5061
+ U(n),
5062
+ U(s)
5056
5063
  ]);
5057
5064
  return r || a || c ? {
5058
5065
  hasCss: r,
@@ -5459,10 +5466,10 @@ function Dc(e) {
5459
5466
  };
5460
5467
  }
5461
5468
  async function Si(e) {
5462
- const t = H("assets"), i = await e.componentFilesPromise, n = await Promise.all(
5469
+ const t = U("assets"), i = await e.componentFilesPromise, n = await Promise.all(
5463
5470
  i.map(async (s) => {
5464
5471
  const r = u.dirname(s), a = u.join(r, "assets");
5465
- return await H(a) ? Yn(a, r) : void 0;
5472
+ return await U(a) ? Yn(a, r) : void 0;
5466
5473
  })
5467
5474
  );
5468
5475
  return await t && n.push(es), n.filter(j);
@@ -5776,7 +5783,7 @@ const ye = {
5776
5783
  stencilLikeDocsJson: "docs/docs.json"
5777
5784
  };
5778
5785
  async function ts(e, t, i, n, s = R()) {
5779
- const r = Uc(e, i, s), a = u.join(t, "lumina.ts"), d = await H(a) ? await B(a, "utf8") : "";
5786
+ const r = Uc(e, i, s), a = u.join(t, "lumina.ts"), d = await U(a) ? await B(a, "utf8") : "";
5780
5787
  if (d.trim().replaceAll(`\r
5781
5788
  `, `
5782
5789
  `) === r.trim())
@@ -5966,11 +5973,11 @@ var sl = Object.defineProperty, x = (e, t, i, n) => {
5966
5973
  (a = e[r]) && (s = a(t, i, s) || s);
5967
5974
  return s && sl(t, i, s), s;
5968
5975
  };
5969
- const W = "@arcgis/lumina:context";
5976
+ const H = "@arcgis/lumina:context";
5970
5977
  class $ {
5971
5978
  constructor(t) {
5972
5979
  this.typeScriptProgram = void 0, this.typeScriptTypeChecker = void 0, this.typeScriptWatchProgram = void 0, this._typeScriptSourceFiles = /* @__PURE__ */ new Map(), this._typeScriptReload = void 0, this._plugin = {
5973
- name: W,
5980
+ name: H,
5974
5981
  // Make sure these globals are available to all plugins as soon as possible
5975
5982
  enforce: "pre",
5976
5983
  apply: (l, p) => (this._inferBuildSetup(p, l.define), !0),
@@ -5993,15 +6000,15 @@ class $ {
5993
6000
  }, T.initialize(l.logger, f), l.root !== Fi())
5994
6001
  throw Error(
5995
6002
  E(
5996
- W,
6003
+ H,
5997
6004
  "Vite's config.root is not equal process.cwd(). This is not officially supported by Lumina and may lead to unexpected behavior. If you need this to be supported, comment on https://devtopia.esri.com/WebGIS/arcgis-web-components/issues/2126 or contact Lumina maintainers."
5998
6005
  )
5999
6006
  );
6000
6007
  y === f ? T.warn(
6001
- W,
6008
+ H,
6002
6009
  "Vite output directory is set to the root directory. This can produce unexpected behavior. Please set the output directory to a subdirectory of the root directory (i.e dist/)"
6003
6010
  ) : h.startsWith("..") && T.warn(
6004
- W,
6011
+ H,
6005
6012
  "Vite output directory is outside the root directory. This is not officially supported by Lumina and may lead to unexpected behavior. Contact Lumina maintainers if you need this to be supported."
6006
6013
  ), this.isInStorybook = l.resolve.conditions.includes("storybook"), this.isFullApiExtraction = this.viteCommand === "build" || this.isInStorybook, this.hmrEnabled = this.viteCommand === "serve" && !this.isInTest && !!(l.server?.hmr ?? !0), this.isInBuildWatch = l.command === "build" && l.build.watch != null;
6007
6014
  const I = this.isInTest && l.test?.browser?.enabled === !0 && l.resolve.conditions.includes("node"), A = this.isInTest && l.test?.browser?.enabled !== !0 && l.resolve.conditions.includes("node");
@@ -6029,15 +6036,15 @@ class $ {
6029
6036
  }, this._localDefinedComponents = void 0, this._cssImports = /* @__PURE__ */ new Map(), this._cssDocs = void 0, this.isInCi = !!process.env.CI, this._declarationTextTransformers = [], this._serverConfigured = !1, this.assetsToProvide = [], this._globalCssString = void 0, this._loadersCache = void 0, this._serveOnlyDependencies = void 0, this._customElementDependencies = /* @__PURE__ */ Object.create(null), this._htmlElementReferencesReplacer = void 0, this._silencedRules = void 0, this._updateLuminaTsPromise = void 0, this._didCallOptions = !1, this._originalRollupInputOptions = void 0, this.options = t;
6030
6037
  const i = 3;
6031
6038
  (!G.node.startsWith("^") || G.node[i] !== ".") && T.error(
6032
- W,
6039
+ H,
6033
6040
  `Unsupported Node.js version syntax used in monorepo's package.json. Expected "^NN.NN", got "${G.node}". Update @arcgis/lumina-compiler to support this syntax.`
6034
6041
  );
6035
6042
  const n = Number.parseInt(G.node.slice(1, i)), s = Number.parseInt(G.node.slice(i + 1)), r = Number.parseInt(process.version.slice(1, i)), a = Number.parseInt(process.version.slice(i + 1));
6036
6043
  r < n || r === n && a < s ? T.warn(
6037
- W,
6044
+ H,
6038
6045
  `Lumina requires Node.js version ${G.node}. Current version is ${process.version}. Some features may not work as expected.`
6039
6046
  ) : r > n && T.info(
6040
- W,
6047
+ H,
6041
6048
  `Lumina was tested with Node.js version ${G.node}. Current version is ${process.version}. Some features may not work as expected.`
6042
6049
  );
6043
6050
  const c = t.documentation ?? {};
@@ -6076,7 +6083,7 @@ class $ {
6076
6083
  if (this.viteCommand === "build" || this.isInStorybook)
6077
6084
  throw Error(
6078
6085
  E(
6079
- W,
6086
+ H,
6080
6087
  t,
6081
6088
  `Unable to find the TypeScript source file${this.isInBuildWatch ? ". build --watch mode does not yet support creating new component files on the fly - please restart the dev server. Tracking issue: https://devtopia.esri.com/WebGIS/arcgis-web-components/issues/8024" : ""}`
6082
6089
  )
@@ -6129,7 +6136,7 @@ class $ {
6129
6136
  else
6130
6137
  throw Error(
6131
6138
  E(
6132
- W,
6139
+ H,
6133
6140
  "It is too late to call provideAssets() as Vite already wrote the bundle to disk. Please call provideAssets() before Vite's writeBundle()"
6134
6141
  )
6135
6142
  );
@@ -7021,7 +7028,7 @@ function Td(e = {}) {
7021
7028
  const Ed = {
7022
7029
  initializeComponentDependencies: vn,
7023
7030
  updateLuminaTs: ts,
7024
- propertyToAttributeMappings: U,
7031
+ propertyToAttributeMappings: z,
7025
7032
  findDeclaredComponent: _i,
7026
7033
  nativeEvents: Zi,
7027
7034
  svgElements: xt,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/lumina-compiler",
3
- "version": "5.0.0-next.62",
3
+ "version": "5.0.0-next.64",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -18,9 +18,9 @@
18
18
  ],
19
19
  "license": "SEE LICENSE IN LICENSE.md",
20
20
  "dependencies": {
21
- "@arcgis/api-extractor": "5.0.0-next.62",
22
- "@arcgis/components-build-utils": "5.0.0-next.62",
23
- "@arcgis/toolkit": "~5.0.0-next.62",
21
+ "@arcgis/api-extractor": "5.0.0-next.64",
22
+ "@arcgis/components-build-utils": "5.0.0-next.64",
23
+ "@arcgis/toolkit": "~5.0.0-next.64",
24
24
  "chalk": "^5.4.1",
25
25
  "esbuild": "^0.25.12",
26
26
  "glob": "^11.0.3",
@@ -30,7 +30,7 @@
30
30
  "vite-plugin-dts": "^4.5.4"
31
31
  },
32
32
  "peerDependencies": {
33
- "@arcgis/lumina": "~5.0.0-next.62",
33
+ "@arcgis/lumina": "~5.0.0-next.64",
34
34
  "lit": "^3.3.0",
35
35
  "typescript": "~5.9.3",
36
36
  "vite": "^7.2.2",