sunpeak 0.20.60 → 0.20.62

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 (57) hide show
  1. package/bin/commands/inspect.mjs +2 -1
  2. package/bin/commands/new.mjs +11 -8
  3. package/bin/commands/test-init.mjs +1 -0
  4. package/bin/commands/test.mjs +8 -4
  5. package/bin/lib/resolve-bin.mjs +18 -0
  6. package/bin/lib/test/base-config.mjs +3 -1
  7. package/bin/lib/test/test-config.mjs +11 -2
  8. package/bin/sunpeak.js +4 -2
  9. package/dist/chatgpt/index.cjs +1 -1
  10. package/dist/chatgpt/index.js +1 -1
  11. package/dist/claude/index.cjs +1 -1
  12. package/dist/claude/index.js +1 -1
  13. package/dist/embed.css +1 -1
  14. package/dist/index.cjs +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/inspector/index.cjs +1 -1
  17. package/dist/inspector/index.js +1 -1
  18. package/dist/{inspector-WIO0nm2Q.cjs → inspector-Cl5w_7yQ.cjs} +7 -4
  19. package/dist/inspector-Cl5w_7yQ.cjs.map +1 -0
  20. package/dist/{inspector-CFSIZYOm.js → inspector-DPJeSQAd.js} +7 -4
  21. package/dist/inspector-DPJeSQAd.js.map +1 -0
  22. package/dist/protocol-DVkrOIAq.cjs.map +1 -1
  23. package/dist/protocol-fGgeFIiL.js.map +1 -1
  24. package/dist/style.css +1 -1
  25. package/package.json +16 -15
  26. package/template/dist/albums/albums.html +4 -4
  27. package/template/dist/albums/albums.json +1 -1
  28. package/template/dist/carousel/carousel.html +7 -7
  29. package/template/dist/carousel/carousel.json +1 -1
  30. package/template/dist/map/map.html +7 -7
  31. package/template/dist/map/map.json +1 -1
  32. package/template/dist/review/review.html +4 -4
  33. package/template/dist/review/review.json +1 -1
  34. package/template/node_modules/.bin/playwright +2 -2
  35. package/template/node_modules/.bin/vite +2 -2
  36. package/template/node_modules/.bin/vitest +2 -2
  37. package/template/node_modules/.vite/deps/_metadata.json +4 -4
  38. package/template/node_modules/.vite-mcp/deps/_metadata.json +21 -21
  39. package/template/node_modules/.vite-mcp/deps/embla-carousel-react.js +2 -1
  40. package/template/node_modules/.vite-mcp/deps/embla-carousel-react.js.map +1 -1
  41. package/template/node_modules/.vite-mcp/deps/external-D8EJN_Cc.js.map +1 -1
  42. package/template/node_modules/.vite-mcp/deps/mapbox-gl.js +114 -87
  43. package/template/node_modules/.vite-mcp/deps/mapbox-gl.js.map +1 -1
  44. package/template/node_modules/.vite-mcp/deps/tailwind-merge.js.map +1 -1
  45. package/template/node_modules/.vite-mcp/deps/vitest.js +40 -24
  46. package/template/node_modules/.vite-mcp/deps/vitest.js.map +1 -1
  47. package/template/package.json +6 -5
  48. package/template/tests/e2e/carousel.spec.ts +9 -9
  49. package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-chatgpt-darwin.png +0 -0
  50. package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-claude-darwin.png +0 -0
  51. package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-chatgpt-darwin.png +0 -0
  52. package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-claude-darwin.png +0 -0
  53. package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-chatgpt-darwin.png +0 -0
  54. package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-claude-darwin.png +0 -0
  55. package/template/vitest.config.ts +2 -0
  56. package/dist/inspector-CFSIZYOm.js.map +0 -1
  57. package/dist/inspector-WIO0nm2Q.cjs.map +0 -1
