@clary-so/measure 0.4.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.
Files changed (99) hide show
  1. package/.postcssrc +5 -0
  2. package/CHANGELOG.md +81 -0
  3. package/LICENSE +21 -0
  4. package/dist/__tests__/measure.test.d.ts +1 -0
  5. package/dist/__tests__/measure.test.js +152 -0
  6. package/dist/__tests__/measure.test.js.map +1 -0
  7. package/dist/__tests__/server/ServerApp.test.d.ts +1 -0
  8. package/dist/__tests__/server/ServerApp.test.js +49 -0
  9. package/dist/__tests__/server/ServerApp.test.js.map +1 -0
  10. package/dist/__tests__/utils/removeCLIColors.d.ts +1 -0
  11. package/dist/__tests__/utils/removeCLIColors.js +10 -0
  12. package/dist/__tests__/utils/removeCLIColors.js.map +1 -0
  13. package/dist/__tests__/webapp/socket.test.d.ts +1 -0
  14. package/dist/__tests__/webapp/socket.test.js +73 -0
  15. package/dist/__tests__/webapp/socket.test.js.map +1 -0
  16. package/dist/common/useLogSocketEvents.d.ts +3 -0
  17. package/dist/common/useLogSocketEvents.js +18 -0
  18. package/dist/common/useLogSocketEvents.js.map +1 -0
  19. package/dist/index.87c99d25.js +88 -0
  20. package/dist/index.87c99d25.js.map +1 -0
  21. package/dist/index.html +1 -0
  22. package/dist/server/ServerApp.d.ts +10 -0
  23. package/dist/server/ServerApp.js +131 -0
  24. package/dist/server/ServerApp.js.map +1 -0
  25. package/dist/server/ServerSocketConnectionApp.d.ts +6 -0
  26. package/dist/server/ServerSocketConnectionApp.js +105 -0
  27. package/dist/server/ServerSocketConnectionApp.js.map +1 -0
  28. package/dist/server/bin.d.ts +2 -0
  29. package/dist/server/bin.js +63 -0
  30. package/dist/server/bin.js.map +1 -0
  31. package/dist/server/components/HostAndPortInfo.d.ts +4 -0
  32. package/dist/server/components/HostAndPortInfo.js +14 -0
  33. package/dist/server/components/HostAndPortInfo.js.map +1 -0
  34. package/dist/server/constants.d.ts +2 -0
  35. package/dist/server/constants.js +12 -0
  36. package/dist/server/constants.js.map +1 -0
  37. package/dist/server/socket/socketInterface.d.ts +37 -0
  38. package/dist/server/socket/socketInterface.js +17 -0
  39. package/dist/server/socket/socketInterface.js.map +1 -0
  40. package/dist/server/socket/socketState.d.ts +5 -0
  41. package/dist/server/socket/socketState.js +47 -0
  42. package/dist/server/socket/socketState.js.map +1 -0
  43. package/dist/server/useBundleIdControls.d.ts +2 -0
  44. package/dist/server/useBundleIdControls.js +33 -0
  45. package/dist/server/useBundleIdControls.js.map +1 -0
  46. package/dist/webapp/MeasureWebApp.d.ts +2 -0
  47. package/dist/webapp/MeasureWebApp.js +29 -0
  48. package/dist/webapp/MeasureWebApp.js.map +1 -0
  49. package/dist/webapp/components/AppBar.d.ts +4 -0
  50. package/dist/webapp/components/AppBar.js +19 -0
  51. package/dist/webapp/components/AppBar.js.map +1 -0
  52. package/dist/webapp/components/BundleIdSelector.d.ts +6 -0
  53. package/dist/webapp/components/BundleIdSelector.js +20 -0
  54. package/dist/webapp/components/BundleIdSelector.js.map +1 -0
  55. package/dist/webapp/components/SocketState.d.ts +2 -0
  56. package/dist/webapp/components/SocketState.js +95 -0
  57. package/dist/webapp/components/SocketState.js.map +1 -0
  58. package/dist/webapp/components/StartButton.d.ts +6 -0
  59. package/dist/webapp/components/StartButton.js +12 -0
  60. package/dist/webapp/components/StartButton.js.map +1 -0
  61. package/dist/webapp/components/TextField.d.ts +5 -0
  62. package/dist/webapp/components/TextField.js +81 -0
  63. package/dist/webapp/components/TextField.js.map +1 -0
  64. package/dist/webapp/socket.d.ts +3 -0
  65. package/dist/webapp/socket.js +8 -0
  66. package/dist/webapp/socket.js.map +1 -0
  67. package/dist/webapp/useMeasures.d.ts +10 -0
  68. package/dist/webapp/useMeasures.js +38 -0
  69. package/dist/webapp/useMeasures.js.map +1 -0
  70. package/package.json +48 -0
  71. package/src/__tests__/__snapshots__/measure.test.tsx.snap +4389 -0
  72. package/src/__tests__/measure.test.tsx +141 -0
  73. package/src/__tests__/server/ServerApp.test.ts +49 -0
  74. package/src/__tests__/utils/removeCLIColors.ts +5 -0
  75. package/src/__tests__/webapp/socket.test.ts +37 -0
  76. package/src/common/types/index.d.ts +3 -0
  77. package/src/common/useLogSocketEvents.ts +17 -0
  78. package/src/server/ServerApp.tsx +103 -0
  79. package/src/server/ServerSocketConnectionApp.tsx +82 -0
  80. package/src/server/bin.tsx +23 -0
  81. package/src/server/components/HostAndPortInfo.tsx +11 -0
  82. package/src/server/constants.ts +8 -0
  83. package/src/server/socket/socketInterface.ts +53 -0
  84. package/src/server/socket/socketState.ts +66 -0
  85. package/src/server/useBundleIdControls.ts +38 -0
  86. package/src/webapp/MeasureWebApp.tsx +43 -0
  87. package/src/webapp/components/AppBar.tsx +19 -0
  88. package/src/webapp/components/BundleIdSelector.tsx +26 -0
  89. package/src/webapp/components/SocketState.tsx +79 -0
  90. package/src/webapp/components/StartButton.tsx +22 -0
  91. package/src/webapp/components/TextField.tsx +54 -0
  92. package/src/webapp/globals.d.ts +9 -0
  93. package/src/webapp/index.html +30 -0
  94. package/src/webapp/index.js +9 -0
  95. package/src/webapp/socket.ts +12 -0
  96. package/src/webapp/useMeasures.ts +36 -0
  97. package/tailwind.config.js +7 -0
  98. package/tsconfig.json +8 -0
  99. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AppBar = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const AppBar_1 = __importDefault(require("@mui/material/AppBar"));
