diff --git a/.eslintrc.js b/.eslintrc.js index 95df4cae217..1226f14f9d3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -102,7 +102,6 @@ module.exports = { '@typescript-eslint/no-unnecessary-type-assertion': 'warn', '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'warn', '@typescript-eslint/no-unsafe-argument': 'warn', - '@typescript-eslint/consistent-type-imports': 'warn', '@typescript-eslint/consistent-indexed-object-style': 'warn', '@typescript-eslint/no-confusing-void-expression': 'warn', '@typescript-eslint/ban-types': 'warn', diff --git a/api-client/src/calibration/types.ts b/api-client/src/calibration/types.ts index c14ce57e64a..f1ca7559c1d 100644 --- a/api-client/src/calibration/types.ts +++ b/api-client/src/calibration/types.ts @@ -1,4 +1,4 @@ -import { Mount } from '../pipettes' +import type { Mount } from '../pipettes' export interface PipOffsetDeletionParams { calType: 'pipetteOffset' diff --git a/api-client/src/modules/api-types.ts b/api-client/src/modules/api-types.ts index eaee20cf498..68c4f3f26e7 100644 --- a/api-client/src/modules/api-types.ts +++ b/api-client/src/modules/api-types.ts @@ -1,6 +1,8 @@ -import { ModuleType } from '@opentrons/shared-data' - -import type { Coordinates, ModuleModel } from '@opentrons/shared-data' +import type { + ModuleType, + Coordinates, + ModuleModel, +} from '@opentrons/shared-data' type PortGroup = 'main' | 'left' | 'right' | 'front' | 'unknown' interface PhysicalPort { diff --git a/api-client/src/modules/types.ts b/api-client/src/modules/types.ts index 9514f64d412..f138680dafd 100644 --- a/api-client/src/modules/types.ts +++ b/api-client/src/modules/types.ts @@ -3,16 +3,14 @@ import type { ThermocyclerModuleModel, MagneticModuleModel, HeaterShakerModuleModel, -} from '@opentrons/shared-data' - -import { TEMPERATURE_MODULE_TYPE, MAGNETIC_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, } from '@opentrons/shared-data' -import * as ApiTypes from './api-types' +import type * as ApiTypes from './api-types' + export * from './api-types' // common types diff --git a/api-client/src/protocols/__tests__/utils.test.ts b/api-client/src/protocols/__tests__/utils.test.ts index 8be565de451..c400538518d 100644 --- a/api-client/src/protocols/__tests__/utils.test.ts +++ b/api-client/src/protocols/__tests__/utils.test.ts @@ -14,7 +14,7 @@ import { } from '../utils' import { simpleAnalysisFileFixture } from '../__fixtures__' -import { RunTimeCommand } from '@opentrons/shared-data' +import type { RunTimeCommand } from '@opentrons/shared-data' const mockRunTimeCommands: RunTimeCommand[] = simpleAnalysisFileFixture.commands as any const mockLoadLiquidRunTimeCommands = [ diff --git a/api-client/src/request.ts b/api-client/src/request.ts index 87b4997925b..00c0bab63e4 100644 --- a/api-client/src/request.ts +++ b/api-client/src/request.ts @@ -1,6 +1,11 @@ -import axios, { AxiosRequestConfig } from 'axios' - -import type { Method, AxiosPromise, AxiosResponse } from 'axios' +import Axios from 'axios' + +import type { + AxiosRequestConfig, + Method, + AxiosPromise, + AxiosResponse, +} from 'axios' import type { HostConfig } from './types' export type ResponsePromise = AxiosPromise @@ -26,7 +31,12 @@ export function request( config: HostConfig, params?: AxiosRequestConfig['params'] ): ResponsePromise { - const { hostname, port, requestor = axios.request, token } = config + const { + hostname, + port, + requestor = (...args) => Axios.request(...args), + token, + } = config const tokenHeader = token != null ? { authenticationBearer: token } : {} const headers = { ...DEFAULT_HEADERS, ...tokenHeader } diff --git a/api-client/src/sessions/createSession.ts b/api-client/src/sessions/createSession.ts index 61c6941637b..ffb1846bb70 100644 --- a/api-client/src/sessions/createSession.ts +++ b/api-client/src/sessions/createSession.ts @@ -3,7 +3,7 @@ import { POST, request } from '../request' import type { ResponsePromise } from '../request' import type { HostConfig } from '../types' import type { Session } from './types' -import { SessionType } from '.' +import type { SessionType } from '.' export interface CreateSessionData { sessionType: SessionType diff --git a/api/Pipfile b/api/Pipfile index 7be11b82934..e37e6e1c5f9 100755 --- a/api/Pipfile +++ b/api/Pipfile @@ -11,6 +11,7 @@ opentrons-shared-data = { editable = true, path = "../shared-data/python" } opentrons = { editable = true, path = "." } opentrons-hardware = { editable = true, path = "./../hardware", extras=["FLEX"] } numpy = "==1.22.3" +pyusb = "==1.2.1" [dev-packages] # atomicwrites and colorama are pytest dependencies on windows, diff --git a/api/Pipfile.lock b/api/Pipfile.lock index 94643ce22a7..b08815e2656 100644 --- a/api/Pipfile.lock +++ b/api/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a531665bfd7452ea19565ee95137118966532a8ab5475b7d5ee086ada333e627" + "sha256": "8a1eb02e26b3ae9d690880546729375c7b74c8e53a8f1806eefdbeac5829dc67" }, "pipfile-spec": 6, "requires": {}, @@ -48,11 +48,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "idna": { "hashes": [ @@ -162,7 +162,7 @@ }, "opentrons": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "." }, "opentrons-hardware": { @@ -174,7 +174,7 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "../shared-data/python" }, "packaging": { @@ -280,6 +280,15 @@ ], "version": "==4.2.2" }, + "pyusb": { + "hashes": [ + "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36", + "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9" + ], + "index": "pypi", + "markers": "python_full_version >= '3.6.0'", + "version": "==1.2.1" + }, "setuptools": { "hashes": [ "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987", @@ -408,19 +417,19 @@ }, "babel": { "hashes": [ - "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363", - "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287" + "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb", + "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413" ], - "markers": "python_version >= '3.7'", - "version": "==2.14.0" + "markers": "python_version >= '3.8'", + "version": "==2.15.0" }, "backports.tarfile": { "hashes": [ - "sha256:2688f159c21afd56a07b75f01306f9f52c79aebcc5f4a117fb8fbb4445352c75", - "sha256:bcd36290d9684beb524d3fe74f4a2db056824c47746583f090b8e55daf0776e4" + "sha256:73e0179647803d3726d82e76089d01d8549ceca9bace469953fcb4d97cf2d417", + "sha256:9c2ef9696cb73374f7164e17fc761389393ca76777036f5aad42e8b93fcd8009" ], "markers": "python_version < '3.12'", - "version": "==1.0.0" + "version": "==1.1.1" }, "black": { "hashes": [ @@ -460,64 +469,6 @@ "markers": "python_version >= '3.6'", "version": "==2024.2.2" }, - "cffi": { - "hashes": [ - "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", - "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", - "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", - "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", - "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", - "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", - "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", - "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", - "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", - "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", - "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", - "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", - "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", - "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", - "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", - "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", - "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", - "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", - "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", - "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", - "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", - "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", - "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", - "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", - "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", - "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", - "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", - "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", - "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", - "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", - "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", - "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", - "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", - "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", - "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", - "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", - "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", - "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", - "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", - "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", - "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", - "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", - "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", - "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", - "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", - "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", - "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", - "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", - "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", - "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", - "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", - "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" - ], - "markers": "platform_python_implementation != 'PyPy'", - "version": "==1.16.0" - }, "charset-normalizer": { "hashes": [ "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", @@ -742,44 +693,6 @@ "markers": "python_version >= '3.8'", "version": "==7.4.1" }, - "cryptography": { - "hashes": [ - "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee", - "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576", - "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d", - "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30", - "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413", - "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb", - "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da", - "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4", - "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd", - "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc", - "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8", - "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1", - "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc", - "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e", - "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8", - "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940", - "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400", - "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7", - "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16", - "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278", - "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74", - "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec", - "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1", - "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2", - "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c", - "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922", - "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a", - "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6", - "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1", - "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e", - "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac", - "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7" - ], - "markers": "python_version >= '3.7'", - "version": "==42.0.5" - }, "cycler": { "hashes": [ "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", @@ -807,11 +720,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "execnet": { "hashes": [ @@ -972,19 +885,11 @@ }, "jaraco.functools": { "hashes": [ - "sha256:c279cb24c93d694ef7270f970d499cab4d3813f4e08273f95398651a634f0925", - "sha256:daf276ddf234bea897ef14f43c4e1bf9eefeac7b7a82a4dd69228ac20acff68d" + "sha256:3b24ccb921d6b593bdceb56ce14799204f473976e2a9d4b15b04d0f2c2326664", + "sha256:d33fa765374c0611b52f8b3a795f8900869aa88c84769d4d1746cd68fb28c3e8" ], "markers": "python_version >= '3.8'", - "version": "==4.0.0" - }, - "jeepney": { - "hashes": [ - "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755" - ], - "markers": "sys_platform == 'linux'", - "version": "==0.8.0" + "version": "==4.0.1" }, "jinja2": { "hashes": [ @@ -1006,11 +911,11 @@ }, "keyring": { "hashes": [ - "sha256:26fc12e6a329d61d24aa47b22a7c5c3f35753df7d8f2860973cf94f4e1fb3427", - "sha256:7230ea690525133f6ad536a9b5def74a4bd52642abe594761028fc044d7c7893" + "sha256:2458681cdefc0dbc0b7eb6cf75d0b98e59f9ad9b2d4edd319d18f68bdca95e50", + "sha256:daaffd42dbda25ddafb1ad5fec4024e5bbcfe424597ca1ca452b299861e49f1b" ], "markers": "python_version >= '3.8'", - "version": "==25.1.0" + "version": "==25.2.1" }, "kiwisolver": { "hashes": [ @@ -1362,7 +1267,7 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "../shared-data/python" }, "packaging": { @@ -1470,19 +1375,19 @@ }, "platformdirs": { "hashes": [ - "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068", - "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768" + "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf", + "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1" ], "markers": "python_version >= '3.8'", - "version": "==4.2.0" + "version": "==4.2.1" }, "pluggy": { "hashes": [ - "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981", - "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be" + "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", + "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" ], "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "version": "==1.5.0" }, "py": { "hashes": [ @@ -1500,14 +1405,6 @@ "markers": "python_version >= '3.8'", "version": "==2.11.1" }, - "pycparser": { - "hashes": [ - "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" - ], - "markers": "python_version >= '3.8'", - "version": "==2.22" - }, "pydantic": { "hashes": [ "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303", @@ -1569,11 +1466,11 @@ }, "pygments": { "hashes": [ - "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", - "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" + "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a" ], - "markers": "python_version >= '3.7'", - "version": "==2.17.2" + "markers": "python_version >= '3.8'", + "version": "==2.18.0" }, "pyparsing": { "hashes": [ @@ -1731,14 +1628,6 @@ "markers": "python_full_version >= '3.7.0'", "version": "==13.7.1" }, - "secretstorage": { - "hashes": [ - "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99" - ], - "markers": "sys_platform == 'linux'", - "version": "==3.3.3" - }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -1878,12 +1767,12 @@ }, "types-mock": { "hashes": [ - "sha256:0769cb376dfc75b45215619f17a9fd6333d771cc29ce4a38937f060b1e45530f", - "sha256:7472797986d83016f96fde7f73577d129b0cd8a8d0b783487a7be330d57ba431" + "sha256:5281a645d72e827d70043e3cc144fe33b1c003db084f789dc203aa90e812a5a4", + "sha256:d586a01d39ad919d3ddcd73de6cde73ca7f3c69707219f722d1b8d7733641ad7" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==5.1.0.20240311" + "version": "==5.1.0.20240425" }, "types-setuptools": { "hashes": [ diff --git a/api/src/opentrons/drivers/absorbance_reader/__init__.py b/api/src/opentrons/drivers/absorbance_reader/__init__.py new file mode 100644 index 00000000000..9b127df97b3 --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/__init__.py @@ -0,0 +1,11 @@ +from .abstract import AbstractAbsorbanceReaderDriver +from .driver import AbsorbanceReaderDriver +from .simulator import SimulatingDriver +from .hid_protocol import AbsorbanceHidInterface + +__all__ = [ + "AbstractAbsorbanceReaderDriver", + "AbsorbanceReaderDriver", + "SimulatingDriver", + "AbsorbanceHidInterface", +] diff --git a/api/src/opentrons/drivers/absorbance_reader/abstract.py b/api/src/opentrons/drivers/absorbance_reader/abstract.py new file mode 100644 index 00000000000..769de38253e --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/abstract.py @@ -0,0 +1,45 @@ +from abc import ABC, abstractmethod +from typing import Dict, List +from opentrons.drivers.types import AbsorbanceReaderLidStatus + + +class AbstractAbsorbanceReaderDriver(ABC): + @abstractmethod + async def connect(self) -> None: + """Connect to absorbance reader""" + ... + + @abstractmethod + async def disconnect(self) -> None: + """Disconnect from absorbance reader""" + ... + + @abstractmethod + async def is_connected(self) -> bool: + """Check connection to absorbance reader""" + ... + + @abstractmethod + async def get_lid_status(self) -> AbsorbanceReaderLidStatus: + ... + + @abstractmethod + async def get_available_wavelengths(self) -> List[int]: + ... + + @abstractmethod + async def get_single_measurement(self, wavelength: int) -> List[float]: + ... + + @abstractmethod + async def initialize_measurement(self, wavelength: int) -> None: + ... + + @abstractmethod + async def get_status(self) -> None: + ... + + @abstractmethod + async def get_device_info(self) -> Dict[str, str]: + """Get device info""" + ... diff --git a/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py b/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py new file mode 100644 index 00000000000..1d5465db342 --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py @@ -0,0 +1,272 @@ +from __future__ import annotations + +import asyncio +import re +from concurrent.futures.thread import ThreadPoolExecutor +from functools import partial +from typing import Optional, List, Dict +import usb.core as usb_core # type: ignore[import-untyped] + + +from .hid_protocol import AbsorbanceHidInterface as AbsProtocol, ErrorCodeNames +from opentrons.drivers.types import ( + AbsorbanceReaderLidStatus, + AbsorbanceReaderPlatePresence, +) +from opentrons.drivers.rpi_drivers.types import USBPort + + +SN_PARSER = re.compile(r'ATTRS{serial}=="(?P.+?)"') + + +class AsyncByonoy: + """Async wrapper around Byonoy Device Library.""" + + @staticmethod + def match_device_with_sn( + sn: str, devices: List[AbsProtocol.Device] + ) -> AbsProtocol.Device: + for device in devices: + if device.sn == sn: + return device + raise RuntimeError(f"Unavailble module with serial number: {sn}") + + @staticmethod + def serial_number_from_port(name: str) -> str: + """ + Get the serial number from a port using pyusb. + """ + port_numbers = tuple(int(s) for s in name.split("-")[1].split(".")) + device = usb_core.find(port_numbers=port_numbers) + if device: + return str(device.serial_number) + raise RuntimeError(f"Could not find serial number for port: {name}") + + @classmethod + async def create( + cls, + port: str, + usb_port: USBPort, + loop: Optional[asyncio.AbstractEventLoop] = None, + ) -> AsyncByonoy: + """ + Create an AsyncByonoy instance. + + Args: + port: url or port name + baud_rate: the baud rate + timeout: optional timeout in seconds + write_timeout: optional write timeout in seconds + loop: optional event loop. if None get_running_loop will be used + reset_buffer_before_write: reset the serial input buffer before + writing to it + """ + loop = loop or asyncio.get_running_loop() + executor = ThreadPoolExecutor(max_workers=1) + + import pybyonoy_device_library as byonoy # type: ignore[import-not-found] + + interface: AbsProtocol = byonoy + + device_sn = cls.serial_number_from_port(usb_port.name) + found: List[AbsProtocol.Device] = await loop.run_in_executor( + executor=executor, func=byonoy.byonoy_available_devices + ) + device = cls.match_device_with_sn(device_sn, found) + + return cls( + interface=interface, + device=device, + executor=executor, + loop=loop, + ) + + def __init__( + self, + interface: AbsProtocol, + device: AbsProtocol.Device, + executor: ThreadPoolExecutor, + loop: asyncio.AbstractEventLoop, + ) -> None: + """ + Constructor + + Args: + serial: connected Serial object + executor: a thread pool executor + loop: event loop + """ + self._interface = interface + self._device = device + self._executor = executor + self._loop = loop + self._supported_wavelengths: Optional[list[int]] = None + self._device_handle: Optional[int] = None + self._current_config: Optional[AbsProtocol.MeasurementConfig] = None + + def _cleanup(self) -> None: + self._device_handle = None + + def _open(self) -> None: + err, device_handle = self._interface.byonoy_open_device(self._device) + if err.name != "BYONOY_ERROR_NO_ERROR": + raise RuntimeError(f"Error opening device: {err}") + self._device_handle = device_handle + + def _free(self) -> None: + if self._device_handle: + self._interface.byonoy_free_device(self._device_handle) + self._cleanup() + + def verify_device_handle(self) -> int: + assert self._device_handle is not None, RuntimeError( + "Device handle not set up." + ) + return self._device_handle + + def _raise_if_error( + self, + err_name: ErrorCodeNames, + msg: str = "Error occurred: ", + ) -> None: + if err_name != "BYONOY_ERROR_NO_ERROR": + raise RuntimeError(msg, err_name) + + def _get_device_information(self) -> AbsProtocol.DeviceInfo: + handle = self.verify_device_handle() + err, device_info = self._interface.byonoy_get_device_information(handle) + self._raise_if_error(err.name, "Error getting device information: ") + return device_info + + def _get_device_status(self) -> AbsProtocol.DeviceState: + handle = self.verify_device_handle() + err, status = self._interface.byonoy_get_device_status(handle) + self._raise_if_error(err.name, "Error getting device status: ") + return status + + def _get_slot_status(self) -> AbsProtocol.SlotState: + handle = self.verify_device_handle() + err, slot_status = self._interface.byonoy_get_device_slot_status(handle) + self._raise_if_error(err.name, "Error getting slot status: ") + return slot_status + + def _get_lid_status(self) -> bool: + handle = self.verify_device_handle() + lid_on: bool + err, lid_on = self._interface.byonoy_get_device_parts_aligned(handle) + self._raise_if_error(err.name, "Error getting lid status: ") + return lid_on + + def _get_supported_wavelengths(self) -> List[int]: + handle = self.verify_device_handle() + wavelengths: List[int] + err, wavelengths = self._interface.byonoy_abs96_get_available_wavelengths( + handle + ) + self._raise_if_error(err.name, "Error getting available wavelengths: ") + self._supported_wavelengths = wavelengths + return wavelengths + + def _initialize_measurement(self, conf: AbsProtocol.MeasurementConfig) -> None: + handle = self.verify_device_handle() + err = self._interface.byonoy_abs96_initialize_single_measurement(handle, conf) + self._raise_if_error(err.name, "Error initializing measurement: ") + self._current_config = conf + + def _single_measurement(self, conf: AbsProtocol.MeasurementConfig) -> List[float]: + handle = self.verify_device_handle() + measurements: List[float] + err, measurements = self._interface.byonoy_abs96_single_measure(handle, conf) + self._raise_if_error(err.name, "Error getting single measurement: ") + return measurements + + def _set_sample_wavelength(self, wavelength: int) -> AbsProtocol.MeasurementConfig: + if not self._supported_wavelengths: + self._get_supported_wavelengths() + assert self._supported_wavelengths + if wavelength in self._supported_wavelengths: + conf = self._interface.ByonoyAbs96SingleMeasurementConfig() + conf.sample_wavelength = wavelength + return conf + else: + raise ValueError( + f"Unsupported wavelength: {wavelength}, expected: {self._supported_wavelengths}" + ) + + def _initialize(self, wavelength: int) -> None: + conf = self._set_sample_wavelength(wavelength) + self._initialize_measurement(conf) + + def _get_single_measurement(self, wavelength: int) -> List[float]: + initialized = self._current_config + assert initialized and initialized.sample_wavelength == wavelength + return self._single_measurement(initialized) + + async def open(self) -> None: + """ + Open the connection. + + Returns: None + """ + return await self._loop.run_in_executor( + executor=self._executor, func=self._open + ) + + async def close(self) -> None: + """ + Close the connection + + Returns: None + """ + await self._loop.run_in_executor(executor=self._executor, func=self._free) + + async def is_open(self) -> bool: + """ + Check if connection is open. + + Returns: boolean + """ + return self._device_handle is not None + + async def get_device_static_info(self) -> Dict[str, str]: + return { + "serial": self._device.sn, + "model": "ABS96", + } + + async def get_device_information(self) -> Dict[str, str]: + device_info = await self._loop.run_in_executor( + executor=self._executor, func=self._get_device_information + ) + return { + "serial_number": device_info.sn, + "reference_number": device_info.ref_no, + "version": device_info.version, + } + + async def get_lid_status(self) -> AbsorbanceReaderLidStatus: + lid_info = await self._loop.run_in_executor( + executor=self._executor, func=self._get_lid_status + ) + return ( + AbsorbanceReaderLidStatus.ON if lid_info else AbsorbanceReaderLidStatus.OFF + ) + + async def get_supported_wavelengths(self) -> list[int]: + return await self._loop.run_in_executor( + executor=self._executor, func=self._get_supported_wavelengths + ) + + async def initialize(self, wavelength: int) -> None: + return await self._loop.run_in_executor( + executor=self._executor, func=partial(self._initialize, wavelength) + ) + + async def get_single_measurement(self, wavelength: int) -> List[float]: + return await self._loop.run_in_executor( + executor=self._executor, + func=partial(self._get_single_measurement, wavelength), + ) + + async def get_plate_presence(self) -> AbsorbanceReaderPlatePresence: + return AbsorbanceReaderPlatePresence.UNKNOWN diff --git a/api/src/opentrons/drivers/absorbance_reader/driver.py b/api/src/opentrons/drivers/absorbance_reader/driver.py new file mode 100644 index 00000000000..538bc83d70d --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/driver.py @@ -0,0 +1,63 @@ +from __future__ import annotations + +import asyncio +from typing import Dict, Optional, List + +from opentrons.drivers.types import AbsorbanceReaderLidStatus +from opentrons.drivers.absorbance_reader.abstract import AbstractAbsorbanceReaderDriver +from opentrons.drivers.rpi_drivers.types import USBPort +from .async_byonoy import AsyncByonoy + + +class AbsorbanceReaderDriver(AbstractAbsorbanceReaderDriver): + @classmethod + async def create( + cls, + port: str, + usb_port: USBPort, + loop: Optional[asyncio.AbstractEventLoop], + ) -> AbsorbanceReaderDriver: + """Create an absorbance reader driver.""" + from .async_byonoy import AsyncByonoy + + connection = await AsyncByonoy.create(port=port, usb_port=usb_port, loop=loop) + return cls(connection=connection) + + def __init__(self, connection: AsyncByonoy) -> None: + self._connection = connection + + async def get_device_info(self) -> Dict[str, str]: + """Get device info""" + connected = await self.is_connected() + if not connected: + info = await self._connection.get_device_static_info() + else: + info = await self._connection.get_device_information() + return info + + async def connect(self) -> None: + """Connect to absorbance reader""" + await self._connection.open() + + async def disconnect(self) -> None: + """Disconnect from absorbance reader""" + await self._connection.close() + + async def is_connected(self) -> bool: + """Check connection to absorbance reader""" + return await self._connection.is_open() + + async def get_lid_status(self) -> AbsorbanceReaderLidStatus: + return await self._connection.get_lid_status() + + async def get_available_wavelengths(self) -> List[int]: + return await self._connection.get_supported_wavelengths() + + async def get_single_measurement(self, wavelength: int) -> List[float]: + return await self._connection.get_single_measurement(wavelength) + + async def initialize_measurement(self, wavelength: int) -> None: + await self._connection.initialize(wavelength) + + async def get_status(self) -> None: + pass diff --git a/api/src/opentrons/drivers/absorbance_reader/hid_protocol.py b/api/src/opentrons/drivers/absorbance_reader/hid_protocol.py new file mode 100644 index 00000000000..6ddd82aa030 --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/hid_protocol.py @@ -0,0 +1,115 @@ +from typing import ( + Dict, + Protocol, + List, + Literal, + Tuple, + ClassVar, + runtime_checkable, + TypeVar, +) + +Response = TypeVar("Response") + +ErrorCodeNames = Literal[ + "BYONOY_ERROR_NO_ERROR", + "BYONOY_ERROR_UNKNOWN_ERROR", + "BYONOY_ERROR_DEVICE_CLOSED", + "BYONOY_ERROR_INVALID_ARGUMENT", + "BYONOY_ERROR_NO_MEMORY", + "BYONOY_ERROR_UNSUPPORTED_OPERATION", + "BYONOY_ERROR_DEVICE_COMMUNICATION_FAILURE", + "BYONOY_ERROR_DEVICE_OPERATION_FAILED", + "BYONOY_ERROR_DEVICE_OPEN_PREFIX", + "BYONOY_ERROR_DEVICE_NOT_FOUND", + "BYONOY_ERROR_DEVICE_TOO_NEW", + "BYONOY_ERROR_DEVICE_ALREADY_OPEN", + "BYONOY_ERROR_FIRMWARE_UPDATE_ERROR_PREFIX", + "BYONOY_ERROR_FIRMWARE_UPDATE_FILE_NOT_FOUND", + "BYONOY_ERROR_FIRMWARE_UPDATE_FILE_NOT_VALID", + "BYONOY_ERROR_FIRMWARE_UPDATE_FAILED", + "BYONOY_ERROR_FILE_ERROR_PREFIX", + "BYONOY_ERROR_FILE_WRITE_ERROR", + "BYONOY_ERROR_MEASUTEMNT_ERROR_PREFIX", + "BYONOY_ERROR_MEASUTEMNT_SLOT_NOT_EMPTY", + "BYONOY_ERROR_NOT_INITIALIZED", + "BYONOY_ERROR_INTERNAL", +] + + +@runtime_checkable +class AbsorbanceHidInterface(Protocol): + @runtime_checkable + class Device(Protocol): + sn: str + + @runtime_checkable + class ErrorCode(Protocol): + __members__: Dict[ErrorCodeNames, int] + name: ErrorCodeNames + value: int + + @runtime_checkable + class SlotState(Protocol): + __members__: ClassVar[Dict[str, int]] + + @runtime_checkable + class MeasurementConfig(Protocol): + sample_wavelength: int + + @runtime_checkable + class DeviceInfo(Protocol): + ref_no: str + sn: str + version: str + + @runtime_checkable + class DeviceState(Protocol): + __members__: ClassVar[Dict[str, int]] + + def ByonoyAbs96SingleMeasurementConfig(self) -> MeasurementConfig: + ... + + def byonoy_open_device(self, device: Device) -> Tuple[ErrorCode, int]: + ... + + def byonoy_free_device(self, device_handle: int) -> Tuple[ErrorCode, bool]: + ... + + def byonoy_get_device_information( + self, device_handle: int + ) -> Tuple[ErrorCode, DeviceInfo]: + ... + + def byonoy_get_device_status( + self, device_handle: int + ) -> Tuple[ErrorCode, DeviceState]: + ... + + def byonoy_get_device_slot_status( + self, device_handle: int + ) -> Tuple[ErrorCode, SlotState]: + ... + + def byonoy_get_device_parts_aligned( + self, device_handle: int + ) -> Tuple[ErrorCode, bool]: + ... + + def byonoy_abs96_get_available_wavelengths( + self, device_handle: int + ) -> Tuple[ErrorCode, List[int]]: + ... + + def byonoy_abs96_initialize_single_measurement( + self, device_handle: int, conf: MeasurementConfig + ) -> ErrorCode: + ... + + def byonoy_abs96_single_measure( + self, device_handle: int, conf: MeasurementConfig + ) -> Tuple[ErrorCode, List[float]]: + ... + + def byonoy_available_devices(self) -> List[Device]: + ... diff --git a/api/src/opentrons/drivers/absorbance_reader/simulator.py b/api/src/opentrons/drivers/absorbance_reader/simulator.py new file mode 100644 index 00000000000..b189030b653 --- /dev/null +++ b/api/src/opentrons/drivers/absorbance_reader/simulator.py @@ -0,0 +1,55 @@ +from typing import Dict, List, Optional +from opentrons.util.async_helpers import ensure_yield + +from opentrons.drivers.types import AbsorbanceReaderLidStatus + +from .abstract import AbstractAbsorbanceReaderDriver + + +class SimulatingDriver(AbstractAbsorbanceReaderDriver): + def __init__(self, serial_number: Optional[str] = None) -> None: + self._serial_number = serial_number + + @ensure_yield + async def get_device_info(self) -> Dict[str, str]: + """Get device info""" + return { + "serial": self._serial_number if self._serial_number else "dummySerialAR", + "model": "dummyModelAR", + "version": "dummyVersionAR", + } + + @ensure_yield + async def connect(self) -> None: + """Connect to absorbance reader""" + pass + + @ensure_yield + async def disconnect(self) -> None: + """Disconnect from absorbance reader""" + pass + + @ensure_yield + async def is_connected(self) -> bool: + """Check connection to absorbance reader""" + return True + + @ensure_yield + async def get_lid_status(self) -> AbsorbanceReaderLidStatus: + return AbsorbanceReaderLidStatus.ON + + @ensure_yield + async def get_available_wavelengths(self) -> List[int]: + return [450, 570, 600, 650] + + @ensure_yield + async def get_single_measurement(self, wavelength: int) -> List[float]: + return [0.0] + + @ensure_yield + async def initialize_measurement(self, wavelength: int) -> None: + pass + + @ensure_yield + async def get_status(self) -> None: + pass diff --git a/api/src/opentrons/drivers/rpi_drivers/types.py b/api/src/opentrons/drivers/rpi_drivers/types.py index 5c36d0109c2..acb177a05b4 100644 --- a/api/src/opentrons/drivers/rpi_drivers/types.py +++ b/api/src/opentrons/drivers/rpi_drivers/types.py @@ -1,5 +1,6 @@ from __future__ import annotations import enum +import re from itertools import groupby from dataclasses import dataclass from typing import List, Optional, Tuple @@ -27,6 +28,26 @@ class PortGroup: FLEX_B2_USB_PORT_GROUP_FRONT = 7 FLEX_B2_USB_PORTS = {"4": 1, "3": 2, "2": 3, "1": 4} +BUS_PATH = "/sys/bus/usb/devices/usb1/" + +# Example usb path might look like: +# '/sys/bus/usb/devices/usb1/1-1/1-1.3/1-1.3:1.0/tty/ttyACM1/dev'. +# Example hid device path might look like: +# '/sys/bus/usb/devices/usb1/1-1/1-1.3/1-1.3:1.0/0003:16D0:1199.0002/hidraw/hidraw0/dev' +# There is only 1 bus that supports USB on the raspberry pi. +USB_PORT_INFO = re.compile( + r""" + (?P(\d[\d]*-\d[\d\.]*[/]?)+): + (?P + \d.\d/ + (tty/tty(\w{4})/dev | [\w:\.]+?/hidraw/hidraw\d/dev) + ) + """, + re.VERBOSE, +) + +HUB_PATTERN = re.compile(r"(\d-[\d.]+\d?)[\/:]") + @dataclass(frozen=True) class USBPort: @@ -38,7 +59,9 @@ class USBPort: device_path: str = "" @classmethod - def build(cls, port_path: str, board_revision: BoardRevision) -> "USBPort": + def build( + cls, full_path: str, board_revision: BoardRevision + ) -> Optional["USBPort"]: """ Build a USBPort dataclass. @@ -52,8 +75,13 @@ def build(cls, port_path: str, board_revision: BoardRevision) -> "USBPort": Returns: Tuple of the port number, port group, hub, hub port, device path, and name """ - full_name, device_path = port_path.split(":") - port_nodes = cls.get_unique_nodes(full_name) + match = USB_PORT_INFO.search(full_path) + if not match: + return None + + port_path = match.group("port_path") + device_path = match.group("device_path") + port_nodes = cls.get_unique_nodes(port_path) hub, port, hub_port, name = cls.find_hub(port_nodes, board_revision) hub, port_group, port, hub_port = cls.map_to_revision( board_revision, @@ -91,43 +119,52 @@ def find_hub( :param port_nodes: A list of unique port id(s) :returns: Tuple of the hub, port number, hub_port and name """ - if len(port_nodes) > 2: - port_info = port_nodes[2].split(".") - hub: Optional[int] = int(port_info[1]) - port = int(port_info[2]) - hub_port: Optional[int] = int(port_info[3]) - name = port_nodes[2] - elif len(port_nodes) > 1: - if board_revision == BoardRevision.OG: - port_info = port_nodes[1].split(".") + if len(port_nodes) == 1 and "." not in port_nodes[0]: + # if no hub is attached, such as on a dev kit, the port + # nodes available will be 1-1 + port = int(port_nodes[0].split("-")[1]) + hub = None + hub_port = None + name = port_nodes[0] + else: + port_nodes = [node for node in port_nodes if "." in node] + if len(port_nodes) > 2: + port_info = port_nodes[2].split(".") hub = int(port_info[1]) - port = int(port_info[1]) - hub_port = int(port_info[2]) - name = port_nodes[1] + port = int(port_info[2]) + hub_port = int(port_info[3]) + name = port_nodes[2] + elif len(port_nodes) > 1: + if board_revision == BoardRevision.OG: + port_info = port_nodes[1].split(".") + hub = int(port_info[1]) + port = int(port_info[1]) + hub_port = int(port_info[2]) + name = port_nodes[1] + else: + port_info = port_nodes[1].split(".") + hub = int(port_info[1]) + name = port_nodes[1] + if (board_revision == BoardRevision.FLEX_B2) and ( + hub == FLEX_B2_USB_PORT_GROUP_FRONT + ): + port = 9 + hub_port = int(port_info[2]) + else: + port = int(port_info[2]) + hub_port = None else: - port_info = port_nodes[1].split(".") - hub = int(port_info[1]) - name = port_nodes[1] - if (board_revision == BoardRevision.FLEX_B2) and ( - hub == FLEX_B2_USB_PORT_GROUP_FRONT - ): + if board_revision == BoardRevision.FLEX_B2: + port_info = port_nodes[0].split(".") + hub = int(port_info[1]) port = 9 - hub_port = int(port_info[2]) + hub_port = None + name = port_nodes[0] else: - port = int(port_info[2]) + port = int(port_nodes[0].split(".")[1]) + hub = None hub_port = None - else: - if board_revision == BoardRevision.FLEX_B2: - port_info = port_nodes[0].split(".") - hub = int(port_info[1]) - port = 9 - hub_port = None - name = port_nodes[0] - else: - port = int(port_nodes[0].split(".")[1]) - hub = None - hub_port = None - name = port_nodes[0] + name = port_nodes[0] return hub, port, hub_port, name @staticmethod @@ -161,11 +198,12 @@ def get_unique_nodes(full_name: str) -> List[str]: :param full_name: Full path of the physical USB Path :returns: List of separated USB port paths """ - port_nodes = [] - for node in full_name.split("/"): - if node not in port_nodes: - port_nodes.append(node) - return port_nodes + all_match = HUB_PATTERN.findall(full_name) + match_set = [] + for match in all_match: + if match not in match_set: + match_set.append(match) + return match_set @staticmethod def map_to_revision( diff --git a/api/src/opentrons/drivers/rpi_drivers/usb.py b/api/src/opentrons/drivers/rpi_drivers/usb.py index 04ee5496c4a..b2446a96b73 100644 --- a/api/src/opentrons/drivers/rpi_drivers/usb.py +++ b/api/src/opentrons/drivers/rpi_drivers/usb.py @@ -6,7 +6,6 @@ """ import subprocess -import re import os from typing import List, Union @@ -17,16 +16,7 @@ from opentrons.hardware_control.types import BoardRevision from .interfaces import USBDriverInterface -from .types import USBPort - - -# Example usb path might look like: -# '/sys/bus/usb/devices/usb1/1-1/1-1.3/1-1.3:1.0/tty/ttyACM1/dev'. -# There is only 1 bus that supports USB on the raspberry pi. -BUS_PATH = "/sys/bus/usb/devices/usb1/" -PORT_PATTERN = r"(/\d-\d(\.?\d)+)+:" -DEVICE_PATH = r"\d.\d/tty/tty(\w{4})/dev" -USB_PORT_INFO = re.compile(PORT_PATTERN + DEVICE_PATH) +from .types import BUS_PATH, USBPort class USBBus(USBDriverInterface): @@ -73,11 +63,9 @@ def _read_usb_bus(self) -> List[USBPort]: active_ports = self._read_bus() port_matches = [] for port in active_ports: - match = USB_PORT_INFO.search(port) - if match: - port_matches.append( - USBPort.build(match.group(0).strip("/"), self._board_revision) - ) + usb_port = USBPort.build(port.strip("/"), self._board_revision) + if usb_port: + port_matches.append(usb_port) return port_matches def match_virtual_ports( diff --git a/api/src/opentrons/drivers/types.py b/api/src/opentrons/drivers/types.py index 7186025dc35..09691ff051f 100644 --- a/api/src/opentrons/drivers/types.py +++ b/api/src/opentrons/drivers/types.py @@ -58,3 +58,19 @@ class ThermocyclerLidStatus(str, Enum): IN_BETWEEN = "in_between" OPEN = "open" MAX = "max" + + +class AbsorbanceReaderLidStatus(str, Enum): + """Absorbance reader lid status.""" + + UNKNOWN = "unknown" + ON = "on" + OFF = "off" + + +class AbsorbanceReaderPlatePresence(str, Enum): + """Absorbance reader plate presence.""" + + UNKNOWN = "unknown" + PRESENT = "present" + ABSENCE = "absence" diff --git a/api/src/opentrons/hardware_control/modules/__init__.py b/api/src/opentrons/hardware_control/modules/__init__.py index 8675bc59de9..3e4c14f0baf 100644 --- a/api/src/opentrons/hardware_control/modules/__init__.py +++ b/api/src/opentrons/hardware_control/modules/__init__.py @@ -3,6 +3,7 @@ from .magdeck import MagDeck from .thermocycler import Thermocycler from .heater_shaker import HeaterShaker +from .absorbance_reader import AbsorbanceReader from .update import update_firmware from .utils import MODULE_TYPE_BY_NAME, build from .types import ( @@ -45,4 +46,5 @@ "HeaterShakerStatus", "SpeedStatus", "LiveData", + "AbsorbanceReader", ] diff --git a/api/src/opentrons/hardware_control/modules/absorbance_reader.py b/api/src/opentrons/hardware_control/modules/absorbance_reader.py new file mode 100644 index 00000000000..8f3c65e3ace --- /dev/null +++ b/api/src/opentrons/hardware_control/modules/absorbance_reader.py @@ -0,0 +1,172 @@ +import asyncio +from typing import Optional, Mapping, List, Dict, Any, Tuple + +from opentrons.drivers.rpi_drivers.types import USBPort +from opentrons.drivers.absorbance_reader import ( + AbstractAbsorbanceReaderDriver, + AbsorbanceReaderDriver, + SimulatingDriver, +) +from opentrons.hardware_control.execution_manager import ExecutionManager +from opentrons.hardware_control.modules import mod_abc +from opentrons.hardware_control.modules.types import ( + ModuleType, + AbsorbanceReaderStatus, + LiveData, + UploadFunction, +) + + +async def upload_func_placeholder( + dfu_serial: str, firmware_file_path: str, kwargs: Dict[str, Any] +) -> Tuple[bool, str]: + return False, "Not implemented" + + +class AbsorbanceReader(mod_abc.AbstractModule): + """Hardware control interface for an attached Absorbance Reader module.""" + + MODULE_TYPE = ModuleType.ABSORBANCE_READER + + @classmethod + async def build( + cls, + port: str, + usb_port: USBPort, + execution_manager: ExecutionManager, + hw_control_loop: asyncio.AbstractEventLoop, + poll_interval_seconds: Optional[float] = None, + simulating: bool = False, + sim_model: Optional[str] = None, + sim_serial_number: Optional[str] = None, + ) -> "AbsorbanceReader": + """Create an AbsorbanceReader.""" + driver: AbstractAbsorbanceReaderDriver + if not simulating: + driver = await AbsorbanceReaderDriver.create( + port, usb_port, hw_control_loop + ) + else: + driver = SimulatingDriver(serial_number=sim_serial_number) + module = cls( + port=port, + usb_port=usb_port, + device_info=await driver.get_device_info(), + execution_manager=execution_manager, + driver=driver, + hw_control_loop=hw_control_loop, + ) + return module + + def __init__( + self, + port: str, + usb_port: USBPort, + driver: AbstractAbsorbanceReaderDriver, + device_info: Mapping[str, str], + execution_manager: ExecutionManager, + hw_control_loop: asyncio.AbstractEventLoop, + ) -> None: + super().__init__(port, usb_port, execution_manager, hw_control_loop) + self._driver = driver + self._device_info = device_info + + async def deactivate(self, must_be_running: bool = True) -> None: + """Deactivate the module. + + Contains an override to the `wait_for_is_running` step in cases where the + module must be deactivated regardless of context.""" + await self._driver.disconnect() + + @property + def status(self) -> AbsorbanceReaderStatus: + """Return some string describing status.""" + return AbsorbanceReaderStatus.IDLE + + @property + def device_info(self) -> Mapping[str, str]: + """Return a dict of the module's static information (serial, etc)""" + return self._device_info + + @property + def live_data(self) -> LiveData: + """Return a dict of the module's dynamic information""" + return { + "status": "idle", + "data": { + "sampleWavelength": 400, + }, + } + + @property + def is_simulated(self) -> bool: + """True if this is a simulated module.""" + return isinstance(self._driver, SimulatingDriver) + + @property + def port(self) -> str: + """The virtual port where the module is connected.""" + return self._port + + @property + def usb_port(self) -> USBPort: + """The physical port where the module is connected.""" + return self._usb_port + + async def wait_for_is_running(self) -> None: + if not self.is_simulated: + await self._execution_manager.wait_for_is_running() + + async def prep_for_update(self) -> str: + """Prepare for an update. + + By the time this coroutine completes, the hardware should be ready + to take an update. This implicitly tears down the module instance; + it does not need to be either working or recoverable after this + coroutine completes. + + :returns str: The port we're running on. + """ + return "" + + def model(self) -> str: + """A name for this specific module, matching module defs""" + return "absorbanceReaderV1" + + @classmethod + def name(cls) -> str: + """A shortname used for matching usb ports, among other things""" + return "absorbancereader" + + def firmware_prefix(self) -> str: + """The prefix used for looking up firmware""" + # TODO: (AA) This is a placeholder + return "" + + def bootloader(self) -> UploadFunction: + """Bootloader mode""" + return upload_func_placeholder + + async def cleanup(self) -> None: + """Clean up the module instance. + + Clean up, i.e. stop pollers, disconnect serial, etc in preparation for + object destruction. + """ + await self._driver.disconnect() + + async def set_sample_wavelength(self, wavelength: int) -> None: + """Set the Absorbance Reader's active wavelength.""" + await self._driver.initialize_measurement(wavelength) + + async def start_measure(self, wavelength: int) -> None: + """Initiate a single measurement.""" + await self._driver.get_single_measurement(wavelength) + + async def get_supported_wavelengths(self) -> List[int]: + """Get the Absorbance Reader's supported wavelengths.""" + return await self._driver.get_available_wavelengths() + + async def get_current_wavelength(self) -> None: + """Get the Absorbance Reader's current active wavelength.""" + pass diff --git a/api/src/opentrons/hardware_control/modules/types.py b/api/src/opentrons/hardware_control/modules/types.py index f0980fca2b1..e538e603f8d 100644 --- a/api/src/opentrons/hardware_control/modules/types.py +++ b/api/src/opentrons/hardware_control/modules/types.py @@ -25,6 +25,7 @@ TemperatureModuleType, HeaterShakerModuleType, MagneticBlockType, + AbsorbanceReaderType, ) @@ -51,6 +52,7 @@ class ModuleType(str, Enum): MAGNETIC: MagneticModuleType = "magneticModuleType" HEATER_SHAKER: HeaterShakerModuleType = "heaterShakerModuleType" MAGNETIC_BLOCK: MagneticBlockType = "magneticBlockType" + ABSORBANCE_READER: AbsorbanceReaderType = "absorbanceReaderType" @classmethod def from_model(cls, model: ModuleModel) -> ModuleType: @@ -64,6 +66,8 @@ def from_model(cls, model: ModuleModel) -> ModuleType: return cls.HEATER_SHAKER if isinstance(model, MagneticBlockModel): return cls.MAGNETIC_BLOCK + if isinstance(model, AbsorbanceReaderModel): + return cls.ABSORBANCE_READER @classmethod def to_module_fixture_id(cls, module_type: ModuleType) -> str: @@ -105,6 +109,10 @@ class MagneticBlockModel(str, Enum): MAGNETIC_BLOCK_V1: str = "magneticBlockV1" +class AbsorbanceReaderModel(str, Enum): + ABSORBANCE_READER_V1: str = "absorbanceReaderV1" + + def module_model_from_string(model_string: str) -> ModuleModel: for model_enum in { MagneticModuleModel, @@ -112,6 +120,7 @@ def module_model_from_string(model_string: str) -> ModuleModel: ThermocyclerModuleModel, HeaterShakerModuleModel, MagneticBlockModel, + AbsorbanceReaderModel, }: try: return cast(ModuleModel, model_enum(model_string)) @@ -166,6 +175,7 @@ class ModuleInfo(NamedTuple): ThermocyclerModuleModel, HeaterShakerModuleModel, MagneticBlockModel, + AbsorbanceReaderModel, ] @@ -194,3 +204,9 @@ class HeaterShakerStatus(str, Enum): IDLE = "idle" RUNNING = "running" ERROR = "error" + + +class AbsorbanceReaderStatus(str, Enum): + IDLE = "idle" + MEASURING = "measuring" + ERROR = "error" diff --git a/api/src/opentrons/hardware_control/modules/utils.py b/api/src/opentrons/hardware_control/modules/utils.py index 0c213ead6a1..862617e2d60 100644 --- a/api/src/opentrons/hardware_control/modules/utils.py +++ b/api/src/opentrons/hardware_control/modules/utils.py @@ -12,6 +12,7 @@ from .magdeck import MagDeck from .thermocycler import Thermocycler from .heater_shaker import HeaterShaker +from .absorbance_reader import AbsorbanceReader log = logging.getLogger(__name__) @@ -24,6 +25,7 @@ TempDeck.name(): TempDeck.MODULE_TYPE, Thermocycler.name(): Thermocycler.MODULE_TYPE, HeaterShaker.name(): HeaterShaker.MODULE_TYPE, + AbsorbanceReader.name(): AbsorbanceReader.MODULE_TYPE, } _MODULE_CLS_BY_TYPE: Dict[ModuleType, Type[AbstractModule]] = { @@ -31,6 +33,7 @@ TempDeck.MODULE_TYPE: TempDeck, Thermocycler.MODULE_TYPE: Thermocycler, HeaterShaker.MODULE_TYPE: HeaterShaker, + AbsorbanceReader.MODULE_TYPE: AbsorbanceReader, } diff --git a/api/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py b/api/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py new file mode 100644 index 00000000000..f694f798a71 --- /dev/null +++ b/api/src/opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py @@ -0,0 +1,20 @@ +"""Heater-Shaker Module sub-state.""" +from dataclasses import dataclass +from typing import List, NewType, Optional + + +AbsorbanceReaderId = NewType("AbsorbanceReaderId", str) + + +@dataclass(frozen=True) +class AbsorbanceReaderSubState: + """Absorbance-Plate-Reader-specific state.""" + + module_id: AbsorbanceReaderId + initialized: bool + is_lid_open: bool + is_loaded: bool + is_measuring: bool + temperature: float + sample_wavelength: Optional[int] + supported_wavelengths: Optional[List[int]] diff --git a/api/tests/opentrons/drivers/absorbance_reader/__init__.py b/api/tests/opentrons/drivers/absorbance_reader/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/api/tests/opentrons/drivers/absorbance_reader/test_driver.py b/api/tests/opentrons/drivers/absorbance_reader/test_driver.py new file mode 100644 index 00000000000..ecda705fa3e --- /dev/null +++ b/api/tests/opentrons/drivers/absorbance_reader/test_driver.py @@ -0,0 +1,168 @@ +from mock import MagicMock +import pytest +import asyncio +from enum import Enum +from concurrent.futures.thread import ThreadPoolExecutor + +from opentrons.drivers.absorbance_reader import ( + AbsorbanceReaderDriver, + AbsorbanceHidInterface, +) +from opentrons.drivers.absorbance_reader.async_byonoy import AsyncByonoy +from opentrons.drivers.types import AbsorbanceReaderLidStatus + + +@pytest.fixture +def mock_interface() -> MagicMock: + return MagicMock(spec=AbsorbanceHidInterface) + + +@pytest.fixture +def mock_device() -> MagicMock: + return MagicMock(spec=AbsorbanceHidInterface.Device) + + +class MockErrorCode(Enum): + BYONOY_ERROR_NO_ERROR = "no_error" + BYONOY_ERROR = "error" + + +@pytest.fixture +async def mock_async_byonoy(mock_interface, mock_device) -> AsyncByonoy: + loop = asyncio.get_running_loop() + return AsyncByonoy( + mock_interface, mock_device, ThreadPoolExecutor(max_workers=1), loop + ) + + +@pytest.fixture +async def driver(mock_async_byonoy: AsyncByonoy) -> AbsorbanceReaderDriver: + return AbsorbanceReaderDriver(mock_async_byonoy) + + +@pytest.fixture +async def connected_driver(driver: AbsorbanceReaderDriver) -> AbsorbanceReaderDriver: + driver._connection._device_handle = 1 + return driver + + +async def test_driver_connect_disconnect( + mock_interface: MagicMock, + driver: AbsorbanceReaderDriver, +) -> None: + mock_interface.byonoy_open_device.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR, + 1, + ) + + assert not await driver.is_connected() + await driver.connect() + + mock_interface.byonoy_open_device.assert_called_once() + assert await driver.is_connected() + assert driver._connection.verify_device_handle() + assert driver._connection._device_handle == 1 + + mock_interface.byonoy_free_device.return_value = MockErrorCode.BYONOY_ERROR_NO_ERROR + await driver.disconnect() + + assert not await driver.is_connected() + assert driver._connection._device_handle is None + + +async def test_driver_get_device_info( + mock_interface: MagicMock, + connected_driver: AbsorbanceReaderDriver, +) -> None: + + DEVICE_INFO = MagicMock(AbsorbanceHidInterface.DeviceInfo) + DEVICE_INFO.ref_no = "456" + DEVICE_INFO.sn = "123" + DEVICE_INFO.version = "1.0" + + mock_interface.byonoy_get_device_information.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR, + DEVICE_INFO, + ) + + info = await connected_driver.get_device_info() + + mock_interface.byonoy_get_device_information.assert_called_once() + assert info == {"serial_number": "123", "reference_number": "456", "version": "1.0"} + + +@pytest.mark.parametrize( + "parts_aligned, module_status", + [(True, AbsorbanceReaderLidStatus.ON), (False, AbsorbanceReaderLidStatus.OFF)], +) +async def test_driver_get_lid_status( + mock_interface: MagicMock, + connected_driver: AbsorbanceReaderDriver, + parts_aligned: bool, + module_status: AbsorbanceReaderLidStatus, +) -> None: + + mock_interface.byonoy_get_device_parts_aligned.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR, + parts_aligned, + ) + + status = await connected_driver.get_lid_status() + + mock_interface.byonoy_get_device_parts_aligned.assert_called_once() + assert status == module_status + + +async def test_driver_get_supported_wavelengths( + mock_interface: MagicMock, + connected_driver: AbsorbanceReaderDriver, +) -> None: + SUPPORTED_WAVELENGTHS = [450, 500] + mock_interface.byonoy_abs96_get_available_wavelengths.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR, + SUPPORTED_WAVELENGTHS, + ) + + assert not connected_driver._connection._supported_wavelengths + + wavelengths = await connected_driver.get_available_wavelengths() + + mock_interface.byonoy_abs96_get_available_wavelengths.assert_called_once() + assert connected_driver._connection._supported_wavelengths == SUPPORTED_WAVELENGTHS + assert wavelengths == SUPPORTED_WAVELENGTHS + + +async def test_driver_initialize_and_read( + mock_interface: MagicMock, + connected_driver: AbsorbanceReaderDriver, +) -> None: + # set up mock interface + connected_driver._connection._supported_wavelengths = [450, 500] + mock_interface.byonoy_abs96_initialize_single_measurement.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR + ) + mock_interface.ByonoyAbs96SingleMeasurementConfig = MagicMock( + spec=AbsorbanceHidInterface.MeasurementConfig + ) + + # current config should not have been setup yet + assert not connected_driver._connection._current_config + await connected_driver.initialize_measurement(450) + + conf = connected_driver._connection._current_config + assert conf and conf.sample_wavelength == 450 + mock_interface.byonoy_abs96_initialize_single_measurement.assert_called_once_with( + 1, conf + ) + + # setup up mock interface + MEASURE_RESULT = [0.1] * 96 + mock_interface.byonoy_abs96_single_measure.return_value = ( + MockErrorCode.BYONOY_ERROR_NO_ERROR, + MEASURE_RESULT, + ) + + result = await connected_driver.get_single_measurement(450) + mock_interface.byonoy_abs96_single_measure.assert_called_once_with(1, conf) + + assert result == MEASURE_RESULT diff --git a/app-shell-odd/src/http.ts b/app-shell-odd/src/http.ts index 008cd80133f..6a0371fa282 100644 --- a/app-shell-odd/src/http.ts +++ b/app-shell-odd/src/http.ts @@ -1,13 +1,14 @@ // fetch wrapper to throw if response is not ok import fs from 'fs' import { remove } from 'fs-extra' -import { Transform, Readable } from 'stream' import pump from 'pump' import _fetch from 'node-fetch' import FormData from 'form-data' +import { Transform } from 'stream' import { HTTP_API_VERSION } from './constants' +import type { Readable } from 'stream' import type { Request, RequestInit, Response } from 'node-fetch' type RequestInput = Request | string diff --git a/app-shell-odd/src/notifications/subscribe.ts b/app-shell-odd/src/notifications/subscribe.ts index 4db9e3dbf9a..7f57d6d15a5 100644 --- a/app-shell-odd/src/notifications/subscribe.ts +++ b/app-shell-odd/src/notifications/subscribe.ts @@ -1,5 +1,3 @@ -import mqtt from 'mqtt' - import { connectionStore } from './store' import { sendDeserialized, @@ -8,6 +6,7 @@ import { } from './deserialize' import { notifyLog } from './notifyLog' +import type mqtt from 'mqtt' import type { NotifyTopic } from '@opentrons/app/src/redux/shell/types' /** diff --git a/app-shell/src/http.ts b/app-shell/src/http.ts index 8a3a8131ceb..32676d40949 100644 --- a/app-shell/src/http.ts +++ b/app-shell/src/http.ts @@ -1,12 +1,13 @@ // fetch wrapper to throw if response is not ok import fs from 'fs' import fsPromises from 'fs/promises' -import { Transform, Readable } from 'stream' +import { Transform } from 'stream' import pump from 'pump' import _fetch from 'node-fetch' import FormData from 'form-data' import type { Request, RequestInit, Response } from 'node-fetch' +import type { Readable } from 'stream' type RequestInput = Request | string diff --git a/app-shell/src/notifications/index.ts b/app-shell/src/notifications/index.ts index 221addea9f6..6c162e66a02 100644 --- a/app-shell/src/notifications/index.ts +++ b/app-shell/src/notifications/index.ts @@ -4,7 +4,6 @@ import { cleanUpUnreachableRobots, getHealthyRobotDataForNotifyConnections, closeConnectionsForcefullyFor, - RobotData, } from './connect' import { subscribe } from './subscribe' import { notifyLog } from './notifyLog' @@ -12,6 +11,7 @@ import { notifyLog } from './notifyLog' import type { DiscoveryClientRobot } from '@opentrons/discovery-client' import type { BrowserWindow } from 'electron' import type { Action, Dispatch } from '../types' +import type { RobotData } from './connect' // Manages MQTT broker connections through a connection store. Broker connections are added based on health status // reported by discovery-client and broker connectivity status reported by MQTT. Because a robot may have several IPs, diff --git a/app-shell/src/notifications/subscribe.ts b/app-shell/src/notifications/subscribe.ts index 54ee43d92c6..0fda7b30d31 100644 --- a/app-shell/src/notifications/subscribe.ts +++ b/app-shell/src/notifications/subscribe.ts @@ -1,5 +1,3 @@ -import mqtt from 'mqtt' - import { connectionStore } from './store' import { sendDeserialized, @@ -8,6 +6,7 @@ import { } from './deserialize' import { notifyLog } from './notifyLog' +import type mqtt from 'mqtt' import type { NotifyTopic } from '@opentrons/app/src/redux/shell/types' /** diff --git a/app-shell/src/protocol-analysis/__tests__/protocolAnalysis.test.ts b/app-shell/src/protocol-analysis/__tests__/protocolAnalysis.test.ts index e83ed5d4c7a..8463e8a09cf 100644 --- a/app-shell/src/protocol-analysis/__tests__/protocolAnalysis.test.ts +++ b/app-shell/src/protocol-analysis/__tests__/protocolAnalysis.test.ts @@ -1,23 +1,24 @@ import { vi, it, expect, describe, beforeEach } from 'vitest' import { when } from 'vitest-when' -import electron from 'electron' import * as ProtocolAnalysis from '@opentrons/app/src/redux/protocol-analysis' import * as Cfg from '@opentrons/app/src/redux/config' import * as Dialogs from '../../dialogs' -import { Config, getConfig, handleConfigChange } from '../../config' +import { getConfig, handleConfigChange } from '../../config' import { getValidLabwareFilePaths } from '../../labware' import { selectPythonPath, getPythonPath } from '../getPythonPath' import { executeAnalyzeCli } from '../executeAnalyzeCli' import { writeFailedAnalysis } from '../writeFailedAnalysis' -import { createLogger } from '../../log' import { registerProtocolAnalysis, analyzeProtocolSource, CONFIG_PYTHON_PATH_TO_PYTHON_OVERRIDE, } from '..' -import { Dispatch } from '../../types' +import type electron from 'electron' +import type { createLogger } from '../../log' +import type { Dispatch } from '../../types' +import type { Config } from '../../config' vi.mock('../../labware') vi.mock('../../dialogs') diff --git a/app-shell/src/protocol-analysis/writeFailedAnalysis.ts b/app-shell/src/protocol-analysis/writeFailedAnalysis.ts index 8723cd52d04..02f0293dcde 100644 --- a/app-shell/src/protocol-analysis/writeFailedAnalysis.ts +++ b/app-shell/src/protocol-analysis/writeFailedAnalysis.ts @@ -1,7 +1,7 @@ import { writeFile } from 'fs/promises' import uuid from 'uuid/v4' -import { ProtocolAnalysisOutput } from '@opentrons/shared-data' +import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' const UNEXPECTED_ERROR_TYPE = 'UnexpectedAnalysisError' diff --git a/app-shell/src/robot-update/release-files.ts b/app-shell/src/robot-update/release-files.ts index 50e2366632a..2c6a4244670 100644 --- a/app-shell/src/robot-update/release-files.ts +++ b/app-shell/src/robot-update/release-files.ts @@ -7,13 +7,12 @@ import { move, readdir, remove, readFile } from 'fs-extra' import StreamZip from 'node-stream-zip' import getStream from 'get-stream' -import type { RobotUpdateTarget } from '@opentrons/app/src/redux/robot-update/types' - import { createLogger } from '../log' import { fetchToFile } from '../http' -import { Dispatch } from '../types' import { CURRENT_VERSION } from '../update' +import type { RobotUpdateTarget } from '@opentrons/app/src/redux/robot-update/types' +import type { Dispatch } from '../types' import type { DownloadProgress } from '../http' import type { ReleaseSetUrls, ReleaseSetFilepaths, UserFileInfo } from './types' @@ -94,16 +93,16 @@ export function downloadAndNotify( return move(tempPath, path, { overwrite: true }) .then(() => { if (isReleaseNotesDownload) { - return readFile(path, 'utf8').then(releaseNotes => + return readFile(path, 'utf8').then(releaseNotes => { dispatch({ type: 'robotUpdate:UPDATE_INFO', payload: { releaseNotes, target, version: CURRENT_VERSION }, }) - ) + }) } // This action will only have an effect if the user is actively waiting for the download to complete. else { - return dispatch({ + dispatch({ type: 'robotUpdate:DOWNLOAD_DONE', payload: target, }) @@ -151,7 +150,9 @@ export function readUpdateFileInfo(systemFile: string): Promise { versionInfo, })) - result.finally(() => zip.close()) + result.finally(() => { + zip.close() + }) return result }) diff --git a/app-shell/src/system-info/__tests__/dispatch.test.ts b/app-shell/src/system-info/__tests__/dispatch.test.ts index 4da4b838429..c6fcd11e6d9 100644 --- a/app-shell/src/system-info/__tests__/dispatch.test.ts +++ b/app-shell/src/system-info/__tests__/dispatch.test.ts @@ -5,7 +5,6 @@ import * as Fixtures from '@opentrons/app/src/redux/system-info/__fixtures__' import * as SystemInfo from '@opentrons/app/src/redux/system-info' import { uiInitialized } from '@opentrons/app/src/redux/shell/actions' import * as OS from '../../os' -import { createLogger } from '../../log' import { createUsbDeviceMonitor, getWindowsDriverVersion } from '../usb-devices' import { getActiveInterfaces, @@ -16,6 +15,7 @@ import { registerSystemInfo } from '..' import type { Dispatch } from '../../types' import type { UsbDeviceMonitor } from '../usb-devices' import type { NetworkInterfaceMonitor } from '../network-interfaces' +import type { createLogger } from '../../log' vi.mock('../../os') vi.mock('../usb-devices') diff --git a/app-shell/src/system-info/__tests__/usb-devices.test.ts b/app-shell/src/system-info/__tests__/usb-devices.test.ts index 47177333333..60a9eecea57 100644 --- a/app-shell/src/system-info/__tests__/usb-devices.test.ts +++ b/app-shell/src/system-info/__tests__/usb-devices.test.ts @@ -3,10 +3,11 @@ import { usb } from 'usb' import { vi, it, expect, describe, afterEach } from 'vitest' import * as Fixtures from '@opentrons/app/src/redux/system-info/__fixtures__' -import { createLogger } from '../../log' import { createUsbDeviceMonitor, getWindowsDriverVersion } from '../usb-devices' import { isWindows } from '../../os' +import type { createLogger } from '../../log' + vi.mock('execa') vi.mock('usb') vi.mock('electron-store') diff --git a/app-shell/src/usb.ts b/app-shell/src/usb.ts index accdf5c00d7..370051829d9 100644 --- a/app-shell/src/usb.ts +++ b/app-shell/src/usb.ts @@ -1,5 +1,5 @@ -import { ipcMain, IpcMainInvokeEvent } from 'electron' -import axios, { AxiosRequestConfig } from 'axios' +import { ipcMain } from 'electron' +import axios from 'axios' import FormData from 'form-data' import { @@ -17,6 +17,8 @@ import { USB_DEVICE_REMOVED, } from './constants' +import type { IpcMainInvokeEvent } from 'electron' +import type { AxiosRequestConfig } from 'axios' import type { IPCSafeFormData } from '@opentrons/app/src/redux/shell/types' import type { UsbDevice } from '@opentrons/app/src/redux/system-info/types' import type { PortInfo } from '@opentrons/usb-bridge/node-client' diff --git a/app/src/App/types.ts b/app/src/App/types.ts index 3b79224a535..806189ec1e8 100644 --- a/app/src/App/types.ts +++ b/app/src/App/types.ts @@ -1,4 +1,4 @@ -import * as React from 'react' +import type * as React from 'react' export interface RouteProps { /** diff --git a/app/src/atoms/Interstitial/Interstitial.tsx b/app/src/atoms/Interstitial/Interstitial.tsx index e512b8e7adb..c86968c1103 100644 --- a/app/src/atoms/Interstitial/Interstitial.tsx +++ b/app/src/atoms/Interstitial/Interstitial.tsx @@ -11,10 +11,9 @@ import { SPACING, Overlay, } from '@opentrons/components' -import { - InterstitialTitleBar, - InterstitialTitleBarProps, -} from './InterstitiallTitleBar' +import { InterstitialTitleBar } from './InterstitiallTitleBar' + +import type { InterstitialTitleBarProps } from './InterstitiallTitleBar' export interface InterstitialProps { titleBar: InterstitialTitleBarProps contentsClassName?: string diff --git a/app/src/atoms/MenuList/MenuItem.tsx b/app/src/atoms/MenuList/MenuItem.tsx index 42a4efe2cb8..b1a63aaec09 100644 --- a/app/src/atoms/MenuList/MenuItem.tsx +++ b/app/src/atoms/MenuList/MenuItem.tsx @@ -5,8 +5,8 @@ import { TYPOGRAPHY, ALIGN_CENTER, RESPONSIVENESS, - StyleProps, } from '@opentrons/components' +import type { StyleProps } from '@opentrons/components' interface ButtonProps extends StyleProps { /** optional isAlert boolean to turn the background red, only seen in ODD */ @@ -34,21 +34,23 @@ export const MenuItem = styled.button` text-align: ${TYPOGRAPHY.textAlignCenter}; font-size: ${TYPOGRAPHY.fontSize28}; background-color: ${({ isAlert }) => - isAlert ? COLORS.red50 : COLORS.transparent}; - color: ${({ isAlert }) => (isAlert ? COLORS.white : COLORS.black90)}; + isAlert != null ? COLORS.red50 : COLORS.transparent}; + color: ${({ isAlert }) => + isAlert != null ? COLORS.white : COLORS.black90}; padding: ${SPACING.spacing24}; height: 5.5rem; line-height: ${TYPOGRAPHY.lineHeight36}; &:hover, &:active { background-color: ${({ isAlert }) => - isAlert ? COLORS.red50 : COLORS.grey35}; + isAlert != null ? COLORS.red50 : COLORS.grey35}; } &:disabled { background-color: ${({ isAlert }) => - isAlert ? COLORS.red50 : COLORS.transparent}; - color: ${({ isAlert }) => (isAlert ? COLORS.white : COLORS.grey50)}; + isAlert != null ? COLORS.red50 : COLORS.transparent}; + color: ${({ isAlert }) => + isAlert != null ? COLORS.white : COLORS.grey50}; } } ` diff --git a/app/src/molecules/JogControls/types.ts b/app/src/molecules/JogControls/types.ts index f6896eaf313..9d0f906ec98 100644 --- a/app/src/molecules/JogControls/types.ts +++ b/app/src/molecules/JogControls/types.ts @@ -1,4 +1,4 @@ -import { +import type { HORIZONTAL_PLANE, VERTICAL_PLANE, NULL_STEP_SIZE_MM, diff --git a/app/src/molecules/LegacyModal/LegacyModalShell.tsx b/app/src/molecules/LegacyModal/LegacyModalShell.tsx index 9142ea14cbf..d18adc211ac 100644 --- a/app/src/molecules/LegacyModal/LegacyModalShell.tsx +++ b/app/src/molecules/LegacyModal/LegacyModalShell.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import styled from 'styled-components' import { - StyleProps, COLORS, POSITION_FIXED, POSITION_ABSOLUTE, @@ -15,6 +14,7 @@ import { styleProps, SPACING, } from '@opentrons/components' +import type { StyleProps } from '@opentrons/components' export interface LegacyModalShellProps extends StyleProps { /** Modal content */ children: React.ReactNode diff --git a/app/src/molecules/PythonLabwareOffsetSnippet/__tests__/createSnippet.test.ts b/app/src/molecules/PythonLabwareOffsetSnippet/__tests__/createSnippet.test.ts index 683caeed815..2d944a26dae 100644 --- a/app/src/molecules/PythonLabwareOffsetSnippet/__tests__/createSnippet.test.ts +++ b/app/src/molecules/PythonLabwareOffsetSnippet/__tests__/createSnippet.test.ts @@ -1,11 +1,11 @@ import { describe, it, expect } from 'vitest' import '@testing-library/jest-dom/vitest' -import { - transfer_settings, +import { transfer_settings } from '@opentrons/shared-data' +import { createSnippet } from '../createSnippet' +import type { ModuleModel, CompletedProtocolAnalysis, } from '@opentrons/shared-data' -import { createSnippet } from '../createSnippet' const protocolWithMagTempTC = ({ ...transfer_settings, diff --git a/app/src/molecules/PythonLabwareOffsetSnippet/createSnippet.ts b/app/src/molecules/PythonLabwareOffsetSnippet/createSnippet.ts index 7446158b52c..624e46ffaf6 100644 --- a/app/src/molecules/PythonLabwareOffsetSnippet/createSnippet.ts +++ b/app/src/molecules/PythonLabwareOffsetSnippet/createSnippet.ts @@ -1,8 +1,8 @@ import isEqual from 'lodash/isEqual' import { getLoadedLabwareDefinitionsByUri } from '@opentrons/shared-data' import { getLabwareDefinitionUri } from '../../organisms/Devices/ProtocolRun/utils/getLabwareDefinitionUri' -import { LabwareOffset } from '@opentrons/api-client' import { getLabwareOffsetLocation } from '../../organisms/Devices/ProtocolRun/utils/getLabwareOffsetLocation' +import type { LabwareOffset } from '@opentrons/api-client' import type { LoadedLabware, LoadedModule, diff --git a/app/src/organisms/AnalyticsSettingsModal/AnalyticsToggle.tsx b/app/src/organisms/AnalyticsSettingsModal/AnalyticsToggle.tsx index 110bfafd4b0..f577c1e3faf 100644 --- a/app/src/organisms/AnalyticsSettingsModal/AnalyticsToggle.tsx +++ b/app/src/organisms/AnalyticsSettingsModal/AnalyticsToggle.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { connect, MapStateToProps, MapDispatchToProps } from 'react-redux' +import { connect } from 'react-redux' import { LabeledToggle } from '@opentrons/components' import { @@ -7,6 +7,7 @@ import { getAnalyticsOptedIn, } from '../../redux/analytics' +import type { MapStateToProps, MapDispatchToProps } from 'react-redux' import type { State } from '../../redux/types' interface SP { diff --git a/app/src/organisms/ApplyHistoricOffsets/LabwareOffsetTable.tsx b/app/src/organisms/ApplyHistoricOffsets/LabwareOffsetTable.tsx index c73326031b3..b9248b6de92 100644 --- a/app/src/organisms/ApplyHistoricOffsets/LabwareOffsetTable.tsx +++ b/app/src/organisms/ApplyHistoricOffsets/LabwareOffsetTable.tsx @@ -1,11 +1,11 @@ import * as React from 'react' import styled from 'styled-components' import { useTranslation } from 'react-i18next' -import { LabwareDefinition2 } from '@opentrons/shared-data' import { SPACING, TYPOGRAPHY, COLORS } from '@opentrons/components' import { OffsetVector } from '../../molecules/OffsetVector' import { formatTimestamp } from '../Devices/utils' import { getDisplayLocation } from '../LabwarePositionCheck/utils/getDisplayLocation' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { OffsetCandidate } from './hooks/useOffsetCandidatesForAnalysis' const OffsetTable = styled('table')` diff --git a/app/src/organisms/ApplyHistoricOffsets/hooks/useOffsetCandidatesForAnalysis.ts b/app/src/organisms/ApplyHistoricOffsets/hooks/useOffsetCandidatesForAnalysis.ts index 761c457bcef..7abc8f9fd97 100644 --- a/app/src/organisms/ApplyHistoricOffsets/hooks/useOffsetCandidatesForAnalysis.ts +++ b/app/src/organisms/ApplyHistoricOffsets/hooks/useOffsetCandidatesForAnalysis.ts @@ -3,12 +3,14 @@ import { getLabwareDisplayName, IDENTITY_VECTOR, getLoadedLabwareDefinitionsByUri, - CompletedProtocolAnalysis, } from '@opentrons/shared-data' import { useAllHistoricOffsets } from './useAllHistoricOffsets' import { getLabwareLocationCombos } from './getLabwareLocationCombos' -import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' +import type { + ProtocolAnalysisOutput, + CompletedProtocolAnalysis, +} from '@opentrons/shared-data' import type { LabwareOffset } from '@opentrons/api-client' export interface OffsetCandidate extends LabwareOffset { runCreatedAt: string diff --git a/app/src/organisms/CalibrateDeck/types.ts b/app/src/organisms/CalibrateDeck/types.ts index b2df75e4a6d..52467a1726d 100644 --- a/app/src/organisms/CalibrateDeck/types.ts +++ b/app/src/organisms/CalibrateDeck/types.ts @@ -1,4 +1,4 @@ -import { DispatchRequestsType } from '../../redux/robot-api' +import type { DispatchRequestsType } from '../../redux/robot-api' import type { MutableRefObject } from 'react' import type { DeckCalibrationSession } from '../../redux/sessions/types' export interface CalibrateDeckParentProps { diff --git a/app/src/organisms/CalibratePipetteOffset/__tests__/CalibratePipetteOffset.test.tsx b/app/src/organisms/CalibratePipetteOffset/__tests__/CalibratePipetteOffset.test.tsx index febbda5ded4..a4ea115fa73 100644 --- a/app/src/organisms/CalibratePipetteOffset/__tests__/CalibratePipetteOffset.test.tsx +++ b/app/src/organisms/CalibratePipetteOffset/__tests__/CalibratePipetteOffset.test.tsx @@ -1,18 +1,15 @@ import * as React from 'react' import { vi, it, describe, expect, beforeEach } from 'vitest' import { when } from 'vitest-when' - -import { renderWithProviders } from '../../../__testing-utils__' +import { fireEvent, screen } from '@testing-library/react' import { getDeckDefinitions } from '@opentrons/shared-data' - +import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import * as Sessions from '../../../redux/sessions' import { mockPipetteOffsetCalibrationSessionAttributes } from '../../../redux/sessions/__fixtures__' - import { CalibratePipetteOffset } from '../index' import type { PipetteOffsetCalibrationStep } from '../../../redux/sessions/types' -import { DispatchRequestsType } from '../../../redux/robot-api' -import { fireEvent, screen } from '@testing-library/react' +import type { DispatchRequestsType } from '../../../redux/robot-api' vi.mock('@opentrons/shared-data', async importOriginal => { const actual = await importOriginal() diff --git a/app/src/organisms/CalibratePipetteOffset/types.ts b/app/src/organisms/CalibratePipetteOffset/types.ts index e26c2d8216c..39df36d6ca5 100644 --- a/app/src/organisms/CalibratePipetteOffset/types.ts +++ b/app/src/organisms/CalibratePipetteOffset/types.ts @@ -5,7 +5,7 @@ import type { } from '../../redux/sessions/types' import type { PipetteOffsetCalibrationStep } from '../../redux/sessions/pipette-offset-calibration/types' -import { DispatchRequestsType } from '../../redux/robot-api' +import type { DispatchRequestsType } from '../../redux/robot-api' export interface CalibratePipetteOffsetParentProps { robotName: string diff --git a/app/src/organisms/CalibrateTipLength/types.ts b/app/src/organisms/CalibrateTipLength/types.ts index bcb791c5f5d..829793ed8be 100644 --- a/app/src/organisms/CalibrateTipLength/types.ts +++ b/app/src/organisms/CalibrateTipLength/types.ts @@ -1,4 +1,4 @@ -import { DispatchRequestsType } from '../../redux/robot-api' +import type { DispatchRequestsType } from '../../redux/robot-api' import type { TipLengthCalibrationSession } from '../../redux/sessions/types' export interface CalibrateTipLengthParentProps { diff --git a/app/src/organisms/CalibrationPanels/__tests__/DeckSetup.test.tsx b/app/src/organisms/CalibrationPanels/__tests__/DeckSetup.test.tsx index 3a6922f86be..d52e42581b1 100644 --- a/app/src/organisms/CalibrationPanels/__tests__/DeckSetup.test.tsx +++ b/app/src/organisms/CalibrationPanels/__tests__/DeckSetup.test.tsx @@ -1,9 +1,6 @@ import * as React from 'react' import { fireEvent, screen } from '@testing-library/react' import { vi, it, describe, expect } from 'vitest' - -import { getDeckDefinitions } from '@opentrons/shared-data' - import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { @@ -12,9 +9,10 @@ import { mockTipLengthCalBlock, } from '../../../redux/sessions/__fixtures__' import * as Sessions from '../../../redux/sessions' - import { DeckSetup } from '../DeckSetup' +import type { getDeckDefinitions } from '@opentrons/shared-data' + vi.mock('../../../assets/labware/getLabware') vi.mock('@opentrons/shared-data', async importOriginal => { const actual = await importOriginal() diff --git a/app/src/organisms/ChangePipette/ConfirmPipette.tsx b/app/src/organisms/ChangePipette/ConfirmPipette.tsx index 2b7b75da8da..9b19fe0289d 100644 --- a/app/src/organisms/ChangePipette/ConfirmPipette.tsx +++ b/app/src/organisms/ChangePipette/ConfirmPipette.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' - +import { OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { COLORS, SPACING, @@ -13,11 +13,10 @@ import { CheckPipettesButton } from './CheckPipettesButton' import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' import { LevelPipette } from './LevelPipette' -import { +import type { PipetteNameSpecs, PipetteModelSpecs, PipetteDisplayCategory, - OT2_ROBOT_TYPE, } from '@opentrons/shared-data' import type { PipetteOffsetCalibration } from '../../redux/calibration/types' import type { Mount } from '../../redux/pipettes/types' diff --git a/app/src/organisms/ChangePipette/__tests__/ChangePipette.test.tsx b/app/src/organisms/ChangePipette/__tests__/ChangePipette.test.tsx index 4e05137cfab..ad18c140bee 100644 --- a/app/src/organisms/ChangePipette/__tests__/ChangePipette.test.tsx +++ b/app/src/organisms/ChangePipette/__tests__/ChangePipette.test.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import { vi, it, describe, expect, beforeEach } from 'vitest' import { fireEvent } from '@testing-library/react' -import { useHistory } from 'react-router-dom' import { getPipetteNameSpecs } from '@opentrons/shared-data' @@ -22,6 +21,7 @@ import { ExitModal } from '../ExitModal' import { ConfirmPipette } from '../ConfirmPipette' import { ChangePipette } from '..' +import type { useHistory } from 'react-router-dom' import type { PipetteNameSpecs } from '@opentrons/shared-data' import type { AttachedPipette } from '../../../redux/pipettes/types' import type { DispatchApiRequestType } from '../../../redux/robot-api' diff --git a/app/src/organisms/ChangePipette/__tests__/ConfirmPipette.test.tsx b/app/src/organisms/ChangePipette/__tests__/ConfirmPipette.test.tsx index 9cc9b232db8..39b0f7fec7c 100644 --- a/app/src/organisms/ChangePipette/__tests__/ConfirmPipette.test.tsx +++ b/app/src/organisms/ChangePipette/__tests__/ConfirmPipette.test.tsx @@ -8,13 +8,13 @@ import { LEFT } from '@opentrons/shared-data' import { mockPipetteInfo } from '../../../redux/pipettes/__fixtures__' import { CheckPipettesButton } from '../CheckPipettesButton' import { ConfirmPipette } from '../ConfirmPipette' -import { LevelingVideo } from '../LevelPipette' import type { PipetteModelSpecs, PipetteNameSpecs, } from '@opentrons/shared-data' import type { PipetteOffsetCalibration } from '../../../redux/calibration/types' +import type { LevelingVideo } from '../LevelPipette' vi.mock('../CheckPipettesButton') vi.mock('../LevelPipette', async importOriginal => { diff --git a/app/src/organisms/ChangePipette/__tests__/LevelPipette.test.tsx b/app/src/organisms/ChangePipette/__tests__/LevelPipette.test.tsx index 66526673ca1..1e58d6b03b1 100644 --- a/app/src/organisms/ChangePipette/__tests__/LevelPipette.test.tsx +++ b/app/src/organisms/ChangePipette/__tests__/LevelPipette.test.tsx @@ -2,14 +2,14 @@ import * as React from 'react' import { vi, it, describe, expect, beforeEach } from 'vitest' import { fireEvent } from '@testing-library/react' -import { LEFT, PipetteNameSpecs } from '@opentrons/shared-data' - +import { LEFT } from '@opentrons/shared-data' import { nestedTextMatcher, renderWithProviders, } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { LevelPipette } from '../LevelPipette' +import type { PipetteNameSpecs } from '@opentrons/shared-data' const render = (props: React.ComponentProps) => { return renderWithProviders(, { diff --git a/app/src/organisms/CheckCalibration/types.ts b/app/src/organisms/CheckCalibration/types.ts index 52113aefd17..03a70b2127c 100644 --- a/app/src/organisms/CheckCalibration/types.ts +++ b/app/src/organisms/CheckCalibration/types.ts @@ -1,5 +1,5 @@ import type { CalibrationCheckSession } from '../../redux/sessions/types' -import { DispatchRequestsType } from '../../redux/robot-api' +import type { DispatchRequestsType } from '../../redux/robot-api' export interface CalibrationCheckParentProps { robotName: string diff --git a/app/src/organisms/ChildNavigation/ChildNavigation.stories.tsx b/app/src/organisms/ChildNavigation/ChildNavigation.stories.tsx index cddbb2cd7a3..f6e87878be1 100644 --- a/app/src/organisms/ChildNavigation/ChildNavigation.stories.tsx +++ b/app/src/organisms/ChildNavigation/ChildNavigation.stories.tsx @@ -1,8 +1,8 @@ import * as React from 'react' import { VIEWPORT } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '.' import type { Story, Meta } from '@storybook/react' +import type { SmallButton } from '../../atoms/buttons' export default { title: 'ODD/Organisms/ChildNavigation', diff --git a/app/src/organisms/ChildNavigation/__tests__/ChildNavigation.test.tsx b/app/src/organisms/ChildNavigation/__tests__/ChildNavigation.test.tsx index 8e2a1c7ec0e..b3ea0914d8f 100644 --- a/app/src/organisms/ChildNavigation/__tests__/ChildNavigation.test.tsx +++ b/app/src/organisms/ChildNavigation/__tests__/ChildNavigation.test.tsx @@ -3,8 +3,8 @@ import { fireEvent, screen } from '@testing-library/react' import { vi, it, describe, expect, beforeEach } from 'vitest' import { renderWithProviders } from '../../../__testing-utils__' -import { SmallButton } from '../../../atoms/buttons' import { ChildNavigation } from '..' +import type { SmallButton } from '../../../atoms/buttons' const render = (props: React.ComponentProps) => renderWithProviders() diff --git a/app/src/organisms/ChooseRobotSlideout/AvailableRobotOption.tsx b/app/src/organisms/ChooseRobotSlideout/AvailableRobotOption.tsx index 148b9e30e35..190b3e5bb5a 100644 --- a/app/src/organisms/ChooseRobotSlideout/AvailableRobotOption.tsx +++ b/app/src/organisms/ChooseRobotSlideout/AvailableRobotOption.tsx @@ -22,13 +22,13 @@ import { getNetworkInterfaces, fetchStatus } from '../../redux/networking' import { appShellRequestor } from '../../redux/shell/remote' import OT2_PNG from '../../assets/images/OT2-R_HERO.png' import FLEX_PNG from '../../assets/images/FLEX.png' -import { RobotBusyStatusAction } from '.' import { useNotifyAllRunsQuery } from '../../resources/runs' import type { IconName } from '@opentrons/components' import type { Runs } from '@opentrons/api-client' import type { Robot } from '../../redux/discovery/types' import type { Dispatch, State } from '../../redux/types' +import type { RobotBusyStatusAction } from '.' interface AvailableRobotOptionProps { robot: Robot diff --git a/app/src/organisms/CommandText/LoadCommandText.tsx b/app/src/organisms/CommandText/LoadCommandText.tsx index 87eac184546..251d0f3d38d 100644 --- a/app/src/organisms/CommandText/LoadCommandText.tsx +++ b/app/src/organisms/CommandText/LoadCommandText.tsx @@ -3,7 +3,6 @@ import { getModuleDisplayName, getModuleType, getOccludedSlotCountForModule, - LoadLabwareRunTimeCommand, getPipetteNameSpecs, } from '@opentrons/shared-data' import { @@ -14,7 +13,11 @@ import { getLiquidDisplayName, } from './utils' -import type { RunTimeCommand, RobotType } from '@opentrons/shared-data' +import type { + RunTimeCommand, + RobotType, + LoadLabwareRunTimeCommand, +} from '@opentrons/shared-data' import type { CommandTextData } from './types' interface LoadCommandTextProps { diff --git a/app/src/organisms/CommandText/__tests__/CommandText.test.tsx b/app/src/organisms/CommandText/__tests__/CommandText.test.tsx index 422583bcb3b..3cb3dac0a96 100644 --- a/app/src/organisms/CommandText/__tests__/CommandText.test.tsx +++ b/app/src/organisms/CommandText/__tests__/CommandText.test.tsx @@ -5,9 +5,7 @@ import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE, GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA, - MoveToAddressableAreaForDropTipRunTimeCommand, } from '@opentrons/shared-data' - import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { CommandText } from '../' @@ -31,6 +29,7 @@ import type { MoveToWellRunTimeCommand, PrepareToAspirateRunTimeCommand, RunTimeCommand, + MoveToAddressableAreaForDropTipRunTimeCommand, } from '@opentrons/shared-data' describe('CommandText', () => { diff --git a/app/src/organisms/CommandText/utils/getLabwareDisplayLocation.ts b/app/src/organisms/CommandText/utils/getLabwareDisplayLocation.ts index 1af68d1a8d4..7f28d42b421 100644 --- a/app/src/organisms/CommandText/utils/getLabwareDisplayLocation.ts +++ b/app/src/organisms/CommandText/utils/getLabwareDisplayLocation.ts @@ -4,12 +4,11 @@ import { getModuleDisplayName, getModuleType, getOccludedSlotCountForModule, - LabwareLocation, } from '@opentrons/shared-data' import { getModuleDisplayLocation } from './getModuleDisplayLocation' import { getModuleModel } from './getModuleModel' import { getLabwareDefinitionsFromCommands } from '../../LabwarePositionCheck/utils/labware' -import type { RobotType } from '@opentrons/shared-data' +import type { RobotType, LabwareLocation } from '@opentrons/shared-data' import type { TFunction } from 'i18next' import type { CommandTextData } from '../types' diff --git a/app/src/organisms/CommandText/utils/getWellRange.ts b/app/src/organisms/CommandText/utils/getWellRange.ts index 7676aef6969..a0700357413 100644 --- a/app/src/organisms/CommandText/utils/getWellRange.ts +++ b/app/src/organisms/CommandText/utils/getWellRange.ts @@ -1,8 +1,5 @@ -import { - getPipetteNameSpecs, - PipetteName, - RunTimeCommand, -} from '@opentrons/shared-data' +import { getPipetteNameSpecs } from '@opentrons/shared-data' +import type { PipetteName, RunTimeCommand } from '@opentrons/shared-data' /** * @param pipetteName name of pipette being used diff --git a/app/src/organisms/DeviceDetailsDeckConfiguration/__tests__/DeckConfigurationDiscardChangesModal.test.tsx b/app/src/organisms/DeviceDetailsDeckConfiguration/__tests__/DeckConfigurationDiscardChangesModal.test.tsx index 33b112e1043..0461f81496b 100644 --- a/app/src/organisms/DeviceDetailsDeckConfiguration/__tests__/DeckConfigurationDiscardChangesModal.test.tsx +++ b/app/src/organisms/DeviceDetailsDeckConfiguration/__tests__/DeckConfigurationDiscardChangesModal.test.tsx @@ -1,11 +1,11 @@ import * as React from 'react' import { fireEvent, screen } from '@testing-library/react' import { describe, it, beforeEach, vi, expect } from 'vitest' -import { useHistory } from 'react-router-dom' import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { DeckConfigurationDiscardChangesModal } from '../DeckConfigurationDiscardChangesModal' +import type { useHistory } from 'react-router-dom' const mockFunc = vi.fn() const mockGoBack = vi.fn() diff --git a/app/src/organisms/Devices/PipetteCard/PipetteOverflowMenu.tsx b/app/src/organisms/Devices/PipetteCard/PipetteOverflowMenu.tsx index 8c21af89c5d..027a5cd1529 100644 --- a/app/src/organisms/Devices/PipetteCard/PipetteOverflowMenu.tsx +++ b/app/src/organisms/Devices/PipetteCard/PipetteOverflowMenu.tsx @@ -10,13 +10,13 @@ import { SPACING, DIRECTION_COLUMN, } from '@opentrons/components' -import { PipetteModelSpecs } from '@opentrons/shared-data' import { MenuItem } from '../../../atoms/MenuList/MenuItem' import { Divider } from '../../../atoms/structure' -import type { Mount } from '../../../redux/pipettes/types' +import type { PipetteModelSpecs } from '@opentrons/shared-data' import type { PipetteSettingsFieldsMap } from '@opentrons/api-client' +import type { Mount } from '../../../redux/pipettes/types' interface PipetteOverflowMenuProps { pipetteSpecs: PipetteModelSpecs | null diff --git a/app/src/organisms/Devices/PipetteCard/PipetteSettingsSlideout.tsx b/app/src/organisms/Devices/PipetteCard/PipetteSettingsSlideout.tsx index 0872255474b..e8681b99812 100644 --- a/app/src/organisms/Devices/PipetteCard/PipetteSettingsSlideout.tsx +++ b/app/src/organisms/Devices/PipetteCard/PipetteSettingsSlideout.tsx @@ -1,14 +1,14 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { Flex } from '@opentrons/components' -import { PipetteModelSpecs } from '@opentrons/shared-data' import { useUpdatePipetteSettingsMutation } from '@opentrons/react-api-client' import { Slideout } from '../../../atoms/Slideout' import { ConfigFormSubmitButton } from '../../ConfigurePipette/ConfigFormSubmitButton' import { ConfigurePipette } from '../../ConfigurePipette' -import type { AttachedPipette } from '../../../redux/pipettes/types' +import type { PipetteModelSpecs } from '@opentrons/shared-data' import type { PipetteSettingsFieldsMap } from '@opentrons/api-client' +import type { AttachedPipette } from '../../../redux/pipettes/types' interface PipetteSettingsSlideoutProps { robotName: string diff --git a/app/src/organisms/Devices/ProtocolRun/RunTimer.tsx b/app/src/organisms/Devices/ProtocolRun/RunTimer.tsx index 42076cbf964..337431c7f0c 100644 --- a/app/src/organisms/Devices/ProtocolRun/RunTimer.tsx +++ b/app/src/organisms/Devices/ProtocolRun/RunTimer.tsx @@ -1,11 +1,11 @@ import * as React from 'react' -import { CSSProp } from 'styled-components' import { RUN_STATUS_STOP_REQUESTED } from '@opentrons/api-client' import { useInterval, TYPOGRAPHY, StyledText } from '@opentrons/components' import { formatInterval } from '../../../organisms/RunTimeControl/utils' import { EMPTY_TIMESTAMP } from '../constants' +import type { CSSProp } from 'styled-components' export function RunTimer({ runStatus, diff --git a/app/src/organisms/Devices/ProtocolRun/SetupGripperCalibrationItem.tsx b/app/src/organisms/Devices/ProtocolRun/SetupGripperCalibrationItem.tsx index 255a69f467c..f9eaec4b86e 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupGripperCalibrationItem.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupGripperCalibrationItem.tsx @@ -8,14 +8,15 @@ import { JUSTIFY_FLEX_END, WRAP, } from '@opentrons/components' -import { GripperModel, getGripperDisplayName } from '@opentrons/shared-data' +import { getGripperDisplayName } from '@opentrons/shared-data' import { TertiaryButton } from '../../../atoms/buttons' import { SetupCalibrationItem } from './SetupCalibrationItem' import { GripperWizardFlows } from '../../GripperWizardFlows' +import { GRIPPER_FLOW_TYPES } from '../../GripperWizardFlows/constants' import type { GripperData } from '@opentrons/api-client' +import type { GripperModel } from '@opentrons/shared-data' import type { GripperWizardFlowType } from '../../GripperWizardFlows/types' -import { GRIPPER_FLOW_TYPES } from '../../GripperWizardFlows/constants' interface SetupGripperCalibrationItemProps { gripperData: GripperData | null diff --git a/app/src/organisms/Devices/ProtocolRun/SetupLiquids/__tests__/LiquidDetailCard.test.tsx b/app/src/organisms/Devices/ProtocolRun/SetupLiquids/__tests__/LiquidDetailCard.test.tsx index 648d80f8806..48d22bb3776 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupLiquids/__tests__/LiquidDetailCard.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupLiquids/__tests__/LiquidDetailCard.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { fireEvent, screen } from '@testing-library/react' -import { describe, it, beforeEach, vi, expect, Mock } from 'vitest' +import { describe, it, beforeEach, vi, expect } from 'vitest' import { SPACING, COLORS } from '@opentrons/components' @@ -15,6 +15,7 @@ import { } from '../../../../../redux/analytics' import { getIsOnDevice } from '../../../../../redux/config' import { LiquidDetailCard } from '../LiquidDetailCard' +import type { Mock } from 'vitest' vi.mock('../../../../../redux/analytics') vi.mock('../../../../../redux/config') diff --git a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/LocationConflictModal.test.tsx b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/LocationConflictModal.test.tsx index 5314acbb283..10ef3c36d98 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/LocationConflictModal.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/LocationConflictModal.test.tsx @@ -1,5 +1,4 @@ import * as React from 'react' -import { UseQueryResult } from 'react-query' import { MemoryRouter } from 'react-router-dom' import { screen, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom/vitest' @@ -22,6 +21,7 @@ import { useCloseCurrentRun } from '../../../../ProtocolUpload/hooks' import { LocationConflictModal } from '../LocationConflictModal' import { useNotifyDeckConfigurationQuery } from '../../../../../resources/deck_configuration' +import type { UseQueryResult } from 'react-query' import type { DeckConfiguration } from '@opentrons/shared-data' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/ProtocolRun/__tests__/LabwareInfoOverlay.test.tsx b/app/src/organisms/Devices/ProtocolRun/__tests__/LabwareInfoOverlay.test.tsx index c56281c127b..8ff94806bdd 100644 --- a/app/src/organisms/Devices/ProtocolRun/__tests__/LabwareInfoOverlay.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/__tests__/LabwareInfoOverlay.test.tsx @@ -1,15 +1,10 @@ import * as React from 'react' import { when } from 'vitest-when' import { describe, it, beforeEach, vi, afterEach, expect } from 'vitest' - import { getLabwareDisplayName, - LabwareDefinition2, - ProtocolFile, - LoadedLabware, fixtureTiprack300ul, } from '@opentrons/shared-data' - import { nestedTextMatcher, renderWithProviders, @@ -20,6 +15,11 @@ import { getLabwareLocation } from '../utils/getLabwareLocation' import { LabwareInfoOverlay } from '../LabwareInfoOverlay' import { getLabwareDefinitionUri } from '../utils/getLabwareDefinitionUri' import { useLabwareOffsetForLabware } from '../useLabwareOffsetForLabware' +import type { + LabwareDefinition2, + ProtocolFile, + LoadedLabware, +} from '@opentrons/shared-data' vi.mock('../../../ProtocolUpload/hooks') vi.mock('../utils/getLabwareLocation') diff --git a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunModuleControls.test.tsx b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunModuleControls.test.tsx index fdcf49dbebb..5de2516791b 100644 --- a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunModuleControls.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunModuleControls.test.tsx @@ -5,7 +5,6 @@ import { screen } from '@testing-library/react' import { renderWithProviders } from '../../../../__testing-utils__' import { i18n } from '../../../../i18n' -import { ModuleModel, ModuleType } from '@opentrons/shared-data' import { useInstrumentsQuery } from '@opentrons/react-api-client' import { ProtocolRunModuleControls } from '../ProtocolRunModuleControls' import { ModuleCard } from '../../../ModuleCard' @@ -16,6 +15,7 @@ import { mockThermocycler, mockHeaterShaker, } from '../../../../redux/modules/__fixtures__' +import type { ModuleModel, ModuleType } from '@opentrons/shared-data' vi.mock('@opentrons/react-api-client') vi.mock('../../../ModuleCard') diff --git a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx index e2398fb084c..268afc7f151 100644 --- a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx @@ -1,10 +1,7 @@ import * as React from 'react' -import { UseQueryResult } from 'react-query' import { describe, it, vi, beforeEach, afterEach, expect } from 'vitest' import { screen } from '@testing-library/react' import { when } from 'vitest-when' - -import { Run } from '@opentrons/api-client' import { InfoScreen } from '@opentrons/components' import { renderWithProviders } from '../../../../__testing-utils__' import { i18n } from '../../../../i18n' @@ -12,9 +9,9 @@ import { useMostRecentCompletedAnalysis } from '../../../LabwarePositionCheck/us import { useRunStatus } from '../../../RunTimeControl/hooks' import { useNotifyRunQuery } from '../../../../resources/runs' import { mockSucceededRun } from '../../../RunTimeControl/__fixtures__' - import { ProtocolRunRuntimeParameters } from '../ProtocolRunRunTimeParameters' - +import type { UseQueryResult } from 'react-query' +import type { Run } from '@opentrons/api-client' import type { CompletedProtocolAnalysis, RunTimeParameter, diff --git a/app/src/organisms/Devices/ProtocolRun/__tests__/SetupFlexPipetteCalibrationItem.test.tsx b/app/src/organisms/Devices/ProtocolRun/__tests__/SetupFlexPipetteCalibrationItem.test.tsx index 65dfccbf6a4..13442cb63c5 100644 --- a/app/src/organisms/Devices/ProtocolRun/__tests__/SetupFlexPipetteCalibrationItem.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/__tests__/SetupFlexPipetteCalibrationItem.test.tsx @@ -11,7 +11,7 @@ import { useMostRecentCompletedAnalysis } from '../../../LabwarePositionCheck/us import { PipetteWizardFlows } from '../../../PipetteWizardFlows' import { SetupFlexPipetteCalibrationItem } from '../SetupFlexPipetteCalibrationItem' import _uncastedModifiedSimpleV6Protocol from '../../hooks/__fixtures__/modifiedSimpleV6.json' -import { CompletedProtocolAnalysis } from '@opentrons/shared-data' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' vi.mock('@opentrons/react-api-client') vi.mock('../../../PipetteWizardFlows') diff --git a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLabwareOffsetLocation.test.tsx b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLabwareOffsetLocation.test.tsx index b4b59c212f2..4b81bacb8cf 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLabwareOffsetLocation.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLabwareOffsetLocation.test.tsx @@ -2,7 +2,6 @@ import { when } from 'vitest-when' import { describe, it, beforeEach, vi, expect, afterEach } from 'vitest' import { - CompletedProtocolAnalysis, getLabwareDefURI, multiple_tipacks_with_tc, opentrons96PcrAdapterV1, @@ -14,6 +13,7 @@ import type { LoadedLabware, LoadedModule, LabwareDefinition2, + CompletedProtocolAnalysis, } from '@opentrons/shared-data' vi.mock('../getLabwareLocation') diff --git a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLocationInfoNames.test.ts b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLocationInfoNames.test.ts index 8ff543ffcf4..5f6a14090f0 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLocationInfoNames.test.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getLocationInfoNames.test.ts @@ -1,6 +1,7 @@ import { describe, it, vi, expect, beforeEach } from 'vitest' -import { getLabwareDisplayName, ModuleModel } from '@opentrons/shared-data' +import { getLabwareDisplayName } from '@opentrons/shared-data' import { getLocationInfoNames } from '../getLocationInfoNames' +import type { ModuleModel } from '@opentrons/shared-data' const ADAPTER_DISPLAY_NAME = 'Opentrons 96 Flat Bottom Adapter' const LABWARE_DISPLAY_NAME = 'Corning 24 Well Plate 3.4 mL Flat' diff --git a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getModuleInitialLoadInfo.test.ts b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getModuleInitialLoadInfo.test.ts index 25225a56ea2..c30e012cc7e 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getModuleInitialLoadInfo.test.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getModuleInitialLoadInfo.test.ts @@ -1,10 +1,10 @@ import { describe, it, expect } from 'vitest' -import { - transfer_settings, +import { transfer_settings } from '@opentrons/shared-data' +import { getModuleInitialLoadInfo } from '../getModuleInitialLoadInfo' +import type { + LoadModuleRunTimeCommand, CompletedProtocolAnalysis, } from '@opentrons/shared-data' -import { getModuleInitialLoadInfo } from '../getModuleInitialLoadInfo' -import type { LoadModuleRunTimeCommand } from '@opentrons/shared-data' const protocolWithMagTempTC = (transfer_settings as unknown) as CompletedProtocolAnalysis diff --git a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getProtocolModulesInfo.test.ts b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getProtocolModulesInfo.test.ts index 93528250b0d..fcacd157034 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getProtocolModulesInfo.test.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getProtocolModulesInfo.test.ts @@ -4,11 +4,13 @@ import { multiple_temp_modules, ot2DeckDefV5, getModuleDef2, +} from '@opentrons/shared-data' +import { getProtocolModulesInfo } from '../getProtocolModulesInfo' +import type { ProtocolAnalysisOutput, LoadedLabware, LoadedModule, } from '@opentrons/shared-data' -import { getProtocolModulesInfo } from '../getProtocolModulesInfo' const protocolWithMagTempTC = ({ ...transfer_settings, diff --git a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getSlotLabwareDefinition.test.ts b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getSlotLabwareDefinition.test.ts index 973f50f5d61..5ee37cced9c 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getSlotLabwareDefinition.test.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/__tests__/getSlotLabwareDefinition.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest' -import { RunTimeCommand } from '@opentrons/shared-data' import { mockDefinition } from '../../../../../redux/custom-labware/__fixtures__' import { getSlotLabwareDefinition } from '../getSlotLabwareDefinition' +import type { RunTimeCommand } from '@opentrons/shared-data' const LABWARE_ID = '60e8b050-3412-11eb-ad93-ed232a2337cf:opentrons/corning_24_wellplate_3.4ml_flat/1' diff --git a/app/src/organisms/Devices/ProtocolRun/utils/getLocationInfoNames.ts b/app/src/organisms/Devices/ProtocolRun/utils/getLocationInfoNames.ts index 594d5d37f97..c01d46259f5 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/getLocationInfoNames.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/getLocationInfoNames.ts @@ -1,5 +1,5 @@ -import { - getLabwareDisplayName, +import { getLabwareDisplayName } from '@opentrons/shared-data' +import type { LoadLabwareRunTimeCommand, RunTimeCommand, LoadModuleRunTimeCommand, diff --git a/app/src/organisms/Devices/ProtocolRun/utils/getModuleName.ts b/app/src/organisms/Devices/ProtocolRun/utils/getModuleName.ts index 249c90c1749..7703a1da9c4 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/getModuleName.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/getModuleName.ts @@ -1,4 +1,4 @@ -import { ModuleTypesThatRequireExtraAttention } from './getModuleTypesThatRequireExtraAttention' +import type { ModuleTypesThatRequireExtraAttention } from './getModuleTypesThatRequireExtraAttention' export const getModuleName = ( type: ModuleTypesThatRequireExtraAttention diff --git a/app/src/organisms/Devices/ProtocolRun/utils/getModuleTypesThatRequireExtraAttention.ts b/app/src/organisms/Devices/ProtocolRun/utils/getModuleTypesThatRequireExtraAttention.ts index b3f50c09514..4efd3db210c 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/getModuleTypesThatRequireExtraAttention.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/getModuleTypesThatRequireExtraAttention.ts @@ -1,4 +1,5 @@ -import { getModuleType, ModuleModel, ModuleType } from '@opentrons/shared-data' +import { getModuleType } from '@opentrons/shared-data' +import type { ModuleModel, ModuleType } from '@opentrons/shared-data' const MODULE_TYPES_THAT_REQUIRE_EXTRA_ATTENTION = [ 'magneticModuleType', diff --git a/app/src/organisms/Devices/ProtocolRun/utils/getSlotLabwareDefinition.ts b/app/src/organisms/Devices/ProtocolRun/utils/getSlotLabwareDefinition.ts index 2b2dec3019d..c52258c982f 100644 --- a/app/src/organisms/Devices/ProtocolRun/utils/getSlotLabwareDefinition.ts +++ b/app/src/organisms/Devices/ProtocolRun/utils/getSlotLabwareDefinition.ts @@ -1,4 +1,4 @@ -import { LabwareDefinition2, RunTimeCommand } from '@opentrons/shared-data' +import type { LabwareDefinition2, RunTimeCommand } from '@opentrons/shared-data' export function getSlotLabwareDefinition( labwareId: string, diff --git a/app/src/organisms/Devices/RobotSettings/ConnectNetwork/types.ts b/app/src/organisms/Devices/RobotSettings/ConnectNetwork/types.ts index 1f70fd48800..a864b81c8eb 100644 --- a/app/src/organisms/Devices/RobotSettings/ConnectNetwork/types.ts +++ b/app/src/organisms/Devices/RobotSettings/ConnectNetwork/types.ts @@ -5,7 +5,7 @@ import type { WifiKey, } from '../../../../redux/networking/types' -import { +import type { CONNECT, DISCONNECT, JOIN_OTHER, diff --git a/app/src/organisms/Devices/RobotSettings/__tests__/RobotSettingsAdvanced.test.tsx b/app/src/organisms/Devices/RobotSettings/__tests__/RobotSettingsAdvanced.test.tsx index b373fb0565a..825c9c32cde 100644 --- a/app/src/organisms/Devices/RobotSettings/__tests__/RobotSettingsAdvanced.test.tsx +++ b/app/src/organisms/Devices/RobotSettings/__tests__/RobotSettingsAdvanced.test.tsx @@ -26,7 +26,7 @@ import { } from '../AdvancedTab' import { RobotSettingsAdvanced } from '../RobotSettingsAdvanced' -import { ShellUpdateState } from '../../../../redux/shell/types' +import type { ShellUpdateState } from '../../../../redux/shell/types' import type * as ShellUpdate from '../../../../redux/shell/update' vi.mock('../../../../redux/robot-settings/selectors') diff --git a/app/src/organisms/Devices/__tests__/ModuleInfo.test.tsx b/app/src/organisms/Devices/__tests__/ModuleInfo.test.tsx index 3fb5e98d2f6..c1d494690e8 100644 --- a/app/src/organisms/Devices/__tests__/ModuleInfo.test.tsx +++ b/app/src/organisms/Devices/__tests__/ModuleInfo.test.tsx @@ -4,10 +4,10 @@ import { describe, it, vi, beforeEach, expect } from 'vitest' import '@testing-library/jest-dom/vitest' import { renderWithProviders } from '../../../__testing-utils__' import { when } from 'vitest-when' -import { ModuleModel, ModuleType } from '@opentrons/shared-data' import { i18n } from '../../../i18n' import { ModuleInfo } from '../ModuleInfo' import { useRunHasStarted } from '../hooks' +import type { ModuleModel, ModuleType } from '@opentrons/shared-data' vi.mock('../hooks') diff --git a/app/src/organisms/Devices/__tests__/RecentProtocolRuns.test.tsx b/app/src/organisms/Devices/__tests__/RecentProtocolRuns.test.tsx index aa4693135ed..92557e96570 100644 --- a/app/src/organisms/Devices/__tests__/RecentProtocolRuns.test.tsx +++ b/app/src/organisms/Devices/__tests__/RecentProtocolRuns.test.tsx @@ -1,5 +1,4 @@ import * as React from 'react' -import { UseQueryResult } from 'react-query' import { screen } from '@testing-library/react' import { describe, it, vi, beforeEach } from 'vitest' import '@testing-library/jest-dom/vitest' @@ -10,6 +9,7 @@ import { useIsRobotViewable, useRunStatuses } from '../hooks' import { RecentProtocolRuns } from '../RecentProtocolRuns' import { HistoricalProtocolRun } from '../HistoricalProtocolRun' +import type { UseQueryResult } from 'react-query' import type { Runs } from '@opentrons/api-client' import type { AxiosError } from 'axios' diff --git a/app/src/organisms/Devices/constants.ts b/app/src/organisms/Devices/constants.ts index a3913e104e2..f6c8eece866 100644 --- a/app/src/organisms/Devices/constants.ts +++ b/app/src/organisms/Devices/constants.ts @@ -1,8 +1,5 @@ -import { - getPipetteNameSpecs, - LabwareDefinition2, - PipetteName, -} from '@opentrons/shared-data' +import { getPipetteNameSpecs } from '@opentrons/shared-data' +import type { LabwareDefinition2, PipetteName } from '@opentrons/shared-data' import { getLatestLabwareDef } from '../../assets/labware/getLabware' export const RUN_LOG_WINDOW_SIZE = 60 // number of command items rendered at a time diff --git a/app/src/organisms/Devices/getModulePrepCommands.ts b/app/src/organisms/Devices/getModulePrepCommands.ts index dcb320417b2..cb55081533e 100644 --- a/app/src/organisms/Devices/getModulePrepCommands.ts +++ b/app/src/organisms/Devices/getModulePrepCommands.ts @@ -3,7 +3,6 @@ import { HEATERSHAKER_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, } from '@opentrons/shared-data' -import { AttachedModule } from '../../redux/modules/types' import type { HeaterShakerDeactivateHeaterCreateCommand, HeaterShakerDeactivateShakerCreateCommand, @@ -15,6 +14,7 @@ import type { HeaterShakerCloseLatchCreateCommand, TCCloseLidCreateCommand, } from '@opentrons/shared-data' +import type { AttachedModule } from '../../redux/modules/types' export type ModulePrepCommandsType = | TemperatureModuleDeactivateCreateCommand diff --git a/app/src/organisms/Devices/hooks/__tests__/useAttachedModules.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useAttachedModules.test.tsx index 222de6739eb..49fba0eeaa0 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useAttachedModules.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useAttachedModules.test.tsx @@ -1,10 +1,10 @@ import { vi, it, expect, describe } from 'vitest' -import { UseQueryResult } from 'react-query' import { renderHook } from '@testing-library/react' import { mockModulesResponse } from '@opentrons/api-client' import { useModulesQuery } from '@opentrons/react-api-client' import { useAttachedModules } from '..' +import type { UseQueryResult } from 'react-query' import type { Modules } from '@opentrons/api-client' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipetteCalibrations.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipetteCalibrations.test.tsx index 4681855f02f..45c1ff6487f 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipetteCalibrations.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipetteCalibrations.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { when } from 'vitest-when' import { vi, it, expect, describe, beforeEach } from 'vitest' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' import { @@ -21,6 +21,7 @@ import { } from '../../../../redux/calibration/tip-length/__fixtures__' import { useAttachedPipetteCalibrations } from '..' +import type { Store } from 'redux' import type { State } from '../../../../redux/types' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettes.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettes.test.tsx index 1617e15b661..35dbd023839 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettes.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettes.test.tsx @@ -1,7 +1,5 @@ -import * as React from 'react' import { vi, it, expect, describe, beforeEach } from 'vitest' import { when } from 'vitest-when' -import { UseQueryResult } from 'react-query' import { renderHook } from '@testing-library/react' import { usePipettesQuery } from '@opentrons/react-api-client' import { getPipetteModelSpecs } from '@opentrons/shared-data' @@ -10,6 +8,8 @@ import { pipetteResponseFixtureLeft, pipetteResponseFixtureRight, } from '@opentrons/api-client' +import type * as React from 'react' +import type { UseQueryResult } from 'react-query' import type { FetchPipettesResponseBody } from '@opentrons/api-client' import type { PipetteModelSpecs } from '@opentrons/shared-data' diff --git a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts index fbb72456a56..535a394fbe9 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts +++ b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts @@ -1,4 +1,3 @@ -import * as React from 'react' import { vi, it, expect, describe, beforeEach } from 'vitest' import { renderHook } from '@testing-library/react' import { useInstrumentsQuery } from '@opentrons/react-api-client' @@ -8,6 +7,7 @@ import { } from '@opentrons/api-client' import { useIsOEMMode } from '../../../../resources/robot-settings/hooks' import { useAttachedPipettesFromInstrumentsQuery } from '..' +import type * as React from 'react' vi.mock('@opentrons/react-api-client') vi.mock('../../../../resources/robot-settings/hooks') diff --git a/app/src/organisms/Devices/hooks/__tests__/useDeckCalibrationStatus.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useDeckCalibrationStatus.test.tsx index 25d8dc74ca5..d409b0ba3cd 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useDeckCalibrationStatus.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useDeckCalibrationStatus.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' import { useCalibrationStatusQuery } from '@opentrons/react-api-client' @@ -12,6 +12,7 @@ import { getDiscoverableRobotByName } from '../../../../redux/discovery' import { useDeckCalibrationStatus } from '..' import { mockConnectableRobot } from '../../../../redux/discovery/__fixtures__' +import type { Store } from 'redux' vi.mock('@opentrons/react-api-client') vi.mock('../../../../redux/calibration') diff --git a/app/src/organisms/Devices/hooks/__tests__/useIsFlex.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useIsFlex.test.tsx index 629f58b7dea..9461cae9c22 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useIsFlex.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useIsFlex.test.tsx @@ -2,13 +2,14 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' import { getRobotModelByName } from '../../../../redux/discovery' import { useIsFlex } from '..' +import type { Store } from 'redux' vi.mock('../../../../redux/discovery/selectors') diff --git a/app/src/organisms/Devices/hooks/__tests__/useIsLegacySessionInProgress.test.ts b/app/src/organisms/Devices/hooks/__tests__/useIsLegacySessionInProgress.test.ts index 115c213dff4..038773d9d84 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useIsLegacySessionInProgress.test.ts +++ b/app/src/organisms/Devices/hooks/__tests__/useIsLegacySessionInProgress.test.ts @@ -1,8 +1,8 @@ -import { UseQueryResult } from 'react-query' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { useAllSessionsQuery } from '@opentrons/react-api-client' import { useIsLegacySessionInProgress } from '../useIsLegacySessionInProgress' +import type { UseQueryResult } from 'react-query' import type { Sessions } from '@opentrons/api-client' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/hooks/__tests__/useIsRobotBusy.test.ts b/app/src/organisms/Devices/hooks/__tests__/useIsRobotBusy.test.ts index 457c0a75287..1a763143e3a 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useIsRobotBusy.test.ts +++ b/app/src/organisms/Devices/hooks/__tests__/useIsRobotBusy.test.ts @@ -1,5 +1,3 @@ -import { UseQueryResult } from 'react-query' - import { useAllSessionsQuery, useCurrentAllSubsystemUpdatesQuery, @@ -17,6 +15,7 @@ import { useIsFlex } from '../useIsFlex' import { useNotifyCurrentMaintenanceRun } from '../../../../resources/maintenance_runs' import { useNotifyAllRunsQuery } from '../../../../resources/runs' +import type { UseQueryResult } from 'react-query' import type { Sessions, Runs } from '@opentrons/api-client' import type { AxiosError } from 'axios' diff --git a/app/src/organisms/Devices/hooks/__tests__/useIsRobotViewable.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useIsRobotViewable.test.tsx index 96ed5c3f92b..4ed49e831e2 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useIsRobotViewable.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useIsRobotViewable.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' @@ -12,8 +12,8 @@ import { mockReachableRobot, mockUnreachableRobot, } from '../../../../redux/discovery/__fixtures__' - import { useIsRobotViewable } from '..' +import type { Store } from 'redux' vi.mock('../../../../redux/discovery') diff --git a/app/src/organisms/Devices/hooks/__tests__/useLights.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useLights.test.tsx index 88b6b3c423e..5f45fbecb23 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useLights.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useLights.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' import { @@ -11,6 +11,7 @@ import { import { useLights } from '..' +import type { Store } from 'redux' import type { Mock } from 'vitest' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/hooks/__tests__/usePipetteOffsetCalibration.test.tsx b/app/src/organisms/Devices/hooks/__tests__/usePipetteOffsetCalibration.test.tsx index 6cdf77cdb19..655b06532b8 100644 --- a/app/src/organisms/Devices/hooks/__tests__/usePipetteOffsetCalibration.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/usePipetteOffsetCalibration.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' @@ -15,9 +15,10 @@ import { useDispatchApiRequest } from '../../../../redux/robot-api' import { useRobot } from '../useRobot' import { usePipetteOffsetCalibration } from '..' +import type { Store } from 'redux' import type { DiscoveredRobot } from '../../../../redux/discovery/types' import type { DispatchApiRequestType } from '../../../../redux/robot-api' -import { AttachedPipette, Mount } from '../../../../redux/pipettes/types' +import type { AttachedPipette, Mount } from '../../../../redux/pipettes/types' vi.mock('../../../../redux/calibration') vi.mock('../../../../redux/robot-api') diff --git a/app/src/organisms/Devices/hooks/__tests__/useProtocolAnalysisErrors.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useProtocolAnalysisErrors.test.tsx index a327e420b05..20e90f86f75 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useProtocolAnalysisErrors.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useProtocolAnalysisErrors.test.tsx @@ -1,6 +1,5 @@ import { vi, it, expect, describe, beforeEach } from 'vitest' import { when } from 'vitest-when' -import { UseQueryResult } from 'react-query' import { renderHook } from '@testing-library/react' import { @@ -13,6 +12,7 @@ import { useNotifyRunQuery } from '../../../../resources/runs' import { RUN_ID_2 } from '../../../RunTimeControl/__fixtures__' +import type { UseQueryResult } from 'react-query' import type { Run, Protocol } from '@opentrons/api-client' import type { CompletedProtocolAnalysis, diff --git a/app/src/organisms/Devices/hooks/__tests__/useProtocolDetailsForRun.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useProtocolDetailsForRun.test.tsx index 7c0ad0363a9..45c2546efd0 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useProtocolDetailsForRun.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useProtocolDetailsForRun.test.tsx @@ -1,23 +1,18 @@ import { vi, it, expect, describe, beforeEach } from 'vitest' import { when } from 'vitest-when' -import { UseQueryResult } from 'react-query' import { renderHook } from '@testing-library/react' - +import { OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { useProtocolAnalysisAsDocumentQuery, useProtocolQuery, } from '@opentrons/react-api-client' - import { useProtocolDetailsForRun } from '..' import { useNotifyRunQuery } from '../../../../resources/runs' - import { RUN_ID_2 } from '../../../RunTimeControl/__fixtures__' import type { Protocol, Run } from '@opentrons/api-client' -import { - CompletedProtocolAnalysis, - OT2_ROBOT_TYPE, -} from '@opentrons/shared-data' +import type { UseQueryResult } from 'react-query' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' vi.mock('@opentrons/react-api-client') vi.mock('../../../../resources/runs') diff --git a/app/src/organisms/Devices/hooks/__tests__/useProtocolRunAnalyticsData.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useProtocolRunAnalyticsData.test.tsx index f256fb126b7..04305b8ed31 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useProtocolRunAnalyticsData.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useProtocolRunAnalyticsData.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { renderHook, waitFor } from '@testing-library/react' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { Provider } from 'react-redux' import { QueryClient, QueryClientProvider } from 'react-query' @@ -14,6 +14,7 @@ import { useProtocolMetadata } from '../useProtocolMetadata' import { useRunTimestamps } from '../../../RunTimeControl/hooks' import { formatInterval } from '../../../RunTimeControl/utils' import { mockConnectableRobot } from '../../../../redux/discovery/__fixtures__' +import type { Store } from 'redux' vi.mock('../../../../redux/analytics/hash') vi.mock('../../../../redux/protocol-storage') diff --git a/app/src/organisms/Devices/hooks/__tests__/useRobotAnalyticsData.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useRobotAnalyticsData.test.tsx index 1b42a08befd..29463fe55bc 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useRobotAnalyticsData.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useRobotAnalyticsData.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { renderHook } from '@testing-library/react' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { Provider } from 'react-redux' import { QueryClient, QueryClientProvider } from 'react-query' @@ -18,6 +18,7 @@ import { getRobotSerialNumber, } from '../../../../redux/discovery' +import type { Store } from 'redux' import type { DiscoveredRobot } from '../../../../redux/discovery/types' import type { AttachedPipettesByMount } from '../../../../redux/pipettes/types' diff --git a/app/src/organisms/Devices/hooks/__tests__/useRunPipetteInfoByMount.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useRunPipetteInfoByMount.test.tsx index b410220425d..1235869ca0b 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useRunPipetteInfoByMount.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useRunPipetteInfoByMount.test.tsx @@ -5,7 +5,6 @@ import { when } from 'vitest-when' import { getPipetteNameSpecs, getLoadedLabwareDefinitionsByUri, - RunTimeCommand, opentrons96Tiprack10UlV1Uncasted as _tiprack10ul, } from '@opentrons/shared-data' import { useAllTipLengthCalibrationsQuery } from '@opentrons/react-api-client' @@ -140,7 +139,7 @@ describe('useRunPipetteInfoByMount hook', () => { } as SharedData.PipetteNameSpecs) when(vi.mocked(getLoadedLabwareDefinitionsByUri)) .calledWith( - _uncastedModifiedSimpleV6Protocol.commands as RunTimeCommand[] + _uncastedModifiedSimpleV6Protocol.commands as SharedData.RunTimeCommand[] ) .thenReturn(_uncastedModifiedSimpleV6Protocol.labwareDefinitions as {}) }) diff --git a/app/src/organisms/Devices/hooks/__tests__/useRunStartedOrLegacySessionInProgress.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useRunStartedOrLegacySessionInProgress.test.tsx index 96acc785f07..2354c31c6a8 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useRunStartedOrLegacySessionInProgress.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useRunStartedOrLegacySessionInProgress.test.tsx @@ -1,4 +1,3 @@ -import { UseQueryResult } from 'react-query' import { useAllSessionsQuery } from '@opentrons/react-api-client' import { RUN_STATUS_IDLE, RUN_STATUS_RUNNING } from '@opentrons/api-client' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' @@ -7,6 +6,7 @@ import { useCurrentRunId } from '../../../ProtocolUpload/hooks' import { useRunStatus } from '../../../RunTimeControl/hooks' import { useRunStartedOrLegacySessionInProgress } from '..' +import type { UseQueryResult } from 'react-query' import type { Sessions } from '@opentrons/api-client' vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/Devices/hooks/__tests__/useSyncRobotClock.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useSyncRobotClock.test.tsx index 427535824ee..37db5d9e752 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useSyncRobotClock.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useSyncRobotClock.test.tsx @@ -1,12 +1,13 @@ import * as React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { QueryClient, QueryClientProvider } from 'react-query' import { syncSystemTime } from '../../../../redux/robot-admin' import { useSyncRobotClock } from '..' +import type { Store } from 'redux' vi.mock('../../../../redux/discovery') diff --git a/app/src/organisms/Devices/hooks/__tests__/useTrackCreateProtocolRunEvent.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useTrackCreateProtocolRunEvent.test.tsx index b7e53546cfb..0be697813a8 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useTrackCreateProtocolRunEvent.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useTrackCreateProtocolRunEvent.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { Provider } from 'react-redux' import { QueryClient, QueryClientProvider } from 'react-query' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' @@ -13,6 +13,7 @@ import { useTrackEvent } from '../../../../redux/analytics' import { storedProtocolData } from '../../../../redux/protocol-storage/__fixtures__' import type { Mock } from 'vitest' +import type { Store } from 'redux' import type { ProtocolAnalyticsData } from '../../../../redux/analytics/types' vi.mock('../../hooks') diff --git a/app/src/organisms/Devices/hooks/__tests__/useTrackProtocolRunEvent.test.tsx b/app/src/organisms/Devices/hooks/__tests__/useTrackProtocolRunEvent.test.tsx index 4642cf31557..99ff16d05f7 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useTrackProtocolRunEvent.test.tsx +++ b/app/src/organisms/Devices/hooks/__tests__/useTrackProtocolRunEvent.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { Provider } from 'react-redux' import { QueryClient, QueryClientProvider } from 'react-query' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' @@ -15,6 +15,7 @@ import { import { mockConnectableRobot } from '../../../../redux/discovery/__fixtures__' import { useRobot } from '../useRobot' +import type { Store } from 'redux' import type { Mock } from 'vitest' vi.mock('../useRobot') diff --git a/app/src/organisms/Devices/hooks/useCalibrationTaskList.ts b/app/src/organisms/Devices/hooks/useCalibrationTaskList.ts index d96bbf262b7..a391b97cd40 100644 --- a/app/src/organisms/Devices/hooks/useCalibrationTaskList.ts +++ b/app/src/organisms/Devices/hooks/useCalibrationTaskList.ts @@ -5,12 +5,14 @@ import { useCalibrationStatusQuery, useDeleteCalibrationMutation, } from '@opentrons/react-api-client' +import { getLabwareDefURI } from '@opentrons/shared-data' import { useAttachedPipettes } from '.' import { getDefaultTiprackDefForPipetteName } from '../constants' import { DECK_CAL_STATUS_OK } from '../../../redux/calibration/constants' import { formatTimestamp } from '../utils' +import type { PipetteName } from '@opentrons/shared-data' import type { SubTaskProps, TaskListProps, @@ -20,7 +22,6 @@ import type { AttachedPipette } from '../../../redux/pipettes/types' import type { DashboardCalOffsetInvoker } from '../../../pages/Devices/CalibrationDashboard/hooks/useDashboardCalibratePipOffset' import type { DashboardCalTipLengthInvoker } from '../../../pages/Devices/CalibrationDashboard/hooks/useDashboardCalibrateTipLength' import type { DashboardCalDeckInvoker } from '../../../pages/Devices/CalibrationDashboard/hooks/useDashboardCalibrateDeck' -import { getLabwareDefURI, PipetteName } from '@opentrons/shared-data' const CALIBRATION_DATA_POLL_MS = 5000 diff --git a/app/src/organisms/Devices/hooks/useDownloadRunLog.ts b/app/src/organisms/Devices/hooks/useDownloadRunLog.ts index ac825faa9b5..76d76f04dce 100644 --- a/app/src/organisms/Devices/hooks/useDownloadRunLog.ts +++ b/app/src/organisms/Devices/hooks/useDownloadRunLog.ts @@ -1,18 +1,12 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' - -import { - HostConfig, - getRun, - getCommands, - getProtocol, -} from '@opentrons/api-client' -import { IconProps } from '@opentrons/components' +import { getRun, getCommands, getProtocol } from '@opentrons/api-client' import { useHost } from '@opentrons/react-api-client' - import { ERROR_TOAST, INFO_TOAST } from '../../../atoms/Toast' import { useToaster } from '../../../organisms/ToasterOven' import { downloadFile } from '../utils' +import type { IconProps } from '@opentrons/components' +import type { HostConfig } from '@opentrons/api-client' export function useDownloadRunLog( robotName: string, diff --git a/app/src/organisms/Devices/hooks/useModuleCalibrationStatus.ts b/app/src/organisms/Devices/hooks/useModuleCalibrationStatus.ts index e8bddaaeadb..941a5b261b4 100644 --- a/app/src/organisms/Devices/hooks/useModuleCalibrationStatus.ts +++ b/app/src/organisms/Devices/hooks/useModuleCalibrationStatus.ts @@ -1,8 +1,8 @@ import omitBy from 'lodash/omitBy' import { MAGNETIC_BLOCK_TYPE } from '@opentrons/shared-data' import { useModuleRenderInfoForProtocolById } from './useModuleRenderInfoForProtocolById' -import { ProtocolCalibrationStatus } from './useRunCalibrationStatus' import { useIsFlex } from './useIsFlex' +import type { ProtocolCalibrationStatus } from './useRunCalibrationStatus' export function useModuleCalibrationStatus( robotName: string, diff --git a/app/src/organisms/Devices/hooks/useProtocolAnalysisErrors.ts b/app/src/organisms/Devices/hooks/useProtocolAnalysisErrors.ts index 1c86de6ecf5..ad4633b3134 100644 --- a/app/src/organisms/Devices/hooks/useProtocolAnalysisErrors.ts +++ b/app/src/organisms/Devices/hooks/useProtocolAnalysisErrors.ts @@ -6,7 +6,7 @@ import { import { useNotifyRunQuery } from '../../../resources/runs' -import { AnalysisError } from '@opentrons/shared-data' +import type { AnalysisError } from '@opentrons/shared-data' export interface ProtocolAnalysisErrors { analysisErrors: AnalysisError[] | null diff --git a/app/src/organisms/Devices/hooks/useProtocolRunAnalyticsData.ts b/app/src/organisms/Devices/hooks/useProtocolRunAnalyticsData.ts index 538c10c6855..31e4df921b6 100644 --- a/app/src/organisms/Devices/hooks/useProtocolRunAnalyticsData.ts +++ b/app/src/organisms/Devices/hooks/useProtocolRunAnalyticsData.ts @@ -9,11 +9,11 @@ import { useRunTimestamps } from '../../RunTimeControl/hooks' import { formatInterval } from '../../RunTimeControl/utils' import { EMPTY_TIMESTAMP } from '../constants' +import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' import type { ProtocolAnalyticsData } from '../../../redux/analytics/types' import type { StoredProtocolData } from '../../../redux/protocol-storage/types' -import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' import type { State } from '../../../redux/types' -import { DiscoveredRobot } from '../../../redux/discovery/types' +import type { DiscoveredRobot } from '../../../redux/discovery/types' export const parseProtocolRunAnalyticsData = ( protocolAnalysis: ProtocolAnalysisOutput | null, diff --git a/app/src/organisms/Devices/hooks/useRunCalibrationStatus.ts b/app/src/organisms/Devices/hooks/useRunCalibrationStatus.ts index 27f16c107fe..8bed099c5df 100644 --- a/app/src/organisms/Devices/hooks/useRunCalibrationStatus.ts +++ b/app/src/organisms/Devices/hooks/useRunCalibrationStatus.ts @@ -5,16 +5,20 @@ import { useRunPipetteInfoByMount, useStoredProtocolAnalysis, } from '.' -import { DeckCalibrationStatus } from '../../../redux/calibration/api-types' import { useMostRecentCompletedAnalysis } from '../../LabwarePositionCheck/useMostRecentCompletedAnalysis' -import { +import { isGripperInCommands } from '../../../resources/protocols/utils' +import { useInstrumentsQuery } from '@opentrons/react-api-client' +import type { + GripperData, + Instruments, + PipetteData, +} from '@opentrons/api-client' +import type { CompletedProtocolAnalysis, LoadedPipette, ProtocolAnalysisOutput, } from '@opentrons/shared-data' -import { isGripperInCommands } from '../../../resources/protocols/utils' -import { useInstrumentsQuery } from '@opentrons/react-api-client' -import { GripperData, Instruments, PipetteData } from '@opentrons/api-client' +import type { DeckCalibrationStatus } from '../../../redux/calibration/api-types' export interface ProtocolCalibrationStatus { complete: boolean diff --git a/app/src/organisms/DropTipWizard/JogToPosition.tsx b/app/src/organisms/DropTipWizard/JogToPosition.tsx index bad08fb6705..f7c33c8eb3b 100644 --- a/app/src/organisms/DropTipWizard/JogToPosition.tsx +++ b/app/src/organisms/DropTipWizard/JogToPosition.tsx @@ -22,10 +22,11 @@ import { TYPOGRAPHY, } from '@opentrons/components' // import { NeedHelpLink } from '../CalibrationPanels' +import { JogControls } from '../../molecules/JogControls' import { SmallButton } from '../../atoms/buttons' -import { Jog, JogControls } from '../../molecules/JogControls' import { InProgressModal } from '../../molecules/InProgressModal/InProgressModal' import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' +import type { Jog } from '../../molecules/JogControls' // TODO: get help link article URL // const NEED_HELP_URL = '' diff --git a/app/src/organisms/DropTipWizard/types.ts b/app/src/organisms/DropTipWizard/types.ts index e2fd26180d4..f7f6eb138d5 100644 --- a/app/src/organisms/DropTipWizard/types.ts +++ b/app/src/organisms/DropTipWizard/types.ts @@ -1,4 +1,4 @@ -import { +import type { BLOWOUT_SUCCESS, CHOOSE_BLOWOUT_LOCATION, CHOOSE_DROP_TIP_LOCATION, diff --git a/app/src/organisms/FirmwareUpdateModal/__tests__/FirmwareUpdateModal.test.tsx b/app/src/organisms/FirmwareUpdateModal/__tests__/FirmwareUpdateModal.test.tsx index 6c49288b30e..a889ece33fd 100644 --- a/app/src/organisms/FirmwareUpdateModal/__tests__/FirmwareUpdateModal.test.tsx +++ b/app/src/organisms/FirmwareUpdateModal/__tests__/FirmwareUpdateModal.test.tsx @@ -10,7 +10,7 @@ import { } from '@opentrons/react-api-client' import { i18n } from '../../../i18n' import { FirmwareUpdateModal } from '..' -import { +import type { BadPipette, PipetteData, SubsystemUpdateProgressData, diff --git a/app/src/organisms/GripperWizardFlows/index.tsx b/app/src/organisms/GripperWizardFlows/index.tsx index 1c3126c739d..70e05249973 100644 --- a/app/src/organisms/GripperWizardFlows/index.tsx +++ b/app/src/organisms/GripperWizardFlows/index.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' -import { UseMutateFunction } from 'react-query' import { useConditionalConfirm, Flex, @@ -35,6 +34,7 @@ import { UnmountGripper } from './UnmountGripper' import { Success } from './Success' import { ExitConfirmation } from './ExitConfirmation' +import type { UseMutateFunction } from 'react-query' import type { GripperWizardFlowType } from './types' import type { AxiosError } from 'axios' import type { diff --git a/app/src/organisms/GripperWizardFlows/types.ts b/app/src/organisms/GripperWizardFlows/types.ts index 584346392c3..ece9ff9a4c0 100644 --- a/app/src/organisms/GripperWizardFlows/types.ts +++ b/app/src/organisms/GripperWizardFlows/types.ts @@ -1,4 +1,6 @@ -import { +import type { useCreateCommandMutation } from '@opentrons/react-api-client' +import type { Coordinates, CreateCommand } from '@opentrons/shared-data' +import type { SECTIONS, GRIPPER_FLOW_TYPES, MOVE_PIN_FROM_FRONT_JAW_TO_REAR_JAW, @@ -9,8 +11,6 @@ import { SUCCESSFULLY_DETACHED, SUCCESSFULLY_CALIBRATED, } from './constants' -import { useCreateCommandMutation } from '@opentrons/react-api-client' -import type { Coordinates, CreateCommand } from '@opentrons/shared-data' export type GripperWizardStep = | BeforeBeginningStep diff --git a/app/src/organisms/InstrumentMountItem/ProtocolInstrumentMountItem.tsx b/app/src/organisms/InstrumentMountItem/ProtocolInstrumentMountItem.tsx index 80e160437e8..acaf0789918 100644 --- a/app/src/organisms/InstrumentMountItem/ProtocolInstrumentMountItem.tsx +++ b/app/src/organisms/InstrumentMountItem/ProtocolInstrumentMountItem.tsx @@ -15,9 +15,7 @@ import { } from '@opentrons/components' import { NINETY_SIX_CHANNEL, - PipetteName, SINGLE_MOUNT_PIPETTES, - LoadedPipette, } from '@opentrons/shared-data' import { SmallButton } from '../../atoms/buttons' @@ -30,7 +28,11 @@ import { PipetteWizardFlows } from '../PipetteWizardFlows' import { GripperWizardFlows } from '../GripperWizardFlows' import type { InstrumentData } from '@opentrons/api-client' -import type { GripperModel } from '@opentrons/shared-data' +import type { + GripperModel, + PipetteName, + LoadedPipette, +} from '@opentrons/shared-data' import type { Mount } from '../../redux/pipettes/types' export const MountItem = styled.div<{ isReady: boolean }>` diff --git a/app/src/organisms/InterventionModal/MoveLabwareInterventionContent.tsx b/app/src/organisms/InterventionModal/MoveLabwareInterventionContent.tsx index 9a932bb697d..5e580a45af3 100644 --- a/app/src/organisms/InterventionModal/MoveLabwareInterventionContent.tsx +++ b/app/src/organisms/InterventionModal/MoveLabwareInterventionContent.tsx @@ -22,12 +22,7 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { - CompletedProtocolAnalysis, - LabwareDefinitionsByUri, - LabwareLocation, - MoveLabwareRunTimeCommand, OT2_ROBOT_TYPE, - RobotType, getDeckDefFromRobotType, getLabwareDisplayName, getLoadedLabwareDefinitionsByUri, @@ -50,6 +45,13 @@ import { } from '../CommandText/utils/accessors' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' +import type { + CompletedProtocolAnalysis, + LabwareDefinitionsByUri, + LabwareLocation, + MoveLabwareRunTimeCommand, + RobotType, +} from '@opentrons/shared-data' import type { RunData } from '@opentrons/api-client' const LABWARE_DESCRIPTION_STYLE = css` diff --git a/app/src/organisms/InterventionModal/__fixtures__/index.ts b/app/src/organisms/InterventionModal/__fixtures__/index.ts index de2ae730f89..333c0b8fa7a 100644 --- a/app/src/organisms/InterventionModal/__fixtures__/index.ts +++ b/app/src/organisms/InterventionModal/__fixtures__/index.ts @@ -1,5 +1,4 @@ import { - LabwareDefinition2, SPAN7_8_10_11_SLOT, THERMOCYCLER_MODULE_V1, getModuleDef2, @@ -8,6 +7,7 @@ import { import type { RunData } from '@opentrons/api-client' import type { LabwareDefinitionsByUri, + LabwareDefinition2, Liquid, LoadedLabware, LoadedModule, diff --git a/app/src/organisms/InterventionModal/__tests__/InterventionModal.test.tsx b/app/src/organisms/InterventionModal/__tests__/InterventionModal.test.tsx index 555973db4eb..06f4f0a22a3 100644 --- a/app/src/organisms/InterventionModal/__tests__/InterventionModal.test.tsx +++ b/app/src/organisms/InterventionModal/__tests__/InterventionModal.test.tsx @@ -1,11 +1,8 @@ import * as React from 'react' import { fireEvent, screen } from '@testing-library/react' import { describe, it, expect, vi, beforeEach } from 'vitest' +import { getLabwareDefURI } from '@opentrons/shared-data' import { renderWithProviders } from '../../../__testing-utils__' -import { - CompletedProtocolAnalysis, - getLabwareDefURI, -} from '@opentrons/shared-data' import { i18n } from '../../../i18n' import { InterventionModal } from '..' @@ -18,6 +15,7 @@ import { } from '../__fixtures__' import { mockTipRackDefinition } from '../../../redux/custom-labware/__fixtures__' import { useIsFlex } from '../../Devices/hooks' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' const ROBOT_NAME = 'Otie' diff --git a/app/src/organisms/InterventionModal/utils/getLabwareNameFromRunData.ts b/app/src/organisms/InterventionModal/utils/getLabwareNameFromRunData.ts index e2c083c8afc..d6773e683f1 100644 --- a/app/src/organisms/InterventionModal/utils/getLabwareNameFromRunData.ts +++ b/app/src/organisms/InterventionModal/utils/getLabwareNameFromRunData.ts @@ -1,11 +1,8 @@ -import { - RunTimeCommand, - getLabwareDefURI, - getLabwareDisplayName, -} from '@opentrons/shared-data' +import { getLabwareDefURI, getLabwareDisplayName } from '@opentrons/shared-data' import { getLoadedLabware } from '../../CommandText/utils/accessors' import { getLabwareDefinitionsFromCommands } from '../../LabwarePositionCheck/utils/labware' +import type { RunTimeCommand } from '@opentrons/shared-data' import type { RunData } from '@opentrons/api-client' const FIXED_TRASH_DEF_URIS = [ diff --git a/app/src/organisms/InterventionModal/utils/isInterventionCommand.ts b/app/src/organisms/InterventionModal/utils/isInterventionCommand.ts index 133b8a4d254..b7f198596ff 100644 --- a/app/src/organisms/InterventionModal/utils/isInterventionCommand.ts +++ b/app/src/organisms/InterventionModal/utils/isInterventionCommand.ts @@ -1,5 +1,5 @@ -import { RunTimeCommand } from '@opentrons/shared-data' -import { RunCommandSummary } from '@opentrons/api-client' +import type { RunTimeCommand } from '@opentrons/shared-data' +import type { RunCommandSummary } from '@opentrons/api-client' export function isInterventionCommand( command: RunTimeCommand | RunCommandSummary diff --git a/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx b/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx index 9cf7f86f375..01a87bee4eb 100644 --- a/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx @@ -6,27 +6,27 @@ import { StyledText, TYPOGRAPHY, } from '@opentrons/components' -import { - CompletedProtocolAnalysis, - getPipetteNameSpecs, - CreateCommand, -} from '@opentrons/shared-data' +import { getPipetteNameSpecs } from '@opentrons/shared-data' import { css } from 'styled-components' import { ProbeNotAttached } from '../PipetteWizardFlows/ProbeNotAttached' import { RobotMotionLoader } from './RobotMotionLoader' import attachProbe1 from '../../assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_1.webm' import attachProbe8 from '../../assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_8.webm' import attachProbe96 from '../../assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_96.webm' -import { useChainRunCommands } from '../../resources/runs' import { GenericWizardTile } from '../../molecules/GenericWizardTile' +import type { + CompletedProtocolAnalysis, + CreateCommand, +} from '@opentrons/shared-data' +import type { LabwareOffset } from '@opentrons/api-client' import type { Jog } from '../../molecules/JogControls/types' +import type { useChainRunCommands } from '../../resources/runs' import type { AttachProbeStep, RegisterPositionAction, WorkingOffset, } from './types' -import type { LabwareOffset } from '@opentrons/api-client' interface AttachProbeProps extends AttachProbeStep { protocolData: CompletedProtocolAnalysis diff --git a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx index 06239a0d4e0..7978f4f76ee 100644 --- a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx +++ b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx @@ -12,7 +12,6 @@ import { RobotMotionLoader } from './RobotMotionLoader' import { PrepareSpace } from './PrepareSpace' import { JogToWell } from './JogToWell' import { - CreateCommand, FLEX_ROBOT_TYPE, getIsTiprack, getLabwareDefURI, @@ -20,9 +19,6 @@ import { getModuleType, HEATERSHAKER_MODULE_TYPE, IDENTITY_VECTOR, - LabwareLocation, - MoveLabwareCreateCommand, - RobotType, THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' import { useSelector } from 'react-redux' @@ -32,12 +28,18 @@ import { } from './utils/labware' import { UnorderedList } from '../../molecules/UnorderedList' import { getCurrentOffsetForLabwareInLocation } from '../Devices/ProtocolRun/utils/getCurrentOffsetForLabwareInLocation' -import { useChainRunCommands } from '../../resources/runs' import { getIsOnDevice } from '../../redux/config' import { getDisplayLocation } from './utils/getDisplayLocation' import type { LabwareOffset } from '@opentrons/api-client' -import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' +import type { + CompletedProtocolAnalysis, + CreateCommand, + LabwareLocation, + MoveLabwareCreateCommand, + RobotType, +} from '@opentrons/shared-data' +import type { useChainRunCommands } from '../../resources/runs' import type { CheckLabwareStep, RegisterPositionAction, diff --git a/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx b/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx index 202cf78d57a..55575570cce 100644 --- a/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx @@ -8,17 +8,15 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { RobotMotionLoader } from './RobotMotionLoader' -import { - CompletedProtocolAnalysis, - getPipetteNameSpecs, -} from '@opentrons/shared-data' +import { getPipetteNameSpecs } from '@opentrons/shared-data' import detachProbe1 from '../../assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_1.webm' import detachProbe8 from '../../assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_8.webm' import detachProbe96 from '../../assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_96.webm' -import { useChainRunCommands } from '../../resources/runs' import { GenericWizardTile } from '../../molecules/GenericWizardTile' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' import type { Jog } from '../../molecules/JogControls/types' +import type { useChainRunCommands } from '../../resources/runs' import type { DetachProbeStep, RegisterPositionAction, diff --git a/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx b/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx index 5fdfb0af52f..0ba541c95f6 100644 --- a/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx @@ -19,9 +19,6 @@ import { } from '@opentrons/components' import { RobotMotionLoader } from '../RobotMotionLoader' import { getPrepCommands } from './getPrepCommands' -import { useChainRunCommands } from '../../../resources/runs' -import type { RegisterPositionAction } from '../types' -import type { Jog } from '../../../molecules/JogControls' import { WizardRequiredEquipmentList } from '../../../molecules/WizardRequiredEquipmentList' import { getLatestCurrentOffsets } from '../../Devices/ProtocolRun/SetupLabwarePositionCheck/utils' import { getIsOnDevice } from '../../../redux/config' @@ -40,6 +37,9 @@ import type { CompletedProtocolAnalysis, LabwareDefinition2, } from '@opentrons/shared-data' +import type { useChainRunCommands } from '../../../resources/runs' +import type { RegisterPositionAction } from '../types' +import type { Jog } from '../../../molecules/JogControls' export const INTERVAL_MS = 3000 diff --git a/app/src/organisms/LabwarePositionCheck/JogToWell.tsx b/app/src/organisms/LabwarePositionCheck/JogToWell.tsx index 828264b0218..415eb8f15fb 100644 --- a/app/src/organisms/LabwarePositionCheck/JogToWell.tsx +++ b/app/src/organisms/LabwarePositionCheck/JogToWell.tsx @@ -26,7 +26,6 @@ import { getPipetteNameSpecs, getVectorDifference, getVectorSum, - PipetteName, } from '@opentrons/shared-data' import levelWithTip from '../../assets/images/lpc_level_with_tip.svg' @@ -41,10 +40,10 @@ import { NeedHelpLink } from '../CalibrationPanels' import { JogControls } from '../../molecules/JogControls' import { LiveOffsetValue } from './LiveOffsetValue' -import type { Jog } from '../../molecules/JogControls' -import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { PipetteName, LabwareDefinition2 } from '@opentrons/shared-data' import type { WellStroke } from '@opentrons/components' import type { VectorOffset } from '@opentrons/api-client' +import type { Jog } from '../../molecules/JogControls' const DECK_MAP_VIEWBOX = '-10 -10 150 105' const LPC_HELP_LINK_URL = diff --git a/app/src/organisms/LabwarePositionCheck/LabwarePositionCheckComponent.tsx b/app/src/organisms/LabwarePositionCheck/LabwarePositionCheckComponent.tsx index 440c6c89586..0722465b50b 100644 --- a/app/src/organisms/LabwarePositionCheck/LabwarePositionCheckComponent.tsx +++ b/app/src/organisms/LabwarePositionCheck/LabwarePositionCheckComponent.tsx @@ -5,24 +5,11 @@ import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { useConditionalConfirm } from '@opentrons/components' -import { - LabwareOffsetCreateData, - LabwareOffset, - CommandData, -} from '@opentrons/api-client' import { useCreateLabwareOffsetMutation, useCreateMaintenanceCommandMutation, } from '@opentrons/react-api-client' -import { - CompletedProtocolAnalysis, - Coordinates, - FIXED_TRASH_ID, - FLEX_ROBOT_TYPE, - CreateCommand, - DropTipCreateCommand, - RobotType, -} from '@opentrons/shared-data' +import { FIXED_TRASH_ID, FLEX_ROBOT_TYPE } from '@opentrons/shared-data' import { getTopPortalEl } from '../../App/portal' // import { useTrackEvent } from '../../redux/analytics' @@ -41,8 +28,20 @@ import { useChainMaintenanceCommands } from '../../resources/runs' import { FatalErrorModal } from './FatalErrorModal' import { RobotMotionLoader } from './RobotMotionLoader' import { useNotifyCurrentMaintenanceRun } from '../../resources/maintenance_runs' - import { getLabwarePositionCheckSteps } from './getLabwarePositionCheckSteps' + +import type { + CompletedProtocolAnalysis, + Coordinates, + CreateCommand, + DropTipCreateCommand, + RobotType, +} from '@opentrons/shared-data' +import type { + LabwareOffsetCreateData, + LabwareOffset, + CommandData, +} from '@opentrons/api-client' import type { Axis, Sign, StepSize } from '../../molecules/JogControls/types' import type { RegisterPositionAction, WorkingOffset } from './types' diff --git a/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx b/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx index f9fb114c789..dfeda1ee216 100644 --- a/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx +++ b/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx @@ -8,21 +8,16 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { - CompletedProtocolAnalysis, - CreateCommand, getLabwareDefURI, getLabwareDisplayName, getModuleType, getVectorDifference, HEATERSHAKER_MODULE_TYPE, IDENTITY_VECTOR, - MoveLabwareCreateCommand, - RobotType, } from '@opentrons/shared-data' import { RobotMotionLoader } from './RobotMotionLoader' import { PrepareSpace } from './PrepareSpace' import { JogToWell } from './JogToWell' -import { useChainRunCommands } from '../../resources/runs' import { UnorderedList } from '../../molecules/UnorderedList' import { getCurrentOffsetForLabwareInLocation } from '../Devices/ProtocolRun/utils/getCurrentOffsetForLabwareInLocation' import { TipConfirmation } from './TipConfirmation' @@ -32,6 +27,13 @@ import { } from './utils/labware' import { getDisplayLocation } from './utils/getDisplayLocation' +import type { + CompletedProtocolAnalysis, + CreateCommand, + MoveLabwareCreateCommand, + RobotType, +} from '@opentrons/shared-data' +import type { useChainRunCommands } from '../../resources/runs' import type { Jog } from '../../molecules/JogControls/types' import type { PickUpTipStep, diff --git a/app/src/organisms/LabwarePositionCheck/PrepareSpace.tsx b/app/src/organisms/LabwarePositionCheck/PrepareSpace.tsx index da886ccaba1..ad3df11c6aa 100644 --- a/app/src/organisms/LabwarePositionCheck/PrepareSpace.tsx +++ b/app/src/organisms/LabwarePositionCheck/PrepareSpace.tsx @@ -16,19 +16,18 @@ import { BaseDeck, ALIGN_FLEX_START, } from '@opentrons/components' -import { - CompletedProtocolAnalysis, - LabwareDefinition2, - THERMOCYCLER_MODULE_TYPE, - getModuleType, - RobotType, -} from '@opentrons/shared-data' +import { THERMOCYCLER_MODULE_TYPE, getModuleType } from '@opentrons/shared-data' import { getIsOnDevice } from '../../redux/config' import { SmallButton } from '../../atoms/buttons' import { NeedHelpLink } from '../CalibrationPanels' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' +import type { + CompletedProtocolAnalysis, + LabwareDefinition2, + RobotType, +} from '@opentrons/shared-data' import type { CheckLabwareStep } from './types' const LPC_HELP_LINK_URL = diff --git a/app/src/organisms/LabwarePositionCheck/ResultsSummary.tsx b/app/src/organisms/LabwarePositionCheck/ResultsSummary.tsx index 0dd1bf38e8a..be0fc80766f 100644 --- a/app/src/organisms/LabwarePositionCheck/ResultsSummary.tsx +++ b/app/src/organisms/LabwarePositionCheck/ResultsSummary.tsx @@ -4,14 +4,12 @@ import { useSelector } from 'react-redux' import isEqual from 'lodash/isEqual' import { useTranslation } from 'react-i18next' import { - CompletedProtocolAnalysis, getLabwareDefURI, getLabwareDisplayName, getModuleType, getVectorDifference, getVectorSum, IDENTITY_VECTOR, - LabwareDefinition2, } from '@opentrons/shared-data' import { NeedHelpLink } from '../CalibrationPanels' import { @@ -42,6 +40,10 @@ import { getCurrentOffsetForLabwareInLocation } from '../Devices/ProtocolRun/uti import { getLabwareDefinitionsFromCommands } from './utils/labware' import { getDisplayLocation } from './utils/getDisplayLocation' +import type { + CompletedProtocolAnalysis, + LabwareDefinition2, +} from '@opentrons/shared-data' import type { LabwareOffset, LabwareOffsetCreateData, diff --git a/app/src/organisms/LabwarePositionCheck/ReturnTip.tsx b/app/src/organisms/LabwarePositionCheck/ReturnTip.tsx index fe32fa4c5b1..5a46ec2b4eb 100644 --- a/app/src/organisms/LabwarePositionCheck/ReturnTip.tsx +++ b/app/src/organisms/LabwarePositionCheck/ReturnTip.tsx @@ -6,17 +6,13 @@ import { StyledText, TYPOGRAPHY, } from '@opentrons/components' + import { - CompletedProtocolAnalysis, - CreateCommand, getLabwareDisplayName, getModuleType, HEATERSHAKER_MODULE_TYPE, - MoveLabwareCreateCommand, - RobotType, } from '@opentrons/shared-data' import { UnorderedList } from '../../molecules/UnorderedList' -import { useChainRunCommands } from '../../resources/runs' import { getLabwareDef, getLabwareDefinitionsFromCommands, @@ -27,7 +23,14 @@ import { PrepareSpace } from './PrepareSpace' import { useSelector } from 'react-redux' import { getIsOnDevice } from '../../redux/config' +import type { + CompletedProtocolAnalysis, + CreateCommand, + RobotType, + MoveLabwareCreateCommand, +} from '@opentrons/shared-data' import type { VectorOffset } from '@opentrons/api-client' +import type { useChainRunCommands } from '../../resources/runs' import type { ReturnTipStep } from './types' interface ReturnTipProps extends ReturnTipStep { diff --git a/app/src/organisms/LabwarePositionCheck/getLabwarePositionCheckSteps.ts b/app/src/organisms/LabwarePositionCheck/getLabwarePositionCheckSteps.ts index fa1e4d881a2..1c51c06827f 100644 --- a/app/src/organisms/LabwarePositionCheck/getLabwarePositionCheckSteps.ts +++ b/app/src/organisms/LabwarePositionCheck/getLabwarePositionCheckSteps.ts @@ -1,7 +1,7 @@ import { getPrimaryPipetteId } from './utils/getPrimaryPipetteId' -import { CompletedProtocolAnalysis } from '@opentrons/shared-data' import { getTipBasedLPCSteps } from './utils/getTipBasedLPCSteps' import { getProbeBasedLPCSteps } from './utils/getProbeBasedLPCSteps' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' import type { LabwarePositionCheckStep } from './types' export const getLabwarePositionCheckSteps = ( diff --git a/app/src/organisms/LabwarePositionCheck/index.tsx b/app/src/organisms/LabwarePositionCheck/index.tsx index 1dcd396983c..abadfa346a1 100644 --- a/app/src/organisms/LabwarePositionCheck/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/index.tsx @@ -3,9 +3,9 @@ import { useLogger } from '../../logger' import { LabwarePositionCheckComponent } from './LabwarePositionCheckComponent' import { FatalErrorModal } from './FatalErrorModal' -import { +import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' +import type { CompletedProtocolAnalysis, - FLEX_ROBOT_TYPE, RobotType, } from '@opentrons/shared-data' import type { LabwareOffset } from '@opentrons/api-client' diff --git a/app/src/organisms/LabwarePositionCheck/types.ts b/app/src/organisms/LabwarePositionCheck/types.ts index 5f53e7511c0..2ddd14c25d6 100644 --- a/app/src/organisms/LabwarePositionCheck/types.ts +++ b/app/src/organisms/LabwarePositionCheck/types.ts @@ -1,5 +1,5 @@ -import { SECTIONS } from './constants' -import { useCreateCommandMutation } from '@opentrons/react-api-client' +import type { SECTIONS } from './constants' +import type { useCreateCommandMutation } from '@opentrons/react-api-client' import type { LabwareOffsetLocation, VectorOffset } from '@opentrons/api-client' import type { LabwareDefinition2 } from '@opentrons/shared-data' diff --git a/app/src/organisms/LabwarePositionCheck/utils/doesPipetteVisitAllTipracks.ts b/app/src/organisms/LabwarePositionCheck/utils/doesPipetteVisitAllTipracks.ts index 526451c467f..0976aab8b1b 100644 --- a/app/src/organisms/LabwarePositionCheck/utils/doesPipetteVisitAllTipracks.ts +++ b/app/src/organisms/LabwarePositionCheck/utils/doesPipetteVisitAllTipracks.ts @@ -1,7 +1,11 @@ -import { getIsTiprack, LabwareDefinition2 } from '@opentrons/shared-data' +import { getIsTiprack } from '@opentrons/shared-data' import { getPickUpTipCommandsWithPipette } from '../../Devices/ProtocolRun/utils/getPickUpTipCommandsWithPipette' import { getTipracksVisited } from '../../Devices/ProtocolRun/utils/getTipracksVisited' -import type { LoadedLabware, RunTimeCommand } from '@opentrons/shared-data' +import type { + LoadedLabware, + RunTimeCommand, + LabwareDefinition2, +} from '@opentrons/shared-data' export const doesPipetteVisitAllTipracks = ( pipetteId: string, diff --git a/app/src/organisms/LabwarePositionCheck/utils/getDisplayLocation.ts b/app/src/organisms/LabwarePositionCheck/utils/getDisplayLocation.ts index 6c00e9667dd..2c0fb134a40 100644 --- a/app/src/organisms/LabwarePositionCheck/utils/getDisplayLocation.ts +++ b/app/src/organisms/LabwarePositionCheck/utils/getDisplayLocation.ts @@ -3,9 +3,9 @@ import { getModuleType, THERMOCYCLER_MODULE_TYPE, getLabwareDefURI, - LabwareDefinition2, } from '@opentrons/shared-data' import type { i18n, TFunction } from 'i18next' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { LabwareOffsetLocation } from '@opentrons/api-client' export function getDisplayLocation( diff --git a/app/src/organisms/LabwarePositionCheck/utils/getProbeBasedLPCSteps.ts b/app/src/organisms/LabwarePositionCheck/utils/getProbeBasedLPCSteps.ts index bb02fee1e6e..34d41e2ce99 100644 --- a/app/src/organisms/LabwarePositionCheck/utils/getProbeBasedLPCSteps.ts +++ b/app/src/organisms/LabwarePositionCheck/utils/getProbeBasedLPCSteps.ts @@ -1,16 +1,15 @@ import { isEqual } from 'lodash' import { SECTIONS } from '../constants' -import { +import { getLabwareDefURI, getPipetteNameSpecs } from '@opentrons/shared-data' +import { getLabwareLocationCombos } from '../../ApplyHistoricOffsets/hooks/getLabwareLocationCombos' +import { getLabwareDefinitionsFromCommands } from './labware' + +import type { CompletedProtocolAnalysis, LoadedPipette, - getLabwareDefURI, - getPipetteNameSpecs, } from '@opentrons/shared-data' -import { getLabwareLocationCombos } from '../../ApplyHistoricOffsets/hooks/getLabwareLocationCombos' - import type { LabwarePositionCheckStep, CheckPositionsStep } from '../types' import type { LabwareLocationCombo } from '../../ApplyHistoricOffsets/hooks/getLabwareLocationCombos' -import { getLabwareDefinitionsFromCommands } from './labware' function getPrimaryPipetteId(pipettes: LoadedPipette[]): string { if (pipettes.length < 1) { diff --git a/app/src/organisms/ModuleCard/MagneticModuleData.tsx b/app/src/organisms/ModuleCard/MagneticModuleData.tsx index 6cd6c2284ab..744d24c9811 100644 --- a/app/src/organisms/ModuleCard/MagneticModuleData.tsx +++ b/app/src/organisms/ModuleCard/MagneticModuleData.tsx @@ -1,8 +1,9 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { COLORS, TYPOGRAPHY, StyledText } from '@opentrons/components' -import { MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2 } from '@opentrons/shared-data' +import { MAGNETIC_MODULE_V2 } from '@opentrons/shared-data' import { StatusLabel } from '../../atoms/StatusLabel' +import type { MAGNETIC_MODULE_V1 } from '@opentrons/shared-data' import type { MagneticStatus } from '../../redux/modules/api-types' interface MagModuleProps { diff --git a/app/src/organisms/ModuleCard/TestShakeSlideout.tsx b/app/src/organisms/ModuleCard/TestShakeSlideout.tsx index 81023ffd337..2b02e3a1f8b 100644 --- a/app/src/organisms/ModuleCard/TestShakeSlideout.tsx +++ b/app/src/organisms/ModuleCard/TestShakeSlideout.tsx @@ -23,7 +23,6 @@ import { } from '@opentrons/components' import { getIsHeaterShakerAttached } from '../../redux/config' import { - CreateCommand, getModuleDisplayName, HS_RPM_MAX, HS_RPM_MIN, @@ -41,6 +40,7 @@ import { ModuleSetupModal } from './ModuleSetupModal' import type { HeaterShakerModule, LatchStatus } from '../../redux/modules/types' import type { + CreateCommand, HeaterShakerCloseLatchCreateCommand, HeaterShakerDeactivateShakerCreateCommand, HeaterShakerSetAndWaitForShakeSpeedCreateCommand, diff --git a/app/src/organisms/ModuleWizardFlows/constants.ts b/app/src/organisms/ModuleWizardFlows/constants.ts index 9367f4f2bb2..5c5892003e8 100644 --- a/app/src/organisms/ModuleWizardFlows/constants.ts +++ b/app/src/organisms/ModuleWizardFlows/constants.ts @@ -1,9 +1,9 @@ import { HEATERSHAKER_MODULE_TYPE, - ModuleType, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' +import type { ModuleType } from '@opentrons/shared-data' export const SECTIONS = { BEFORE_BEGINNING: 'BEFORE_BEGINNING', diff --git a/app/src/organisms/ModuleWizardFlows/types.ts b/app/src/organisms/ModuleWizardFlows/types.ts index df6020e9b36..39fc6e6920e 100644 --- a/app/src/organisms/ModuleWizardFlows/types.ts +++ b/app/src/organisms/ModuleWizardFlows/types.ts @@ -1,5 +1,5 @@ -import { AttachedModule } from '@opentrons/api-client' -import { FLOWS, SECTIONS } from './constants' +import type { AttachedModule } from '@opentrons/api-client' +import type { FLOWS, SECTIONS } from './constants' import type { CreateCommand } from '@opentrons/shared-data' import type { PipetteInformation } from '../Devices/hooks' diff --git a/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunningProtocolCommandList.tsx b/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunningProtocolCommandList.tsx index 442cf903914..a9d476d5810 100644 --- a/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunningProtocolCommandList.tsx +++ b/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunningProtocolCommandList.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' -import { ViewportList, ViewportListRef } from 'react-viewport-list' +import { ViewportList } from 'react-viewport-list' import { ALIGN_CENTER, @@ -28,6 +28,7 @@ import { PlayPauseButton } from './PlayPauseButton' import { StopButton } from './StopButton' import { ANALYTICS_PROTOCOL_RUN_ACTION } from '../../../redux/analytics' +import type { ViewportListRef } from 'react-viewport-list' import type { CompletedProtocolAnalysis, RobotType, diff --git a/app/src/organisms/PipetteWizardFlows/AttachProbe.tsx b/app/src/organisms/PipetteWizardFlows/AttachProbe.tsx index 489269e4311..ded4afcb7a7 100644 --- a/app/src/organisms/PipetteWizardFlows/AttachProbe.tsx +++ b/app/src/organisms/PipetteWizardFlows/AttachProbe.tsx @@ -9,12 +9,7 @@ import { StyledText, TYPOGRAPHY, } from '@opentrons/components' -import { - LEFT, - MotorAxes, - WASTE_CHUTE_CUTOUT, - CreateCommand, -} from '@opentrons/shared-data' +import { LEFT, WASTE_CHUTE_CUTOUT } from '@opentrons/shared-data' import { Banner } from '../../atoms/Banner' import { GenericWizardTile } from '../../molecules/GenericWizardTile' import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' @@ -27,6 +22,7 @@ import { getPipetteAnimations } from './utils' import { ProbeNotAttached } from './ProbeNotAttached' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' +import type { MotorAxes, CreateCommand } from '@opentrons/shared-data' import type { PipetteWizardStepProps } from './types' interface AttachProbeProps extends PipetteWizardStepProps { diff --git a/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx b/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx index 165c37053f9..3861bde63a7 100644 --- a/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx +++ b/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { Trans, useTranslation } from 'react-i18next' -import { UseMutateFunction } from 'react-query' import { COLORS, DIRECTION_COLUMN, @@ -33,6 +32,7 @@ import { import { getIsGantryEmpty } from './utils' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' +import type { UseMutateFunction } from 'react-query' import type { AxiosError } from 'axios' import type { CreateCommand, diff --git a/app/src/organisms/PipetteWizardFlows/__tests__/getPipetteWizardStepsForProtocol.test.tsx b/app/src/organisms/PipetteWizardFlows/__tests__/getPipetteWizardStepsForProtocol.test.tsx index 44380a60577..1fc4ea2464e 100644 --- a/app/src/organisms/PipetteWizardFlows/__tests__/getPipetteWizardStepsForProtocol.test.tsx +++ b/app/src/organisms/PipetteWizardFlows/__tests__/getPipetteWizardStepsForProtocol.test.tsx @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest' -import { LEFT, RIGHT, LoadedPipette } from '@opentrons/shared-data' +import { LEFT, RIGHT } from '@opentrons/shared-data' import { mock96ChannelAttachedPipetteInformation, mockAttachedPipetteInformation, @@ -7,6 +7,7 @@ import { import { FLOWS, SECTIONS } from '../constants' import { getPipetteWizardStepsForProtocol } from '../getPipetteWizardStepsForProtocol' +import type { LoadedPipette } from '@opentrons/shared-data' import type { PipetteWizardStep } from '../types' const mockPipetteInfo = [ diff --git a/app/src/organisms/PipetteWizardFlows/getPipetteWizardSteps.ts b/app/src/organisms/PipetteWizardFlows/getPipetteWizardSteps.ts index d253fdf15e9..6d89993ab85 100644 --- a/app/src/organisms/PipetteWizardFlows/getPipetteWizardSteps.ts +++ b/app/src/organisms/PipetteWizardFlows/getPipetteWizardSteps.ts @@ -18,15 +18,15 @@ export const getPipetteWizardSteps = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, - flowType: flowType, + mount, + flowType, }, - { section: SECTIONS.ATTACH_PROBE, mount: mount, flowType: flowType }, - { section: SECTIONS.DETACH_PROBE, mount: mount, flowType: flowType }, + { section: SECTIONS.ATTACH_PROBE, mount, flowType }, + { section: SECTIONS.DETACH_PROBE, mount, flowType }, { section: SECTIONS.RESULTS, - mount: mount, - flowType: flowType, + mount, + flowType, }, ] } @@ -35,21 +35,21 @@ export const getPipetteWizardSteps = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, - flowType: flowType, + mount, + flowType, }, - { section: SECTIONS.MOUNT_PIPETTE, mount: mount, flowType: flowType }, + { section: SECTIONS.MOUNT_PIPETTE, mount, flowType }, { section: SECTIONS.FIRMWARE_UPDATE, - mount: mount, - flowType: flowType, + mount, + flowType, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: flowType }, - { section: SECTIONS.ATTACH_PROBE, mount: mount, flowType: flowType }, - { section: SECTIONS.DETACH_PROBE, mount: mount, flowType: flowType }, + { section: SECTIONS.RESULTS, mount, flowType }, + { section: SECTIONS.ATTACH_PROBE, mount, flowType }, + { section: SECTIONS.DETACH_PROBE, mount, flowType }, { section: SECTIONS.RESULTS, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, ] @@ -64,7 +64,7 @@ export const getPipetteWizardSteps = ( { section: SECTIONS.BEFORE_BEGINNING, mount: detachMount, - flowType: flowType, + flowType, }, { section: SECTIONS.DETACH_PIPETTE, @@ -80,33 +80,33 @@ export const getPipetteWizardSteps = ( { section: SECTIONS.CARRIAGE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.MOUNTING_PLATE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.MOUNT_PIPETTE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.FIRMWARE_UPDATE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.RESULTS, mount: LEFT, flowType: FLOWS.ATTACH }, { section: SECTIONS.ATTACH_PROBE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.DETACH_PROBE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.RESULTS, @@ -120,38 +120,38 @@ export const getPipetteWizardSteps = ( { section: SECTIONS.BEFORE_BEGINNING, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.CARRIAGE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.MOUNTING_PLATE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.MOUNT_PIPETTE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.FIRMWARE_UPDATE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.RESULTS, mount: LEFT, flowType: FLOWS.ATTACH }, { section: SECTIONS.ATTACH_PROBE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.DETACH_PROBE, mount: LEFT, - flowType: flowType, + flowType, }, { section: SECTIONS.RESULTS, @@ -167,40 +167,40 @@ export const getPipetteWizardSteps = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, - flowType: flowType, + mount, + flowType, }, { section: SECTIONS.DETACH_PIPETTE, - mount: mount, - flowType: flowType, + mount, + flowType, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: flowType }, + { section: SECTIONS.RESULTS, mount, flowType }, ] // 96 channel detach } else { return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, - flowType: flowType, + mount, + flowType, }, { section: SECTIONS.DETACH_PIPETTE, - mount: mount, - flowType: flowType, + mount, + flowType, }, { section: SECTIONS.MOUNTING_PLATE, - mount: mount, - flowType: flowType, + mount, + flowType, }, { section: SECTIONS.CARRIAGE, - mount: mount, - flowType: flowType, + mount, + flowType, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: flowType }, + { section: SECTIONS.RESULTS, mount, flowType }, ] } } diff --git a/app/src/organisms/PipetteWizardFlows/getPipetteWizardStepsForProtocol.ts b/app/src/organisms/PipetteWizardFlows/getPipetteWizardStepsForProtocol.ts index ac5cf5ddb16..064b65b7f95 100644 --- a/app/src/organisms/PipetteWizardFlows/getPipetteWizardStepsForProtocol.ts +++ b/app/src/organisms/PipetteWizardFlows/getPipetteWizardStepsForProtocol.ts @@ -1,5 +1,6 @@ -import { LEFT, LoadedPipette, RIGHT } from '@opentrons/shared-data' +import { LEFT, RIGHT } from '@opentrons/shared-data' import { FLOWS, SECTIONS } from './constants' +import type { LoadedPipette } from '@opentrons/shared-data' import type { Mount } from '../../redux/pipettes/types' import type { AttachedPipettesFromInstrumentsQuery } from '../Devices/hooks' import type { PipetteWizardStep } from './types' @@ -23,20 +24,20 @@ export const getPipetteWizardStepsForProtocol = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, { section: SECTIONS.ATTACH_PROBE, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, { section: SECTIONS.DETACH_PROBE, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: FLOWS.CALIBRATE }, + { section: SECTIONS.RESULTS, mount, flowType: FLOWS.CALIBRATE }, ] } else if ( requiredPipette.pipetteName !== 'p1000_96' && @@ -73,28 +74,28 @@ export const getPipetteWizardStepsForProtocol = ( }, { section: SECTIONS.MOUNT_PIPETTE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.FIRMWARE_UPDATE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: FLOWS.ATTACH }, + { section: SECTIONS.RESULTS, mount, flowType: FLOWS.ATTACH }, { section: SECTIONS.ATTACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.DETACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.RESULTS, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, ] @@ -103,39 +104,39 @@ export const getPipetteWizardStepsForProtocol = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, + mount, flowType: FLOWS.DETACH, }, { section: SECTIONS.DETACH_PIPETTE, - mount: mount, + mount, flowType: FLOWS.DETACH, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: FLOWS.DETACH }, + { section: SECTIONS.RESULTS, mount, flowType: FLOWS.DETACH }, { section: SECTIONS.MOUNT_PIPETTE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.FIRMWARE_UPDATE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: FLOWS.ATTACH }, + { section: SECTIONS.RESULTS, mount, flowType: FLOWS.ATTACH }, { section: SECTIONS.ATTACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.DETACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.RESULTS, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, ] @@ -383,33 +384,33 @@ export const getPipetteWizardStepsForProtocol = ( return [ { section: SECTIONS.BEFORE_BEGINNING, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.MOUNT_PIPETTE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.FIRMWARE_UPDATE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, - { section: SECTIONS.RESULTS, mount: mount, flowType: FLOWS.ATTACH }, + { section: SECTIONS.RESULTS, mount, flowType: FLOWS.ATTACH }, { section: SECTIONS.ATTACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.DETACH_PROBE, - mount: mount, + mount, flowType: FLOWS.ATTACH, }, { section: SECTIONS.RESULTS, - mount: mount, + mount, flowType: FLOWS.CALIBRATE, }, ] diff --git a/app/src/organisms/PipetteWizardFlows/hooks.tsx b/app/src/organisms/PipetteWizardFlows/hooks.tsx index f7fe127d623..8d727aeeb75 100644 --- a/app/src/organisms/PipetteWizardFlows/hooks.tsx +++ b/app/src/organisms/PipetteWizardFlows/hooks.tsx @@ -1,13 +1,8 @@ import { useTranslation } from 'react-i18next' import capitalize from 'lodash/capitalize' -import { - LEFT, - LoadedPipette, - PipetteMount, - RIGHT, - SINGLE_MOUNT_PIPETTES, -} from '@opentrons/shared-data' +import { LEFT, RIGHT, SINGLE_MOUNT_PIPETTES } from '@opentrons/shared-data' import { FLOWS } from './constants' +import type { LoadedPipette, PipetteMount } from '@opentrons/shared-data' import type { AttachedPipettesFromInstrumentsQuery } from '../Devices/hooks' import type { PipetteWizardFlow, SelectablePipettes } from './types' diff --git a/app/src/organisms/PipetteWizardFlows/index.tsx b/app/src/organisms/PipetteWizardFlows/index.tsx index 337a51028ed..03f92a64bc8 100644 --- a/app/src/organisms/PipetteWizardFlows/index.tsx +++ b/app/src/organisms/PipetteWizardFlows/index.tsx @@ -5,13 +5,7 @@ import { useTranslation } from 'react-i18next' import NiceModal, { useModal } from '@ebay/nice-modal-react' import { useConditionalConfirm, COLORS } from '@opentrons/components' -import { - LEFT, - NINETY_SIX_CHANNEL, - RIGHT, - LoadedPipette, - CreateCommand, -} from '@opentrons/shared-data' +import { LEFT, NINETY_SIX_CHANNEL, RIGHT } from '@opentrons/shared-data' import { useHost, useDeleteMaintenanceRunMutation, @@ -28,6 +22,7 @@ import { getTopPortalEl } from '../../App/portal' import { WizardHeader } from '../../molecules/WizardHeader' import { FirmwareUpdateModal } from '../FirmwareUpdateModal' import { getIsOnDevice } from '../../redux/config' +import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' import { useAttachedPipettesFromInstrumentsQuery } from '../Devices/hooks' import { usePipetteFlowWizardHeaderText } from './hooks' import { getPipetteWizardSteps } from './getPipetteWizardSteps' @@ -44,10 +39,13 @@ import { Carriage } from './Carriage' import { MountingPlate } from './MountingPlate' import { UnskippableModal } from './UnskippableModal' -import type { PipetteMount } from '@opentrons/shared-data' +import type { + LoadedPipette, + CreateCommand, + PipetteMount, +} from '@opentrons/shared-data' import type { CommandData, HostConfig } from '@opentrons/api-client' import type { PipetteWizardFlow, SelectablePipettes } from './types' -import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' const RUN_REFETCH_INTERVAL = 5000 diff --git a/app/src/organisms/PipetteWizardFlows/types.ts b/app/src/organisms/PipetteWizardFlows/types.ts index f658406e3e3..587e7d84e1f 100644 --- a/app/src/organisms/PipetteWizardFlows/types.ts +++ b/app/src/organisms/PipetteWizardFlows/types.ts @@ -1,7 +1,6 @@ -import { SECTIONS, FLOWS } from './constants' -import { useCreateCommandMutation } from '@opentrons/react-api-client' -import { PipetteMount } from '@opentrons/shared-data' -import type { CreateCommand } from '@opentrons/shared-data' +import type { SECTIONS, FLOWS } from './constants' +import type { useCreateCommandMutation } from '@opentrons/react-api-client' +import type { PipetteMount, CreateCommand } from '@opentrons/shared-data' import type { AttachedPipettesFromInstrumentsQuery } from '../Devices/hooks/useAttachedPipettesFromInstrumentsQuery' export type PipetteWizardStep = diff --git a/app/src/organisms/ProtocolSetupDeckConfiguration/__tests__/ProtocolSetupDeckConfiguration.test.tsx b/app/src/organisms/ProtocolSetupDeckConfiguration/__tests__/ProtocolSetupDeckConfiguration.test.tsx index 18c678d74e6..4ecc5232456 100644 --- a/app/src/organisms/ProtocolSetupDeckConfiguration/__tests__/ProtocolSetupDeckConfiguration.test.tsx +++ b/app/src/organisms/ProtocolSetupDeckConfiguration/__tests__/ProtocolSetupDeckConfiguration.test.tsx @@ -20,7 +20,7 @@ import type { CompletedProtocolAnalysis, DeckConfiguration, } from '@opentrons/shared-data' -import { Modules } from '@opentrons/api-client' +import type { Modules } from '@opentrons/api-client' vi.mock('@opentrons/components/src/hardware-sim/BaseDeck/index') vi.mock('@opentrons/react-api-client') diff --git a/app/src/organisms/ProtocolSetupInstruments/utils.ts b/app/src/organisms/ProtocolSetupInstruments/utils.ts index 45682415bc7..1ce77275e74 100644 --- a/app/src/organisms/ProtocolSetupInstruments/utils.ts +++ b/app/src/organisms/ProtocolSetupInstruments/utils.ts @@ -3,7 +3,11 @@ import type { LoadedPipette, ProtocolAnalysisOutput, } from '@opentrons/shared-data' -import { GripperData, Instruments, PipetteData } from '@opentrons/api-client' +import type { + GripperData, + Instruments, + PipetteData, +} from '@opentrons/api-client' export function getProtocolUsesGripper( analysis: CompletedProtocolAnalysis | ProtocolAnalysisOutput diff --git a/app/src/organisms/ProtocolSetupLabware/LabwareMapViewModal.tsx b/app/src/organisms/ProtocolSetupLabware/LabwareMapViewModal.tsx index efd97cb14ed..e4b353944d2 100644 --- a/app/src/organisms/ProtocolSetupLabware/LabwareMapViewModal.tsx +++ b/app/src/organisms/ProtocolSetupLabware/LabwareMapViewModal.tsx @@ -11,7 +11,6 @@ import { import { Modal } from '../../molecules/Modal' import { getStandardDeckViewLayerBlockList } from '../Devices/ProtocolRun/utils/getStandardDeckViewLayerBlockList' import { getLabwareRenderInfo } from '../Devices/ProtocolRun/utils/getLabwareRenderInfo' -import { AttachedProtocolModuleMatch } from '../ProtocolSetupModulesAndDeck/utils' import type { CompletedProtocolAnalysis, @@ -20,6 +19,7 @@ import type { } from '@opentrons/shared-data' import type { LoadedLabwareByAdapter } from '@opentrons/api-client' import type { ModalHeaderBaseProps } from '../../molecules/Modal/types' +import type { AttachedProtocolModuleMatch } from '../ProtocolSetupModulesAndDeck/utils' interface LabwareMapViewModalProps { attachedProtocolModuleMatches: AttachedProtocolModuleMatch[] diff --git a/app/src/organisms/ProtocolSetupLabware/__tests__/LabwareMapViewModal.test.tsx b/app/src/organisms/ProtocolSetupLabware/__tests__/LabwareMapViewModal.test.tsx index 52c17cd31ca..8a76e5703fe 100644 --- a/app/src/organisms/ProtocolSetupLabware/__tests__/LabwareMapViewModal.test.tsx +++ b/app/src/organisms/ProtocolSetupLabware/__tests__/LabwareMapViewModal.test.tsx @@ -7,7 +7,6 @@ import { describe, it, vi, beforeEach, afterEach, expect } from 'vitest' import { BaseDeck, EXTENDED_DECK_CONFIG_FIXTURE } from '@opentrons/components' import { FLEX_ROBOT_TYPE, - getSimplestDeckConfigForProtocol, deckExample as deckDefFixture, fixtureTiprack300ul, } from '@opentrons/shared-data' @@ -20,6 +19,7 @@ import { mockProtocolModuleInfo } from '../__fixtures__' import { LabwareMapViewModal } from '../LabwareMapViewModal' import type { + getSimplestDeckConfigForProtocol, CompletedProtocolAnalysis, DeckDefinition, LabwareDefinition2, diff --git a/app/src/organisms/ProtocolSetupLabware/index.tsx b/app/src/organisms/ProtocolSetupLabware/index.tsx index 831d0a57962..e1dbcae4911 100644 --- a/app/src/organisms/ProtocolSetupLabware/index.tsx +++ b/app/src/organisms/ProtocolSetupLabware/index.tsx @@ -28,8 +28,6 @@ import { getLabwareDefURI, getLabwareDisplayName, HEATERSHAKER_MODULE_TYPE, - LoadLabwareRunTimeCommand, - RunTimeCommand, } from '@opentrons/shared-data' import { parseInitialLoadedLabwareByAdapter } from '@opentrons/api-client' import { @@ -46,10 +44,7 @@ import { useMostRecentCompletedAnalysis } from '../LabwarePositionCheck/useMostR import { getLabwareSetupItemGroups } from '../../pages/Protocols/utils' import { getProtocolModulesInfo } from '../Devices/ProtocolRun/utils/getProtocolModulesInfo' import { getAttachedProtocolModuleMatches } from '../ProtocolSetupModulesAndDeck/utils' -import { - getNestedLabwareInfo, - NestedLabwareInfo, -} from '../Devices/ProtocolRun/SetupLabware/getNestedLabwareInfo' +import { getNestedLabwareInfo } from '../Devices/ProtocolRun/SetupLabware/getNestedLabwareInfo' import { LabwareMapViewModal } from './LabwareMapViewModal' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' @@ -59,10 +54,13 @@ import type { HeaterShakerOpenLatchCreateCommand, LabwareDefinition2, LabwareLocation, + LoadLabwareRunTimeCommand, + RunTimeCommand, } from '@opentrons/shared-data' import type { HeaterShakerModule, Modules } from '@opentrons/api-client' import type { LabwareSetupItem } from '../../pages/Protocols/utils' import type { SetupScreens } from '../../pages/ProtocolSetup' +import type { NestedLabwareInfo } from '../Devices/ProtocolRun/SetupLabware/getNestedLabwareInfo' import type { AttachedProtocolModuleMatch } from '../ProtocolSetupModulesAndDeck/utils' const MODULE_REFETCH_INTERVAL_MS = 5000 diff --git a/app/src/organisms/ProtocolSetupLiquids/index.tsx b/app/src/organisms/ProtocolSetupLiquids/index.tsx index 2e705d279b2..af886000ab2 100644 --- a/app/src/organisms/ProtocolSetupLiquids/index.tsx +++ b/app/src/organisms/ProtocolSetupLiquids/index.tsx @@ -16,11 +16,12 @@ import { parseLiquidsInLoadOrder, parseLabwareInfoByLiquidId, } from '@opentrons/api-client' -import { MICRO_LITERS, RunTimeCommand } from '@opentrons/shared-data' +import { MICRO_LITERS } from '@opentrons/shared-data' import { ODDBackButton } from '../../molecules/ODDBackButton' import { useMostRecentCompletedAnalysis } from '../LabwarePositionCheck/useMostRecentCompletedAnalysis' import { getTotalVolumePerLiquidId } from '../Devices/ProtocolRun/SetupLiquids/utils' import { LiquidDetails } from './LiquidDetails' +import type { RunTimeCommand } from '@opentrons/shared-data' import type { ParsedLiquid } from '@opentrons/api-client' import type { SetupScreens } from '../../pages/ProtocolSetup' diff --git a/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx b/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx index e2bd427d691..8154768b9c8 100644 --- a/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx +++ b/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx @@ -1,10 +1,10 @@ import * as React from 'react' -import { UseQueryResult } from 'react-query' import { fireEvent, screen, waitFor } from '@testing-library/react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { MemoryRouter } from 'react-router-dom' +import { RUN_STATUS_IDLE } from '@opentrons/api-client' import { FLEX_ROBOT_TYPE, WASTE_CHUTE_RIGHT_ADAPTER_NO_COVER_FIXTURE, @@ -39,7 +39,7 @@ import { useNotifyDeckConfigurationQuery } from '../../../resources/deck_configu import { useRunStatus } from '../../RunTimeControl/hooks' import type { CutoutConfig, DeckConfiguration } from '@opentrons/shared-data' -import { RUN_STATUS_IDLE } from '@opentrons/api-client' +import type { UseQueryResult } from 'react-query' vi.mock('../../../resources/runs') vi.mock('../../../redux/discovery') diff --git a/app/src/organisms/ProtocolSetupModulesAndDeck/utils.ts b/app/src/organisms/ProtocolSetupModulesAndDeck/utils.ts index cc921ef6049..0608751fd0f 100644 --- a/app/src/organisms/ProtocolSetupModulesAndDeck/utils.ts +++ b/app/src/organisms/ProtocolSetupModulesAndDeck/utils.ts @@ -1,5 +1,4 @@ import { - DeckConfiguration, FLEX_ROBOT_TYPE, NON_CONNECTING_MODULE_TYPES, checkModuleCompatibility, @@ -9,6 +8,7 @@ import { getModuleType, } from '@opentrons/shared-data' +import type { DeckConfiguration } from '@opentrons/shared-data' import type { ProtocolModuleInfo } from '../../organisms/Devices/ProtocolRun/utils/getProtocolModulesInfo' import type { AttachedModule } from '../../redux/modules/types' diff --git a/app/src/organisms/ProtocolSetupParameters/__tests__/ResetValuesModal.test.tsx b/app/src/organisms/ProtocolSetupParameters/__tests__/ResetValuesModal.test.tsx index ec2eb28a81c..46659717788 100644 --- a/app/src/organisms/ProtocolSetupParameters/__tests__/ResetValuesModal.test.tsx +++ b/app/src/organisms/ProtocolSetupParameters/__tests__/ResetValuesModal.test.tsx @@ -5,7 +5,7 @@ import { fireEvent, screen } from '@testing-library/react' import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { ResetValuesModal } from '../ResetValuesModal' -import { RunTimeParameter } from '@opentrons/shared-data' +import type { RunTimeParameter } from '@opentrons/shared-data' const mockGoBack = vi.fn() const mockSetRunTimeParametersOverrides = vi.fn() diff --git a/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx b/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx index 89658e81ef4..585aaa2277b 100644 --- a/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx +++ b/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx @@ -8,7 +8,6 @@ import { ErrorBoundary } from 'react-error-boundary' import { getModuleType, getPipetteNameSpecs, - ProtocolAnalysisOutput, FLEX_STANDARD_MODEL, getGripperDisplayName, } from '@opentrons/shared-data' @@ -42,6 +41,7 @@ import { getIsProtocolAnalysisInProgress } from '../../redux/protocol-storage' import { InstrumentContainer } from '../../atoms/InstrumentContainer' import { ProtocolOverflowMenu } from './ProtocolOverflowMenu' import { ProtocolAnalysisFailure } from '../ProtocolAnalysisFailure' +import { getProtocolUsesGripper } from '../ProtocolSetupInstruments/utils' import { ProtocolAnalysisStale } from '../ProtocolAnalysisFailure/ProtocolAnalysisStale' import { getAnalysisStatus, @@ -49,9 +49,9 @@ import { getRobotTypeDisplayName, } from './utils' +import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' import type { StoredProtocolData } from '../../redux/protocol-storage' import type { State } from '../../redux/types' -import { getProtocolUsesGripper } from '../ProtocolSetupInstruments/utils' interface ProtocolCardProps { handleRunProtocol: (storedProtocolData: StoredProtocolData) => void diff --git a/app/src/organisms/ProtocolsLanding/__tests__/hooks.test.tsx b/app/src/organisms/ProtocolsLanding/__tests__/hooks.test.tsx index cfba2402172..629cb692ff0 100644 --- a/app/src/organisms/ProtocolsLanding/__tests__/hooks.test.tsx +++ b/app/src/organisms/ProtocolsLanding/__tests__/hooks.test.tsx @@ -7,10 +7,10 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { useSortedProtocols } from '../hooks' -import { StoredProtocolData } from '../../../redux/protocol-storage' import type { Store } from 'redux' import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' +import type { StoredProtocolData } from '../../../redux/protocol-storage' import type { State } from '../../../redux/types' const mockStoredProtocolData = [ diff --git a/app/src/organisms/ProtocolsLanding/hooks.tsx b/app/src/organisms/ProtocolsLanding/hooks.tsx index dcdc9c528c9..c067cd34f98 100644 --- a/app/src/organisms/ProtocolsLanding/hooks.tsx +++ b/app/src/organisms/ProtocolsLanding/hooks.tsx @@ -1,6 +1,6 @@ import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' -import { StoredProtocolData } from '../../redux/protocol-storage' import { getProtocolDisplayName } from './utils' +import type { StoredProtocolData } from '../../redux/protocol-storage' export type ProtocolSort = | 'alphabetical' diff --git a/app/src/organisms/QuickTransferFlow/CreateNewTransfer.tsx b/app/src/organisms/QuickTransferFlow/CreateNewTransfer.tsx index 5d622577313..c6f4986febc 100644 --- a/app/src/organisms/QuickTransferFlow/CreateNewTransfer.tsx +++ b/app/src/organisms/QuickTransferFlow/CreateNewTransfer.tsx @@ -10,9 +10,9 @@ import { DIRECTION_COLUMN, } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' +import type { SmallButton } from '../../atoms/buttons' interface CreateNewTransferProps { onNext: () => void diff --git a/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx b/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx index 06ec18184bf..c5722fba863 100644 --- a/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx @@ -10,16 +10,17 @@ import { ALIGN_CENTER, } from '@opentrons/components' -import { SmallButton, LargeButton, TabbedButton } from '../../atoms/buttons' +import { LargeButton, TabbedButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import { getCompatibleLabwareByCategory } from './utils' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { SmallButton } from '../../atoms/buttons' +import type { LabwareFilter } from '../../pages/Labware/types' import type { QuickTransferSetupState, QuickTransferWizardAction, } from './types' -import { LabwareFilter } from '../../pages/Labware/types' interface SelectDestLabwareProps { onNext: () => void diff --git a/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx b/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx index 39ef17cffe9..beef6d55e39 100644 --- a/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx @@ -2,9 +2,9 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { Flex, SPACING } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState, QuickTransferWizardAction, diff --git a/app/src/organisms/QuickTransferFlow/SelectPipette.tsx b/app/src/organisms/QuickTransferFlow/SelectPipette.tsx index 6ef31157fdf..152bdf1d7aa 100644 --- a/app/src/organisms/QuickTransferFlow/SelectPipette.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectPipette.tsx @@ -9,10 +9,11 @@ import { } from '@opentrons/components' import { useInstrumentsQuery } from '@opentrons/react-api-client' import { getPipetteSpecsV2, RIGHT, LEFT } from '@opentrons/shared-data' -import { SmallButton, LargeButton } from '../../atoms/buttons' +import { LargeButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import type { PipetteData, Mount } from '@opentrons/api-client' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState, QuickTransferWizardAction, diff --git a/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx b/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx index 5c2889b91f7..21b98cb44fd 100644 --- a/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx @@ -10,16 +10,17 @@ import { ALIGN_CENTER, } from '@opentrons/components' -import { SmallButton, LargeButton, TabbedButton } from '../../atoms/buttons' +import { LargeButton, TabbedButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import { getCompatibleLabwareByCategory } from './utils' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { SmallButton } from '../../atoms/buttons' +import type { LabwareFilter } from '../../pages/Labware/types' import type { QuickTransferSetupState, QuickTransferWizardAction, } from './types' -import { LabwareFilter } from '../../pages/Labware/types' interface SelectSourceLabwareProps { onNext: () => void diff --git a/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx b/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx index 1cdc2b75595..cd82278a66b 100644 --- a/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx @@ -2,9 +2,9 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { Flex, SPACING } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState, QuickTransferWizardAction, diff --git a/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx b/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx index ec5e3cad0e0..462e13d1eae 100644 --- a/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx @@ -2,10 +2,11 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { Flex, SPACING, DIRECTION_COLUMN } from '@opentrons/components' import { getAllDefinitions } from '@opentrons/shared-data' -import { SmallButton, LargeButton } from '../../atoms/buttons' +import { LargeButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState, QuickTransferWizardAction, diff --git a/app/src/organisms/QuickTransferFlow/SummaryAndSettings.tsx b/app/src/organisms/QuickTransferFlow/SummaryAndSettings.tsx index d59bef773cb..3cfd0063a68 100644 --- a/app/src/organisms/QuickTransferFlow/SummaryAndSettings.tsx +++ b/app/src/organisms/QuickTransferFlow/SummaryAndSettings.tsx @@ -10,10 +10,11 @@ import { ALIGN_CENTER, } from '@opentrons/components' -import { SmallButton, TabbedButton } from '../../atoms/buttons' +import { TabbedButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import { Overview } from './Overview' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState } from './types' interface SummaryAndSettingsProps { diff --git a/app/src/organisms/QuickTransferFlow/VolumeEntry.tsx b/app/src/organisms/QuickTransferFlow/VolumeEntry.tsx index e2ce14ee42e..ef2ed8d271d 100644 --- a/app/src/organisms/QuickTransferFlow/VolumeEntry.tsx +++ b/app/src/organisms/QuickTransferFlow/VolumeEntry.tsx @@ -7,13 +7,13 @@ import { ALIGN_CENTER, } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '../ChildNavigation' import { InputField } from '../../atoms/InputField' import { NumericalKeyboard } from '../../atoms/SoftwareKeyboard' import { getVolumeLimits } from './utils' import { CONSOLIDATE, DISTRIBUTE } from './constants' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState, QuickTransferWizardAction, diff --git a/app/src/organisms/QuickTransferFlow/index.tsx b/app/src/organisms/QuickTransferFlow/index.tsx index e8627a373f9..d95c54bd84f 100644 --- a/app/src/organisms/QuickTransferFlow/index.tsx +++ b/app/src/organisms/QuickTransferFlow/index.tsx @@ -6,7 +6,6 @@ import { StepMeter, POSITION_STICKY, } from '@opentrons/components' -import { SmallButton } from '../../atoms/buttons' import { ConfirmExitModal } from './ConfirmExitModal' import { CreateNewTransfer } from './CreateNewTransfer' import { SelectPipette } from './SelectPipette' @@ -19,6 +18,7 @@ import { VolumeEntry } from './VolumeEntry' import { SummaryAndSettings } from './SummaryAndSettings' import { quickTransferReducer } from './utils' +import type { SmallButton } from '../../atoms/buttons' import type { QuickTransferSetupState } from './types' const QUICK_TRANSFER_WIZARD_STEPS = 8 diff --git a/app/src/organisms/QuickTransferFlow/types.ts b/app/src/organisms/QuickTransferFlow/types.ts index e6743428d64..ad6e647021d 100644 --- a/app/src/organisms/QuickTransferFlow/types.ts +++ b/app/src/organisms/QuickTransferFlow/types.ts @@ -1,6 +1,6 @@ -import { ACTIONS, CONSOLIDATE, DISTRIBUTE, TRANSFER } from './constants' import type { Mount } from '@opentrons/api-client' import type { LabwareDefinition2, PipetteV2Specs } from '@opentrons/shared-data' +import type { ACTIONS, CONSOLIDATE, DISTRIBUTE, TRANSFER } from './constants' export interface QuickTransferSetupState { pipette?: PipetteV2Specs diff --git a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx index b127dcbb669..d6048011a57 100644 --- a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx +++ b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { saveAs } from 'file-saver' +import { css } from 'styled-components' import { Flex, @@ -10,7 +11,6 @@ import { DIRECTION_COLUMN, POSITION_RELATIVE, ALIGN_FLEX_END, - Mount, useOnClickOutside, } from '@opentrons/components' import { isFlexPipette, SINGLE_MOUNT_PIPETTES } from '@opentrons/shared-data' @@ -36,10 +36,10 @@ import { PipetteWizardFlows } from '../../PipetteWizardFlows' import { FLOWS } from '../../PipetteWizardFlows/constants' import { useIsEstopNotDisengaged } from '../../../resources/devices/hooks/useIsEstopNotDisengaged' +import type { Mount } from '@opentrons/components' import type { PipetteName } from '@opentrons/shared-data' import type { DeleteCalRequestParams } from '@opentrons/api-client' import type { SelectablePipettes } from '../../PipetteWizardFlows/types' -import { css } from 'styled-components' interface OverflowMenuProps { calType: 'pipetteOffset' | 'tipLength' @@ -74,7 +74,9 @@ export function OverflowMenu({ } = useMenuHandleClickOutside() const calsOverflowWrapperRef = useOnClickOutside({ - onClickOutside: () => setShowOverflowMenu(false), + onClickOutside: () => { + setShowOverflowMenu(false) + }, }) const pipetteOffsetCalibrations = useAllPipetteOffsetCalibrationsQuery().data ?.data @@ -184,7 +186,9 @@ export function OverflowMenu({ setShowPipetteWizardFlows(false)} + closeFlow={() => { + setShowPipetteWizardFlows(false) + }} selectedPipette={selectedPipette} onComplete={() => { setSelectedPipette(SINGLE_MOUNT_PIPETTES) diff --git a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/OverflowMenu.test.tsx b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/OverflowMenu.test.tsx index 638c51fb7e3..f35f4d64997 100644 --- a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/OverflowMenu.test.tsx +++ b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/OverflowMenu.test.tsx @@ -4,7 +4,6 @@ import { when } from 'vitest-when' import '@testing-library/jest-dom/vitest' import { describe, it, expect, vi, beforeEach } from 'vitest' import { OT3_PIPETTES } from '@opentrons/shared-data' -import { Mount } from '@opentrons/components' import { useDeleteCalibrationMutation, useAllPipetteOffsetCalibrationsQuery, @@ -28,6 +27,7 @@ import { import { renderWithProviders } from '../../../../__testing-utils__' import { useIsEstopNotDisengaged } from '../../../../resources/devices/hooks/useIsEstopNotDisengaged' import { OverflowMenu } from '../OverflowMenu' +import type { Mount } from '@opentrons/components' const render = ( props: React.ComponentProps diff --git a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/TipLengthCalibrationItems.test.tsx b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/TipLengthCalibrationItems.test.tsx index df6f0de2089..39bcde401d0 100644 --- a/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/TipLengthCalibrationItems.test.tsx +++ b/app/src/organisms/RobotSettingsCalibration/CalibrationDetails/__tests__/TipLengthCalibrationItems.test.tsx @@ -2,11 +2,11 @@ import * as React from 'react' import { screen } from '@testing-library/react' import { describe, it, expect, vi, beforeEach } from 'vitest' import '@testing-library/jest-dom/vitest' -import { Mount } from '@opentrons/components' import { i18n } from '../../../../i18n' import { renderWithProviders } from '../../../../__testing-utils__' import { TipLengthCalibrationItems } from '../TipLengthCalibrationItems' import { OverflowMenu } from '../OverflowMenu' +import type { Mount } from '@opentrons/components' vi.mock('../../../../redux/custom-labware/selectors') vi.mock('../../../../redux/config') diff --git a/app/src/organisms/RobotSettingsCalibration/RobotSettingsTipLengthCalibration.tsx b/app/src/organisms/RobotSettingsCalibration/RobotSettingsTipLengthCalibration.tsx index 00983365695..721568d38c0 100644 --- a/app/src/organisms/RobotSettingsCalibration/RobotSettingsTipLengthCalibration.tsx +++ b/app/src/organisms/RobotSettingsCalibration/RobotSettingsTipLengthCalibration.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' +import { getLabwareDefURI } from '@opentrons/shared-data' import { DIRECTION_COLUMN, Flex, @@ -11,12 +12,12 @@ import { import { useAllTipLengthCalibrationsQuery } from '@opentrons/react-api-client' import { useAttachedPipettes } from '../../organisms/Devices/hooks' +import { getDefaultTiprackDefForPipetteName } from '../Devices/constants' import { TipLengthCalibrationItems } from './CalibrationDetails/TipLengthCalibrationItems' +import type { PipetteName } from '@opentrons/shared-data' import type { FormattedPipetteOffsetCalibration } from '.' -import { TipLengthCalibration } from '../../redux/calibration/api-types' -import { getDefaultTiprackDefForPipetteName } from '../Devices/constants' -import { getLabwareDefURI, PipetteName } from '@opentrons/shared-data' +import type { TipLengthCalibration } from '../../redux/calibration/api-types' interface RobotSettingsTipLengthCalibrationProps { formattedPipetteOffsetCalibrations: FormattedPipetteOffsetCalibration[] diff --git a/app/src/organisms/RunPreview/CommandIcon.tsx b/app/src/organisms/RunPreview/CommandIcon.tsx index b9314718c68..a2b3a00c592 100644 --- a/app/src/organisms/RunPreview/CommandIcon.tsx +++ b/app/src/organisms/RunPreview/CommandIcon.tsx @@ -1,7 +1,7 @@ import * as React from 'react' -import { Icon, IconName } from '@opentrons/components' -import { RunTimeCommand } from '@opentrons/shared-data' -import type { StyleProps } from '@opentrons/components' +import { Icon } from '@opentrons/components' +import type { IconName, StyleProps } from '@opentrons/components' +import type { RunTimeCommand } from '@opentrons/shared-data' const ICON_BY_COMMAND_TYPE: { [commandType: string]: IconName } = { delay: 'pause-circle', diff --git a/app/src/organisms/RunPreview/index.tsx b/app/src/organisms/RunPreview/index.tsx index efc716a5738..9c7b535fe38 100644 --- a/app/src/organisms/RunPreview/index.tsx +++ b/app/src/organisms/RunPreview/index.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { css } from 'styled-components' import { useTranslation } from 'react-i18next' -import { ViewportList, ViewportListRef } from 'react-viewport-list' +import { ViewportList } from 'react-viewport-list' import { RUN_STATUSES_TERMINAL } from '@opentrons/api-client' import { @@ -32,6 +32,7 @@ import { useRunStatus } from '../RunTimeControl/hooks' import { getCommandTextData } from '../CommandText/utils/getCommandTextData' import { useLastRunCommand } from '../Devices/hooks/useLastRunCommand' +import type { ViewportListRef } from 'react-viewport-list' import type { RunStatus } from '@opentrons/api-client' import type { RobotType } from '@opentrons/shared-data' diff --git a/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx b/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx index 9bb8140ecbf..77eeada15ba 100644 --- a/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx +++ b/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx @@ -9,7 +9,6 @@ import { RUN_STATUS_IDLE, RUN_STATUS_RUNNING, RUN_STATUS_SUCCEEDED, - RunCommandSummary, } from '@opentrons/api-client' import { i18n } from '../../../i18n' @@ -36,6 +35,7 @@ import { RunProgressMeter } from '..' import { renderWithProviders } from '../../../__testing-utils__' import { useLastRunCommand } from '../../Devices/hooks/useLastRunCommand' +import type { RunCommandSummary } from '@opentrons/api-client' import type * as ApiClient from '@opentrons/react-api-client' vi.mock('@opentrons/react-api-client', async importOriginal => { diff --git a/app/src/organisms/RunTimeControl/__tests__/hooks.test.tsx b/app/src/organisms/RunTimeControl/__tests__/hooks.test.tsx index a46bc37d865..7d4ef55ab2b 100644 --- a/app/src/organisms/RunTimeControl/__tests__/hooks.test.tsx +++ b/app/src/organisms/RunTimeControl/__tests__/hooks.test.tsx @@ -1,5 +1,4 @@ import { when } from 'vitest-when' -import { UseQueryResult } from 'react-query' import { act, renderHook } from '@testing-library/react' import { describe, it, expect, vi, beforeEach } from 'vitest' import '@testing-library/jest-dom/vitest' @@ -31,6 +30,7 @@ import { mockCommand, } from '../__fixtures__' +import type { UseQueryResult } from 'react-query' import type { Run } from '@opentrons/api-client' import type * as ApiClient from '@opentrons/react-api-client' diff --git a/app/src/organisms/RunTimeControl/utils.ts b/app/src/organisms/RunTimeControl/utils.ts index 91cfee88a4b..e95efcaf164 100644 --- a/app/src/organisms/RunTimeControl/utils.ts +++ b/app/src/organisms/RunTimeControl/utils.ts @@ -1,5 +1,6 @@ -import { intervalToDuration, Duration } from 'date-fns' +import { intervalToDuration } from 'date-fns' import padStart from 'lodash/padStart' +import type { Duration } from 'date-fns' /** * utility to format a date-fns duration object to hh:mm:ss diff --git a/app/src/organisms/SendProtocolToFlexSlideout/index.tsx b/app/src/organisms/SendProtocolToFlexSlideout/index.tsx index 883a264b78c..4695cb7652c 100644 --- a/app/src/organisms/SendProtocolToFlexSlideout/index.tsx +++ b/app/src/organisms/SendProtocolToFlexSlideout/index.tsx @@ -6,7 +6,7 @@ import { useCreateProtocolMutation } from '@opentrons/react-api-client' import { FLEX_DISPLAY_NAME, FLEX_ROBOT_TYPE } from '@opentrons/shared-data' -import { PrimaryButton, IconProps, StyleProps } from '@opentrons/components' +import { PrimaryButton } from '@opentrons/components' import { ERROR_TOAST, INFO_TOAST, SUCCESS_TOAST } from '../../atoms/Toast' import { ChooseRobotSlideout } from '../../organisms/ChooseRobotSlideout' import { @@ -17,13 +17,14 @@ import { useToaster } from '../../organisms/ToasterOven' import { appShellRequestor } from '../../redux/shell/remote' import { OPENTRONS_USB } from '../../redux/discovery' import { getIsProtocolAnalysisInProgress } from '../../redux/protocol-storage' +import { getRobotUpdateDisplayInfo } from '../../redux/robot-update' +import { getValidCustomLabwareFiles } from '../../redux/custom-labware' import type { AxiosError } from 'axios' -import { getRobotUpdateDisplayInfo } from '../../redux/robot-update' +import type { IconProps, StyleProps } from '@opentrons/components' import type { Robot } from '../../redux/discovery/types' import type { StoredProtocolData } from '../../redux/protocol-storage' import type { State } from '../../redux/types' -import { getValidCustomLabwareFiles } from '../../redux/custom-labware' const _getFileBaseName = (filePath: string): string => { return filePath.split('/').reverse()[0] diff --git a/app/src/organisms/UpdateAppModal/__tests__/UpdateAppModal.test.tsx b/app/src/organisms/UpdateAppModal/__tests__/UpdateAppModal.test.tsx index 440ddca0f42..95681e4a661 100644 --- a/app/src/organisms/UpdateAppModal/__tests__/UpdateAppModal.test.tsx +++ b/app/src/organisms/UpdateAppModal/__tests__/UpdateAppModal.test.tsx @@ -7,12 +7,13 @@ import { i18n } from '../../../i18n' import * as Shell from '../../../redux/shell' import { renderWithProviders } from '../../../__testing-utils__' import { useRemoveActiveAppUpdateToast } from '../../Alerts' -import { UpdateAppModal, UpdateAppModalProps, RELEASE_NOTES_URL_BASE } from '..' +import { UpdateAppModal, RELEASE_NOTES_URL_BASE } from '..' import type { State } from '../../../redux/types' import type { ShellUpdateState } from '../../../redux/shell/types' import type * as ShellState from '../../../redux/shell' import type * as Dom from 'react-router-dom' +import type { UpdateAppModalProps } from '..' vi.mock('../../../redux/shell/update', async importOriginal => { const actual = await importOriginal() diff --git a/app/src/pages/DeckConfiguration/index.tsx b/app/src/pages/DeckConfiguration/index.tsx index 2c90d5249b8..a14ddfb14b3 100644 --- a/app/src/pages/DeckConfiguration/index.tsx +++ b/app/src/pages/DeckConfiguration/index.tsx @@ -22,7 +22,6 @@ import { FLEX_ROBOT_TYPE, } from '@opentrons/shared-data' -import { SmallButton } from '../../atoms/buttons' import { ChildNavigation } from '../../organisms/ChildNavigation' import { AddFixtureModal } from '../../organisms/DeviceDetailsDeckConfiguration/AddFixtureModal' import { DeckFixtureSetupInstructionsModal } from '../../organisms/DeviceDetailsDeckConfiguration/DeckFixtureSetupInstructionsModal' @@ -35,6 +34,7 @@ import type { CutoutId, DeckConfiguration, } from '@opentrons/shared-data' +import type { SmallButton } from '../../atoms/buttons' export function DeckConfigurationEditor(): JSX.Element { const { t, i18n } = useTranslation([ diff --git a/app/src/pages/Devices/ProtocolRunDetails/index.tsx b/app/src/pages/Devices/ProtocolRunDetails/index.tsx index 672c2231e31..2d92e3ae705 100644 --- a/app/src/pages/Devices/ProtocolRunDetails/index.tsx +++ b/app/src/pages/Devices/ProtocolRunDetails/index.tsx @@ -37,14 +37,14 @@ import { useCurrentRunId } from '../../../organisms/ProtocolUpload/hooks' import { OPENTRONS_USB } from '../../../redux/discovery' import { fetchProtocols } from '../../../redux/protocol-storage' import { appShellRequestor } from '../../../redux/shell/remote' +import { useMostRecentCompletedAnalysis } from '../../../organisms/LabwarePositionCheck/useMostRecentCompletedAnalysis' +import type { ViewportListRef } from 'react-viewport-list' import type { DesktopRouteParams, ProtocolRunDetailsTab, } from '../../../App/types' import type { Dispatch } from '../../../redux/types' -import { useMostRecentCompletedAnalysis } from '../../../organisms/LabwarePositionCheck/useMostRecentCompletedAnalysis' -import { ViewportListRef } from 'react-viewport-list' const baseRoundTabStyling = css` ${TYPOGRAPHY.pSemiBold} diff --git a/app/src/pages/Labware/__tests__/hooks.test.tsx b/app/src/pages/Labware/__tests__/hooks.test.tsx index 20173b0dbf0..23035d94cc3 100644 --- a/app/src/pages/Labware/__tests__/hooks.test.tsx +++ b/app/src/pages/Labware/__tests__/hooks.test.tsx @@ -21,7 +21,7 @@ import { useAllLabware, useLabwareFailure, useNewLabwareName } from '../hooks' import type { Store } from 'redux' import type { State } from '../../../redux/types' -import { FailedLabwareFile } from '../../../redux/custom-labware/types' +import type { FailedLabwareFile } from '../../../redux/custom-labware/types' vi.mock('../../../redux/custom-labware') vi.mock('../helpers/getAllDefs') diff --git a/app/src/pages/Labware/index.tsx b/app/src/pages/Labware/index.tsx index c5ba42a5dd8..ad05c61f9ee 100644 --- a/app/src/pages/Labware/index.tsx +++ b/app/src/pages/Labware/index.tsx @@ -34,15 +34,11 @@ import { LabwareCard } from '../../organisms/LabwareCard' import { AddCustomLabwareSlideout } from '../../organisms/AddCustomLabwareSlideout' import { LabwareDetails } from '../../organisms/LabwareDetails' import { useToaster } from '../../organisms/ToasterOven' -import { - LabwareDefAndDate, - useAllLabware, - useLabwareFailure, - useNewLabwareName, -} from './hooks' +import { useAllLabware, useLabwareFailure, useNewLabwareName } from './hooks' import type { DropdownOption } from '../../atoms/MenuList/DropdownMenu' import type { LabwareFilter, LabwareSort } from './types' +import type { LabwareDefAndDate } from './hooks' const LABWARE_CREATOR_HREF = 'https://labware.opentrons.com/create/' const labwareDisplayCategoryFilters: LabwareFilter[] = [ diff --git a/app/src/pages/ProtocolDashboard/__tests__/DeleteProtocolConfirmationModal.test.tsx b/app/src/pages/ProtocolDashboard/__tests__/DeleteProtocolConfirmationModal.test.tsx index 22ee4ae1286..c12dcfa21fd 100644 --- a/app/src/pages/ProtocolDashboard/__tests__/DeleteProtocolConfirmationModal.test.tsx +++ b/app/src/pages/ProtocolDashboard/__tests__/DeleteProtocolConfirmationModal.test.tsx @@ -3,18 +3,14 @@ import { vi, it, describe, expect, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { act, fireEvent, screen } from '@testing-library/react' -import { - getProtocol, - deleteProtocol, - deleteRun, - HostConfig, -} from '@opentrons/api-client' +import { getProtocol, deleteProtocol, deleteRun } from '@opentrons/api-client' import { renderWithProviders } from '../../../__testing-utils__' import { useHost, useProtocolQuery } from '@opentrons/react-api-client' import { i18n } from '../../../i18n' import { useToaster } from '../../../organisms/ToasterOven' import { DeleteProtocolConfirmationModal } from '../DeleteProtocolConfirmationModal' +import type { HostConfig } from '@opentrons/api-client' vi.mock('@opentrons/api-client') vi.mock('@opentrons/react-api-client') diff --git a/app/src/pages/ProtocolDashboard/__tests__/LongPressModal.test.tsx b/app/src/pages/ProtocolDashboard/__tests__/LongPressModal.test.tsx index e657b7bbdc5..d39e45c6947 100644 --- a/app/src/pages/ProtocolDashboard/__tests__/LongPressModal.test.tsx +++ b/app/src/pages/ProtocolDashboard/__tests__/LongPressModal.test.tsx @@ -5,13 +5,13 @@ import { MemoryRouter } from 'react-router-dom' import { fireEvent, renderHook } from '@testing-library/react' import { useLongPress } from '@opentrons/components' -import { HostConfig } from '@opentrons/api-client' import { useCreateRunMutation, useHost } from '@opentrons/react-api-client' import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { LongPressModal } from '../LongPressModal' +import type { HostConfig } from '@opentrons/api-client' import type { UseLongPressResult } from '@opentrons/components' const MOCK_HOST_CONFIG = {} as HostConfig diff --git a/app/src/pages/ProtocolDashboard/__tests__/ProtocolCard.test.tsx b/app/src/pages/ProtocolDashboard/__tests__/ProtocolCard.test.tsx index 040e00d640c..081a1d720cd 100644 --- a/app/src/pages/ProtocolDashboard/__tests__/ProtocolCard.test.tsx +++ b/app/src/pages/ProtocolDashboard/__tests__/ProtocolCard.test.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import { vi, it, describe, expect, beforeEach } from 'vitest' import { act, fireEvent, screen } from '@testing-library/react' import { MemoryRouter } from 'react-router-dom' -import { UseQueryResult } from 'react-query' import { useMostRecentSuccessfulAnalysisAsDocumentQuery, useProtocolAnalysisAsDocumentQuery, @@ -12,7 +11,7 @@ import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { ProtocolCard } from '../ProtocolCard' import type * as ReactRouterDom from 'react-router-dom' - +import type { UseQueryResult } from 'react-query' import type { CompletedProtocolAnalysis, ProtocolResource, diff --git a/app/src/pages/ProtocolDetails/__tests__/Liquids.test.tsx b/app/src/pages/ProtocolDetails/__tests__/Liquids.test.tsx index f6e665f63e3..af8f437e70c 100644 --- a/app/src/pages/ProtocolDetails/__tests__/Liquids.test.tsx +++ b/app/src/pages/ProtocolDetails/__tests__/Liquids.test.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { vi, it, describe, beforeEach } from 'vitest' -import { UseQueryResult } from 'react-query' import { when } from 'vitest-when' import { useProtocolAnalysisAsDocumentQuery, @@ -9,12 +8,13 @@ import { import { parseLabwareInfoByLiquidId, parseLiquidsInLoadOrder, - Protocol, } from '@opentrons/api-client' import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { Liquids } from '../Liquids' -import { CompletedProtocolAnalysis } from '@opentrons/shared-data' +import type { UseQueryResult } from 'react-query' +import type { Protocol } from '@opentrons/api-client' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' vi.mock('@opentrons/api-client') vi.mock('@opentrons/react-api-client') diff --git a/app/src/pages/ProtocolDetails/__tests__/ProtocolDetails.test.tsx b/app/src/pages/ProtocolDetails/__tests__/ProtocolDetails.test.tsx index 0e9226de0a8..59db6871691 100644 --- a/app/src/pages/ProtocolDetails/__tests__/ProtocolDetails.test.tsx +++ b/app/src/pages/ProtocolDetails/__tests__/ProtocolDetails.test.tsx @@ -5,12 +5,7 @@ import { when } from 'vitest-when' import { Route, MemoryRouter } from 'react-router-dom' import '@testing-library/jest-dom/vitest' import { renderWithProviders } from '../../../__testing-utils__' -import { - deleteProtocol, - deleteRun, - getProtocol, - HostConfig, -} from '@opentrons/api-client' +import { deleteProtocol, deleteRun, getProtocol } from '@opentrons/api-client' import { useCreateRunMutation, useHost, @@ -33,6 +28,7 @@ import { Hardware } from '../Hardware' import { Labware } from '../Labware' import { Parameters } from '../Parameters' import { mockRunTimeParameterData } from '../fixtures' +import type { HostConfig } from '@opentrons/api-client' // Mock IntersectionObserver class IntersectionObserver { diff --git a/app/src/pages/Protocols/hooks/__tests__/hooks.test.tsx b/app/src/pages/Protocols/hooks/__tests__/hooks.test.tsx index 79e0e16a759..95cc478f7b6 100644 --- a/app/src/pages/Protocols/hooks/__tests__/hooks.test.tsx +++ b/app/src/pages/Protocols/hooks/__tests__/hooks.test.tsx @@ -1,5 +1,4 @@ import { vi, it, describe, expect, beforeEach, afterEach } from 'vitest' -import { UseQueryResult } from 'react-query' import { renderHook } from '@testing-library/react' import { when } from 'vitest-when' import omitBy from 'lodash/omitBy' @@ -11,10 +10,7 @@ import { useModulesQuery, } from '@opentrons/react-api-client' import { - CompletedProtocolAnalysis, - DeckConfiguration, FLEX_SIMPLEST_DECK_CONFIG, - LabwareDefinition2, WASTE_CHUTE_RIGHT_ADAPTER_NO_COVER_FIXTURE, fixtureTiprack300ul, } from '@opentrons/shared-data' @@ -24,9 +20,15 @@ import { useRunTimeParameters, } from '../index' import { useNotifyDeckConfigurationQuery } from '../../../../resources/deck_configuration/useNotifyDeckConfigurationQuery' +import { mockHeaterShaker } from '../../../../redux/modules/__fixtures__' +import type { UseQueryResult } from 'react-query' +import type { + CompletedProtocolAnalysis, + DeckConfiguration, + LabwareDefinition2, +} from '@opentrons/shared-data' import type { Protocol } from '@opentrons/api-client' -import { mockHeaterShaker } from '../../../../redux/modules/__fixtures__' vi.mock('@opentrons/react-api-client') vi.mock('../../../../organisms/Devices/hooks') diff --git a/app/src/pages/RobotDashboard/index.tsx b/app/src/pages/RobotDashboard/index.tsx index 2b4606d3812..86cb9b693f7 100644 --- a/app/src/pages/RobotDashboard/index.tsx +++ b/app/src/pages/RobotDashboard/index.tsx @@ -19,9 +19,9 @@ import { import { getOnDeviceDisplaySettings } from '../../redux/config' import { AnalyticsOptInModal } from './AnalyticsOptInModal' import { WelcomeModal } from './WelcomeModal' -import { RunData } from '@opentrons/api-client' import { ServerInitializing } from '../../organisms/OnDeviceDisplay/RobotDashboard/ServerInitializing' import { useNotifyAllRunsQuery } from '../../resources/runs' +import type { RunData } from '@opentrons/api-client' export const MAXIMUM_RECENT_RUN_PROTOCOLS = 8 diff --git a/app/src/redux/alerts/actions.ts b/app/src/redux/alerts/actions.ts index a1c169c4772..3439ea75703 100644 --- a/app/src/redux/alerts/actions.ts +++ b/app/src/redux/alerts/actions.ts @@ -1,6 +1,6 @@ import { addUniqueConfigValue, subtractConfigValue } from '../config' import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { AddUniqueConfigValueAction, diff --git a/app/src/redux/alerts/types.ts b/app/src/redux/alerts/types.ts index 9c6b1d54339..69a793ee672 100644 --- a/app/src/redux/alerts/types.ts +++ b/app/src/redux/alerts/types.ts @@ -1,4 +1,4 @@ -import { +import type { ALERT_U2E_DRIVER_OUTDATED, ALERT_APP_UPDATE_AVAILABLE, ALERT_TRIGGERED, diff --git a/app/src/redux/analytics/actions.ts b/app/src/redux/analytics/actions.ts index 8ae92b3ace1..c87e48dc078 100644 --- a/app/src/redux/analytics/actions.ts +++ b/app/src/redux/analytics/actions.ts @@ -1,8 +1,8 @@ // Actions for triggering analytics events that don't work well as epics looking // for unrelated events -import * as Types from './types' import * as Constants from './constants' +import type * as Types from './types' export const pipetteOffsetCalibrationStarted = ( mount: string, diff --git a/app/src/redux/analytics/types.ts b/app/src/redux/analytics/types.ts index 197660f7794..2d9b972f55b 100644 --- a/app/src/redux/analytics/types.ts +++ b/app/src/redux/analytics/types.ts @@ -1,12 +1,11 @@ -import { - ANALYTICS_PIPETTE_OFFSET_STARTED, - ANALYTICS_TIP_LENGTH_STARTED, -} from './constants' - import type { PipetteMount as Mount } from '@opentrons/shared-data' import type { CalibrationCheckComparisonsPerCalibration } from '../sessions/types' import type { DeckCalibrationStatus } from '../calibration/types' import type { ConfigV0 } from '../config/types' +import type { + ANALYTICS_PIPETTE_OFFSET_STARTED, + ANALYTICS_TIP_LENGTH_STARTED, +} from './constants' export type AnalyticsConfig = ConfigV0['analytics'] diff --git a/app/src/redux/calibration/__fixtures__/calibration-status.ts b/app/src/redux/calibration/__fixtures__/calibration-status.ts index 247d161fd26..0e765302a36 100644 --- a/app/src/redux/calibration/__fixtures__/calibration-status.ts +++ b/app/src/redux/calibration/__fixtures__/calibration-status.ts @@ -7,7 +7,7 @@ import { CALIBRATION_STATUS_PATH, DECK_CAL_STATUS_IDENTITY } from '../constants' import type { ResponseFixtures } from '../../robot-api/__fixtures__' import type { CalibrationStatus, ProtocolCalibrationStatus } from '../types' -import { DeckCalibrationData } from '@opentrons/api-client' +import type { DeckCalibrationData } from '@opentrons/api-client' export const mockCalibrationStatus: CalibrationStatus = { deckCalibration: { diff --git a/app/src/redux/calibration/actions.ts b/app/src/redux/calibration/actions.ts index de88eb16641..fff62325f6e 100644 --- a/app/src/redux/calibration/actions.ts +++ b/app/src/redux/calibration/actions.ts @@ -1,10 +1,10 @@ import { resetConfigValue, updateConfigValue } from '../config' +import * as Constants from './constants' import type { ResetConfigValueAction, UpdateConfigValueAction, } from '../config/types' -import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta, diff --git a/app/src/redux/calibration/api-types.ts b/app/src/redux/calibration/api-types.ts index dc39685d4fb..ec07faddbf5 100644 --- a/app/src/redux/calibration/api-types.ts +++ b/app/src/redux/calibration/api-types.ts @@ -1,4 +1,4 @@ -import { +import type { DECK_CAL_STATUS_OK, DECK_CAL_STATUS_IDENTITY, DECK_CAL_STATUS_BAD_CALIBRATION, diff --git a/app/src/redux/calibration/pipette-offset/actions.ts b/app/src/redux/calibration/pipette-offset/actions.ts index 01827e2497c..c2d6bad6657 100644 --- a/app/src/redux/calibration/pipette-offset/actions.ts +++ b/app/src/redux/calibration/pipette-offset/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { AllPipetteOffsetCalibrations } from '../api-types' diff --git a/app/src/redux/calibration/pipette-offset/types.ts b/app/src/redux/calibration/pipette-offset/types.ts index 998cfddd3ad..f910352b099 100644 --- a/app/src/redux/calibration/pipette-offset/types.ts +++ b/app/src/redux/calibration/pipette-offset/types.ts @@ -5,7 +5,7 @@ import type { import type { AllPipetteOffsetCalibrations } from '../api-types' -import { +import type { FETCH_PIPETTE_OFFSET_CALIBRATIONS, FETCH_PIPETTE_OFFSET_CALIBRATIONS_SUCCESS, FETCH_PIPETTE_OFFSET_CALIBRATIONS_FAILURE, diff --git a/app/src/redux/calibration/tip-length/actions.ts b/app/src/redux/calibration/tip-length/actions.ts index 11f0f6cc8d9..e010dc74b9b 100644 --- a/app/src/redux/calibration/tip-length/actions.ts +++ b/app/src/redux/calibration/tip-length/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { AllTipLengthCalibrations } from '../api-types' diff --git a/app/src/redux/calibration/tip-length/types.ts b/app/src/redux/calibration/tip-length/types.ts index 103311e3f3f..36765f79e80 100644 --- a/app/src/redux/calibration/tip-length/types.ts +++ b/app/src/redux/calibration/tip-length/types.ts @@ -5,7 +5,7 @@ import type { import type { AllTipLengthCalibrations } from '../api-types' -import { +import type { FETCH_TIP_LENGTH_CALIBRATIONS, FETCH_TIP_LENGTH_CALIBRATIONS_SUCCESS, FETCH_TIP_LENGTH_CALIBRATIONS_FAILURE, diff --git a/app/src/redux/calibration/types.ts b/app/src/redux/calibration/types.ts index c8b54499bb9..a26655cb273 100644 --- a/app/src/redux/calibration/types.ts +++ b/app/src/redux/calibration/types.ts @@ -12,7 +12,7 @@ import type { import type { PipetteOffsetCalibrationsAction } from './pipette-offset/types' import type { TipLengthCalibrationsAction } from './tip-length/types' -import { +import type { FETCH_CALIBRATION_STATUS, FETCH_CALIBRATION_STATUS_SUCCESS, FETCH_CALIBRATION_STATUS_FAILURE, diff --git a/app/src/redux/config/actions.ts b/app/src/redux/config/actions.ts index e4112cb9e0a..e0a6906b17f 100644 --- a/app/src/redux/config/actions.ts +++ b/app/src/redux/config/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' // request a config value update export const updateConfigValue = ( diff --git a/app/src/redux/config/types.ts b/app/src/redux/config/types.ts index 7e57539700d..b408a2204e2 100644 --- a/app/src/redux/config/types.ts +++ b/app/src/redux/config/types.ts @@ -1,4 +1,4 @@ -import { +import type { INITIALIZED, VALUE_UPDATED, UPDATE_VALUE, diff --git a/app/src/redux/custom-labware/__fixtures__/index.ts b/app/src/redux/custom-labware/__fixtures__/index.ts index 50311d1f5d1..56233d506fd 100644 --- a/app/src/redux/custom-labware/__fixtures__/index.ts +++ b/app/src/redux/custom-labware/__fixtures__/index.ts @@ -1,6 +1,6 @@ import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { LabwareWellGroupProperties } from '../../../pages/Labware/types' -import * as Types from '../types' +import type * as Types from '../types' export const mockDefinition: LabwareDefinition2 = { version: 1, diff --git a/app/src/redux/custom-labware/actions.ts b/app/src/redux/custom-labware/actions.ts index 8850c79a3cc..705a4259aa4 100644 --- a/app/src/redux/custom-labware/actions.ts +++ b/app/src/redux/custom-labware/actions.ts @@ -1,5 +1,5 @@ import { resetConfigValue } from '../config' -import * as Types from './types' +import type * as Types from './types' import type { ResetConfigValueAction } from '../config/types' diff --git a/app/src/redux/custom-labware/reducer.ts b/app/src/redux/custom-labware/reducer.ts index d6f6455acd5..2d8d0836865 100644 --- a/app/src/redux/custom-labware/reducer.ts +++ b/app/src/redux/custom-labware/reducer.ts @@ -4,7 +4,7 @@ import * as Actions from './actions' import type { Action } from '../types' import type { CustomLabwareState } from './types' -import { Reducer } from 'redux' +import type { Reducer } from 'redux' export const INITIAL_STATE: CustomLabwareState = { filenames: [], diff --git a/app/src/redux/discovery/reducer.ts b/app/src/redux/discovery/reducer.ts index e6ce2faa78a..741bd2fd693 100644 --- a/app/src/redux/discovery/reducer.ts +++ b/app/src/redux/discovery/reducer.ts @@ -5,7 +5,7 @@ import * as actions from './actions' import type { Action } from '../types' import type { DiscoveryState } from './types' -import { Reducer } from 'redux' +import type { Reducer } from 'redux' export const INITIAL_STATE: DiscoveryState = { scanning: false, diff --git a/app/src/redux/discovery/selectors.ts b/app/src/redux/discovery/selectors.ts index 3becb1a31a3..c92f6f6d2a1 100644 --- a/app/src/redux/discovery/selectors.ts +++ b/app/src/redux/discovery/selectors.ts @@ -25,7 +25,7 @@ import { } from './constants' import type { State } from '../types' -import { +import type { DiscoveredRobot, DiscoveryClientRobotAddress, Robot, diff --git a/app/src/redux/discovery/types.ts b/app/src/redux/discovery/types.ts index 6d87dee56da..399326ec1ed 100644 --- a/app/src/redux/discovery/types.ts +++ b/app/src/redux/discovery/types.ts @@ -5,7 +5,7 @@ import type { HealthStatus, } from '@opentrons/discovery-client' -import { +import type { HEALTH_STATUS_OK, CONNECTABLE, REACHABLE, diff --git a/app/src/redux/modules/__fixtures__/index.ts b/app/src/redux/modules/__fixtures__/index.ts index 258817bdc8a..a14454c56ec 100644 --- a/app/src/redux/modules/__fixtures__/index.ts +++ b/app/src/redux/modules/__fixtures__/index.ts @@ -1,5 +1,5 @@ -import * as Types from '../types' -import * as ApiTypes from '../api-types' +import type * as Types from '../types' +import type * as ApiTypes from '../api-types' import type { RobotApiResponse, RobotApiResponseMeta, diff --git a/app/src/redux/modules/actions.ts b/app/src/redux/modules/actions.ts index 3d4bfaa5b9c..85bfa6db5ef 100644 --- a/app/src/redux/modules/actions.ts +++ b/app/src/redux/modules/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta } from '../robot-api/types' diff --git a/app/src/redux/modules/api-types.ts b/app/src/redux/modules/api-types.ts index 74bf735f760..4ebe20ef126 100644 --- a/app/src/redux/modules/api-types.ts +++ b/app/src/redux/modules/api-types.ts @@ -1,11 +1,8 @@ -import { +import type { TEMPDECK, MAGDECK, THERMOCYCLER, ModuleType, -} from '@opentrons/shared-data' - -import type { MagneticModuleModel, TemperatureModuleModel, ThermocyclerModuleModel, diff --git a/app/src/redux/modules/constants.ts b/app/src/redux/modules/constants.ts index 9be54c0375a..027a0398746 100644 --- a/app/src/redux/modules/constants.ts +++ b/app/src/redux/modules/constants.ts @@ -1,4 +1,5 @@ -import { ModuleType, THERMOCYCLER_MODULE_TYPE } from '@opentrons/shared-data' +import { THERMOCYCLER_MODULE_TYPE } from '@opentrons/shared-data' +import type { ModuleType } from '@opentrons/shared-data' // common constants diff --git a/app/src/redux/modules/epic/__tests__/updateModuleEpic.test.ts b/app/src/redux/modules/epic/__tests__/updateModuleEpic.test.ts index 8a7676aff66..79575a1ff9e 100644 --- a/app/src/redux/modules/epic/__tests__/updateModuleEpic.test.ts +++ b/app/src/redux/modules/epic/__tests__/updateModuleEpic.test.ts @@ -6,9 +6,9 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { modulesEpic } from '../../epic' +import type * as Types from '../../types' import type { Action, State } from '../../../types' vi.mock('../../../robot-api/http') diff --git a/app/src/redux/modules/types.ts b/app/src/redux/modules/types.ts index ff209830515..ce5b44123d3 100644 --- a/app/src/redux/modules/types.ts +++ b/app/src/redux/modules/types.ts @@ -4,18 +4,15 @@ import type { ThermocyclerModuleModel, MagneticModuleModel, HeaterShakerModuleModel, -} from '@opentrons/shared-data' - -import { TEMPERATURE_MODULE_TYPE, MAGNETIC_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, } from '@opentrons/shared-data' -import { ModuleOffset } from '@opentrons/api-client' +import type { ModuleOffset } from '@opentrons/api-client' -import * as ApiTypes from './api-types' +import type * as ApiTypes from './api-types' export * from './api-types' // common types diff --git a/app/src/redux/networking/actions.ts b/app/src/redux/networking/actions.ts index 49f6911605b..48e8ea924bc 100644 --- a/app/src/redux/networking/actions.ts +++ b/app/src/redux/networking/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta, diff --git a/app/src/redux/networking/api-types.ts b/app/src/redux/networking/api-types.ts index 5c807e5eaec..09721757928 100644 --- a/app/src/redux/networking/api-types.ts +++ b/app/src/redux/networking/api-types.ts @@ -1,4 +1,4 @@ -import { +import type { STATUS_NONE, STATUS_PORTAL, STATUS_LIMITED, diff --git a/app/src/redux/networking/epic/disconnectEpic.ts b/app/src/redux/networking/epic/disconnectEpic.ts index a23902dae8b..56f93672ba1 100644 --- a/app/src/redux/networking/epic/disconnectEpic.ts +++ b/app/src/redux/networking/epic/disconnectEpic.ts @@ -2,15 +2,15 @@ import { ofType, combineEpics } from 'redux-observable' import { POST } from '../../robot-api/constants' import { mapToRobotApiRequest } from '../../robot-api/operators' +import * as Actions from '../actions' +import * as Constants from '../constants' + import type { ActionToRequestMapper, ResponseToActionMapper, } from '../../robot-api/operators' -import * as Actions from '../actions' -import * as Constants from '../constants' - import type { Action, Epic } from '../../types' -import { PostWifiDisconnectAction } from '../types' +import type { PostWifiDisconnectAction } from '../types' const mapActionToRequest: ActionToRequestMapper = action => ({ method: POST, diff --git a/app/src/redux/networking/epic/fetchEapOptionsEpic.ts b/app/src/redux/networking/epic/fetchEapOptionsEpic.ts index 4667558ad5b..b3f4438324c 100644 --- a/app/src/redux/networking/epic/fetchEapOptionsEpic.ts +++ b/app/src/redux/networking/epic/fetchEapOptionsEpic.ts @@ -10,7 +10,7 @@ import type { ResponseToActionMapper, } from '../../robot-api/operators' import type { Action, Epic } from '../../types' -import { FetchEapOptionsAction } from '../types' +import type { FetchEapOptionsAction } from '../types' const mapActionToRequest: ActionToRequestMapper = action => ({ method: GET, diff --git a/app/src/redux/networking/epic/wifiConfigureEpic.ts b/app/src/redux/networking/epic/wifiConfigureEpic.ts index 6f38c8a218a..5e7cb7b9388 100644 --- a/app/src/redux/networking/epic/wifiConfigureEpic.ts +++ b/app/src/redux/networking/epic/wifiConfigureEpic.ts @@ -13,7 +13,7 @@ import type { ResponseToActionMapper, } from '../../robot-api/operators' import type { Action, Epic } from '../../types' -import { +import type { PostWifiConfigureAction, PostWifiConfigureSuccessAction, } from '../types' diff --git a/app/src/redux/networking/reducer.ts b/app/src/redux/networking/reducer.ts index da3a67077bb..179450595a5 100644 --- a/app/src/redux/networking/reducer.ts +++ b/app/src/redux/networking/reducer.ts @@ -7,7 +7,7 @@ import * as Constants from './constants' import type { Action } from '../types' import type { NetworkingState, PerRobotNetworkingState } from './types' -import { Reducer } from 'redux' +import type { Reducer } from 'redux' const INITIAL_STATE: NetworkingState = {} const INITIAL_ROBOT_STATE: PerRobotNetworkingState = {} diff --git a/app/src/redux/networking/selectors.ts b/app/src/redux/networking/selectors.ts index ef6eb18ec96..bca3a638481 100644 --- a/app/src/redux/networking/selectors.ts +++ b/app/src/redux/networking/selectors.ts @@ -6,7 +6,7 @@ import { long2ip } from 'netmask' import { INTERFACE_WIFI, INTERFACE_ETHERNET } from './constants' import type { State } from '../types' -import * as Types from './types' +import type * as Types from './types' import type { Dictionary } from 'lodash' export function getInternetStatus( diff --git a/app/src/redux/networking/types.ts b/app/src/redux/networking/types.ts index 0077d8f29ba..0e73a7f01f3 100644 --- a/app/src/redux/networking/types.ts +++ b/app/src/redux/networking/types.ts @@ -3,7 +3,7 @@ import type { RobotApiErrorResponse, } from '../robot-api/types' -import { +import type { FETCH_STATUS, FETCH_STATUS_SUCCESS, FETCH_STATUS_FAILURE, @@ -21,7 +21,7 @@ import { FETCH_EAP_OPTIONS_FAILURE, } from './constants' -import * as ApiTypes from './api-types' +import type * as ApiTypes from './api-types' export * from './api-types' diff --git a/app/src/redux/pipettes/__fixtures__/index.ts b/app/src/redux/pipettes/__fixtures__/index.ts index a89b5d82a90..f8433cf6465 100644 --- a/app/src/redux/pipettes/__fixtures__/index.ts +++ b/app/src/redux/pipettes/__fixtures__/index.ts @@ -14,7 +14,7 @@ import type { PipetteInfo, PipetteInformation, } from '../../../organisms/Devices/hooks' -import { PipetteData } from '@opentrons/api-client' +import type { PipetteData } from '@opentrons/api-client' export const mockRobot = { name: 'robot', ip: '127.0.0.1', port: 31950 } diff --git a/app/src/redux/pipettes/actions.ts b/app/src/redux/pipettes/actions.ts index bd8247618ec..bdf77f118f2 100644 --- a/app/src/redux/pipettes/actions.ts +++ b/app/src/redux/pipettes/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta } from '../robot-api/types' diff --git a/app/src/redux/pipettes/epic/__tests__/fetchPipetteSettingsEpic.test.ts b/app/src/redux/pipettes/epic/__tests__/fetchPipetteSettingsEpic.test.ts index 6f5c6d1fd8b..6bdd0e532ba 100644 --- a/app/src/redux/pipettes/epic/__tests__/fetchPipetteSettingsEpic.test.ts +++ b/app/src/redux/pipettes/epic/__tests__/fetchPipetteSettingsEpic.test.ts @@ -7,7 +7,7 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' +import type * as Types from '../../types' import { pipettesEpic } from '../../epic' import type { Action, State } from '../../../types' diff --git a/app/src/redux/pipettes/epic/__tests__/fetchPipettesEpic.test.ts b/app/src/redux/pipettes/epic/__tests__/fetchPipettesEpic.test.ts index ee07b47a82e..566acc682b7 100644 --- a/app/src/redux/pipettes/epic/__tests__/fetchPipettesEpic.test.ts +++ b/app/src/redux/pipettes/epic/__tests__/fetchPipettesEpic.test.ts @@ -7,9 +7,9 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { pipettesEpic } from '../../epic' +import type * as Types from '../../types' import type { Action, State } from '../../../types' import type { RobotApiResponse } from '../../../robot-api/types' diff --git a/app/src/redux/pipettes/epic/__tests__/updatePipetteSettingsEpic.test.ts b/app/src/redux/pipettes/epic/__tests__/updatePipetteSettingsEpic.test.ts index 1133ba82360..bea6b90bf28 100644 --- a/app/src/redux/pipettes/epic/__tests__/updatePipetteSettingsEpic.test.ts +++ b/app/src/redux/pipettes/epic/__tests__/updatePipetteSettingsEpic.test.ts @@ -7,9 +7,9 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { pipettesEpic } from '../../epic' +import type * as Types from '../../types' import type { Action, State } from '../../../types' import type { RobotApiRequestMeta } from '../../../robot-api/types' diff --git a/app/src/redux/pipettes/selectors.ts b/app/src/redux/pipettes/selectors.ts index 64ab5f72cc2..70b3d59c61e 100644 --- a/app/src/redux/pipettes/selectors.ts +++ b/app/src/redux/pipettes/selectors.ts @@ -11,7 +11,7 @@ import { } from '../calibration/tip-length' import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { PipetteModel } from '@opentrons/shared-data' import type { State } from '../types' diff --git a/app/src/redux/protocol-storage/actions.ts b/app/src/redux/protocol-storage/actions.ts index ce6b990a0a6..f28792af12a 100644 --- a/app/src/redux/protocol-storage/actions.ts +++ b/app/src/redux/protocol-storage/actions.ts @@ -1,4 +1,4 @@ -import * as Types from './types' +import type * as Types from './types' // action type literals diff --git a/app/src/redux/protocol-storage/reducer.ts b/app/src/redux/protocol-storage/reducer.ts index 0f8a3305959..56eca6c2625 100644 --- a/app/src/redux/protocol-storage/reducer.ts +++ b/app/src/redux/protocol-storage/reducer.ts @@ -5,7 +5,7 @@ import * as Actions from './actions' import type { Action } from '../types' import type { ProtocolStorageState } from './types' -import { Reducer } from 'redux' +import type { Reducer } from 'redux' export const INITIAL_STATE: ProtocolStorageState = { protocolKeys: [], diff --git a/app/src/redux/protocol-storage/types.ts b/app/src/redux/protocol-storage/types.ts index 6e33954516b..807bae7fe26 100644 --- a/app/src/redux/protocol-storage/types.ts +++ b/app/src/redux/protocol-storage/types.ts @@ -1,6 +1,6 @@ // common types -import { ProtocolAnalysisOutput } from '@opentrons/shared-data' +import type { ProtocolAnalysisOutput } from '@opentrons/shared-data' export interface StoredProtocolDir { dirPath: string diff --git a/app/src/redux/robot-admin/__tests__/selectors.test.ts b/app/src/redux/robot-admin/__tests__/selectors.test.ts index 77d1e24950c..61549a2bc3b 100644 --- a/app/src/redux/robot-admin/__tests__/selectors.test.ts +++ b/app/src/redux/robot-admin/__tests__/selectors.test.ts @@ -6,7 +6,7 @@ import { getNextRestartStatus, getResetConfigOptions, } from '../selectors' -import { ConnectivityStatus } from '../../discovery/types' +import type { ConnectivityStatus } from '../../discovery/types' import type { State } from '../../types' const START_TIME = new Date('2000-01-01') diff --git a/app/src/redux/robot-admin/actions.ts b/app/src/redux/robot-admin/actions.ts index c82ae42b22c..8cf09544dc4 100644 --- a/app/src/redux/robot-admin/actions.ts +++ b/app/src/redux/robot-admin/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta } from '../robot-api/types' diff --git a/app/src/redux/robot-admin/epic/resetConfigEpic.ts b/app/src/redux/robot-admin/epic/resetConfigEpic.ts index 4d093f5ee25..c4b69445938 100644 --- a/app/src/redux/robot-admin/epic/resetConfigEpic.ts +++ b/app/src/redux/robot-admin/epic/resetConfigEpic.ts @@ -11,7 +11,7 @@ import type { ActionToRequestMapper, ResponseToActionMapper, } from '../../robot-api/operators' -import { +import type { ResetConfigAction, ResetConfigSuccessAction, RestartRobotAction, diff --git a/app/src/redux/robot-api/actions.ts b/app/src/redux/robot-api/actions.ts index caa8e7ef298..a41a232f702 100644 --- a/app/src/redux/robot-api/actions.ts +++ b/app/src/redux/robot-api/actions.ts @@ -1,5 +1,5 @@ -import * as Types from './types' import { DISMISS_REQUEST } from './constants' +import type * as Types from './types' export const dismissRequest = ( requestId: string diff --git a/app/src/redux/robot-api/helpers.ts b/app/src/redux/robot-api/helpers.ts index 90c1e0e5926..4b4974de782 100644 --- a/app/src/redux/robot-api/helpers.ts +++ b/app/src/redux/robot-api/helpers.ts @@ -1,4 +1,4 @@ -import * as Types from './types' +import type * as Types from './types' // TODO(mc, 2020-06-17): this is unit tested by component tests // write some direct tests and maybe fold into getRequestState selector diff --git a/app/src/redux/robot-api/operators.ts b/app/src/redux/robot-api/operators.ts index ddfec300379..d1b7f52d903 100644 --- a/app/src/redux/robot-api/operators.ts +++ b/app/src/redux/robot-api/operators.ts @@ -3,11 +3,10 @@ import { map, mergeMap, withLatestFrom, filter } from 'rxjs/operators' import { getRobotByName } from '../discovery/selectors' import { fetchRobotApi } from './http' -import * as Types from './types' import type { Observable, UnaryFunction, OperatorFunction } from 'rxjs' import type { State, Action } from '../types' -import type { RobotHost } from './types' +import type * as Types from './types' export type ActionToRequestMapper = ( triggerAction: TriggerAction, @@ -23,14 +22,14 @@ export type ResponseToActionMapper = ( export function withRobotHost( state$: Observable, getRobotName: (action: A) => string -): UnaryFunction, Observable<[A, State, RobotHost]>> { +): UnaryFunction, Observable<[A, State, Types.RobotHost]>> { return pipe( - withLatestFrom(state$, (a: A, s: State): [A, State, RobotHost | null] => [ - a, - s, - getRobotByName(s, getRobotName(a)) as RobotHost | null, - ]), - filter((args): args is [A, State, RobotHost] => { + withLatestFrom(state$, (a: A, s: State): [ + A, + State, + Types.RobotHost | null + ] => [a, s, getRobotByName(s, getRobotName(a)) as Types.RobotHost | null]), + filter((args): args is [A, State, Types.RobotHost] => { const [, , maybeRobot] = args return maybeRobot !== null }) diff --git a/app/src/redux/robot-api/selectors.ts b/app/src/redux/robot-api/selectors.ts index b8c3ab7bf2e..ca5eea7b982 100644 --- a/app/src/redux/robot-api/selectors.ts +++ b/app/src/redux/robot-api/selectors.ts @@ -1,5 +1,5 @@ import type { State } from '../types' -import * as Types from './types' +import type * as Types from './types' export const getRequestById = ( state: State, diff --git a/app/src/redux/robot-api/types.ts b/app/src/redux/robot-api/types.ts index b32f0da11ac..92107e92e6c 100644 --- a/app/src/redux/robot-api/types.ts +++ b/app/src/redux/robot-api/types.ts @@ -1,4 +1,4 @@ -import { PENDING, SUCCESS, FAILURE } from './constants' +import type { PENDING, SUCCESS, FAILURE } from './constants' export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' diff --git a/app/src/redux/robot-controls/actions.ts b/app/src/redux/robot-controls/actions.ts index 4bf95e449e2..816475a1738 100644 --- a/app/src/redux/robot-controls/actions.ts +++ b/app/src/redux/robot-controls/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta } from '../robot-api/types' import type { Mount } from '../pipettes/types' diff --git a/app/src/redux/robot-controls/epic/__tests__/fetchLightsEpic.test.ts b/app/src/redux/robot-controls/epic/__tests__/fetchLightsEpic.test.ts index 4d92e26b217..e6bbad02530 100644 --- a/app/src/redux/robot-controls/epic/__tests__/fetchLightsEpic.test.ts +++ b/app/src/redux/robot-controls/epic/__tests__/fetchLightsEpic.test.ts @@ -6,9 +6,9 @@ import * as RobotApiHttp from '../../../robot-api/http' import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { robotControlsEpic } from '..' +import type * as Types from '../../types' import type { Action, State } from '../../../types' vi.mock('../../../robot-api/http') diff --git a/app/src/redux/robot-controls/epic/__tests__/homeEpic.test.ts b/app/src/redux/robot-controls/epic/__tests__/homeEpic.test.ts index 987329abb30..541c7b666dd 100644 --- a/app/src/redux/robot-controls/epic/__tests__/homeEpic.test.ts +++ b/app/src/redux/robot-controls/epic/__tests__/homeEpic.test.ts @@ -6,9 +6,9 @@ import * as RobotApiHttp from '../../../robot-api/http' import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { robotControlsEpic } from '..' +import type * as Types from '../../types' import type { Action, State } from '../../../types' vi.mock('../../../robot-api/http') diff --git a/app/src/redux/robot-controls/epic/__tests__/moveEpic.test.ts b/app/src/redux/robot-controls/epic/__tests__/moveEpic.test.ts index 2825a07b5fd..5c1cef71c8f 100644 --- a/app/src/redux/robot-controls/epic/__tests__/moveEpic.test.ts +++ b/app/src/redux/robot-controls/epic/__tests__/moveEpic.test.ts @@ -7,9 +7,9 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as PipettesSelectors from '../../../pipettes/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' import { robotControlsEpic } from '..' +import type * as Types from '../../types' import type { Action, State } from '../../../types' vi.mock('../../../robot-api/http') diff --git a/app/src/redux/robot-controls/epic/__tests__/updateLightsEpic.test.ts b/app/src/redux/robot-controls/epic/__tests__/updateLightsEpic.test.ts index 8d4586fc4e5..b97ae48d2ac 100644 --- a/app/src/redux/robot-controls/epic/__tests__/updateLightsEpic.test.ts +++ b/app/src/redux/robot-controls/epic/__tests__/updateLightsEpic.test.ts @@ -6,7 +6,7 @@ import * as RobotApiHttp from '../../../robot-api/http' import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Actions from '../../actions' -import * as Types from '../../types' +import type * as Types from '../../types' import { robotControlsEpic } from '..' import type { Action, State } from '../../../types' diff --git a/app/src/redux/robot-controls/epic/updateLightsEpic.ts b/app/src/redux/robot-controls/epic/updateLightsEpic.ts index e47bdf8340a..a3d643b15e4 100644 --- a/app/src/redux/robot-controls/epic/updateLightsEpic.ts +++ b/app/src/redux/robot-controls/epic/updateLightsEpic.ts @@ -14,7 +14,7 @@ import type { } from '../../robot-api/operators' import type { UpdateLightsAction } from '../types' -import { RobotApiRequestMeta } from '../../robot-api/types' +import type { RobotApiRequestMeta } from '../../robot-api/types' const mapActionToRequest: ActionToRequestMapper = action => ({ method: POST, diff --git a/app/src/redux/robot-settings/actions.ts b/app/src/redux/robot-settings/actions.ts index fcf22b0c59a..e5844295e7b 100644 --- a/app/src/redux/robot-settings/actions.ts +++ b/app/src/redux/robot-settings/actions.ts @@ -1,5 +1,5 @@ import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' import type { RobotApiRequestMeta } from '../robot-api/types' diff --git a/app/src/redux/robot-settings/epic/__tests__/fetchSettingsEpic.test.ts b/app/src/redux/robot-settings/epic/__tests__/fetchSettingsEpic.test.ts index 9847f182ab3..7c8a90cf66f 100644 --- a/app/src/redux/robot-settings/epic/__tests__/fetchSettingsEpic.test.ts +++ b/app/src/redux/robot-settings/epic/__tests__/fetchSettingsEpic.test.ts @@ -7,9 +7,9 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Selectors from '../../selectors' import * as Actions from '../../actions' -import * as Types from '../../types' import { robotSettingsEpic } from '..' +import type * as Types from '../../types' import type { Action, State } from '../../../types' import type { RobotApiRequestMeta } from '../../../robot-api/types' diff --git a/app/src/redux/robot-settings/epic/__tests__/updateSettingEpic.test.ts b/app/src/redux/robot-settings/epic/__tests__/updateSettingEpic.test.ts index 26ed9bacc96..2c42f1e8809 100644 --- a/app/src/redux/robot-settings/epic/__tests__/updateSettingEpic.test.ts +++ b/app/src/redux/robot-settings/epic/__tests__/updateSettingEpic.test.ts @@ -7,7 +7,7 @@ import * as DiscoverySelectors from '../../../discovery/selectors' import * as Fixtures from '../../__fixtures__' import * as Selectors from '../../selectors' import * as Actions from '../../actions' -import * as Types from '../../types' +import type * as Types from '../../types' import { robotSettingsEpic } from '..' import type { Action, State } from '../../../types' diff --git a/app/src/redux/robot-update/__tests__/epic.test.ts b/app/src/redux/robot-update/__tests__/epic.test.ts index ea1066c0e62..84cb04d51eb 100644 --- a/app/src/redux/robot-update/__tests__/epic.test.ts +++ b/app/src/redux/robot-update/__tests__/epic.test.ts @@ -13,7 +13,7 @@ import * as selectors from '../selectors' import { INITIAL_STATE } from '../reducer' import type { Action, State } from '../../types' -import { RobotApiResponse } from '../../robot-api/types' +import type { RobotApiResponse } from '../../robot-api/types' vi.mock('../selectors') vi.mock('../../robot-api/http') diff --git a/app/src/redux/sessions/__fixtures__/index.ts b/app/src/redux/sessions/__fixtures__/index.ts index 5f5e338f94d..391de0151f5 100644 --- a/app/src/redux/sessions/__fixtures__/index.ts +++ b/app/src/redux/sessions/__fixtures__/index.ts @@ -16,12 +16,12 @@ import { mockPipetteOffsetCalibrationSessionDetails, mockPipetteOffsetCalibrationSessionParams, } from './pipette-offset-calibration' +import * as Constants from '../constants' import type { ResponseFixtures } from '../../robot-api/__fixtures__' import type { RobotApiV2ErrorResponseBody } from '../../robot-api/types' -import * as Types from '../types' -import * as Constants from '../constants' +import type * as Types from '../types' export * from './calibration-check' export * from './tip-length-calibration' diff --git a/app/src/redux/sessions/actions.ts b/app/src/redux/sessions/actions.ts index d92163032f5..87cbdc2786f 100644 --- a/app/src/redux/sessions/actions.ts +++ b/app/src/redux/sessions/actions.ts @@ -1,5 +1,5 @@ -import * as Types from './types' import * as Constants from './constants' +import type * as Types from './types' import type { RobotApiRequestMeta, RobotApiV2ErrorResponseBody, diff --git a/app/src/redux/sessions/calibration-check/types.ts b/app/src/redux/sessions/calibration-check/types.ts index 450cf9bbe0a..5fde44d3241 100644 --- a/app/src/redux/sessions/calibration-check/types.ts +++ b/app/src/redux/sessions/calibration-check/types.ts @@ -4,7 +4,7 @@ import type { LabwareDefinition2, PipetteModel } from '@opentrons/shared-data' // calibration check session types -import { +import type { CHECK_STEP_SESSION_STARTED, CHECK_STEP_LABWARE_LOADED, CHECK_STEP_INSPECTING_TIP, diff --git a/app/src/redux/sessions/deck-calibration/types.ts b/app/src/redux/sessions/deck-calibration/types.ts index 44dd1b7f473..8587d38747b 100644 --- a/app/src/redux/sessions/deck-calibration/types.ts +++ b/app/src/redux/sessions/deck-calibration/types.ts @@ -1,6 +1,6 @@ // deck calibration types -import { +import type { DECK_STEP_SESSION_STARTED, DECK_STEP_LABWARE_LOADED, DECK_STEP_PREPARING_PIPETTE, diff --git a/app/src/redux/sessions/epic/__tests__/createSessionCommandEpic.test.ts b/app/src/redux/sessions/epic/__tests__/createSessionCommandEpic.test.ts index c587cb53e2b..434b5a96085 100644 --- a/app/src/redux/sessions/epic/__tests__/createSessionCommandEpic.test.ts +++ b/app/src/redux/sessions/epic/__tests__/createSessionCommandEpic.test.ts @@ -8,7 +8,7 @@ import * as Actions from '../../actions' import { sessionsEpic } from '..' import type { Action } from '../../../types' -import { CreateSessionCommandAction } from '../../types' +import type { CreateSessionCommandAction } from '../../types' vi.mock('../../../robot-api/http') diff --git a/app/src/redux/sessions/pipette-offset-calibration/types.ts b/app/src/redux/sessions/pipette-offset-calibration/types.ts index 55d1397bb74..5a840f432cc 100644 --- a/app/src/redux/sessions/pipette-offset-calibration/types.ts +++ b/app/src/redux/sessions/pipette-offset-calibration/types.ts @@ -1,5 +1,5 @@ // pipette offset calibration types -import { +import type { PIP_OFFSET_STEP_SESSION_STARTED, PIP_OFFSET_STEP_LABWARE_LOADED, PIP_OFFSET_STEP_PREPARING_PIPETTE, diff --git a/app/src/redux/sessions/selectors.ts b/app/src/redux/sessions/selectors.ts index 150580e2dce..8acb5923d40 100644 --- a/app/src/redux/sessions/selectors.ts +++ b/app/src/redux/sessions/selectors.ts @@ -1,5 +1,5 @@ import type { State } from '../types' -import * as Types from './types' +import type * as Types from './types' export const getRobotSessions: ( state: State, diff --git a/app/src/redux/sessions/tip-length-calibration/types.ts b/app/src/redux/sessions/tip-length-calibration/types.ts index 16b5eebb865..8a7db5be43f 100644 --- a/app/src/redux/sessions/tip-length-calibration/types.ts +++ b/app/src/redux/sessions/tip-length-calibration/types.ts @@ -1,5 +1,5 @@ // tip length calibration types -import { +import type { TIP_LENGTH_STEP_SESSION_STARTED, TIP_LENGTH_STEP_LABWARE_LOADED, TIP_LENGTH_STEP_MEASURING_NOZZLE_OFFSET, diff --git a/app/src/redux/sessions/types.ts b/app/src/redux/sessions/types.ts index be9ce194ca4..3103dcd57cc 100644 --- a/app/src/redux/sessions/types.ts +++ b/app/src/redux/sessions/types.ts @@ -1,6 +1,6 @@ import type { LabwareDefinition2 } from '@opentrons/shared-data' -import { +import type { CREATE_SESSION, CREATE_SESSION_SUCCESS, CREATE_SESSION_FAILURE, @@ -30,15 +30,15 @@ import type { RobotApiV2ErrorResponseBody, } from '../robot-api/types' -import * as CalCheckTypes from './calibration-check/types' -import * as TipLengthCalTypes from './tip-length-calibration/types' -import * as DeckCalTypes from './deck-calibration/types' -import * as PipOffsetCalTypes from './pipette-offset-calibration/types' -import * as CalCheckConstants from './calibration-check/constants' -import * as TipCalConstants from './tip-length-calibration/constants' -import * as DeckCalConstants from './deck-calibration/constants' -import * as PipOffsetCalConstants from './pipette-offset-calibration/constants' -import * as CommonCalConstants from './common-calibration/constants' +import type * as CalCheckTypes from './calibration-check/types' +import type * as TipLengthCalTypes from './tip-length-calibration/types' +import type * as DeckCalTypes from './deck-calibration/types' +import type * as PipOffsetCalTypes from './pipette-offset-calibration/types' +import type * as CalCheckConstants from './calibration-check/constants' +import type * as TipCalConstants from './tip-length-calibration/constants' +import type * as DeckCalConstants from './deck-calibration/constants' +import type * as PipOffsetCalConstants from './pipette-offset-calibration/constants' +import type * as CommonCalConstants from './common-calibration/constants' export * from './calibration-check/types' export * from './tip-length-calibration/types' diff --git a/app/src/redux/system-info/actions.ts b/app/src/redux/system-info/actions.ts index 5972f918291..359b4a859e9 100644 --- a/app/src/redux/system-info/actions.ts +++ b/app/src/redux/system-info/actions.ts @@ -1,7 +1,7 @@ // system-info actions import * as Constants from './constants' -import * as Types from './types' +import type * as Types from './types' export const initialized = ( usbDevices: Types.UsbDevice[], diff --git a/app/src/redux/system-info/types.ts b/app/src/redux/system-info/types.ts index febce9230b9..8b2ae57a560 100644 --- a/app/src/redux/system-info/types.ts +++ b/app/src/redux/system-info/types.ts @@ -1,6 +1,6 @@ // system-info types -import { +import type { INITIALIZED, USB_DEVICE_ADDED, USB_DEVICE_REMOVED, diff --git a/app/src/resources/networking/__tests__/useCanDisconnect.test.tsx b/app/src/resources/networking/__tests__/useCanDisconnect.test.tsx index 5a81f052edd..f51f5dca2e0 100644 --- a/app/src/resources/networking/__tests__/useCanDisconnect.test.tsx +++ b/app/src/resources/networking/__tests__/useCanDisconnect.test.tsx @@ -3,7 +3,7 @@ import { when } from 'vitest-when' import { describe, it, expect, vi, beforeEach } from 'vitest' import { createStore } from 'redux' import { Provider } from 'react-redux' -import { SECURITY_WPA_EAP, WifiNetwork } from '@opentrons/api-client' +import { SECURITY_WPA_EAP } from '@opentrons/api-client' import { renderHook } from '@testing-library/react' import { getRobotApiVersionByName } from '../../../redux/discovery' @@ -11,6 +11,7 @@ import { useIsFlex } from '../../../organisms/Devices/hooks' import { useCanDisconnect } from '../hooks/useCanDisconnect' import { useWifiList } from '../hooks/useWifiList' +import type { WifiNetwork } from '@opentrons/api-client' import type { Store } from 'redux' import type { State } from '../../../redux/types' diff --git a/app/src/resources/networking/__tests__/useNetworkConnection.test.tsx b/app/src/resources/networking/__tests__/useNetworkConnection.test.tsx index 624a5a37917..f6f038dd081 100644 --- a/app/src/resources/networking/__tests__/useNetworkConnection.test.tsx +++ b/app/src/resources/networking/__tests__/useNetworkConnection.test.tsx @@ -3,7 +3,7 @@ import * as React from 'react' import { when } from 'vitest-when' import { describe, it, expect, vi, beforeEach } from 'vitest' import { Provider } from 'react-redux' -import { createStore, Store } from 'redux' +import { createStore } from 'redux' import { renderHook } from '@testing-library/react' import { I18nextProvider } from 'react-i18next' @@ -14,6 +14,7 @@ import * as Fixtures from '../../../redux/networking/__fixtures__' import { getNetworkInterfaces } from '../../../redux/networking' import { useNetworkConnection } from '../hooks/useNetworkConnection' +import type { Store } from 'redux' vi.mock('../../../resources/networking/hooks') vi.mock('../../../redux/networking/selectors') diff --git a/app/src/resources/networking/__tests__/useWifiList.test.ts b/app/src/resources/networking/__tests__/useWifiList.test.ts index 8db28648272..d616067c2b8 100644 --- a/app/src/resources/networking/__tests__/useWifiList.test.ts +++ b/app/src/resources/networking/__tests__/useWifiList.test.ts @@ -1,11 +1,11 @@ import { when } from 'vitest-when' import { describe, it, expect, vi, beforeEach } from 'vitest' -import { SECURITY_WPA_EAP, WifiNetwork } from '@opentrons/api-client' +import { SECURITY_WPA_EAP } from '@opentrons/api-client' import { useWifiQuery } from '@opentrons/react-api-client' import { useRobot } from '../../../organisms/Devices/hooks' import { useWifiList } from '../hooks' -import type { WifiListResponse } from '@opentrons/api-client' import type { UseQueryResult } from 'react-query' +import type { WifiNetwork, WifiListResponse } from '@opentrons/api-client' vi.mock('@opentrons/react-api-client') vi.mock('../../../organisms/Devices/hooks') diff --git a/components/src/atoms/StyledText/index.tsx b/components/src/atoms/StyledText/index.tsx index 64acb9c8174..aa1eb16c29f 100644 --- a/components/src/atoms/StyledText/index.tsx +++ b/components/src/atoms/StyledText/index.tsx @@ -1,8 +1,8 @@ -import * as React from 'react' import styled, { css } from 'styled-components' import { Text } from '../../primitives' import { TYPOGRAPHY, RESPONSIVENESS } from '../../ui-style-constants' +import type * as React from 'react' import type { FlattenSimpleInterpolation } from 'styled-components' export interface Props extends React.ComponentProps { diff --git a/components/src/buttons/Button.tsx b/components/src/buttons/Button.tsx index 28937e2da13..ee8e1f22881 100644 --- a/components/src/buttons/Button.tsx +++ b/components/src/buttons/Button.tsx @@ -5,12 +5,9 @@ import omit from 'lodash/omit' import { Icon } from '../icons' import styles from './buttons.module.css' -import { - BUTTON_TYPE_SUBMIT, - BUTTON_TYPE_RESET, - BUTTON_TYPE_BUTTON, -} from '../primitives' +import { BUTTON_TYPE_BUTTON } from '../primitives' +import type { BUTTON_TYPE_SUBMIT, BUTTON_TYPE_RESET } from '../primitives' import type { IconName } from '../icons' import type { UseHoverTooltipTargetProps } from '../tooltips' diff --git a/components/src/forms/Select.tsx b/components/src/forms/Select.tsx index 9e2b3d2082c..d1341f106e2 100644 --- a/components/src/forms/Select.tsx +++ b/components/src/forms/Select.tsx @@ -1,20 +1,18 @@ import * as React from 'react' -import ReactSelect, { - components as reactSelectComponents, - DropdownIndicatorProps, -} from 'react-select' +import ReactSelect, { components as reactSelectComponents } from 'react-select' + import cx from 'classnames' import { Icon } from '../icons' -import { POSITION_ABSOLUTE, POSITION_FIXED } from '../styles' import styles from './Select.module.css' - import type { + DropdownIndicatorProps, Props as ReactSelectProps, MenuProps, StylesConfig, CSSObjectWithLabel, } from 'react-select' +import type { POSITION_ABSOLUTE, POSITION_FIXED } from '../styles' export { reactSelectComponents } diff --git a/components/src/hardware-sim/BaseDeck/BaseDeck.tsx b/components/src/hardware-sim/BaseDeck/BaseDeck.tsx index db72c865cd3..3b3b61dd9fa 100644 --- a/components/src/hardware-sim/BaseDeck/BaseDeck.tsx +++ b/components/src/hardware-sim/BaseDeck/BaseDeck.tsx @@ -27,12 +27,12 @@ import { DeckFromLayers } from '../Deck/DeckFromLayers' import { SlotLabels } from '../Deck' import { COLORS } from '../../helix-design-system' -import { Svg } from '../../primitives' import { SingleSlotFixture } from './SingleSlotFixture' import { StagingAreaFixture } from './StagingAreaFixture' import { WasteChuteFixture } from './WasteChuteFixture' import { WasteChuteStagingAreaFixture } from './WasteChuteStagingAreaFixture' +import type { Svg } from '../../primitives' import type { CutoutFixtureId, DeckConfiguration, diff --git a/components/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx b/components/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx index 6db439eba57..44d2ab9c49c 100644 --- a/components/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +++ b/components/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx @@ -1,7 +1,5 @@ import * as React from 'react' -import { WASTE_CHUTE_CUTOUT } from '@opentrons/shared-data' - import { Icon } from '../../icons' import { Flex, Text } from '../../primitives' import { @@ -14,8 +12,11 @@ import { SPACING, TYPOGRAPHY } from '../../ui-style-constants' import { COLORS } from '../../helix-design-system' import { RobotCoordsForeignObject } from '../Deck/RobotCoordsForeignObject' import { SlotBase } from './SlotBase' - -import type { DeckDefinition, ModuleType } from '@opentrons/shared-data' +import type { + WASTE_CHUTE_CUTOUT, + DeckDefinition, + ModuleType, +} from '@opentrons/shared-data' interface WasteChuteFixtureProps extends React.SVGProps { cutoutId: typeof WASTE_CHUTE_CUTOUT diff --git a/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx b/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx index 91defab6667..c727ac5ad35 100644 --- a/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +++ b/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx @@ -3,12 +3,9 @@ import styled from 'styled-components' import flatMap from 'lodash/flatMap' import { animated, useSpring, easings } from '@react-spring/web' import { - LabwareWell, - LoadedModule, getDeckDefFromRobotType, getModuleDef2, getPositionFromSlotId, - LoadedLabware, } from '@opentrons/shared-data' import { COLORS } from '../../helix-design-system' @@ -16,6 +13,9 @@ import { IDENTITY_AFFINE_TRANSFORM, multiplyMatrices } from '../utils' import { BaseDeck } from '../BaseDeck' import type { + LoadedLabware, + LabwareWell, + LoadedModule, Coordinates, LabwareDefinition2, LabwareLocation, diff --git a/components/src/hardware-sim/Deck/RobotWorkSpace.tsx b/components/src/hardware-sim/Deck/RobotWorkSpace.tsx index 34c780f569f..bf999139659 100644 --- a/components/src/hardware-sim/Deck/RobotWorkSpace.tsx +++ b/components/src/hardware-sim/Deck/RobotWorkSpace.tsx @@ -1,8 +1,9 @@ import * as React from 'react' import { OT2_ROBOT_TYPE } from '@opentrons/shared-data' -import { StyleProps, Svg } from '../../primitives' +import { Svg } from '../../primitives' import { DeckFromLayers } from './DeckFromLayers' +import type { StyleProps } from '../../primitives' import type { DeckDefinition, DeckSlot } from '@opentrons/shared-data' export interface RobotWorkSpaceRenderProps { diff --git a/components/src/hardware-sim/Labware/LabwareRender.tsx b/components/src/hardware-sim/Labware/LabwareRender.tsx index b3133fe1813..9b2365b668c 100644 --- a/components/src/hardware-sim/Labware/LabwareRender.tsx +++ b/components/src/hardware-sim/Labware/LabwareRender.tsx @@ -6,11 +6,9 @@ import { StrokedWells, StaticLabware, } from './labwareInternals' -import { - LabwareAdapter, - LabwareAdapterLoadName, - labwareAdapterLoadNames, -} from './LabwareAdapter' +import { LabwareAdapter, labwareAdapterLoadNames } from './LabwareAdapter' + +import type { CSSProperties } from 'styled-components' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { HighlightedWellLabels, @@ -19,7 +17,8 @@ import type { WellStroke, WellGroup, } from './labwareInternals/types' -import type { CSSProperties } from 'styled-components' +import type { LabwareAdapterLoadName } from './LabwareAdapter' + export const WELL_LABEL_OPTIONS = { SHOW_LABEL_INSIDE: 'SHOW_LABEL_INSIDE', SHOW_LABEL_OUTSIDE: 'SHOW_LABEL_OUTSIDE', diff --git a/components/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx b/components/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx index f3f044f04bd..bc6d0764768 100644 --- a/components/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +++ b/components/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx @@ -1,9 +1,10 @@ import * as React from 'react' import { C_BLACK, C_BLUE } from '../../../styles/colors' import { RobotCoordsText } from '../../Deck' -import { WellLabelOption, WELL_LABEL_OPTIONS } from '../LabwareRender' +import { WELL_LABEL_OPTIONS } from '../LabwareRender' import { COLORS } from '../../../helix-design-system' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { WellLabelOption } from '../LabwareRender' import type { HighlightedWellLabels } from './types' // magic layout numbers to make the letters close to the edges of the labware diff --git a/components/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx b/components/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx index e4b8c99581c..501ab817b2b 100644 --- a/components/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +++ b/components/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx @@ -2,9 +2,10 @@ import * as React from 'react' import { describe, it, vi } from 'vitest' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { LabwareDefinition2, fixture12Trough } from '@opentrons/shared-data' +import { fixture12Trough } from '@opentrons/shared-data' import { StrokedWells } from '../StrokedWells' import { WellComponent as Well } from '../Well' +import type { LabwareDefinition2 } from '@opentrons/shared-data' vi.mock('../Well') diff --git a/components/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx b/components/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx index 61f9c77abaf..1fe1b63f9ce 100644 --- a/components/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +++ b/components/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx @@ -2,12 +2,10 @@ import * as React from 'react' import { describe, it, expect } from 'vitest' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { - LabwareDefinition2, - fixture12Trough as _fixture12Trough, -} from '@opentrons/shared-data' +import { fixture12Trough as _fixture12Trough } from '@opentrons/shared-data' import { WellLabels } from '../WellLabels' import { WELL_LABEL_OPTIONS } from '../../LabwareRender' +import type { LabwareDefinition2 } from '@opentrons/shared-data' const troughFixture12 = _fixture12Trough as LabwareDefinition2 diff --git a/components/src/hardware-sim/Labware/labwareInternals/types.ts b/components/src/hardware-sim/Labware/labwareInternals/types.ts index 039c8a6104f..337a0932a03 100644 --- a/components/src/hardware-sim/Labware/labwareInternals/types.ts +++ b/components/src/hardware-sim/Labware/labwareInternals/types.ts @@ -1,4 +1,4 @@ -import * as React from 'react' +import type * as React from 'react' export interface WellMouseEvent { wellName: string diff --git a/components/src/hardware-sim/Module/Module.stories.tsx b/components/src/hardware-sim/Module/Module.stories.tsx index 98f8502e545..67b26a226d7 100644 --- a/components/src/hardware-sim/Module/Module.stories.tsx +++ b/components/src/hardware-sim/Module/Module.stories.tsx @@ -2,10 +2,8 @@ import * as React from 'react' import { fixture96Plate, getModuleDef2, - LabwareDefinition2, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, - ModuleModel, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_V1, @@ -18,6 +16,7 @@ import { RobotCoordinateSpace } from '../RobotCoordinateSpace' import { Module as ModuleComponent } from './' import type { Story, Meta } from '@storybook/react' +import type { LabwareDefinition2, ModuleModel } from '@opentrons/shared-data' const moduleModels: ModuleModel[] = [ TEMPERATURE_MODULE_V2, diff --git a/components/src/hardware-sim/Module/Thermocycler/index.tsx b/components/src/hardware-sim/Module/Thermocycler/index.tsx index 9cec276b83b..e858e3ee92f 100644 --- a/components/src/hardware-sim/Module/Thermocycler/index.tsx +++ b/components/src/hardware-sim/Module/Thermocycler/index.tsx @@ -1,10 +1,6 @@ import * as React from 'react' -import { - THERMOCYCLER_MODULE_V1, - ThermocyclerModuleModel, - getModuleDef2, -} from '@opentrons/shared-data' +import { THERMOCYCLER_MODULE_V1, getModuleDef2 } from '@opentrons/shared-data' import { C_MED_LIGHT_GRAY } from '../../../styles' import { COLORS, BORDERS } from '../../../helix-design-system' @@ -12,6 +8,7 @@ import { COLORS, BORDERS } from '../../../helix-design-system' import { RobotCoordsForeignDiv } from '../../Deck' import { ThermocyclerGEN1 } from './ThermocyclerGEN1' import { ThermocyclerGEN2 } from './ThermocyclerGEN2' +import type { ThermocyclerModuleModel } from '@opentrons/shared-data' const ROOM_TEMPERATURE_C = 23 // value taken from TC firmware export interface ThermocyclerVizProps { diff --git a/components/src/hardware-sim/Module/index.tsx b/components/src/hardware-sim/Module/index.tsx index e2d865329b2..ae1b6902337 100644 --- a/components/src/hardware-sim/Module/index.tsx +++ b/components/src/hardware-sim/Module/index.tsx @@ -4,11 +4,9 @@ import { HEATERSHAKER_MODULE_TYPE, MAGNETIC_BLOCK_TYPE, MAGNETIC_MODULE_TYPE, - ModuleDefinition, OT2_STANDARD_DECKID, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, - ThermocyclerModuleModel, } from '@opentrons/shared-data' import { C_DARK_GRAY, @@ -28,6 +26,11 @@ import { Temperature } from './Temperature' import { MagneticBlock } from './MagneticBlock' import { MagneticModule } from './MagneticModule' +import type { + ModuleDefinition, + ThermocyclerModuleModel, +} from '@opentrons/shared-data' + export * from './Thermocycler' const LABWARE_OFFSET_DISPLAY_THRESHOLD = 2 diff --git a/components/src/hardware-sim/Pipette/PipetteRender.tsx b/components/src/hardware-sim/Pipette/PipetteRender.tsx index 567377e2a32..da850a308aa 100644 --- a/components/src/hardware-sim/Pipette/PipetteRender.tsx +++ b/components/src/hardware-sim/Pipette/PipetteRender.tsx @@ -1,9 +1,5 @@ import * as React from 'react' -import { - getPipetteNameSpecs, - LabwareDefinition2, - PipetteName, -} from '@opentrons/shared-data' +import { getPipetteNameSpecs } from '@opentrons/shared-data' import { C_MED_DARK_GRAY, C_MED_GRAY } from '../../styles' import { BORDERS } from '../../helix-design-system' import { RobotCoordsForeignDiv } from '../Deck/RobotCoordsForeignDiv' @@ -18,6 +14,7 @@ import { } from './constants' import { EmanatingNozzle } from './EmanatingNozzle' import { EightEmanatingNozzles } from './EightEmanatingNozzles' +import type { LabwareDefinition2, PipetteName } from '@opentrons/shared-data' interface PipetteRenderProps { labwareDef: LabwareDefinition2 diff --git a/components/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx b/components/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx index 2aacdab6737..d35e4cec27d 100644 --- a/components/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +++ b/components/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import { css } from 'styled-components' -import { LabwareDefinition2 } from '@opentrons/shared-data' import { RobotCoordsForeignDiv } from '../Deck' import { DISPLAY_FLEX, @@ -14,6 +13,7 @@ import { import { Box, Flex, Text } from '../../primitives' import { TYPOGRAPHY, SPACING } from '../../ui-style-constants' import { COLORS } from '../../helix-design-system' +import type { LabwareDefinition2 } from '@opentrons/shared-data' const labwareDisplayNameStyle = css` ${TYPOGRAPHY.labelSemiBold} diff --git a/components/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts b/components/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts index 2f43a9a2dc4..23ae614167c 100644 --- a/components/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts +++ b/components/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' -import { RunTimeCommand } from '@opentrons/shared-data' import { getLabwareInfoByLiquidId } from '../getLabwareInfoByLiquidId' +import type { RunTimeCommand } from '@opentrons/shared-data' const mockLoadLiquidRunTimeCommands = [ { diff --git a/components/src/hardware-sim/utils.ts b/components/src/hardware-sim/utils.ts index aeb03098c94..dcdba4ba66c 100644 --- a/components/src/hardware-sim/utils.ts +++ b/components/src/hardware-sim/utils.ts @@ -1,4 +1,4 @@ -import { AffineTransformMatrix } from '@opentrons/shared-data' +import type { AffineTransformMatrix } from '@opentrons/shared-data' export const IDENTITY_AFFINE_TRANSFORM: AffineTransformMatrix = [ [1, 0, 0, 0], diff --git a/components/src/hooks/useDrag.ts b/components/src/hooks/useDrag.ts index e7587555962..8a89de19c09 100644 --- a/components/src/hooks/useDrag.ts +++ b/components/src/hooks/useDrag.ts @@ -1,11 +1,6 @@ -import { - useState, - useEffect, - useRef, - CSSProperties, - MutableRefObject, -} from 'react' +import { useState, useEffect, useRef } from 'react' import interact from 'interactjs' +import type { CSSProperties, MutableRefObject } from 'react' export interface ElementPosition { width: number diff --git a/components/src/hooks/useLongPress.ts b/components/src/hooks/useLongPress.ts index 4b29a7c4b32..2556720032f 100644 --- a/components/src/hooks/useLongPress.ts +++ b/components/src/hooks/useLongPress.ts @@ -1,12 +1,7 @@ -import { - useState, - useEffect, - useRef, - CSSProperties, - MutableRefObject, -} from 'react' +import { useState, useEffect, useRef } from 'react' import interact from 'interactjs' import type PointerEvent from 'interactjs' +import type { CSSProperties, MutableRefObject } from 'react' const HOLD_DURATION_MS = 1000 @@ -44,10 +39,10 @@ export const useLongPress = (): UseLongPressResult => { .pointerEvents({ holdDuration: HOLD_DURATION_MS, }) - .on('hold', (event: PointerEvent) => { + .on('hold', (_event: PointerEvent) => { setIsLongPressed(isLongPressed => !isLongPressed) }) - .on('tap', (event: PointerEvent) => { + .on('tap', (_event: PointerEvent) => { setIsTapped(isTapped => !isTapped) }) } diff --git a/components/src/hooks/useSelectDeckLocation/index.tsx b/components/src/hooks/useSelectDeckLocation/index.tsx index c7ccf53e6bf..4716e535fc6 100644 --- a/components/src/hooks/useSelectDeckLocation/index.tsx +++ b/components/src/hooks/useSelectDeckLocation/index.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import isEqual from 'lodash/isEqual' import { useTranslation } from 'react-i18next' import { - CutoutConfig, FLEX_CUTOUT_BY_SLOT_ID, FLEX_SINGLE_SLOT_BY_CUTOUT_ID, FLEX_ROBOT_TYPE, @@ -11,9 +10,6 @@ import { getFixtureDisplayName, isAddressableAreaStandardSlot, OT2_ROBOT_TYPE, - AddressableArea, - CoordinateTuple, - CutoutFixtureId, } from '@opentrons/shared-data' import { DeckFromLayers, @@ -32,6 +28,10 @@ import { SPACING, TYPOGRAPHY } from '../../ui-style-constants' import { COLORS } from '../../helix-design-system' import type { + CutoutConfig, + AddressableArea, + CoordinateTuple, + CutoutFixtureId, DeckDefinition, ModuleLocation, RobotType, diff --git a/components/src/hooks/useSwipe.ts b/components/src/hooks/useSwipe.ts index 646ffe913d7..84bb3469330 100644 --- a/components/src/hooks/useSwipe.ts +++ b/components/src/hooks/useSwipe.ts @@ -1,11 +1,6 @@ -import { - useState, - useEffect, - useRef, - MutableRefObject, - CSSProperties, -} from 'react' +import { useState, useEffect, useRef } from 'react' import interact from 'interactjs' +import type { MutableRefObject, CSSProperties } from 'react' interface UseSwipeResult { ref: MutableRefObject diff --git a/components/src/icons/IconList.stories.tsx b/components/src/icons/IconList.stories.tsx index ec081a3f2ca..6cc5c24ed23 100644 --- a/components/src/icons/IconList.stories.tsx +++ b/components/src/icons/IconList.stories.tsx @@ -12,9 +12,10 @@ import { BORDERS, } from '@opentrons/components' import { ICON_DATA_BY_NAME } from './icon-data' -import { Icon as IconComponent, IconName } from './Icon' +import { Icon as IconComponent } from './Icon' import type { Story, Meta } from '@storybook/react' +import type { IconName } from './Icon' export default { title: 'Library/Atoms/IconList', diff --git a/components/src/icons/ModuleIcon.tsx b/components/src/icons/ModuleIcon.tsx index 5c240c4eee9..4d6bea3c734 100644 --- a/components/src/icons/ModuleIcon.tsx +++ b/components/src/icons/ModuleIcon.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Icon, IconName } from './Icon' +import { Icon } from './Icon' import { HEATERSHAKER_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, @@ -10,6 +10,7 @@ import { import type { ModuleType } from '@opentrons/shared-data' import type { StyleProps } from '../primitives/types' +import type { IconName } from './Icon' export const MODULE_ICON_NAME_BY_TYPE: { [type in ModuleType]: IconName } = { [MAGNETIC_BLOCK_TYPE]: 'ot-magnet-v2', diff --git a/components/src/instrument/InstrumentDiagram.tsx b/components/src/instrument/InstrumentDiagram.tsx index 1ed6344d308..8617009d601 100644 --- a/components/src/instrument/InstrumentDiagram.tsx +++ b/components/src/instrument/InstrumentDiagram.tsx @@ -1,5 +1,4 @@ import * as React from 'react' -import { FlattenSimpleInterpolation } from 'styled-components' import { Flex } from '../primitives' import { ALIGN_CENTER, JUSTIFY_CENTER } from '../styles' import singleSrc from './single_channel_GEN1_800px.png' @@ -10,6 +9,7 @@ import singleFlexSrc from './single-channel-flex.png' import eightChannelFlexSrc from './eight-channel-flex.png' import ninetySixSrc from './ninety-six-channel-gen1.png' +import type { FlattenSimpleInterpolation } from 'styled-components' import type { PipetteV2Specs } from '@opentrons/shared-data' import type { Mount } from '../robot-types' import type { StyleProps } from '..' diff --git a/components/src/modals/ModalShell.tsx b/components/src/modals/ModalShell.tsx index 4990ef47ce8..98fe207571e 100644 --- a/components/src/modals/ModalShell.tsx +++ b/components/src/modals/ModalShell.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import styled from 'styled-components' import { SPACING } from '../ui-style-constants' import { BORDERS, COLORS } from '../helix-design-system' -import { StyleProps, styleProps } from '../primitives' +import { styleProps } from '../primitives' import { POSITION_FIXED, POSITION_ABSOLUTE, @@ -12,6 +12,8 @@ import { JUSTIFY_CENTER, OVERFLOW_AUTO, } from '../styles' + +import type { StyleProps } from '../primitives' export interface ModalShellProps extends StyleProps { /** Modal content */ children: React.ReactNode diff --git a/components/src/primitives/Btn.tsx b/components/src/primitives/Btn.tsx index 39819cc0569..5ea917a3a29 100644 --- a/components/src/primitives/Btn.tsx +++ b/components/src/primitives/Btn.tsx @@ -1,9 +1,10 @@ -import styled, { StyledComponent, css } from 'styled-components' +import styled, { css } from 'styled-components' import * as Styles from '../styles' import { styleProps, isntStyleProp } from './style-props' import { RESPONSIVENESS } from '../ui-style-constants' +import type { StyledComponent } from 'styled-components' import type { StyleProps } from './types' export const BUTTON_TYPE_SUBMIT: 'submit' = 'submit' diff --git a/components/src/testing/utils/renderWithProviders.tsx b/components/src/testing/utils/renderWithProviders.tsx index fdf4d4dcc38..c948fe54204 100644 --- a/components/src/testing/utils/renderWithProviders.tsx +++ b/components/src/testing/utils/renderWithProviders.tsx @@ -5,11 +5,11 @@ import { QueryClient, QueryClientProvider } from 'react-query' import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' import { vi } from 'vitest' -import { render, RenderResult } from '@testing-library/react' +import { render } from '@testing-library/react' import { createStore } from 'redux' +import type { RenderResult, RenderOptions } from '@testing-library/react' import type { PreloadedState, Store } from 'redux' -import type { RenderOptions } from '@testing-library/react' export interface RenderWithProvidersOptions extends RenderOptions { initialState?: State diff --git a/discovery-client/src/store/actions.ts b/discovery-client/src/store/actions.ts index 9094118be56..1c544576873 100644 --- a/discovery-client/src/store/actions.ts +++ b/discovery-client/src/store/actions.ts @@ -1,7 +1,7 @@ import type { HealthPollerResult } from '../types' import type { MdnsBrowserService } from '../mdns-browser' -import * as Types from './types' +import type * as Types from './types' export const SERVICE_FOUND: 'mdns:SERVICE_FOUND' = 'mdns:SERVICE_FOUND' diff --git a/discovery-client/src/store/types.ts b/discovery-client/src/store/types.ts index 2fbbd206453..cc74c390ff2 100644 --- a/discovery-client/src/store/types.ts +++ b/discovery-client/src/store/types.ts @@ -10,13 +10,13 @@ import type { import type { MdnsBrowserService } from '../mdns-browser' -import { +import type { HEALTH_STATUS_UNREACHABLE, HEALTH_STATUS_NOT_OK, HEALTH_STATUS_OK, } from '../constants' -import { +import type { INITIALIZE_STATE, SERVICE_FOUND, HEALTH_POLLED, diff --git a/discovery-client/typings/mdns-js.d.ts b/discovery-client/typings/mdns-js.d.ts index 7f9c55b6ccb..2d230a1b8cf 100644 --- a/discovery-client/typings/mdns-js.d.ts +++ b/discovery-client/typings/mdns-js.d.ts @@ -1,6 +1,6 @@ declare module 'mdns-js' { import EventEmitter from 'events' - import { Socket } from 'dgram' + import type { Socket } from 'dgram' namespace mdns { interface BrowserService { diff --git a/g-code-testing/Pipfile b/g-code-testing/Pipfile index 80f83a4561a..0b39a9dd222 100644 --- a/g-code-testing/Pipfile +++ b/g-code-testing/Pipfile @@ -31,6 +31,7 @@ flake8-docstrings = "~=1.7.0" flake8-noqa = "~=1.4.0" black = "==22.3.0" decoy = "~=2.1.1" +pyusb = "==1.2.1" [requires] python_version = "3.10" diff --git a/g-code-testing/Pipfile.lock b/g-code-testing/Pipfile.lock index ad7aa98a701..fd068bff783 100644 --- a/g-code-testing/Pipfile.lock +++ b/g-code-testing/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2454d48b1b831db24fb96b42516e1ac204d98ea0ed929307858ee32ac793fb20" + "sha256": "214f2b205b35dd2d385ec40836249499ecebefc1696107a12d48c58b13c6353d" }, "pipfile-spec": 6, "requires": { @@ -23,14 +23,6 @@ ], "version": "==0.2.0" }, - "aiosqlite": { - "hashes": [ - "sha256:95ee77b91c8d2808bd08a59fbebf66270e9090c3d92ffbf260dc0db0b979577d", - "sha256:edba222e03453e094a3ce605db1b970c4b3376264e56f32e2a4959f948d66a96" - ], - "markers": "python_version >= '3.7'", - "version": "==0.19.0" - }, "anyio": { "hashes": [ "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", @@ -58,11 +50,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "fastapi": { "hashes": [ @@ -86,11 +78,11 @@ }, "idna": { "hashes": [ - "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", - "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" + "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", + "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" ], "markers": "python_version >= '3.5'", - "version": "==3.6" + "version": "==3.7" }, "jsonschema": { "hashes": [ @@ -102,49 +94,49 @@ }, "numpy": { "hashes": [ - "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd", - "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b", - "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e", - "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f", - "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f", - "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178", - "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3", - "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4", - "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e", - "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0", - "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00", - "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419", - "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4", - "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6", - "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166", - "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b", - "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3", - "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf", - "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2", - "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2", - "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36", - "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03", - "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce", - "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6", - "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13", - "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5", - "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e", - "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485", - "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137", - "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374", - "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58", - "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b", - "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb", - "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b", - "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda", - "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511" + "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", + "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", + "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", + "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", + "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", + "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", + "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea", + "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c", + "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", + "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", + "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be", + "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", + "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", + "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", + "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", + "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd", + "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c", + "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", + "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0", + "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c", + "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", + "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", + "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", + "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6", + "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", + "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", + "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30", + "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", + "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", + "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", + "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", + "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", + "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764", + "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", + "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3", + "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f" ], "markers": "python_version >= '3.9'", - "version": "==1.26.3" + "version": "==1.26.4" }, "opentrons": { "editable": true, - "markers": "python_version >= '3.7'", + "markers": "python_version >= '3.10'", "path": "./../api" }, "opentrons-hardware": { @@ -153,7 +145,7 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.7'", + "markers": "python_version >= '3.10'", "path": "../shared-data/python" }, "paho-mqtt": { @@ -276,11 +268,11 @@ }, "sniffio": { "hashes": [ - "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", - "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" + "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", + "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" ], "markers": "python_version >= '3.7'", - "version": "==1.3.0" + "version": "==1.3.1" }, "sqlalchemy": { "hashes": [ @@ -351,11 +343,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0" }, "uvicorn": { "hashes": [ @@ -377,85 +369,85 @@ "develop": { "aiohttp": { "hashes": [ - "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168", - "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb", - "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5", - "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f", - "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc", - "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c", - "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29", - "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4", - "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc", - "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc", - "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63", - "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e", - "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d", - "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a", - "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60", - "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38", - "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b", - "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2", - "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53", - "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5", - "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4", - "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96", - "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58", - "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa", - "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321", - "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae", - "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce", - "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8", - "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194", - "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c", - "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf", - "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d", - "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869", - "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b", - "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52", - "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528", - "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5", - "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1", - "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4", - "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8", - "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d", - "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7", - "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5", - "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54", - "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3", - "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5", - "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c", - "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29", - "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3", - "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747", - "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672", - "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5", - "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11", - "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca", - "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768", - "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6", - "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2", - "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533", - "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6", - "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266", - "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d", - "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec", - "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5", - "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1", - "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b", - "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679", - "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283", - "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb", - "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b", - "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3", - "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051", - "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511", - "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e", - "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d", - "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542", - "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f" + "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8", + "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c", + "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475", + "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed", + "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf", + "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372", + "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81", + "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f", + "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1", + "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd", + "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a", + "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb", + "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46", + "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de", + "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78", + "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c", + "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771", + "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb", + "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430", + "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233", + "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156", + "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9", + "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59", + "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888", + "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c", + "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c", + "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da", + "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424", + "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2", + "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb", + "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8", + "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a", + "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10", + "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0", + "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09", + "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031", + "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4", + "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3", + "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa", + "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a", + "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe", + "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a", + "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2", + "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1", + "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323", + "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b", + "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b", + "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106", + "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac", + "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6", + "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832", + "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75", + "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6", + "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d", + "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72", + "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db", + "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a", + "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da", + "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678", + "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b", + "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24", + "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed", + "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f", + "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e", + "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58", + "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a", + "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342", + "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558", + "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2", + "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551", + "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595", + "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee", + "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11", + "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d", + "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7", + "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f" ], "markers": "python_version >= '3.8'", - "version": "==3.9.3" + "version": "==3.9.5" }, "aiosignal": { "hashes": [ @@ -524,61 +516,61 @@ "toml" ], "hashes": [ - "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61", - "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1", - "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7", - "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7", - "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75", - "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd", - "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35", - "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04", - "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6", - "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042", - "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166", - "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1", - "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d", - "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c", - "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66", - "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70", - "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1", - "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676", - "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630", - "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a", - "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74", - "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad", - "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19", - "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6", - "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448", - "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018", - "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218", - "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756", - "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54", - "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45", - "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628", - "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968", - "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d", - "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25", - "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60", - "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950", - "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06", - "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295", - "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b", - "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c", - "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc", - "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74", - "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1", - "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee", - "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011", - "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156", - "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766", - "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5", - "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581", - "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016", - "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c", - "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3" + "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de", + "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661", + "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26", + "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41", + "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d", + "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981", + "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2", + "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34", + "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f", + "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a", + "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35", + "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223", + "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1", + "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746", + "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90", + "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c", + "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca", + "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8", + "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596", + "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e", + "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd", + "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e", + "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3", + "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e", + "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312", + "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7", + "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572", + "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428", + "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f", + "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07", + "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e", + "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4", + "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136", + "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5", + "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8", + "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d", + "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228", + "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206", + "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa", + "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e", + "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be", + "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5", + "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668", + "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601", + "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057", + "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146", + "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f", + "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8", + "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7", + "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987", + "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19", + "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece" ], "markers": "python_version >= '3.8'", - "version": "==7.4.1" + "version": "==7.5.1" }, "decoy": { "hashes": [ @@ -600,19 +592,19 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "execnet": { "hashes": [ - "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41", - "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af" + "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", + "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3" ], - "markers": "python_version >= '3.7'", - "version": "==2.0.2" + "markers": "python_version >= '3.8'", + "version": "==2.1.1" }, "flake8": { "hashes": [ @@ -735,11 +727,11 @@ }, "idna": { "hashes": [ - "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", - "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" + "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", + "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" ], "markers": "python_version >= '3.5'", - "version": "==3.6" + "version": "==3.7" }, "iniconfig": { "hashes": [ @@ -906,11 +898,11 @@ }, "packaging": { "hashes": [ - "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", - "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.2" + "version": "==24.0" }, "pathspec": { "hashes": [ @@ -922,19 +914,19 @@ }, "platformdirs": { "hashes": [ - "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068", - "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768" + "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", + "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" ], "markers": "python_version >= '3.8'", - "version": "==4.2.0" + "version": "==4.2.2" }, "pluggy": { "hashes": [ - "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981", - "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be" + "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", + "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" ], "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "version": "==1.5.0" }, "py": { "hashes": [ @@ -988,11 +980,11 @@ }, "pytest-asyncio": { "hashes": [ - "sha256:2143d9d9375bf372a73260e4114541485e84fca350b0b6b92674ca56ff5f7ea2", - "sha256:b0079dfac14b60cd1ce4691fbfb1748fe939db7d0234b5aba97197d10fbe0fef" + "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a", + "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f" ], "markers": "python_version >= '3.8'", - "version": "==0.23.4" + "version": "==0.23.6" }, "pytest-cov": { "hashes": [ @@ -1020,6 +1012,15 @@ "markers": "python_version >= '3.6'", "version": "==2.5.0" }, + "pyusb": { + "hashes": [ + "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36", + "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9" + ], + "index": "pypi", + "markers": "python_full_version >= '3.6.0'", + "version": "==1.2.1" + }, "snowballstemmer": { "hashes": [ "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", @@ -1037,20 +1038,20 @@ }, "types-mock": { "hashes": [ - "sha256:13ca379d5710ccb3f18f69ade5b08881874cb83383d8fb49b1d4dac9d5c5d090", - "sha256:3d116955495935b0bcba14954b38d97e507cd43eca3e3700fc1b8e4f5c6bf2c7" + "sha256:5281a645d72e827d70043e3cc144fe33b1c003db084f789dc203aa90e812a5a4", + "sha256:d586a01d39ad919d3ddcd73de6cde73ca7f3c69707219f722d1b8d7733641ad7" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==5.1.0.20240106" + "version": "==5.1.0.20240425" }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0" }, "yarl": { "hashes": [ diff --git a/hardware-testing/Pipfile b/hardware-testing/Pipfile index acc317ac325..e851331de96 100644 --- a/hardware-testing/Pipfile +++ b/hardware-testing/Pipfile @@ -23,6 +23,7 @@ flake8-docstrings = "~=1.6.0" flake8-noqa = "~=1.2.1" requests = "==2.27.1" types-requests = "==2.25.6" +pyusb = "==1.2.1" [requires] python_version = "3.10" diff --git a/hardware-testing/Pipfile.lock b/hardware-testing/Pipfile.lock index 6c717bc2743..cbe473a96c3 100644 --- a/hardware-testing/Pipfile.lock +++ b/hardware-testing/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "62d9d88f58594147f78dbda65db2d96b53ac2c07a54eb0b81854c7c7ebe4e247" + "sha256": "29fd7580a2384b6f20317de4c4869f27ede50315e7d87d75346bfbabd0ef683c" }, "pipfile-spec": 6, "requires": { @@ -25,19 +25,19 @@ }, "anyio": { "hashes": [ - "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b", - "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be" + "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", + "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5" ], - "markers": "python_full_version >= '3.6.2'", - "version": "==3.6.1" + "markers": "python_version >= '3.7'", + "version": "==3.7.1" }, "attrs": { "hashes": [ - "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", - "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" + "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", + "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1" ], "markers": "python_version >= '3.7'", - "version": "==23.1.0" + "version": "==23.2.0" }, "click": { "hashes": [ @@ -47,134 +47,144 @@ "markers": "python_version >= '3.7'", "version": "==8.1.7" }, + "exceptiongroup": { + "hashes": [ + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" + ], + "markers": "python_version < '3.11'", + "version": "==1.2.1" + }, "hardware-testing": { "editable": true, "path": "." }, "idna": { "hashes": [ - "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", - "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" + "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", + "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" ], "markers": "python_version >= '3.5'", - "version": "==3.6" + "version": "==3.7" }, "jsonschema": { "hashes": [ - "sha256:5f9c0a719ca2ce14c5de2fd350a64fd2d13e8539db29836a86adc990bb1a068f", - "sha256:8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d" + "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", + "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" ], - "version": "==3.0.2" + "markers": "python_version >= '3.7'", + "version": "==4.17.3" }, "msgpack": { "hashes": [ - "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", - "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d", - "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3", - "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672", - "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0", - "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9", - "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", - "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46", - "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524", - "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819", - "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc", - "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc", - "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1", - "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82", - "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81", - "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", - "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", - "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2", - "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c", - "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", - "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", - "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e", - "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95", - "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f", - "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b", - "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", - "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf", - "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61", - "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c", - "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", - "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d", - "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c", - "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4", - "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba", - "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", - "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee", - "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", - "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", - "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075", - "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f", - "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7", - "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", - "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", - "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", - "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf", - "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c", - "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5", - "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", - "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5", - "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e", - "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b", - "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad", - "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd", - "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7", - "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002", - "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc" + "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982", + "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3", + "sha256:0ceea77719d45c839fd73abcb190b8390412a890df2f83fb8cf49b2a4b5c2f40", + "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee", + "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693", + "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950", + "sha256:1ab0bbcd4d1f7b6991ee7c753655b481c50084294218de69365f8f1970d4c151", + "sha256:1cce488457370ffd1f953846f82323cb6b2ad2190987cd4d70b2713e17268d24", + "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305", + "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b", + "sha256:374a8e88ddab84b9ada695d255679fb99c53513c0a51778796fcf0944d6c789c", + "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659", + "sha256:3923a1778f7e5ef31865893fdca12a8d7dc03a44b33e2a5f3295416314c09f5d", + "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18", + "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746", + "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868", + "sha256:5845fdf5e5d5b78a49b826fcdc0eb2e2aa7191980e3d2cfd2a30303a74f212e2", + "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba", + "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228", + "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2", + "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273", + "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c", + "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653", + "sha256:6a0e76621f6e1f908ae52860bdcb58e1ca85231a9b0545e64509c931dd34275a", + "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596", + "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd", + "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8", + "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa", + "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85", + "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc", + "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836", + "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3", + "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58", + "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128", + "sha256:a22e47578b30a3e199ab067a4d43d790249b3c0587d9a771921f86250c8435db", + "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f", + "sha256:bd739c9251d01e0279ce729e37b39d49a08c0420d3fee7f2a4968c0576678f77", + "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad", + "sha256:d3420522057ebab1728b21ad473aa950026d07cb09da41103f8e597dfbfaeb13", + "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8", + "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b", + "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a", + "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543", + "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b", + "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce", + "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d", + "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a", + "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c", + "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f", + "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e", + "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011", + "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04", + "sha256:f3709997b228685fe53e8c433e2df9f0cdb5f4542bd5114ed17ac3c0129b0480", + "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a", + "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d", + "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d" ], "markers": "platform_system != 'Windows'", - "version": "==1.0.7" + "version": "==1.0.8" }, "numpy": { "hashes": [ - "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a", - "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6", - "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2", - "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79", - "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9", - "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919", - "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d", - "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060", - "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75", - "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f", - "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe", - "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167", - "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef", - "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75", - "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3", - "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7", - "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7", - "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d", - "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b", - "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186", - "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0", - "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1", - "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6", - "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e", - "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523", - "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36", - "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841", - "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818", - "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00", - "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80", - "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440", - "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210", - "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8", - "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea", - "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec", - "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841" + "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", + "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", + "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", + "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", + "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", + "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", + "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea", + "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c", + "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", + "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", + "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be", + "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", + "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", + "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", + "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", + "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd", + "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c", + "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", + "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0", + "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c", + "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", + "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", + "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", + "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6", + "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", + "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", + "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30", + "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", + "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", + "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", + "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", + "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", + "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764", + "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", + "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3", + "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f" ], "markers": "python_version >= '3.9'", - "version": "==1.26.2" + "version": "==1.26.4" }, "opentrons": { "editable": true, "extras": [ "flex-hardware" ], + "markers": "python_version >= '3.10'", "path": "./../api" }, "opentrons-hardware": { @@ -186,57 +196,58 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.7'", + "markers": "python_version >= '3.10'", "path": "./../shared-data/python" }, "packaging": { "hashes": [ - "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", - "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.2" + "version": "==24.0" }, "pydantic": { "hashes": [ - "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44", - "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d", - "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84", - "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555", - "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7", - "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131", - "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8", - "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3", - "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56", - "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0", - "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4", - "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453", - "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044", - "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e", - "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15", - "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb", - "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001", - "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d", - "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3", - "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e", - "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f", - "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c", - "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b", - "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8", - "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567", - "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979", - "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326", - "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb", - "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f", - "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa", - "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747", - "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801", - "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55", - "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08", - "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76" - ], - "markers": "python_full_version >= '3.6.1'", - "version": "==1.9.2" + "sha256:005655cabc29081de8243126e036f2065bd7ea5b9dff95fde6d2c642d39755de", + "sha256:0d142fa1b8f2f0ae11ddd5e3e317dcac060b951d605fda26ca9b234b92214986", + "sha256:22ed12ee588b1df028a2aa5d66f07bf8f8b4c8579c2e96d5a9c1f96b77f3bb55", + "sha256:2746189100c646682eff0bce95efa7d2e203420d8e1c613dc0c6b4c1d9c1fde4", + "sha256:28e552a060ba2740d0d2aabe35162652c1459a0b9069fe0db7f4ee0e18e74d58", + "sha256:3287e1614393119c67bd4404f46e33ae3be3ed4cd10360b48d0a4459f420c6a3", + "sha256:3350f527bb04138f8aff932dc828f154847fbdc7a1a44c240fbfff1b57f49a12", + "sha256:3453685ccd7140715e05f2193d64030101eaad26076fad4e246c1cc97e1bb30d", + "sha256:394f08750bd8eaad714718812e7fab615f873b3cdd0b9d84e76e51ef3b50b6b7", + "sha256:4e316e54b5775d1eb59187f9290aeb38acf620e10f7fd2f776d97bb788199e53", + "sha256:50f1666a9940d3d68683c9d96e39640f709d7a72ff8702987dab1761036206bb", + "sha256:51d405b42f1b86703555797270e4970a9f9bd7953f3990142e69d1037f9d9e51", + "sha256:584f2d4c98ffec420e02305cf675857bae03c9d617fcfdc34946b1160213a948", + "sha256:5e09c19df304b8123938dc3c53d3d3be6ec74b9d7d0d80f4f4b5432ae16c2022", + "sha256:676ed48f2c5bbad835f1a8ed8a6d44c1cd5a21121116d2ac40bd1cd3619746ed", + "sha256:67f1a1fb467d3f49e1708a3f632b11c69fccb4e748a325d5a491ddc7b5d22383", + "sha256:6a51a1dd4aa7b3f1317f65493a182d3cff708385327c1c82c81e4a9d6d65b2e4", + "sha256:6bd7030c9abc80134087d8b6e7aa957e43d35714daa116aced57269a445b8f7b", + "sha256:75279d3cac98186b6ebc2597b06bcbc7244744f6b0b44a23e4ef01e5683cc0d2", + "sha256:7ac9237cd62947db00a0d16acf2f3e00d1ae9d3bd602b9c415f93e7a9fc10528", + "sha256:7ea210336b891f5ea334f8fc9f8f862b87acd5d4a0cbc9e3e208e7aa1775dabf", + "sha256:82790d4753ee5d00739d6cb5cf56bceb186d9d6ce134aca3ba7befb1eedbc2c8", + "sha256:92229f73400b80c13afcd050687f4d7e88de9234d74b27e6728aa689abcf58cc", + "sha256:9bea1f03b8d4e8e86702c918ccfd5d947ac268f0f0cc6ed71782e4b09353b26f", + "sha256:a980a77c52723b0dc56640ced396b73a024d4b74f02bcb2d21dbbac1debbe9d0", + "sha256:af9850d98fc21e5bc24ea9e35dd80a29faf6462c608728a110c0a30b595e58b7", + "sha256:bbc6989fad0c030bd70a0b6f626f98a862224bc2b1e36bfc531ea2facc0a340c", + "sha256:be51dd2c8596b25fe43c0a4a59c2bee4f18d88efb8031188f9e7ddc6b469cf44", + "sha256:c365ad9c394f9eeffcb30a82f4246c0006417f03a7c0f8315d6211f25f7cb654", + "sha256:c3d5731a120752248844676bf92f25a12f6e45425e63ce22e0849297a093b5b0", + "sha256:ca832e124eda231a60a041da4f013e3ff24949d94a01154b137fc2f2a43c3ffb", + "sha256:d207d5b87f6cbefbdb1198154292faee8017d7495a54ae58db06762004500d00", + "sha256:d31ee5b14a82c9afe2bd26aaa405293d4237d0591527d9129ce36e58f19f95c1", + "sha256:d3b5c4cbd0c9cb61bbbb19ce335e1f8ab87a811f6d589ed52b0254cf585d709c", + "sha256:d573082c6ef99336f2cb5b667b781d2f776d4af311574fb53d908517ba523c22", + "sha256:e49db944fad339b2ccb80128ffd3f8af076f9f287197a480bf1e4ca053a866f0" + ], + "markers": "python_version >= '3.7'", + "version": "==1.10.15" }, "pyrsistent": { "hashes": [ @@ -293,35 +304,27 @@ }, "setuptools": { "hashes": [ - "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2", - "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6" + "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987", + "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32" ], "markers": "python_version >= '3.8'", - "version": "==69.0.2" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" + "version": "==69.5.1" }, "sniffio": { "hashes": [ - "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", - "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" + "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", + "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" ], "markers": "python_version >= '3.7'", - "version": "==1.3.0" + "version": "==1.3.1" }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0" }, "wrapt": { "hashes": [ @@ -410,11 +413,11 @@ }, "attrs": { "hashes": [ - "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", - "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" + "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", + "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1" ], "markers": "python_version >= '3.7'", - "version": "==23.1.0" + "version": "==23.2.0" }, "black": { "hashes": [ @@ -448,11 +451,11 @@ }, "certifi": { "hashes": [ - "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1", - "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474" + "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f", + "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1" ], "markers": "python_version >= '3.6'", - "version": "==2023.11.17" + "version": "==2024.2.2" }, "charset-normalizer": { "hashes": [ @@ -481,61 +484,61 @@ }, "coverage": { "hashes": [ - "sha256:007a7e49831cfe387473e92e9ff07377f6121120669ddc39674e7244350a6a29", - "sha256:1191270b06ecd68b1d00897b2daddb98e1719f63750969614ceb3438228c088e", - "sha256:1367aa411afb4431ab58fd7ee102adb2665894d047c490649e86219327183134", - "sha256:1f0f8f0c497eb9c9f18f21de0750c8d8b4b9c7000b43996a094290b59d0e7523", - "sha256:222b038f08a7ebed1e4e78ccf3c09a1ca4ac3da16de983e66520973443b546bc", - "sha256:243576944f7c1a1205e5cd658533a50eba662c74f9be4c050d51c69bd4532936", - "sha256:2e9223a18f51d00d3ce239c39fc41410489ec7a248a84fab443fbb39c943616c", - "sha256:307aecb65bb77cbfebf2eb6e12009e9034d050c6c69d8a5f3f737b329f4f15fb", - "sha256:31c0b1b8b5a4aebf8fcd227237fc4263aa7fa0ddcd4d288d42f50eff18b0bac4", - "sha256:3b15e03b8ee6a908db48eccf4e4e42397f146ab1e91c6324da44197a45cb9132", - "sha256:3c854c1d2c7d3e47f7120b560d1a30c1ca221e207439608d27bc4d08fd4aeae8", - "sha256:475de8213ed95a6b6283056d180b2442eee38d5948d735cd3d3b52b86dd65b92", - "sha256:50c472c1916540f8b2deef10cdc736cd2b3d1464d3945e4da0333862270dcb15", - "sha256:593efa42160c15c59ee9b66c5f27a453ed3968718e6e58431cdfb2d50d5ad284", - "sha256:65d716b736f16e250435473c5ca01285d73c29f20097decdbb12571d5dfb2c94", - "sha256:733537a182b5d62184f2a72796eb6901299898231a8e4f84c858c68684b25a70", - "sha256:757453848c18d7ab5d5b5f1827293d580f156f1c2c8cef45bfc21f37d8681069", - "sha256:79c32f875fd7c0ed8d642b221cf81feba98183d2ff14d1f37a1bbce6b0347d9f", - "sha256:7f3bad1a9313401ff2964e411ab7d57fb700a2d5478b727e13f156c8f89774a0", - "sha256:7fbf3f5756e7955174a31fb579307d69ffca91ad163467ed123858ce0f3fd4aa", - "sha256:811ca7373da32f1ccee2927dc27dc523462fd30674a80102f86c6753d6681bc6", - "sha256:89400aa1752e09f666cc48708eaa171eef0ebe3d5f74044b614729231763ae69", - "sha256:8c944cf1775235c0857829c275c777a2c3e33032e544bcef614036f337ac37bb", - "sha256:9437a4074b43c177c92c96d051957592afd85ba00d3e92002c8ef45ee75df438", - "sha256:9e17d9cb06c13b4f2ef570355fa45797d10f19ca71395910b249e3f77942a837", - "sha256:9ede881c7618f9cf93e2df0421ee127afdfd267d1b5d0c59bcea771cf160ea4a", - "sha256:a1f76cfc122c9e0f62dbe0460ec9cc7696fc9a0293931a33b8870f78cf83a327", - "sha256:a2ac4245f18057dfec3b0074c4eb366953bca6787f1ec397c004c78176a23d56", - "sha256:a702e66483b1fe602717020a0e90506e759c84a71dbc1616dd55d29d86a9b91f", - "sha256:ad2453b852a1316c8a103c9c970db8fbc262f4f6b930aa6c606df9b2766eee06", - "sha256:af75cf83c2d57717a8493ed2246d34b1f3398cb8a92b10fd7a1858cad8e78f59", - "sha256:afdcc10c01d0db217fc0a64f58c7edd635b8f27787fea0a3054b856a6dff8717", - "sha256:c59a3e59fb95e6d72e71dc915e6d7fa568863fad0a80b33bc7b82d6e9f844973", - "sha256:cad9afc1644b979211989ec3ff7d82110b2ed52995c2f7263e7841c846a75348", - "sha256:d299d379b676812e142fb57662a8d0d810b859421412b4d7af996154c00c31bb", - "sha256:d31650d313bd90d027f4be7663dfa2241079edd780b56ac416b56eebe0a21aab", - "sha256:d874434e0cb7b90f7af2b6e3309b0733cde8ec1476eb47db148ed7deeb2a9494", - "sha256:db0338c4b0951d93d547e0ff8d8ea340fecf5885f5b00b23be5aa99549e14cfd", - "sha256:df04c64e58df96b4427db8d0559e95e2df3138c9916c96f9f6a4dd220db2fdb7", - "sha256:e995efb191f04b01ced307dbd7407ebf6e6dc209b528d75583277b10fd1800ee", - "sha256:eda7f6e92358ac9e1717ce1f0377ed2b9320cea070906ece4e5c11d172a45a39", - "sha256:ee453085279df1bac0996bc97004771a4a052b1f1e23f6101213e3796ff3cb85", - "sha256:ee6621dccce8af666b8c4651f9f43467bfbf409607c604b840b78f4ff3619aeb", - "sha256:eee5e741b43ea1b49d98ab6e40f7e299e97715af2488d1c77a90de4a663a86e2", - "sha256:f3bfd2c2f0e5384276e12b14882bf2c7621f97c35320c3e7132c156ce18436a1", - "sha256:f501e36ac428c1b334c41e196ff6bd550c0353c7314716e80055b1f0a32ba394", - "sha256:f9191be7af41f0b54324ded600e8ddbcabea23e1e8ba419d9a53b241dece821d", - "sha256:fbd8a5fe6c893de21a3c6835071ec116d79334fbdf641743332e442a3466f7ea", - "sha256:fc200cec654311ca2c3f5ab3ce2220521b3d4732f68e1b1e79bef8fcfc1f2b97", - "sha256:ff4800783d85bff132f2cc7d007426ec698cdce08c3062c8d501ad3f4ea3d16c", - "sha256:ffb0eacbadb705c0a6969b0adf468f126b064f3362411df95f6d4f31c40d31c1", - "sha256:fff0b2f249ac642fd735f009b8363c2b46cf406d3caec00e4deeb79b5ff39b40" + "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de", + "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661", + "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26", + "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41", + "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d", + "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981", + "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2", + "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34", + "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f", + "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a", + "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35", + "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223", + "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1", + "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746", + "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90", + "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c", + "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca", + "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8", + "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596", + "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e", + "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd", + "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e", + "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3", + "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e", + "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312", + "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7", + "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572", + "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428", + "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f", + "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07", + "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e", + "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4", + "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136", + "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5", + "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8", + "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d", + "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228", + "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206", + "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa", + "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e", + "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be", + "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5", + "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668", + "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601", + "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057", + "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146", + "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f", + "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8", + "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7", + "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987", + "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19", + "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece" ], "markers": "python_version >= '3.8'", - "version": "==7.3.3" + "version": "==7.5.1" }, "flake8": { "hashes": [ @@ -574,11 +577,11 @@ }, "idna": { "hashes": [ - "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", - "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" + "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", + "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" ], "markers": "python_version >= '3.5'", - "version": "==3.6" + "version": "==3.7" }, "iniconfig": { "hashes": [ @@ -636,11 +639,11 @@ }, "packaging": { "hashes": [ - "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", - "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.2" + "version": "==24.0" }, "pathspec": { "hashes": [ @@ -652,19 +655,19 @@ }, "platformdirs": { "hashes": [ - "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380", - "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420" + "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", + "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" ], "markers": "python_version >= '3.8'", - "version": "==4.1.0" + "version": "==4.2.2" }, "pluggy": { "hashes": [ - "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", - "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" + "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", + "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" ], "markers": "python_version >= '3.8'", - "version": "==1.3.0" + "version": "==1.5.0" }, "py": { "hashes": [ @@ -716,6 +719,15 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.10.1" }, + "pyusb": { + "hashes": [ + "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36", + "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9" + ], + "index": "pypi", + "markers": "python_full_version >= '3.6.0'", + "version": "==1.2.1" + }, "requests": { "hashes": [ "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", @@ -737,7 +749,7 @@ "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '3.7'", + "markers": "python_version < '3.11'", "version": "==2.0.1" }, "types-requests": { @@ -750,11 +762,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0" }, "urllib3": { "hashes": [ diff --git a/labware-designer/typings/global.d.ts b/labware-designer/typings/global.d.ts index 007983beba5..24e685aa694 100644 --- a/labware-designer/typings/global.d.ts +++ b/labware-designer/typings/global.d.ts @@ -1,4 +1,4 @@ -import * as allSharedData from '@opentrons/shared-data' +import type * as allSharedData from '@opentrons/shared-data' declare global { interface Window { diff --git a/labware-library/src/labware-creator/components/ConditionalLabwareRender.tsx b/labware-library/src/labware-creator/components/ConditionalLabwareRender.tsx index 8b19353248c..4419fde57d9 100644 --- a/labware-library/src/labware-creator/components/ConditionalLabwareRender.tsx +++ b/labware-library/src/labware-creator/components/ConditionalLabwareRender.tsx @@ -6,11 +6,11 @@ import { RobotWorkSpace, } from '@opentrons/components' import { - LabwareDefinition2, SLOT_LENGTH_MM as DEFAULT_X_DIMENSION, SLOT_WIDTH_MM as DEFAULT_Y_DIMENSION, } from '@opentrons/shared-data' import styles from './ConditionalLabwareRender.module.css' +import type { LabwareDefinition2 } from '@opentrons/shared-data' interface Props { definition: LabwareDefinition2 | null diff --git a/labware-library/src/labware-creator/components/Dropdown.tsx b/labware-library/src/labware-creator/components/Dropdown.tsx index 414b70ee7a8..a4ea2c8101a 100644 --- a/labware-library/src/labware-creator/components/Dropdown.tsx +++ b/labware-library/src/labware-creator/components/Dropdown.tsx @@ -3,17 +3,16 @@ import * as React from 'react' import { Box, SelectField, - SelectOption, - StyleProps, Tooltip, useHoverTooltip, } from '@opentrons/components' import { Field } from 'formik' import { reportFieldEdit } from '../analyticsUtils' -import { getLabel, LabwareFields } from '../fields' -import type { RichOption, RichOptions } from '../fields' +import { getLabel } from '../fields' import fieldStyles from './fieldStyles.module.css' import styles from './Dropdown.module.css' +import type { SelectOption, StyleProps } from '@opentrons/components' +import type { LabwareFields, RichOption, RichOptions } from '../fields' export interface DropdownProps extends StyleProps { name: keyof LabwareFields diff --git a/labware-library/src/labware-creator/components/FormLevelErrorAlerts.tsx b/labware-library/src/labware-creator/components/FormLevelErrorAlerts.tsx index f274d656ed3..bf8883bfaa3 100644 --- a/labware-library/src/labware-creator/components/FormLevelErrorAlerts.tsx +++ b/labware-library/src/labware-creator/components/FormLevelErrorAlerts.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import { AlertItem } from '@opentrons/components' -import { LabwareCreatorErrors, FORM_LEVEL_ERRORS } from '../formLevelValidation' +import { FORM_LEVEL_ERRORS } from '../formLevelValidation' +import type { LabwareCreatorErrors } from '../formLevelValidation' export const FormLevelErrorAlerts = (props: { errors: LabwareCreatorErrors diff --git a/labware-library/src/labware-creator/components/__tests__/FormAlerts.test.tsx b/labware-library/src/labware-creator/components/__tests__/FormAlerts.test.tsx index 108d83560ae..440c175b299 100644 --- a/labware-library/src/labware-creator/components/__tests__/FormAlerts.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/FormAlerts.test.tsx @@ -9,7 +9,8 @@ import { LABWARE_TOO_SMALL_ERROR, LABWARE_TOO_LARGE_ERROR, } from '../../fields' -import { FormAlerts, Props as FormAlertProps } from '../alerts/FormAlerts' +import { FormAlerts } from '../alerts/FormAlerts' +import type { Props as FormAlertProps } from '../alerts/FormAlerts' vi.mock('../../formSelectors') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/CreateNewDefinition.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/CreateNewDefinition.test.tsx index f2095e4d630..09e4cde21dd 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/CreateNewDefinition.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/CreateNewDefinition.test.tsx @@ -1,11 +1,12 @@ import React from 'react' import { vi, describe, it, expect } from 'vitest' -import { FormikConfig } from 'formik' import { render, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { getDefaultFormState, LabwareFields } from '../../../fields' +import { getDefaultFormState } from '../../../fields' import { wrapInFormik } from '../../utils/wrapInFormik' import { CreateNewDefinition } from '../../sections/CreateNewDefinition' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' const formikConfig: FormikConfig = { initialValues: getDefaultFormState(), diff --git a/labware-library/src/labware-creator/components/__tests__/sections/CustomTiprackWarning.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/CustomTiprackWarning.test.tsx index 6e18832b7bd..a63ecf9f6e9 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/CustomTiprackWarning.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/CustomTiprackWarning.test.tsx @@ -1,16 +1,11 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' -import { FormikConfig } from 'formik' import { render, screen } from '@testing-library/react' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' - +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { CustomTiprackWarning } from '../../sections/CustomTiprackWarning' - import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' let formikConfig: FormikConfig diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Description.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Description.test.tsx index 05b3bbb4914..26607f544e7 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Description.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Description.test.tsx @@ -1,17 +1,14 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' -import { FormikConfig } from 'formik' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { Description } from '../../sections/Description' import { isEveryFieldHidden } from '../../../utils/isEveryFieldHidden' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils/isEveryFieldHidden') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Export.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Export.test.tsx index 0711332637f..9e83ddecc74 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Export.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Export.test.tsx @@ -1,17 +1,14 @@ import React from 'react' -import { FormikConfig } from 'formik' import { vi, describe, it, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { isEveryFieldHidden } from '../../../utils' import { Export } from '../../sections/Export' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/File.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/File.test.tsx index 1b6eb6c7ff5..f3756fd1b54 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/File.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/File.test.tsx @@ -1,17 +1,14 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' -import { FormikConfig } from 'formik' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { isEveryFieldHidden } from '../../../utils' import { File } from '../../sections/File' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Footprint.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Footprint.test.tsx index 11aa7fe13aa..8a578d3c7e3 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Footprint.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Footprint.test.tsx @@ -1,14 +1,15 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' -import { FormikConfig } from 'formik' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' import { nestedTextMatcher } from '../../__testUtils__/nestedTextMatcher' -import { getDefaultFormState, LabwareFields } from '../../../fields' +import { getDefaultFormState } from '../../../fields' import { Footprint } from '../../sections/Footprint' import { wrapInFormik } from '../../utils/wrapInFormik' import { isEveryFieldHidden } from '../../../utils' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Grid.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Grid.test.tsx index 3347be9baf0..40a49859748 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Grid.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Grid.test.tsx @@ -1,20 +1,17 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' -import { FormikConfig } from 'formik' import isEqual from 'lodash/isEqual' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' -import { - getDefaultFormState, - LabwareFields, - yesNoOptions, -} from '../../../fields' +import { getDefaultFormState, yesNoOptions } from '../../../fields' import { isEveryFieldHidden, getLabwareName } from '../../../utils' import { Grid } from '../../sections/Grid' import { FormAlerts } from '../../alerts/FormAlerts' import { TextField } from '../../TextField' import { RadioField } from '../../RadioField' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') vi.mock('../../TextField') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/GridOffset.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/GridOffset.test.tsx index 6cb1fbeb77c..9ae5b28a65f 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/GridOffset.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/GridOffset.test.tsx @@ -1,16 +1,17 @@ import React from 'react' -import { FormikConfig } from 'formik' import isEqual from 'lodash/isEqual' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' import { nestedTextMatcher } from '../../__testUtils__/nestedTextMatcher' -import { getDefaultFormState, LabwareFields } from '../../../fields' +import { getDefaultFormState } from '../../../fields' import { isEveryFieldHidden, getLabwareName } from '../../../utils' import { GridOffset } from '../../sections/GridOffset' import { FormAlerts } from '../../alerts/FormAlerts' import { TextField } from '../../TextField' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') vi.mock('../../TextField') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/HandPlacedTipFit.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/HandPlacedTipFit.test.tsx index 0261d3183c8..595908aa989 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/HandPlacedTipFit.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/HandPlacedTipFit.test.tsx @@ -1,12 +1,10 @@ import React from 'react' -import { FormikConfig } from 'formik' import isEqual from 'lodash/isEqual' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { render, screen } from '@testing-library/react' import { getDefaultFormState, getInitialStatus, - LabwareFields, snugLooseOptions, } from '../../../fields' import { HandPlacedTipFit } from '../../sections/HandPlacedTipFit' @@ -14,6 +12,8 @@ import { FormAlerts } from '../../alerts/FormAlerts' import { TipFitAlerts } from '../../alerts/TipFitAlerts' import { Dropdown } from '../../Dropdown' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../Dropdown') vi.mock('../../alerts/FormAlerts') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Height.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Height.test.tsx index d70892e5359..84296e1c4b8 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Height.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Height.test.tsx @@ -2,13 +2,14 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { when } from 'vitest-when' -import { FormikConfig } from 'formik' import { render, screen } from '@testing-library/react' import { nestedTextMatcher } from '../../__testUtils__/nestedTextMatcher' -import { getDefaultFormState, LabwareFields } from '../../../fields' +import { getDefaultFormState } from '../../../fields' import { isEveryFieldHidden } from '../../../utils' import { Height } from '../../sections/Height' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Preview.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Preview.test.tsx index 385f677da2e..7389010bcac 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Preview.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Preview.test.tsx @@ -1,18 +1,15 @@ import React from 'react' -import { FormikConfig } from 'formik' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { getLabwareName } from '../../../utils' import { Preview } from '../../sections/Preview' import { wrapInFormik } from '../../utils/wrapInFormik' import { FORM_LEVEL_ERRORS } from '../../../formLevelValidation' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Regularity.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Regularity.test.tsx index cee5a4e0ba0..cada50867ce 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Regularity.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Regularity.test.tsx @@ -2,16 +2,13 @@ import React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { when } from 'vitest-when' -import { FormikConfig } from 'formik' import { render, screen } from '@testing-library/react' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { isEveryFieldHidden, getLabwareName } from '../../../utils' import { Regularity } from '../../sections/Regularity' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/Volume.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/Volume.test.tsx index faafd0e4ec8..c0fc90b54eb 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/Volume.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/Volume.test.tsx @@ -1,17 +1,14 @@ import React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' -import { FormikConfig } from 'formik' import '@testing-library/jest-dom/vitest' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { isEveryFieldHidden, getLabwareName } from '../../../utils' import { Volume } from '../../sections/Volume' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/WellBottomAndDepth.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/WellBottomAndDepth.test.tsx index fc081e38a96..db7c7193697 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/WellBottomAndDepth.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/WellBottomAndDepth.test.tsx @@ -2,18 +2,13 @@ import React from 'react' import { vi, it, expect, describe, beforeEach, afterEach } from 'vitest' import { render, screen } from '@testing-library/react' import '@testing-library/jest-dom/vitest' -import { FormikConfig } from 'formik' import { when } from 'vitest-when' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, - LabwareType, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { getLabwareName } from '../../../utils' import { WellBottomAndDepth } from '../../sections/WellBottomAndDepth' - import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields, LabwareType } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/WellShapeAndSides.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/WellShapeAndSides.test.tsx index f788c6108fc..74202597ee1 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/WellShapeAndSides.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/WellShapeAndSides.test.tsx @@ -1,16 +1,13 @@ import React from 'react' import { vi, describe, beforeEach, afterEach, it, expect } from 'vitest' import { render, screen } from '@testing-library/react' -import { FormikConfig } from 'formik' import { when } from 'vitest-when' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { displayAsTube, getLabwareName } from '../../../utils' import { WellShapeAndSides } from '../../sections/WellShapeAndSides' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/__tests__/sections/WellSpacing.test.tsx b/labware-library/src/labware-creator/components/__tests__/sections/WellSpacing.test.tsx index 4f79611f073..6cd9b77b09e 100644 --- a/labware-library/src/labware-creator/components/__tests__/sections/WellSpacing.test.tsx +++ b/labware-library/src/labware-creator/components/__tests__/sections/WellSpacing.test.tsx @@ -1,17 +1,14 @@ import React from 'react' -import { FormikConfig } from 'formik' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { when } from 'vitest-when' import { render, screen } from '@testing-library/react' import { nestedTextMatcher } from '../../__testUtils__/nestedTextMatcher' -import { - getDefaultFormState, - getInitialStatus, - LabwareFields, -} from '../../../fields' +import { getDefaultFormState, getInitialStatus } from '../../../fields' import { isEveryFieldHidden, getLabwareName } from '../../../utils' import { WellSpacing } from '../../sections/WellSpacing' import { wrapInFormik } from '../../utils/wrapInFormik' +import type { FormikConfig } from 'formik' +import type { LabwareFields } from '../../../fields' vi.mock('../../../utils') diff --git a/labware-library/src/labware-creator/components/alerts/FormAlerts.tsx b/labware-library/src/labware-creator/components/alerts/FormAlerts.tsx index 4a421564a49..1312a0f44d6 100644 --- a/labware-library/src/labware-creator/components/alerts/FormAlerts.tsx +++ b/labware-library/src/labware-creator/components/alerts/FormAlerts.tsx @@ -4,7 +4,6 @@ import pick from 'lodash/pick' import { AlertItem } from '@opentrons/components' import { getLabel, - LabwareFields, IRREGULAR_LABWARE_ERROR, LABWARE_TOO_SMALL_ERROR, LABWARE_TOO_LARGE_ERROR, @@ -17,6 +16,7 @@ import { import { LinkOut } from '../LinkOut' import type { FormikTouched, FormikErrors } from 'formik' +import type { LabwareFields } from '../../fields' export interface Props { values: LabwareFields fieldList: Array diff --git a/labware-library/src/labware-creator/components/alerts/HeightAlerts.tsx b/labware-library/src/labware-creator/components/alerts/HeightAlerts.tsx index 21b76362f9f..98f00c67fc3 100644 --- a/labware-library/src/labware-creator/components/alerts/HeightAlerts.tsx +++ b/labware-library/src/labware-creator/components/alerts/HeightAlerts.tsx @@ -1,7 +1,8 @@ import * as React from 'react' -import { FormikTouched } from 'formik' -import { LabwareFields, MAX_SUGGESTED_Z } from '../../fields' import { AlertItem } from '@opentrons/components' +import { MAX_SUGGESTED_Z } from '../../fields' +import type { FormikTouched } from 'formik' +import type { LabwareFields } from '../../fields' export interface Props { values: LabwareFields diff --git a/labware-library/src/labware-creator/components/alerts/TipFitAlerts.tsx b/labware-library/src/labware-creator/components/alerts/TipFitAlerts.tsx index 5108beaa6c4..a4fdfb1ec19 100644 --- a/labware-library/src/labware-creator/components/alerts/TipFitAlerts.tsx +++ b/labware-library/src/labware-creator/components/alerts/TipFitAlerts.tsx @@ -1,7 +1,7 @@ import * as React from 'react' -import { FormikTouched } from 'formik' -import { LabwareFields } from '../../fields' import { AlertItem } from '@opentrons/components' +import type { FormikTouched } from 'formik' +import type { LabwareFields } from '../../fields' export interface Props { values: LabwareFields diff --git a/labware-library/src/labware-creator/components/alerts/XYDimensionAlerts.tsx b/labware-library/src/labware-creator/components/alerts/XYDimensionAlerts.tsx index 4f8149d4dd5..5c9fcdd704f 100644 --- a/labware-library/src/labware-creator/components/alerts/XYDimensionAlerts.tsx +++ b/labware-library/src/labware-creator/components/alerts/XYDimensionAlerts.tsx @@ -1,14 +1,14 @@ import * as React from 'react' -import { FormikTouched } from 'formik' import { AlertItem } from '@opentrons/components' import { SUGGESTED_X, SUGGESTED_Y, LINK_CUSTOM_LABWARE_FORM, SUGGESTED_XY_RANGE, - LabwareFields, } from '../../fields' import { LinkOut } from '../LinkOut' +import type { FormikTouched } from 'formik' +import type { LabwareFields } from '../../fields' const xyMessage = (
diff --git a/labware-library/src/labware-creator/components/sections/Description.tsx b/labware-library/src/labware-creator/components/sections/Description.tsx index f6dcb71d4b1..7d5c7e12d84 100644 --- a/labware-library/src/labware-creator/components/sections/Description.tsx +++ b/labware-library/src/labware-creator/components/sections/Description.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { useFormikContext } from 'formik' -import { LabwareFields } from '../../fields' import { isEveryFieldHidden } from '../../utils' import { getIsOpentronsTubeRack } from '../../utils/getIsOpentronsTubeRack' import { FormAlerts } from '../alerts/FormAlerts' @@ -9,6 +8,7 @@ import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' import { Flex } from '@opentrons/components' +import type { LabwareFields } from '../../fields' interface Props { values: LabwareFields diff --git a/labware-library/src/labware-creator/components/sections/File.tsx b/labware-library/src/labware-creator/components/sections/File.tsx index bd2129a361a..e54b4c0111f 100644 --- a/labware-library/src/labware-creator/components/sections/File.tsx +++ b/labware-library/src/labware-creator/components/sections/File.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { useFormikContext } from 'formik' -import { LabwareFields } from '../../fields' import { maskLoadName } from '../../fieldMasks' import { getDefaultDisplayName, getDefaultLoadName } from '../../formSelectors' import { isEveryFieldHidden } from '../../utils' @@ -9,6 +8,7 @@ import { TextField } from '../TextField' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const Content = (props: { values: LabwareFields }): JSX.Element => (
diff --git a/labware-library/src/labware-creator/components/sections/Footprint.tsx b/labware-library/src/labware-creator/components/sections/Footprint.tsx index 8656738cec4..6564a20eed7 100644 --- a/labware-library/src/labware-creator/components/sections/Footprint.tsx +++ b/labware-library/src/labware-creator/components/sections/Footprint.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import { useFormikContext } from 'formik' import { makeMaskToDecimal } from '../../fieldMasks' -import { LabwareFields } from '../../fields' import { isEveryFieldHidden } from '../../utils' import { FormAlerts } from '../alerts/FormAlerts' import { XYDimensionAlerts } from '../alerts/XYDimensionAlerts' @@ -10,6 +9,7 @@ import { SectionBody } from './SectionBody' import footprintImage from '../../images/footprint.svg' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/Grid.tsx b/labware-library/src/labware-creator/components/sections/Grid.tsx index d764b018824..067297a2bad 100644 --- a/labware-library/src/labware-creator/components/sections/Grid.tsx +++ b/labware-library/src/labware-creator/components/sections/Grid.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { useFormikContext } from 'formik' import { maskToInteger } from '../../fieldMasks' import { isEveryFieldHidden, getLabwareName } from '../../utils' -import { LabwareFields, yesNoOptions } from '../../fields' +import { yesNoOptions } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' import { RadioField } from '../RadioField' @@ -10,6 +10,7 @@ import { GridImg } from '../diagrams' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' interface Props { values: LabwareFields diff --git a/labware-library/src/labware-creator/components/sections/GridOffset.tsx b/labware-library/src/labware-creator/components/sections/GridOffset.tsx index 855bb458374..8bc13c0bfae 100644 --- a/labware-library/src/labware-creator/components/sections/GridOffset.tsx +++ b/labware-library/src/labware-creator/components/sections/GridOffset.tsx @@ -2,13 +2,13 @@ import * as React from 'react' import { useFormikContext } from 'formik' import { makeMaskToDecimal } from '../../fieldMasks' import { isEveryFieldHidden, getLabwareName } from '../../utils' -import { LabwareFields } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' import { XYOffsetImg, XYOffsetHelperTextImg } from '../diagrams' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/Height.tsx b/labware-library/src/labware-creator/components/sections/Height.tsx index 62eb3194552..a56256a38ef 100644 --- a/labware-library/src/labware-creator/components/sections/Height.tsx +++ b/labware-library/src/labware-creator/components/sections/Height.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import { useFormikContext } from 'formik' import { isEveryFieldHidden } from '../../utils' import { makeMaskToDecimal } from '../../fieldMasks' -import { LabwareFields } from '../../fields' import { HeightAlerts } from '../alerts/HeightAlerts' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' @@ -11,6 +10,7 @@ import { HeightGuidingText } from '../HeightGuidingText' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/Preview.tsx b/labware-library/src/labware-creator/components/sections/Preview.tsx index 287c3368c75..f06a120fb92 100644 --- a/labware-library/src/labware-creator/components/sections/Preview.tsx +++ b/labware-library/src/labware-creator/components/sections/Preview.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { useFormikContext } from 'formik' -import { FormStatus, LabwareFields } from '../../fields' import { getLabwareName } from '../../utils' import { ConditionalLabwareRender } from '../ConditionalLabwareRender' import { FormLevelErrorAlerts } from '../FormLevelErrorAlerts' @@ -8,6 +7,7 @@ import { FormLevelErrorAlerts } from '../FormLevelErrorAlerts' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { FormStatus, LabwareFields } from '../../fields' export const PreviewInstructions = (props: { values: LabwareFields diff --git a/labware-library/src/labware-creator/components/sections/Volume.tsx b/labware-library/src/labware-creator/components/sections/Volume.tsx index 78980748bc9..c8ad8d4c34b 100644 --- a/labware-library/src/labware-creator/components/sections/Volume.tsx +++ b/labware-library/src/labware-creator/components/sections/Volume.tsx @@ -2,12 +2,12 @@ import * as React from 'react' import { useFormikContext } from 'formik' import { isEveryFieldHidden, getLabwareName } from '../../utils' import { makeMaskToDecimal } from '../../fieldMasks' -import { LabwareFields } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/WellBottomAndDepth.tsx b/labware-library/src/labware-creator/components/sections/WellBottomAndDepth.tsx index 0d2112acb27..d27e1f6a23f 100644 --- a/labware-library/src/labware-creator/components/sections/WellBottomAndDepth.tsx +++ b/labware-library/src/labware-creator/components/sections/WellBottomAndDepth.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import capitalize from 'lodash/capitalize' import { useFormikContext } from 'formik' import { makeMaskToDecimal } from '../../fieldMasks' -import { LabwareFields } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' import { RadioField } from '../RadioField' @@ -12,6 +11,7 @@ import { wellBottomShapeOptionsWithIcons } from '../optionsWithImages' import styles from '../../styles.module.css' import { getLabwareName } from '../../utils' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/WellShapeAndSides.tsx b/labware-library/src/labware-creator/components/sections/WellShapeAndSides.tsx index 5a4cd5590cf..23b8362cef3 100644 --- a/labware-library/src/labware-creator/components/sections/WellShapeAndSides.tsx +++ b/labware-library/src/labware-creator/components/sections/WellShapeAndSides.tsx @@ -3,7 +3,6 @@ import { useFormikContext } from 'formik' import capitalize from 'lodash/capitalize' import { makeMaskToDecimal } from '../../fieldMasks' import { displayAsTube, getLabwareName } from '../../utils' -import { LabwareFields } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { wellShapeOptionsWithIcons } from '../optionsWithImages' import { TextField } from '../TextField' @@ -12,6 +11,7 @@ import { WellXYImg } from '../diagrams' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/sections/WellSpacing.tsx b/labware-library/src/labware-creator/components/sections/WellSpacing.tsx index 05ed08b5ec3..05c473dd9e3 100644 --- a/labware-library/src/labware-creator/components/sections/WellSpacing.tsx +++ b/labware-library/src/labware-creator/components/sections/WellSpacing.tsx @@ -3,13 +3,13 @@ import { useFormikContext } from 'formik' import capitalize from 'lodash/capitalize' import { makeMaskToDecimal } from '../../fieldMasks' import { isEveryFieldHidden, getLabwareName } from '../../utils' -import { LabwareFields } from '../../fields' import { FormAlerts } from '../alerts/FormAlerts' import { TextField } from '../TextField' import { XYSpacingImg } from '../diagrams' import { SectionBody } from './SectionBody' import styles from '../../styles.module.css' +import type { LabwareFields } from '../../fields' const maskTo2Decimal = makeMaskToDecimal(2) diff --git a/labware-library/src/labware-creator/components/utils/wrapInFormik.tsx b/labware-library/src/labware-creator/components/utils/wrapInFormik.tsx index 2135236d709..4c8bf123ece 100644 --- a/labware-library/src/labware-creator/components/utils/wrapInFormik.tsx +++ b/labware-library/src/labware-creator/components/utils/wrapInFormik.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { Formik, FormikConfig } from 'formik' +import { Formik } from 'formik' +import type { FormikConfig } from 'formik' /** * Wraps a component in so it can be unit tested in isolation diff --git a/labware-library/src/labware-creator/fieldsToLabware.ts b/labware-library/src/labware-creator/fieldsToLabware.ts index 1c956ff7c0d..d9a718e0964 100644 --- a/labware-library/src/labware-creator/fieldsToLabware.ts +++ b/labware-library/src/labware-creator/fieldsToLabware.ts @@ -1,17 +1,16 @@ -import { - createRegularLabware, - LabwareWellGroup, - // createIrregularLabware, -} from '@opentrons/shared-data' +import { createRegularLabware } from '@opentrons/shared-data' + import { DISPLAY_VOLUME_UNITS } from './fields' +import { getIsCustomTubeRack } from './utils' +import type { ProcessedLabwareFields } from './fields' import type { + LabwareWellGroup, + // createIrregularLabware, LabwareDefinition2, LabwareDisplayCategory, LabwareWellProperties, } from '@opentrons/shared-data' -import type { ProcessedLabwareFields } from './fields' -import { getIsCustomTubeRack } from './utils' // TODO Ian 2019-07-29: move this constant to shared-data? // This is the distance from channel 1 to channel 8 of any 8-channel, not tied to name/model diff --git a/labware-library/src/labware-creator/formLevelValidation.ts b/labware-library/src/labware-creator/formLevelValidation.ts index 370f61fabc4..38243803cb6 100644 --- a/labware-library/src/labware-creator/formLevelValidation.ts +++ b/labware-library/src/labware-creator/formLevelValidation.ts @@ -1,8 +1,9 @@ -import { FormikErrors } from 'formik' import { labwareFormSchemaBaseObject } from './labwareFormSchema' -import type { LabwareFields } from './fields' import { getLabwareName } from './utils' +import type { LabwareFields } from './fields' +import type { FormikErrors } from 'formik' + export const FORM_LEVEL_ERRORS = 'FORM_LEVEL_ERRORS' export const WELLS_OUT_OF_BOUNDS_X = 'WELLS_OUT_OF_BOUNDS_X' export const WELLS_OUT_OF_BOUNDS_Y = 'WELLS_OUT_OF_BOUNDS_Y' diff --git a/labware-library/src/labware-creator/getDefaultedDef.ts b/labware-library/src/labware-creator/getDefaultedDef.ts index c8d5fd8ca4b..f3ab100a6ea 100644 --- a/labware-library/src/labware-creator/getDefaultedDef.ts +++ b/labware-library/src/labware-creator/getDefaultedDef.ts @@ -1,13 +1,14 @@ import { - LabwareDefinition2, SLOT_LENGTH_MM as DEFAULT_X_DIMENSION, SLOT_WIDTH_MM as DEFAULT_Y_DIMENSION, } from '@opentrons/shared-data' import pick from 'lodash/pick' -import { LabwareFields, ProcessedLabwareFields } from './fields' import { labwareFormSchema } from './labwareFormSchema' import { fieldsToLabware } from './fieldsToLabware' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { LabwareFields, ProcessedLabwareFields } from './fields' + // Fill arbitrary values in to any missing fields that aren't needed for this render, // eg some required definition data like well volume, height, and bottom shape don't affect the render. // diff --git a/labware-library/src/labware-creator/index.tsx b/labware-library/src/labware-creator/index.tsx index 648dec63a9f..8eed39b66da 100644 --- a/labware-library/src/labware-creator/index.tsx +++ b/labware-library/src/labware-creator/index.tsx @@ -11,19 +11,16 @@ import { aluminumBlockAutofills, aluminumBlockChildTypeOptions, aluminumBlockTypeOptions, - FormStatus, getDefaultFormState, getInitialStatus, tubeRackAutofills, tubeRackInsertOptions, } from './fields' + import { makeAutofillOnChange } from './utils/makeAutofillOnChange' import { labwareDefToFields } from './labwareDefToFields' import { labwareFormSchema } from './labwareFormSchema' -import { - formLevelValidation, - LabwareCreatorErrors, -} from './formLevelValidation' +import { formLevelValidation } from './formLevelValidation' import { fieldsToLabware } from './fieldsToLabware' import { LabwareCreator as LabwareCreatorComponent } from './components/LabwareCreator' import { Dropdown } from './components/Dropdown' @@ -48,17 +45,19 @@ import { Volume } from './components/sections/Volume' import { WellBottomAndDepth } from './components/sections/WellBottomAndDepth' import { WellShapeAndSides } from './components/sections/WellShapeAndSides' import { WellSpacing } from './components/sections/WellSpacing' +import { getDefaultedDef } from './getDefaultedDef' +import { getIsXYGeometryChanged } from './utils/getIsXYGeometryChanged' import styles from './styles.module.css' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { LabwareCreatorErrors } from './formLevelValidation' import type { + FormStatus, ImportError, LabwareFields, ProcessedLabwareFields, } from './fields' -import { getDefaultedDef } from './getDefaultedDef' -import { getIsXYGeometryChanged } from './utils/getIsXYGeometryChanged' const ajv = new Ajv() const validateLabwareSchema = ajv.compile(labwareSchema) diff --git a/labware-library/src/labware-creator/labwareFormSchema.ts b/labware-library/src/labware-creator/labwareFormSchema.ts index 7b0898a8144..24b16894188 100644 --- a/labware-library/src/labware-creator/labwareFormSchema.ts +++ b/labware-library/src/labware-creator/labwareFormSchema.ts @@ -18,9 +18,8 @@ import { MIN_Y_DIMENSION, REQUIRED_FIELD_ERROR, MUST_BE_A_NUMBER_ERROR, - LabwareFields, } from './fields' -import type { ProcessedLabwareFields } from './fields' +import type { LabwareFields, ProcessedLabwareFields } from './fields' // global overrides for Yup's default error messages. Yup.setLocale({ diff --git a/labware-library/src/labware-creator/utils/displayAsTube.ts b/labware-library/src/labware-creator/utils/displayAsTube.ts index 9a55bcc34ad..c4bdd18d7fe 100644 --- a/labware-library/src/labware-creator/utils/displayAsTube.ts +++ b/labware-library/src/labware-creator/utils/displayAsTube.ts @@ -1,4 +1,4 @@ -import { LabwareFields } from '../fields' +import type { LabwareFields } from '../fields' export const displayAsTube = (values: LabwareFields): boolean => values.labwareType === 'tubeRack' || diff --git a/labware-library/src/labware-creator/utils/getIsCustomTubeRack.ts b/labware-library/src/labware-creator/utils/getIsCustomTubeRack.ts index 4766cf8d457..8c11ca58557 100644 --- a/labware-library/src/labware-creator/utils/getIsCustomTubeRack.ts +++ b/labware-library/src/labware-creator/utils/getIsCustomTubeRack.ts @@ -1,4 +1,4 @@ -import { LabwareFields, ProcessedLabwareFields } from '../fields' +import type { LabwareFields, ProcessedLabwareFields } from '../fields' export const getIsCustomTubeRack = ( values: LabwareFields | ProcessedLabwareFields diff --git a/labware-library/src/labware-creator/utils/getIsOpentronsTubeRack.ts b/labware-library/src/labware-creator/utils/getIsOpentronsTubeRack.ts index 5c3590c195b..7894b198e57 100644 --- a/labware-library/src/labware-creator/utils/getIsOpentronsTubeRack.ts +++ b/labware-library/src/labware-creator/utils/getIsOpentronsTubeRack.ts @@ -1,4 +1,4 @@ -import { LabwareFields, ProcessedLabwareFields } from '../fields' +import type { LabwareFields, ProcessedLabwareFields } from '../fields' // NOTE: if tubeRackInsertLoadName is blank, // assume Opentrons tube rack (aka non-custom tube rack) diff --git a/labware-library/src/labware-creator/utils/getIsXYGeometryChanged.ts b/labware-library/src/labware-creator/utils/getIsXYGeometryChanged.ts index b6f0d0058f4..7f8c217c504 100644 --- a/labware-library/src/labware-creator/utils/getIsXYGeometryChanged.ts +++ b/labware-library/src/labware-creator/utils/getIsXYGeometryChanged.ts @@ -1,6 +1,6 @@ import difference from 'lodash/difference' -import { LabwareFields } from '../fields' import { DEFAULTED_DEF_PATCH } from '../getDefaultedDef' +import type { LabwareFields } from '../fields' export const getIsXYGeometryChanged = ( prevValues: LabwareFields, diff --git a/labware-library/src/labware-creator/utils/getLabwareName.ts b/labware-library/src/labware-creator/utils/getLabwareName.ts index 1805ef762ae..5b280fe7960 100644 --- a/labware-library/src/labware-creator/utils/getLabwareName.ts +++ b/labware-library/src/labware-creator/utils/getLabwareName.ts @@ -1,5 +1,5 @@ -import { LabwareFields } from '../fields' import { displayAsTube } from './displayAsTube' +import type { LabwareFields } from '../fields' export const getLabwareName = ( values: LabwareFields, diff --git a/labware-library/src/labware-creator/utils/isEveryFieldHidden.ts b/labware-library/src/labware-creator/utils/isEveryFieldHidden.ts index 1a97ae26023..8de287116b0 100644 --- a/labware-library/src/labware-creator/utils/isEveryFieldHidden.ts +++ b/labware-library/src/labware-creator/utils/isEveryFieldHidden.ts @@ -1,5 +1,5 @@ import { getIsHidden } from '../formSelectors' -import { LabwareFields } from '../fields' +import type { LabwareFields } from '../fields' export const isEveryFieldHidden = ( fieldList: Array, diff --git a/labware-library/src/labware-creator/utils/makeAutofillOnChange.ts b/labware-library/src/labware-creator/utils/makeAutofillOnChange.ts index a9dba75ce71..67fa07497df 100644 --- a/labware-library/src/labware-creator/utils/makeAutofillOnChange.ts +++ b/labware-library/src/labware-creator/utils/makeAutofillOnChange.ts @@ -1,6 +1,6 @@ import mapValues from 'lodash/mapValues' -import { LabwareFields } from '../fields' import type { FormikTouched } from 'formik' +import type { LabwareFields } from '../fields' interface MakeAutofillOnChangeArgs { name: keyof LabwareFields diff --git a/package.json b/package.json index ef12e013721..d440ede1742 100755 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "eslint-config-prettier": "^8.1.0", "eslint-config-standard": "^16.0.2", "eslint-config-standard-with-typescript": "^43.0.1", + "eslint-formatter-summary-chart": "0.3.0", "eslint-plugin-cypress": "^2.11.2", "eslint-plugin-import": "^2.29.1", "eslint-plugin-json": "^3.1.0", diff --git a/protocol-designer/src/analytics/actions.ts b/protocol-designer/src/analytics/actions.ts index eee86cd900a..a6fa4fc18cf 100644 --- a/protocol-designer/src/analytics/actions.ts +++ b/protocol-designer/src/analytics/actions.ts @@ -1,4 +1,5 @@ -import { setMixpanelTracking, AnalyticsEvent } from './mixpanel' +import { setMixpanelTracking } from './mixpanel' +import type { AnalyticsEvent } from './mixpanel' export interface SetOptIn { type: 'SET_OPT_IN' diff --git a/protocol-designer/src/analytics/index.ts b/protocol-designer/src/analytics/index.ts index 5f980d62427..4e0941b0228 100644 --- a/protocol-designer/src/analytics/index.ts +++ b/protocol-designer/src/analytics/index.ts @@ -1,5 +1,6 @@ import * as actions from './actions' import * as selectors from './selectors' -import { RootState, rootReducer } from './reducers' +import { rootReducer } from './reducers' +import type { RootState } from './reducers' export { actions, selectors, rootReducer } export type { RootState } diff --git a/protocol-designer/src/analytics/middleware.ts b/protocol-designer/src/analytics/middleware.ts index d089f988261..5fd88ab3fb3 100644 --- a/protocol-designer/src/analytics/middleware.ts +++ b/protocol-designer/src/analytics/middleware.ts @@ -5,15 +5,16 @@ import { getSavedStepForms, } from '../step-forms/selectors' import { getFileMetadata } from '../file-data/selectors' -import { trackEvent, AnalyticsEvent } from './mixpanel' +import { trackEvent } from './mixpanel' import { getHasOptedIn } from './selectors' import { flattenNestedProperties } from './utils/flattenNestedProperties' -import { Middleware } from 'redux' -import { BaseState } from '../types' -import { FormData, StepIdType, StepType } from '../form-types' -import { StepArgsAndErrors } from '../steplist' -import { SaveStepFormAction } from '../ui/steps/actions/thunks' -import { AnalyticsEventAction } from './actions' +import type { Middleware } from 'redux' +import type { BaseState } from '../types' +import type { FormData, StepIdType, StepType } from '../form-types' +import type { StepArgsAndErrors } from '../steplist' +import type { SaveStepFormAction } from '../ui/steps/actions/thunks' +import type { AnalyticsEventAction } from './actions' +import type { AnalyticsEvent } from './mixpanel' // Converts Redux actions to analytics events (read: Mixpanel events). // Returns null if there is no analytics event associated with the action, diff --git a/protocol-designer/src/analytics/mixpanel.ts b/protocol-designer/src/analytics/mixpanel.ts index 075c194318a..c0ed678959b 100644 --- a/protocol-designer/src/analytics/mixpanel.ts +++ b/protocol-designer/src/analytics/mixpanel.ts @@ -2,7 +2,7 @@ import mixpanel from 'mixpanel-browser' import { getIsProduction } from '../networking/opentronsWebApi' import { getHasOptedIn } from './selectors' -import { BaseState } from '../types' +import type { BaseState } from '../types' // TODO(IL, 2020-09-09): AnalyticsEvent type copied from app/src/analytics/types.js, consider merging export type AnalyticsEvent = diff --git a/protocol-designer/src/analytics/reducers.ts b/protocol-designer/src/analytics/reducers.ts index c0beb172283..6d4f71ebaa6 100644 --- a/protocol-designer/src/analytics/reducers.ts +++ b/protocol-designer/src/analytics/reducers.ts @@ -1,8 +1,9 @@ -import { combineReducers, Reducer } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { Action } from '../types' -import { SetOptIn } from './actions' -import { RehydratePersistedAction } from '../persist' +import type { Reducer } from 'redux' +import type { Action } from '../types' +import type { SetOptIn } from './actions' +import type { RehydratePersistedAction } from '../persist' type OptInState = boolean | null const optInInitialState = null // @ts-expect-error(sb, 2021-6-17): cannot use string literals as action type diff --git a/protocol-designer/src/analytics/selectors.ts b/protocol-designer/src/analytics/selectors.ts index 36268e7da5f..77a37bbfcb1 100644 --- a/protocol-designer/src/analytics/selectors.ts +++ b/protocol-designer/src/analytics/selectors.ts @@ -1,3 +1,3 @@ -import { BaseState } from '../types' +import type { BaseState } from '../types' export const getHasOptedIn = (state: BaseState): boolean | null => state.analytics.hasOptedIn diff --git a/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx b/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx index 76074bc8e3b..a2caf67761f 100644 --- a/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx +++ b/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx @@ -22,12 +22,12 @@ import { getLabwareFieldForPositioningField, } from '../StepEditForm/utils' import { FormColumn } from './FormColumn' -import { FieldPropsByName } from '../StepEditForm/types' -import { WellOrderOption } from '../../form-types' // TODO(IL, 2021-03-01): refactor these fragmented style rules (see #7402) import formStyles from '../forms/forms.module.css' import styles from '../StepEditForm/StepEditForm.module.css' import buttonStyles from '../StepEditForm/ButtonRow/styles.module.css' +import type { FieldPropsByName } from '../StepEditForm/types' +import type { WellOrderOption } from '../../form-types' interface BatchEditMixProps { batchEditFormHasChanges: boolean diff --git a/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx b/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx index d8d56226d63..b6f5617cc73 100644 --- a/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx +++ b/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx @@ -23,12 +23,12 @@ import { getLabwareFieldForPositioningField, } from '../StepEditForm/utils' import { FormColumn } from './FormColumn' -import { FieldPropsByName } from '../StepEditForm/types' -import { WellOrderOption } from '../../form-types' // TODO(IL, 2021-03-01): refactor these fragmented style rules (see #7402) import formStyles from '../forms/forms.module.css' import styles from '../StepEditForm/StepEditForm.module.css' import buttonStyles from '../StepEditForm/ButtonRow/styles.module.css' +import type { FieldPropsByName } from '../StepEditForm/types' +import type { WellOrderOption } from '../../form-types' const SourceDestBatchEditMoveLiquidFields = (props: { prefix: 'aspirate' | 'dispense' diff --git a/protocol-designer/src/components/BatchEditForm/index.tsx b/protocol-designer/src/components/BatchEditForm/index.tsx index 28b779d094f..71de584a43d 100644 --- a/protocol-designer/src/components/BatchEditForm/index.tsx +++ b/protocol-designer/src/components/BatchEditForm/index.tsx @@ -15,11 +15,12 @@ import { resetBatchEditFieldChanges, saveStepFormsMulti, } from '../../step-forms/actions' -import { maskField, StepFieldName } from '../../steplist/fieldLevel' +import { maskField } from '../../steplist/fieldLevel' import { BatchEditMoveLiquid } from './BatchEditMoveLiquid' import { BatchEditMix } from './BatchEditMix' -import { ThunkDispatch } from 'redux-thunk' -import { BaseState } from '../../types' +import type { StepFieldName } from '../../steplist/fieldLevel' +import type { ThunkDispatch } from 'redux-thunk' +import type { BaseState } from '../../types' export const BatchEditForm = (): JSX.Element => { const { t } = useTranslation('tooltip') diff --git a/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts b/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts index 57564e5537b..4838baf0305 100644 --- a/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts +++ b/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts @@ -1,14 +1,14 @@ import noop from 'lodash/noop' -import { - DisabledFields, - MultiselectFieldValues, -} from '../../ui/steps/selectors' import { getFieldDefaultTooltip, getFieldIndeterminateTooltip, } from '../StepEditForm/utils' -import { FieldPropsByName } from '../StepEditForm/types' -import { StepFieldName } from '../../form-types' +import type { + DisabledFields, + MultiselectFieldValues, +} from '../../ui/steps/selectors' +import type { FieldPropsByName } from '../StepEditForm/types' +import type { StepFieldName } from '../../form-types' export const makeBatchEditFieldProps = ( fieldValues: MultiselectFieldValues, disabledFields: DisabledFields, diff --git a/protocol-designer/src/components/ColorPicker/index.tsx b/protocol-designer/src/components/ColorPicker/index.tsx index 676eae59397..26d1cc50607 100644 --- a/protocol-designer/src/components/ColorPicker/index.tsx +++ b/protocol-designer/src/components/ColorPicker/index.tsx @@ -1,7 +1,8 @@ import * as React from 'react' import cx from 'classnames' -import { ColorResult, TwitterPicker } from 'react-color' +import { TwitterPicker } from 'react-color' import { DEFAULT_LIQUID_COLORS } from '@opentrons/shared-data' +import type { ColorResult } from 'react-color' import styles from './ColorPicker.module.css' diff --git a/protocol-designer/src/components/DeckSetup/LabwareOnDeck.tsx b/protocol-designer/src/components/DeckSetup/LabwareOnDeck.tsx index c84239e3b10..e36272d4ada 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOnDeck.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOnDeck.tsx @@ -6,8 +6,8 @@ import { selectors } from '../../labware-ingred/selectors' import * as wellContentsSelectors from '../../top-selectors/well-contents' import * as highlightSelectors from '../../top-selectors/substep-highlight' import * as tipContentsSelectors from '../../top-selectors/tip-contents' -import { LabwareOnDeck as LabwareOnDeckType } from '../../step-forms' import { wellFillFromWellContents } from '../labware/utils' +import type { LabwareOnDeck as LabwareOnDeckType } from '../../step-forms' interface LabwareOnDeckProps { className?: string diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx index 172b5b1129a..44da52c8787 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { useDispatch, useSelector } from 'react-redux' -import { DropTargetMonitor, useDrop } from 'react-dnd' +import { useDrop } from 'react-dnd' import cx from 'classnames' import noop from 'lodash/noop' import { Icon, RobotCoordsForeignDiv } from '@opentrons/components' @@ -15,10 +15,12 @@ import { openAddLabwareModal, } from '../../../labware-ingred/actions' import { selectors as labwareDefSelectors } from '../../../labware-defs' -import { START_TERMINAL_ITEM_ID, TerminalItemId } from '../../../steplist' +import { START_TERMINAL_ITEM_ID } from '../../../steplist' import { BlockedSlot } from './BlockedSlot' +import type { DropTargetMonitor } from 'react-dnd' import type { CoordinateTuple, Dimensions } from '@opentrons/shared-data' +import type { TerminalItemId } from '../../../steplist' import type { LabwareOnDeck } from '../../../step-forms' import styles from './LabwareOverlays.module.css' diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx index d75cefe5b71..3c3e577ecf0 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx @@ -4,7 +4,7 @@ import { useDispatch, useSelector } from 'react-redux' import cx from 'classnames' import { Icon } from '@opentrons/components' import { getLabwareDisplayName } from '@opentrons/shared-data' -import { DropTargetMonitor, useDrag, useDrop } from 'react-dnd' +import { useDrag, useDrop } from 'react-dnd' import { NameThisLabware } from './NameThisLabware' import { DND_TYPES } from '../../../constants' import { @@ -14,9 +14,10 @@ import { openIngredientSelector, } from '../../../labware-ingred/actions' import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' -import { ThunkDispatch } from '../../../types' -import { LabwareOnDeck } from '../../../step-forms' import styles from './LabwareOverlays.module.css' +import type { DropTargetMonitor } from 'react-dnd' +import type { ThunkDispatch } from '../../../types' +import type { LabwareOnDeck } from '../../../step-forms' interface Props { labwareOnDeck: LabwareOnDeck diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx index 34a990e3646..0fba71f5c7b 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx @@ -2,8 +2,7 @@ import * as React from 'react' import cx from 'classnames' import { RobotCoordsForeignDiv } from '@opentrons/components' -import { START_TERMINAL_ITEM_ID, TerminalItemId } from '../../../steplist' -import { LabwareOnDeck } from '../../../step-forms' +import { START_TERMINAL_ITEM_ID } from '../../../steplist' import { BlockedSlot } from './BlockedSlot' import { BrowseLabware } from './BrowseLabware' import { EditLabware } from './EditLabware' @@ -12,6 +11,8 @@ import { LabwareHighlight } from './LabwareHighlight' import styles from './LabwareOverlays.module.css' import type { CoordinateTuple } from '@opentrons/shared-data' +import type { TerminalItemId } from '../../../steplist' +import type { LabwareOnDeck } from '../../../step-forms' interface LabwareControlsProps { labwareOnDeck: LabwareOnDeck diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx index 7efdc0d2949..339e4af0176 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx @@ -3,7 +3,7 @@ import { useSelector } from 'react-redux' import { LabwareNameOverlay, truncateString } from '@opentrons/components' import { getLabwareDisplayName } from '@opentrons/shared-data' import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import { LabwareOnDeck } from '../../../step-forms' +import type { LabwareOnDeck } from '../../../step-forms' interface LabwareNameProps { labwareOnDeck: LabwareOnDeck } diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx index 2849506cefb..283c8712ace 100644 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx +++ b/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useSelector, useDispatch } from 'react-redux' import noop from 'lodash/noop' -import { useDrop, DropTargetMonitor, useDrag } from 'react-dnd' +import { useDrop, useDrag } from 'react-dnd' import cx from 'classnames' import { Icon, RobotCoordsForeignDiv } from '@opentrons/components' import { DND_TYPES } from '../../../constants' @@ -15,16 +15,18 @@ import { openAddLabwareModal, } from '../../../labware-ingred/actions' import { selectors as labwareDefSelectors } from '../../../labware-defs' -import { START_TERMINAL_ITEM_ID, TerminalItemId } from '../../../steplist' +import { START_TERMINAL_ITEM_ID } from '../../../steplist' import { BlockedSlot } from './BlockedSlot' import styles from './LabwareOverlays.module.css' +import type { DropTargetMonitor } from 'react-dnd' import type { CoordinateTuple, Dimensions, ModuleType, } from '@opentrons/shared-data' import type { LabwareOnDeck } from '../../../step-forms' +import type { TerminalItemId } from '../../../steplist' interface SlotControlsProps { slotPosition: CoordinateTuple | null diff --git a/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx b/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx index 5809ed12b6a..abb43d417f0 100644 --- a/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx +++ b/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx @@ -8,11 +8,13 @@ import { } from '@opentrons/components' import { getModuleDisplayName, + THERMOCYCLER_MODULE_V1, + THERMOCYCLER_MODULE_V2, +} from '@opentrons/shared-data' +import type { ModuleDefinition, ModuleModel, ModuleOrientation, - THERMOCYCLER_MODULE_V1, - THERMOCYCLER_MODULE_V2, } from '@opentrons/shared-data' interface Ot2ModuleTagProps { diff --git a/protocol-designer/src/components/DeckSetup/index.tsx b/protocol-designer/src/components/DeckSetup/index.tsx index 698a49f2456..a99886c9873 100644 --- a/protocol-designer/src/components/DeckSetup/index.tsx +++ b/protocol-designer/src/components/DeckSetup/index.tsx @@ -10,17 +10,11 @@ import { RobotCoordinateSpaceWithRef, SingleSlotFixture, StagingAreaFixture, - StagingAreaLocation, - TrashCutoutId, useOnClickOutside, WasteChuteFixture, WasteChuteStagingAreaFixture, } from '@opentrons/components' -import { - AdditionalEquipmentEntity, - MODULES_WITH_COLLISION_ISSUES, - ModuleTemporalProperties, -} from '@opentrons/step-generation' +import { MODULES_WITH_COLLISION_ISSUES } from '@opentrons/step-generation' import { FLEX_ROBOT_TYPE, getAddressableAreaFromSlotId, @@ -43,17 +37,10 @@ import { selectors as labwareDefSelectors } from '../../labware-defs' import { selectors as featureFlagSelectors } from '../../feature-flags' import { getStagingAreaAddressableAreas } from '../../utils' -import { - getSlotIdsBlockedBySpanning, - getSlotIsEmpty, - InitialDeckSetup, - LabwareOnDeck as LabwareOnDeckType, - ModuleOnDeck, -} from '../../step-forms' +import { getSlotIdsBlockedBySpanning, getSlotIsEmpty } from '../../step-forms' import * as labwareIngredActions from '../../labware-ingred/actions' import { getDeckSetupForActiveItem } from '../../top-selectors/labware-locations' import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { TerminalItemId } from '../../steplist' import { getSelectedTerminalItemId } from '../../ui/steps' import { getRobotType } from '../../file-data/selectors' import { BrowseLabwareModal } from '../labware' @@ -69,6 +56,11 @@ import { Ot2ModuleTag } from './Ot2ModuleTag' import { SlotLabels } from './SlotLabels' import { getHasGen1MultiChannelPipette, getSwapBlocked } from './utils' +import type { + AdditionalEquipmentEntity, + ModuleTemporalProperties, +} from '@opentrons/step-generation' +import type { StagingAreaLocation, TrashCutoutId } from '@opentrons/components' import type { AddressableAreaName, CutoutFixture, @@ -76,6 +68,12 @@ import type { DeckDefinition, RobotType, } from '@opentrons/shared-data' +import type { TerminalItemId } from '../../steplist' +import type { + InitialDeckSetup, + LabwareOnDeck as LabwareOnDeckType, + ModuleOnDeck, +} from '../../step-forms' import styles from './DeckSetup.module.css' diff --git a/protocol-designer/src/components/DeckSetup/utils.ts b/protocol-designer/src/components/DeckSetup/utils.ts index a2d7e6d4af5..c21607050a1 100644 --- a/protocol-designer/src/components/DeckSetup/utils.ts +++ b/protocol-designer/src/components/DeckSetup/utils.ts @@ -1,10 +1,11 @@ -import { GEN_ONE_MULTI_PIPETTES, ModuleType } from '@opentrons/shared-data' -import { LabwareDefByDefURI } from '../../labware-defs' -import { InitialDeckSetup, LabwareOnDeck } from '../../step-forms' +import { GEN_ONE_MULTI_PIPETTES } from '@opentrons/shared-data' import { getLabwareIsCompatible, getLabwareIsCustom, } from '../../utils/labwareModuleCompatibility' +import type { InitialDeckSetup, LabwareOnDeck } from '../../step-forms' +import type { ModuleType } from '@opentrons/shared-data' +import type { LabwareDefByDefURI } from '../../labware-defs' export interface SwapBlockedArgs { hoveredLabware?: LabwareOnDeck | null diff --git a/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx b/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx index 827af5a2aa8..8d0d38ec6cf 100644 --- a/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx +++ b/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx @@ -1,11 +1,7 @@ import * as React from 'react' import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' import { fireEvent, screen, cleanup } from '@testing-library/react' -import { - FLEX_ROBOT_TYPE, - LabwareDefinition2, - fixtureTiprack300ul, -} from '@opentrons/shared-data' +import { FLEX_ROBOT_TYPE, fixtureTiprack300ul } from '@opentrons/shared-data' import { renderWithProviders } from '../../../__testing-utils__' import { createFile, getRobotType } from '../../../file-data/selectors' import { @@ -24,6 +20,7 @@ import { useBlockingHint } from '../../Hints/useBlockingHint' import { getUnusedStagingAreas } from '../utils/getUnusedStagingAreas' import { getUnusedTrash } from '../utils/getUnusedTrash' import { FileSidebar } from '../FileSidebar' +import type { LabwareDefinition2 } from '@opentrons/shared-data' vi.mock('../../../step-forms/selectors') vi.mock('../../../load-file/selectors') diff --git a/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts b/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts index 7968ef72ba2..12e34c04e75 100644 --- a/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts +++ b/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts @@ -1,6 +1,7 @@ import some from 'lodash/some' import reduce from 'lodash/reduce' -import { FLEX_ROBOT_TYPE, RobotType } from '@opentrons/shared-data' +import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' +import type { RobotType } from '@opentrons/shared-data' import type { SavedStepFormState } from '../../../step-forms' /** Pull out all entities never specified by step forms. Assumes that all forms share the entityKey */ diff --git a/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts b/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts index 634e0e07f42..d88daf31145 100644 --- a/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts +++ b/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts @@ -1,10 +1,9 @@ import { - AddressableAreaName, - CreateCommand, FIXED_TRASH_ID, MOVABLE_TRASH_ADDRESSABLE_AREAS, WASTE_CHUTE_ADDRESSABLE_AREAS, } from '@opentrons/shared-data' +import type { AddressableAreaName, CreateCommand } from '@opentrons/shared-data' import type { InitialDeckSetup } from '../../../step-forms' interface UnusedTrash { diff --git a/protocol-designer/src/components/IngredientsList/index.tsx b/protocol-designer/src/components/IngredientsList/index.tsx index f690f823544..15d7f3e8f7d 100644 --- a/protocol-designer/src/components/IngredientsList/index.tsx +++ b/protocol-designer/src/components/IngredientsList/index.tsx @@ -2,7 +2,6 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' -import { SingleLabwareLiquidState } from '@opentrons/step-generation' import { IconButton, SidePanel, truncateString } from '@opentrons/components' import { sortWells } from '@opentrons/shared-data' import * as wellSelectionSelectors from '../../top-selectors/well-contents' @@ -13,6 +12,7 @@ import { swatchColors } from '../swatchColors' import { LabwareDetailsCard } from './LabwareDetailsCard/LabwareDetailsCard' import styles from './IngredientsList.module.css' +import type { SingleLabwareLiquidState } from '@opentrons/step-generation' import type { SelectedContainerId } from '../../labware-ingred/reducers' import type { LiquidGroup } from '../../labware-ingred/types' import type { ThunkDispatch } from '../../types' diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx index ed099273afc..29863585666 100644 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx +++ b/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx @@ -1,15 +1,16 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import cx from 'classnames' -import { Icon, IconName } from '@opentrons/components' +import { Icon } from '@opentrons/components' import { PDListItem } from '../lists' import styles from './styles.module.css' import { getLabwareDefURI, getLabwareDefIsStandard, getLabwareDisplayName, - LabwareDefinition2, } from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { IconName } from '@opentrons/components' interface Props { disabled?: boolean | null diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx index ed9b9156eae..ada2d060199 100644 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx +++ b/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx @@ -10,9 +10,9 @@ import { import { getLabwareDisplayName, getLabwareDefIsStandard, - LabwareDefinition2, } from '@opentrons/shared-data' import styles from './styles.module.css' +import type { LabwareDefinition2 } from '@opentrons/shared-data' interface Props { labwareDef?: LabwareDefinition2 | null diff --git a/protocol-designer/src/components/LiquidPlacementModal.tsx b/protocol-designer/src/components/LiquidPlacementModal.tsx index bd7e95a02aa..d138c1d1678 100644 --- a/protocol-designer/src/components/LiquidPlacementModal.tsx +++ b/protocol-designer/src/components/LiquidPlacementModal.tsx @@ -3,7 +3,7 @@ import * as React from 'react' import { useDispatch, useSelector } from 'react-redux' import cx from 'classnames' import isEmpty from 'lodash/isEmpty' -import { WellGroup, WELL_LABEL_OPTIONS } from '@opentrons/components' +import { WELL_LABEL_OPTIONS } from '@opentrons/components' import { wellFillFromWellContents, @@ -18,6 +18,7 @@ import { LiquidPlacementForm } from './LiquidPlacementForm/LiquidPlacementForm' import { WellSelectionInstructions } from './WellSelectionInstructions' import styles from './LiquidPlacementModal.module.css' +import type { WellGroup } from '@opentrons/components' export function LiquidPlacementModal(): JSX.Element | null { const [highlightedWells, setHighlightedWells] = React.useState< diff --git a/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx b/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx index 40b1865571b..c19e958382c 100644 --- a/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx +++ b/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import cx from 'classnames' import get from 'lodash/get' -import { StepFieldName } from '../../steplist/fieldLevel' import { MoreOptionsModal } from '../modals/MoreOptionsModal' import { MixForm, @@ -17,8 +16,9 @@ import { Alerts } from '../alerts/Alerts' import { ButtonRow } from './ButtonRow' import formStyles from '../forms/forms.module.css' import styles from './StepEditForm.module.css' -import { FormData, StepType } from '../../form-types' -import { FieldPropsByName, FocusHandlers, StepFormProps } from './types' +import type { StepFieldName } from '../../steplist/fieldLevel' +import type { FormData, StepType } from '../../form-types' +import type { FieldPropsByName, FocusHandlers, StepFormProps } from './types' type StepFormMap = { [K in StepType]?: React.ComponentType | null diff --git a/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx b/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx index 6637092deab..85d5f53e069 100644 --- a/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx @@ -1,10 +1,11 @@ import * as React from 'react' import { useSelector } from 'react-redux' -import { DropdownField, Options } from '@opentrons/components' +import { DropdownField } from '@opentrons/components' import cx from 'classnames' import { selectors as uiLabwareSelectors } from '../../../ui/labware' import styles from '../StepEditForm.module.css' -import { FieldProps } from '../types' +import type { Options } from '@opentrons/components' +import type { FieldProps } from '../types' type BlowoutLocationDropdownProps = FieldProps & { options: Options diff --git a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts index 1dca83bb557..bee62012254 100644 --- a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts +++ b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts @@ -1,6 +1,6 @@ import { getWellRatio } from '../../../../steplist/utils' -import { PathOption, StepType } from '../../../../form-types' -import { ChangeTipOptions } from '@opentrons/step-generation' +import type { PathOption, StepType } from '../../../../form-types' +import type { ChangeTipOptions } from '@opentrons/step-generation' export interface DisabledChangeTipArgs { aspirateWells?: string[] dispenseWells?: string[] diff --git a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx index 6a2a7e4da58..4c1767122d9 100644 --- a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx @@ -7,13 +7,11 @@ import { useHoverTooltip, TOOLTIP_FIXED, } from '@opentrons/components' -import { - getDisabledChangeTipOptions, - DisabledChangeTipArgs, -} from './getDisabledChangeTipOptions' -import { ChangeTipOptions } from '@opentrons/step-generation' -import { FieldProps } from '../../types' +import { getDisabledChangeTipOptions } from './getDisabledChangeTipOptions' import styles from '../../StepEditForm.module.css' +import type { DisabledChangeTipArgs } from './getDisabledChangeTipOptions' +import type { ChangeTipOptions } from '@opentrons/step-generation' +import type { FieldProps } from '../../types' const ALL_CHANGE_TIP_VALUES: ChangeTipOptions[] = [ 'always', diff --git a/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx b/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx index ad4150fc687..b102be6883e 100644 --- a/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx @@ -7,7 +7,7 @@ import { } from '@opentrons/components' import cx from 'classnames' import styles from '../StepEditForm.module.css' -import { FieldProps } from '../types' +import type { FieldProps } from '../types' import type { Placement } from '@opentrons/components' type CheckboxRowProps = FieldProps & { diff --git a/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx b/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx index 28675a00993..9b6c9f69f89 100644 --- a/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx @@ -10,8 +10,8 @@ import { useHoverTooltip, } from '@opentrons/components' import { getInitialDeckSetup } from '../../../step-forms/selectors' -import { StepFormDropdown } from './StepFormDropdownField' import styles from '../StepEditForm.module.css' +import type { StepFormDropdown } from './StepFormDropdownField' export function Configure96ChannelField( props: Omit, 'options'> diff --git a/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx b/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx index dd49dd71d9f..ec8dab06f2f 100644 --- a/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx @@ -4,8 +4,8 @@ import { TextField } from './TextField' import { CheckboxRowField } from './CheckboxRowField' import { TipPositionField } from './TipPositionField' import styles from '../StepEditForm.module.css' -import { FieldPropsByName } from '../types' -import { StepFieldName } from '../../../form-types' +import type { FieldPropsByName } from '../types' +import type { StepFieldName } from '../../../form-types' export interface DelayFieldProps { checkboxFieldName: StepFieldName // TODO(IL, 2021-03-03): strictly, could be DelayCheckboxFields! diff --git a/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx b/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx index 6f3a706d626..65d9f5d2178 100644 --- a/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx @@ -7,7 +7,6 @@ import { FormGroup, DeprecatedCheckboxField, DropdownField, - Options, Flex, DIRECTION_COLUMN, SPACING, @@ -20,6 +19,7 @@ import { TextField } from './TextField' import { FlowRateField } from './FlowRateField' import { BlowoutZOffsetField } from './BlowoutZOffsetField' +import type { Options } from '@opentrons/components' import type { PathOption, StepType } from '../../../form-types' import type { FieldProps, FieldPropsByName } from '../types' diff --git a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx index 0e558d6d77f..f4468cd28bc 100644 --- a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx @@ -1,10 +1,11 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' -import { DropdownField, DropdownOption, FormGroup } from '@opentrons/components' +import { DropdownField, FormGroup } from '@opentrons/components' import { getAdditionalEquipmentEntities } from '../../../../step-forms/selectors' -import { StepFormDropdown } from '../StepFormDropdownField' import styles from '../../StepEditForm.module.css' +import type { DropdownOption } from '@opentrons/components' +import type { StepFormDropdown } from '../StepFormDropdownField' export function DropTipField( props: Omit, 'options'> diff --git a/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx b/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx index 6105685332b..a86c9271fb0 100644 --- a/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx @@ -1,8 +1,8 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { CheckboxRowField, TextField } from './' -import { FieldPropsByName } from '../types' import styles from '../StepEditForm.module.css' +import type { FieldPropsByName } from '../types' export const MixFields = (props: { propsForFields: FieldPropsByName diff --git a/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx b/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx index 81bb79fd02e..09ab57f905f 100644 --- a/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx @@ -7,14 +7,11 @@ import { selectors as stepFormSelectors } from '../../../../step-forms' import SINGLE_IMAGE from '../../../../images/path_single_transfers.svg' import MULTI_DISPENSE_IMAGE from '../../../../images/path_multi_dispense.svg' import MULTI_ASPIRATE_IMAGE from '../../../../images/path_multi_aspirate.svg' -import { PathOption } from '../../../../form-types' -import { FieldProps } from '../../types' +import { getDisabledPathMap } from './getDisabledPathMap' import styles from '../../StepEditForm.module.css' -import { - DisabledPathMap, - getDisabledPathMap, - ValuesForPath, -} from './getDisabledPathMap' +import type { PathOption } from '../../../../form-types' +import type { FieldProps } from '../../types' +import type { DisabledPathMap, ValuesForPath } from './getDisabledPathMap' const PATH_ANIMATION_IMAGES = { single: new URL('../../../../images/path_single.gif', import.meta.url).href, diff --git a/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx b/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx index 254d56390c7..4917dbb2d7c 100644 --- a/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx @@ -13,12 +13,7 @@ import { TOOLTIP_TOP_END, } from '@opentrons/components' import * as steplistActions from '../../../steplist/actions' -import { - PROFILE_CYCLE, - ProfileStepItem, - ProfileItem, - ProfileCycleItem, -} from '../../../form-types' +import { PROFILE_CYCLE } from '../../../form-types' import { getProfileFieldErrors, maskProfileField, @@ -30,7 +25,12 @@ import { import { getDynamicFieldFocusHandlerId } from '../utils' import styles from '../StepEditForm.module.css' -import { FocusHandlers } from '../types' +import type { + ProfileStepItem, + ProfileItem, + ProfileCycleItem, +} from '../../../form-types' +import type { FocusHandlers } from '../types' export const showProfileFieldErrors = ({ fieldId, diff --git a/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx b/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx index fe8c8225f5c..c073fe7d486 100644 --- a/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { RadioGroup } from '@opentrons/components' -import { StepFieldName } from '../../../steplist/fieldLevel' -import { FieldProps } from '../types' +import type { StepFieldName } from '../../../steplist/fieldLevel' +import type { FieldProps } from '../types' interface RadioGroupFieldProps extends FieldProps { name: StepFieldName diff --git a/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx b/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx index a311c31c8d8..54c7bd2cff9 100644 --- a/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx @@ -1,8 +1,9 @@ import * as React from 'react' -import { DropdownField, Options } from '@opentrons/components' +import { DropdownField } from '@opentrons/components' import cx from 'classnames' -import { StepFieldName } from '../../../steplist/fieldLevel' import styles from '../StepEditForm.module.css' +import type { Options } from '@opentrons/components' +import type { StepFieldName } from '../../../steplist/fieldLevel' import type { FieldProps } from '../types' export interface StepFormDropdownProps extends FieldProps { diff --git a/protocol-designer/src/components/StepEditForm/fields/TextField.tsx b/protocol-designer/src/components/StepEditForm/fields/TextField.tsx index ba6677990bd..27c59058406 100644 --- a/protocol-designer/src/components/StepEditForm/fields/TextField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/TextField.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { InputField } from '@opentrons/components' -import { FieldProps } from '../types' +import type { FieldProps } from '../types' type TextFieldProps = FieldProps & { className?: string diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx index 5f60d13cd79..b8adeca17ba 100644 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx @@ -9,7 +9,6 @@ import { InputField, Tooltip, useHoverTooltip, - UseHoverTooltipTargetProps, } from '@opentrons/components' import { getWellsDepth, getWellDimension } from '@opentrons/shared-data' import { @@ -25,6 +24,7 @@ import type { TipYOffsetFields, TipZOffsetFields, } from '../../../../form-types' +import type { UseHoverTooltipTargetProps } from '@opentrons/components' import type { FieldPropsByName } from '../../types' import type { PositionSpecs } from './TipPositionModal' diff --git a/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx b/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx index 8438620459d..c4a303e0abc 100644 --- a/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx @@ -5,7 +5,7 @@ import { ToggleField } from '@opentrons/components' import styles from '../StepEditForm.module.css' -import { FieldProps } from '../types' +import type { FieldProps } from '../types' type ToggleRowProps = FieldProps & { offLabel?: string diff --git a/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx b/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx index ac3ba920ebe..da2f2caa6a6 100644 --- a/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx @@ -9,9 +9,9 @@ import { } from '@opentrons/components' import { getFieldDefaultTooltip } from '../utils' import { TextField } from './TextField' -import { StepType } from '../../../form-types' -import { FieldProps } from '../types' import styles from '../StepEditForm.module.css' +import type { StepType } from '../../../form-types' +import type { FieldProps } from '../types' type Props = FieldProps & { stepType: StepType diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx index 35619dfc361..8a9ba9b60be 100644 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx @@ -4,7 +4,7 @@ import cx from 'classnames' import WELLS_IMAGE from '../../../../images/well_order_wells.svg' import PATH_IMAGE from '../../../../images/well_order_path.svg' -import { WellOrderOption } from '../../../../form-types' +import type { WellOrderOption } from '../../../../form-types' import styles from './WellOrderInput.module.css' diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx index 0ce4bba7b42..13481bb0362 100644 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx @@ -15,8 +15,8 @@ import ZIG_ZAG_IMAGE from '../../../../images/zig_zag_icon.svg' import { WellOrderModal } from './WellOrderModal' import stepEditStyles from '../../StepEditForm.module.css' import styles from './WellOrderInput.module.css' -import { FieldProps } from '../../types' -import { WellOrderOption } from '../../../../form-types' +import type { FieldProps } from '../../types' +import type { WellOrderOption } from '../../../../form-types' export interface WellOrderFieldProps { className?: string | null diff --git a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx b/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx index 5a9c6424ff3..da6182ce613 100644 --- a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx @@ -7,14 +7,9 @@ import { Modal, OutlineButton, LabeledValue, - WellGroup, WELL_LABEL_OPTIONS, } from '@opentrons/components' -import { - sortWells, - LabwareDefinition2, - PipetteV2Specs, -} from '@opentrons/shared-data' +import { sortWells } from '@opentrons/shared-data' import { arrayToWellGroup } from '../../../../utils' import * as wellContentsSelectors from '../../../../top-selectors/well-contents' @@ -23,6 +18,8 @@ import { selectors as stepFormSelectors } from '../../../../step-forms' import { WellSelectionInstructions } from '../../../WellSelectionInstructions' import { SelectableLabware, wellFillFromWellContents } from '../../../labware' +import type { LabwareDefinition2, PipetteV2Specs } from '@opentrons/shared-data' +import type { WellGroup } from '@opentrons/components' import type { ContentsByWell } from '../../../../labware-ingred/types' import type { WellIngredientNames } from '../../../../steplist/types' import type { StepFieldName } from '../../../../form-types' diff --git a/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts b/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts index 6390828958d..251f44d3a9d 100644 --- a/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts +++ b/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts @@ -7,8 +7,8 @@ import { getFieldDefaultTooltip, getSingleSelectDisabledTooltip, } from '../utils' -import { StepFieldName, FormData } from '../../../form-types' -import { FieldProps, FieldPropsByName, FocusHandlers } from '../types' +import type { StepFieldName, FormData } from '../../../form-types' +import type { FieldProps, FieldPropsByName, FocusHandlers } from '../types' interface ShowFieldErrorParams { name: StepFieldName focusedField: StepFieldName | null diff --git a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx b/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx index b269519a5f0..0e44bca110d 100644 --- a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx @@ -3,9 +3,9 @@ import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import { FormGroup } from '@opentrons/components' import { getAdditionalEquipmentEntities } from '../../../../step-forms/selectors' -import { StepFieldName } from '../../../../steplist/fieldLevel' import { LabwareField, WellSelectionField } from '../../fields' import { AspDispSection } from '../AspDispSection' +import type { StepFieldName } from '../../../../steplist/fieldLevel' import type { FormData } from '../../../../form-types' import type { FieldPropsByName } from '../../types' diff --git a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/ProfileSettings.tsx b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/ProfileSettings.tsx index 2c7e69556b5..362860e404d 100644 --- a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/ProfileSettings.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/ProfileSettings.tsx @@ -6,7 +6,7 @@ import { TextField } from '../../fields' import styles from '../../StepEditForm.module.css' -import { FieldPropsByName } from '../../types' +import type { FieldPropsByName } from '../../types' interface Props { propsForFields: FieldPropsByName diff --git a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/StateFields.tsx b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/StateFields.tsx index 43f849282f4..c72d4d1cc81 100644 --- a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/StateFields.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/StateFields.tsx @@ -6,8 +6,8 @@ import { FormGroup } from '@opentrons/components' import { ToggleRowField, TextField } from '../../fields' import styles from '../../StepEditForm.module.css' -import { FieldPropsByName } from '../../types' -import { FormData } from '../../../../form-types' +import type { FieldPropsByName } from '../../types' +import type { FormData } from '../../../../form-types' interface Props { propsForFields: FieldPropsByName diff --git a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/index.tsx b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/index.tsx index 64d1d6e171b..60160df4dea 100644 --- a/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/index.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/index.tsx @@ -7,7 +7,7 @@ import { ProfileItemRows, RadioGroupField } from '../../fields' import { StateFields } from './StateFields' import { ProfileSettings } from './ProfileSettings' import styles from '../../StepEditForm.module.css' -import { StepFormProps } from '../../types' +import type { StepFormProps } from '../../types' export const ThermocyclerForm = (props: StepFormProps): JSX.Element => { const { focusHandlers, propsForFields, formData } = props diff --git a/protocol-designer/src/components/StepEditForm/forms/__tests__/HeaterShakerForm.test.tsx b/protocol-designer/src/components/StepEditForm/forms/__tests__/HeaterShakerForm.test.tsx index dbc5bb5a408..88da7ef9d06 100644 --- a/protocol-designer/src/components/StepEditForm/forms/__tests__/HeaterShakerForm.test.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/__tests__/HeaterShakerForm.test.tsx @@ -5,19 +5,19 @@ import { renderWithProviders } from '../../../../__testing-utils__' import { getHeaterShakerLabwareOptions } from '../../../../ui/modules/selectors' import { i18n } from '../../../../localization' import { HeaterShakerForm } from '../HeaterShakerForm' +import type * as ModulesSelectors from '../../../../ui/modules/selectors' +import type * as Fields from '../../fields' import type { DropdownOption } from '@opentrons/components' vi.mock('../../../../ui/modules/selectors', async importOriginal => { - const actualFields = await importOriginal< - typeof import('../../../../ui/modules/selectors') - >() + const actualFields = await importOriginal() return { ...actualFields, getHeaterShakerLabwareOptions: vi.fn(), } }) vi.mock('../../fields', async importOriginal => { - const actualFields = await importOriginal() + const actualFields = await importOriginal() return { ...actualFields, diff --git a/protocol-designer/src/components/StepEditForm/forms/__tests__/TemperatureForm.test.tsx b/protocol-designer/src/components/StepEditForm/forms/__tests__/TemperatureForm.test.tsx index a32894d3b84..9a84248c8a6 100644 --- a/protocol-designer/src/components/StepEditForm/forms/__tests__/TemperatureForm.test.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/__tests__/TemperatureForm.test.tsx @@ -8,11 +8,10 @@ import { getTemperatureModuleIds, } from '../../../../ui/modules/selectors' import { TemperatureForm } from '../TemperatureForm' +import type * as ModulesSelectors from '../../../../ui/modules/selectors' vi.mock('../../../../ui/modules/selectors', async importOriginal => { - const actualFields = await importOriginal< - typeof import('../../../../ui/modules/selectors') - >() + const actualFields = await importOriginal() return { ...actualFields, getTemperatureLabwareOptions: vi.fn(), diff --git a/protocol-designer/src/components/StepEditForm/types.ts b/protocol-designer/src/components/StepEditForm/types.ts index 573bf6e9edb..2441ed00e07 100644 --- a/protocol-designer/src/components/StepEditForm/types.ts +++ b/protocol-designer/src/components/StepEditForm/types.ts @@ -1,4 +1,4 @@ -import { FormData, StepFieldName } from '../../form-types' +import type { FormData, StepFieldName } from '../../form-types' export interface FocusHandlers { focusedField: StepFieldName | null dirtyFields: StepFieldName[] diff --git a/protocol-designer/src/components/StepEditForm/utils.ts b/protocol-designer/src/components/StepEditForm/utils.ts index d7df72c50c3..79afc0c80d6 100644 --- a/protocol-designer/src/components/StepEditForm/utils.ts +++ b/protocol-designer/src/components/StepEditForm/utils.ts @@ -5,19 +5,19 @@ import { SOURCE_WELL_BLOWOUT_DESTINATION, DEST_WELL_BLOWOUT_DESTINATION, } from '@opentrons/step-generation' -import { - PROFILE_CYCLE, +import { PROFILE_CYCLE } from '../../form-types' +import { getDefaultsForStepType } from '../../steplist/formLevel/getDefaultsForStepType' +import type { Options } from '@opentrons/components' +import type { ProfileFormError } from '../../steplist/formLevel/profileErrors' +import type { FormWarning } from '../../steplist/formLevel/warnings' +import type { StepFormErrors } from '../../steplist/types' +import type { FormData, ProfileItem, StepFieldName, StepType, PathOption, } from '../../form-types' -import { getDefaultsForStepType } from '../../steplist/formLevel/getDefaultsForStepType' -import { Options } from '@opentrons/components' -import { ProfileFormError } from '../../steplist/formLevel/profileErrors' -import { FormWarning } from '../../steplist/formLevel/warnings' -import type { StepFormErrors } from '../../steplist/types' export function getBlowoutLocationOptionsForForm(args: { stepType: StepType diff --git a/protocol-designer/src/components/StepSelectionBanner/StepSelectionBannerComponent.tsx b/protocol-designer/src/components/StepSelectionBanner/StepSelectionBannerComponent.tsx index 489f5c41a74..a7f319e86e9 100644 --- a/protocol-designer/src/components/StepSelectionBanner/StepSelectionBannerComponent.tsx +++ b/protocol-designer/src/components/StepSelectionBanner/StepSelectionBannerComponent.tsx @@ -25,7 +25,7 @@ import { SPACING_3, TYPOGRAPHY, } from '@opentrons/components' -import { CountPerStepType, StepType } from '../../form-types' +import type { CountPerStepType, StepType } from '../../form-types' interface StepPillProps { stepType: StepType diff --git a/protocol-designer/src/components/StepSelectionBanner/index.tsx b/protocol-designer/src/components/StepSelectionBanner/index.tsx index da378bde3d9..7f0d8ed207a 100644 --- a/protocol-designer/src/components/StepSelectionBanner/index.tsx +++ b/protocol-designer/src/components/StepSelectionBanner/index.tsx @@ -9,8 +9,8 @@ import { CLOSE_BATCH_EDIT_FORM, } from '../modals/ConfirmDeleteModal' import { StepSelectionBannerComponent } from './StepSelectionBannerComponent' -import { ThunkDispatch } from 'redux-thunk' -import { BaseState } from '../../types' +import type { ThunkDispatch } from 'redux-thunk' +import type { BaseState } from '../../types' const MemoizedStepSelectionBannerComponent = React.memo( StepSelectionBannerComponent diff --git a/protocol-designer/src/components/alerts/Alerts.tsx b/protocol-designer/src/components/alerts/Alerts.tsx index 1fc95e8162f..c593f5ab74a 100644 --- a/protocol-designer/src/components/alerts/Alerts.tsx +++ b/protocol-designer/src/components/alerts/Alerts.tsx @@ -9,7 +9,6 @@ import { selectors as dismissSelectors, } from '../../dismiss' import { selectors as stepFormSelectors } from '../../step-forms' -import { StepFieldName } from '../../steplist/fieldLevel' import { selectors as fileDataSelectors } from '../../file-data' import { PRESAVED_STEP_ID } from '../../steplist' import { @@ -22,6 +21,7 @@ import { ErrorContents } from './ErrorContents' import { WarningContents } from './WarningContents' import type { CommandCreatorError } from '@opentrons/step-generation' +import type { StepFieldName } from '../../steplist/fieldLevel' import type { ProfileItem } from '../../form-types' import type { ProfileFormError } from '../../steplist/formLevel/profileErrors' import type { AlertData, AlertType } from './types' diff --git a/protocol-designer/src/components/alerts/types.ts b/protocol-designer/src/components/alerts/types.ts index 2423ab77d29..981447c1987 100644 --- a/protocol-designer/src/components/alerts/types.ts +++ b/protocol-designer/src/components/alerts/types.ts @@ -1,4 +1,4 @@ -import { ReactNode } from 'react' +import type { ReactNode } from 'react' export type AlertLevel = 'timeline' | 'form' export type AlertType = 'error' | 'warning' // generic alert (warning or error) formatted for rendering diff --git a/protocol-designer/src/components/labware/BrowsableLabware.tsx b/protocol-designer/src/components/labware/BrowsableLabware.tsx index 3994cf943e8..ef57162b122 100644 --- a/protocol-designer/src/components/labware/BrowsableLabware.tsx +++ b/protocol-designer/src/components/labware/BrowsableLabware.tsx @@ -2,13 +2,14 @@ import * as React from 'react' import { useSelector } from 'react-redux' import reduce from 'lodash/reduce' +import { WELL_LABEL_OPTIONS } from '@opentrons/components' import { selectors } from '../../labware-ingred/selectors' import { SingleLabware } from './SingleLabware' import { wellFillFromWellContents } from './utils' -import { ContentsByWell } from '../../labware-ingred/types' -import { WellIngredientNames } from '../../steplist/types' -import { WellGroup, WELL_LABEL_OPTIONS } from '@opentrons/components' -import { LabwareDefinition2 } from '@opentrons/shared-data' +import type { WellGroup } from '@opentrons/components' +import type { ContentsByWell } from '../../labware-ingred/types' +import type { WellIngredientNames } from '../../steplist/types' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import { WellTooltip } from './WellTooltip' diff --git a/protocol-designer/src/components/labware/SelectableLabware.tsx b/protocol-designer/src/components/labware/SelectableLabware.tsx index ffe39799487..257fe013270 100644 --- a/protocol-designer/src/components/labware/SelectableLabware.tsx +++ b/protocol-designer/src/components/labware/SelectableLabware.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import reduce from 'lodash/reduce' -import { WellMouseEvent, WellGroup } from '@opentrons/components' import { COLUMN } from '@opentrons/shared-data' import { arrayToWellGroup, @@ -12,6 +11,7 @@ import { SingleLabware } from './SingleLabware' import { SelectionRect } from '../SelectionRect' import { WellTooltip } from './WellTooltip' +import type { WellMouseEvent, WellGroup } from '@opentrons/components' import type { ContentsByWell } from '../../labware-ingred/types' import type { WellIngredientNames } from '../../steplist/types' import type { GenericRect } from '../../collision-types' diff --git a/protocol-designer/src/components/labware/utils.ts b/protocol-designer/src/components/labware/utils.ts index 1c92ee47186..d20e788cfdf 100644 --- a/protocol-designer/src/components/labware/utils.ts +++ b/protocol-designer/src/components/labware/utils.ts @@ -1,9 +1,10 @@ import reduce from 'lodash/reduce' -import { AdditionalEquipmentEntities, AIR } from '@opentrons/step-generation' -import { WellFill } from '@opentrons/components' +import { AIR } from '@opentrons/step-generation' import { WASTE_CHUTE_CUTOUT } from '@opentrons/shared-data' import { swatchColors, MIXED_WELL_COLOR } from '../swatchColors' -import { ContentsByWell, WellContents } from '../../labware-ingred/types' +import type { AdditionalEquipmentEntities } from '@opentrons/step-generation' +import type { WellFill } from '@opentrons/components' +import type { ContentsByWell, WellContents } from '../../labware-ingred/types' const ingredIdsToColor = ( groupIds: string[], diff --git a/protocol-designer/src/components/lists/TitledStepList.tsx b/protocol-designer/src/components/lists/TitledStepList.tsx index dd719b05eb5..3d66d0c03cc 100644 --- a/protocol-designer/src/components/lists/TitledStepList.tsx +++ b/protocol-designer/src/components/lists/TitledStepList.tsx @@ -1,7 +1,8 @@ import * as React from 'react' import cx from 'classnames' -import { Icon, IconName } from '@opentrons/components' +import { Icon } from '@opentrons/components' import styles from './styles.module.css' +import type { IconName } from '@opentrons/components' export interface Props { /** text of title */ diff --git a/protocol-designer/src/components/modals/CreateFileWizard/InputField.tsx b/protocol-designer/src/components/modals/CreateFileWizard/InputField.tsx index 63a7903907e..ea6a50648eb 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/InputField.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/InputField.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { css } from 'styled-components' -import { UseFormRegister } from 'react-hook-form' import { ALIGN_CENTER, BORDERS, @@ -13,6 +12,7 @@ import { DISPLAY_INLINE_BLOCK, TEXT_ALIGN_RIGHT, } from '@opentrons/components' +import type { UseFormRegister } from 'react-hook-form' export interface InputFieldProps { register: UseFormRegister diff --git a/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx b/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx index cc0906c34b8..19c4f4e41f7 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx @@ -20,13 +20,11 @@ import { MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, getPipetteSpecsV2, - PipetteName, OT2_ROBOT_TYPE, THERMOCYCLER_MODULE_V2, HEATERSHAKER_MODULE_V1, MAGNETIC_BLOCK_V1, TEMPERATURE_MODULE_V2, - ModuleModel, getModuleDisplayName, getModuleType, FLEX_ROBOT_TYPE, @@ -50,6 +48,7 @@ import { import { EquipmentOption } from './EquipmentOption' import { HandleEnter } from './HandleEnter' +import type { ModuleModel, PipetteName } from '@opentrons/shared-data' import type { AdditionalEquipment, WizardTileProps } from './types' const MAX_TEMPERATURE_MODULES = 7 diff --git a/protocol-designer/src/components/modals/CreateFileWizard/PipetteTipsTile.tsx b/protocol-designer/src/components/modals/CreateFileWizard/PipetteTipsTile.tsx index 422c87e332e..9f77c5a0150 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/PipetteTipsTile.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/PipetteTipsTile.tsx @@ -7,7 +7,6 @@ import { Flex, Text, SPACING, - Mount, ALIGN_CENTER, PrimaryButton, JUSTIFY_SPACE_BETWEEN, @@ -32,6 +31,7 @@ import { GoBack } from './GoBack' import { EquipmentOption } from './EquipmentOption' import { HandleEnter } from './HandleEnter' +import type { Mount } from '@opentrons/components' import type { PipetteName } from '@opentrons/shared-data' import type { FormState, WizardTileProps } from './types' import type { ThunkDispatch } from 'redux-thunk' diff --git a/protocol-designer/src/components/modals/CreateFileWizard/PipetteTypeTile.tsx b/protocol-designer/src/components/modals/CreateFileWizard/PipetteTypeTile.tsx index b7d050e33f2..d833bb8f4b5 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/PipetteTypeTile.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/PipetteTypeTile.tsx @@ -6,14 +6,12 @@ import { Flex, Text, SPACING, - Mount, ALIGN_CENTER, PrimaryButton, JUSTIFY_SPACE_BETWEEN, InstrumentDiagram, } from '@opentrons/components' import { - PipetteName, OT2_PIPETTES, OT2_ROBOT_TYPE, OT3_PIPETTES, @@ -27,6 +25,8 @@ import { GoBack } from './GoBack' import { EquipmentOption } from './EquipmentOption' import { HandleEnter } from './HandleEnter' +import type { PipetteName } from '@opentrons/shared-data' +import type { Mount } from '@opentrons/components' import type { FormState, WizardTileProps } from './types' import type { UseFormReturn } from 'react-hook-form' diff --git a/protocol-designer/src/components/modals/CreateFileWizard/index.tsx b/protocol-designer/src/components/modals/CreateFileWizard/index.tsx index ecc37ea4b26..03cbdd8cf60 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/index.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/index.tsx @@ -10,9 +10,6 @@ import uniq from 'lodash/uniq' import * as Yup from 'yup' import { ModalShell } from '@opentrons/components' import { - ModuleType, - ModuleModel, - PipetteName, OT2_ROBOT_TYPE, TEMPERATURE_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, @@ -21,12 +18,7 @@ import { FLEX_ROBOT_TYPE, WASTE_CHUTE_CUTOUT, } from '@opentrons/shared-data' -import { - actions as stepFormActions, - FormPipettesByMount, - FormPipette, - PipetteOnDeck, -} from '../../../step-forms' +import { actions as stepFormActions } from '../../../step-forms' import { INITIAL_DECK_SETUP_STEP_ID } from '../../../constants' import { uuid } from '../../../utils' import { actions as navigationActions } from '../../../navigation' @@ -53,8 +45,18 @@ import { WizardHeader } from './WizardHeader' import { StagingAreaTile } from './StagingAreaTile' import { getTrashSlot } from './utils' +import type { + ModuleType, + ModuleModel, + PipetteName, +} from '@opentrons/shared-data' import type { NormalizedPipette } from '@opentrons/step-generation' import type { ThunkDispatch } from 'redux-thunk' +import type { + FormPipettesByMount, + FormPipette, + PipetteOnDeck, +} from '../../../step-forms' import type { BaseState } from '../../../types' import type { FormState } from './types' diff --git a/protocol-designer/src/components/modals/CreateFileWizard/types.ts b/protocol-designer/src/components/modals/CreateFileWizard/types.ts index 1bfa43bbe74..fd325457b57 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/types.ts +++ b/protocol-designer/src/components/modals/CreateFileWizard/types.ts @@ -1,4 +1,4 @@ -import { UseFormReturn } from 'react-hook-form' +import type { UseFormReturn } from 'react-hook-form' import type { FormPipettesByMount, FormModules } from '../../../step-forms' import type { NewProtocolFields } from '../../../load-file' diff --git a/protocol-designer/src/components/modals/EditModulesModal/EditMultipleModulesModal.tsx b/protocol-designer/src/components/modals/EditModulesModal/EditMultipleModulesModal.tsx index cc31c4eb071..02d5626eed2 100644 --- a/protocol-designer/src/components/modals/EditModulesModal/EditMultipleModulesModal.tsx +++ b/protocol-designer/src/components/modals/EditModulesModal/EditMultipleModulesModal.tsx @@ -18,7 +18,6 @@ import { DIRECTION_COLUMN, } from '@opentrons/components' import { - DeckConfiguration, SINGLE_RIGHT_SLOT_FIXTURE, TEMPERATURE_MODULE_CUTOUTS, TEMPERATURE_MODULE_TYPE, @@ -30,8 +29,12 @@ import { getLabwareOnSlot, getSlotIsEmpty } from '../../../step-forms' import { getInitialDeckSetup } from '../../../step-forms/selectors' import { getLabwareIsCompatible } from '../../../utils/labwareModuleCompatibility' import { PDAlert } from '../../alerts/PDAlert' +import type { + DeckConfiguration, + CutoutId, + ModuleType, +} from '@opentrons/shared-data' import type { Control, ControllerRenderProps } from 'react-hook-form' -import type { CutoutId, ModuleType } from '@opentrons/shared-data' import type { ModuleOnDeck } from '../../../step-forms' export interface EditMultipleModulesModalValues { diff --git a/protocol-designer/src/components/modals/EditModulesModal/ModelDropdown.tsx b/protocol-designer/src/components/modals/EditModulesModal/ModelDropdown.tsx index 72c55271792..5f6bc6b7938 100644 --- a/protocol-designer/src/components/modals/EditModulesModal/ModelDropdown.tsx +++ b/protocol-designer/src/components/modals/EditModulesModal/ModelDropdown.tsx @@ -1,7 +1,10 @@ import * as React from 'react' import { DropdownField } from '@opentrons/components' -import { ControllerFieldState, ControllerRenderProps } from 'react-hook-form' -import { EditModulesFormValues } from './index' +import type { + ControllerFieldState, + ControllerRenderProps, +} from 'react-hook-form' +import type { EditModulesFormValues } from './index' export interface ModelDropdownProps { field: ControllerRenderProps diff --git a/protocol-designer/src/components/modals/EditModulesModal/__tests__/EditMultipleModulesModal.test.tsx b/protocol-designer/src/components/modals/EditModulesModal/__tests__/EditMultipleModulesModal.test.tsx index fa01bd44ecf..df2bd73545f 100644 --- a/protocol-designer/src/components/modals/EditModulesModal/__tests__/EditMultipleModulesModal.test.tsx +++ b/protocol-designer/src/components/modals/EditModulesModal/__tests__/EditMultipleModulesModal.test.tsx @@ -5,13 +5,10 @@ import { renderWithProviders } from '../../../../__testing-utils__' import { i18n } from '../../../../localization' import { getInitialDeckSetup } from '../../../../step-forms/selectors' import { getLabwareIsCompatible } from '../../../../utils/labwareModuleCompatibility' -import { - getLabwareOnSlot, - getSlotIsEmpty, - ModuleOnDeck, -} from '../../../../step-forms' +import { getLabwareOnSlot, getSlotIsEmpty } from '../../../../step-forms' import { EditMultipleModulesModal } from '../EditMultipleModulesModal' import type * as Components from '@opentrons/components' +import type { ModuleOnDeck } from '../../../../step-forms' vi.mock('../../../../step-forms/selectors') vi.mock('../../../../utils/labwareModuleCompatibility') diff --git a/protocol-designer/src/components/modals/EditModulesModal/index.tsx b/protocol-designer/src/components/modals/EditModulesModal/index.tsx index 3b65879f996..4ff099e9f2a 100644 --- a/protocol-designer/src/components/modals/EditModulesModal/index.tsx +++ b/protocol-designer/src/components/modals/EditModulesModal/index.tsx @@ -2,13 +2,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useSelector, useDispatch } from 'react-redux' import some from 'lodash/some' -import { - Control, - Controller, - useController, - useForm, - UseFormWatch, -} from 'react-hook-form' +import { Controller, useController, useForm } from 'react-hook-form' import { FormGroup, @@ -35,12 +29,9 @@ import { THERMOCYCLER_MODULE_TYPE, MAGNETIC_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, - ModuleType, - ModuleModel, OT2_STANDARD_MODEL, THERMOCYCLER_MODULE_V1, TEMPERATURE_MODULE_V1, - RobotType, FLEX_ROBOT_TYPE, THERMOCYCLER_MODULE_V2, OT2_ROBOT_TYPE, @@ -70,6 +61,8 @@ import { ModelDropdown } from './ModelDropdown' import { SlotDropdown } from './SlotDropdown' import styles from './EditModules.module.css' +import type { ModuleType, ModuleModel, RobotType } from '@opentrons/shared-data' +import type { Control, UseFormWatch } from 'react-hook-form' import type { ModuleOnDeck } from '../../../step-forms/types' import type { ModelModuleInfo } from '../../EditModules' diff --git a/protocol-designer/src/components/modals/FilePipettesModal/ModuleFields.tsx b/protocol-designer/src/components/modals/FilePipettesModal/ModuleFields.tsx index 8eba4a7e553..6edfae58570 100644 --- a/protocol-designer/src/components/modals/FilePipettesModal/ModuleFields.tsx +++ b/protocol-designer/src/components/modals/FilePipettesModal/ModuleFields.tsx @@ -6,8 +6,6 @@ import { MAGNETIC_MODULE_TYPE, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, - ModuleModel, - ModuleType, OT2_ROBOT_TYPE, SPAN7_8_10_11_SLOT, TEMPERATURE_MODULE_TYPE, @@ -22,6 +20,7 @@ import { import { uuid } from '../../../utils' import { ModuleDiagram } from '../../modules' import { EquipmentOption } from '../CreateFileWizard/EquipmentOption' +import type { ModuleModel, ModuleType } from '@opentrons/shared-data' import type { WizardTileProps } from '../CreateFileWizard/types' export const DEFAULT_SLOT_MAP: { [moduleType in ModuleType]?: string } = { diff --git a/protocol-designer/src/components/modals/FilePipettesModal/PipetteDiagram.tsx b/protocol-designer/src/components/modals/FilePipettesModal/PipetteDiagram.tsx index 9b886213933..6268e1608aa 100644 --- a/protocol-designer/src/components/modals/FilePipettesModal/PipetteDiagram.tsx +++ b/protocol-designer/src/components/modals/FilePipettesModal/PipetteDiagram.tsx @@ -2,15 +2,12 @@ import * as React from 'react' import { useSelector } from 'react-redux' import { css } from 'styled-components' import cx from 'classnames' -import { - FLEX_ROBOT_TYPE, - getPipetteSpecsV2, - PipetteName, -} from '@opentrons/shared-data' +import { FLEX_ROBOT_TYPE, getPipetteSpecsV2 } from '@opentrons/shared-data' import { InstrumentDiagram } from '@opentrons/components' -import { FormPipette } from '../../../step-forms/types' import { getRobotType } from '../../../file-data/selectors' import styles from './FilePipettesModal.module.css' +import type { PipetteName } from '@opentrons/shared-data' +import type { FormPipette } from '../../../step-forms/types' interface Props { leftPipette?: FormPipette['pipetteName'] diff --git a/protocol-designer/src/components/modals/FilePipettesModal/PipetteFields.tsx b/protocol-designer/src/components/modals/FilePipettesModal/PipetteFields.tsx index 92593996844..2a6c503ef4a 100644 --- a/protocol-designer/src/components/modals/FilePipettesModal/PipetteFields.tsx +++ b/protocol-designer/src/components/modals/FilePipettesModal/PipetteFields.tsx @@ -1,30 +1,17 @@ import * as React from 'react' import { useDispatch, useSelector } from 'react-redux' -import { - Control, - FormState, - UseFormSetValue, - UseFormTrigger, -} from 'react-hook-form' import { useTranslation } from 'react-i18next' import isEmpty from 'lodash/isEmpty' -import { - FormGroup, - PipetteSelect, - OutlineButton, - Mount, -} from '@opentrons/components' +import { FormGroup, PipetteSelect, OutlineButton } from '@opentrons/components' import { getIncompatiblePipetteNames, OT2_PIPETTES, OT2_ROBOT_TYPE, OT3_PIPETTES, RIGHT, - RobotType, } from '@opentrons/shared-data' import { createCustomTiprackDef } from '../../../labware-defs/actions' import { getLabwareDefsByURI } from '../../../labware-defs/selectors' -import { FormPipettesByMount } from '../../../step-forms' import { getAllowAllTipracks } from '../../../feature-flags/selectors' import { getTiprackOptions } from '../utils' import { PipetteDiagram } from './PipetteDiagram' @@ -33,8 +20,16 @@ import { TiprackSelect } from './TiprackSelect' import styles from './FilePipettesModal.module.css' import formStyles from '../../forms/forms.module.css' -import type { PipetteName } from '@opentrons/shared-data' +import type { + Control, + FormState, + UseFormSetValue, + UseFormTrigger, +} from 'react-hook-form' import type { ThunkDispatch } from 'redux-thunk' +import type { Mount } from '@opentrons/components' +import type { RobotType, PipetteName } from '@opentrons/shared-data' +import type { FormPipettesByMount } from '../../../step-forms' import type { BaseState } from '../../../types' import type { FormState as TypeFormState } from './index' diff --git a/protocol-designer/src/components/modals/FilePipettesModal/index.tsx b/protocol-designer/src/components/modals/FilePipettesModal/index.tsx index 9b415280ef2..fd1ab4e6252 100644 --- a/protocol-designer/src/components/modals/FilePipettesModal/index.tsx +++ b/protocol-designer/src/components/modals/FilePipettesModal/index.tsx @@ -18,9 +18,6 @@ import { TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, - ModuleType, - ModuleModel, - PipetteName, OT2_ROBOT_TYPE, getPipetteSpecsV2, } from '@opentrons/shared-data' @@ -28,13 +25,8 @@ import { actions as stepFormActions, selectors as stepFormSelectors, getIsCrashablePipetteSelected, - PipetteOnDeck, - FormPipettesByMount, - FormModules, - FormPipette, } from '../../../step-forms' import { INITIAL_DECK_SETUP_STEP_ID } from '../../../constants' -import { NewProtocolFields } from '../../../load-file' import { getRobotType } from '../../../file-data/selectors' import { uuid } from '../../../utils' import { getLabwareEntities } from '../../../step-forms/selectors' @@ -50,10 +42,22 @@ import { adapter96ChannelDefUri } from '../CreateFileWizard' import { StepChangesConfirmModal } from '../EditPipettesModal/StepChangesConfirmModal' import { PipetteFields } from './PipetteFields' +import type { + ModuleType, + ModuleModel, + PipetteName, +} from '@opentrons/shared-data' import type { LabwareEntities, NormalizedPipette, } from '@opentrons/step-generation' +import type { NewProtocolFields } from '../../../load-file' +import type { + PipetteOnDeck, + FormPipettesByMount, + FormModules, + FormPipette, +} from '../../../step-forms' import type { DeckSlot, ThunkDispatch } from '../../../types' import type { StepIdType } from '../../../form-types' diff --git a/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx b/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx index 8f7af3bc68f..a58cea838cd 100644 --- a/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx +++ b/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { Trans, useTranslation } from 'react-i18next' import styles from './modalContents.module.css' -import { FileUploadMessage } from '../../../load-file' +import type { FileUploadMessage } from '../../../load-file' import type { ModalContents } from './types' const PD = 'Protocol Designer' diff --git a/protocol-designer/src/components/modals/FileUploadMessageModal/types.ts b/protocol-designer/src/components/modals/FileUploadMessageModal/types.ts index c190a630b37..5e6f0428f10 100644 --- a/protocol-designer/src/components/modals/FileUploadMessageModal/types.ts +++ b/protocol-designer/src/components/modals/FileUploadMessageModal/types.ts @@ -1,4 +1,4 @@ -import * as React from 'react' +import type * as React from 'react' export interface ModalContents { title: string body: React.ReactNode diff --git a/protocol-designer/src/components/modals/LabwareUploadMessageModal/LabwareUploadMessageModal.tsx b/protocol-designer/src/components/modals/LabwareUploadMessageModal/LabwareUploadMessageModal.tsx index 2cb36c1de03..2d789d07d67 100644 --- a/protocol-designer/src/components/modals/LabwareUploadMessageModal/LabwareUploadMessageModal.tsx +++ b/protocol-designer/src/components/modals/LabwareUploadMessageModal/LabwareUploadMessageModal.tsx @@ -3,13 +3,14 @@ import { useDispatch, useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import cx from 'classnames' -import { AlertModal, OutlineButton, ButtonProps } from '@opentrons/components' +import { AlertModal, OutlineButton } from '@opentrons/components' import modalStyles from '../modal.module.css' import { selectors as labwareDefSelectors, actions as labwareDefActions, - LabwareUploadMessage, } from '../../../labware-defs' +import type { ButtonProps } from '@opentrons/components' +import type { LabwareUploadMessage } from '../../../labware-defs' const MessageBody = (props: { message: LabwareUploadMessage diff --git a/protocol-designer/src/components/modals/MoreOptionsModal.tsx b/protocol-designer/src/components/modals/MoreOptionsModal.tsx index e6520cae19c..88b0cee0ff4 100644 --- a/protocol-designer/src/components/modals/MoreOptionsModal.tsx +++ b/protocol-designer/src/components/modals/MoreOptionsModal.tsx @@ -8,10 +8,10 @@ import { OutlineButton, } from '@opentrons/components' import { actions as steplistActions } from '../../steplist' -import { StepFieldName } from '../../steplist/fieldLevel' import modalStyles from './modal.module.css' import styles from './MoreOptionsModal.module.css' +import type { StepFieldName } from '../../steplist/fieldLevel' import type { FormData } from '../../form-types' import type { ChangeFormPayload } from '../../steplist/actions' diff --git a/protocol-designer/src/components/modals/utils.ts b/protocol-designer/src/components/modals/utils.ts index bc83d27bf1f..4b514281bf3 100644 --- a/protocol-designer/src/components/modals/utils.ts +++ b/protocol-designer/src/components/modals/utils.ts @@ -2,9 +2,9 @@ import { getLabwareDefURI, getLabwareDisplayName, getPipetteSpecsV2, - PipetteName, } from '@opentrons/shared-data' -import { LabwareDefByDefURI } from '../../labware-defs' +import type { PipetteName } from '@opentrons/shared-data' +import type { LabwareDefByDefURI } from '../../labware-defs' export interface TiprackOption { name: string diff --git a/protocol-designer/src/components/modules/EditModulesCard.tsx b/protocol-designer/src/components/modules/EditModulesCard.tsx index 27dcc233ede..f1507f01f14 100644 --- a/protocol-designer/src/components/modules/EditModulesCard.tsx +++ b/protocol-designer/src/components/modules/EditModulesCard.tsx @@ -5,15 +5,12 @@ import { MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, - ModuleType, - PipetteName, FLEX_ROBOT_TYPE, getPipetteSpecsV2, } from '@opentrons/shared-data' import { selectors as stepFormSelectors, getIsCrashablePipetteSelected, - ModulesForEditModulesCard, } from '../../step-forms' import { selectors as featureFlagSelectors } from '../../feature-flags' import { SUPPORTED_MODULE_TYPES } from '../../modules' @@ -31,6 +28,8 @@ import { StagingAreasRow } from './StagingAreasRow' import { MultipleModulesRow } from './MultipleModulesRow' import type { AdditionalEquipmentEntity } from '@opentrons/step-generation' +import type { ModuleType, PipetteName } from '@opentrons/shared-data' +import type { ModulesForEditModulesCard } from '../../step-forms' import styles from './styles.module.css' export interface Props { diff --git a/protocol-designer/src/components/modules/ModuleDiagram.tsx b/protocol-designer/src/components/modules/ModuleDiagram.tsx index ad28ea58430..297ed5ce29d 100644 --- a/protocol-designer/src/components/modules/ModuleDiagram.tsx +++ b/protocol-designer/src/components/modules/ModuleDiagram.tsx @@ -4,13 +4,11 @@ import { MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, - ModuleType, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_V1, - ModuleModel, HEATERSHAKER_MODULE_TYPE, HEATERSHAKER_MODULE_V1, THERMOCYCLER_MODULE_V2, @@ -26,6 +24,7 @@ import thermocycler from '../../images/modules/thermocycler.png' import thermocycler_gen2 from '../../images/modules/thermocycler_gen2.png' import heater_shaker_module_transparent from '../../images/modules/heater_shaker_module_transparent.png' import mag_block from '../../images/modules/mag_block.png' +import type { ModuleType, ModuleModel } from '@opentrons/shared-data' interface Props { type: ModuleType diff --git a/protocol-designer/src/components/modules/ModuleRow.tsx b/protocol-designer/src/components/modules/ModuleRow.tsx index db75941f6b1..68b8d81bacb 100644 --- a/protocol-designer/src/components/modules/ModuleRow.tsx +++ b/protocol-designer/src/components/modules/ModuleRow.tsx @@ -17,7 +17,7 @@ import { FLEX_ROBOT_TYPE, THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' -import { actions as stepFormActions, ModuleOnDeck } from '../../step-forms' +import { actions as stepFormActions } from '../../step-forms' import { SPAN7_8_10_11_SLOT, DEFAULT_MODEL_FOR_MODULE_TYPE, @@ -28,6 +28,7 @@ import { isModuleWithCollisionIssue } from './utils' import styles from './styles.module.css' import type { ModuleType, RobotType } from '@opentrons/shared-data' +import type { ModuleOnDeck } from '../../step-forms' interface Props { robotType?: RobotType diff --git a/protocol-designer/src/components/modules/StagingAreasModal.tsx b/protocol-designer/src/components/modules/StagingAreasModal.tsx index 9c397888a65..a1c14df70b6 100644 --- a/protocol-designer/src/components/modules/StagingAreasModal.tsx +++ b/protocol-designer/src/components/modules/StagingAreasModal.tsx @@ -1,13 +1,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useSelector, useDispatch } from 'react-redux' -import { - Control, - Controller, - ControllerRenderProps, - useForm, - useWatch, -} from 'react-hook-form' +import { Controller, useForm, useWatch } from 'react-hook-form' import { BUTTON_TYPE_SUBMIT, OutlineButton, @@ -24,8 +18,6 @@ import { DIRECTION_COLUMN, } from '@opentrons/components' import { - CutoutId, - DeckConfiguration, SINGLE_RIGHT_SLOT_FIXTURE, STAGING_AREA_CUTOUTS, STAGING_AREA_RIGHT_SLOT_FIXTURE, @@ -38,7 +30,9 @@ import { import { getSlotIsEmpty } from '../../step-forms' import { getInitialDeckSetup } from '../../step-forms/selectors' import { PDAlert } from '../alerts/PDAlert' +import type { Control, ControllerRenderProps } from 'react-hook-form' import type { AdditionalEquipmentEntity } from '@opentrons/step-generation' +import type { CutoutId, DeckConfiguration } from '@opentrons/shared-data' export interface StagingAreasValues { selectedSlots: string[] diff --git a/protocol-designer/src/components/modules/TrashModal.tsx b/protocol-designer/src/components/modules/TrashModal.tsx index dad0f799213..7a36b638071 100644 --- a/protocol-designer/src/components/modules/TrashModal.tsx +++ b/protocol-designer/src/components/modules/TrashModal.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' -import { Control, Controller, useForm, useWatch } from 'react-hook-form' +import { Controller, useForm, useWatch } from 'react-hook-form' import { useSelector, useDispatch } from 'react-redux' import { FormGroup, @@ -18,7 +18,6 @@ import { JUSTIFY_SPACE_BETWEEN, JUSTIFY_FLEX_END, JUSTIFY_END, - DropdownOption, } from '@opentrons/components' import { FLEX_ROBOT_TYPE, @@ -33,6 +32,8 @@ import { getSlotIsEmpty } from '../../step-forms' import { getInitialDeckSetup } from '../../step-forms/selectors' import { SlotDropdown } from '../modals/EditModulesModal/SlotDropdown' import { PDAlert } from '../alerts/PDAlert' +import type { Control } from 'react-hook-form' +import type { DropdownOption } from '@opentrons/components' export interface TrashValues { selectedSlot: string @@ -85,7 +86,7 @@ const TrashModalComponent = (props: TrashModalComponentProps): JSX.Element => { const selectedSlot = useWatch({ control, name: 'selectedSlot', - defaultValue: defaultValue, + defaultValue, }) const hasTrashAlreadyInSlot = Object.values( initialDeckSetup.additionalEquipmentOnDeck diff --git a/protocol-designer/src/components/modules/utils.ts b/protocol-designer/src/components/modules/utils.ts index 06491f2cadb..cd4a751dcf9 100644 --- a/protocol-designer/src/components/modules/utils.ts +++ b/protocol-designer/src/components/modules/utils.ts @@ -1,5 +1,5 @@ import { MODULES_WITH_COLLISION_ISSUES } from '@opentrons/step-generation' -import { ModuleModel } from '@opentrons/shared-data' +import type { ModuleModel } from '@opentrons/shared-data' export function isModuleWithCollisionIssue(model: ModuleModel): boolean { return MODULES_WITH_COLLISION_ISSUES.includes(model) } diff --git a/protocol-designer/src/components/steplist/DraggableStepItems.tsx b/protocol-designer/src/components/steplist/DraggableStepItems.tsx index 0eadb1ce5a7..24067895485 100644 --- a/protocol-designer/src/components/steplist/DraggableStepItems.tsx +++ b/protocol-designer/src/components/steplist/DraggableStepItems.tsx @@ -1,23 +1,18 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' -import { - DragLayerMonitor, - useDrop, - useDrag, - DropTargetOptions, -} from 'react-dnd' +import { useDrop, useDrag } from 'react-dnd' import { DND_TYPES } from '../../constants' import { selectors as stepFormSelectors } from '../../step-forms' -import { stepIconsByType, StepIdType } from '../../form-types' -import { - ConnectedStepItem, - ConnectedStepItemProps, -} from '../../containers/ConnectedStepItem' +import { stepIconsByType } from '../../form-types' +import { ConnectedStepItem } from '../../containers/ConnectedStepItem' import { PDTitledList } from '../lists' import { ContextMenu } from './ContextMenu' import styles from './StepItem.module.css' +import type { DragLayerMonitor, DropTargetOptions } from 'react-dnd' +import type { StepIdType } from '../../form-types' +import type { ConnectedStepItemProps } from '../../containers/ConnectedStepItem' interface DragDropStepItemProps extends ConnectedStepItemProps { stepId: StepIdType diff --git a/protocol-designer/src/components/steplist/IngredPill.tsx b/protocol-designer/src/components/steplist/IngredPill.tsx index 378d3c18cdc..e9c4c0a7132 100644 --- a/protocol-designer/src/components/steplist/IngredPill.tsx +++ b/protocol-designer/src/components/steplist/IngredPill.tsx @@ -1,11 +1,15 @@ import * as React from 'react' import { useSelector } from 'react-redux' -import { Pill, UseHoverTooltipTargetProps } from '@opentrons/components' +import { Pill } from '@opentrons/components' import { selectors } from '../../labware-ingred/selectors' import { AIR } from '@opentrons/step-generation' import { swatchColors, MIXED_WELL_COLOR } from '../swatchColors' -import { WellIngredientVolumeData, WellIngredientNames } from '../../steplist' import styles from './StepItem.module.css' +import type { UseHoverTooltipTargetProps } from '@opentrons/components' +import type { + WellIngredientVolumeData, + WellIngredientNames, +} from '../../steplist' interface Props { ingreds: WellIngredientVolumeData diff --git a/protocol-designer/src/components/steplist/ModuleStepItems.tsx b/protocol-designer/src/components/steplist/ModuleStepItems.tsx index 548caf2964d..048e798cb90 100644 --- a/protocol-designer/src/components/steplist/ModuleStepItems.tsx +++ b/protocol-designer/src/components/steplist/ModuleStepItems.tsx @@ -1,17 +1,12 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import cx from 'classnames' -import { - Tooltip, - useHoverTooltip, - TOOLTIP_FIXED, - UseHoverTooltipTargetProps, -} from '@opentrons/components' +import { Tooltip, useHoverTooltip, TOOLTIP_FIXED } from '@opentrons/components' import { PDListItem } from '../lists' import { LabwareTooltipContents } from './LabwareTooltipContents' -import type { ModuleType } from '@opentrons/shared-data' - import styles from './StepItem.module.css' +import type { UseHoverTooltipTargetProps } from '@opentrons/components' +import type { ModuleType } from '@opentrons/shared-data' export interface ModuleStepItemRowProps { label?: string | null diff --git a/protocol-designer/src/components/steplist/MultiSelectToolbar/index.tsx b/protocol-designer/src/components/steplist/MultiSelectToolbar/index.tsx index 8083949862a..90985278a80 100644 --- a/protocol-designer/src/components/steplist/MultiSelectToolbar/index.tsx +++ b/protocol-designer/src/components/steplist/MultiSelectToolbar/index.tsx @@ -16,7 +16,6 @@ import { C_DARK_GRAY, BORDER_SOLID_MEDIUM, POSITION_STICKY, - IconName, SPACING, } from '@opentrons/components' import { selectors as stepFormSelectors } from '../../../step-forms' @@ -31,8 +30,9 @@ import { ConfirmDeleteModal, DELETE_MULTIPLE_STEP_FORMS, } from '../../modals/ConfirmDeleteModal' -import { ThunkDispatch } from 'redux-thunk' -import { BaseState } from '../../../types' +import type { IconName } from '@opentrons/components' +import type { ThunkDispatch } from 'redux-thunk' +import type { BaseState } from '../../../types' export interface ClickableIconProps { id?: string diff --git a/protocol-designer/src/components/steplist/PauseStepItems.tsx b/protocol-designer/src/components/steplist/PauseStepItems.tsx index d0b18509662..c899c357c2e 100644 --- a/protocol-designer/src/components/steplist/PauseStepItems.tsx +++ b/protocol-designer/src/components/steplist/PauseStepItems.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' -import { PauseArgs } from '@opentrons/step-generation' import styles from './StepItem.module.css' +import type { PauseArgs } from '@opentrons/step-generation' interface Props { pauseArgs: PauseArgs } diff --git a/protocol-designer/src/components/steplist/SourceDestSubstep.tsx b/protocol-designer/src/components/steplist/SourceDestSubstep.tsx index b9c25149b28..46b0e9348cb 100644 --- a/protocol-designer/src/components/steplist/SourceDestSubstep.tsx +++ b/protocol-designer/src/components/steplist/SourceDestSubstep.tsx @@ -5,7 +5,7 @@ import { MultiChannelSubstep } from './MultiChannelSubstep' import { SubstepRow } from './SubstepRow' import styles from './StepItem.module.css' -import { +import type { SourceDestSubstepItem, SubstepIdentifier, WellIngredientNames, diff --git a/protocol-designer/src/components/steplist/StepItem.tsx b/protocol-designer/src/components/steplist/StepItem.tsx index 0fbb338cc0f..aca7ea6d79a 100644 --- a/protocol-designer/src/components/steplist/StepItem.tsx +++ b/protocol-designer/src/components/steplist/StepItem.tsx @@ -9,40 +9,39 @@ import { TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' -import { AtomicProfileStep } from '@opentrons/shared-data/protocol/types/schemaV4' import { THERMOCYCLER_PROFILE, THERMOCYCLER_STATE } from '../../constants' -import { - stepIconsByType, - PROFILE_CYCLE, - FormData, - StepType, - ProfileCycleItem, - ProfileStepItem, -} from '../../form-types' +import { stepIconsByType, PROFILE_CYCLE } from '../../form-types' import { makeLidLabelText, makeSpeedText, makeTemperatureText, makeTimerText, } from '../../utils' -import { InitialDeckSetup } from '../../step-forms' import { PDListItem, TitledStepList } from '../lists' import { TitledListNotes } from '../TitledListNotes' import { AspirateDispenseHeader } from './AspirateDispenseHeader' import { MixHeader } from './MixHeader' import { ModuleStepItems, ModuleStepItemRow } from './ModuleStepItems' import { PauseStepItems } from './PauseStepItems' +import { MoveLabwareHeader } from './MoveLabwareHeader' import { SourceDestSubstep } from './SourceDestSubstep' import styles from './StepItem.module.css' -import { +import type { AdditionalEquipmentEntities } from '@opentrons/step-generation' +import type { AtomicProfileStep } from '@opentrons/shared-data/protocol/types/schemaV4' +import type { + FormData, + StepType, + ProfileCycleItem, + ProfileStepItem, +} from '../../form-types' +import type { SubstepIdentifier, SubstepItemData, ThermocyclerProfileSubstepItem, WellIngredientNames, } from '../../steplist/types' -import { MoveLabwareHeader } from './MoveLabwareHeader' -import type { AdditionalEquipmentEntities } from '@opentrons/step-generation' +import type { InitialDeckSetup } from '../../step-forms' export interface StepItemProps { description?: string | null diff --git a/protocol-designer/src/components/steplist/SubstepRow.tsx b/protocol-designer/src/components/steplist/SubstepRow.tsx index 9aafe7c4482..937e80a4b2a 100644 --- a/protocol-designer/src/components/steplist/SubstepRow.tsx +++ b/protocol-designer/src/components/steplist/SubstepRow.tsx @@ -10,14 +10,14 @@ import { IngredPill } from './IngredPill' import { PDListItem } from '../lists' import { swatchColors } from '../swatchColors' import { formatVolume, formatPercentage } from './utils' -import { LocationLiquidState } from '@opentrons/step-generation' -import { +import styles from './StepItem.module.css' +import type { LocationLiquidState } from '@opentrons/step-generation' +import type { SubstepIdentifier, SubstepWellData, WellIngredientVolumeData, WellIngredientNames, } from '../../steplist/types' -import styles from './StepItem.module.css' interface SubstepRowProps { volume: number | string | null | undefined diff --git a/protocol-designer/src/components/steplist/TerminalItem/TerminalItemLink.tsx b/protocol-designer/src/components/steplist/TerminalItem/TerminalItemLink.tsx index 325f55d794b..e0486f6a87c 100644 --- a/protocol-designer/src/components/steplist/TerminalItem/TerminalItemLink.tsx +++ b/protocol-designer/src/components/steplist/TerminalItem/TerminalItemLink.tsx @@ -2,8 +2,8 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import { actions as stepsActions } from '../../../ui/steps' -import { TerminalItemId } from '../../../steplist' import styles from './styles.module.css' +import type { TerminalItemId } from '../../../steplist' interface Props { terminalId: TerminalItemId diff --git a/protocol-designer/src/components/steplist/TerminalItem/index.tsx b/protocol-designer/src/components/steplist/TerminalItem/index.tsx index a66cb4d5662..55887d89094 100644 --- a/protocol-designer/src/components/steplist/TerminalItem/index.tsx +++ b/protocol-designer/src/components/steplist/TerminalItem/index.tsx @@ -6,8 +6,6 @@ import { getSelectedTerminalItemId, getIsMultiSelectMode, actions as stepsActions, - SelectTerminalItemAction, - HoverOnTerminalItemAction, } from '../../../ui/steps' import { getCurrentFormIsPresaved, @@ -19,7 +17,11 @@ import { CLOSE_UNSAVED_STEP_FORM, } from '../../modals/ConfirmDeleteModal' import { PDTitledList } from '../../lists' -import { TerminalItemId } from '../../../steplist' +import type { + SelectTerminalItemAction, + HoverOnTerminalItemAction, +} from '../../../ui/steps' +import type { TerminalItemId } from '../../../steplist' export { TerminalItemLink } from './TerminalItemLink' diff --git a/protocol-designer/src/components/steplist/index.ts b/protocol-designer/src/components/steplist/index.ts index f6ca974415d..fb71246ce12 100644 --- a/protocol-designer/src/components/steplist/index.ts +++ b/protocol-designer/src/components/steplist/index.ts @@ -1,4 +1,6 @@ -import { StepItem, StepItemProps } from './StepItem' -import { StepList, StepListProps } from './StepList' +import { StepItem } from './StepItem' +import { StepList } from './StepList' +import type { StepListProps } from './StepList' +import type { StepItemProps } from './StepItem' export { StepItem, StepList } export type { StepListProps, StepItemProps } diff --git a/protocol-designer/src/configureStore.ts b/protocol-designer/src/configureStore.ts index 7e5d098ea6b..6f72fd18782 100644 --- a/protocol-designer/src/configureStore.ts +++ b/protocol-designer/src/configureStore.ts @@ -1,18 +1,9 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -import { - createStore, - combineReducers, - applyMiddleware, - compose, - Store, - Reducer, -} from 'redux' +import { createStore, combineReducers, applyMiddleware, compose } from 'redux' import thunk from 'redux-thunk' import { trackEventMiddleware } from './analytics/middleware' import { makePersistSubscriber, rehydratePersistedAction } from './persist' import { fileUploadMessage } from './load-file/actions' import { makeTimelineMiddleware } from './timelineMiddleware/makeTimelineMiddleware' -import { BaseState, Action } from './types' import { rootReducer as analyticsReducer } from './analytics' import { rootReducer as dismissReducer } from './dismiss' import { rootReducer as featureFlagsReducer } from './feature-flags' @@ -24,6 +15,8 @@ import { rootReducer as stepFormsReducer } from './step-forms' import { rootReducer as tutorialReducer } from './tutorial' import { rootReducer as uiReducer } from './ui' import { rootReducer as wellSelectionReducer } from './well-selection/reducers' +import type { Store, Reducer } from 'redux' +import type { BaseState, Action } from './types' const timelineMiddleware = makeTimelineMiddleware() diff --git a/protocol-designer/src/constants.ts b/protocol-designer/src/constants.ts index 14308884b81..6c0c2db3816 100644 --- a/protocol-designer/src/constants.ts +++ b/protocol-designer/src/constants.ts @@ -10,14 +10,17 @@ import { TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_V1, HEATERSHAKER_MODULE_V1, - LabwareDefinition2, - DeckSlot as DeckDefSlot, THERMOCYCLER_MODULE_V2, MAGNETIC_BLOCK_TYPE, MAGNETIC_BLOCK_V1, } from '@opentrons/shared-data' +import type { + LabwareDefinition2, + DeckSlot as DeckDefSlot, + ModuleType, + ModuleModel, +} from '@opentrons/shared-data' import type { DeckSlot, WellVolumes } from './types' -import type { ModuleType, ModuleModel } from '@opentrons/shared-data' export const getMaxVolumes = (def: LabwareDefinition2): WellVolumes => mapValues(def.wells, well => well.totalLiquidVolume) diff --git a/protocol-designer/src/containers/ConnectedNav.tsx b/protocol-designer/src/containers/ConnectedNav.tsx index 994aa9441b7..fcc7d2c3311 100644 --- a/protocol-designer/src/containers/ConnectedNav.tsx +++ b/protocol-designer/src/containers/ConnectedNav.tsx @@ -3,8 +3,9 @@ import { useDispatch, useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { KNOWLEDGEBASE_ROOT_URL } from '../components/KnowledgeBaseLink' import { NavTab, TabbedNavBar, OutsideLinkTab } from '@opentrons/components' -import { Page, actions, selectors } from '../navigation' import { selectors as fileSelectors } from '../file-data' +import { actions, selectors } from '../navigation' +import type { Page } from '../navigation' export function ConnectedNav(): JSX.Element { const { t } = useTranslation('nav') diff --git a/protocol-designer/src/containers/ConnectedStepItem.tsx b/protocol-designer/src/containers/ConnectedStepItem.tsx index a3ebcb05f41..c6d01af1a6f 100644 --- a/protocol-designer/src/containers/ConnectedStepItem.tsx +++ b/protocol-designer/src/containers/ConnectedStepItem.tsx @@ -18,24 +18,14 @@ import { getMultiSelectItemIds, getMultiSelectLastSelected, getSelectedStepId, - HoverOnStepAction, - HoverOnSubstepAction, - ToggleStepCollapsedAction, - SelectMultipleStepsAction, } from '../ui/steps' import { selectors as fileDataSelectors } from '../file-data' -import { - StepItem, - StepItemContents, - StepItemContentsProps, - StepItemProps, -} from '../components/steplist/StepItem' +import { StepItem, StepItemContents } from '../components/steplist/StepItem' import { CLOSE_BATCH_EDIT_FORM, CLOSE_STEP_FORM_WITH_CHANGES, CLOSE_UNSAVED_STEP_FORM, ConfirmDeleteModal, - DeleteModalType, } from '../components/modals/ConfirmDeleteModal' import { getAdditionalEquipmentEntities, @@ -43,6 +33,17 @@ import { } from '../step-forms/selectors' import type { ThunkDispatch } from 'redux-thunk' +import type { + HoverOnStepAction, + HoverOnSubstepAction, + ToggleStepCollapsedAction, + SelectMultipleStepsAction, +} from '../ui/steps' +import type { + StepItemContentsProps, + StepItemProps, +} from '../components/steplist/StepItem' +import type { DeleteModalType } from '../components/modals/ConfirmDeleteModal' import type { SubstepIdentifier } from '../steplist/types' import type { StepIdType } from '../form-types' import type { BaseState, ThunkAction } from '../types' diff --git a/protocol-designer/src/containers/ConnectedTitleBar.tsx b/protocol-designer/src/containers/ConnectedTitleBar.tsx index 1ad0b850c4f..87a8849c9da 100644 --- a/protocol-designer/src/containers/ConnectedTitleBar.tsx +++ b/protocol-designer/src/containers/ConnectedTitleBar.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import { useSelector, useDispatch } from 'react-redux' import { useTranslation } from 'react-i18next' -import { TitleBar, Icon, IconName } from '@opentrons/components' +import { TitleBar, Icon } from '@opentrons/components' import { getLabwareDisplayName } from '@opentrons/shared-data' import styles from './TitleBar.module.css' import { START_TERMINAL_TITLE, END_TERMINAL_TITLE } from '../constants' @@ -20,6 +20,7 @@ import { selectors as fileDataSelectors } from '../file-data' import { closeIngredientSelector } from '../labware-ingred/actions' import { stepIconsByType } from '../form-types' import { selectors } from '../navigation' +import type { IconName } from '@opentrons/components' interface TitleWithIconProps { iconName: IconName | null | undefined text: string | null | undefined diff --git a/protocol-designer/src/dismiss/index.ts b/protocol-designer/src/dismiss/index.ts index 0ef4230066a..b6aa558c875 100644 --- a/protocol-designer/src/dismiss/index.ts +++ b/protocol-designer/src/dismiss/index.ts @@ -1,5 +1,6 @@ import * as actions from './actions' -import { rootReducer, RootState } from './reducers' +import { rootReducer } from './reducers' import * as selectors from './selectors' +import type { RootState } from './reducers' export { actions, rootReducer, selectors } export type { RootState } diff --git a/protocol-designer/src/dismiss/reducers.ts b/protocol-designer/src/dismiss/reducers.ts index 80a0230efe3..5b3cec94365 100644 --- a/protocol-designer/src/dismiss/reducers.ts +++ b/protocol-designer/src/dismiss/reducers.ts @@ -1,17 +1,18 @@ -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' import omit from 'lodash/omit' import { getPDMetadata } from '../file-types' import { PRESAVED_STEP_ID } from '../steplist/types' -import { DismissFormWarning, DismissTimelineWarning } from './actions' -import { BaseState, Action } from '../types' -import { LoadFileAction } from '../load-file' -import { +import type { Reducer } from 'redux' +import type { DismissFormWarning, DismissTimelineWarning } from './actions' +import type { BaseState, Action } from '../types' +import type { LoadFileAction } from '../load-file' +import type { CancelStepFormAction, DeleteStepAction, DeleteMultipleStepsAction, } from '../steplist/actions' -import { StepIdType } from '../form-types' +import type { StepIdType } from '../form-types' export type WarningType = string export type DismissedWarningsAllSteps = Record< StepIdType, diff --git a/protocol-designer/src/dismiss/selectors.ts b/protocol-designer/src/dismiss/selectors.ts index dcc1104f6fe..5a6964aea0a 100644 --- a/protocol-designer/src/dismiss/selectors.ts +++ b/protocol-designer/src/dismiss/selectors.ts @@ -3,9 +3,13 @@ import mapValues from 'lodash/mapValues' import { selectors as stepFormSelectors } from '../step-forms' import { getSelectedStepId } from '../ui/steps/selectors' import { PRESAVED_STEP_ID } from '../steplist/types' -import { FormWarning } from '../steplist' -import { BaseState, Selector } from '../types' -import { RootState, DismissedWarningsAllSteps, WarningType } from './reducers' +import type { FormWarning } from '../steplist' +import type { BaseState, Selector } from '../types' +import type { + RootState, + DismissedWarningsAllSteps, + WarningType, +} from './reducers' export const rootSelector = (state: BaseState): RootState => state.dismiss export const getAllDismissedWarnings: Selector = createSelector( rootSelector, diff --git a/protocol-designer/src/feature-flags/actions.ts b/protocol-designer/src/feature-flags/actions.ts index 006394d4bd4..9e9db9a1fca 100644 --- a/protocol-designer/src/feature-flags/actions.ts +++ b/protocol-designer/src/feature-flags/actions.ts @@ -1,4 +1,4 @@ -import { Flags } from './types' +import type { Flags } from './types' export interface SetFeatureFlagAction { type: 'SET_FEATURE_FLAGS' payload: Partial diff --git a/protocol-designer/src/feature-flags/index.ts b/protocol-designer/src/feature-flags/index.ts index b57f6c2e3dc..18444468fb3 100644 --- a/protocol-designer/src/feature-flags/index.ts +++ b/protocol-designer/src/feature-flags/index.ts @@ -1,6 +1,7 @@ -import { rootReducer, RootState } from './reducers' +import { rootReducer } from './reducers' import * as actions from './actions' import * as selectors from './selectors' +import type { RootState } from './reducers' export * from './types' export * from './utils' export { actions, rootReducer, selectors } diff --git a/protocol-designer/src/feature-flags/reducers.ts b/protocol-designer/src/feature-flags/reducers.ts index bddaa38c628..3220828e0c6 100644 --- a/protocol-designer/src/feature-flags/reducers.ts +++ b/protocol-designer/src/feature-flags/reducers.ts @@ -1,11 +1,13 @@ import omit from 'lodash/omit' import mapValues from 'lodash/mapValues' -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { Flags, FlagTypes, userFacingFlags, DEPRECATED_FLAGS } from './types' -import { RehydratePersistedAction } from '../persist' -import { SetFeatureFlagAction } from './actions' -import { Action } from '../types' +import { userFacingFlags, DEPRECATED_FLAGS } from './types' +import type { Reducer } from 'redux' +import type { Flags, FlagTypes } from './types' +import type { RehydratePersistedAction } from '../persist' +import type { SetFeatureFlagAction } from './actions' +import type { Action } from '../types' // NOTE: these values will always be overridden by persisted values, // whenever the browser has seen the feature flag before and persisted it. // Only "never before seen" flags will take on the default values from `initialFlags`. diff --git a/protocol-designer/src/feature-flags/selectors.ts b/protocol-designer/src/feature-flags/selectors.ts index 35f69dd70da..82b846c0da1 100644 --- a/protocol-designer/src/feature-flags/selectors.ts +++ b/protocol-designer/src/feature-flags/selectors.ts @@ -1,7 +1,7 @@ import { createSelector } from 'reselect' import { getFlagsFromQueryParams } from './utils' -import { BaseState, Selector } from '../types' -import { Flags } from './types' +import type { BaseState, Selector } from '../types' +import type { Flags } from './types' export const getFeatureFlagData = (state: BaseState): Flags => ({ ...state.featureFlags.flags, ...getFlagsFromQueryParams(), diff --git a/protocol-designer/src/feature-flags/utils.ts b/protocol-designer/src/feature-flags/utils.ts index a2c4b94d3eb..793ccb3fe18 100644 --- a/protocol-designer/src/feature-flags/utils.ts +++ b/protocol-designer/src/feature-flags/utils.ts @@ -1,4 +1,5 @@ -import { allFlags, Flags, FlagTypes } from './types' +import { allFlags } from './types' +import type { Flags, FlagTypes } from './types' // Overwrite feature flags that come in via query params // Ex: https://designer.opentrons.com/?someFF=1&anotherFF=1 export const getFlagsFromQueryParams = (): Flags => { diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts b/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts index 8d65cf41d53..fc32b152c91 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts @@ -1,7 +1,7 @@ // Named arguments to createFile selector. This data would be the result of several selectors. -import { RobotState, Timeline } from '@opentrons/step-generation' -import { SavedStepFormState, ModuleEntities } from '../../../step-forms' -import { StepIdType } from '../../../form-types' +import type { RobotState, Timeline } from '@opentrons/step-generation' +import type { SavedStepFormState, ModuleEntities } from '../../../step-forms' +import type { StepIdType } from '../../../form-types' export const initialRobotState: RobotState = { labware: { fixedTrash: { diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/noModules.ts b/protocol-designer/src/file-data/__fixtures__/createFile/noModules.ts index ce8bdc0c98f..222bf67941d 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/noModules.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/noModules.ts @@ -1,7 +1,7 @@ // Named arguments to createFile selector. This data would be the result of several selectors. -import { RobotState, Timeline } from '@opentrons/step-generation' -import { SavedStepFormState, ModuleEntities } from '../../../step-forms' -import { StepIdType } from '../../../form-types' +import type { RobotState, Timeline } from '@opentrons/step-generation' +import type { SavedStepFormState, ModuleEntities } from '../../../step-forms' +import type { StepIdType } from '../../../form-types' export const initialRobotState: RobotState = { labware: { fixedTrash: { diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/v6Fixture.ts b/protocol-designer/src/file-data/__fixtures__/createFile/v6Fixture.ts index cf6900463c0..8ce619ba36b 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/v6Fixture.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/v6Fixture.ts @@ -1,7 +1,7 @@ // Named arguments to createFile selector. This data would be the result of several selectors. -import { RobotState, Timeline } from '@opentrons/step-generation' -import { SavedStepFormState, ModuleEntities } from '../../../step-forms' -import { StepIdType } from '../../../form-types' +import type { RobotState, Timeline } from '@opentrons/step-generation' +import type { SavedStepFormState, ModuleEntities } from '../../../step-forms' +import type { StepIdType } from '../../../form-types' export const initialRobotState: RobotState = { labware: { fixedTrash: { diff --git a/protocol-designer/src/file-data/actions.ts b/protocol-designer/src/file-data/actions.ts index 999e26bef82..0e175493baf 100644 --- a/protocol-designer/src/file-data/actions.ts +++ b/protocol-designer/src/file-data/actions.ts @@ -1,5 +1,5 @@ -import { FileMetadataFields, SaveFileMetadataAction } from './types' -import { WorkerResponse } from '../timelineMiddleware/types' +import type { FileMetadataFields, SaveFileMetadataAction } from './types' +import type { WorkerResponse } from '../timelineMiddleware/types' export const saveFileMetadata = ( payload: FileMetadataFields ): SaveFileMetadataAction => ({ diff --git a/protocol-designer/src/file-data/index.ts b/protocol-designer/src/file-data/index.ts index ab4e2b3b931..da3cc7b448d 100644 --- a/protocol-designer/src/file-data/index.ts +++ b/protocol-designer/src/file-data/index.ts @@ -1,7 +1,8 @@ /** This is the big selector that generates a .json file to download */ import * as actions from './actions' -import { rootReducer, RootState } from './reducers' import * as selectors from './selectors' +import { rootReducer } from './reducers' +import type { RootState } from './reducers' export * from './types' export { actions, rootReducer, selectors } export type { RootState } diff --git a/protocol-designer/src/file-data/reducers/index.ts b/protocol-designer/src/file-data/reducers/index.ts index 9a7190cb186..7f4d010e8ec 100644 --- a/protocol-designer/src/file-data/reducers/index.ts +++ b/protocol-designer/src/file-data/reducers/index.ts @@ -1,12 +1,14 @@ -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { Timeline } from '@opentrons/step-generation' -import { OT2_ROBOT_TYPE, RobotType } from '@opentrons/shared-data' -import { Action } from '../../types' -import { LoadFileAction, NewProtocolFields } from '../../load-file' -import { Substeps } from '../../steplist/types' -import { ComputeRobotStateTimelineSuccessAction } from '../actions' -import { FileMetadataFields, SaveFileMetadataAction } from '../types' +import { OT2_ROBOT_TYPE } from '@opentrons/shared-data' +import type { Reducer } from 'redux' +import type { Timeline } from '@opentrons/step-generation' +import type { RobotType } from '@opentrons/shared-data' +import type { Action } from '../../types' +import type { LoadFileAction, NewProtocolFields } from '../../load-file' +import type { Substeps } from '../../steplist/types' +import type { ComputeRobotStateTimelineSuccessAction } from '../actions' +import type { FileMetadataFields, SaveFileMetadataAction } from '../types' export const timelineIsBeingComputed: Reducer = handleActions( { diff --git a/protocol-designer/src/file-data/selectors/commands.ts b/protocol-designer/src/file-data/selectors/commands.ts index 3f40007fdb1..b4c70cdf290 100644 --- a/protocol-designer/src/file-data/selectors/commands.ts +++ b/protocol-designer/src/file-data/selectors/commands.ts @@ -6,8 +6,8 @@ import uniqBy from 'lodash/uniqBy' import * as StepGeneration from '@opentrons/step-generation' import { getAllWellsForLabware } from '../../constants' import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { - selectors as stepFormSelectors, +import { selectors as stepFormSelectors } from '../../step-forms' +import type { LabwareOnDeck, LabwareTemporalProperties, ModuleOnDeck, @@ -15,9 +15,9 @@ import { PipetteOnDeck, PipetteTemporalProperties, } from '../../step-forms' -import { Substeps } from '../../steplist/types' -import { BaseState, Selector } from '../../types' -import { StepIdType } from '../../form-types' +import type { Substeps } from '../../steplist/types' +import type { BaseState, Selector } from '../../types' +import type { StepIdType } from '../../form-types' // NOTE this just adds missing well keys to the labware-ingred 'deck setup' liquid state export const getLabwareLiquidState: Selector = createSelector( diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index dfe72d15625..8257388b828 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -11,21 +11,16 @@ import { OT2_STANDARD_MODEL, FLEX_STANDARD_DECKID, SPAN7_8_10_11_SLOT, - LabwareLocation, } from '@opentrons/shared-data' + +import { COLUMN_4_SLOTS } from '@opentrons/step-generation' import { selectors as dismissSelectors } from '../../dismiss' -import { - selectors as labwareDefSelectors, - LabwareDefByDefURI, -} from '../../labware-defs' +import { selectors as labwareDefSelectors } from '../../labware-defs' import { uuid } from '../../utils' import { selectors as ingredSelectors } from '../../labware-ingred/selectors' import { selectors as stepFormSelectors } from '../../step-forms' import { selectors as uiLabwareSelectors } from '../../ui/labware' -import { - DesignerApplicationData, - getLoadLiquidCommands, -} from '../../load-file/migration/utils/getLoadLiquidCommands' +import { getLoadLiquidCommands } from '../../load-file/migration/utils/getLoadLiquidCommands' import { swatchColors } from '../../components/swatchColors' import { DEFAULT_MM_FROM_BOTTOM_ASPIRATE, @@ -36,14 +31,14 @@ import { import { getFileMetadata, getRobotType } from './fileFields' import { getInitialRobotState, getRobotStateTimeline } from './commands' -import { +import type { PipetteEntity, LabwareEntities, PipetteEntities, RobotState, - COLUMN_4_SLOTS, } from '@opentrons/step-generation' import type { + LabwareLocation, AddressableAreaName, CommandAnnotationV1Mixin, CommandV8Mixin, @@ -59,7 +54,9 @@ import type { ProtocolBase, ProtocolFile, } from '@opentrons/shared-data' +import type { LabwareDefByDefURI } from '../../labware-defs' import type { Selector } from '../../types' +import type { DesignerApplicationData } from '../../load-file/migration/utils/getLoadLiquidCommands' // TODO: BC: 2018-02-21 uncomment this assert, causes test failures // console.assert(!isEmpty(process.env.OT_PD_VERSION), 'Could not find application version!') diff --git a/protocol-designer/src/file-types.ts b/protocol-designer/src/file-types.ts index f9a904bf4a5..f8923d7a9e1 100644 --- a/protocol-designer/src/file-types.ts +++ b/protocol-designer/src/file-types.ts @@ -1,10 +1,10 @@ -import { RootState as IngredRoot } from './labware-ingred/reducers' -import { RootState as StepformRoot } from './step-forms' -import { RootState as DismissRoot } from './dismiss' -import { ProtocolFile as ProtocolFileV3 } from '@opentrons/shared-data/protocol/types/schemaV3' -import { ProtocolFile as ProtocolFileV4 } from '@opentrons/shared-data/protocol/types/schemaV4' -import { ProtocolFile as ProtocolFileV5 } from '@opentrons/shared-data/protocol/types/schemaV5' -import { ProtocolFile as ProtocolFileV6 } from '@opentrons/shared-data/protocol/types/schemaV6' +import type { RootState as IngredRoot } from './labware-ingred/reducers' +import type { RootState as StepformRoot } from './step-forms' +import type { RootState as DismissRoot } from './dismiss' +import type { ProtocolFile as ProtocolFileV3 } from '@opentrons/shared-data/protocol/types/schemaV3' +import type { ProtocolFile as ProtocolFileV4 } from '@opentrons/shared-data/protocol/types/schemaV4' +import type { ProtocolFile as ProtocolFileV5 } from '@opentrons/shared-data/protocol/types/schemaV5' +import type { ProtocolFile as ProtocolFileV6 } from '@opentrons/shared-data/protocol/types/schemaV6' export interface PDMetadata { // pipetteId to tiprackModel diff --git a/protocol-designer/src/form-types.ts b/protocol-designer/src/form-types.ts index 1e12911f1ac..5c69e549788 100644 --- a/protocol-designer/src/form-types.ts +++ b/protocol-designer/src/form-types.ts @@ -1,4 +1,4 @@ -import { +import type { PAUSE_UNTIL_RESUME, PAUSE_UNTIL_TIME, PAUSE_UNTIL_TEMP, diff --git a/protocol-designer/src/labware-defs/index.ts b/protocol-designer/src/labware-defs/index.ts index 9b3a6ae5d0c..718967323e3 100644 --- a/protocol-designer/src/labware-defs/index.ts +++ b/protocol-designer/src/labware-defs/index.ts @@ -1,6 +1,7 @@ import * as actions from './actions' -import { rootReducer, RootState } from './reducers' +import { rootReducer } from './reducers' import * as selectors from './selectors' +import type { RootState } from './reducers' export * from './types' export * from './utils' export { actions, rootReducer, selectors } diff --git a/protocol-designer/src/labware-defs/reducers.ts b/protocol-designer/src/labware-defs/reducers.ts index d6611c72b16..786213b90ad 100644 --- a/protocol-designer/src/labware-defs/reducers.ts +++ b/protocol-designer/src/labware-defs/reducers.ts @@ -1,19 +1,20 @@ import omit from 'lodash/omit' -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' import pickBy from 'lodash/pickBy' import { getLabwareDefURI, getLabwareDefIsStandard, } from '@opentrons/shared-data' -import { Action } from '../types' -import { LabwareUploadMessage, LabwareDefByDefURI } from './types' -import { +import type { Action } from '../types' +import type { LabwareUploadMessage, LabwareDefByDefURI } from './types' +import type { CreateCustomLabwareDef, LabwareUploadMessageAction, ReplaceCustomLabwareDef, } from './actions' -import { LoadFileAction } from '../load-file' +import type { Reducer } from 'redux' +import type { LoadFileAction } from '../load-file' // @ts-expect-error(sa, 2021-6-20): cannot use string literals as action type // TODO IMMEDIATELY: refactor this to the old fashioned way if we cannot have type safety: https://github.com/redux-utilities/redux-actions/issues/282#issuecomment-595163081 const customDefs: Reducer = handleActions( diff --git a/protocol-designer/src/labware-defs/selectors.ts b/protocol-designer/src/labware-defs/selectors.ts index b01a444544a..ab78dc4aa14 100644 --- a/protocol-designer/src/labware-defs/selectors.ts +++ b/protocol-designer/src/labware-defs/selectors.ts @@ -1,10 +1,10 @@ import { createSelector } from 'reselect' import { _getSharedLabware, getAllDefinitions } from './utils' -import { LabwareDefinition2 } from '@opentrons/shared-data' -import { BaseState, Selector } from '../types' -import { LabwareDefByDefURI, LabwareUploadMessage } from './types' -import { RootState } from './reducers' -import { RootState as StepFormRootState } from '../step-forms' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { BaseState, Selector } from '../types' +import type { LabwareDefByDefURI, LabwareUploadMessage } from './types' +import type { RootState } from './reducers' +import type { RootState as StepFormRootState } from '../step-forms' // NOTE: labware-defs/ state is nested inside step-forms export const rootSelector = (state: BaseState): RootState => state.stepForms.labwareDefs diff --git a/protocol-designer/src/labware-defs/types.ts b/protocol-designer/src/labware-defs/types.ts index 882ea0a0818..af68ae062ef 100644 --- a/protocol-designer/src/labware-defs/types.ts +++ b/protocol-designer/src/labware-defs/types.ts @@ -1,4 +1,4 @@ -import { LabwareDefinition2 } from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' export type LabwareDefByDefURI = Record export type LabwareUploadMessageType = | 'INVALID_JSON_FILE' diff --git a/protocol-designer/src/labware-defs/utils.ts b/protocol-designer/src/labware-defs/utils.ts index a32b6bbe1f1..18886b559b9 100644 --- a/protocol-designer/src/labware-defs/utils.ts +++ b/protocol-designer/src/labware-defs/utils.ts @@ -2,12 +2,14 @@ import groupBy from 'lodash/groupBy' import { getLabwareDefURI, PD_DO_NOT_LIST, - LabwareDefinition1, - LabwareDefinition2, getAllDefinitions as _getAllDefinitions, getAllLegacyDefinitions, } from '@opentrons/shared-data' -import { LabwareDefByDefURI } from './types' +import type { + LabwareDefinition1, + LabwareDefinition2, +} from '@opentrons/shared-data' +import type { LabwareDefByDefURI } from './types' export function getLegacyLabwareDef( loadName: string | null | undefined diff --git a/protocol-designer/src/labware-ingred/actions/actions.ts b/protocol-designer/src/labware-ingred/actions/actions.ts index 7d39ec3ac76..5741b06fc24 100644 --- a/protocol-designer/src/labware-ingred/actions/actions.ts +++ b/protocol-designer/src/labware-ingred/actions/actions.ts @@ -1,7 +1,7 @@ import { createAction } from 'redux-actions' import { selectors } from '../selectors' -import { DeckSlot, ThunkAction } from '../../types' -import { IngredInputs } from '../types' +import type { DeckSlot, ThunkAction } from '../../types' +import type { IngredInputs } from '../types' // ===== Labware selector actions ===== export interface OpenAddLabwareModalAction { type: 'OPEN_ADD_LABWARE_MODAL' diff --git a/protocol-designer/src/labware-ingred/actions/thunks.ts b/protocol-designer/src/labware-ingred/actions/thunks.ts index 39418ceb2ad..95b944c2c75 100644 --- a/protocol-designer/src/labware-ingred/actions/thunks.ts +++ b/protocol-designer/src/labware-ingred/actions/thunks.ts @@ -4,13 +4,13 @@ import { selectors as labwareDefSelectors } from '../../labware-defs' import { selectors as stepFormSelectors } from '../../step-forms' import { selectors as uiLabwareSelectors } from '../../ui/labware' import { getNextAvailableDeckSlot, getNextNickname } from '../utils' -import { +import { getRobotType } from '../../file-data/selectors' +import type { CreateContainerArgs, CreateContainerAction, DuplicateLabwareAction, } from './actions' -import { ThunkAction } from '../../types' -import { getRobotType } from '../../file-data/selectors' +import type { ThunkAction } from '../../types' export interface RenameLabwareAction { type: 'RENAME_LABWARE' payload: { diff --git a/protocol-designer/src/labware-ingred/reducers/index.ts b/protocol-designer/src/labware-ingred/reducers/index.ts index bb1b8d2cdab..b968c93b4ac 100644 --- a/protocol-designer/src/labware-ingred/reducers/index.ts +++ b/protocol-designer/src/labware-ingred/reducers/index.ts @@ -1,18 +1,19 @@ -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' import omit from 'lodash/omit' import mapValues from 'lodash/mapValues' import pickBy from 'lodash/pickBy' import { getPDMetadata } from '../../file-types' -import { +import type { Reducer } from 'redux' +import type { SingleLabwareLiquidState, LocationLiquidState, LabwareLiquidState, } from '@opentrons/step-generation' -import { Action, DeckSlot } from '../../types' -import { LiquidGroupsById, DisplayLabware } from '../types' -import { LoadFileAction } from '../../load-file' -import { +import type { Action, DeckSlot } from '../../types' +import type { LiquidGroupsById, DisplayLabware } from '../types' +import type { LoadFileAction } from '../../load-file' +import type { RemoveWellsContentsAction, CreateContainerAction, DeleteLiquidGroupAction, diff --git a/protocol-designer/src/labware-ingred/selectors.ts b/protocol-designer/src/labware-ingred/selectors.ts index 8238026c0db..817b2c705e5 100644 --- a/protocol-designer/src/labware-ingred/selectors.ts +++ b/protocol-designer/src/labware-ingred/selectors.ts @@ -1,11 +1,12 @@ -import { createSelector, Selector } from 'reselect' +import { createSelector } from 'reselect' import forEach from 'lodash/forEach' import mapValues from 'lodash/mapValues' import max from 'lodash/max' import reduce from 'lodash/reduce' -import { Options } from '@opentrons/components' -import { LabwareLiquidState } from '@opentrons/step-generation' -import { +import type { Selector } from 'reselect' +import type { Options } from '@opentrons/components' +import type { LabwareLiquidState } from '@opentrons/step-generation' +import type { RootState, ContainersState, DrillDownLabwareId, @@ -13,13 +14,13 @@ import { SelectedContainerId, SelectedLiquidGroupState, } from './reducers' -import { +import type { AllIngredGroupFields, IngredInputs, LiquidGroup, OrderedLiquids, } from './types' -import { BaseState, DeckSlot } from './../types' +import type { BaseState, DeckSlot } from './../types' // TODO: Ian 2019-02-15 no RootSlice, use BaseState interface RootSlice { labwareIngred: RootState diff --git a/protocol-designer/src/labware-ingred/types.ts b/protocol-designer/src/labware-ingred/types.ts index f5997158e32..02bb8afa6ad 100644 --- a/protocol-designer/src/labware-ingred/types.ts +++ b/protocol-designer/src/labware-ingred/types.ts @@ -1,4 +1,4 @@ -import { LocationLiquidState } from '@opentrons/step-generation' +import type { LocationLiquidState } from '@opentrons/step-generation' // TODO Ian 2018-02-19 make these shared in component library, standardize with Run App // ===== LABWARE =========== export interface DisplayLabware { diff --git a/protocol-designer/src/load-file/actions.ts b/protocol-designer/src/load-file/actions.ts index 2b841c718c3..a698696c525 100644 --- a/protocol-designer/src/load-file/actions.ts +++ b/protocol-designer/src/load-file/actions.ts @@ -1,9 +1,9 @@ import { migration } from './migration' import { selectors as fileDataSelectors } from '../file-data' import { saveFile } from './utils' -import { PDProtocolFile } from '../file-types' -import { GetState, ThunkAction, ThunkDispatch } from '../types' -import { +import type { PDProtocolFile } from '../file-types' +import type { GetState, ThunkAction, ThunkDispatch } from '../types' +import type { FileUploadErrorType, FileUploadMessage, LoadFileAction, diff --git a/protocol-designer/src/load-file/index.ts b/protocol-designer/src/load-file/index.ts index 30c2ea1a3c1..778ef3e3106 100644 --- a/protocol-designer/src/load-file/index.ts +++ b/protocol-designer/src/load-file/index.ts @@ -1,6 +1,7 @@ -import { RootState, rootReducer } from './reducers' +import { rootReducer } from './reducers' import * as actions from './actions' import * as selectors from './selectors' +import type { RootState } from './reducers' export * from './types' export { actions, rootReducer, selectors } export type { RootState } diff --git a/protocol-designer/src/load-file/migration/1_1_0.ts b/protocol-designer/src/load-file/migration/1_1_0.ts index af041cee1d9..f42852e7c96 100644 --- a/protocol-designer/src/load-file/migration/1_1_0.ts +++ b/protocol-designer/src/load-file/migration/1_1_0.ts @@ -3,13 +3,14 @@ import mapValues from 'lodash/mapValues' import omit from 'lodash/omit' import omitBy from 'lodash/omitBy' import flow from 'lodash/flow' -import { PipetteName, getPipetteSpecsV2 } from '@opentrons/shared-data' +import { getPipetteSpecsV2 } from '@opentrons/shared-data' import { getLegacyLabwareDef } from '../../labware-defs' import type { FileLabware, FilePipette, ProtocolFile, } from '@opentrons/shared-data/protocol/types/schemaV1' +import type { PipetteName } from '@opentrons/shared-data' import type { FormPatch } from '../../steplist/actions' import type { FormData } from '../../form-types' diff --git a/protocol-designer/src/load-file/migration/3_0_0.ts b/protocol-designer/src/load-file/migration/3_0_0.ts index f0b57bc6819..798eaa8ae8f 100644 --- a/protocol-designer/src/load-file/migration/3_0_0.ts +++ b/protocol-designer/src/load-file/migration/3_0_0.ts @@ -4,12 +4,12 @@ import reduce from 'lodash/reduce' import uniq from 'lodash/uniq' import { v1LabwareModelToV2Def } from './utils/v1LabwareModelToV2Def' import { getLabwareDefURI } from '@opentrons/shared-data' -import { +import type { ProtocolFile, FileLabware, FilePipette, } from '@opentrons/shared-data/protocol/types/schemaV3' -import { PDProtocolFile as PDProtocolFileV1, PDMetadata } from './1_1_0' +import type { PDProtocolFile as PDProtocolFileV1, PDMetadata } from './1_1_0' // NOTE: PDMetadata type did not change btw 1.1.0 and 3.0.0 export type PDProtocolFile = ProtocolFile // the version and schema for this migration diff --git a/protocol-designer/src/load-file/migration/6_0_0.ts b/protocol-designer/src/load-file/migration/6_0_0.ts index 2eb7a330a2b..f4ffcefd150 100644 --- a/protocol-designer/src/load-file/migration/6_0_0.ts +++ b/protocol-designer/src/load-file/migration/6_0_0.ts @@ -3,11 +3,7 @@ import mapKeys from 'lodash/mapKeys' import mapValues from 'lodash/mapValues' import omit from 'lodash/omit' import reduce from 'lodash/reduce' -import { - OT2_STANDARD_DECKID, - OT2_STANDARD_MODEL, - ProtocolFileV5, -} from '@opentrons/shared-data' +import { OT2_STANDARD_DECKID, OT2_STANDARD_MODEL } from '@opentrons/shared-data' import { uuid } from '../../utils' import { FIXED_TRASH_ID, INITIAL_DECK_SETUP_STEP_ID } from '../../constants' // NOTE: this migration bump adds load commands (loadLiquid, loadModule, loadPipette, loadLabware), modifies both pipette @@ -15,6 +11,7 @@ import { FIXED_TRASH_ID, INITIAL_DECK_SETUP_STEP_ID } from '../../constants' // and module keys such as slot, mount // and renames well to wellName import { getLoadLiquidCommands } from './utils/getLoadLiquidCommands' +import type { ProtocolFileV5 } from '@opentrons/shared-data' import type { LoadPipetteCreateCommand, LoadModuleCreateCommand, diff --git a/protocol-designer/src/load-file/migration/index.ts b/protocol-designer/src/load-file/migration/index.ts index 16e58a0cce7..120cff0a6ad 100644 --- a/protocol-designer/src/load-file/migration/index.ts +++ b/protocol-designer/src/load-file/migration/index.ts @@ -1,7 +1,6 @@ import flow from 'lodash/flow' import takeRightWhile from 'lodash/takeRightWhile' import semver from 'semver' -import { PDProtocolFile } from '../../file-types' import { migrateFile as migrateFileOne } from './1_1_0' import { migrateFile as migrateFileThree } from './3_0_0' import { migrateFile as migrateFileFour } from './4_0_0' @@ -12,6 +11,7 @@ import { migrateFile as migrateFileSix } from './6_0_0' import { migrateFile as migrateFileSeven } from './7_0_0' import { migrateFile as migrateFileEight } from './8_0_0' import { migrateFile as migrateFileEightOne } from './8_1_0' +import type { PDProtocolFile } from '../../file-types' export const OLDEST_MIGRATEABLE_VERSION = '1.0.0' type Version = string diff --git a/protocol-designer/src/load-file/migration/utils/v1LabwareModelToV2Def.ts b/protocol-designer/src/load-file/migration/utils/v1LabwareModelToV2Def.ts index a8c1bc25e3a..0325983fb1b 100644 --- a/protocol-designer/src/load-file/migration/utils/v1LabwareModelToV2Def.ts +++ b/protocol-designer/src/load-file/migration/utils/v1LabwareModelToV2Def.ts @@ -1,5 +1,5 @@ import { getOnlyLatestDefs } from '../../../labware-defs' -import { LabwareDefinition2 } from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' const v1ModelTov2LoadNameMap = { '6-well-plate': 'corning_6_wellplate_16.8ml_flat', '12-well-plate': 'corning_12_wellplate_6.9ml_flat', diff --git a/protocol-designer/src/load-file/reducers.ts b/protocol-designer/src/load-file/reducers.ts index a47284a04e3..76ec872aca0 100644 --- a/protocol-designer/src/load-file/reducers.ts +++ b/protocol-designer/src/load-file/reducers.ts @@ -1,8 +1,9 @@ -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { Action } from '../types' -import { FileUploadMessage, LoadFileAction } from './types' -import { FileUploadMessageAction } from './actions' +import type { Reducer } from 'redux' +import type { Action } from '../types' +import type { FileUploadMessage, LoadFileAction } from './types' +import type { FileUploadMessageAction } from './actions' // Keep track of file upload errors / messages type FileUploadMessageState = FileUploadMessage | null | undefined diff --git a/protocol-designer/src/load-file/selectors.ts b/protocol-designer/src/load-file/selectors.ts index 8a1003425cd..733fd2dfb27 100644 --- a/protocol-designer/src/load-file/selectors.ts +++ b/protocol-designer/src/load-file/selectors.ts @@ -1,6 +1,6 @@ import { createSelector } from 'reselect' -import { BaseState, Selector } from '../types' -import { RootState } from './reducers' +import type { BaseState, Selector } from '../types' +import type { RootState } from './reducers' export const rootSelector = (state: BaseState): RootState => state.loadFile export const getFileUploadMessages: Selector< RootState['fileUploadMessage'] diff --git a/protocol-designer/src/load-file/types.ts b/protocol-designer/src/load-file/types.ts index bfd612b0898..d3a25dfde74 100644 --- a/protocol-designer/src/load-file/types.ts +++ b/protocol-designer/src/load-file/types.ts @@ -1,4 +1,4 @@ -import { PDProtocolFile } from '../file-types' +import type { PDProtocolFile } from '../file-types' import type { RobotType } from '@opentrons/shared-data' export type FileUploadErrorType = 'INVALID_FILE_TYPE' | 'INVALID_JSON_FILE' diff --git a/protocol-designer/src/navigation/actions.ts b/protocol-designer/src/navigation/actions.ts index 4b365d82f5d..751ffd324cf 100644 --- a/protocol-designer/src/navigation/actions.ts +++ b/protocol-designer/src/navigation/actions.ts @@ -1,4 +1,4 @@ -import { Page } from './types' +import type { Page } from './types' export interface NavigateToPageAction { type: 'NAVIGATE_TO_PAGE' payload: Page diff --git a/protocol-designer/src/navigation/index.ts b/protocol-designer/src/navigation/index.ts index d449b20323c..6229586f0c2 100644 --- a/protocol-designer/src/navigation/index.ts +++ b/protocol-designer/src/navigation/index.ts @@ -1,6 +1,7 @@ import * as actions from './actions' -import { rootReducer, RootState } from './reducers' +import { rootReducer } from './reducers' import * as selectors from './selectors' +import type { RootState } from './reducers' // TODO export types from reducers export * from './types' export { actions, rootReducer, selectors } diff --git a/protocol-designer/src/navigation/reducers/index.ts b/protocol-designer/src/navigation/reducers/index.ts index 07d464486ac..1c6a9df5593 100644 --- a/protocol-designer/src/navigation/reducers/index.ts +++ b/protocol-designer/src/navigation/reducers/index.ts @@ -1,8 +1,12 @@ -import { Reducer, combineReducers } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { BaseState, Action } from '../../types' -import { NavigateToPageAction, ToggleNewProtocolModalAction } from '../actions' -import { Page } from '../types' +import type { Reducer } from 'redux' +import type { BaseState, Action } from '../../types' +import type { + NavigateToPageAction, + ToggleNewProtocolModalAction, +} from '../actions' +import type { Page } from '../types' const page: Reducer = handleActions( { LOAD_FILE: (): Page => 'file-detail', diff --git a/protocol-designer/src/navigation/selectors.ts b/protocol-designer/src/navigation/selectors.ts index 5ddf985ee82..3a1fa647f17 100644 --- a/protocol-designer/src/navigation/selectors.ts +++ b/protocol-designer/src/navigation/selectors.ts @@ -1,6 +1,6 @@ -import { BaseState, Selector } from '../types' import { rootSelector as navigationRootSelector } from './reducers' -import { Page } from './types' +import type { BaseState, Selector } from '../types' +import type { Page } from './types' export const getNewProtocolModal: Selector = (state: BaseState) => navigationRootSelector(state).newProtocolModal export const getCurrentPage: Selector = (state: BaseState) => { diff --git a/protocol-designer/src/persist.ts b/protocol-designer/src/persist.ts index 42edf18dc16..fbec573b065 100644 --- a/protocol-designer/src/persist.ts +++ b/protocol-designer/src/persist.ts @@ -1,7 +1,7 @@ import get from 'lodash/get' -import { Store } from 'redux' import { dismissedHintsPersist } from './tutorial/reducers' +import type { Store } from 'redux' export interface RehydratePersistedAction { type: 'REHYDRATE_PERSISTED' payload: { diff --git a/protocol-designer/src/pipettes/pipetteData.ts b/protocol-designer/src/pipettes/pipetteData.ts index 4da240de6b5..00040089e49 100644 --- a/protocol-designer/src/pipettes/pipetteData.ts +++ b/protocol-designer/src/pipettes/pipetteData.ts @@ -1,4 +1,3 @@ -import { DropdownOption } from '../../../components/lib/forms/DropdownField.d' import { getPipetteSpecsV2, getTiprackVolume, @@ -7,6 +6,7 @@ import { import type { PipetteName } from '@opentrons/shared-data' import type { Options } from '@opentrons/components' import type { LabwareEntities, PipetteEntity } from '@opentrons/step-generation' +import type { DropdownOption } from '../../../components/lib/forms/DropdownField.d' const supportedPipetteNames: PipetteName[] = [ 'p10_single', 'p10_multi', diff --git a/protocol-designer/src/step-forms/actions/index.ts b/protocol-designer/src/step-forms/actions/index.ts index 1cda526efc3..e55d8ca14d1 100644 --- a/protocol-designer/src/step-forms/actions/index.ts +++ b/protocol-designer/src/step-forms/actions/index.ts @@ -1,7 +1,7 @@ import { getBatchEditFieldChanges } from '../selectors' -import { ThunkAction } from '../../types' -import { StepIdType, StepFieldName } from '../../form-types' -import { BatchEditFormChangesState } from '../reducers' +import type { ThunkAction } from '../../types' +import type { StepIdType, StepFieldName } from '../../form-types' +import type { BatchEditFormChangesState } from '../reducers' export * from './modules' export * from './pipettes' export interface ChangeBatchEditFieldAction { diff --git a/protocol-designer/src/step-forms/actions/modules.ts b/protocol-designer/src/step-forms/actions/modules.ts index 6d119ceb15e..f405d2773d3 100644 --- a/protocol-designer/src/step-forms/actions/modules.ts +++ b/protocol-designer/src/step-forms/actions/modules.ts @@ -1,6 +1,6 @@ import { uuid } from '../../utils' -import { ModuleModel, ModuleType } from '@opentrons/shared-data' -import { DeckSlot } from '../../types' +import type { ModuleModel, ModuleType } from '@opentrons/shared-data' +import type { DeckSlot } from '../../types' export interface CreateModuleAction { type: 'CREATE_MODULE' payload: { diff --git a/protocol-designer/src/step-forms/actions/pipettes.ts b/protocol-designer/src/step-forms/actions/pipettes.ts index 1e44b34b4d6..cdc5b5ca1e0 100644 --- a/protocol-designer/src/step-forms/actions/pipettes.ts +++ b/protocol-designer/src/step-forms/actions/pipettes.ts @@ -1,5 +1,5 @@ -import { NormalizedPipetteById } from '@opentrons/step-generation' -import { StepIdType } from '../../form-types' +import type { NormalizedPipetteById } from '@opentrons/step-generation' +import type { StepIdType } from '../../form-types' export interface CreatePipettesAction { type: 'CREATE_PIPETTES' payload: NormalizedPipetteById diff --git a/protocol-designer/src/step-forms/index.ts b/protocol-designer/src/step-forms/index.ts index 310d7fbf798..14e1497b4d6 100644 --- a/protocol-designer/src/step-forms/index.ts +++ b/protocol-designer/src/step-forms/index.ts @@ -1,6 +1,7 @@ -import { rootReducer, RootState, SavedStepFormState } from './reducers' +import { rootReducer } from './reducers' import * as selectors from './selectors' import * as actions from './actions' +import type { RootState, SavedStepFormState } from './reducers' export * from './utils' export * from './types' export type { RootState, SavedStepFormState } diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index c901e2e8876..f180bc5f175 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -1,5 +1,4 @@ import { handleActions } from 'redux-actions' -import { Reducer } from 'redux' import mapValues from 'lodash/mapValues' import cloneDeep from 'lodash/cloneDeep' import merge from 'lodash/merge' @@ -12,21 +11,12 @@ import { getLabwareDefaultEngageHeight, getLabwareDefURI, getModuleType, - LoadLabwareCreateCommand, - LoadModuleCreateCommand, - LoadPipetteCreateCommand, - MoveLabwareCreateCommand, - MoveToAddressableAreaCreateCommand, - MoveToAddressableAreaForDropTipCreateCommand, MAGNETIC_MODULE_TYPE, MAGNETIC_MODULE_V1, - PipetteName, THERMOCYCLER_MODULE_TYPE, WASTE_CHUTE_ADDRESSABLE_AREAS, - AddressableAreaName, MOVABLE_TRASH_ADDRESSABLE_AREAS, } from '@opentrons/shared-data' -import type { RootState as LabwareDefsRootState } from '../../labware-defs' import { rootReducer as labwareDefsRootReducer } from '../../labware-defs' import { getCutoutIdByAddressableArea, uuid } from '../../utils' import { INITIAL_DECK_SETUP_STEP_ID, SPAN7_8_10_11_SLOT } from '../../constants' @@ -44,25 +34,13 @@ import { import { getLabwareOnModule } from '../../ui/modules/utils' import { nestedCombineReducers } from './nestedCombineReducers' import { PROFILE_CYCLE, PROFILE_STEP } from '../../form-types' -import { - COLUMN_4_SLOTS, - NormalizedAdditionalEquipmentById, - NormalizedPipetteById, -} from '@opentrons/step-generation' -import { LoadFileAction } from '../../load-file' -import { SaveStepFormAction } from '../../ui/steps/actions/thunks' -import { ReplaceCustomLabwareDef } from '../../labware-defs/actions' +import { COLUMN_4_SLOTS } from '@opentrons/step-generation' import { _getPipetteEntitiesRootState, _getLabwareEntitiesRootState, _getInitialDeckSetupRootState, _getAdditionalEquipmentEntitiesRootState, } from '../selectors' -import { - CreateDeckFixtureAction, - DeleteDeckFixtureAction, - ToggleIsGripperRequiredAction, -} from '../actions/additionalItems' import { createPresavedStepForm, getDeckItemIdInSlot, @@ -70,6 +48,30 @@ import { getUnoccupiedSlotForMoveableTrash, } from '../utils' +import type { Reducer } from 'redux' +import type { + NormalizedAdditionalEquipmentById, + NormalizedPipetteById, +} from '@opentrons/step-generation' +import type { + LoadLabwareCreateCommand, + LoadModuleCreateCommand, + LoadPipetteCreateCommand, + MoveLabwareCreateCommand, + MoveToAddressableAreaCreateCommand, + MoveToAddressableAreaForDropTipCreateCommand, + PipetteName, + AddressableAreaName, +} from '@opentrons/shared-data' +import type { RootState as LabwareDefsRootState } from '../../labware-defs' +import type { LoadFileAction } from '../../load-file' +import type { SaveStepFormAction } from '../../ui/steps/actions/thunks' +import type { ReplaceCustomLabwareDef } from '../../labware-defs/actions' +import type { + CreateDeckFixtureAction, + DeleteDeckFixtureAction, + ToggleIsGripperRequiredAction, +} from '../actions/additionalItems' import type { CreateModuleAction, CreatePipettesAction, diff --git a/protocol-designer/src/step-forms/reducers/nestedCombineReducers.ts b/protocol-designer/src/step-forms/reducers/nestedCombineReducers.ts index 393caceb589..45ea5f8270a 100644 --- a/protocol-designer/src/step-forms/reducers/nestedCombineReducers.ts +++ b/protocol-designer/src/step-forms/reducers/nestedCombineReducers.ts @@ -1,4 +1,4 @@ -import { Action, Reducer } from 'redux' +import type { Action, Reducer } from 'redux' export type GetNextState = (args: { action: A state: S diff --git a/protocol-designer/src/step-forms/selectors/index.ts b/protocol-designer/src/step-forms/selectors/index.ts index 3e3cb161f81..372ea86f0a2 100644 --- a/protocol-designer/src/step-forms/selectors/index.ts +++ b/protocol-designer/src/step-forms/selectors/index.ts @@ -2,7 +2,7 @@ import isEqual from 'lodash/isEqual' import mapValues from 'lodash/mapValues' import reduce from 'lodash/reduce' import isEmpty from 'lodash/isEmpty' -import { createSelector, Selector } from 'reselect' +import { createSelector } from 'reselect' import { getLabwareDisplayName, getLabwareDefURI, @@ -10,53 +10,51 @@ import { TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, - PipetteName, MAGNETIC_BLOCK_TYPE, getPipetteSpecsV2, - LabwareDefinition2, } from '@opentrons/shared-data' -import { - AdditionalEquipmentEntities, - NormalizedAdditionalEquipmentById, - TEMPERATURE_DEACTIVATED, -} from '@opentrons/step-generation' +import { TEMPERATURE_DEACTIVATED } from '@opentrons/step-generation' + import { INITIAL_DECK_SETUP_STEP_ID } from '../../constants' import { getFormWarnings, getFormErrors, stepFormToArgs, } from '../../steplist/formLevel' -import { - ProfileFormError, - getProfileFormErrors, -} from '../../steplist/formLevel/profileErrors' +import { getProfileFormErrors } from '../../steplist/formLevel/profileErrors' import { getMoveLabwareFormErrors } from '../../steplist/formLevel/moveLabwareFormErrors' import { getFieldErrors } from '../../steplist/fieldLevel' import { getProfileItemsHaveErrors } from '../utils/getProfileItemsHaveErrors' import * as featureFlagSelectors from '../../feature-flags/selectors' import { denormalizePipetteEntities, getHydratedForm } from '../utils' -import { - selectors as labwareDefSelectors, - LabwareDefByDefURI, -} from '../../labware-defs' -import { InstrumentGroup } from '@opentrons/components' -import type { - DropdownOption, - Mount, - InstrumentInfoProps, -} from '@opentrons/components' +import { selectors as labwareDefSelectors } from '../../labware-defs' +import type { Selector } from 'reselect' import type { + AdditionalEquipmentEntities, + NormalizedAdditionalEquipmentById, InvariantContext, LabwareEntity, LabwareEntities, ModuleEntities, PipetteEntities, } from '@opentrons/step-generation' +import type { PipetteName, LabwareDefinition2 } from '@opentrons/shared-data' +import type { + InstrumentGroup, + DropdownOption, + Mount, + InstrumentInfoProps, +} from '@opentrons/components' +import type { ProfileFormError } from '../../steplist/formLevel/profileErrors' +import type { LabwareDefByDefURI } from '../../labware-defs' import type { FormWarning } from '../../steplist/formLevel' -import { BaseState, DeckSlot } from '../../types' -import { FormData, StepIdType } from '../../form-types' -import { StepArgsAndErrorsById, StepFormErrors } from '../../steplist/types' -import { +import type { BaseState, DeckSlot } from '../../types' +import type { FormData, StepIdType } from '../../form-types' +import type { + StepArgsAndErrorsById, + StepFormErrors, +} from '../../steplist/types' +import type { InitialDeckSetup, NormalizedLabwareById, NormalizedLabware, @@ -71,7 +69,7 @@ import { HeaterShakerModuleState, MagneticBlockState, } from '../types' -import { +import type { PresavedStepFormState, RootState, SavedStepFormState, diff --git a/protocol-designer/src/step-forms/types.ts b/protocol-designer/src/step-forms/types.ts index 24dee9b0c46..bffcda77c79 100644 --- a/protocol-designer/src/step-forms/types.ts +++ b/protocol-designer/src/step-forms/types.ts @@ -1,5 +1,5 @@ -import { Mount } from '@opentrons/components' -import { +import type { Mount } from '@opentrons/components' +import type { ModuleType, ModuleModel, MAGNETIC_MODULE_TYPE, @@ -9,9 +9,9 @@ import { MAGNETIC_BLOCK_TYPE, NozzleConfigurationStyle, } from '@opentrons/shared-data' -import { DeckSlot } from '../types' +import type { DeckSlot } from '../types' -import { +import type { TemperatureStatus, ModuleEntity, PipetteEntity, diff --git a/protocol-designer/src/step-forms/utils/createInitialProfileItems.ts b/protocol-designer/src/step-forms/utils/createInitialProfileItems.ts index 70a05f33774..3b072cdc470 100644 --- a/protocol-designer/src/step-forms/utils/createInitialProfileItems.ts +++ b/protocol-designer/src/step-forms/utils/createInitialProfileItems.ts @@ -1,9 +1,5 @@ -import { - PROFILE_CYCLE, - PROFILE_STEP, - ProfileStepItem, - ProfileCycleItem, -} from '../../form-types' +import { PROFILE_CYCLE, PROFILE_STEP } from '../../form-types' +import type { ProfileStepItem, ProfileCycleItem } from '../../form-types' export const createInitialProfileStep = (id: string): ProfileStepItem => ({ type: PROFILE_STEP, id, diff --git a/protocol-designer/src/step-forms/utils/createPresavedStepForm.ts b/protocol-designer/src/step-forms/utils/createPresavedStepForm.ts index 5e3563683b0..56c5788f36e 100644 --- a/protocol-designer/src/step-forms/utils/createPresavedStepForm.ts +++ b/protocol-designer/src/step-forms/utils/createPresavedStepForm.ts @@ -18,17 +18,17 @@ import { getMagnetLabwareEngageHeight, } from '../../ui/modules/utils' import { maskField } from '../../steplist/fieldLevel' -import { +import type { PipetteEntities, LabwareEntities, RobotState, Timeline, AdditionalEquipmentEntities, } from '@opentrons/step-generation' -import { FormData, StepType, StepIdType } from '../../form-types' -import { InitialDeckSetup } from '../types' -import { FormPatch } from '../../steplist/actions/types' -import { SavedStepFormState, OrderedStepIdsState } from '../reducers' +import type { FormData, StepType, StepIdType } from '../../form-types' +import type { InitialDeckSetup } from '../types' +import type { FormPatch } from '../../steplist/actions/types' +import type { SavedStepFormState, OrderedStepIdsState } from '../reducers' export interface CreatePresavedStepFormArgs { stepId: StepIdType stepType: StepType diff --git a/protocol-designer/src/step-forms/utils/index.ts b/protocol-designer/src/step-forms/utils/index.ts index d9b2d108132..03cc9e9ba4e 100644 --- a/protocol-designer/src/step-forms/utils/index.ts +++ b/protocol-designer/src/step-forms/utils/index.ts @@ -12,8 +12,8 @@ import { } from '@opentrons/shared-data' import { SPAN7_8_10_11_SLOT, TC_SPAN_SLOTS } from '../../constants' import { hydrateField } from '../../steplist/fieldLevel' -import { LabwareDefByDefURI } from '../../labware-defs' import { getCutoutIdByAddressableArea } from '../../utils' +import type { LabwareDefByDefURI } from '../../labware-defs' import type { AddressableAreaName, CutoutId, diff --git a/protocol-designer/src/steplist/actions/actions.ts b/protocol-designer/src/steplist/actions/actions.ts index 7149e114059..2f5d3bdf9af 100644 --- a/protocol-designer/src/steplist/actions/actions.ts +++ b/protocol-designer/src/steplist/actions/actions.ts @@ -1,9 +1,9 @@ import { getOrderedStepIds } from '../../step-forms/selectors' import { getNextNonTerminalItemId } from '../utils' -import { ThunkAction } from '../../types' -import { StepIdType, FormData } from '../../form-types' -import { ChangeFormPayload } from './types' -import { +import type { ThunkAction } from '../../types' +import type { StepIdType, FormData } from '../../form-types' +import type { ChangeFormPayload } from './types' +import type { ClearSelectedItemAction, SelectMultipleStepsAction, } from '../../ui/steps' diff --git a/protocol-designer/src/steplist/actions/types.ts b/protocol-designer/src/steplist/actions/types.ts index 1e346c13764..b38a0eefa21 100644 --- a/protocol-designer/src/steplist/actions/types.ts +++ b/protocol-designer/src/steplist/actions/types.ts @@ -1,4 +1,4 @@ -import { StepFieldName } from '../fieldLevel' +import type { StepFieldName } from '../fieldLevel' export type FormPatch = Partial> // Update Form input (onChange on inputs) export interface ChangeFormPayload { diff --git a/protocol-designer/src/steplist/fieldLevel/index.ts b/protocol-designer/src/steplist/fieldLevel/index.ts index 15dd06279cf..b3551819fab 100644 --- a/protocol-designer/src/steplist/fieldLevel/index.ts +++ b/protocol-designer/src/steplist/fieldLevel/index.ts @@ -16,8 +16,6 @@ import { defaultTo, composeMaskers, trimDecimals, - ValueMasker, - ValueCaster, } from './processing' import { MIN_TEMP_MODULE_TEMP, @@ -37,7 +35,8 @@ import { MIN_TC_PROFILE_VOLUME, MAX_TC_PROFILE_VOLUME, } from '../../constants' -import { +import { getStagingAreaAddressableAreas } from '../../utils' +import type { LabwareEntity, PipetteEntity, InvariantContext, @@ -45,7 +44,7 @@ import { AdditionalEquipmentEntities, AdditionalEquipmentEntity, } from '@opentrons/step-generation' -import { getStagingAreaAddressableAreas } from '../../utils' +import type { ValueMasker, ValueCaster } from './processing' import type { StepFieldName } from '../../form-types' import type { AddressableAreaName, diff --git a/protocol-designer/src/steplist/formLevel/createBlankForm.ts b/protocol-designer/src/steplist/formLevel/createBlankForm.ts index f7fcd6a7743..c8e22a1fb88 100644 --- a/protocol-designer/src/steplist/formLevel/createBlankForm.ts +++ b/protocol-designer/src/steplist/formLevel/createBlankForm.ts @@ -1,5 +1,10 @@ import { getDefaultsForStepType } from './getDefaultsForStepType' -import { StepType, StepIdType, BlankForm, FormData } from '../../form-types' +import type { + StepType, + StepIdType, + BlankForm, + FormData, +} from '../../form-types' interface NewFormArgs { stepId: StepIdType stepType: StepType diff --git a/protocol-designer/src/steplist/formLevel/errors.ts b/protocol-designer/src/steplist/formLevel/errors.ts index 64aac638745..a9158bea010 100644 --- a/protocol-designer/src/steplist/formLevel/errors.ts +++ b/protocol-designer/src/steplist/formLevel/errors.ts @@ -1,4 +1,3 @@ -import * as React from 'react' import { getWellRatio } from '../utils' import { canPipetteUseLabware } from '../../utils' import { MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2 } from '@opentrons/shared-data' @@ -13,7 +12,8 @@ import { PAUSE_UNTIL_TEMP, THERMOCYCLER_PROFILE, } from '../../constants' -import { StepFieldName } from '../../form-types' +import type * as React from 'react' +import type { StepFieldName } from '../../form-types' import type { LabwareEntities } from '@opentrons/step-generation' /******************* ** Error Messages ** diff --git a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts index a6933bc85e4..23ee6d1d5e3 100644 --- a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts +++ b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts @@ -6,7 +6,7 @@ import { DEFAULT_DELAY_SECONDS, DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, } from '../../constants' -import { StepType, StepFieldName } from '../../form-types' +import type { StepType, StepFieldName } from '../../form-types' export function getDefaultsForStepType( stepType: StepType ): Record { diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultEngageHeight/index.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultEngageHeight/index.ts index 6220e92e875..5ffc41e7b62 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultEngageHeight/index.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultEngageHeight/index.ts @@ -1,5 +1,5 @@ import last from 'lodash/last' -import { StepIdType, FormData } from '../../../form-types' +import type { StepIdType, FormData } from '../../../form-types' export function getNextDefaultEngageHeight( savedForms: Record, orderedStepIds: StepIdType[] diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultMagnetAction/index.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultMagnetAction/index.ts index 062c007fb86..ef0e2888b98 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultMagnetAction/index.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultMagnetAction/index.ts @@ -1,5 +1,5 @@ import last from 'lodash/last' -import { StepIdType, FormData, MagnetAction } from '../../../form-types' +import type { StepIdType, FormData, MagnetAction } from '../../../form-types' export function getNextDefaultMagnetAction( savedForms: Record, orderedStepIds: StepIdType[] diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultTemperatureModuleId.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultTemperatureModuleId.ts index 6d24c6a0ca3..b727de28de5 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultTemperatureModuleId.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultTemperatureModuleId.ts @@ -1,7 +1,7 @@ import findKey from 'lodash/findKey' import { TEMPERATURE_MODULE_TYPE } from '@opentrons/shared-data' -import { ModuleOnDeck } from '../../../step-forms' -import { StepIdType, FormData } from '../../../form-types' +import type { ModuleOnDeck } from '../../../step-forms' +import type { StepIdType, FormData } from '../../../form-types' export function getNextDefaultTemperatureModuleId( savedForms: Record, orderedStepIds: StepIdType[], diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultThermocyclerModuleId.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultThermocyclerModuleId.ts index 2064e2fc985..bf993d6d952 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultThermocyclerModuleId.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/getNextDefaultThermocyclerModuleId.ts @@ -1,6 +1,6 @@ import findKey from 'lodash/findKey' import { THERMOCYCLER_MODULE_TYPE } from '@opentrons/shared-data' -import { ModuleOnDeck } from '../../../step-forms' +import type { ModuleOnDeck } from '../../../step-forms' export function getNextDefaultThermocyclerModuleId( equippedModulesById: Record ): string | null { diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultPipetteId/index.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultPipetteId/index.ts index d4880136bc3..2d8732efcd0 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultPipetteId/index.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultPipetteId/index.ts @@ -1,7 +1,7 @@ import findKey from 'lodash/findKey' import last from 'lodash/last' -import { PipetteOnDeck } from '../../../step-forms' -import { StepIdType, FormData } from '../../../form-types' +import type { PipetteOnDeck } from '../../../step-forms' +import type { StepIdType, FormData } from '../../../form-types' // TODO: Ian 2018-09-18 once we support switching pipettes mid-protocol, // this should use pipette state in RobotState, instead of pipettes/ selectors // (which represent initial pipette state, expected to be static across the timeline) diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateHeaterShaker.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateHeaterShaker.ts index 9931472ba43..3147357bf31 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateHeaterShaker.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateHeaterShaker.ts @@ -1,6 +1,6 @@ import { chainPatchUpdaters, fieldHasChanged } from './utils' -import { FormData } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData } from '../../../form-types' +import type { FormPatch } from '../../actions/types' const updatePatchOnSetShakeChange = ( patch: FormPatch, diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMagnet.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMagnet.ts index 035b77cd1cc..1b5ed50ef5c 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMagnet.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMagnet.ts @@ -1,8 +1,8 @@ import pick from 'lodash/pick' import { chainPatchUpdaters, fieldHasChanged } from './utils' import { getDefaultsForStepType } from '../getDefaultsForStepType' -import { FormData, StepFieldName } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData, StepFieldName } from '../../../form-types' +import type { FormPatch } from '../../actions/types' // TODO: Ian 2019-02-21 import this from a more central place - see #2926 const getDefaultFields = (...fields: StepFieldName[]): FormPatch => diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts index 86df6366716..7a493118348 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts @@ -27,8 +27,8 @@ import type { LabwareEntities, PipetteEntities, } from '@opentrons/step-generation' -import { FormData, StepFieldName } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData, StepFieldName } from '../../../form-types' +import type { FormPatch } from '../../actions/types' // TODO: Ian 2019-02-21 import this from a more central place - see #2926 const getDefaultFields = (...fields: StepFieldName[]): FormPatch => diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdatePause.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdatePause.ts index 65fb9c4270d..902ec98309d 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdatePause.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdatePause.ts @@ -2,8 +2,8 @@ import pick from 'lodash/pick' import { chainPatchUpdaters, fieldHasChanged } from './utils' import { getDefaultsForStepType } from '../getDefaultsForStepType' -import { FormData, StepFieldName } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData, StepFieldName } from '../../../form-types' +import type { FormPatch } from '../../actions/types' // TODO: Ian 2019-02-21 import this from a more central place - see #2926 const getDefaultFields = (...fields: StepFieldName[]): FormPatch => diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateTemperature.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateTemperature.ts index d282b1d589c..fa8264edd93 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateTemperature.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateTemperature.ts @@ -1,8 +1,8 @@ import pick from 'lodash/pick' import { chainPatchUpdaters, fieldHasChanged } from './utils' import { getDefaultsForStepType } from '../getDefaultsForStepType' -import { FormData, StepFieldName } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData, StepFieldName } from '../../../form-types' +import type { FormPatch } from '../../actions/types' // TODO: Ian 2019-02-21 import this from a more central place - see #2926 const getDefaultFields = (...fields: StepFieldName[]): FormPatch => diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateThermocycler.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateThermocycler.ts index 507140fa64a..c0e315d19a6 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateThermocycler.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateThermocycler.ts @@ -1,8 +1,8 @@ import pick from 'lodash/pick' import { chainPatchUpdaters, fieldHasChanged } from './utils' import { getDefaultsForStepType } from '../getDefaultsForStepType' -import { FormData, StepFieldName } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { FormData, StepFieldName } from '../../../form-types' +import type { FormPatch } from '../../actions/types' // TODO: Ian 2019-02-21 import this from a more central place - see #2926 const getDefaultFields = (...fields: StepFieldName[]): FormPatch => diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/index.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/index.ts index ecdde16ede4..a86737aa037 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/index.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/index.ts @@ -5,9 +5,12 @@ import { dependentFieldsUpdatePause } from './dependentFieldsUpdatePause' import { dependentFieldsUpdateTemperature } from './dependentFieldsUpdateTemperature' import { dependentFieldsUpdateHeaterShaker } from './dependentFieldsUpdateHeaterShaker' import { dependentFieldsUpdateThermocycler } from './dependentFieldsUpdateThermocycler' -import { LabwareEntities, PipetteEntities } from '@opentrons/step-generation' -import { FormData } from '../../../form-types' -import { FormPatch } from '../../actions/types' +import type { + LabwareEntities, + PipetteEntities, +} from '@opentrons/step-generation' +import type { FormData } from '../../../form-types' +import type { FormPatch } from '../../actions/types' export function handleFormChange( patch: FormPatch, rawForm: FormData | null | undefined, diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts index 692ee51fe0d..7ac47b9695f 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts @@ -14,8 +14,8 @@ import { import { fixtureP10SingleV2Specs, fixtureP300SingleV2Specs, - LabwareDefinition2, } from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { PipetteEntities, LabwareEntities, diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts index 4ec62eb354d..fe5e82ff767 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts @@ -2,10 +2,16 @@ import round from 'lodash/round' import uniq from 'lodash/uniq' import { getWellSetForMultichannel, canPipetteUseLabware } from '../../../utils' import { getPipetteCapacity } from '../../../pipettes/pipetteData' -import { LabwareDefinition2, PipetteChannels } from '@opentrons/shared-data' -import { LabwareEntities, PipetteEntities } from '@opentrons/step-generation' -import { FormPatch } from '../../actions/types' -import { FormData, PathOption, StepFieldName } from '../../../form-types' +import type { + LabwareDefinition2, + PipetteChannels, +} from '@opentrons/shared-data' +import type { + LabwareEntities, + PipetteEntities, +} from '@opentrons/step-generation' +import type { FormPatch } from '../../actions/types' +import type { FormData, PathOption, StepFieldName } from '../../../form-types' export function chainPatchUpdaters( initialPatch: FormPatch, fns: Array<(arg0: FormPatch) => FormPatch> diff --git a/protocol-designer/src/steplist/formLevel/index.ts b/protocol-designer/src/steplist/formLevel/index.ts index 6f003bdc77e..efa9334315e 100644 --- a/protocol-designer/src/steplist/formLevel/index.ts +++ b/protocol-designer/src/steplist/formLevel/index.ts @@ -1,5 +1,4 @@ import { - FormError, composeErrors, incompatibleAspirateLabware, incompatibleDispenseLabware, @@ -21,8 +20,6 @@ import { } from './errors' import { - FormWarning, - FormWarningType, composeWarnings, belowPipetteMinimumVolume, maxDispenseWellVolume, @@ -33,7 +30,9 @@ import { tipPositionInTube, } from './warnings' -import { HydratedFormdata, StepType } from '../../form-types' +import type { FormWarning, FormWarningType } from './warnings' +import type { HydratedFormdata, StepType } from '../../form-types' +import type { FormError } from './errors' export { handleFormChange } from './handleFormChange' export { createBlankForm } from './createBlankForm' export { getDefaultsForStepType } from './getDefaultsForStepType' diff --git a/protocol-designer/src/steplist/formLevel/profileErrors.ts b/protocol-designer/src/steplist/formLevel/profileErrors.ts index 908dcbe86d6..8c7b9f3aeba 100644 --- a/protocol-designer/src/steplist/formLevel/profileErrors.ts +++ b/protocol-designer/src/steplist/formLevel/profileErrors.ts @@ -1,6 +1,7 @@ import uniqBy from 'lodash/uniqBy' import { THERMOCYCLER_PROFILE } from '../../constants' -import { PROFILE_STEP, ProfileStepItem } from '../../form-types' +import { PROFILE_STEP } from '../../form-types' +import type { ProfileStepItem } from '../../form-types' // TODO: real HydratedFormData type type HydratedFormData = any diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts index fe7911e5e6e..061dab8fe3a 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts @@ -1,6 +1,6 @@ -import { InnerDelayArgs } from '@opentrons/step-generation' import { getDefaultMmFromBottom } from '../../../components/StepEditForm/fields/TipPositionField/utils' -import { +import type { InnerDelayArgs } from '@opentrons/step-generation' +import type { DelayCheckboxFields, DelaySecondFields, HydratedMoveLiquidFormData, diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/heaterShakerFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/heaterShakerFormToArgs.ts index e951c626db3..8366864f190 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/heaterShakerFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/heaterShakerFormToArgs.ts @@ -1,4 +1,4 @@ -import { HeaterShakerArgs } from '@opentrons/step-generation' +import type { HeaterShakerArgs } from '@opentrons/step-generation' import type { HydratedHeaterShakerFormData } from '../../../form-types' export const heaterShakerFormToArgs = ( diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/index.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/index.ts index 8923c6bca8c..5c4eb608055 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/index.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/index.ts @@ -1,5 +1,4 @@ import mapValues from 'lodash/mapValues' -import { CommandCreatorArgs } from '@opentrons/step-generation' import { castField } from '../../../steplist/fieldLevel' import { mixFormToArgs } from './mixFormToArgs' import { pauseFormToArgs } from './pauseFormToArgs' @@ -9,6 +8,7 @@ import { thermocyclerFormToArgs } from './thermocyclerFormToArgs' import { heaterShakerFormToArgs } from './heaterShakerFormToArgs' import { moveLiquidFormToArgs } from './moveLiquidFormToArgs' import { moveLabwareFormToArgs } from './moveLabwareFormToArgs' +import type { CommandCreatorArgs } from '@opentrons/step-generation' import type { FormData } from '../../../form-types' // NOTE: this acts as an adapter for the PD defined data shape of the step forms // to create arguments that the step generation service is expecting diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/magnetFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/magnetFormToArgs.ts index 4c20f5c8de2..e9ce7ec546d 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/magnetFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/magnetFormToArgs.ts @@ -1,8 +1,8 @@ -import { +import type { EngageMagnetArgs, DisengageMagnetArgs, } from '@opentrons/step-generation' -import { HydratedMagnetFormData } from '../../../form-types' +import type { HydratedMagnetFormData } from '../../../form-types' type MagnetArgs = EngageMagnetArgs | DisengageMagnetArgs export const magnetFormToArgs = ( hydratedFormData: HydratedMagnetFormData diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts index 4b22040578f..17b1125c763 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts @@ -8,9 +8,9 @@ import { } from '../../../constants' import { getOrderedWells } from '../../utils' import { getMixDelayData } from './getDelayData' -import { HydratedMixFormDataLegacy } from '../../../form-types' -import { MixArgs } from '@opentrons/step-generation' import { getMatchingTipLiquidSpecs } from '../../../utils' +import type { HydratedMixFormDataLegacy } from '../../../form-types' +import type { MixArgs } from '@opentrons/step-generation' type MixStepArgs = MixArgs export const mixFormToArgs = ( hydratedFormData: HydratedMixFormDataLegacy diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts index 04f87317ff0..c9d83e49b02 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts @@ -1,4 +1,4 @@ -import { getWellsDepth, LabwareDefinition2 } from '@opentrons/shared-data' +import { getWellsDepth } from '@opentrons/shared-data' import { DEST_WELL_BLOWOUT_DESTINATION } from '@opentrons/step-generation' import { DEFAULT_MM_FROM_BOTTOM_ASPIRATE, @@ -8,14 +8,15 @@ import { } from '../../../constants' import { getOrderedWells } from '../../utils' import { getMoveLiquidDelayData } from './getDelayData' -import { HydratedMoveLiquidFormData } from '../../../form-types' +import { getMatchingTipLiquidSpecs } from '../../../utils' import type { ConsolidateArgs, DistributeArgs, TransferArgs, InnerMixArgs, } from '@opentrons/step-generation' -import { getMatchingTipLiquidSpecs } from '../../../utils' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { HydratedMoveLiquidFormData } from '../../../form-types' type MoveLiquidFields = HydratedMoveLiquidFormData['fields'] // NOTE(sa, 2020-08-11): leaving this as fn so it can be expanded later for dispense air gap diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/pauseFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/pauseFormToArgs.ts index 801dcfbe1ea..1baea445994 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/pauseFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/pauseFormToArgs.ts @@ -3,7 +3,7 @@ import { PAUSE_UNTIL_TEMP, PAUSE_UNTIL_RESUME, } from '../../../constants' -import { FormData } from '../../../form-types' +import type { FormData } from '../../../form-types' import type { WaitForTemperatureArgs, PauseArgs, diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/temperatureFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/temperatureFormToArgs.ts index 3ac49ad5e5a..72f00317413 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/temperatureFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/temperatureFormToArgs.ts @@ -1,8 +1,8 @@ -import { +import type { SetTemperatureArgs, DeactivateTemperatureArgs, } from '@opentrons/step-generation' -import { HydratedTemperatureFormData } from '../../../form-types' +import type { HydratedTemperatureFormData } from '../../../form-types' type TemperatureArgs = SetTemperatureArgs | DeactivateTemperatureArgs export const temperatureFormToArgs = ( hydratedFormData: HydratedTemperatureFormData diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/pauseFormToArgs.test.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/pauseFormToArgs.test.ts index 1014c1a611d..fe9665e477c 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/pauseFormToArgs.test.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/pauseFormToArgs.test.ts @@ -4,8 +4,8 @@ import { PAUSE_UNTIL_RESUME, PAUSE_UNTIL_TIME, } from '../../../../constants' -import { FormData } from '../../../../form-types' import { pauseFormToArgs } from '../pauseFormToArgs' +import type { FormData } from '../../../../form-types' describe('pauseFormToArgs', () => { it('returns waitForTemperature command creator when form specifies pause until temp', () => { diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/stepFormToArgs.test.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/stepFormToArgs.test.ts index 8a03c718ba9..05557b3d1b7 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/stepFormToArgs.test.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/stepFormToArgs.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { _castForm } from '../index' -import { FormData } from '../../../../form-types' +import type { FormData } from '../../../../form-types' // NOTE(IL, 2020-09-24): I think the real solution to validating the // output of hydration/casting is static typing as per #3161 diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/thermocyclerFormToArgs.test.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/thermocyclerFormToArgs.test.ts index 8d26e5780c0..f5af393e50e 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/thermocyclerFormToArgs.test.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/thermocyclerFormToArgs.test.ts @@ -2,11 +2,11 @@ import { describe, it, expect } from 'vitest' import { THERMOCYCLER_PROFILE, THERMOCYCLER_STATE } from '../../../../constants' import { getDefaultsForStepType } from '../../getDefaultsForStepType' import { thermocyclerFormToArgs } from '../thermocyclerFormToArgs' -import { FormData } from '../../../../form-types' import type { ThermocyclerStateStepArgs, ThermocyclerProfileStepArgs, } from '@opentrons/step-generation' +import type { FormData } from '../../../../form-types' const tcModuleId = 'tcModuleId' describe('thermocyclerFormToArgs', () => { diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/thermocyclerFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/thermocyclerFormToArgs.ts index aedcfa1bbb0..9a6e3b52915 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/thermocyclerFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/thermocyclerFormToArgs.ts @@ -1,9 +1,9 @@ import { THERMOCYCLER_STATE, THERMOCYCLER_PROFILE } from '../../../constants' -import { +import { PROFILE_STEP } from '../../../form-types' +import type { ThermocyclerProfileStepArgs, ThermocyclerStateStepArgs, } from '@opentrons/step-generation' -import { PROFILE_STEP } from '../../../form-types' import type { FormData, ProfileItem, diff --git a/protocol-designer/src/steplist/generateSubstepItem.ts b/protocol-designer/src/steplist/generateSubstepItem.ts index 2c58befeeda..94fd68d77d2 100644 --- a/protocol-designer/src/steplist/generateSubstepItem.ts +++ b/protocol-designer/src/steplist/generateSubstepItem.ts @@ -21,8 +21,8 @@ import type { MixArgs, TransferArgs, } from '@opentrons/step-generation' -import { StepIdType } from '../form-types' -import { +import type { StepIdType } from '../form-types' +import type { NamedIngred, StepArgsAndErrors, StepItemSourceDestRow, diff --git a/protocol-designer/src/steplist/index.ts b/protocol-designer/src/steplist/index.ts index cc218970675..9b2bee3b3ad 100644 --- a/protocol-designer/src/steplist/index.ts +++ b/protocol-designer/src/steplist/index.ts @@ -2,11 +2,8 @@ import * as actions from './actions' import * as utils from './utils' import { getFieldErrors, castField, maskField } from './fieldLevel' -import { - getDefaultsForStepType, - FormWarning, - FormWarningType, -} from './formLevel' +import { getDefaultsForStepType } from './formLevel' +import type { FormWarning, FormWarningType } from './formLevel' export * from './types' export type { FormWarning, FormWarningType } export { diff --git a/protocol-designer/src/steplist/substepTimeline.ts b/protocol-designer/src/steplist/substepTimeline.ts index d164a33bedf..0788acbde6f 100644 --- a/protocol-designer/src/steplist/substepTimeline.ts +++ b/protocol-designer/src/steplist/substepTimeline.ts @@ -5,16 +5,18 @@ import { getNextRobotStateAndWarningsSingleCommand, } from '@opentrons/step-generation' import { - AddressableAreaName, FLEX_ROBOT_TYPE, ALL, COLUMN, - CreateCommand, OT2_ROBOT_TYPE, - NozzleConfigurationStyle, } from '@opentrons/shared-data' -import { Channels } from '@opentrons/components' import { getCutoutIdByAddressableArea } from '../utils' +import type { Channels } from '@opentrons/components' +import type { + AddressableAreaName, + CreateCommand, + NozzleConfigurationStyle, +} from '@opentrons/shared-data' import type { CommandCreatorError, CommandsAndWarnings, diff --git a/protocol-designer/src/steplist/types.ts b/protocol-designer/src/steplist/types.ts index 6855104c5dd..f762d348847 100644 --- a/protocol-designer/src/steplist/types.ts +++ b/protocol-designer/src/steplist/types.ts @@ -1,5 +1,5 @@ -import { THERMOCYCLER_PROFILE, THERMOCYCLER_STATE } from '../constants' -import { +import type { THERMOCYCLER_PROFILE, THERMOCYCLER_STATE } from '../constants' +import type { CommandCreatorArgs, MoveLabwareArgs, PauseArgs, diff --git a/protocol-designer/src/steplist/utils/index.ts b/protocol-designer/src/steplist/utils/index.ts index 17c5360f486..a2701772355 100644 --- a/protocol-designer/src/steplist/utils/index.ts +++ b/protocol-designer/src/steplist/utils/index.ts @@ -1,6 +1,6 @@ import { mergeWhen } from './mergeWhen' import { getOrderedWells } from './orderWells' -import { StepIdType } from '../../form-types' +import type { StepIdType } from '../../form-types' export { mergeWhen, getOrderedWells } export type WellRatio = 'n:n' | '1:many' | 'many:1' diff --git a/protocol-designer/src/steplist/utils/orderWells.ts b/protocol-designer/src/steplist/utils/orderWells.ts index ab4db8e4faf..130d284741d 100644 --- a/protocol-designer/src/steplist/utils/orderWells.ts +++ b/protocol-designer/src/steplist/utils/orderWells.ts @@ -1,6 +1,7 @@ import intersection from 'lodash/intersection' -import { LabwareDefinition2, orderWells } from '@opentrons/shared-data' -import { WellOrderOption } from '../../form-types' +import { orderWells } from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { WellOrderOption } from '../../form-types' export function getOrderedWells( unorderedWells: string[], labwareDef: LabwareDefinition2, diff --git a/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts b/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts index 795512828dc..7379e30bd52 100644 --- a/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts +++ b/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts @@ -8,13 +8,10 @@ import { DEST_LABWARE, FIXED_TRASH_ID, } from '@opentrons/step-generation' +import { fixtureTiprack300ul, getLabwareDefURI } from '@opentrons/shared-data' import { generateRobotStateTimeline } from '../generateRobotStateTimeline' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { StepArgsAndErrorsById } from '../../steplist' -import { - LabwareDefinition2, - fixtureTiprack300ul, - getLabwareDefURI, -} from '@opentrons/shared-data' vi.mock('../../labware-defs/utils') diff --git a/protocol-designer/src/timelineMiddleware/generateSubsteps.ts b/protocol-designer/src/timelineMiddleware/generateSubsteps.ts index 005d1c7a90c..8b8c20af69c 100644 --- a/protocol-designer/src/timelineMiddleware/generateSubsteps.ts +++ b/protocol-designer/src/timelineMiddleware/generateSubsteps.ts @@ -1,10 +1,10 @@ -import { +import { generateSubstepItem } from '../steplist/generateSubstepItem' +import type { Timeline, RobotState, InvariantContext, } from '@opentrons/step-generation' -import { generateSubstepItem } from '../steplist/generateSubstepItem' -import { +import type { LabwareNamesByModuleId, StepArgsAndErrorsById, Substeps, diff --git a/protocol-designer/src/timelineMiddleware/makeTimelineMiddleware.ts b/protocol-designer/src/timelineMiddleware/makeTimelineMiddleware.ts index 9d9d2f399a9..2b6e6f2bc25 100644 --- a/protocol-designer/src/timelineMiddleware/makeTimelineMiddleware.ts +++ b/protocol-designer/src/timelineMiddleware/makeTimelineMiddleware.ts @@ -7,13 +7,13 @@ import { getInitialRobotState } from '../file-data/selectors' import { computeRobotStateTimelineRequest, computeRobotStateTimelineSuccess, - ComputeRobotStateTimelineSuccessAction, } from '../file-data/actions' import { getLabwareNamesByModuleId } from '../ui/modules/selectors' -import { Middleware } from 'redux' -import { BaseState } from '../types' -import { GenerateRobotStateTimelineArgs } from './generateRobotStateTimeline' -import { SubstepsArgsNoTimeline } from './types' +import type { ComputeRobotStateTimelineSuccessAction } from '../file-data/actions' +import type { Middleware } from 'redux' +import type { BaseState } from '../types' +import type { GenerateRobotStateTimelineArgs } from './generateRobotStateTimeline' +import type { SubstepsArgsNoTimeline } from './types' const hasChanged = ( nextValues: { [key in any]?: any }, diff --git a/protocol-designer/src/timelineMiddleware/types.ts b/protocol-designer/src/timelineMiddleware/types.ts index 443c40bd6a3..758daabe263 100644 --- a/protocol-designer/src/timelineMiddleware/types.ts +++ b/protocol-designer/src/timelineMiddleware/types.ts @@ -1,7 +1,7 @@ -import { Timeline } from '@opentrons/step-generation' -import { Substeps } from '../steplist/types' -import { GenerateRobotStateTimelineArgs } from './generateRobotStateTimeline' -import { GenerateSubstepsArgs } from './generateSubsteps' +import type { Timeline } from '@opentrons/step-generation' +import type { Substeps } from '../steplist/types' +import type { GenerateRobotStateTimelineArgs } from './generateRobotStateTimeline' +import type { GenerateSubstepsArgs } from './generateSubsteps' // worker itself will spread the robotStateTimeline in export type SubstepsArgsNoTimeline = Omit< GenerateSubstepsArgs, diff --git a/protocol-designer/src/timelineMiddleware/worker.ts b/protocol-designer/src/timelineMiddleware/worker.ts index 243331a1bee..7fa50480dfa 100644 --- a/protocol-designer/src/timelineMiddleware/worker.ts +++ b/protocol-designer/src/timelineMiddleware/worker.ts @@ -1,6 +1,7 @@ -import { Timeline } from '@opentrons/step-generation' import { generateRobotStateTimeline } from './generateRobotStateTimeline' import { generateSubsteps } from './generateSubsteps' +import type { Timeline } from '@opentrons/step-generation' + addEventListener('message', event => { // NOTE: may have performance increase by not sending both // eg timelineArgs.initialRobotState and substepsArgs.initialRobotState diff --git a/protocol-designer/src/top-selectors/labware-locations/index.ts b/protocol-designer/src/top-selectors/labware-locations/index.ts index 6c66367fb4f..7741f3a7314 100644 --- a/protocol-designer/src/top-selectors/labware-locations/index.ts +++ b/protocol-designer/src/top-selectors/labware-locations/index.ts @@ -7,7 +7,6 @@ import { FLEX_ROBOT_TYPE, WASTE_CHUTE_ADDRESSABLE_AREAS, WASTE_CHUTE_CUTOUT, - CutoutId, STAGING_AREA_RIGHT_SLOT_FIXTURE, isAddressableAreaStandardSlot, MOVABLE_TRASH_ADDRESSABLE_AREAS, @@ -20,10 +19,7 @@ import { PRESAVED_STEP_ID, } from '../../steplist' import { getHasWasteChute } from '../../components/labware' -import { - AllTemporalPropertiesForTimelineFrame, - selectors as stepFormSelectors, -} from '../../step-forms' +import { selectors as stepFormSelectors } from '../../step-forms' import { getActiveItem } from '../../ui/steps' import { TERMINAL_ITEM_SELECTION_TYPE } from '../../ui/steps/reducers' import { selectors as fileDataSelectors } from '../../file-data' @@ -35,9 +31,10 @@ import { getAdditionalEquipmentEntities, } from '../../step-forms/selectors' import { getIsAdapter } from '../../utils' +import type { CutoutId, AddressableAreaName } from '@opentrons/shared-data' import type { RobotState } from '@opentrons/step-generation' +import type { AllTemporalPropertiesForTimelineFrame } from '../../step-forms' import type { Selector } from '../../types' -import type { AddressableAreaName } from '@opentrons/shared-data' interface Option { name: string diff --git a/protocol-designer/src/top-selectors/substep-highlight.ts b/protocol-designer/src/top-selectors/substep-highlight.ts index 1144b81fe59..8aeccdb5ef4 100644 --- a/protocol-designer/src/top-selectors/substep-highlight.ts +++ b/protocol-designer/src/top-selectors/substep-highlight.ts @@ -1,18 +1,16 @@ import { createSelector } from 'reselect' import mapValues from 'lodash/mapValues' -import { - ALL, - COLUMN, - getWellNamePerMultiTip, - NozzleConfigurationStyle, -} from '@opentrons/shared-data' -import { WellGroup } from '@opentrons/components' +import { ALL, COLUMN, getWellNamePerMultiTip } from '@opentrons/shared-data' import * as StepGeneration from '@opentrons/step-generation' import { selectors as stepFormSelectors } from '../step-forms' import { selectors as fileDataSelectors } from '../file-data' import { getHoveredStepId, getHoveredSubstep } from '../ui/steps' import { getWellSetForMultichannel } from '../utils' -import type { CreateCommand } from '@opentrons/shared-data' +import type { WellGroup } from '@opentrons/components' +import type { + NozzleConfigurationStyle, + CreateCommand, +} from '@opentrons/shared-data' import type { PipetteEntity, LabwareEntity } from '@opentrons/step-generation' import type { Selector } from '../types' import type { SubstepItemData } from '../steplist/types' diff --git a/protocol-designer/src/top-selectors/timelineFrames.ts b/protocol-designer/src/top-selectors/timelineFrames.ts index 06e0b5e0bbf..4015af4aa70 100644 --- a/protocol-designer/src/top-selectors/timelineFrames.ts +++ b/protocol-designer/src/top-selectors/timelineFrames.ts @@ -1,20 +1,19 @@ import { createSelector } from 'reselect' - import { selectors as fileDataSelectors } from '../file-data' import { selectors as stepFormSelectors } from '../step-forms' import { getActiveItem } from '../ui/steps/selectors' import { START_TERMINAL_ITEM_ID, PRESAVED_STEP_ID } from '../steplist' import { + SINGLE_STEP_SELECTION_TYPE, + TERMINAL_ITEM_SELECTION_TYPE, +} from '../ui/steps/reducers' +import type { CommandsAndRobotState, RobotState, Timeline, } from '@opentrons/step-generation' -import { Selector } from '../types' -import { - HoverableItem, - SINGLE_STEP_SELECTION_TYPE, - TERMINAL_ITEM_SELECTION_TYPE, -} from '../ui/steps/reducers' +import type { Selector } from '../types' +import type { HoverableItem } from '../ui/steps/reducers' const _timelineFrameHelper = (beforeActiveItem: boolean) => ( activeItem: HoverableItem | null, diff --git a/protocol-designer/src/top-selectors/timelineWarnings/index.ts b/protocol-designer/src/top-selectors/timelineWarnings/index.ts index d9ca0de7c16..2a8e3252af9 100644 --- a/protocol-designer/src/top-selectors/timelineWarnings/index.ts +++ b/protocol-designer/src/top-selectors/timelineWarnings/index.ts @@ -3,8 +3,8 @@ import { selectors as fileDataSelectors } from '../../file-data' import { selectors as stepFormSelectors } from '../../step-forms' import { getSelectedStepId } from '../../ui/steps' import { selectors as dismissSelectors } from '../../dismiss' -import { CommandCreatorWarning } from '@opentrons/step-generation' -import { Selector } from '../../types' +import type { CommandCreatorWarning } from '@opentrons/step-generation' +import type { Selector } from '../../types' export const getTimelineWarningsForSelectedStep: Selector< CommandCreatorWarning[] > = createSelector( diff --git a/protocol-designer/src/top-selectors/tip-contents/index.ts b/protocol-designer/src/top-selectors/tip-contents/index.ts index 5d3774b43a8..7f62e91cb05 100644 --- a/protocol-designer/src/top-selectors/tip-contents/index.ts +++ b/protocol-designer/src/top-selectors/tip-contents/index.ts @@ -10,8 +10,8 @@ import { selectors as stepFormSelectors } from '../../step-forms' import { getActiveItem } from '../../ui/steps' import { TERMINAL_ITEM_SELECTION_TYPE } from '../../ui/steps/reducers' import { selectors as fileDataSelectors } from '../../file-data' -import { WellGroup } from '@opentrons/components' -import { Selector } from '../../types' +import type { WellGroup } from '@opentrons/components' +import type { Selector } from '../../types' export const getMissingTipsByLabwareId: Selector state.tutorial diff --git a/protocol-designer/src/ui/index.ts b/protocol-designer/src/ui/index.ts index 2739a5b9f6f..2e54df4cb20 100644 --- a/protocol-designer/src/ui/index.ts +++ b/protocol-designer/src/ui/index.ts @@ -1,6 +1,9 @@ -import { combineReducers, Reducer } from 'redux' -import { rootReducer as stepsReducer, StepsState } from './steps/reducers' -import { Action } from '../types' +import { combineReducers } from 'redux' +import { rootReducer as stepsReducer } from './steps/reducers' +import type { Reducer } from 'redux' +import type { Action } from '../types' +import type { StepsState } from './steps/reducers' + export interface RootState { steps: StepsState } diff --git a/protocol-designer/src/ui/labware/selectors.ts b/protocol-designer/src/ui/labware/selectors.ts index 0c68ceb87c6..1f321526c76 100644 --- a/protocol-designer/src/ui/labware/selectors.ts +++ b/protocol-designer/src/ui/labware/selectors.ts @@ -2,13 +2,15 @@ import { createSelector } from 'reselect' import mapValues from 'lodash/mapValues' import reduce from 'lodash/reduce' import { getIsTiprack, getLabwareDisplayName } from '@opentrons/shared-data' -import { AdditionalEquipmentEntity } from '@opentrons/step-generation' import * as stepFormSelectors from '../../step-forms/selectors' import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' import { getModuleShortNames, getModuleUnderLabware } from '../modules/utils' import { getLabwareOffDeck, getLabwareInColumn4 } from './utils' -import type { LabwareEntity } from '@opentrons/step-generation' +import type { + LabwareEntity, + AdditionalEquipmentEntity, +} from '@opentrons/step-generation' import type { DropdownOption, Options } from '@opentrons/components' import type { Selector } from '../../types' import type { diff --git a/protocol-designer/src/ui/modules/selectors.ts b/protocol-designer/src/ui/modules/selectors.ts index 1d5ec7bdb08..ea8f3ba5433 100644 --- a/protocol-designer/src/ui/modules/selectors.ts +++ b/protocol-designer/src/ui/modules/selectors.ts @@ -17,8 +17,8 @@ import { getMagnetLabwareEngageHeight as getMagnetLabwareEngageHeightUtil, getModulesOnDeckByType, getModulesHaveLabware, - ModuleAndLabware, } from './utils' +import type { ModuleAndLabware } from './utils' import type { Options } from '@opentrons/components' import type { Selector } from '../../types' import type { LabwareNamesByModuleId } from '../../steplist/types' diff --git a/protocol-designer/src/ui/modules/utils.ts b/protocol-designer/src/ui/modules/utils.ts index e49e8ad7b33..54b7b4c4b76 100644 --- a/protocol-designer/src/ui/modules/utils.ts +++ b/protocol-designer/src/ui/modules/utils.ts @@ -2,9 +2,9 @@ import values from 'lodash/values' import { MAGNETIC_MODULE_V1, getLabwareDefaultEngageHeight, - ModuleType, } from '@opentrons/shared-data' -import { Options } from '@opentrons/components' +import type { Options } from '@opentrons/components' +import type { ModuleType } from '@opentrons/shared-data' import type { ModuleOnDeck, LabwareOnDeck, diff --git a/protocol-designer/src/ui/steps/__fixtures__/index.ts b/protocol-designer/src/ui/steps/__fixtures__/index.ts index 7b0a3391c23..b7eeee3ec4a 100644 --- a/protocol-designer/src/ui/steps/__fixtures__/index.ts +++ b/protocol-designer/src/ui/steps/__fixtures__/index.ts @@ -1,4 +1,4 @@ -import { SavedStepFormState } from '../../../step-forms' +import type { SavedStepFormState } from '../../../step-forms' export const getMockMoveLiquidStep = (): SavedStepFormState => ({ move_liquid_step_id: { pipette: 'some_pipette_id', diff --git a/protocol-designer/src/ui/steps/actions/actions.ts b/protocol-designer/src/ui/steps/actions/actions.ts index ea19fdfb503..bdd41e323ae 100644 --- a/protocol-designer/src/ui/steps/actions/actions.ts +++ b/protocol-designer/src/ui/steps/actions/actions.ts @@ -1,21 +1,16 @@ import last from 'lodash/last' -import { - analyticsEvent, - AnalyticsEventAction, -} from '../../../analytics/actions' -import { - PRESAVED_STEP_ID, - TerminalItemId, - SubstepIdentifier, -} from '../../../steplist/types' +import { analyticsEvent } from '../../../analytics/actions' +import { PRESAVED_STEP_ID } from '../../../steplist/types' import { selectors as stepFormSelectors } from '../../../step-forms' import { getMultiSelectLastSelected } from '../selectors' import { resetScrollElements } from '../utils' -import { Timeline } from '@opentrons/step-generation' -import { StepIdType, StepType } from '../../../form-types' -import { GetState, ThunkAction, ThunkDispatch } from '../../../types' -import { AnalyticsEvent } from '../../../analytics/mixpanel' -import { +import type { Timeline } from '@opentrons/step-generation' +import type { StepIdType, StepType } from '../../../form-types' +import type { GetState, ThunkAction, ThunkDispatch } from '../../../types' +import type { AnalyticsEvent } from '../../../analytics/mixpanel' +import type { AnalyticsEventAction } from '../../../analytics/actions' +import type { TerminalItemId, SubstepIdentifier } from '../../../steplist/types' +import type { AddStepAction, ExpandAddStepButtonAction, ToggleStepCollapsedAction, diff --git a/protocol-designer/src/ui/steps/actions/thunks/index.ts b/protocol-designer/src/ui/steps/actions/thunks/index.ts index 9cc31de8ab8..b59780e949c 100644 --- a/protocol-designer/src/ui/steps/actions/thunks/index.ts +++ b/protocol-designer/src/ui/steps/actions/thunks/index.ts @@ -18,9 +18,9 @@ import { } from '../../../../tutorial' import * as uiModuleSelectors from '../../../../ui/modules/selectors' import * as fileDataSelectors from '../../../../file-data/selectors' -import { StepType, StepIdType, FormData } from '../../../../form-types' -import { ThunkAction } from '../../../../types' -import { +import type { StepType, StepIdType, FormData } from '../../../../form-types' +import type { ThunkAction } from '../../../../types' +import type { DuplicateStepAction, DuplicateMultipleStepsAction, SelectMultipleStepsAction, diff --git a/protocol-designer/src/ui/steps/actions/types.ts b/protocol-designer/src/ui/steps/actions/types.ts index ffae982e7fb..0205c9eac52 100644 --- a/protocol-designer/src/ui/steps/actions/types.ts +++ b/protocol-designer/src/ui/steps/actions/types.ts @@ -1,6 +1,6 @@ -import { Timeline } from '@opentrons/step-generation' -import { StepIdType, StepType } from '../../../form-types' -import { TerminalItemId, SubstepIdentifier } from '../../../steplist/types' +import type { Timeline } from '@opentrons/step-generation' +import type { StepIdType, StepType } from '../../../form-types' +import type { TerminalItemId, SubstepIdentifier } from '../../../steplist/types' interface AddStepPayload { id: string stepType: StepType diff --git a/protocol-designer/src/ui/steps/reducers.ts b/protocol-designer/src/ui/steps/reducers.ts index 4f3bcbe113d..6654a55b32c 100644 --- a/protocol-designer/src/ui/steps/reducers.ts +++ b/protocol-designer/src/ui/steps/reducers.ts @@ -1,24 +1,19 @@ -import { Reducer, combineReducers } from 'redux' - +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' import omit from 'lodash/omit' import { getPDMetadata } from '../../file-types' -import { - SubstepIdentifier, - TerminalItemId, - START_TERMINAL_ITEM_ID, - PRESAVED_STEP_ID, -} from '../../steplist/types' - -import { Action } from '../../types' -import { LoadFileAction } from '../../load-file' -import { StepIdType } from '../../form-types' -import { SaveStepFormAction } from '../steps/actions/thunks' -import { +import { START_TERMINAL_ITEM_ID, PRESAVED_STEP_ID } from '../../steplist/types' +import type { Reducer } from 'redux' +import type { SubstepIdentifier, TerminalItemId } from '../../steplist/types' +import type { DeleteStepAction, DeleteMultipleStepsAction, } from '../../steplist/actions' -import { +import type { Action } from '../../types' +import type { LoadFileAction } from '../../load-file' +import type { StepIdType } from '../../form-types' +import type { SaveStepFormAction } from '../steps/actions/thunks' +import type { AddStepAction, HoverOnStepAction, HoverOnSubstepAction, @@ -30,6 +25,7 @@ import { ExpandMultipleStepsAction, CollapseMultipleStepsAction, } from './actions/types' + export type CollapsedStepsState = Record // @ts-expect-error(sa, 2021-6-10): cannot use string literals as action type // TODO IMMEDIATELY: refactor this to the old fashioned way if we cannot have type safety: https://github.com/redux-utilities/redux-actions/issues/282#issuecomment-595163081 diff --git a/protocol-designer/src/ui/steps/selectors.ts b/protocol-designer/src/ui/steps/selectors.ts index 8ed2eeb20dd..205137d1003 100644 --- a/protocol-designer/src/ui/steps/selectors.ts +++ b/protocol-designer/src/ui/steps/selectors.ts @@ -3,18 +3,10 @@ import last from 'lodash/last' import uniq from 'lodash/uniq' import { selectors as stepFormSelectors } from '../../step-forms' import { getDefaultsForStepType } from '../../steplist/formLevel/getDefaultsForStepType' -import { - SubstepIdentifier, - TerminalItemId, - PRESAVED_STEP_ID, -} from '../../steplist/types' +import { PRESAVED_STEP_ID } from '../../steplist/types' import { getLabwareOnModule } from '../modules/utils' import { - SelectableItem, - StepsState, - CollapsedStepsState, - HoverableItem, initialSelectedItemState, SINGLE_STEP_SELECTION_TYPE, TERMINAL_ITEM_SELECTION_TYPE, @@ -31,14 +23,22 @@ import { getPipetteDifferentDisabledFields, getLabwareDisabledFields, } from './utils' -import { +import type { BaseState, Selector } from '../../types' +import type { SubstepIdentifier, TerminalItemId } from '../../steplist/types' +import type { CountPerStepType, FormData, StepFieldName, StepIdType, StepType, } from '../../form-types' -import { BaseState, Selector } from '../../types' +import type { + SelectableItem, + StepsState, + CollapsedStepsState, + HoverableItem, +} from './reducers' + export const rootSelector = (state: BaseState): StepsState => state.ui.steps // ======= Selectors =============================================== // NOTE: when the selected step is deleted, we need to fall back to the last step diff --git a/protocol-designer/src/ui/steps/test/selectors.test.ts b/protocol-designer/src/ui/steps/test/selectors.test.ts index 22b93569b04..64c96f2d9a3 100644 --- a/protocol-designer/src/ui/steps/test/selectors.test.ts +++ b/protocol-designer/src/ui/steps/test/selectors.test.ts @@ -27,7 +27,7 @@ import * as utils from '../../modules/utils' import type { FormData } from '../../../form-types' import type { StepArgsAndErrorsById } from '../../../steplist/types' -import { AllTemporalPropertiesForTimelineFrame } from '../../../step-forms' +import type { AllTemporalPropertiesForTimelineFrame } from '../../../step-forms' vi.mock('../../modules/utils') diff --git a/protocol-designer/src/ui/steps/utils.ts b/protocol-designer/src/ui/steps/utils.ts index 097a34ee93c..bf3cba42aaa 100644 --- a/protocol-designer/src/ui/steps/utils.ts +++ b/protocol-designer/src/ui/steps/utils.ts @@ -1,5 +1,5 @@ import forEach from 'lodash/forEach' -import { StepFieldName } from '../../form-types' +import type { StepFieldName } from '../../form-types' export const MAIN_CONTENT_FORCED_SCROLL_CLASSNAME = 'main_content_forced_scroll' // scroll to top of all elements with the special class (probably the main page wrapper) // diff --git a/protocol-designer/src/utils/index.ts b/protocol-designer/src/utils/index.ts index 28c91fd2aad..3366f1c3ccb 100644 --- a/protocol-designer/src/utils/index.ts +++ b/protocol-designer/src/utils/index.ts @@ -1,27 +1,29 @@ import uuidv1 from 'uuid/v4' import { - WellSetHelpers, makeWellSetHelpers, - AddressableAreaName, getDeckDefFromRobotType, FLEX_ROBOT_TYPE, - CutoutId, STAGING_AREA_RIGHT_SLOT_FIXTURE, isAddressableAreaStandardSlot, - CutoutFixtureId, - RobotType, INTERACTIVE_WELL_DATA_ATTRIBUTE, - SupportedTip, LOW_VOLUME_PIPETTES, } from '@opentrons/shared-data' -import { BoundingRect, GenericRect } from '../collision-types' import type { AdditionalEquipmentEntity, LabwareEntities, PipetteEntities, PipetteEntity, } from '@opentrons/step-generation' +import type { + WellSetHelpers, + AddressableAreaName, + CutoutId, + CutoutFixtureId, + RobotType, + SupportedTip, +} from '@opentrons/shared-data' import type { WellGroup } from '@opentrons/components' +import type { BoundingRect, GenericRect } from '../collision-types' export const uuid: () => string = uuidv1 // Collision detection for SelectionRect / SelectableLabware diff --git a/protocol-designer/src/utils/labwareModuleCompatibility.ts b/protocol-designer/src/utils/labwareModuleCompatibility.ts index 5092afd6903..1fe26f427d7 100644 --- a/protocol-designer/src/utils/labwareModuleCompatibility.ts +++ b/protocol-designer/src/utils/labwareModuleCompatibility.ts @@ -1,16 +1,14 @@ // PD-specific info about labware<>module compatibilty - import { MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, - LabwareDefinition2, - ModuleType, HEATERSHAKER_MODULE_TYPE, MAGNETIC_BLOCK_TYPE, } from '@opentrons/shared-data' -import { LabwareDefByDefURI } from '../labware-defs' -import { LabwareOnDeck } from '../step-forms' +import type { LabwareDefByDefURI } from '../labware-defs' +import type { LabwareOnDeck } from '../step-forms' +import type { LabwareDefinition2, ModuleType } from '@opentrons/shared-data' // NOTE: this does not distinguish btw versions. Standard labware only (assumes namespace is 'opentrons') export const COMPATIBLE_LABWARE_ALLOWLIST_BY_MODULE_TYPE: Record< ModuleType, diff --git a/protocol-designer/src/well-selection/actions.ts b/protocol-designer/src/well-selection/actions.ts index 25d403f1fa8..0213c362020 100644 --- a/protocol-designer/src/well-selection/actions.ts +++ b/protocol-designer/src/well-selection/actions.ts @@ -1,4 +1,4 @@ -import { WellGroup } from '@opentrons/components' +import type { WellGroup } from '@opentrons/components' // ===== Preselect / select wells in plate // these actions all use PRIMARY WELLS (see reducers for definition) export interface HighlightWellsAction { diff --git a/protocol-designer/src/well-selection/reducers.ts b/protocol-designer/src/well-selection/reducers.ts index be2989ae857..7bc672631db 100644 --- a/protocol-designer/src/well-selection/reducers.ts +++ b/protocol-designer/src/well-selection/reducers.ts @@ -1,13 +1,16 @@ import omit from 'lodash/omit' -import { combineReducers, Reducer } from 'redux' +import { combineReducers } from 'redux' import { handleActions } from 'redux-actions' -import { WellGroup } from '@opentrons/components' -import { Action } from '../types' -import { + +import type { Reducer } from 'redux' +import type { WellGroup } from '@opentrons/components' +import type { Action } from '../types' +import type { HighlightWellsAction, SelectWellsAction, DeselectWellsAction, } from './actions' + interface SelectedWellsState { highlighted: WellGroup selected: WellGroup diff --git a/protocol-designer/src/well-selection/selectors.ts b/protocol-designer/src/well-selection/selectors.ts index a695784f0dc..9a281709508 100644 --- a/protocol-designer/src/well-selection/selectors.ts +++ b/protocol-designer/src/well-selection/selectors.ts @@ -1,7 +1,7 @@ import { createSelector } from 'reselect' import { sortWells } from '@opentrons/shared-data' -import { WellGroup } from '@opentrons/components' -import { BaseState, Selector } from '../types' +import type { WellGroup } from '@opentrons/components' +import type { BaseState, Selector } from '../types' const rootSelector = (state: BaseState): BaseState['wellSelection'] => state.wellSelection diff --git a/protocol-designer/typings/reselect.d.ts b/protocol-designer/typings/reselect.d.ts index c905b8139c4..8a80c1fd544 100644 --- a/protocol-designer/typings/reselect.d.ts +++ b/protocol-designer/typings/reselect.d.ts @@ -1,4 +1,4 @@ -import { OutputSelector, Selector } from 'reselect' +import type { OutputSelector, Selector } from 'reselect' declare module 'reselect' { // declaring type for createSelector with 14 selectors because the reselect types only support up to 12 selectors export function createSelector< diff --git a/react-api-client/src/api/useHost.ts b/react-api-client/src/api/useHost.ts index 84d310c121e..ee081320aa9 100644 --- a/react-api-client/src/api/useHost.ts +++ b/react-api-client/src/api/useHost.ts @@ -1,6 +1,6 @@ import { useContext } from 'react' -import { HostConfig } from '@opentrons/api-client' import { ApiHostContext } from './ApiHostProvider' +import type { HostConfig } from '@opentrons/api-client' export function useHost(): HostConfig | null { return useContext(ApiHostContext) diff --git a/react-api-client/src/calibration/__tests__/useDeleteCalibrationMutation.test.tsx b/react-api-client/src/calibration/__tests__/useDeleteCalibrationMutation.test.tsx index 511a0857254..6639f2dd25f 100644 --- a/react-api-client/src/calibration/__tests__/useDeleteCalibrationMutation.test.tsx +++ b/react-api-client/src/calibration/__tests__/useDeleteCalibrationMutation.test.tsx @@ -2,13 +2,15 @@ import * as React from 'react' import { describe, it, expect, beforeEach, vi } from 'vitest' import { QueryClient, QueryClientProvider } from 'react-query' import { act, renderHook, waitFor } from '@testing-library/react' -import { - deleteCalibration, - DeleteCalRequestParams, -} from '@opentrons/api-client' +import { deleteCalibration } from '@opentrons/api-client' import { useHost } from '../../api' import { useDeleteCalibrationMutation } from '..' -import type { HostConfig, Response, EmptyResponse } from '@opentrons/api-client' +import type { + DeleteCalRequestParams, + HostConfig, + Response, + EmptyResponse, +} from '@opentrons/api-client' vi.mock('@opentrons/api-client') vi.mock('../../api/useHost') diff --git a/react-api-client/src/maintenance_runs/__fixtures__/maintenanceCommands.ts b/react-api-client/src/maintenance_runs/__fixtures__/maintenanceCommands.ts index 488e8d539d6..0a8b7797f25 100644 --- a/react-api-client/src/maintenance_runs/__fixtures__/maintenanceCommands.ts +++ b/react-api-client/src/maintenance_runs/__fixtures__/maintenanceCommands.ts @@ -1,4 +1,4 @@ -import { CommandsData, RunCommandSummary } from '@opentrons/api-client' +import type { CommandsData, RunCommandSummary } from '@opentrons/api-client' import type { CreateCommand } from '@opentrons/shared-data' export const mockAnonLoadCommand: CreateCommand = { diff --git a/react-api-client/src/maintenance_runs/useCreateMaintenanceRunMutation.ts b/react-api-client/src/maintenance_runs/useCreateMaintenanceRunMutation.ts index 19c1b693088..88e59e80d61 100644 --- a/react-api-client/src/maintenance_runs/useCreateMaintenanceRunMutation.ts +++ b/react-api-client/src/maintenance_runs/useCreateMaintenanceRunMutation.ts @@ -1,12 +1,9 @@ -import { - HostConfig, - MaintenanceRun, - createMaintenanceRun, - CreateMaintenanceRunData, -} from '@opentrons/api-client' -import { +import { createMaintenanceRun } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import type { AxiosError } from 'axios' +import type { UseMutationResult, - useMutation, UseMutateAsyncFunction, UseMutationOptions, } from 'react-query' diff --git a/react-api-client/src/maintenance_runs/useCurrentMaintenanceRun.ts b/react-api-client/src/maintenance_runs/useCurrentMaintenanceRun.ts index 9b9f8a798eb..85a1dbff753 100644 --- a/react-api-client/src/maintenance_runs/useCurrentMaintenanceRun.ts +++ b/react-api-client/src/maintenance_runs/useCurrentMaintenanceRun.ts @@ -1,13 +1,10 @@ -import { - HostConfig, - getCurrentMaintenanceRun, - MaintenanceRun, -} from '@opentrons/api-client' +import { getCurrentMaintenanceRun } from '@opentrons/api-client' import { useQuery, useQueryClient } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { UseQueryResult, UseQueryOptions } from 'react-query' +import type { HostConfig, MaintenanceRun } from '@opentrons/api-client' export function useCurrentMaintenanceRun( options: UseQueryOptions = {} diff --git a/react-api-client/src/maintenance_runs/useMaintenanceRunQuery.ts b/react-api-client/src/maintenance_runs/useMaintenanceRunQuery.ts index 863f3e39805..7b1a36a6f8c 100644 --- a/react-api-client/src/maintenance_runs/useMaintenanceRunQuery.ts +++ b/react-api-client/src/maintenance_runs/useMaintenanceRunQuery.ts @@ -1,13 +1,10 @@ -import { - HostConfig, - MaintenanceRun, - getMaintenanceRun, -} from '@opentrons/api-client' +import { getMaintenanceRun } from '@opentrons/api-client' import { useQuery } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { UseQueryResult, UseQueryOptions } from 'react-query' +import type { HostConfig, MaintenanceRun } from '@opentrons/api-client' export function useMaintenanceRunQuery( maintenanceRunId: string | null, diff --git a/react-api-client/src/networking/useWifiQuery.ts b/react-api-client/src/networking/useWifiQuery.ts index 3fbf3075f97..3032bfff4e9 100644 --- a/react-api-client/src/networking/useWifiQuery.ts +++ b/react-api-client/src/networking/useWifiQuery.ts @@ -1,9 +1,9 @@ import { useQuery } from 'react-query' -import { WifiListResponse, getWifiList } from '@opentrons/api-client' +import { getWifiList } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { UseQueryResult, UseQueryOptions } from 'react-query' -import type { HostConfig } from '@opentrons/api-client' +import type { HostConfig, WifiListResponse } from '@opentrons/api-client' export function useWifiQuery( options: UseQueryOptions< diff --git a/react-api-client/src/pipettes/useUpdatePipetteSettingsMutation.ts b/react-api-client/src/pipettes/useUpdatePipetteSettingsMutation.ts index b13b91edbc9..3e27a6cb132 100644 --- a/react-api-client/src/pipettes/useUpdatePipetteSettingsMutation.ts +++ b/react-api-client/src/pipettes/useUpdatePipetteSettingsMutation.ts @@ -1,19 +1,18 @@ -import { - HostConfig, - IndividualPipetteSettings, - updatePipetteSettings, - UpdatePipetteSettingsData, -} from '@opentrons/api-client' -import { - useMutation, - useQueryClient, +import { updatePipetteSettings } from '@opentrons/api-client' +import { useMutation, useQueryClient } from 'react-query' +import { useHost } from '../api' +import type { UseMutateAsyncFunction, UseMutationOptions, UseMutationResult, } from 'react-query' -import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { AxiosError } from 'axios' +import type { + HostConfig, + IndividualPipetteSettings, + UpdatePipetteSettingsData, +} from '@opentrons/api-client' export type UpdatePipetteSettingsType = UseMutateAsyncFunction< IndividualPipetteSettings, diff --git a/react-api-client/src/protocols/useAllProtocolIdsQuery.ts b/react-api-client/src/protocols/useAllProtocolIdsQuery.ts index 912c171803e..b632dd62cc8 100644 --- a/react-api-client/src/protocols/useAllProtocolIdsQuery.ts +++ b/react-api-client/src/protocols/useAllProtocolIdsQuery.ts @@ -1,9 +1,9 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getProtocolIds } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { HostConfig, ProtocolsIds } from '@opentrons/api-client' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' const POLLING_INTERVAL = 1000 diff --git a/react-api-client/src/protocols/useAllProtocolsQuery.ts b/react-api-client/src/protocols/useAllProtocolsQuery.ts index 194907fc5c8..c11c98db966 100644 --- a/react-api-client/src/protocols/useAllProtocolsQuery.ts +++ b/react-api-client/src/protocols/useAllProtocolsQuery.ts @@ -1,7 +1,8 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getProtocols } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' +import type { UseQueryResult } from 'react-query' import type { HostConfig, Protocols } from '@opentrons/api-client' export function useAllProtocolsQuery(): UseQueryResult { diff --git a/react-api-client/src/protocols/useCreateProtocolMutation.ts b/react-api-client/src/protocols/useCreateProtocolMutation.ts index 2c63085c453..a10be3708a4 100644 --- a/react-api-client/src/protocols/useCreateProtocolMutation.ts +++ b/react-api-client/src/protocols/useCreateProtocolMutation.ts @@ -1,14 +1,13 @@ -import { - UseMutationResult, - UseMutationOptions, - useMutation, - UseMutateFunction, - useQueryClient, -} from 'react-query' +import { useMutation, useQueryClient } from 'react-query' import { createProtocol } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { AxiosError } from 'axios' +import type { + UseMutationResult, + UseMutationOptions, + UseMutateFunction, +} from 'react-query' import type { ErrorResponse, HostConfig, diff --git a/react-api-client/src/protocols/useDeleteProtocolMutation.ts b/react-api-client/src/protocols/useDeleteProtocolMutation.ts index d2e9e982f2a..d07be123b1f 100644 --- a/react-api-client/src/protocols/useDeleteProtocolMutation.ts +++ b/react-api-client/src/protocols/useDeleteProtocolMutation.ts @@ -1,12 +1,8 @@ -import { - UseMutationResult, - useMutation, - UseMutateFunction, - useQueryClient, -} from 'react-query' +import { useMutation, useQueryClient } from 'react-query' import { deleteProtocol } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' +import type { UseMutationResult, UseMutateFunction } from 'react-query' import type { HostConfig, EmptyResponse } from '@opentrons/api-client' export type UseDeleteProtocolMutationResult = UseMutationResult< diff --git a/react-api-client/src/protocols/useProtocolAnalysesQuery.ts b/react-api-client/src/protocols/useProtocolAnalysesQuery.ts index a8b7f5fddc7..88702348a0c 100644 --- a/react-api-client/src/protocols/useProtocolAnalysesQuery.ts +++ b/react-api-client/src/protocols/useProtocolAnalysesQuery.ts @@ -1,9 +1,9 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getProtocolAnalyses } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { HostConfig, ProtocolAnalyses } from '@opentrons/api-client' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' const POLLING_INTERVAL = 1000 diff --git a/react-api-client/src/protocols/useProtocolAnalysisAsDocumentQuery.ts b/react-api-client/src/protocols/useProtocolAnalysisAsDocumentQuery.ts index 3a8b5bfd0bc..550024ac233 100644 --- a/react-api-client/src/protocols/useProtocolAnalysisAsDocumentQuery.ts +++ b/react-api-client/src/protocols/useProtocolAnalysisAsDocumentQuery.ts @@ -1,10 +1,10 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getProtocolAnalysisAsDocument } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { HostConfig } from '@opentrons/api-client' -import type { UseQueryOptions } from 'react-query' -import { CompletedProtocolAnalysis } from '@opentrons/shared-data' +import type { UseQueryOptions, UseQueryResult } from 'react-query' +import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' export function useProtocolAnalysisAsDocumentQuery( protocolId: string | null, diff --git a/react-api-client/src/protocols/useProtocolQuery.ts b/react-api-client/src/protocols/useProtocolQuery.ts index c55957d00cb..056c3a95036 100644 --- a/react-api-client/src/protocols/useProtocolQuery.ts +++ b/react-api-client/src/protocols/useProtocolQuery.ts @@ -1,9 +1,9 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getProtocol } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { HostConfig, Protocol } from '@opentrons/api-client' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' const POLLING_INTERVAL = 1000 diff --git a/react-api-client/src/robot/useAcknowledgeEstopDisengageMutation.ts b/react-api-client/src/robot/useAcknowledgeEstopDisengageMutation.ts index fa9402db1d3..ef9d9c285ef 100644 --- a/react-api-client/src/robot/useAcknowledgeEstopDisengageMutation.ts +++ b/react-api-client/src/robot/useAcknowledgeEstopDisengageMutation.ts @@ -1,9 +1,13 @@ -import { +import { useMutation } from 'react-query' +import { acknowledgeEstopDisengage } from '@opentrons/api-client' +import { useHost } from '../api' +import type { AxiosError } from 'axios' +import type { UseMutationResult, - useMutation, UseMutateFunction, UseMutationOptions, } from 'react-query' +import type { HostConfig, EstopStatus } from '@opentrons/api-client' import { HostConfig, diff --git a/react-api-client/src/robot/useDoorQuery.ts b/react-api-client/src/robot/useDoorQuery.ts index 5f3c6de4dcd..23882b58b2b 100644 --- a/react-api-client/src/robot/useDoorQuery.ts +++ b/react-api-client/src/robot/useDoorQuery.ts @@ -1,10 +1,10 @@ import { useQuery } from 'react-query' -import { HostConfig, getDoorStatus } from '@opentrons/api-client' +import { getDoorStatus } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { UseQueryResult, UseQueryOptions } from 'react-query' -import type { DoorStatus } from '@opentrons/api-client' +import type { HostConfig, DoorStatus } from '@opentrons/api-client' export type UseDoorQueryOptions = UseQueryOptions< DoorStatus, diff --git a/react-api-client/src/robot/useLightsQuery.ts b/react-api-client/src/robot/useLightsQuery.ts index dc27e814d3c..45c4eb4ff70 100644 --- a/react-api-client/src/robot/useLightsQuery.ts +++ b/react-api-client/src/robot/useLightsQuery.ts @@ -1,8 +1,9 @@ -import { HostConfig, Lights, getLights } from '@opentrons/api-client' +import { getLights } from '@opentrons/api-client' import { useQuery } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' import type { UseQueryResult, UseQueryOptions } from 'react-query' +import type { HostConfig, Lights } from '@opentrons/api-client' export type UseLightsQueryOptions = UseQueryOptions< Lights, diff --git a/react-api-client/src/robot/useSetLightsMutation.ts b/react-api-client/src/robot/useSetLightsMutation.ts index 7a53b028c8c..bd1ae5172f1 100644 --- a/react-api-client/src/robot/useSetLightsMutation.ts +++ b/react-api-client/src/robot/useSetLightsMutation.ts @@ -1,18 +1,14 @@ -import { - HostConfig, - Lights, - setLights, - SetLightsData, -} from '@opentrons/api-client' -import { +import { setLights } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' +import type { UseMutationResult, - useMutation, UseMutateFunction, UseMutationOptions, } from 'react-query' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' import type { AxiosError } from 'axios' +import type { HostConfig, Lights, SetLightsData } from '@opentrons/api-client' export type UseSetLightsMutationResult = UseMutationResult< Lights, diff --git a/react-api-client/src/runs/__fixtures__/runActions.ts b/react-api-client/src/runs/__fixtures__/runActions.ts index 41c333dd459..096c60b7ce1 100644 --- a/react-api-client/src/runs/__fixtures__/runActions.ts +++ b/react-api-client/src/runs/__fixtures__/runActions.ts @@ -1,9 +1,9 @@ import { - RunAction, RUN_ACTION_TYPE_PLAY, RUN_ACTION_TYPE_PAUSE, RUN_ACTION_TYPE_STOP, } from '@opentrons/api-client' +import type { RunAction } from '@opentrons/api-client' export const mockPlayRunAction: RunAction = { id: '1', diff --git a/react-api-client/src/runs/__fixtures__/runCommands.ts b/react-api-client/src/runs/__fixtures__/runCommands.ts index 7a78725e2a9..58a6ae11679 100644 --- a/react-api-client/src/runs/__fixtures__/runCommands.ts +++ b/react-api-client/src/runs/__fixtures__/runCommands.ts @@ -1,4 +1,4 @@ -import { CommandsData, RunCommandSummary } from '@opentrons/api-client' +import type { CommandsData, RunCommandSummary } from '@opentrons/api-client' import type { CreateCommand } from '@opentrons/shared-data' export const mockAnonLoadCommand: CreateCommand = { diff --git a/react-api-client/src/runs/__fixtures__/runs.ts b/react-api-client/src/runs/__fixtures__/runs.ts index 47a432f5a5f..33ae7cb4b4d 100644 --- a/react-api-client/src/runs/__fixtures__/runs.ts +++ b/react-api-client/src/runs/__fixtures__/runs.ts @@ -1,10 +1,8 @@ import { RUN_ACTION_TYPE_PLAY, RUN_ACTION_TYPE_PAUSE, - Run, - Runs, - RunData, } from '@opentrons/api-client' +import type { Run, Runs, RunData } from '@opentrons/api-client' export const PROTOCOL_ID = '1' export const RUN_ID_1 = '1' diff --git a/react-api-client/src/runs/__tests__/useCreateRunMutation.test.tsx b/react-api-client/src/runs/__tests__/useCreateRunMutation.test.tsx index 8fb1ebe2752..87d5920f838 100644 --- a/react-api-client/src/runs/__tests__/useCreateRunMutation.test.tsx +++ b/react-api-client/src/runs/__tests__/useCreateRunMutation.test.tsx @@ -2,12 +2,17 @@ import * as React from 'react' import { describe, it, expect, beforeEach, vi } from 'vitest' import { QueryClient, QueryClientProvider } from 'react-query' import { act, renderHook, waitFor } from '@testing-library/react' -import { createRun, CreateRunData } from '@opentrons/api-client' +import { createRun } from '@opentrons/api-client' import { useHost } from '../../api' import { PROTOCOL_ID, mockRunResponse } from '../__fixtures__' import { useCreateRunMutation } from '..' -import type { HostConfig, Response, Run } from '@opentrons/api-client' +import type { + HostConfig, + Response, + Run, + CreateRunData, +} from '@opentrons/api-client' vi.mock('@opentrons/api-client') vi.mock('../../api/useHost') diff --git a/react-api-client/src/runs/__tests__/useRunActionMutations.test.tsx b/react-api-client/src/runs/__tests__/useRunActionMutations.test.tsx index 0a6390889a0..7df81392aea 100644 --- a/react-api-client/src/runs/__tests__/useRunActionMutations.test.tsx +++ b/react-api-client/src/runs/__tests__/useRunActionMutations.test.tsx @@ -6,13 +6,15 @@ import { act, renderHook } from '@testing-library/react' import { RUN_ID_1 } from '../__fixtures__' import { useRunActionMutations, - UsePlayRunMutationResult, - UsePauseRunMutationResult, - UseStopRunMutationResult, usePlayRunMutation, usePauseRunMutation, useStopRunMutation, } from '..' +import type { + UsePlayRunMutationResult, + UsePauseRunMutationResult, + UseStopRunMutationResult, +} from '..' vi.mock('../usePlayRunMutation') vi.mock('../usePauseRunMutation') diff --git a/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts index fe835df36ba..4067c2ff71a 100644 --- a/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts +++ b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts @@ -1,8 +1,8 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getCommandsAsPreSerializedList } from '@opentrons/api-client' import { getSanitizedQueryKeyObject } from '../utils' import { useHost } from '../api' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' import type { GetCommandsParams, HostConfig, diff --git a/react-api-client/src/runs/useAllCommandsQuery.ts b/react-api-client/src/runs/useAllCommandsQuery.ts index f100fbed42e..ae5d6355103 100644 --- a/react-api-client/src/runs/useAllCommandsQuery.ts +++ b/react-api-client/src/runs/useAllCommandsQuery.ts @@ -1,8 +1,8 @@ -import { UseQueryResult, useQuery } from 'react-query' +import { useQuery } from 'react-query' import { getCommands } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' import type { GetCommandsParams, HostConfig, diff --git a/react-api-client/src/runs/useCommandQuery.ts b/react-api-client/src/runs/useCommandQuery.ts index 268e56b6a6a..d68be8bc44f 100644 --- a/react-api-client/src/runs/useCommandQuery.ts +++ b/react-api-client/src/runs/useCommandQuery.ts @@ -1,8 +1,9 @@ -import { UseQueryResult, useQuery } from 'react-query' -import { CommandDetail, HostConfig, getCommand } from '@opentrons/api-client' +import { useQuery } from 'react-query' +import { getCommand } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryOptions, UseQueryResult } from 'react-query' +import type { CommandDetail, HostConfig } from '@opentrons/api-client' export function useCommandQuery( runId: string | null, diff --git a/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts b/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts index 69385faa6bc..f5575132751 100644 --- a/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts +++ b/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts @@ -1,11 +1,12 @@ import { useMutation, useQueryClient } from 'react-query' -import { - createLabwareOffset, - LabwareOffsetCreateData, -} from '@opentrons/api-client' +import { createLabwareOffset } from '@opentrons/api-client' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' -import type { HostConfig, Run } from '@opentrons/api-client' +import type { + HostConfig, + Run, + LabwareOffsetCreateData, +} from '@opentrons/api-client' import type { UseMutationResult, UseMutateAsyncFunction } from 'react-query' interface CreateLabwareOffsetParams { diff --git a/react-api-client/src/runs/useCreateRunMutation.ts b/react-api-client/src/runs/useCreateRunMutation.ts index 1ad5c9c4a44..8f93c34ad33 100644 --- a/react-api-client/src/runs/useCreateRunMutation.ts +++ b/react-api-client/src/runs/useCreateRunMutation.ts @@ -1,18 +1,14 @@ -import { - HostConfig, - Run, - createRun, - CreateRunData, -} from '@opentrons/api-client' -import { +import { createRun } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' +import type { AxiosError } from 'axios' +import type { UseMutationResult, - useMutation, UseMutateFunction, UseMutationOptions, } from 'react-query' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' -import type { AxiosError } from 'axios' +import type { HostConfig, CreateRunData, Run } from '@opentrons/api-client' export type UseCreateRunMutationResult = UseMutationResult< Run, diff --git a/react-api-client/src/runs/usePauseRunMutation.ts b/react-api-client/src/runs/usePauseRunMutation.ts index 8459f0f3bbb..df2892154dd 100644 --- a/react-api-client/src/runs/usePauseRunMutation.ts +++ b/react-api-client/src/runs/usePauseRunMutation.ts @@ -1,19 +1,16 @@ -import { - HostConfig, - RunAction, - RUN_ACTION_TYPE_PAUSE, - createRunAction, -} from '@opentrons/api-client' -import { +import { RUN_ACTION_TYPE_PAUSE, createRunAction } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' + +import type { UseMutationResult, - useMutation, UseMutateFunction, UseMutationOptions, } from 'react-query' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' import type { AxiosError } from 'axios' +import type { HostConfig, RunAction } from '@opentrons/api-client' export type UsePauseRunMutationResult = UseMutationResult< RunAction, diff --git a/react-api-client/src/runs/usePlayRunMutation.ts b/react-api-client/src/runs/usePlayRunMutation.ts index 7e2a2c331a8..0c2bc139383 100644 --- a/react-api-client/src/runs/usePlayRunMutation.ts +++ b/react-api-client/src/runs/usePlayRunMutation.ts @@ -1,19 +1,15 @@ -import { - HostConfig, - RunAction, - RUN_ACTION_TYPE_PLAY, - createRunAction, -} from '@opentrons/api-client' -import { +import { RUN_ACTION_TYPE_PLAY, createRunAction } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' + +import type { UseMutationResult, - useMutation, UseMutateFunction, UseMutationOptions, } from 'react-query' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' - import type { AxiosError } from 'axios' +import type { HostConfig, RunAction } from '@opentrons/api-client' export type UsePlayRunMutationResult = UseMutationResult< RunAction, diff --git a/react-api-client/src/runs/useStopRunMutation.ts b/react-api-client/src/runs/useStopRunMutation.ts index 81ef6287998..135d172a7a5 100644 --- a/react-api-client/src/runs/useStopRunMutation.ts +++ b/react-api-client/src/runs/useStopRunMutation.ts @@ -1,9 +1,4 @@ -import { - HostConfig, - RunAction, - RUN_ACTION_TYPE_STOP, - createRunAction, -} from '@opentrons/api-client' +import { RUN_ACTION_TYPE_STOP, createRunAction } from '@opentrons/api-client' import { useMutation } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' @@ -13,6 +8,7 @@ import type { UseMutateFunction, UseMutationOptions, } from 'react-query' +import type { HostConfig, RunAction } from '@opentrons/api-client' export type UseStopRunMutationResult = UseMutationResult< RunAction, diff --git a/react-api-client/src/server/useUpdateRobotNameMutation.ts b/react-api-client/src/server/useUpdateRobotNameMutation.ts index 907b70742d3..e597a42b718 100644 --- a/react-api-client/src/server/useUpdateRobotNameMutation.ts +++ b/react-api-client/src/server/useUpdateRobotNameMutation.ts @@ -1,13 +1,12 @@ -import { +import { useMutation, useQueryClient } from 'react-query' +import { updateRobotName } from '@opentrons/api-client' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' +import type { UseMutationResult, UseMutationOptions, - useMutation, UseMutateFunction, - useQueryClient, } from 'react-query' -import { updateRobotName } from '@opentrons/api-client' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' import type { AxiosError } from 'axios' import type { ErrorResponse, diff --git a/react-api-client/src/sessions/__tests__/useAllSessionsQuery.test.tsx b/react-api-client/src/sessions/__tests__/useAllSessionsQuery.test.tsx index 426c116cf3c..45d9eae6484 100644 --- a/react-api-client/src/sessions/__tests__/useAllSessionsQuery.test.tsx +++ b/react-api-client/src/sessions/__tests__/useAllSessionsQuery.test.tsx @@ -1,11 +1,12 @@ import * as React from 'react' import { describe, it, expect, beforeEach, vi } from 'vitest' -import { QueryClient, QueryClientProvider, UseQueryOptions } from 'react-query' +import { QueryClient, QueryClientProvider } from 'react-query' import { renderHook, waitFor } from '@testing-library/react' import { getSessions } from '@opentrons/api-client' import { useHost } from '../../api' import { useAllSessionsQuery } from '..' +import type { UseQueryOptions } from 'react-query' import type { HostConfig, Response, Sessions } from '@opentrons/api-client' vi.mock('@opentrons/api-client') diff --git a/react-api-client/src/sessions/__tests__/useCreateSessionMutation.test.tsx b/react-api-client/src/sessions/__tests__/useCreateSessionMutation.test.tsx index c4dea17c8cc..982c2049200 100644 --- a/react-api-client/src/sessions/__tests__/useCreateSessionMutation.test.tsx +++ b/react-api-client/src/sessions/__tests__/useCreateSessionMutation.test.tsx @@ -4,13 +4,17 @@ import { QueryClient, QueryClientProvider } from 'react-query' import { act, renderHook, waitFor } from '@testing-library/react' import { createSession, - CreateSessionData, SESSION_TYPE_DECK_CALIBRATION, } from '@opentrons/api-client' import { useHost } from '../../api' import { useCreateSessionMutation } from '..' -import type { HostConfig, Response, Session } from '@opentrons/api-client' +import type { + HostConfig, + Response, + Session, + CreateSessionData, +} from '@opentrons/api-client' vi.mock('@opentrons/api-client') vi.mock('../../api/useHost') diff --git a/react-api-client/src/sessions/useAllSessionsQuery.ts b/react-api-client/src/sessions/useAllSessionsQuery.ts index 3ec571dc859..9694a7ced44 100644 --- a/react-api-client/src/sessions/useAllSessionsQuery.ts +++ b/react-api-client/src/sessions/useAllSessionsQuery.ts @@ -1,9 +1,10 @@ -import { HostConfig, Sessions, getSessions } from '@opentrons/api-client' -import { UseQueryResult, useQuery } from 'react-query' +import { getSessions } from '@opentrons/api-client' +import { useQuery } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' -import type { UseQueryOptions } from 'react-query' +import type { UseQueryResult, UseQueryOptions } from 'react-query' +import type { HostConfig, Sessions } from '@opentrons/api-client' export function useAllSessionsQuery( options: UseQueryOptions = {} diff --git a/react-api-client/src/sessions/useCreateSessionMutation.ts b/react-api-client/src/sessions/useCreateSessionMutation.ts index bb0224f4df5..ebf7ebd35ed 100644 --- a/react-api-client/src/sessions/useCreateSessionMutation.ts +++ b/react-api-client/src/sessions/useCreateSessionMutation.ts @@ -1,12 +1,14 @@ -import { +import { createSession } from '@opentrons/api-client' +import { useMutation } from 'react-query' +import { useHost } from '../api' +import { getSanitizedQueryKeyObject } from '../utils' + +import type { UseMutationResult, UseMutateFunction } from 'react-query' +import type { HostConfig, Session, - createSession, CreateSessionData, } from '@opentrons/api-client' -import { UseMutationResult, useMutation, UseMutateFunction } from 'react-query' -import { useHost } from '../api' -import { getSanitizedQueryKeyObject } from '../utils' export type UseCreateSessionMutationResult = UseMutationResult< Session, diff --git a/react-api-client/src/sessions/useSessionQuery.ts b/react-api-client/src/sessions/useSessionQuery.ts index 0225b80757f..566c28c1bd7 100644 --- a/react-api-client/src/sessions/useSessionQuery.ts +++ b/react-api-client/src/sessions/useSessionQuery.ts @@ -1,8 +1,11 @@ -import { HostConfig, Session, getSession } from '@opentrons/api-client' -import { UseQueryResult, useQuery } from 'react-query' +import { getSession } from '@opentrons/api-client' +import { useQuery } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' +import type { UseQueryResult } from 'react-query' +import type { HostConfig, Session } from '@opentrons/api-client' + export function useSessionQuery(sessionId: string): UseQueryResult { const host = useHost() const query = useQuery( diff --git a/react-api-client/src/sessions/useSessionsByTypeQuery.ts b/react-api-client/src/sessions/useSessionsByTypeQuery.ts index 0701cd319fc..e786c521f71 100644 --- a/react-api-client/src/sessions/useSessionsByTypeQuery.ts +++ b/react-api-client/src/sessions/useSessionsByTypeQuery.ts @@ -1,13 +1,11 @@ -import { - getSessions, - HostConfig, - Sessions, - SessionType, -} from '@opentrons/api-client' -import { UseQueryResult, useQuery } from 'react-query' +import { getSessions } from '@opentrons/api-client' +import { useQuery } from 'react-query' import { useHost } from '../api' import { getSanitizedQueryKeyObject } from '../utils' +import type { UseQueryResult } from 'react-query' +import type { HostConfig, Sessions, SessionType } from '@opentrons/api-client' + export function useSessionsByTypeQuery(args: { sessionType: SessionType }): UseQueryResult { diff --git a/react-api-client/src/system/useAuthorization.ts b/react-api-client/src/system/useAuthorization.ts index 02fa26d4734..db793536db3 100644 --- a/react-api-client/src/system/useAuthorization.ts +++ b/react-api-client/src/system/useAuthorization.ts @@ -1,11 +1,9 @@ import * as React from 'react' -import { - createAuthorization, - createRegistration, - HostConfig, -} from '@opentrons/api-client' +import { createAuthorization, createRegistration } from '@opentrons/api-client' import { useHost } from '../api' + import type { + HostConfig, AuthorizationToken, CreateRegistrationParams, RegistrationToken, diff --git a/robot-server/Pipfile b/robot-server/Pipfile index 2d22c6dc34c..0b70739eac3 100755 --- a/robot-server/Pipfile +++ b/robot-server/Pipfile @@ -37,6 +37,7 @@ sqlalchemy2-stubs = "==0.0.2a21" python-box = "==6.1.0" types-paho-mqtt = "==1.6.0.20240106" performance-metrics = {file = "../performance-metrics", editable = true} +pyusb = "==1.2.1" [packages] anyio = "==3.7.1" diff --git a/robot-server/Pipfile.lock b/robot-server/Pipfile.lock index 2ea9f545696..af344b810f6 100644 --- a/robot-server/Pipfile.lock +++ b/robot-server/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9f64ba7d87b9c9fd510aac5c4a22fa748c1bb3b9936826ef2b4b13454c1c5e2b" + "sha256": "f43123500e774f5b9a92f2be8ae39a04af8df7ba2ae4b2a505f1bb4b751cc30a" }, "pipfile-spec": 6, "requires": { @@ -154,11 +154,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "fastapi": { "hashes": [ @@ -252,70 +252,6 @@ "markers": "python_version >= '3.8'", "version": "==1.4.1" }, - "greenlet": { - "hashes": [ - "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67", - "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6", - "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257", - "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4", - "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676", - "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61", - "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc", - "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca", - "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7", - "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728", - "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305", - "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6", - "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379", - "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414", - "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04", - "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a", - "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf", - "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491", - "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559", - "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e", - "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274", - "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb", - "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b", - "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9", - "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b", - "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be", - "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506", - "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405", - "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113", - "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f", - "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5", - "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230", - "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d", - "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f", - "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a", - "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e", - "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61", - "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6", - "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d", - "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71", - "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22", - "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2", - "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3", - "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067", - "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc", - "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881", - "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3", - "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e", - "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac", - "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53", - "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0", - "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b", - "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83", - "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41", - "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c", - "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf", - "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da", - "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33" - ], - "markers": "python_version >= '3' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", - "version": "==3.0.3" - }, "h11": { "hashes": [ "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", @@ -528,7 +464,7 @@ }, "opentrons": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "../api" }, "opentrons-hardware": { @@ -540,7 +476,7 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "../shared-data/python" }, "packaging": { @@ -1066,61 +1002,61 @@ "toml" ], "hashes": [ - "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c", - "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63", - "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7", - "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f", - "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8", - "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf", - "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0", - "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384", - "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76", - "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7", - "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d", - "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70", - "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f", - "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818", - "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b", - "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d", - "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec", - "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083", - "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2", - "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9", - "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd", - "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade", - "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e", - "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a", - "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227", - "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87", - "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c", - "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e", - "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c", - "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e", - "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd", - "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec", - "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562", - "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8", - "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677", - "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357", - "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c", - "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd", - "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49", - "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286", - "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1", - "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf", - "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51", - "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409", - "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384", - "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e", - "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978", - "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57", - "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e", - "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2", - "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48", - "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4" + "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de", + "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661", + "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26", + "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41", + "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d", + "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981", + "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2", + "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34", + "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f", + "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a", + "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35", + "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223", + "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1", + "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746", + "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90", + "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c", + "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca", + "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8", + "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596", + "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e", + "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd", + "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e", + "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3", + "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e", + "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312", + "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7", + "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572", + "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428", + "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f", + "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07", + "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e", + "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4", + "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136", + "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5", + "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8", + "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d", + "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228", + "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206", + "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa", + "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e", + "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be", + "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5", + "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668", + "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601", + "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057", + "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146", + "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f", + "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8", + "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7", + "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987", + "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19", + "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece" ], "markers": "python_version >= '3.8'", - "version": "==7.4.4" + "version": "==7.5.1" }, "decoy": { "hashes": [ @@ -1139,11 +1075,11 @@ }, "exceptiongroup": { "hashes": [ - "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", - "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" ], "markers": "python_version < '3.11'", - "version": "==1.2.0" + "version": "==1.2.1" }, "execnet": { "hashes": [ @@ -1317,7 +1253,7 @@ }, "opentrons-shared-data": { "editable": true, - "markers": "python_version >= '3.8'", + "markers": "python_version >= '3.10'", "path": "../shared-data/python" }, "packaging": { @@ -1356,19 +1292,19 @@ }, "platformdirs": { "hashes": [ - "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068", - "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768" + "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", + "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" ], "markers": "python_version >= '3.8'", - "version": "==4.2.0" + "version": "==4.2.2" }, "pluggy": { "hashes": [ - "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981", - "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be" + "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", + "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" ], "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "version": "==1.5.0" }, "py": { "hashes": [ @@ -1582,6 +1518,15 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.9.0.post0" }, + "pyusb": { + "hashes": [ + "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36", + "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9" + ], + "index": "pypi", + "markers": "python_full_version >= '3.6.0'", + "version": "==1.2.1" + }, "pyyaml": { "hashes": [ "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", @@ -1771,12 +1716,12 @@ }, "types-mock": { "hashes": [ - "sha256:0769cb376dfc75b45215619f17a9fd6333d771cc29ce4a38937f060b1e45530f", - "sha256:7472797986d83016f96fde7f73577d129b0cd8a8d0b783487a7be330d57ba431" + "sha256:5281a645d72e827d70043e3cc144fe33b1c003db084f789dc203aa90e812a5a4", + "sha256:d586a01d39ad919d3ddcd73de6cde73ca7f3c69707219f722d1b8d7733641ad7" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==5.1.0.20240311" + "version": "==5.1.0.20240425" }, "types-paho-mqtt": { "hashes": [ diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index 4d51f992f22..5eab9ebaa08 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -1,4 +1,4 @@ -import { +import type { MAGDECK, TEMPDECK, THERMOCYCLER, diff --git a/shared-data/module/definitions/3/absorbanceReaderV1.json b/shared-data/module/definitions/3/absorbanceReaderV1.json new file mode 100644 index 00000000000..7b3172c377d --- /dev/null +++ b/shared-data/module/definitions/3/absorbanceReaderV1.json @@ -0,0 +1,3686 @@ +{ + "$otSharedSchema": "module/schemas/3", + "moduleType": "absorbanceReaderType", + "model": "absorbanceReaderV1", + "labwareOffset": { + "x": 0.0, + "y": 0.0, + "z": 108.96 + }, + "dimensions": { + "bareOverallHeight": 108.96, + "overLabwareHeight": 0.0, + "lidHeight": 61.7, + "xDimension": 172, + "yDimension": 245.2, + "labwareInterfaceXDimension": 128, + "labwareInterfaceYDimension": 86 + }, + "cornerOffsetFromSlot": { + "x": -22.125, + "y": 0, + "z": 0 + }, + "calibrationPoint": { + "x": 14.4, + "y": 64.93, + "z": 97.8 + }, + "config": { + "minBlockTemperature": 0, + "maxBlockTemperature": 99, + "minLidTemperature": 37, + "maxLidTemperature": 110, + "minBlockVolume": 0, + "maxBlockVolume": 100 + }, + "gripperOffsets": { + "default": { + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 4.6 + }, + "dropOffset": { + "x": 0, + "y": 0, + "z": 5.6 + } + } + }, + "displayName": "Thermocycler Module GEN2", + "quirks": [], + "slotTransforms": { + "ot3_standard": { + "B1": { + "labwareOffset": [ + [1, 0, 0, -20.005], + [0, 1, 0, -0.84], + [0, 0, 1, -98], + [0, 0, 0, 1] + ], + "cornerOffsetFromSlot": [ + [1, 0, 0, -20.005], + [0, 1, 0, -0.84], + [0, 0, 1, -98], + [0, 0, 0, 1] + ] + } + } + }, + "compatibleWith": [], + "twoDimensionalRendering": { + "name": "svg", + "type": "element", + "value": "", + "attributes": { + "version": "1.1", + "id": "thermocycler", + "xmlns": "http://www.w3.org/2000/svg", + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "x": "0px", + "y": "0px", + "viewBox": "0 0 172 258", + "style": "enable-background:new 0 0 172 258;", + "xml:space": "preserve" + }, + "children": [ + { + "name": "style", + "type": "element", + "value": "", + "attributes": { + "type": "text/css" + }, + "children": [ + { + "name": "", + "type": "text", + "value": "\n.st0{fill:#FFFFFF;}\n.st1{fill:#E6E6E6;}\n", + "attributes": {}, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "closed" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M145.2,232.7V186c0-4-2.7-7.2-6-7.2H32.5c-3.3,0-5.7,3.2-5.7,7.2v46.7H0.4V0.4h171.2v232.3H145.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st1", + "d": "M139.1,178.8h-106c-3.3,0-6,2.7-6,6v47.9h118v-47.9C145.1,181.5,142.4,178.8,139.1,178.8z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "rect", + "type": "element", + "value": "", + "attributes": { + "x": "4.2", + "y": "0.4", + "class": "st1", + "width": "163.4", + "height": "38.3" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M141,191.8H31.1c-1.1,0-2,0.9-2,2v49.2c0,1.1,0.9,2,2,2H141c1.1,0,2-0.9,2-2v-49.2\n C143,192.7,142.1,191.8,141,191.8z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "rect", + "type": "element", + "value": "", + "attributes": { + "x": "32.7", + "y": "195.4", + "class": "st1", + "width": "106.8", + "height": "49.5" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M130.8,18.5H41.2c-1.6,0-3,1.3-3,3l0,0c0,1.7,1.3,3,3,3h89.6c1.6,0,3-1.3,3-3l0,0\n C133.8,19.9,132.5,18.5,130.8,18.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M130.8,18.3H41.2c-1.7,0-3.2,1.4-3.2,3.2c0,1.7,1.4,3.2,3.2,3.2h89.6c1.7,0,3.2-1.4,3.2-3.2\n C133.9,19.8,132.5,18.3,130.8,18.3z M41.2,24.3c-1.5,0-2.8-1.3-2.8-2.8c0-1.6,1.3-2.8,2.8-2.8h89.6c1.5,0,2.8,1.3,2.8,2.8\n c0,1.6-1.3,2.8-2.8,2.8H41.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M4.4,0.2c-0.1,0-0.2,0.1-0.2,0.2v232.3c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2-0.1,0.2-0.2V0.4C4.6,0.3,4.5,0.2,4.4,0.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M171.6,38.3H0.4c-0.2,0-0.4,0.2-0.4,0.4S0.2,39,0.4,39h171.2c0.2,0,0.4-0.2,0.4-0.4S171.8,38.3,171.6,38.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M167.6,0.2c-0.1,0-0.2,0.1-0.2,0.2v232.4c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2-0.1,0.2-0.2V0.4\n C167.8,0.3,167.7,0.2,167.6,0.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M139.5,242.3c-0.1,0-0.1,0.1-0.1,0.1v2.5c0,0.1,0.1,0.1,0.1,0.1s0.1-0.1,0.1-0.1v-2.5\n C139.6,242.4,139.5,242.3,139.5,242.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M139.1,195.1H139c-0.1,0-0.1,0.1-0.1,0.1s0.1,0.1,0.1,0.1h0.1l0.2,0.1l0.1,0.1l0,0.1c0,0.1,0.1,0.1,0.1,0.1\n s0.1-0.1,0.1-0.1v-0.1c0,0,0,0,0,0l-0.1-0.2l-0.1-0.1c0,0,0,0,0,0L139.1,195.1C139.1,195.1,139.1,195.1,139.1,195.1z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M33.1,195.1H33c0,0,0,0,0,0l-0.1,0c0,0,0,0,0,0l-0.1,0.1l-0.1,0c0,0,0,0,0,0l-0.1,0.2l0,0.1c0,0,0,0,0,0v0.1\n c0,0.1,0.1,0.1,0.1,0.1c0.1,0,0.1-0.1,0.1-0.1v0l0.1-0.1l0-0.1l0,0c0,0,0,0,0,0l0,0l0.1,0h0.1c0.1,0,0.1-0.1,0.1-0.1\n C33.2,195.2,33.1,195.1,33.1,195.1z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M32.6,242.3c-0.1,0-0.1,0.1-0.1,0.1v2.5c0,0.1,0.1,0.1,0.1,0.1c0.1,0,0.1-0.1,0.1-0.1v-2.5\n C32.7,242.4,32.6,242.3,32.6,242.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M0.4,0C0.2,0,0.1,0.2,0.1,0.4v232.3c0,0.2,0.2,0.4,0.4,0.4h28.7c0.2,0,0.4-0.2,0.4-0.4c0-0.2-0.2-0.4-0.4-0.4H0.8V0.7\n h170.5v231.7H143c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4h28.7c0.2,0,0.4-0.2,0.4-0.4V0.4c0-0.2-0.2-0.4-0.4-0.4H0.5\n C0.5,0,0.4,0,0.4,0z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M171.6,4.2H0.4c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2h171.2c0.1,0,0.2-0.1,0.2-0.2\n C171.8,4.3,171.7,4.2,171.6,4.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M150.6,12.4c-5,0-9.1,4.1-9.1,9.1s4.1,9.1,9.1,9.1s9.1-4.1,9.1-9.1S155.6,12.4,150.6,12.4z M150.6,30.2\n c-4.8,0-8.7-3.9-8.7-8.7s3.9-8.7,8.7-8.7s8.7,3.9,8.7,8.7S155.4,30.2,150.6,30.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "ellipse", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "cx": "150.6", + "cy": "21.5", + "rx": "5.8", + "ry": "5.8" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M150.6,15.5c-3.3,0-6,2.7-6,6s2.7,6,6,6s6-2.7,6-6S153.9,15.5,150.6,15.5z M150.6,27.2c-3.1,0-5.7-2.5-5.7-5.7\n s2.5-5.7,5.7-5.7s5.7,2.5,5.7,5.7S153.7,27.2,150.6,27.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "ellipse", + "type": "element", + "value": "", + "attributes": { + "class": "st1", + "cx": "150.6", + "cy": "21.5", + "rx": "3.8", + "ry": "3.8" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M150.6,17.6c-2.2,0-3.9,1.8-3.9,4s1.8,4,3.9,4c2.2,0,3.9-1.8,3.9-4C154.5,19.3,152.8,17.6,150.6,17.6z M150.6,25.1\n c-2,0-3.6-1.6-3.6-3.6s1.6-3.6,3.6-3.6s3.6,1.6,3.6,3.6S152.6,25.1,150.6,25.1z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M141,191.4H31.1c-1.3,0-2.3,1.1-2.3,2.3v51.2c0,0.2,0.2,0.4,0.4,0.4H143c0.2,0,0.4-0.2,0.4-0.4v-51.2\n C143.3,192.5,142.3,191.4,141,191.4z M29.5,244.6v-50.8c0-0.9,0.7-1.6,1.6-1.6H141c0.9,0,1.6,0.7,1.6,1.6v50.8H29.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M139,195.1H33.1c-0.4,0-0.7,0.3-0.7,0.7v49.2c0,0.1,0.1,0.2,0.2,0.2h106.9c0.1,0,0.2-0.1,0.2-0.2v-49.2\n C139.7,195.4,139.4,195.1,139,195.1z M32.8,244.8v-49c0-0.2,0.1-0.3,0.3-0.3H139c0.2,0,0.3,0.1,0.3,0.3v49H32.8z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M139.1,178.4H32.7c-3.5,0-6.3,2.8-6.3,6.3V233h0.7v-48.2c0-3.1,2.5-5.6,5.6-5.6h106.4c3.1,0,5.6,2.5,5.6,5.6v47.7h0.7\n v-47.7C145.4,181.3,142.6,178.4,139.1,178.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M51.7,79.2c-0.1,0-0.1,0.1-0.1,0.1v99.4c0,0.1,0.1,0.1,0.1,0.1c0.1,0,0.1-0.1,0.1-0.1V79.3\n C51.8,79.2,51.8,79.2,51.7,79.2z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M120.4,79.1c-0.1,0-0.2,0.1-0.2,0.2v99.4c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2-0.1,0.2-0.2V79.3\n C120.6,79.2,120.5,79.1,120.4,79.1z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M120.4,79.1H51.6c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2h68.7c0.1,0,0.2-0.1,0.2-0.2\n C120.6,79.2,120.5,79.1,120.4,79.1z" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "open" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "shading_00000140696093821789790550000002253882697550769834_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M51.7,247.3c0,2.4,0,9.8,0,11.1c0,1.4,0,2.8,1.1,3.9c1.2,1.2,2.6,1.2,4.1,1.2c1.6,0,58,0,59.1,0\n c1.3,0,2.5-0.3,3.3-1.3c1.3-1.4,1-3.3,1-5c0-1.8,0-8.4,0-9.9" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "rect", + "type": "element", + "value": "", + "attributes": { + "x": "55.6", + "y": "246.9", + "class": "st1", + "width": "60.7", + "height": "12.7" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M171.6,38.7H0.4v206.3c0,1.1,0.9,2,2,2h167.3c1.1,0,2-0.9,2-2L171.6,38.7L171.6,38.7z" + }, + "children": [] + }, + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M171.6,38.3H0.4c-0.2,0-0.4,0.2-0.4,0.4v206.3c0,1.3,1.1,2.3,2.3,2.3h167.3c1.3,0,2.3-1.1,2.3-2.3V38.7\n C172,38.5,171.8,38.3,171.6,38.3z M0.7,39h170.6v205.9c0,0.9-0.7,1.6-1.6,1.6H2.3c-0.9,0-1.6-0.7-1.6-1.6\n C0.7,244.9,0.7,39,0.7,39z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "base_grey_00000027585544793631977930000012329166542688174233_" + }, + "children": [ + { + "name": "rect", + "type": "element", + "value": "", + "attributes": { + "x": "4.4", + "y": "39.1", + "class": "st1", + "width": "163.4", + "height": "203.4" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M19.3,70.9v-4.4c0-1.2,1-2.2,2.2-2.2h129c1.2,0,2.2,1,2.2,2.2v4.4h-5.9c-0.6,0-1,0.4-1,1v2.5\n c0,0.6,0.4,1,1,1h5.9v65.3h-5.9c-0.6,0-1,0.4-1,1v2.5c0,0.6,0.4,1,1,1h5.9V156c0,1.2-1,2.2-2.2,2.2h-129l0,0\n c-1.2,0-2.2-1-2.2-2.2v0v-10.8h5.9c0.6,0,1-0.4,1-1v-2.5c0-0.6-0.4-1-1-1h-5.9V75.4h5.9c0.6,0,1-0.4,1-1v-2.5c0-0.6-0.4-1-1-1\n L19.3,70.9" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "class": "st0", + "d": "M143,203v-9.2c0-1.1-0.9-2-2-2H31.1c-1.1,0-2,0.9-2,2v9.2" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "polyline", + "type": "element", + "value": "", + "attributes": { + "class": "st1", + "points": "139.5,203.1 139.5,195.4 32.8,195.4 32.8,203.3 \t\t\t" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "stroke" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M116.5,246.7h-0.4v12.7H55.8v-12.7h-0.4v12.9c0,0.1,0.1,0.2,0.2,0.2h60.7c0.1,0,0.2-0.1,0.2-0.2V246.7z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M120.4,246.6c-0.2,0-0.4,0.2-0.4,0.4v10.2c0,0.3,0,0.5,0,0.8c0,1.5,0.1,3-0.9,4.2c-0.7,0.8-1.7,1.2-3.1,1.2H56.9\n c-1.4,0-2.8,0-3.8-1.1c-1-1.1-1-2.5-1-3.8v-11.4c0-0.2-0.2-0.4-0.4-0.4s-0.4,0.2-0.4,0.4v11.4c0,1.4,0,3,1.2,4.3\n c1.3,1.3,2.8,1.3,4.4,1.3H116c1.5,0,2.7-0.5,3.6-1.5c1.2-1.3,1.1-3.1,1.1-4.6c0-0.3,0-0.5,0-0.8v-10.2\n C120.7,246.7,120.6,246.6,120.4,246.6z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000072973290214693693960000017318416397027368577_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,139.7,45.7,139.7z M45.7,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S47.2,145.3,45.7,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,139.7,54.7,139.7z M54.7,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S56.1,145.3,54.7,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,139.7,63.6,139.7z M63.6,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S65.1,145.3,63.6,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,139.7,72.6,139.7z M72.6,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S74,145.3,72.6,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,139.7,81.6,139.7z M81.6,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S83,145.3,81.6,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,139.7,90.5,139.7z M90.5,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S91.9,145.3,90.5,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,139.7,99.5,139.7z M99.5,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S100.9,145.3,99.5,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,139.7,108.4,139.7z M108.4,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S109.9,145.3,108.4,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,139.7,117.4,139.7z M117.4,145.3\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S118.8,145.3,117.4,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,139.7,126.3,139.7z M126.3,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S127.8,145.3,126.3,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,139.7,135.3,139.7z M135.3,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S136.8,145.3,135.3,145.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,139.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,139.7,36.7,139.7z M36.7,145.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S38.2,145.3,36.7,145.3z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000153665527845359773540000012752985171215028372_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,130.7,45.7,130.7z M45.7,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S47.2,136.3,45.7,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,130.7,54.7,130.7z M54.7,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S56.1,136.3,54.7,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,130.7,63.6,130.7z M63.6,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S65.1,136.3,63.6,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,130.7,72.6,130.7z M72.6,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S74,136.3,72.6,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,130.7,81.6,130.7z M81.6,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S83,136.3,81.6,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,130.7,90.5,130.7z M90.5,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S91.9,136.3,90.5,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,130.7,99.5,130.7z M99.5,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S100.9,136.3,99.5,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,130.7,108.4,130.7z M108.4,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S109.9,136.3,108.4,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,130.7,117.4,130.7z M117.4,136.3\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S118.8,136.3,117.4,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,130.7,126.3,130.7z M126.3,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S127.8,136.3,126.3,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,130.7,135.3,130.7z M135.3,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S136.8,136.3,135.3,136.3z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,130.7c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,130.7,36.7,130.7z M36.7,136.3c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S38.2,136.3,36.7,136.3z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000001654953178113305770000001548480951139594390_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C48.7,123.1,47.3,121.8,45.7,121.8z M45.7,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S47.2,127.4,45.7,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C57.7,123.1,56.3,121.8,54.7,121.8z M54.7,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S56.1,127.4,54.7,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C66.6,123.1,65.3,121.8,63.6,121.8z M63.6,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S65.1,127.4,63.6,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C75.6,123.1,74.2,121.8,72.6,121.8z M72.6,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S74,127.4,72.6,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C84.5,123.1,83.2,121.8,81.6,121.8z M81.6,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S83,127.4,81.6,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C93.5,123.1,92.1,121.8,90.5,121.8z M90.5,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S91.9,127.4,90.5,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C102.4,123.1,101.1,121.8,99.5,121.8z M99.5,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S100.9,127.4,99.5,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C111.4,123.1,110.1,121.8,108.4,121.8z M108.4,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S109.9,127.4,108.4,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C120.3,123.1,119,121.8,117.4,121.8z M117.4,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S118.8,127.4,117.4,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C129.3,123.1,128,121.8,126.3,121.8z M126.3,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S127.8,127.4,126.3,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C138.3,123.1,137,121.8,135.3,121.8z M135.3,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S136.8,127.4,135.3,127.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,121.8c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C39.7,123.1,38.4,121.8,36.7,121.8z M36.7,127.4\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S38.2,127.4,36.7,127.4z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000142157505160117839040000001831267897535693211_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,112.8,45.7,112.8z M45.7,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C48.3,117.2,47.2,118.4,45.7,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,112.8,54.7,112.8z M54.7,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C57.3,117.2,56.1,118.4,54.7,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,112.8,63.6,112.8z M63.6,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C66.3,117.2,65.1,118.4,63.6,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,112.8,72.6,112.8z M72.6,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C75.2,117.2,74,118.4,72.6,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,112.8,81.6,112.8z M81.6,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C84.2,117.2,83,118.4,81.6,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,112.8,90.5,112.8z M90.5,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C93.1,117.2,91.9,118.4,90.5,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,112.8,99.5,112.8z M99.5,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C102.1,117.2,100.9,118.4,99.5,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,112.8,108.4,112.8z M108.4,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C111,117.2,109.9,118.4,108.4,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,112.8,117.4,112.8z M117.4,118.4\n c-1.4,0-2.6-1.2-2.6-2.6c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C120,117.2,118.8,118.4,117.4,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,112.8,126.3,112.8z M126.3,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C129,117.2,127.8,118.4,126.3,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,112.8,135.3,112.8z M135.3,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C137.9,117.2,136.8,118.4,135.3,118.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,112.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,112.8,36.7,112.8z M36.7,118.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C39.4,117.2,38.2,118.4,36.7,118.4z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000023262343608832889980000007837414120611036803_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,103.8,45.7,103.8z M45.7,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C48.3,108.2,47.2,109.4,45.7,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,103.8,54.7,103.8z M54.7,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C57.3,108.2,56.1,109.4,54.7,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,103.8,63.6,103.8z M63.6,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C66.3,108.2,65.1,109.4,63.6,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,103.8,72.6,103.8z M72.6,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C75.2,108.2,74,109.4,72.6,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,103.8,81.6,103.8z M81.6,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C84.2,108.2,83,109.4,81.6,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,103.8,90.5,103.8z M90.5,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C93.1,108.2,91.9,109.4,90.5,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,103.8,99.5,103.8z M99.5,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C102.1,108.2,100.9,109.4,99.5,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,103.8,108.4,103.8z M108.4,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C111,108.2,109.9,109.4,108.4,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,103.8,117.4,103.8z M117.4,109.4\n c-1.4,0-2.6-1.2-2.6-2.6c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C120,108.2,118.8,109.4,117.4,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,103.8,126.3,103.8z M126.3,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C129,108.2,127.8,109.4,126.3,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,103.8,135.3,103.8z M135.3,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C137.9,108.2,136.8,109.4,135.3,109.4z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,103.8c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,103.8,36.7,103.8z M36.7,109.4c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C39.4,108.2,38.2,109.4,36.7,109.4z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000032644834021452807300000012529714203134445742_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,94.9,45.7,94.9z M45.7,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C48.3,99.3,47.2,100.5,45.7,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,94.9,54.7,94.9z M54.7,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C57.3,99.3,56.1,100.5,54.7,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,94.9,63.6,94.9z M63.6,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C66.3,99.3,65.1,100.5,63.6,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,94.9,72.6,94.9z M72.6,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C75.2,99.3,74,100.5,72.6,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,94.9,81.6,94.9z M81.6,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C84.2,99.3,83,100.5,81.6,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,94.9,90.5,94.9z M90.5,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C93.1,99.3,91.9,100.5,90.5,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,94.9,99.5,94.9z M99.5,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C102.1,99.3,100.9,100.5,99.5,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,94.9,108.4,94.9z M108.4,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C111,99.3,109.9,100.5,108.4,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,94.9,117.4,94.9z M117.4,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C120,99.3,118.8,100.5,117.4,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,94.9,126.3,94.9z M126.3,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C129,99.3,127.8,100.5,126.3,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,94.9,135.3,94.9z M135.3,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6C137.9,99.3,136.8,100.5,135.3,100.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,94.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,94.9,36.7,94.9z M36.7,100.5c-1.4,0-2.6-1.2-2.6-2.6\n c0-1.4,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6C39.4,99.3,38.2,100.5,36.7,100.5z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000046301211336714059340000011006363706714132412_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S47.3,85.9,45.7,85.9z M45.7,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S47.2,91.5,45.7,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S56.3,85.9,54.7,85.9z M54.7,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S56.1,91.5,54.7,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S65.3,85.9,63.6,85.9z M63.6,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S65.1,91.5,63.6,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S74.2,85.9,72.6,85.9z M72.6,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S74,91.5,72.6,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S83.2,85.9,81.6,85.9z M81.6,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S83,91.5,81.6,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S92.1,85.9,90.5,85.9z M90.5,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S91.9,91.5,90.5,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S101.1,85.9,99.5,85.9z M99.5,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S100.9,91.5,99.5,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S110.1,85.9,108.4,85.9z M108.4,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S109.9,91.5,108.4,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3c1.6,0,3-1.3,3-3S119,85.9,117.4,85.9z M117.4,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S118.8,91.5,117.4,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S128,85.9,126.3,85.9z M126.3,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S127.8,91.5,126.3,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S137,85.9,135.3,85.9z M135.3,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S136.8,91.5,135.3,91.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,85.9c-1.6,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.4,85.9,36.7,85.9z M36.7,91.5c-1.4,0-2.6-1.2-2.6-2.6\n s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S38.2,91.5,36.7,91.5z" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": { + "id": "row_1_00000090987415974105529780000012985790832784842890_" + }, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M45.7,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C48.7,78.2,47.3,76.9,45.7,76.9z M45.7,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S47.2,82.5,45.7,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M54.7,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C57.7,78.2,56.3,76.9,54.7,76.9z M54.7,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S56.1,82.5,54.7,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M63.6,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C66.6,78.2,65.3,76.9,63.6,76.9z M63.6,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S65.1,82.5,63.6,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M72.6,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C75.6,78.2,74.2,76.9,72.6,76.9z M72.6,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S74,82.5,72.6,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M81.6,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C84.5,78.2,83.2,76.9,81.6,76.9z M81.6,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S83,82.5,81.6,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M90.5,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C93.5,78.2,92.1,76.9,90.5,76.9z M90.5,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S91.9,82.5,90.5,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M99.5,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C102.4,78.2,101.1,76.9,99.5,76.9z M99.5,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S100.9,82.5,99.5,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M108.4,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C111.4,78.2,110.1,76.9,108.4,76.9z M108.4,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S109.9,82.5,108.4,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M117.4,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3c1.6,0,3-1.3,3-3C120.3,78.2,119,76.9,117.4,76.9z M117.4,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S118.8,82.5,117.4,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M126.3,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C129.3,78.2,128,76.9,126.3,76.9z M126.3,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S127.8,82.5,126.3,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M135.3,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C138.3,78.2,137,76.9,135.3,76.9z M135.3,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S136.8,82.5,135.3,82.5z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M36.7,76.9c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C39.7,78.2,38.4,76.9,36.7,76.9z M36.7,82.5\n c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S38.2,82.5,36.7,82.5z" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M171.6,208.8H0.4c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2h171.3c0.1,0,0.2-0.1,0.2-0.2\n C171.8,208.9,171.7,208.8,171.6,208.8z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M171.6,212.8H0.4c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2h171.3c0.1,0,0.2-0.1,0.2-0.2\n C171.8,212.9,171.7,212.8,171.6,212.8z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M10.9,202.8h-0.4c-0.1,0-0.2,0.1-0.2,0.2s0.1,0.2,0.2,0.2h0.4c0.3,0,0.6,0.1,0.8,0.4l3.3,4.5c0.4,0.5,0.8,0.9,1.3,1.1\n c0.1,0,0.2,0,0.2-0.1c0-0.1,0-0.2-0.1-0.2c-0.5-0.2-0.9-0.6-1.2-1l-3.3-4.5C11.7,203,11.3,202.8,10.9,202.8z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M161.6,202.8h-0.4c-0.4,0-0.8,0.2-1.1,0.5l-3.3,4.5c-0.3,0.4-0.7,0.8-1.2,1c-0.1,0-0.1,0.1-0.1,0.2\n c0,0.1,0.1,0.1,0.2,0.1c0.5-0.2,1-0.6,1.3-1.1l3.3-4.5c0.2-0.3,0.5-0.4,0.8-0.4h0.4c0.1,0,0.2-0.1,0.2-0.2\n C161.8,202.9,161.7,202.8,161.6,202.8z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M161.6,202.7H10.5c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4h151.2c0.2,0,0.4-0.2,0.4-0.4S161.8,202.7,161.6,202.7z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M0.4,103.9H0.3c-0.1,0-0.1,0.1-0.1,0.1c0,0.1,0.1,0.1,0.1,0.1h0.1c0.1,0,0.1-0.1,0.1-0.1C0.5,104,0.5,103.9,0.4,103.9z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M167.6,38.9c-0.1,0-0.2,0.1-0.2,0.2v203.4H4.6V39.1c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2v203.6\n c0,0.1,0.1,0.2,0.2,0.2h163.2c0.1,0,0.2-0.1,0.2-0.2V39.1C167.8,39,167.7,38.9,167.6,38.9z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M150.5,63.9h-129c-1.4,0-2.6,1.2-2.6,2.6v4.4c0,0.2,0.2,0.4,0.4,0.4h5.9c0.4,0,0.6,0.3,0.6,0.6v2.5\n c0,0.4-0.3,0.6-0.6,0.6h-5.9c-0.2,0-0.4,0.2-0.4,0.4v65.3c0,0.2,0.2,0.4,0.4,0.4h5.9c0.4,0,0.6,0.3,0.6,0.6v2.5\n c0,0.4-0.3,0.6-0.6,0.6h-5.9c-0.2,0-0.4,0.2-0.4,0.4V156c0,1.4,1.2,2.6,2.6,2.6h129c1.4,0,2.6-1.2,2.6-2.6v-10.9\n c0-0.2-0.2-0.4-0.4-0.4h-5.9c-0.4,0-0.6-0.3-0.6-0.6v-2.5c0-0.4,0.3-0.6,0.6-0.6h5.9c0.2,0,0.4-0.2,0.4-0.4V75.4\n c0-0.2-0.2-0.4-0.4-0.4h-5.9c-0.4,0-0.6-0.3-0.6-0.6v-2.5c0-0.4,0.3-0.6,0.6-0.6h5.9c0.2,0,0.4-0.2,0.4-0.4v-4.4\n C153.1,65.1,151.9,63.9,150.5,63.9z M19.7,70.5v-4c0-1,0.8-1.9,1.9-1.9h129c1,0,1.9,0.8,1.9,1.9v4h-5.5c-0.7,0-1.3,0.6-1.3,1.3\n v2.5c0,0.7,0.6,1.3,1.3,1.3h5.5v64.6h-5.5c-0.7,0-1.3,0.6-1.3,1.3v2.5c0,0.7,0.6,1.3,1.3,1.3h5.5V156c0,1-0.8,1.9-1.9,1.9h-129\n c-1,0-1.9-0.8-1.9-1.9v-10.5h5.5c0.7,0,1.3-0.6,1.3-1.3v-2.5c0-0.7-0.6-1.3-1.3-1.3h-5.5V75.7h5.5c0.7,0,1.3-0.6,1.3-1.3v-2.5\n c0-0.7-0.6-1.3-1.3-1.3L19.7,70.5L19.7,70.5z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M47.7,52.7c-3.2,0-5.2,3.4-6.3,5.5c-0.1,0.1-0.1,0.2-0.2,0.3c-0.4,0.8-0.9,1.7-1.8,1.7H21c-3.5,0-6.3,2.8-6.3,6.3v95.9\n c0,3.5,2.8,6.3,6.3,6.3h130c3.5,0,6.3-2.8,6.3-6.3V66.6c0-3.5-2.8-6.3-6.3-6.3h-18.4c-0.9,0-1.3-0.9-1.8-1.7\n c-0.1-0.1-0.1-0.2-0.2-0.3c-1-1.9-2.2-3.9-4.2-5c-0.8-0.4-1.7-0.6-2.5-0.5H48.1C47.9,52.7,47.8,52.7,47.7,52.7z M21,168.1\n c-3.1,0-5.6-2.5-5.6-5.6V66.6c0-3.1,2.5-5.6,5.6-5.6h18.4c1.3,0,1.9-1.2,2.4-2.1c0.1-0.1,0.1-0.2,0.2-0.3\n c1.5-2.7,3.2-5.4,6.1-5.1h76c0,0,0,0,0,0c0.7-0.1,1.5,0.1,2.2,0.4c1.8,0.9,2.9,2.9,3.9,4.7c0.1,0.1,0.1,0.2,0.2,0.3\n c0.5,0.9,1.1,2.1,2.4,2.1H151c3.1,0,5.6,2.5,5.6,5.6v95.9c0,3.1-2.5,5.6-5.6,5.6H21z" + }, + "children": [] + } + ] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M141,191.4H31.1c-1.3,0-2.3,1.1-2.3,2.3v9.2c0,0.2,0.2,0.4,0.4,0.4c0.2,0,0.4-0.2,0.4-0.4v-9.2c0-0.9,0.7-1.6,1.6-1.6H141\n c0.9,0,1.6,0.7,1.6,1.6v9.2c0,0.2,0.2,0.4,0.4,0.4s0.4-0.2,0.4-0.4v-9.2C143.3,192.5,142.3,191.4,141,191.4z" + }, + "children": [] + } + ] + }, + { + "name": "g", + "type": "element", + "value": "", + "attributes": {}, + "children": [ + { + "name": "path", + "type": "element", + "value": "", + "attributes": { + "d": "M139,195.1H33.1c-0.4,0-0.7,0.3-0.7,0.7v7.5c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2-0.1,0.2-0.2v-7.5c0-0.2,0.1-0.3,0.3-0.3H139\n c0.2,0,0.3,0.1,0.3,0.3v7.4c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2-0.1,0.2-0.2v-7.4C139.7,195.4,139.4,195.1,139,195.1z" + }, + "children": [] + } + ] + } + ] + } + ] + } +} diff --git a/shared-data/module/schemas/3.json b/shared-data/module/schemas/3.json index 6ccd1bb8eab..fdafba4c8a9 100644 --- a/shared-data/module/schemas/3.json +++ b/shared-data/module/schemas/3.json @@ -81,13 +81,14 @@ "magneticModuleType", "thermocyclerModuleType", "heaterShakerModuleType", - "magneticBlockType" + "magneticBlockType", + "absorbanceReaderType" ], "type": "string" }, "model": { "type": "string", - "pattern": "^(temperatureModule|magneticModule|thermocyclerModule|heaterShakerModule|magneticBlock)V[0-9]+$" + "pattern": "^(temperatureModule|magneticModule|thermocyclerModule|heaterShakerModule|magneticBlock|absorbanceReader)V[0-9]+$" }, "labwareOffset": { "$ref": "#/definitions/coordinates" }, "dimensions": { diff --git a/shared-data/protocol/types/schemaV3.ts b/shared-data/protocol/types/schemaV3.ts index 2e3f96c108e..a89f7beb4d9 100644 --- a/shared-data/protocol/types/schemaV3.ts +++ b/shared-data/protocol/types/schemaV3.ts @@ -1,4 +1,4 @@ -import { PipetteName } from '../../js' +import type { PipetteName } from '../../js' import type { DeckSlotId, LabwareDefinition2, diff --git a/shared-data/protocol/types/schemaV6/index.ts b/shared-data/protocol/types/schemaV6/index.ts index ea60dfe7739..f04a6129eb6 100644 --- a/shared-data/protocol/types/schemaV6/index.ts +++ b/shared-data/protocol/types/schemaV6/index.ts @@ -1,4 +1,4 @@ -import { +import type { LoadedPipette, LoadedLabware, LoadedModule, diff --git a/shared-data/protocol/types/schemaV7/index.ts b/shared-data/protocol/types/schemaV7/index.ts index 2c05d6496b9..51f7d8ee41a 100644 --- a/shared-data/protocol/types/schemaV7/index.ts +++ b/shared-data/protocol/types/schemaV7/index.ts @@ -1,4 +1,9 @@ -import { LoadedPipette, LoadedLabware, LoadedModule, Liquid } from '../../../js' +import type { + LoadedPipette, + LoadedLabware, + LoadedModule, + Liquid, +} from '../../../js' import type { CreateCommand, RunTimeCommand } from './command' import type { LabwareDefinition2, RobotType } from '../../../js/types' diff --git a/shared-data/python/opentrons_shared_data/module/dev_types.py b/shared-data/python/opentrons_shared_data/module/dev_types.py index 326d9b6b764..c6dbbc4acad 100644 --- a/shared-data/python/opentrons_shared_data/module/dev_types.py +++ b/shared-data/python/opentrons_shared_data/module/dev_types.py @@ -18,6 +18,7 @@ ThermocyclerModuleType = Literal["thermocyclerModuleType"] HeaterShakerModuleType = Literal["heaterShakerModuleType"] MagneticBlockType = Literal["magneticBlockType"] +AbsorbanceReaderType = Literal["absorbanceReaderType"] ModuleType = Union[ MagneticModuleType, @@ -25,6 +26,7 @@ ThermocyclerModuleType, HeaterShakerModuleType, MagneticBlockType, + AbsorbanceReaderType, ] MagneticModuleModel = Literal["magneticModuleV1", "magneticModuleV2"] @@ -32,6 +34,7 @@ ThermocyclerModuleModel = Literal["thermocyclerModuleV1", "thermocyclerModuleV2"] HeaterShakerModuleModel = Literal["heaterShakerModuleV1"] MagneticBlockModel = Literal["magneticBlockV1"] +AbsorbanceReaderModel = Literal["absorbanceReaderV1"] ModuleModel = Union[ MagneticModuleModel, @@ -39,6 +42,7 @@ ThermocyclerModuleModel, HeaterShakerModuleModel, MagneticBlockModel, + AbsorbanceReaderModel, ] ModuleSlotTransform = TypedDict( diff --git a/step-generation/src/__tests__/blowoutUtil.test.ts b/step-generation/src/__tests__/blowoutUtil.test.ts index ac2a1c1cd87..7337e517769 100644 --- a/step-generation/src/__tests__/blowoutUtil.test.ts +++ b/step-generation/src/__tests__/blowoutUtil.test.ts @@ -1,5 +1,4 @@ import { beforeEach, describe, it, expect, vi } from 'vitest' -import { BlowoutParams } from '@opentrons/shared-data/protocol/types/schemaV3' import { ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA } from '@opentrons/shared-data' import { blowoutUtil, @@ -23,6 +22,7 @@ import { getInitialRobotStateStandard, } from '../fixtures' import type { RobotState, InvariantContext } from '../types' +import type { BlowoutParams } from '@opentrons/shared-data/protocol/types/schemaV3' vi.mock('../utils/curryCommandCreator') let blowoutArgs: { diff --git a/step-generation/src/__tests__/deactivateTemperature.test.ts b/step-generation/src/__tests__/deactivateTemperature.test.ts index 730f3971cf1..fdd29e97ffc 100644 --- a/step-generation/src/__tests__/deactivateTemperature.test.ts +++ b/step-generation/src/__tests__/deactivateTemperature.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, it, expect } from 'vitest' import { getStateAndContextTempTCModules } from '../fixtures' import { deactivateTemperature } from '../commandCreators/atomic/deactivateTemperature' -import { +import type { InvariantContext, RobotState, DeactivateTemperatureArgs, diff --git a/step-generation/src/__tests__/delay.test.ts b/step-generation/src/__tests__/delay.test.ts index 6fdce84c181..6a843ab11f5 100644 --- a/step-generation/src/__tests__/delay.test.ts +++ b/step-generation/src/__tests__/delay.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, it, expect } from 'vitest' import { delay } from '../commandCreators/atomic/delay' -import { PauseArgs } from '../types' import { getSuccessResult } from '../fixtures' +import type { PauseArgs } from '../types' const getRobotInitialState = (): any => { // This particular state shouldn't matter for delay diff --git a/step-generation/src/__tests__/disengageMagnet.test.ts b/step-generation/src/__tests__/disengageMagnet.test.ts index 55cbef080b3..3f988492fe0 100644 --- a/step-generation/src/__tests__/disengageMagnet.test.ts +++ b/step-generation/src/__tests__/disengageMagnet.test.ts @@ -5,7 +5,7 @@ import { } from '@opentrons/shared-data' import { makeContext, getInitialRobotStateStandard } from '../fixtures' import { disengageMagnet } from '../commandCreators/atomic/disengageMagnet' -import { InvariantContext, RobotState } from '../types' +import type { InvariantContext, RobotState } from '../types' const moduleId = 'magneticModuleId' const commandCreatorFnName = 'disengageMagnet' describe('disengageMagnet', () => { diff --git a/step-generation/src/__tests__/dispense.test.ts b/step-generation/src/__tests__/dispense.test.ts index c193f8f0b01..968d8000e88 100644 --- a/step-generation/src/__tests__/dispense.test.ts +++ b/step-generation/src/__tests__/dispense.test.ts @@ -20,10 +20,8 @@ import { DEFAULT_PIPETTE, SOURCE_LABWARE, } from '../fixtures' -import { - ExtendedDispenseParams, - dispense, -} from '../commandCreators/atomic/dispense' +import { dispense } from '../commandCreators/atomic/dispense' +import type { ExtendedDispenseParams } from '../commandCreators/atomic/dispense' import type { InvariantContext, RobotState } from '../types' vi.mock('../utils/thermocyclerPipetteCollision') diff --git a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts index d24ed0a4c21..5eacb77b483 100644 --- a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts +++ b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts @@ -14,12 +14,10 @@ import { SOURCE_LABWARE, getInitialRobotStateStandard, } from '../fixtures' +import { dispenseUpdateLiquidState } from '../getNextRobotStateAndWarnings/dispenseUpdateLiquidState' -import { - dispenseUpdateLiquidState, - DispenseUpdateLiquidStateArgs, -} from '../getNextRobotStateAndWarnings/dispenseUpdateLiquidState' import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { DispenseUpdateLiquidStateArgs } from '../getNextRobotStateAndWarnings/dispenseUpdateLiquidState' import type { InvariantContext, RobotState } from '../types' const fixture96Plate = _fixture96Plate as LabwareDefinition2 diff --git a/step-generation/src/__tests__/forAspirate.test.ts b/step-generation/src/__tests__/forAspirate.test.ts index 85b07046782..cdb22c8951e 100644 --- a/step-generation/src/__tests__/forAspirate.test.ts +++ b/step-generation/src/__tests__/forAspirate.test.ts @@ -10,8 +10,12 @@ import { AIR, createTipLiquidState } from '../utils/misc' import { makeImmutableStateUpdater } from '../__utils__' import { forAspirate as _forAspirate } from '../getNextRobotStateAndWarnings/forAspirate' import * as warningCreators from '../warningCreators' -import { CommandCreatorWarning, InvariantContext, RobotState } from '../types' -import { AspDispAirgapParams } from '@opentrons/shared-data/lib/protocol/types/schemaV6/command/pipetting' +import type { + CommandCreatorWarning, + InvariantContext, + RobotState, +} from '../types' +import type { AspDispAirgapParams } from '@opentrons/shared-data/lib/protocol/types/schemaV6/command/pipetting' const forAspirate = makeImmutableStateUpdater(_forAspirate) diff --git a/step-generation/src/__tests__/forDropTip.test.ts b/step-generation/src/__tests__/forDropTip.test.ts index dcb4bffadf5..833187dcf99 100644 --- a/step-generation/src/__tests__/forDropTip.test.ts +++ b/step-generation/src/__tests__/forDropTip.test.ts @@ -7,7 +7,7 @@ import { } from '../fixtures' import { makeImmutableStateUpdater } from '../__utils__' import { forDropTip as _forDropTip } from '../getNextRobotStateAndWarnings/forDropTip' -import { InvariantContext, RobotState } from '../types' +import type { InvariantContext, RobotState } from '../types' const forDropTip = makeImmutableStateUpdater(_forDropTip) describe('dropTip', () => { diff --git a/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts b/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts index b3ff5cba24d..bf63014d552 100644 --- a/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts +++ b/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts @@ -1,7 +1,6 @@ import { expect, describe, it } from 'vitest' import { getIsSafePipetteMovement } from '../utils' import { - LabwareDefinition2, TEMPERATURE_MODULE_TYPE, TEMPERATURE_MODULE_V2, fixture96Plate, @@ -9,7 +8,8 @@ import { fixtureTiprack1000ul, fixtureTiprackAdapter, } from '@opentrons/shared-data' -import { InvariantContext, RobotState } from '../types' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { InvariantContext, RobotState } from '../types' const mockLabwareId = 'labwareId' const mockPipId = 'pip' diff --git a/step-generation/src/__tests__/moveLabware.test.ts b/step-generation/src/__tests__/moveLabware.test.ts index f378db67e40..ddc8e6008de 100644 --- a/step-generation/src/__tests__/moveLabware.test.ts +++ b/step-generation/src/__tests__/moveLabware.test.ts @@ -1,7 +1,6 @@ import { beforeEach, describe, it, expect, afterEach, vi } from 'vitest' import { HEATERSHAKER_MODULE_TYPE, - LabwareDefinition2, WASTE_CHUTE_CUTOUT, } from '@opentrons/shared-data' import { @@ -14,9 +13,11 @@ import { SOURCE_LABWARE, TIPRACK_1, } from '../fixtures' -import { moveLabware, MoveLabwareArgs } from '..' +import { moveLabware } from '..' +import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { InvariantContext, RobotState } from '../types' +import type { MoveLabwareArgs } from '..' const mockWasteChuteId = 'mockWasteChuteId' const mockGripperId = 'mockGripperId' diff --git a/step-generation/src/__tests__/robotStateSelectors.test.ts b/step-generation/src/__tests__/robotStateSelectors.test.ts index 637ddaa22da..792c277651e 100644 --- a/step-generation/src/__tests__/robotStateSelectors.test.ts +++ b/step-generation/src/__tests__/robotStateSelectors.test.ts @@ -2,7 +2,6 @@ import { beforeEach, describe, it, expect } from 'vitest' import { getLabwareDefURI, MAGNETIC_MODULE_TYPE, - LabwareDefinition2, fixtureTiprack300ul as _fixtureTiprack300ul, } from '@opentrons/shared-data' import { @@ -18,7 +17,9 @@ import { _getNextTip, getModuleState, } from '../' -import { InvariantContext } from '../types' + +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { InvariantContext } from '../types' let invariantContext: InvariantContext const fixtureTiprack300ul = _fixtureTiprack300ul as LabwareDefinition2 diff --git a/step-generation/src/__tests__/temperatureUpdates.test.ts b/step-generation/src/__tests__/temperatureUpdates.test.ts index df448caa2f5..fc08f969924 100644 --- a/step-generation/src/__tests__/temperatureUpdates.test.ts +++ b/step-generation/src/__tests__/temperatureUpdates.test.ts @@ -14,7 +14,7 @@ import { getStateAndContextTempTCModules, robotWithStatusAndTemp, } from '../fixtures/robotStateFixtures' -import { InvariantContext, RobotState } from '../types' +import type { InvariantContext, RobotState } from '../types' const forSetTemperature = makeImmutableStateUpdater(_forSetTemperature) const forDeactivateTemperature = makeImmutableStateUpdater( diff --git a/step-generation/src/__tests__/thermocyclerStateStep.test.ts b/step-generation/src/__tests__/thermocyclerStateStep.test.ts index d35bb5149ae..a4f4af90ff8 100644 --- a/step-generation/src/__tests__/thermocyclerStateStep.test.ts +++ b/step-generation/src/__tests__/thermocyclerStateStep.test.ts @@ -1,10 +1,9 @@ import { describe, it, expect, vi, afterEach } from 'vitest' -import { - thermocyclerStateDiff as actualThermocyclerStateDiff, - Diff, -} from '../utils/thermocyclerStateDiff' +import { thermocyclerStateDiff as actualThermocyclerStateDiff } from '../utils/thermocyclerStateDiff' import { thermocyclerStateStep } from '../commandCreators/compound/thermocyclerStateStep' import { getStateAndContextTempTCModules, getSuccessResult } from '../fixtures' + +import type { Diff } from '../utils/thermocyclerStateDiff' import type { CreateCommand } from '@opentrons/shared-data' import type { InvariantContext, diff --git a/step-generation/src/__tests__/thermocyclerUpdates.test.ts b/step-generation/src/__tests__/thermocyclerUpdates.test.ts index 225ede197d4..19f690e38c2 100644 --- a/step-generation/src/__tests__/thermocyclerUpdates.test.ts +++ b/step-generation/src/__tests__/thermocyclerUpdates.test.ts @@ -23,7 +23,12 @@ import type { TemperatureParams, ThermocyclerSetTargetBlockTemperatureParams, } from '@opentrons/shared-data/protocol/types/schemaV6/command/module' -import { InvariantContext, RobotState, ThermocyclerModuleState } from '../types' +import type { + InvariantContext, + RobotState, + ThermocyclerModuleState, +} from '../types' + const forThermocyclerSetTargetBlockTemperature = makeImmutableStateUpdater( _forThermocyclerSetTargetBlockTemperature ) diff --git a/step-generation/src/__tests__/utils.test.ts b/step-generation/src/__tests__/utils.test.ts index 7451b3c5076..65fea098106 100644 --- a/step-generation/src/__tests__/utils.test.ts +++ b/step-generation/src/__tests__/utils.test.ts @@ -5,7 +5,6 @@ import { TEMPERATURE_MODULE_TYPE, TEMPERATURE_MODULE_V1, THERMOCYCLER_MODULE_TYPE, - LabwareDefinition2, getIsLabwareAboveHeight, MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM, HEATERSHAKER_MODULE_TYPE, @@ -29,7 +28,7 @@ import { SOURCE_WELL_BLOWOUT_DESTINATION, splitLiquid, } from '../utils/misc' -import { Diff, thermocyclerStateDiff } from '../utils/thermocyclerStateDiff' +import { thermocyclerStateDiff } from '../utils/thermocyclerStateDiff' import { DEFAULT_CONFIG } from '../fixtures' import { getIsHeaterShakerEastWestWithLatchOpen, @@ -38,6 +37,10 @@ import { pipetteAdjacentHeaterShakerWhileShaking, thermocyclerPipetteCollision, } from '../utils' +import { getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette } from '../utils/heaterShakerCollision' +import * as SharedData from '@opentrons/shared-data' + +import type { Diff } from '../utils/thermocyclerStateDiff' import type { RobotState } from '../' import type { LabwareEntities, @@ -45,8 +48,7 @@ import type { ThermocyclerModuleState, ThermocyclerStateStepArgs, } from '../types' -import { getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette } from '../utils/heaterShakerCollision' -import * as SharedData from '@opentrons/shared-data' +import type { LabwareDefinition2 } from '@opentrons/shared-data' vi.mock('@opentrons/shared-data', async importOriginal => { const actualSharedData = await importOriginal() diff --git a/step-generation/src/__tests__/waitForTemperature.test.ts b/step-generation/src/__tests__/waitForTemperature.test.ts index 32a96df4325..7cdd64333d6 100644 --- a/step-generation/src/__tests__/waitForTemperature.test.ts +++ b/step-generation/src/__tests__/waitForTemperature.test.ts @@ -9,7 +9,11 @@ import { getStateAndContextTempTCModules, robotWithStatusAndTemp, } from '../fixtures' -import { WaitForTemperatureArgs, InvariantContext, RobotState } from '../types' +import type { + WaitForTemperatureArgs, + InvariantContext, + RobotState, +} from '../types' describe('waitForTemperature', () => { const temperatureModuleId = 'temperatureModuleId' diff --git a/step-generation/src/__utils__/testMatchers.ts b/step-generation/src/__utils__/testMatchers.ts index 50325deb1f2..09ae4fe83e0 100644 --- a/step-generation/src/__utils__/testMatchers.ts +++ b/step-generation/src/__utils__/testMatchers.ts @@ -1,5 +1,5 @@ import { expect } from 'vitest' -import { CommandCreatorError } from '../types' +import type { CommandCreatorError } from '../types' // error of type exists somewhere in timeline errors export function expectTimelineError( diff --git a/step-generation/src/commandCreators/atomic/configureNozzleLayout.ts b/step-generation/src/commandCreators/atomic/configureNozzleLayout.ts index 19a7e35db0a..bff6a097eda 100644 --- a/step-generation/src/commandCreators/atomic/configureNozzleLayout.ts +++ b/step-generation/src/commandCreators/atomic/configureNozzleLayout.ts @@ -1,6 +1,7 @@ -import { COLUMN, NozzleConfigurationStyle } from '@opentrons/shared-data' +import { COLUMN } from '@opentrons/shared-data' import { uuid } from '../../utils' import type { CommandCreator } from '../../types' +import type { NozzleConfigurationStyle } from '@opentrons/shared-data' interface configureNozzleLayoutArgs { pipetteId: string diff --git a/step-generation/src/commandCreators/atomic/moveLabware.ts b/step-generation/src/commandCreators/atomic/moveLabware.ts index 3ca4045647c..904f95fb569 100644 --- a/step-generation/src/commandCreators/atomic/moveLabware.ts +++ b/step-generation/src/commandCreators/atomic/moveLabware.ts @@ -1,7 +1,5 @@ import { - CreateCommand, HEATERSHAKER_MODULE_TYPE, - LabwareMovementStrategy, THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' import * as errorCreators from '../../errorCreators' @@ -12,6 +10,10 @@ import { getLabwareHasLiquid, uuid, } from '../../utils' +import type { + CreateCommand, + LabwareMovementStrategy, +} from '@opentrons/shared-data' import type { CommandCreator, CommandCreatorError, diff --git a/step-generation/src/commandCreators/atomic/replaceTip.ts b/step-generation/src/commandCreators/atomic/replaceTip.ts index b56f0978db6..77e112d75a6 100644 --- a/step-generation/src/commandCreators/atomic/replaceTip.ts +++ b/step-generation/src/commandCreators/atomic/replaceTip.ts @@ -1,7 +1,6 @@ import { ALL, COLUMN, - NozzleConfigurationStyle, FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE, } from '@opentrons/shared-data' @@ -23,6 +22,8 @@ import { getWasteChuteAddressableAreaNamePip, } from '../../utils' import { dropTip } from './dropTip' + +import type { NozzleConfigurationStyle } from '@opentrons/shared-data' import type { CommandCreator, CommandCreatorError, diff --git a/step-generation/src/commandCreators/compound/heaterShaker.ts b/step-generation/src/commandCreators/compound/heaterShaker.ts index c7de7779df4..49d94f52d90 100644 --- a/step-generation/src/commandCreators/compound/heaterShaker.ts +++ b/step-generation/src/commandCreators/compound/heaterShaker.ts @@ -1,10 +1,5 @@ import { curryCommandCreator, reduceCommandCreators } from '../../utils' import * as errorCreators from '../../errorCreators' -import { - CommandCreator, - CurriedCommandCreator, - HeaterShakerArgs, -} from '../../types' import { getModuleState } from '../../robotStateSelectors' import { delay } from '../atomic/delay' import { heaterShakerOpenLatch } from '../atomic/heaterShakerOpenLatch' @@ -14,6 +9,12 @@ import { setTemperature } from '../atomic/setTemperature' import { heaterShakerStopShake } from '../atomic/heaterShakerStopShake' import { heaterShakerSetTargetShakeSpeed } from '../atomic/heaterShakerSetTargetShakeSpeed' +import type { + CommandCreator, + CurriedCommandCreator, + HeaterShakerArgs, +} from '../../types' + export const heaterShaker: CommandCreator = ( args, invariantContext, diff --git a/step-generation/src/fixtures/commandFixtures.ts b/step-generation/src/fixtures/commandFixtures.ts index 3d1ee394574..86b6e9ea030 100644 --- a/step-generation/src/fixtures/commandFixtures.ts +++ b/step-generation/src/fixtures/commandFixtures.ts @@ -7,12 +7,13 @@ import { DEFAULT_BLOWOUT_WELL, DEST_LABWARE, } from './data' -import { +import { ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA } from '@opentrons/shared-data' + +import type { AddressableAreaName, AspDispAirgapParams, BlowoutParams, CreateCommand, - ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, TouchTipParams, } from '@opentrons/shared-data' import type { CommandsAndWarnings, CommandCreatorErrorResponse } from '../types' diff --git a/step-generation/src/fixtures/robotStateFixtures.ts b/step-generation/src/fixtures/robotStateFixtures.ts index a3a7e47062d..bfed688ad72 100644 --- a/step-generation/src/fixtures/robotStateFixtures.ts +++ b/step-generation/src/fixtures/robotStateFixtures.ts @@ -17,12 +17,6 @@ import { fixtureP100096V2Specs, } from '@opentrons/shared-data' -import { - TEMPERATURE_APPROACHING_TARGET, - TEMPERATURE_AT_TARGET, - TEMPERATURE_DEACTIVATED, - FIXED_TRASH_ID, -} from '../constants' import { makeInitialRobotState } from '../utils' import { DEFAULT_PIPETTE, @@ -33,6 +27,12 @@ import { TROUGH_LABWARE, tiprackWellNamesFlat, } from './data' +import { TEMPERATURE_DEACTIVATED, FIXED_TRASH_ID } from '../constants' + +import type { + TEMPERATURE_APPROACHING_TARGET, + TEMPERATURE_AT_TARGET, +} from '../constants' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { AdditionalEquipmentEntities } from '../types' import type { diff --git a/step-generation/src/getNextRobotStateAndWarnings/forConfigureNozzleLayout.ts b/step-generation/src/getNextRobotStateAndWarnings/forConfigureNozzleLayout.ts index dbfcb5f50e7..ec372615ac2 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/forConfigureNozzleLayout.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/forConfigureNozzleLayout.ts @@ -1,4 +1,4 @@ -import { NozzleConfigurationStyle } from '@opentrons/shared-data' +import type { NozzleConfigurationStyle } from '@opentrons/shared-data' import type { InvariantContext, RobotStateAndWarnings } from '../types' interface ConfigureNozzleLayoutParams { diff --git a/step-generation/src/getNextRobotStateAndWarnings/heaterShakerUpdates.ts b/step-generation/src/getNextRobotStateAndWarnings/heaterShakerUpdates.ts index 16f3c3ead23..8d8f5be586d 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/heaterShakerUpdates.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/heaterShakerUpdates.ts @@ -1,11 +1,11 @@ import { HEATERSHAKER_MODULE_TYPE } from '@opentrons/shared-data' import { getModuleState } from '../robotStateSelectors' -import { +import type { TemperatureParams, ShakeSpeedParams, ModuleOnlyParams, } from '@opentrons/shared-data/protocol/types/schemaV6/command/module' -import { +import type { HeaterShakerModuleState, InvariantContext, RobotState, diff --git a/step-generation/src/robotStateSelectors.ts b/step-generation/src/robotStateSelectors.ts index 4b1b0e9310e..68ad44b9009 100644 --- a/step-generation/src/robotStateSelectors.ts +++ b/step-generation/src/robotStateSelectors.ts @@ -5,7 +5,6 @@ import { getLabwareDefURI, THERMOCYCLER_MODULE_TYPE, orderWells, - NozzleConfigurationStyle, COLUMN, ALL, } from '@opentrons/shared-data' @@ -16,6 +15,7 @@ import type { RobotState, ThermocyclerModuleState, } from './types' +import type { NozzleConfigurationStyle } from '@opentrons/shared-data' export function sortLabwareBySlot( labwareState: RobotState['labware'] diff --git a/step-generation/src/types.ts b/step-generation/src/types.ts index 2ffb48bc192..ad1ea16df14 100644 --- a/step-generation/src/types.ts +++ b/step-generation/src/types.ts @@ -1,11 +1,9 @@ -import { +import type { MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, MAGNETIC_BLOCK_TYPE, -} from '@opentrons/shared-data' -import type { CreateCommand, LabwareDefinition2, ModuleType, diff --git a/step-generation/src/utils/getLabwareSlot.ts b/step-generation/src/utils/getLabwareSlot.ts index b6c3477acc3..e965e537d58 100644 --- a/step-generation/src/utils/getLabwareSlot.ts +++ b/step-generation/src/utils/getLabwareSlot.ts @@ -1,4 +1,4 @@ -import { RobotState } from '../types' +import type { RobotState } from '../types' // this function returns the slot a labware is in (which should be a string 1-12) // the reason this function is needed is because if a labware is on top of a module diff --git a/step-generation/src/utils/misc.ts b/step-generation/src/utils/misc.ts index 77d91213d63..cc2b51e6c25 100644 --- a/step-generation/src/utils/misc.ts +++ b/step-generation/src/utils/misc.ts @@ -7,7 +7,6 @@ import { getLabwareDefURI, getWellNamePerMultiTip, WASTE_CHUTE_CUTOUT, - PipetteChannels, ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, NINETY_SIX_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, @@ -26,6 +25,7 @@ import type { AddressableAreaName, LabwareDefinition2, BlowoutParams, + PipetteChannels, } from '@opentrons/shared-data' import type { AdditionalEquipmentEntities, diff --git a/yarn.lock b/yarn.lock index 8427f656e8d..269ab6f11a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5850,6 +5850,16 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bar-horizontal@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/bar-horizontal/-/bar-horizontal-0.5.1.tgz#aa35a769cf89ee30bdf294b1d6b879c8199e97d1" + integrity sha512-xU8nq9JprzO6gUJUg2tTarFhciL8f4TSEujLLWJ9ziepJTHeoiET1SB0TVPvbbm41K+S8jpQvQ6AlXW7H2NtEA== + dependencies: + figures "1.7.0" + lodash ">=4.17.12" + meow "3.7.0" + window-size "0.1.4" + base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -6541,6 +6551,14 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" @@ -6559,6 +6577,11 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== + camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -8048,7 +8071,7 @@ decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -9140,7 +9163,7 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -9469,6 +9492,13 @@ eslint-config-standard@^16.0.2: resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== +eslint-formatter-summary-chart@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-formatter-summary-chart/-/eslint-formatter-summary-chart-0.3.0.tgz#d6da8c9ba18f09488efcff49d3287e3e4162b396" + integrity sha512-xRGVLIt5SjH0Tq3aPg7MA0xGPPIvKCNk9rqYhrgoQiHDPyaMmWDPz0176qAtBdhGfpiclhxkbuo/rrxZLf/U+g== + dependencies: + bar-horizontal "^0.5.1" + eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" @@ -10180,6 +10210,14 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +figures@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -10368,6 +10406,14 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -10786,6 +10832,11 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== + get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" @@ -11967,6 +12018,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== + dependencies: + repeating "^2.0.0" + indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -12348,6 +12406,11 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -12647,6 +12710,11 @@ is-url@^1.2.4: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -13290,6 +13358,17 @@ listr2@^3.8.3: through "^2.3.8" wrap-ansi "^7.0.0" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -13426,7 +13505,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.21, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.7.0: +lodash@4.17.21, lodash@>=4.17.12, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -13715,7 +13794,7 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== -map-obj@^1.0.0: +map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== @@ -13972,6 +14051,22 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +meow@3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + meow@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" @@ -14399,7 +14494,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -15498,6 +15593,13 @@ parse-entities@^4.0.0: is-decimal "^2.0.0" is-hexadecimal "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -15563,6 +15665,13 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -15628,6 +15737,15 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -17323,6 +17441,14 @@ read-config-file@6.3.2: json5 "^2.2.0" lazy-val "^1.0.4" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -17340,6 +17466,15 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -17425,6 +17560,14 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" @@ -17734,6 +17877,13 @@ repeat-string@^1.5.4, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + replace-ext@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" @@ -19185,6 +19335,13 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -19212,6 +19369,13 @@ strip-final-newline@^3.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== + dependencies: + get-stdin "^4.0.1" + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" @@ -19873,6 +20037,11 @@ trim-lines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== + trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" @@ -21321,6 +21490,11 @@ wide-align@^1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +window-size@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw== + winston-transport@^4.2.0: version "4.7.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0"