@@ -3781,7 +3781,8 @@ var TestFixtures = class TestFixtures {
3781
3781
  extend(runner, userFixtures) {
3782
3782
  const { suite } = getCurrentSuite();
3783
3783
  const isTopLevel = !suite || suite.file === suite;
3784
- return new TestFixtures(this.parseUserFixtures(runner, userFixtures, isTopLevel));
3784
+ const registrations = this.parseUserFixtures(runner, userFixtures, isTopLevel);
3785
+ return new TestFixtures(registrations);
3785
3786
  }
3786
3787
  get(suite) {
3787
3788
  let currentSuite = suite;
@@ -5520,7 +5521,7 @@ function manageArtifactAttachment(attachment) {
5520
5521
  if (attachment.body != null) attachment.bodyEncoding ??= "base64";
5521
5522
  }
5522
5523
  //#endregion
5523
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
5524
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
5524
5525
  var NAME_WORKER_STATE = "__vitest_worker__";
5525
5526
  function getWorkerState() {
5526
5527
  const workerState = globalThis[NAME_WORKER_STATE];
@@ -5560,7 +5561,7 @@ async function waitForImportsToResolve() {
5560
5561
  await waitForImportsToResolve();
5561
5562
  }
5562
5563
  //#endregion
5563
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js
5564
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js
5564
5565
  var benchFns = /* @__PURE__ */ new WeakMap();
5565
5566
  var benchOptsMap = /* @__PURE__ */ new WeakMap();
5566
5567
  function getBenchOptions(key) {
@@ -9797,8 +9798,10 @@ var JestChaiExpect = (chai, utils) => {
9797
9798
  if (promise === "rejects") utils.flag(this, "object", () => {
9798
9799
  throw object;
9799
9800
  });
9800
- else if (promise === "resolves" && typeof object !== "function") if (!isNot) throw new AssertionError(utils.flag(this, "message") || "expected promise to throw an error, but it didn't", { showDiff: false }, utils.flag(this, "ssfi"));
9801
- else return;
9801
+ else if (promise === "resolves" && typeof object !== "function") if (!isNot) {
9802
+ const message = utils.flag(this, "message") || "expected promise to throw an error, but it didn't";
9803
+ throw new AssertionError(message, { showDiff: false }, utils.flag(this, "ssfi"));
9804
+ } else return;
9802
9805
  _super.apply(this, args);
9803
9806
  };
9804
9807
  });
@@ -9857,7 +9860,8 @@ var JestChaiExpect = (chai, utils) => {
9857
9860
  actualSubset,
9858
9861
  false
9859
9862
  ]);
9860
- throw new AssertionError(stripped === 0 ? msg : `${msg}\n(${stripped} matching ${stripped === 1 ? "property" : "properties"} omitted from actual)`, {
9863
+ const message = stripped === 0 ? msg : `${msg}\n(${stripped} matching ${stripped === 1 ? "property" : "properties"} omitted from actual)`;
9864
+ throw new AssertionError(message, {
9861
9865
  showDiff: true,
9862
9866
  expected,
9863
9867
  actual: actualSubset
@@ -10090,8 +10094,10 @@ var JestChaiExpect = (chai, utils) => {
10090
10094
  const isNot = utils.flag(this, "negate");
10091
10095
  let thrown = null;
10092
10096
  if (promise === "rejects") thrown = obj;
10093
- else if (promise === "resolves" && typeof obj !== "function") if (!isNot) throw new AssertionError(utils.flag(this, "message") || "expected promise to throw an error, but it didn't", { showDiff: false }, utils.flag(this, "ssfi"));
10094
- else return;
10097
+ else if (promise === "resolves" && typeof obj !== "function") if (!isNot) {
10098
+ const message = utils.flag(this, "message") || "expected promise to throw an error, but it didn't";
10099
+ throw new AssertionError(message, { showDiff: false }, utils.flag(this, "ssfi"));
10100
+ } else return;
10095
10101
  else {
10096
10102
  let isThrow = false;
10097
10103
  try {
@@ -10100,7 +10106,10 @@ var JestChaiExpect = (chai, utils) => {
10100
10106
  isThrow = true;
10101
10107
  thrown = err;
10102
10108
  }
10103
- if (!isThrow && !isNot) throw new AssertionError(utils.flag(this, "message") || "expected function to throw an error, but it didn't", { showDiff: false }, utils.flag(this, "ssfi"));
10109
+ if (!isThrow && !isNot) {
10110
+ const message = utils.flag(this, "message") || "expected function to throw an error, but it didn't";
10111
+ throw new AssertionError(message, { showDiff: false }, utils.flag(this, "ssfi"));
10112
+ }
10104
10113
  }
10105
10114
  if (typeof expected === "function") {
10106
10115
  const name = expected.name || expected.prototype.constructor.name;
@@ -10170,7 +10179,8 @@ var JestChaiExpect = (chai, utils) => {
10170
10179
  `expected "${spyName}" to not ${action} with: #{exp}`,
10171
10180
  value
10172
10181
  ]);
10173
- throw new AssertionError(formatReturns(spy, action === "return" ? spy.mock.results : spy.mock.settledResults, msg, value));
10182
+ const results = action === "return" ? spy.mock.results : spy.mock.settledResults;
10183
+ throw new AssertionError(formatReturns(spy, results, msg, value));
10174
10184
  }
10175
10185
  });
10176
10186
  });
@@ -10236,7 +10246,7 @@ var JestChaiExpect = (chai, utils) => {
10236
10246
  if (typeof result !== "function") return result instanceof chai.Assertion ? proxy : result;
10237
10247
  return (...args) => {
10238
10248
  utils.flag(this, "_name", key);
10239
- return recordAsyncExpect(test, Promise.resolve(obj).then((value) => {
10249
+ const promise = Promise.resolve(obj).then((value) => {
10240
10250
  utils.flag(this, "object", value);
10241
10251
  return result.call(this, ...args);
10242
10252
  }, (err) => {
@@ -10246,7 +10256,8 @@ var JestChaiExpect = (chai, utils) => {
10246
10256
  }).catch((err) => {
10247
10257
  if (isError(err) && error.stack) err.stack = error.stack.replace(error.message, err.message);
10248
10258
  throw err;
10249
- }), createAssertionMessage(utils, this, !!args.length), error, utils.flag(this, "soft"));
10259
+ });
10260
+ return recordAsyncExpect(test, promise, createAssertionMessage(utils, this, !!args.length), error, utils.flag(this, "soft"));
10250
10261
  };
10251
10262
  } });
10252
10263
  return proxy;
@@ -10265,7 +10276,7 @@ var JestChaiExpect = (chai, utils) => {
10265
10276
  if (typeof result !== "function") return result instanceof chai.Assertion ? proxy : result;
10266
10277
  return (...args) => {
10267
10278
  utils.flag(this, "_name", key);
10268
- return recordAsyncExpect(test, Promise.resolve(wrapper).then((value) => {
10279
+ const promise = Promise.resolve(wrapper).then((value) => {
10269
10280
  throw new AssertionError(`promise resolved "${utils.inspect(value)}" instead of rejecting`, {
10270
10281
  showDiff: true,
10271
10282
  expected: /* @__PURE__ */ new Error("rejected promise"),
@@ -10277,7 +10288,8 @@ var JestChaiExpect = (chai, utils) => {
10277
10288
  }).catch((err) => {
10278
10289
  if (isError(err) && error.stack) err.stack = error.stack.replace(error.message, err.message);
10279
10290
  throw err;
10280
- }), createAssertionMessage(utils, this, !!args.length), error, utils.flag(this, "soft"));
10291
+ });
10292
+ return recordAsyncExpect(test, promise, createAssertionMessage(utils, this, !!args.length), error, utils.flag(this, "soft"));
10281
10293
  };
10282
10294
  } });
10283
10295
  return proxy;
@@ -10444,10 +10456,10 @@ function offsetToLineNumber(source, offset) {
10444
10456
  return line + 1;
10445
10457
  }
10446
10458
  //#endregion
10447
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js
10459
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js
10448
10460
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
10449
10461
  //#endregion
10450
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js
10462
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js
10451
10463
  var RealDate = Date;
10452
10464
  var now = null;
10453
10465
  var MockDate = class MockDate extends RealDate {
@@ -10887,7 +10899,8 @@ var SnapshotState = class SnapshotState {
10887
10899
  }
10888
10900
  static async create(testFilePath, options) {
10889
10901
  const snapshotPath = await options.snapshotEnvironment.resolvePath(testFilePath);
10890
- return new SnapshotState(testFilePath, snapshotPath, await options.snapshotEnvironment.readSnapshotFile(snapshotPath), options);
10902
+ const content = await options.snapshotEnvironment.readSnapshotFile(snapshotPath);
10903
+ return new SnapshotState(testFilePath, snapshotPath, content, options);
10891
10904
  }
10892
10905
  get snapshotUpdateState() {
10893
10906
  return this._updateSnapshot;
@@ -11414,7 +11427,7 @@ function raceWith(promise, other) {
11414
11427
  }))]);
