creevey 0.10.0-beta.14 → 0.10.0-beta.16

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 (54) hide show
  1. package/dist/client/addon/components/Addon.js +17 -7
  2. package/dist/client/addon/components/Addon.js.map +1 -1
  3. package/dist/client/addon/components/Tools.js +17 -7
  4. package/dist/client/addon/components/Tools.js.map +1 -1
  5. package/dist/client/shared/components/ImagesView/BlendView.js +17 -7
  6. package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
  7. package/dist/client/shared/components/ImagesView/SideBySideView.js +17 -7
  8. package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
  9. package/dist/client/shared/components/ImagesView/SlideView.js +17 -7
  10. package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
  11. package/dist/client/shared/components/ImagesView/SwapView.js +17 -7
  12. package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
  13. package/dist/client/shared/components/PageHeader/PageHeader.js +17 -7
  14. package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
  15. package/dist/client/shared/components/ResultsPage.js +17 -7
  16. package/dist/client/shared/components/ResultsPage.js.map +1 -1
  17. package/dist/client/shared/helpers.d.ts +0 -2
  18. package/dist/client/shared/helpers.js +0 -17
  19. package/dist/client/shared/helpers.js.map +1 -1
  20. package/dist/client/web/CreeveyApp.js +19 -8
  21. package/dist/client/web/CreeveyApp.js.map +1 -1
  22. package/dist/client/web/CreeveyContext.js +17 -7
  23. package/dist/client/web/CreeveyContext.js.map +1 -1
  24. package/dist/client/web/CreeveyLoader.js +2 -2
  25. package/dist/client/web/CreeveyLoader.js.map +1 -1
  26. package/dist/client/web/CreeveyView/SideBar/Search.js +17 -7
  27. package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
  28. package/dist/client/web/CreeveyView/SideBar/SideBar.js +17 -7
  29. package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
  30. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +17 -7
  31. package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
  32. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +17 -7
  33. package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
  34. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +17 -7
  35. package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
  36. package/dist/client/web/CreeveyView/SideBar/TestLink.js +17 -7
  37. package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
  38. package/dist/client/web/KeyboardEventsContext.js +17 -7
  39. package/dist/client/web/KeyboardEventsContext.js.map +1 -1
  40. package/dist/client/web/assets/{index-BE9CL5_G.js → index-BZNmck5a.js} +95 -95
  41. package/dist/client/web/index.html +1 -1
  42. package/dist/client/web/index.js +17 -7
  43. package/dist/client/web/index.js.map +1 -1
  44. package/dist/client/web/themes.d.ts +2 -0
  45. package/dist/client/web/themes.js +22 -0
  46. package/dist/client/web/themes.js.map +1 -0
  47. package/dist/server/docker.js +10 -12
  48. package/dist/server/docker.js.map +1 -1
  49. package/package.json +45 -45
  50. package/src/client/shared/helpers.ts +0 -22
  51. package/src/client/web/CreeveyApp.tsx +1 -1
  52. package/src/client/web/CreeveyLoader.tsx +1 -1
  53. package/src/client/web/themes.ts +24 -0
  54. package/src/server/docker.ts +11 -14
@@ -20,7 +20,7 @@
20
20
  sans-serif;
21
21
  }
22
22
  </style>
23
- <script type="module" crossorigin src="./assets/index-BE9CL5_G.js"></script>
23
+ <script type="module" crossorigin src="./assets/index-BZNmck5a.js"></script>
24
24
  </head>
25
25
  <body>