9
+ const AppBar = ({ children }) => {
10
+ return (react_1.default.createElement(AppBar_1.default, { position: "relative", className: "bg-dark-charcoal" },
11
+ react_1.default.createElement("div", { style: {
12
+ flexDirection: "row",
13
+ display: "flex",
14
+ alignItems: "center",
15
+ padding: 10,
16
+ } }, children)));
17
+ };
18
+ exports.AppBar = AppBar;
19
+ //# sourceMappingURL=AppBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppBar.js","sourceRoot":"","sources":["../../../src/webapp/components/AppBar.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,kEAAkD;AAE3C,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IACpE,OAAO,CACL,8BAAC,gBAAc,IAAC,QAAQ,EAAC,UAAU,EAAC,SAAS,EAAC,kBAAkB;QAC9D,uCACE,KAAK,EAAE;gBACL,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;gBACpB,OAAO,EAAE,EAAE;aACZ,IAEA,QAAQ,CACL,CACS,CAClB,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,MAAM,UAejB"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export declare const BundleIdSelector: ({ bundleId, onChange, autodetect, }: {
3
+ bundleId: string | null;
4
+ onChange: (bundleId: string) => void;
5
+ autodetect: () => void;
6
+ }) => React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BundleIdSelector = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const TextField_1 = require("./TextField");
9
+ const web_reporter_ui_1 = require("@clary-so/web-reporter-ui");
10
+ const BundleIdSelector = ({ bundleId, onChange, autodetect, }) => {
11
+ const handleChange = (event) => {
12
+ onChange(event.target.value);
13
+ };
14
+ return (react_1.default.createElement(react_1.default.Fragment, null,
15
+ react_1.default.createElement(web_reporter_ui_1.Button, { onClick: autodetect }, "Auto-Detect"),
16
+ react_1.default.createElement("div", { style: { paddingRight: 5, paddingLeft: 5 } },
17
+ react_1.default.createElement(TextField_1.TextField, { onChange: handleChange, value: bundleId || "" }))));
18
+ };
19
+ exports.BundleIdSelector = BundleIdSelector;
20
+ //# sourceMappingURL=BundleIdSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleIdSelector.js","sourceRoot":"","sources":["../../../src/webapp/components/BundleIdSelector.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,2CAAwC;AACxC,+DAAmD;AAE5C,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,EACR,QAAQ,EACR,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,CAAC,KAA0C,EAAE,EAAE;QAClE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACL;QACE,8BAAC,wBAAM,IAAC,OAAO,EAAE,UAAU,kBAAsB;QACjD,uCAAK,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;YAC7C,8BAAC,qBAAS,IAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,GAAI,CACxD,CACL,CACJ,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,gBAAgB,oBAqB3B"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SocketState: () => React.JSX.Element;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
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
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SocketState = void 0;
40
+ const react_1 = __importStar(require("react"));
41
+ const Dialog_1 = __importDefault(require("@mui/material/Dialog"));
42
+ const DialogTitle_1 = __importDefault(require("@mui/material/DialogTitle"));
43
+ const DialogContent_1 = __importDefault(require("@mui/material/DialogContent"));
44
+ const DialogContentText_1 = __importDefault(require("@mui/material/DialogContentText"));
45
+ const DialogActions_1 = __importDefault(require("@mui/material/DialogActions"));
46
+ const Button_1 = __importDefault(require("@mui/material/Button"));
47
+ const logger_1 = require("@clary-so/logger");
48
+ const socket_1 = require("../socket");
49
+ const useLogSocketEvents_1 = require("../../common/useLogSocketEvents");
50
+ const socketInterface_1 = require("../../server/socket/socketInterface");
51
+ const useSocketState = (onError) => {
52
+ (0, useLogSocketEvents_1.useLogSocketEvents)(socket_1.socket);
53
+ const [isConnected, setIsConnected] = (0, react_1.useState)(socket_1.socket.connected);
54
+ (0, react_1.useEffect)(() => {
55
+ function onConnect() {
56
+ setIsConnected(true);
57
+ }
58
+ function onDisconnect(reason) {
59
+ setIsConnected(false);
60
+ logger_1.Logger.info(`socket disconnected with reason: ${reason}`);
61
+ if (reason === "transport close" || reason === "transport error") {
62
+ onError("flashlight CLI command exited. Restart from the CLI.");
63
+ }
64
+ }
65
+ socket_1.socket.on(socketInterface_1.SocketEvents.CONNECT, onConnect);
66
+ socket_1.socket.on(socketInterface_1.SocketEvents.DISCONNECT, onDisconnect);
67
+ socket_1.socket.on(socketInterface_1.SocketEvents.SEND_ERROR, onError);
68
+ return () => {
69
+ socket_1.socket.off(socketInterface_1.SocketEvents.CONNECT, onConnect);
70
+ socket_1.socket.off(socketInterface_1.SocketEvents.DISCONNECT, onDisconnect);
71
+ socket_1.socket.off(socketInterface_1.SocketEvents.SEND_ERROR, onError);
72
+ };
73
+ }, [onError]);
74
+ (0, react_1.useEffect)(() => {
75
+ return () => {
76
+ socket_1.socket.close();
77
+ };
78
+ }, []);
79
+ return { isConnected };
80
+ };
81
+ const SocketState = () => {
82
+ const [error, setError] = react_1.default.useState(null);
83
+ const closeModal = () => setError(null);
84
+ useSocketState(setError);
85
+ const isModalOpened = error !== null;
86
+ return (react_1.default.createElement(react_1.default.Fragment, null,
87
+ react_1.default.createElement(Dialog_1.default, { open: isModalOpened, onClose: closeModal, "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" },
88
+ react_1.default.createElement(DialogTitle_1.default, { id: "alert-dialog-title" }, "\uD83D\uDEA8 Woups, something happened"),
89
+ react_1.default.createElement(DialogContent_1.default, null,
90
+ react_1.default.createElement(DialogContentText_1.default, { id: "alert-dialog-description" }, error)),
91
+ react_1.default.createElement(DialogActions_1.default, null,
92
+ react_1.default.createElement(Button_1.default, { onClick: closeModal, autoFocus: true }, "Close")))));
93
+ };
94
+ exports.SocketState = SocketState;
95
+ //# sourceMappingURL=SocketState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketState.js","sourceRoot":"","sources":["../../../src/webapp/components/SocketState.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmD;AACnD,kEAA0C;AAC1C,4EAAoD;AACpD,gFAAwD;AACxD,wFAAgE;AAChE,gFAAwD;AACxD,kEAA0C;AAC1C,6CAA0C;AAC1C,sCAAmC;AACnC,wEAAqE;AACrE,yEAAmE;AAEnE,MAAM,cAAc,GAAG,CAAC,OAAgC,EAAE,EAAE;IAC1D,IAAA,uCAAkB,EAAC,eAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,eAAM,CAAC,SAAS,CAAC,CAAC;IAEjE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,SAAS,SAAS;YAChB,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,SAAS,YAAY,CAAC,MAAc;YAClC,cAAc,CAAC,KAAK,CAAC,CAAC;YAEtB,eAAM,CAAC,IAAI,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;YAE1D,IAAI,MAAM,KAAK,iBAAiB,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBACjE,OAAO,CAAC,sDAAsD,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,eAAM,CAAC,EAAE,CAAC,8BAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,eAAM,CAAC,EAAE,CAAC,8BAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACjD,eAAM,CAAC,EAAE,CAAC,8BAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE5C,OAAO,GAAG,EAAE;YACV,eAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5C,eAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAClD,eAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,eAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,aAAa,GAAG,KAAK,KAAK,IAAI,CAAC;IAErC,OAAO,CACL;QACE,8BAAC,gBAAM,IACL,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,UAAU,qBACH,oBAAoB,sBACnB,0BAA0B;YAE3C,8BAAC,qBAAW,IAAC,EAAE,EAAC,oBAAoB,6CAA2C;YAC/E,8BAAC,uBAAa;gBACZ,8BAAC,2BAAiB,IAAC,EAAE,EAAC,0BAA0B,IAAE,KAAK,CAAqB,CAC9D;YAChB,8BAAC,uBAAa;gBACZ,8BAAC,gBAAM,IAAC,OAAO,EAAE,UAAU,EAAE,SAAS,kBAE7B,CACK,CACT,CACR,CACJ,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,WAAW,eA2BtB"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export declare const StartButton: ({ isMeasuring, start, stop, }: {
3
+ isMeasuring: boolean;
4
+ start: () => void;
5
+ stop: () => void;
6
+ }) => React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StartButton = void 0;
7
+ const icons_material_1 = require("@mui/icons-material");
8
+ const web_reporter_ui_1 = require("@clary-so/web-reporter-ui");
9
+ const react_1 = __importDefault(require("react"));
10
+ const StartButton = ({ isMeasuring, start, stop, }) => isMeasuring ? (react_1.default.createElement(web_reporter_ui_1.Button, { onClick: stop, icon: react_1.default.createElement(icons_material_1.Stop, null) }, "Stop Measuring")) : (react_1.default.createElement(web_reporter_ui_1.Button, { onClick: start, icon: react_1.default.createElement(icons_material_1.PlayArrow, null) }, "Start Measuring"));
11
+ exports.StartButton = StartButton;
12
+ //# sourceMappingURL=StartButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartButton.js","sourceRoot":"","sources":["../../../src/webapp/components/StartButton.tsx"],"names":[],"mappings":";;;;;;AAAA,wDAAsD;AACtD,+DAAmD;AACnD,kDAA0B;AAEnB,MAAM,WAAW,GAAG,CAAC,EAC1B,WAAW,EACX,KAAK,EACL,IAAI,GAKL,EAAE,EAAE,CACH,WAAW,CAAC,CAAC,CAAC,CACZ,8BAAC,wBAAM,IAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,8BAAC,qBAAI,OAAG,qBAE5B,CACV,CAAC,CAAC,CAAC,CACF,8BAAC,wBAAM,IAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8BAAC,0BAAS,OAAG,sBAElC,CACV,CAAC;AAjBS,QAAA,WAAW,eAiBpB"}
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ export declare const TextField: ({ onChange, value, }: {
3
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
4
+ value: string;
5
+ }) => React.JSX.Element;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
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
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TextField = void 0;
40
+ const React = __importStar(require("react"));
41
+ const styles_1 = require("@mui/material/styles");
42
+ const InputBase_1 = __importDefault(require("@mui/material/InputBase"));
43
+ const icons_material_1 = require("@mui/icons-material");
44
+ const Search = (0, styles_1.styled)("div")(({ theme }) => ({
45
+ position: "relative",
46
+ borderRadius: theme.shape.borderRadius,
47
+ backgroundColor: (0, styles_1.alpha)(theme.palette.common.white, 0.15),
48
+ "&:hover": {
49
+ backgroundColor: (0, styles_1.alpha)(theme.palette.common.white, 0.25),
50
+ },
51
+ marginLeft: 0,
52
+ width: 300,
53
+ }));
54
+ const SearchIconWrapper = (0, styles_1.styled)("div")(() => ({
55
+ paddingLeft: 10,
56
+ paddingRight: 10,
57
+ height: "100%",
58
+ position: "absolute",
59
+ pointerEvents: "none",
60
+ display: "flex",
61
+ alignItems: "center",
62
+ justifyContent: "center",
63
+ }));
64
+ const StyledInputBase = (0, styles_1.styled)(InputBase_1.default)(({ theme }) => ({
65
+ color: "inherit",
66
+ "& .MuiInputBase-input": {
67
+ padding: 10,
68
+ // vertical padding + font size from searchIcon
69
+ paddingLeft: 45,
70
+ transition: theme.transitions.create("width"),
71
+ width: 300 - 45 - 10,
72
+ },
73
+ }));
74
+ const TextField = ({ onChange, value, }) => {
75
+ return (React.createElement(Search, null,
76
+ React.createElement(SearchIconWrapper, null,
77
+ React.createElement(icons_material_1.AndroidRounded, null)),
78
+ React.createElement(StyledInputBase, { placeholder: "Fill in your app id", onChange: onChange, value: value })));
79
+ };
80
+ exports.TextField = TextField;
81
+ //# sourceMappingURL=TextField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/webapp/components/TextField.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,iDAAqD;AACrD,wEAAgD;AAChD,wDAAqD;AAErD,MAAM,MAAM,GAAG,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;IACtC,eAAe,EAAE,IAAA,cAAK,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;IACxD,SAAS,EAAE;QACT,eAAe,EAAE,IAAA,cAAK,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;KACzD;IACD,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,GAAG;CACX,CAAC,CAAC,CAAC;AAEJ,MAAM,iBAAiB,GAAG,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,MAAM;IACrB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;CACzB,CAAC,CAAC,CAAC;AAEJ,MAAM,eAAe,GAAG,IAAA,eAAM,EAAC,mBAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,KAAK,EAAE,SAAS;IAChB,uBAAuB,EAAE;QACvB,OAAO,EAAE,EAAE;QACX,+CAA+C;QAC/C,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE;KACrB;CACF,CAAC,CAAC,CAAC;AAEG,MAAM,SAAS,GAAG,CAAC,EACxB,QAAQ,EACR,KAAK,GAIN,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,MAAM;QACL,oBAAC,iBAAiB;YAChB,oBAAC,+BAAc,OAAG,CACA;QACpB,oBAAC,eAAe,IAAC,WAAW,EAAC,qBAAqB,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,CAChF,CACV,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,SAAS,aAepB"}
@@ -0,0 +1,3 @@
1
+ import { Socket } from "socket.io-client";
2
+ import { ServerToClientEvents, ClientToServerEvents } from "../server/socket/socketInterface";
3
+ export declare const socket: Socket<ServerToClientEvents, ClientToServerEvents>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.socket = void 0;
4
+ const socket_io_client_1 = require("socket.io-client");
5
+ const socketInterface_1 = require("../server/socket/socketInterface");
6
+ exports.socket = (0, socket_io_client_1.io)(window.__FLASHLIGHT_DATA__.socketServerUrl);
7
+ exports.socket.on(socketInterface_1.SocketEvents.DISCONNECT, () => exports.socket.close());
8
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/webapp/socket.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAC9C,sEAI0C;AAE7B,QAAA,MAAM,GAAuD,IAAA,qBAAE,EAC1E,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAC3C,CAAC;AAEF,cAAM,CAAC,EAAE,CAAC,8BAAY,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,cAAM,CAAC,KAAK,EAAE,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const useMeasures: () => {
2
+ bundleId: string | null;
3
+ autodetect: () => void;
4
+ setBundleId: (bundleId: string) => void;
5
+ results: import("@clary-so/types").TestCaseResult[];
6
+ isMeasuring: boolean;
7
+ start: () => void;
8
+ stop: () => void;
9
+ reset: () => void;
10
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMeasures = void 0;
4
+ const react_1 = require("react");
5
+ const socketInterface_1 = require("../server/socket/socketInterface");
6
+ const socket_1 = require("./socket");
7
+ const useMeasures = () => {
8
+ var _a, _b, _c;
9
+ const [state, setState] = (0, react_1.useState)();
10
+ (0, react_1.useEffect)(() => {
11
+ socket_1.socket.on(socketInterface_1.SocketEvents.UPDATE_STATE, setState);
12
+ return () => {
13
+ socket_1.socket.off(socketInterface_1.SocketEvents.UPDATE_STATE, setState);
14
+ };
15
+ }, []);
16
+ return {
17
+ bundleId: (_a = state === null || state === void 0 ? void 0 : state.bundleId) !== null && _a !== void 0 ? _a : null,
18
+ autodetect: () => {
19
+ socket_1.socket.emit(socketInterface_1.SocketEvents.AUTODETECT_BUNDLE_ID);
20
+ },
21
+ setBundleId: (bundleId) => {
22
+ socket_1.socket.emit(socketInterface_1.SocketEvents.SET_BUNDLE_ID, bundleId);
23
+ },
24
+ results: (_b = state === null || state === void 0 ? void 0 : state.results) !== null && _b !== void 0 ? _b : [],
25
+ isMeasuring: (_c = state === null || state === void 0 ? void 0 : state.isMeasuring) !== null && _c !== void 0 ? _c : false,
26
+ start: () => {
27
+ socket_1.socket.emit(socketInterface_1.SocketEvents.START);
28
+ },
29
+ stop: () => {
30
+ socket_1.socket.emit(socketInterface_1.SocketEvents.STOP);
31
+ },
32
+ reset: () => {
33
+ socket_1.socket.emit(socketInterface_1.SocketEvents.RESET);
34
+ },
35
+ };
36
+ };
37
+ exports.useMeasures = useMeasures;
38
+ //# sourceMappingURL=useMeasures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMeasures.js","sourceRoot":"","sources":["../../src/webapp/useMeasures.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,sEAA4E;AAC5E,qCAAkC;AAE3B,MAAM,WAAW,GAAG,GAAG,EAAE;;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAc,CAAC;IAEjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,eAAM,CAAC,EAAE,CAAC,8BAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACV,eAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,QAAQ,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,mCAAI,IAAI;QACjC,UAAU,EAAE,GAAG,EAAE;YACf,eAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,oBAAoB,CAAC,CAAC;QACjD,CAAC;QACD,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE;YAChC,eAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,EAAE;QAC7B,WAAW,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,mCAAI,KAAK;QACxC,KAAK,EAAE,GAAG,EAAE;YACV,eAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,eAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,eAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,WAAW,eA+BtB"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@clary-so/measure",
3
+ "version": "0.4.2",
4
+ "author": {
5
+ "name": "Almouro",
6
+ "email": "alexandrem@bam.tech"
7
+ },
8
+ "license": "MIT",
9
+ "bin": {
10
+ "perf-profiler-measure": "dist/bin.js"
11
+ },
12
+ "dependencies": {
13
+ "@clary-so/e2e": "^0.11.3",
14
+ "@clary-so/logger": "^0.3.3",
15
+ "@clary-so/profiler": "^0.10.11",
16
+ "@clary-so/reporter": "^0.9.0",
17
+ "@clary-so/shell": "^0.2.1",
18
+ "@clary-so/types": "^0.8.0",
19
+ "commander": "^12.0.0",
20
+ "cors": "^2.8.5",
21
+ "express": "^4.19.2",
22
+ "ink": "^3.2.0",
23
+ "react": "^18.0.0",
24
+ "socket.io": "^4.7.5"
25
+ },
26
+ "devDependencies": {
27
+ "@clary-so/web-reporter-ui": "^0.16.1",
28
+ "@mui/icons-material": "^5.15.12",
29
+ "@mui/material": "^5.15.12",
30
+ "@testing-library/react": "^14.2.1",
31
+ "@types/express": "^4.17.21",
32
+ "@types/supertest": "^6.0.2",
33
+ "ink-testing-library": "^2.1.0",
34
+ "parcel": "^2.12.0",
35
+ "react": "18.3.1",
36
+ "react-dom": "18.3.1",
37
+ "socket.io-client": "^4.7.4",
38
+ "supertest": "^6.3.4"
39
+ },
40
+ "scripts": {
41
+ "build": "yarn parcel build src/webapp/index.html",
42
+ "start": "yarn parcel src/webapp/index.html"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "gitHead": "04701e8b54770af21dd476a8a48da1229061c7f2"
48
+ }