11415
11428
  }
11416
11429
  //#endregion
11417
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js
11430
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js
11418
11431
  var fakeTimersSrc = {};
11419
11432
  var global$1;
11420
11433
  var hasRequiredGlobal;
@@ -12932,7 +12945,8 @@ To automatically clean-up native timers, use \`shouldClearNativeTimers\`.`);
12932
12945
  clock.next();
12933
12946
  checkIsNearInfiniteLimit(clock, i);
12934
12947
  }
12935
- throw getInfiniteLoopError(clock, firstTimer(clock));
12948
+ const excessJob = firstTimer(clock);
12949
+ throw getInfiniteLoopError(clock, excessJob);
12936
12950
  };
12937
12951
  clock.runToFrame = function runToFrame() {
12938
12952
  return clock.tick(getTimeToNextFrame());
@@ -12966,7 +12980,8 @@ To automatically clean-up native timers, use \`shouldClearNativeTimers\`.`);
12966
12980
  checkIsNearInfiniteLimit(clock, i);
12967
12981
  return;
12968
12982
  }
12969
- reject(getInfiniteLoopError(clock, firstTimer(clock)));
12983
+ const excessJob = firstTimer(clock);
12984
+ reject(getInfiniteLoopError(clock, excessJob));
12970
12985
  } catch (e) {
12971
12986
  reject(e);
12972
12987
  }