26
26
  <div id="root"></div>
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  const react_1 = __importStar(require("react"));
27
37
  const client_1 = require("react-dom/client");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/web/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,6CAA8C;AAC9C,mDAA6C;AAE7C,uEAAuF;AACvF,6CAAqD;AACrD,qDAAoD;AACpD,yDAAmD;AAMnD,MAAM,CAAC,iCAAiC,GAAG,eAAI,CAAC;AAEhD,SAAS,eAAe;IACtB,OAAO,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,eAAe,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAA4B,CAAC;IACjC,IAAI,UAAwC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAA,0CAAoB,GAAE,CAAC;YAC1C,aAAa,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,mDAAmD;YACnD,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC;IAED,OAAO;QACL,OAAO;YACL,OAAO,CACL,8BAAC,0BAAU,IACT,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,IAAA,yBAAY,EAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GACxG,CACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAC;AAC1D,IAAI,CAAC,MAAM,CACT,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,8BAAC,gCAAa,OAAG;IACnC,8BAAC,eAAe,OAAG,CACV,CACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/web/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,6CAA8C;AAC9C,mDAA6C;AAE7C,uEAAuF;AACvF,6CAAqD;AACrD,qDAAoD;AACpD,yDAAmD;AAMnD,MAAM,CAAC,iCAAiC,GAAG,eAAI,CAAC;AAEhD,SAAS,eAAe;IACtB,OAAO,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,eAAe,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAA4B,CAAC;IACjC,IAAI,UAAwC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAA,0CAAoB,GAAE,CAAC;YAC1C,aAAa,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,mDAAmD;YACnD,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrF,CAAC;IAED,OAAO;QACL,OAAO;YACL,OAAO,CACL,8BAAC,0BAAU,IACT,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,IAAA,yBAAY,EAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GACxG,CACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAC;AAC1D,IAAI,CAAC,MAAM,CACT,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,8BAAC,gCAAa,OAAG;IACnC,8BAAC,eAAe,OAAG,CACV,CACZ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ThemeVars } from '@storybook/theming';
2
+ export declare function useTheme(): [ThemeVars['base'], (theme: ThemeVars['base']) => void];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTheme = useTheme;
4
+ const react_1 = require("react");
5
+ const theming_1 = require("@storybook/theming");
6
+ const types_js_1 = require("../../types.js");
7
+ const CREEVEY_THEME = 'Creevey_theme';
8
+ function isTheme(theme) {
9
+ return (0, types_js_1.isDefined)(theme) && Object.prototype.hasOwnProperty.call(theming_1.themes, theme);
10
+ }
11
+ function initialTheme() {
12
+ const theme = localStorage.getItem(CREEVEY_THEME);
13
+ return isTheme(theme) ? theme : 'light';
14
+ }
15
+ function useTheme() {
16
+ const [theme, setTheme] = (0, react_1.useState)(initialTheme());
17
+ (0, react_1.useEffect)(() => {
18
+ localStorage.setItem(CREEVEY_THEME, theme);
19
+ }, [theme]);
20
+ return [theme, setTheme];
21
+ }
22
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../src/client/web/themes.ts"],"names":[],"mappings":";;AAeA,4BAQC;AAvBD,iCAA4C;AAC5C,gDAAuD;AACvD,6CAA2C;AAE3C,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,SAAS,OAAO,CAAC,KAAqB;IACpC,OAAO,IAAA,oBAAS,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAM,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1C,CAAC;AAED,SAAgB,QAAQ;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAoB,YAAY,EAAE,CAAC,CAAC;IAEtE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
@@ -57,6 +57,15 @@ async function pullImages(images, { auth, platform } = {}) {
57
57
  async function buildImage(imageName, dockerfile) {
58
58
  const images = await docker.listImages({ filters: { label: [`creevey=${imageName}`] } });
59
59
  if (images.at(0)) {
60
+ await Promise.all((await docker.listContainers({ all: true, filters: { label: [`creevey=${imageName}`] } })).map(async (info) => {
61
+ const container = docker.getContainer(info.Id);
62
+ try {
63
+ await container.remove({ force: true });
64
+ }
65
+ catch {
66
+ /* noop */
67
+ }
68
+ }));
60
69
  (0, logger_js_1.logger)().info(`Image ${imageName} already exists`);
61
70
  return;
62
71
  }
@@ -93,16 +102,6 @@ async function buildImage(imageName, dockerfile) {
93
102
  });
94
103
  }
