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.
- package/dist/client/addon/components/Addon.js +17 -7
- package/dist/client/addon/components/Addon.js.map +1 -1
- package/dist/client/addon/components/Tools.js +17 -7
- package/dist/client/addon/components/Tools.js.map +1 -1
- package/dist/client/shared/components/ImagesView/BlendView.js +17 -7
- package/dist/client/shared/components/ImagesView/BlendView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SideBySideView.js +17 -7
- package/dist/client/shared/components/ImagesView/SideBySideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SlideView.js +17 -7
- package/dist/client/shared/components/ImagesView/SlideView.js.map +1 -1
- package/dist/client/shared/components/ImagesView/SwapView.js +17 -7
- package/dist/client/shared/components/ImagesView/SwapView.js.map +1 -1
- package/dist/client/shared/components/PageHeader/PageHeader.js +17 -7
- package/dist/client/shared/components/PageHeader/PageHeader.js.map +1 -1
- package/dist/client/shared/components/ResultsPage.js +17 -7
- package/dist/client/shared/components/ResultsPage.js.map +1 -1
- package/dist/client/shared/helpers.d.ts +0 -2
- package/dist/client/shared/helpers.js +0 -17
- package/dist/client/shared/helpers.js.map +1 -1
- package/dist/client/web/CreeveyApp.js +19 -8
- package/dist/client/web/CreeveyApp.js.map +1 -1
- package/dist/client/web/CreeveyContext.js +17 -7
- package/dist/client/web/CreeveyContext.js.map +1 -1
- package/dist/client/web/CreeveyLoader.js +2 -2
- package/dist/client/web/CreeveyLoader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/Search.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/Search.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBar.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/SideBar.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/SideBarFooter.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/SideBarHeader.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/SuiteLink.js.map +1 -1
- package/dist/client/web/CreeveyView/SideBar/TestLink.js +17 -7
- package/dist/client/web/CreeveyView/SideBar/TestLink.js.map +1 -1
- package/dist/client/web/KeyboardEventsContext.js +17 -7
- package/dist/client/web/KeyboardEventsContext.js.map +1 -1
- package/dist/client/web/assets/{index-BE9CL5_G.js → index-BZNmck5a.js} +95 -95
- package/dist/client/web/index.html +1 -1
- package/dist/client/web/index.js +17 -7
- package/dist/client/web/index.js.map +1 -1
- package/dist/client/web/themes.d.ts +2 -0
- package/dist/client/web/themes.js +22 -0
- package/dist/client/web/themes.js.map +1 -0
- package/dist/server/docker.js +10 -12
- package/dist/server/docker.js.map +1 -1
- package/package.json +45 -45
- package/src/client/shared/helpers.ts +0 -22
- package/src/client/web/CreeveyApp.tsx +1 -1
- package/src/client/web/CreeveyLoader.tsx +1 -1
- package/src/client/web/themes.ts +24 -0
- package/src/server/docker.ts +11 -14
package/dist/client/web/index.js
CHANGED
@@ -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 (
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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":"
|
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,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"}
|
package/dist/server/docker.js
CHANGED
@@ -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.
|
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":";;;;;AAeA,gCA0CC;AAED,
|
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.
|
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.
|
91
|
-
"@storybook/icons": "^1.
|
90
|
+
"@octokit/core": "^6.1.3",
|
91
|
+
"@storybook/icons": "^1.3.0",
|
92
92
|
"@types/chai": "^4.3.20",
|
93
|
-
"@types/dockerode": "^3.3.
|
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.
|
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.
|
106
|
-
"@types/react-dom": "^18.3.
|
107
|
-
"@types/selenium-webdriver": "^4.1.
|
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.
|
113
|
-
"dockerode": "^4.0.
|
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.
|
134
|
+
"uuid": "^11.0.5",
|
135
135
|
"ws": "^8.18.0",
|
136
|
-
"yocto-spinner": "^0.1.
|
136
|
+
"yocto-spinner": "^0.1.2"
|
137
137
|
},
|
138
138
|
"devDependencies": {
|
139
|
-
"@chromatic-com/storybook": "^3.2.
|
140
|
-
"@eslint/js": "^9.
|
141
|
-
"@storybook/addon-essentials": "^8.4.
|
142
|
-
"@storybook/addon-interactions": "^8.4.
|
143
|
-
"@storybook/blocks": "^8.4.
|
144
|
-
"@storybook/channels": "^8.4.
|
145
|
-
"@storybook/components": "^8.4.
|
146
|
-
"@storybook/csf": "^0.1.
|
147
|
-
"@storybook/manager-api": "^8.4.
|
148
|
-
"@storybook/preview-api": "^8.4.
|
149
|
-
"@storybook/react": "^8.4.
|
150
|
-
"@storybook/react-vite": "^8.4.
|
151
|
-
"@storybook/test": "^8.4.
|
152
|
-
"@storybook/theming": "^8.4.
|
153
|
-
"@storybook/types": "^8.4.
|
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.
|
162
|
-
"browserstack-local": "^1.5.
|
163
|
-
"chromatic": "^11.
|
164
|
-
"concurrently": "^9.1.
|
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.
|
167
|
-
"eslint": "^9.
|
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.
|
171
|
-
"eslint-plugin-react-hooks": "^5.
|
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.
|
173
|
+
"globals": "^15.14.0",
|
174
174
|
"husky": "^9.1.7",
|
175
175
|
"immer": "^10.1.1",
|
176
|
-
"lint-staged": "^15.
|
176
|
+
"lint-staged": "^15.3.0",
|
177
177
|
"pinst": "^3.0.0",
|
178
|
-
"playwright-core": "^1.49.
|
179
|
-
"prettier": "^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.
|
184
|
-
"storybook": "^8.4.
|
183
|
+
"selenium-webdriver": "^4.27.0",
|
184
|
+
"storybook": "^8.4.7",
|
185
185
|
"tmp": "^0.2.3",
|
186
|
-
"typescript": "^5.
|
187
|
-
"typescript-eslint": "^8.
|
188
|
-
"use-immer": "^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.
|
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 '
|
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
|
+
}
|
package/src/server/docker.ts
CHANGED
@@ -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.
|
136
|
-
await container.remove();
|
133
|
+
await container.remove({ force: true });
|
137
134
|
} catch {
|
138
135
|
/* noop */
|
139
136
|
}
|