@@ -13037,7 +13052,8 @@ To automatically clean-up native timers, use \`shouldClearNativeTimers\`.`);
13037
13052
  return clock;
13038
13053
  }
13039
13054
  function createIntervalTick(clock, delta) {
13040
- clock.attachedInterval = originalSetInterval(doIntervalTick.bind(null, clock, delta), delta);
13055
+ const intervalTick = doIntervalTick.bind(null, clock, delta);
13056
+ clock.attachedInterval = originalSetInterval(intervalTick, delta);
13041
13057
  }
13042
13058
  /**
13043
13059
  * @param {Config=} [config] Optional config
@@ -14434,7 +14450,7 @@ function clearModuleMocks(config) {
14434
14450
  if (unstubGlobals) vi.unstubAllGlobals();
14435
14451
  }
14436
14452
  //#endregion
14437
- //#region ../../../node_modules/.pnpm/vite@8.1.0_@types+node@26.0.1_esbuild@0.28.1_jiti@2.7.0_tsx@4.22.4/node_modules/vite/dist/node/module-runner.js
14453
+ //#region ../../../node_modules/.pnpm/vite@8.1.3_@types+node@26.1.0_esbuild@0.28.1_jiti@2.7.0_tsx@4.23.0/node_modules/vite/dist/node/module-runner.js
14438
14454
  var SOURCEMAPPING_URL = "sourceMa";
14439
14455
  SOURCEMAPPING_URL += "ppingURL";
14440
14456
  var isWindows = typeof process < "u" && process.platform === "win32";
@@ -14632,7 +14648,7 @@ new Proxy({}, { get(_, p) {
14632
14648
  throw Error(`[module runner] Dynamic access of "import.meta.env" is not supported. Please, use "import.meta.env.${String(p)}" instead.`);
14633
14649
  } });
14634
14650
  //#endregion
14635
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js
14651
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js
14636
14652
  var VitestEvaluatedModules = class extends EvaluatedModules {
14637
14653
  getModuleSourceMapById(id) {
14638
14654
  const map = super.getModuleSourceMapById(id);
@@ -14665,7 +14681,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports) => {
14665
14681
  Object.defineProperty(exports, "__esModule", { value: true });
14666
14682
  }));
14667
14683
  //#endregion
14668
- //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.0.1_happy-dom@20.10.6_jsdom@29.0.1_b9ec83684871743a2b299f32b7839c26/node_modules/vitest/dist/chunks/index.DdgEv5B1.js
14684
+ //#region ../../../node_modules/.pnpm/vitest@4.1.9_@opentelemetry+api@1.9.1_@types+node@26.1.0_happy-dom@20.10.6_jsdom@29.0.1_416f22442aeea6baa33376bf9746bc4d/node_modules/vitest/dist/chunks/index.DdgEv5B1.js
14669
14685
  var import_dist = (/* @__PURE__ */ __commonJSMin(((exports) => {
14670
14686
  var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
14671
14687
  if (k2 === void 0) k2 = k;