95
104
  async function runImage(image, args, options, debug) {
96
- await Promise.all((await docker.listContainers({ all: true, filters: { ancestor: [image] } })).map(async (info) => {
97
- const container = docker.getContainer(info.Id);
98
- try {
99
- await container.stop();
100
- }
101
- catch {
102
- /* noop */
103
- }
104
- await container.remove();
105
- }));
106
105
  const hub = docker.run(image, args, debug ? process.stdout : new DevNull(), options, (error) => {
107
106
  if (error)
108
107
  throw error;
@@ -112,8 +111,7 @@ async function runImage(image, args, options, debug) {
112
111
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
113
112
  (0, messages_js_1.subscribeOn)('shutdown', async () => {
114
113
  try {
115
- await container.stop();
116
- await container.remove();
114
+ await container.remove({ force: true });
117
115
  }
118
116
  catch {
119
117
  /* noop */
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":";;;;;AAeA,gCA0CC;AAED,gCAwDC;AAED,4BA6BC;AAlJD,4DAA6B;AAC7B,mCAAkC;AAClC,0DAAiD;AAEjD,+CAA4C;AAC5C,2CAAqC;AAErC,MAAM,MAAM,GAAG,IAAI,mBAAS,EAAE,CAAC;AAE/B,MAAM,OAAQ,SAAQ,iBAAQ;IAC5B,MAAM,CAAC,MAAe,EAAE,SAAyB,EAAE,QAAwC;QACzF,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF;AAEM,KAAK,UAAU,UAAU,CAC9B,MAAgB,EAChB,EAAE,IAAI,EAAE,QAAQ,KAA+C,EAAE;IAEjE,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACjC,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEvC,IAAA,kBAAM,GAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,kCAAkC;IAClC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAEvE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,SAAuB,EAAE,MAA8B,EAAE,EAAE;gBACnF,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAClC,MAAM,CAAC,SAAS,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE5D,SAAS,UAAU,CAAC,KAAmB;oBACrC,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,SAAS,UAAU,CAAC,KAAwD;oBAC1E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAE,OAAO;oBAE9C,OAAO,CAAC,IAAI,GAAG,GAAG,KAAK,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACnG,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,UAAkB;IACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzF,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,IAAA,kBAAM,GAAE,CAAC,IAAI,CAAC,SAAS,SAAS,iBAAiB,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,oBAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,KAAK,MAAM,CAAC,UAAU;QACpB,gFAAgF;QAChF,IAAI,EACJ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAChD,CAAC,UAAwB,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACnC,MAAM,CAAC,UAAU,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAE5D,SAAS,UAAU,CAAC,KAAmB;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;gBAChD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,SAAS,UAAU,CAAC,KAAwD;gBAC1E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAO;gBAE9C,OAAO,CAAC,IAAI,GAAG,GAAG,SAAS,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvG,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,QAAQ,CAC5B,KAAa,EACb,IAAc,EACd,OAAgC,EAChC,KAAc;IAEd,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7F,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAoB,EAAE,EAAE;YAC7C,kEAAkE;YAClE,IAAA,yBAAW,EAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBACjC,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CACN,OAAO,EACP,CAAC,SAAoB,EAAE,EAAE,CACvB,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "creevey",
3
3
  "description": "Cross-browser screenshot testing tool for Storybook with fancy UI Runner",
4
- "version": "0.10.0-beta.14",
4
+ "version": "0.10.0-beta.16",
5
5
  "type": "commonjs",
6
6
  "bin": "dist/cli.js",
7
7
  "main": "./dist/index.js",
@@ -87,30 +87,30 @@
87
87
  },
88
88
  "dependencies": {
89
89
  "@koa/cors": "^5.0.0",
90
- "@octokit/core": "^6.1.2",
91
- "@storybook/icons": "^1.2.12",
90
+ "@octokit/core": "^6.1.3",
91
+ "@storybook/icons": "^1.3.0",
92
92
  "@types/chai": "^4.3.20",
93
- "@types/dockerode": "^3.3.32",
93
+ "@types/dockerode": "^3.3.34",
94
94
  "@types/koa": "^2.15.0",
95
95
  "@types/koa-bodyparser": "^4.3.12",
96
96
  "@types/koa-mount": "^4.0.5",
97
97
  "@types/koa-static": "^4.0.4",
98
98
  "@types/koa__cors": "^5.0.0",
99
- "@types/lodash": "^4.17.13",
99
+ "@types/lodash": "^4.17.14",
100
100
  "@types/micromatch": "^4.0.9",
101
101
  "@types/minimist": "^1.2.5",
102
102
  "@types/pixelmatch": "^5.2.6",
103
103
  "@types/pngjs": "^6.0.5",
104
104
  "@types/qs": "^6.9.17",
105
- "@types/react": "^18.3.12",
106
- "@types/react-dom": "^18.3.1",
107
- "@types/selenium-webdriver": "^4.1.27",
105
+ "@types/react": "^18.3.18",
106
+ "@types/react-dom": "^18.3.5",
107
+ "@types/selenium-webdriver": "^4.1.28",
108
108
  "@types/shelljs": "^0.8.15",
109
109
  "@types/ws": "^8.5.13",
110
110
  "chai": "^4.5.0",
111
111
  "chalk": "^4.1.2",
112
- "chokidar": "^4.0.1",
113
- "dockerode": "^4.0.2",
112
+ "chokidar": "^4.0.3",
113
+ "dockerode": "^4.0.3",
114
114
  "find-cache-dir": "^5.0.0",
115
115
  "get-port": "^7.1.0",
116
116
  "koa": "^2.15.3",
@@ -131,26 +131,26 @@
131
131
  "shelljs": "^0.8.5",
132
132
  "tar-stream": "^3.1.7",
133
133
  "tsx": "^4.19.2",
134
- "uuid": "^11.0.3",
134
+ "uuid": "^11.0.5",
135
135
  "ws": "^8.18.0",
136
- "yocto-spinner": "^0.1.1"
136
+ "yocto-spinner": "^0.1.2"
137
137
  },
138
138
  "devDependencies": {
139
- "@chromatic-com/storybook": "^3.2.2",
140
- "@eslint/js": "^9.15.0",
141
- "@storybook/addon-essentials": "^8.4.5",
142
- "@storybook/addon-interactions": "^8.4.5",
143
- "@storybook/blocks": "^8.4.5",
144
- "@storybook/channels": "^8.4.5",
145
- "@storybook/components": "^8.4.5",
146
- "@storybook/csf": "^0.1.11",
147
- "@storybook/manager-api": "^8.4.5",
148
- "@storybook/preview-api": "^8.4.5",
149
- "@storybook/react": "^8.4.5",
150
- "@storybook/react-vite": "^8.4.5",
151
- "@storybook/test": "^8.4.5",
152
- "@storybook/theming": "^8.4.5",
153
- "@storybook/types": "^8.4.5",
139
+ "@chromatic-com/storybook": "^3.2.3",
140
+ "@eslint/js": "^9.18.0",
141
+ "@storybook/addon-essentials": "^8.4.7",
142
+ "@storybook/addon-interactions": "^8.4.7",
143
+ "@storybook/blocks": "^8.4.7",
144
+ "@storybook/channels": "^8.4.7",
145
+ "@storybook/components": "^8.4.7",
146
+ "@storybook/csf": "^0.1.13",
147
+ "@storybook/manager-api": "^8.4.7",
148
+ "@storybook/preview-api": "^8.4.7",
149
+ "@storybook/react": "^8.4.7",
150
+ "@storybook/react-vite": "^8.4.7",
151
+ "@storybook/test": "^8.4.7",
152
+ "@storybook/theming": "^8.4.7",
153
+ "@storybook/types": "^8.4.7",
154
154
  "@types/eslint": "^9.6.1",
155
155
  "@types/eslint__js": "^8.42.3",
156
156
  "@types/node": "^18.19.64",
@@ -158,36 +158,36 @@
158
158
  "@types/semver": "^7.5.8",
159
159
  "@types/tar-stream": "^3.1.3",
160
160
  "@types/tmp": "^0.2.6",
161
- "@vitejs/plugin-react-swc": "^3.7.1",
162
- "browserstack-local": "^1.5.5",
163
- "chromatic": "^11.18.1",
164
- "concurrently": "^9.1.0",
161
+ "@vitejs/plugin-react-swc": "^3.7.2",
162
+ "browserstack-local": "^1.5.6",
163
+ "chromatic": "^11.22.2",
164
+ "concurrently": "^9.1.2",
165
165
  "conventional-changelog-cli": "^5.0.0",
166
- "dotenv": "^16.4.5",
167
- "eslint": "^9.15.0",
166
+ "dotenv": "^16.4.7",
167
+ "eslint": "^9.18.0",
168
168
  "eslint-config-prettier": "^9.1.0",
169
169
  "eslint-plugin-prettier": "^5.2.1",
170
- "eslint-plugin-react": "^7.37.2",
171
- "eslint-plugin-react-hooks": "^5.0.0",
170
+ "eslint-plugin-react": "^7.37.4",
171
+ "eslint-plugin-react-hooks": "^5.1.0",
172
172
  "git-cz": "^4.9.0",
173
- "globals": "^15.12.0",
173
+ "globals": "^15.14.0",
174
174
  "husky": "^9.1.7",
175
175
  "immer": "^10.1.1",
176
- "lint-staged": "^15.2.10",
176
+ "lint-staged": "^15.3.0",
177
177
  "pinst": "^3.0.0",
178
- "playwright-core": "^1.49.0",
179
- "prettier": "^3.3.3",
178
+ "playwright-core": "^1.49.1",
179
+ "prettier": "^3.4.2",
180
180
  "react": "^18.3.1",
181
181
  "react-dom": "^18.3.1",
182
182
  "react-is": "^18.3.1",
183
- "selenium-webdriver": "^4.26.0",
184
- "storybook": "^8.4.5",
183
+ "selenium-webdriver": "^4.27.0",
184
+ "storybook": "^8.4.7",
185
185
  "tmp": "^0.2.3",
186
- "typescript": "^5.6.3",
187
- "typescript-eslint": "^8.15.0",
188
- "use-immer": "^0.10.0",
186
+ "typescript": "^5.7.3",
187
+ "typescript-eslint": "^8.19.1",
188
+ "use-immer": "^0.11.0",
189
189
  "vite": "^5.4.11",
190
- "vitest": "^2.1.5"
190
+ "vitest": "^2.1.8"
191
191
  },
192
192
  "config": {
193
193
  "commitizen": {
@@ -1,4 +1,3 @@
1
- import { themes, ThemeVars } from '@storybook/theming';
2
1
  import { parse, stringify } from 'qs';
3
2
  import { RefObject, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
4
3
  import { TestData, isTest, isDefined, TestStatus, CreeveySuite, CreeveyTest, CreeveyStatus } from '../../types.js';
@@ -393,27 +392,6 @@ export function useCalcScale(diffImageRef: RefObject<HTMLImageElement>, loaded:
393
392
  return scale;
394
393
  }
395
394
 
396
- const CREEVEY_THEME = 'Creevey_theme';
397
-
398
- function isTheme(theme?: string | null): theme is ThemeVars['base'] {
399
- return isDefined(theme) && Object.prototype.hasOwnProperty.call(themes, theme);
400
- }
401
-
402
- function initialTheme(): ThemeVars['base'] {
403
- const theme = localStorage.getItem(CREEVEY_THEME);
404
- return isTheme(theme) ? theme : 'light';
405
- }
406
-
407
- export function useTheme(): [ThemeVars['base'], (theme: ThemeVars['base']) => void] {
408
- const [theme, setTheme] = useState<ThemeVars['base']>(initialTheme());
409
-
410
- useEffect(() => {
411
- localStorage.setItem(CREEVEY_THEME, theme);
412
- }, [theme]);
413
-
414
- return [theme, setTheme];
415
- }
416
-
417
395
  export function setSearchParams(testPath: string[]): void {
418
396
  const pageUrl = `?${stringify({ testPath })}`;
419
397
  window.history.pushState({ testPath }, '', pageUrl);
@@ -11,7 +11,6 @@ import {
11
11
  getTestByPath,
12
12
  removeTests,
13
13
  getTestPath,
14
- useTheme,
15
14
  setSearchParams,
16
15
  getTestPathFromSearch,
17
16
  CreeveyViewFilter,
@@ -22,6 +21,7 @@ import { KeyboardEvents } from './KeyboardEventsContext.js';
22
21
  import { SideBar } from './CreeveyView/SideBar/index.js';
23
22
  import { ResultsPage } from '../shared/components/ResultsPage.js';
24
23
  import { Toggle } from './CreeveyView/SideBar/Toggle.js';
24
+ import { useTheme } from './themes.js';
25
25
 
26
26
  export interface CreeveyAppProps {
27
27
  api?: CreeveyClientApi;
@@ -1,6 +1,6 @@
1
1
  import React, { JSX } from 'react';
2
2
  import { styled, withTheme, Theme, keyframes, ensure, ThemeProvider, themes, Keyframes } from '@storybook/theming';
3
- import { useTheme } from '../shared/helpers.js';
3
+ import { useTheme } from './themes.js';
4
4
 
5
5
  const Container = withTheme(
6
6
  styled.div(({ theme }) => ({
@@ -0,0 +1,24 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { themes, ThemeVars } from '@storybook/theming';
3
+ import { isDefined } from '../../types.js';
4
+
5
+ const CREEVEY_THEME = 'Creevey_theme';
6
+
7
+ function isTheme(theme?: string | null): theme is ThemeVars['base'] {
8
+ return isDefined(theme) && Object.prototype.hasOwnProperty.call(themes, theme);
9
+ }
10
+
11
+ function initialTheme(): ThemeVars['base'] {
12
+ const theme = localStorage.getItem(CREEVEY_THEME);
13
+ return isTheme(theme) ? theme : 'light';
14
+ }
15
+
16
+ export function useTheme(): [ThemeVars['base'], (theme: ThemeVars['base']) => void] {
17
+ const [theme, setTheme] = useState<ThemeVars['base']>(initialTheme());
18
+
19
+ useEffect(() => {
20
+ localStorage.setItem(CREEVEY_THEME, theme);
21
+ }, [theme]);
22
+
23
+ return [theme, setTheme];
24
+ }
@@ -61,6 +61,16 @@ export async function buildImage(imageName: string, dockerfile: string): Promise
61
61
  const images = await docker.listImages({ filters: { label: [`creevey=${imageName}`] } });
62
62
 
63
63
  if (images.at(0)) {
64
+ await Promise.all(
65
+ (await docker.listContainers({ all: true, filters: { label: [`creevey=${imageName}`] } })).map(async (info) => {
66
+ const container = docker.getContainer(info.Id);
67
+ try {
68
+ await container.remove({ force: true });
69
+ } catch {
70
+ /* noop */
71
+ }
72
+ }),
73
+ );
64
74
  logger().info(`Image ${imageName} already exists`);
65
75
  return;
66
76
  }
@@ -111,18 +121,6 @@ export async function runImage(
111
121
  options: Record<string, unknown>,
112
122
  debug: boolean,
113
123
  ): Promise<string> {
114
- await Promise.all(
115
- (await docker.listContainers({ all: true, filters: { ancestor: [image] } })).map(async (info) => {
116
- const container = docker.getContainer(info.Id);
117
- try {
118
- await container.stop();
119
- } catch {
120
- /* noop */
121
- }
122
- await container.remove();
123
- }),
124
- );
125
-
126
124
  const hub = docker.run(image, args, debug ? process.stdout : new DevNull(), options, (error) => {
127
125
  if (error) throw error;
128
126
  });
@@ -132,8 +130,7 @@ export async function runImage(
132
130
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
133
131
  subscribeOn('shutdown', async () => {
134
132
  try {
135
- await container.stop();
136
- await container.remove();
133
+ await container.remove({ force: true });
137
134
  } catch {
138
135
  /* noop */
139
136
  }