edge-impulse-linux 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/build/cli/config.js +35 -4
- package/build/cli/config.js.map +1 -1
- package/build/cli/linux/runner.js +55 -6
- package/build/cli/linux/runner.js.map +1 -1
- package/build/cli/linux/webserver/public/inference-server.js +75 -3
- package/build/cli/linux/webserver/public/inference-server.js.map +1 -1
- package/build/cli/linux/webserver/views/inference-server-view.d.ts +11 -2
- package/build/cli/linux/webserver/views/inference-server-view.js +38 -12
- package/build/cli/linux/webserver/views/inference-server-view.js.map +1 -1
- package/build/debug.d.ts +1 -0
- package/build/debug.js +26 -0
- package/build/debug.js.map +1 -0
- package/build/library/classifier/image-classifier.d.ts +6 -2
- package/build/library/classifier/image-classifier.js +19 -4
- package/build/library/classifier/image-classifier.js.map +1 -1
- package/build/sdk/studio/sdk/api/adminApi.d.ts +36 -0
- package/build/sdk/studio/sdk/api/adminApi.js +243 -0
- package/build/sdk/studio/sdk/api/adminApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/classifyApi.d.ts +13 -0
- package/build/sdk/studio/sdk/api/classifyApi.js +85 -0
- package/build/sdk/studio/sdk/api/classifyApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/dSPApi.d.ts +6 -6
- package/build/sdk/studio/sdk/api/dSPApi.js +3 -15
- package/build/sdk/studio/sdk/api/dSPApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationBlocksApi.d.ts +95 -2
- package/build/sdk/studio/sdk/api/organizationBlocksApi.js +634 -2
- package/build/sdk/studio/sdk/api/organizationBlocksApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationDataApi.d.ts +27 -0
- package/build/sdk/studio/sdk/api/organizationDataApi.js +166 -0
- package/build/sdk/studio/sdk/api/organizationDataApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationsApi.d.ts +83 -43
- package/build/sdk/studio/sdk/api/organizationsApi.js +273 -43
- package/build/sdk/studio/sdk/api/organizationsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/projectsApi.d.ts +46 -0
- package/build/sdk/studio/sdk/api/projectsApi.js +301 -0
- package/build/sdk/studio/sdk/api/projectsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/rawDataApi.d.ts +28 -4
- package/build/sdk/studio/sdk/api/rawDataApi.js +51 -7
- package/build/sdk/studio/sdk/api/rawDataApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/userApi.d.ts +33 -0
- package/build/sdk/studio/sdk/api/userApi.js +213 -0
- package/build/sdk/studio/sdk/api/userApi.js.map +1 -1
- package/build/sdk/studio/sdk/model/addOrganizationTransformationBlockRequest.d.ts +1 -1
- package/build/sdk/studio/sdk/model/addOrganizationTransformationBlockRequest.js +1 -1
- package/build/sdk/studio/sdk/model/addOrganizationTransformationBlockRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/adminApiUser.d.ts +4 -0
- package/build/sdk/studio/sdk/model/adminApiUser.js +5 -0
- package/build/sdk/studio/sdk/model/adminApiUser.js.map +1 -1
- package/build/sdk/studio/sdk/model/adminCreateOrganizationDataExportRequest.d.ts +36 -0
- package/build/sdk/studio/sdk/model/adminCreateOrganizationDataExportRequest.js +42 -0
- package/build/sdk/studio/sdk/model/adminCreateOrganizationDataExportRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/adminGetOrganizationUsageReportsResponse.d.ts +1 -1
- package/build/sdk/studio/sdk/model/adminGetOrganizationUsageReportsResponseAllOf.d.ts +1 -1
- package/build/sdk/studio/sdk/model/adminUpdateOrganizationDataExportRequest.d.ts +32 -0
- package/build/sdk/studio/sdk/model/adminUpdateOrganizationDataExportRequest.js +37 -0
- package/build/sdk/studio/sdk/model/adminUpdateOrganizationDataExportRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/deploymentTargetEngine.d.ts +1 -1
- package/build/sdk/studio/sdk/model/deploymentTargetEngine.js +1 -1
- package/build/sdk/studio/sdk/model/deploymentTargetEngine.js.map +1 -1
- package/build/sdk/studio/sdk/model/exportBlockResponse.d.ts +37 -0
- package/build/sdk/studio/sdk/model/exportBlockResponse.js +47 -0
- package/build/sdk/studio/sdk/model/exportBlockResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/exportBlockResponseAllOf.d.ts +29 -0
- package/build/sdk/studio/sdk/model/exportBlockResponseAllOf.js +37 -0
- package/build/sdk/studio/sdk/model/exportBlockResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfo.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfo.js +47 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfo.js.map +1 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfoAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfoAllOf.js +37 -0
- package/build/sdk/studio/sdk/model/getCsvWizardUploadedFileInfoAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getJWTRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/getJWTRequest.js +5 -0
- package/build/sdk/studio/sdk/model/getJWTRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationBucketResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponse.d.ts +38 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponse.js +47 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponseAllOf.d.ts +30 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponseAllOf.js +37 -0
- package/build/sdk/studio/sdk/model/getOrganizationDataExportsResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationDeployBlockResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationDspBlockResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransferLearningBlockResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponse.d.ts +34 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponse.js +42 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponseAllOf.d.ts +26 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/getOrganizationTransformationBlockResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/getUserResponse.d.ts +4 -0
- package/build/sdk/studio/sdk/model/getUserResponse.js +5 -0
- package/build/sdk/studio/sdk/model/getUserResponse.js.map +1 -1
- package/build/sdk/studio/sdk/model/imageInputScaling.d.ts +2 -2
- package/build/sdk/studio/sdk/model/imageInputScaling.js +1 -1
- package/build/sdk/studio/sdk/model/imageInputScaling.js.map +1 -1
- package/build/sdk/studio/sdk/model/kerasModelMetadataMetricsOnDevicePerformance.d.ts +1 -0
- package/build/sdk/studio/sdk/model/kerasModelMetadataMetricsOnDevicePerformance.js +5 -0
- package/build/sdk/studio/sdk/model/kerasModelMetadataMetricsOnDevicePerformance.js.map +1 -1
- package/build/sdk/studio/sdk/model/kerasResponse.d.ts +4 -6
- package/build/sdk/studio/sdk/model/kerasResponse.js +7 -7
- package/build/sdk/studio/sdk/model/kerasResponse.js.map +1 -1
- package/build/sdk/studio/sdk/model/kerasResponseAllOf.d.ts +4 -6
- package/build/sdk/studio/sdk/model/kerasResponseAllOf.js +7 -7
- package/build/sdk/studio/sdk/model/kerasResponseAllOf.js.map +1 -1
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponse.d.ts +2 -2
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponse.js +1 -1
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponse.js.map +1 -1
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponseAllOf.d.ts +2 -2
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponseAllOf.js +1 -1
- package/build/sdk/studio/sdk/model/listOrganizationBucketsResponseAllOf.js.map +1 -1
- package/build/sdk/studio/sdk/model/listOrganizationUsageReportsResponseAllOf.d.ts +30 -0
- package/build/sdk/studio/sdk/model/listOrganizationUsageReportsResponseAllOf.js +37 -0
- package/build/sdk/studio/sdk/model/listOrganizationUsageReportsResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/listPortalFilesInFolderRequest.d.ts +9 -1
- package/build/sdk/studio/sdk/model/listPortalFilesInFolderRequest.js +10 -0
- package/build/sdk/studio/sdk/model/listPortalFilesInFolderRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/modelEngineShortEnum.d.ts +13 -0
- package/build/sdk/studio/sdk/model/modelEngineShortEnum.js +16 -0
- package/build/sdk/studio/sdk/model/modelEngineShortEnum.js.map +1 -0
- package/build/sdk/studio/sdk/model/models.d.ts +34 -1
- package/build/sdk/studio/sdk/model/models.js +102 -8
- package/build/sdk/studio/sdk/model/models.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationBucket.d.ts +49 -0
- package/build/sdk/studio/sdk/model/organizationBucket.js +62 -0
- package/build/sdk/studio/sdk/model/organizationBucket.js.map +1 -0
- package/build/sdk/studio/sdk/model/organizationCreateProject.d.ts +2 -3
- package/build/sdk/studio/sdk/model/organizationCreateProject.js +2 -3
- package/build/sdk/studio/sdk/model/organizationCreateProject.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationCreateProjectOutputDatasetPathRule.d.ts +16 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectOutputDatasetPathRule.js +16 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectOutputDatasetPathRule.js.map +1 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectPathFilter.d.ts +35 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectPathFilter.js +40 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectPathFilter.js.map +1 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectRequest.d.ts +17 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectRequest.js +15 -0
- package/build/sdk/studio/sdk/model/organizationCreateProjectRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFiles.d.ts +2 -3
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFiles.js +2 -3
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFiles.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFilesAllOfFiles.d.ts +4 -2
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFilesAllOfFiles.js +9 -8
- package/build/sdk/studio/sdk/model/organizationCreateProjectWithFilesAllOfFiles.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationDataExport.d.ts +35 -0
- package/build/sdk/studio/sdk/model/organizationDataExport.js +52 -0
- package/build/sdk/studio/sdk/model/organizationDataExport.js.map +1 -0
- package/build/sdk/studio/sdk/model/organizationDataset.d.ts +4 -0
- package/build/sdk/studio/sdk/model/organizationDataset.js +5 -0
- package/build/sdk/studio/sdk/model/organizationDataset.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationDeployBlock.d.ts +1 -0
- package/build/sdk/studio/sdk/model/organizationDeployBlock.js +5 -0
- package/build/sdk/studio/sdk/model/organizationDeployBlock.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationDspBlock.d.ts +1 -0
- package/build/sdk/studio/sdk/model/organizationDspBlock.js +5 -0
- package/build/sdk/studio/sdk/model/organizationDspBlock.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationGetCreateProjectsResponseAllOfJobs.d.ts +2 -3
- package/build/sdk/studio/sdk/model/organizationGetCreateProjectsResponseAllOfJobs.js +2 -3
- package/build/sdk/studio/sdk/model/organizationGetCreateProjectsResponseAllOfJobs.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationPipelineStep.d.ts +11 -0
- package/build/sdk/studio/sdk/model/organizationPipelineStep.js +15 -0
- package/build/sdk/studio/sdk/model/organizationPipelineStep.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationTransferLearningBlock.d.ts +1 -0
- package/build/sdk/studio/sdk/model/organizationTransferLearningBlock.js +5 -0
- package/build/sdk/studio/sdk/model/organizationTransferLearningBlock.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationTransformationBlock.d.ts +3 -3
- package/build/sdk/studio/sdk/model/organizationTransformationBlock.js +7 -3
- package/build/sdk/studio/sdk/model/organizationTransformationBlock.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationUser.d.ts +4 -0
- package/build/sdk/studio/sdk/model/organizationUser.js +5 -0
- package/build/sdk/studio/sdk/model/organizationUser.js.map +1 -1
- package/build/sdk/studio/sdk/model/profileModelInfoMemory.d.ts +1 -0
- package/build/sdk/studio/sdk/model/profileModelInfoMemory.js +5 -0
- package/build/sdk/studio/sdk/model/profileModelInfoMemory.js.map +1 -1
- package/build/sdk/studio/sdk/model/profileModelTableMcuMemory.d.ts +1 -0
- package/build/sdk/studio/sdk/model/profileModelTableMcuMemory.js +5 -0
- package/build/sdk/studio/sdk/model/profileModelTableMcuMemory.js.map +1 -1
- package/build/sdk/studio/sdk/model/project.d.ts +4 -0
- package/build/sdk/studio/sdk/model/project.js +5 -0
- package/build/sdk/studio/sdk/model/project.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectCollaborator.d.ts +4 -0
- package/build/sdk/studio/sdk/model/projectCollaborator.js +5 -0
- package/build/sdk/studio/sdk/model/projectCollaborator.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.d.ts +18 -0
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js +22 -1
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfDeploySettings.d.ts +2 -0
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfDeploySettings.js +5 -0
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfDeploySettings.js.map +1 -1
- package/build/sdk/studio/sdk/model/sample.d.ts +4 -0
- package/build/sdk/studio/sdk/model/sample.js +5 -0
- package/build/sdk/studio/sdk/model/sample.js.map +1 -1
- package/build/sdk/studio/sdk/model/setKerasParameterRequest.d.ts +4 -6
- package/build/sdk/studio/sdk/model/setKerasParameterRequest.js +7 -7
- package/build/sdk/studio/sdk/model/setKerasParameterRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/targetConstraintsDevice.d.ts +0 -4
- package/build/sdk/studio/sdk/model/targetConstraintsDevice.js +0 -5
- package/build/sdk/studio/sdk/model/targetConstraintsDevice.js.map +1 -1
- package/build/sdk/studio/sdk/model/transformationJobOperatesOnEnum.d.ts +13 -0
- package/build/sdk/studio/sdk/model/transformationJobOperatesOnEnum.js +16 -0
- package/build/sdk/studio/sdk/model/transformationJobOperatesOnEnum.js.map +1 -0
- package/build/sdk/studio/sdk/model/updateOrganizationTransformationBlockRequest.d.ts +2 -3
- package/build/sdk/studio/sdk/model/updateOrganizationTransformationBlockRequest.js +2 -3
- package/build/sdk/studio/sdk/model/updateOrganizationTransformationBlockRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/updateProjectRequest.d.ts +21 -1
- package/build/sdk/studio/sdk/model/updateProjectRequest.js +27 -1
- package/build/sdk/studio/sdk/model/updateProjectRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/uploadCsvWizardUploadedFileRequest.d.ts +33 -0
- package/build/sdk/studio/sdk/model/uploadCsvWizardUploadedFileRequest.js +32 -0
- package/build/sdk/studio/sdk/model/uploadCsvWizardUploadedFileRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/user.d.ts +4 -0
- package/build/sdk/studio/sdk/model/user.js +5 -0
- package/build/sdk/studio/sdk/model/user.js.map +1 -1
- package/build/sdk/studio/sdk/model/userDeleteTotpMfaKeyRequest.d.ts +28 -0
- package/build/sdk/studio/sdk/model/userDeleteTotpMfaKeyRequest.js +32 -0
- package/build/sdk/studio/sdk/model/userDeleteTotpMfaKeyRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponse.d.ts +40 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponse.js +47 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponseAllOf.d.ts +32 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponseAllOf.js +37 -0
- package/build/sdk/studio/sdk/model/userGenerateNewMfaKeyResponseAllOf.js.map +1 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyRequest.d.ts +32 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyRequest.js +37 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponse.d.ts +36 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponse.js +42 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponse.js.map +1 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponseAllOf.d.ts +28 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponseAllOf.js +32 -0
- package/build/sdk/studio/sdk/model/userSetTotpMfaKeyResponseAllOf.js.map +1 -0
- package/build/shared/viewmodels/init.d.ts +12 -2
- package/build/shared/viewmodels/init.js +6 -1
- package/build/shared/viewmodels/init.js.map +1 -1
- package/cli/linux/runner.ts +68 -7
- package/cli/linux/webserver/public/assets/mobileclient.css +5 -1
- package/cli/linux/webserver/public/inference-server.js +85 -4
- package/cli/linux/webserver/views/inference-server-view.ts +51 -14
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../shared/viewmodels/init.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../shared/viewmodels/init.ts"],"names":[],"mappings":";;;AAAA,IAAY,QA4EX;AA5ED,WAAY,QAAQ;IAChB,2CAAU,CAAA;IACV,qDAAe,CAAA;IACf,qCAAO,CAAA;IACP,yDAAiB,CAAA;IACjB,iEAAqB,CAAA;IACrB,2DAAkB,CAAA;IAClB,mDAAc,CAAA;IACd,yDAAiB,CAAA;IACjB,+DAAoB,CAAA;IACpB,yDAAiB,CAAA;IACjB,8DAAoB,CAAA;IACpB,8CAAY,CAAA;IACZ,8DAAoB,CAAA;IACpB,gEAAqB,CAAA;IACrB,kEAAsB,CAAA;IACtB,8EAA4B,CAAA;IAC5B,8CAAY,CAAA;IACZ,wCAAS,CAAA;IACT,0CAAU,CAAA;IACV,4CAAW,CAAA;IACX,4DAAmB,CAAA;IACnB,gFAA6B,CAAA;IAC7B,0DAAkB,CAAA;IAClB,4CAAW,CAAA;IACX,4CAAW,CAAA;IACX,gDAAa,CAAA;IACb,8CAAY,CAAA;IACZ,gDAAa,CAAA;IACb,0CAAU,CAAA;IACV,wEAAyB,CAAA;IACzB,8EAA4B,CAAA;IAC5B,4EAA2B,CAAA;IAC3B,wCAAS,CAAA;IACT,oEAAuB,CAAA;IACvB,gDAAa,CAAA;IACb,wDAAiB,CAAA;IACjB,oEAAuB,CAAA;IACvB,sDAAgB,CAAA;IAChB,4EAA2B,CAAA;IAC3B,gEAAqB,CAAA;IACrB,kDAAc,CAAA;IACd,8DAAoB,CAAA;IACpB,0DAAkB,CAAA;IAClB,oDAAe,CAAA;IACf,sDAAgB,CAAA;IAChB,gDAAa,CAAA;IACb,oFAA+B,CAAA;IAC/B,0FAAkC,CAAA;IAClC,wFAAiC,CAAA;IACjC,oFAA+B,CAAA;IAC/B,oEAAuB,CAAA;IACvB,0EAA0B,CAAA;IAC1B,kEAAsB,CAAA;IACtB,gEAAqB,CAAA;IACrB,sEAAwB,CAAA;IACxB,gEAAqB,CAAA;IACrB,kFAA8B,CAAA;IAC9B,oFAA+B,CAAA;IAC/B,gGAAqC,CAAA;IACrC,0FAAkC,CAAA;IAClC,wEAAyB,CAAA;IACzB,qEAAwB,CAAA;IACxB,uEAAyB,CAAA;IACzB,mFAA+B,CAAA;IAC/B,+DAAqB,CAAA;IACrB,yFAAkC,CAAA;IAClC,yEAA0B,CAAA;IAC1B,yEAA0B,CAAA;IAC1B,iEAAsB,CAAA;IACtB,uEAAyB,CAAA;IACzB,qGAAwC,CAAA;IACxC,2EAA2B,CAAA;IAC3B,uEAAyB,CAAA;IACzB,yDAAkB,CAAA;IAClB,yDAAkB,CAAA;AACtB,CAAC,EA5EW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA4EnB"}
|
package/cli/linux/runner.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { Prophesee } from '../../library/sensors/prophesee';
|
|
|
24
24
|
import { asyncMiddleware } from './webserver/middleware/asyncMiddleware';
|
|
25
25
|
import multer from 'multer';
|
|
26
26
|
import util from 'util';
|
|
27
|
-
import { renderInferenceServerView } from './webserver/views/inference-server-view';
|
|
27
|
+
import { InferenceServerModelViewModel, InferenceServerViewModel, renderInferenceServerView } from './webserver/views/inference-server-view';
|
|
28
28
|
|
|
29
29
|
const RUNNER_PREFIX = '\x1b[33m[RUN]\x1b[0m';
|
|
30
30
|
const BUILD_PREFIX = '\x1b[32m[BLD]\x1b[0m';
|
|
@@ -581,18 +581,35 @@ function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, pro
|
|
|
581
581
|
text = text.concat([
|
|
582
582
|
`curl -v -X POST -H "Content-Type: application/json" -d '{"features": [5, 10, 15, 20]}' http://localhost:${port}/api/features`,
|
|
583
583
|
'',
|
|
584
|
-
'(Expecting ' +
|
|
584
|
+
'(Expecting ' + model.modelParameters.input_features_count + ' features for this model)',
|
|
585
585
|
]);
|
|
586
586
|
}
|
|
587
587
|
|
|
588
|
+
let modelVm: InferenceServerModelViewModel;
|
|
589
|
+
if (model.modelParameters.sensorType === 'camera') {
|
|
590
|
+
modelVm = {
|
|
591
|
+
mode: 'image',
|
|
592
|
+
width: model.modelParameters.image_input_width,
|
|
593
|
+
height: model.modelParameters.image_input_height,
|
|
594
|
+
depth: model.modelParameters.image_channel_count === 3 ? 'RGB' : 'Grayscale',
|
|
595
|
+
isObjectDetection: model.modelParameters.model_type === 'constrained_object_detection' ||
|
|
596
|
+
model.modelParameters.model_type === 'object_detection',
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
else {
|
|
600
|
+
modelVm = {
|
|
601
|
+
mode: 'features',
|
|
602
|
+
featuresCount: model.modelParameters.input_features_count,
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
|
|
588
606
|
const view = renderInferenceServerView({
|
|
589
607
|
owner: model.project.owner,
|
|
590
608
|
projectName: model.project.name,
|
|
591
609
|
projectVersion: model.project.deploy_version,
|
|
592
|
-
featuresCount: runner.getModel().modelParameters.input_features_count,
|
|
593
|
-
mode: model.modelParameters.sensorType === 'camera' ? 'image' : 'features',
|
|
594
610
|
serverPort: port,
|
|
595
611
|
studioLink: projectStudioUrl,
|
|
612
|
+
model: modelVm,
|
|
596
613
|
});
|
|
597
614
|
|
|
598
615
|
res.status(200);
|
|
@@ -600,6 +617,11 @@ function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, pro
|
|
|
600
617
|
res.end(view.toString());
|
|
601
618
|
}));
|
|
602
619
|
|
|
620
|
+
app.get('/api/info', asyncMiddleware(async (req, res) => {
|
|
621
|
+
res.header('Content-Type', 'application/json');
|
|
622
|
+
res.end(JSON.stringify(model, null, 4) + '\n');
|
|
623
|
+
}));
|
|
624
|
+
|
|
603
625
|
app.post('/api/features', asyncMiddleware(async (req, res) => {
|
|
604
626
|
const body = <{ features: number[] }>req.body;
|
|
605
627
|
|
|
@@ -637,7 +659,13 @@ function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, pro
|
|
|
637
659
|
}));
|
|
638
660
|
|
|
639
661
|
app.post('/api/image', asyncMiddleware(async (req, res) => {
|
|
640
|
-
let
|
|
662
|
+
let resized: {
|
|
663
|
+
features: number[],
|
|
664
|
+
originalWidth: number,
|
|
665
|
+
originalHeight: number,
|
|
666
|
+
newWidth: number,
|
|
667
|
+
newHeight: number,
|
|
668
|
+
};
|
|
641
669
|
|
|
642
670
|
try {
|
|
643
671
|
const multipartUpload = multer({ limits: { files: 1, fileSize: 100 * 1024 * 1024 } });
|
|
@@ -660,7 +688,7 @@ function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, pro
|
|
|
660
688
|
console.log(RUNNER_PREFIX, 'Incoming inference request (/api/image) for ' +
|
|
661
689
|
(file.originalname || 'a file with size ' + file.size + ' bytes'));
|
|
662
690
|
|
|
663
|
-
|
|
691
|
+
resized = (await ImageClassifier.resizeImage(model, file.buffer, 'contain'));
|
|
664
692
|
}
|
|
665
693
|
catch (ex2) {
|
|
666
694
|
const ex = <Error>ex2;
|
|
@@ -669,7 +697,40 @@ function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, pro
|
|
|
669
697
|
return res.end(ex.message || ex.toString() + '\n');
|
|
670
698
|
}
|
|
671
699
|
|
|
672
|
-
let response = await runner.classify(features);
|
|
700
|
+
let response = await runner.classify(resized.features);
|
|
701
|
+
|
|
702
|
+
let origFactor = resized.originalWidth / resized.originalHeight;
|
|
703
|
+
let newFactor = resized.newWidth / resized.newHeight;
|
|
704
|
+
|
|
705
|
+
let factor: number;
|
|
706
|
+
let offsetX: number;
|
|
707
|
+
let offsetY: number;
|
|
708
|
+
|
|
709
|
+
if (origFactor > newFactor) {
|
|
710
|
+
// boxed in with bands top/bottom
|
|
711
|
+
factor = resized.newWidth / resized.originalWidth;
|
|
712
|
+
offsetX = 0;
|
|
713
|
+
offsetY = (resized.newHeight - (resized.originalHeight * factor)) / 2;
|
|
714
|
+
}
|
|
715
|
+
else if (origFactor < newFactor) {
|
|
716
|
+
// boxed in with bands left/right
|
|
717
|
+
factor = resized.newHeight / resized.originalHeight;
|
|
718
|
+
offsetX = (resized.newWidth - (resized.originalWidth * factor)) / 2;
|
|
719
|
+
offsetY = 0;
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
// image was already at the right aspect ratio
|
|
723
|
+
offsetX = 0;
|
|
724
|
+
offsetY = 0;
|
|
725
|
+
factor = resized.newWidth / resized.originalWidth;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
for (const bb of response.result.bounding_boxes || []) {
|
|
729
|
+
bb.x = Math.round((bb.x / factor) - (offsetX / factor));
|
|
730
|
+
bb.width = Math.round((bb.width / factor));
|
|
731
|
+
bb.y = Math.round((bb.y / factor) - (offsetY / factor));
|
|
732
|
+
bb.height = Math.round((bb.height / factor));
|
|
733
|
+
}
|
|
673
734
|
|
|
674
735
|
res.header('Content-Type', 'application/json');
|
|
675
736
|
res.end(JSON.stringify(response, null, 4) + '\n');
|
|
@@ -4169,7 +4169,11 @@ video {
|
|
|
4169
4169
|
margin-left: -1.7rem;
|
|
4170
4170
|
margin-right: -1.7rem;
|
|
4171
4171
|
margin-bottom: 0.75rem;
|
|
4172
|
-
margin-top:
|
|
4172
|
+
margin-top: 1.5rem;
|
|
4173
4173
|
padding-left: 0.75rem;
|
|
4174
4174
|
padding-right: 0.75rem;
|
|
4175
4175
|
}
|
|
4176
|
+
|
|
4177
|
+
#preview-image-container {
|
|
4178
|
+
position: relative;
|
|
4179
|
+
}
|
|
@@ -5,9 +5,18 @@ window.InferenceServer = async () => {
|
|
|
5
5
|
runInferenceBtn: document.querySelector('#run-inference'),
|
|
6
6
|
resultSection: document.querySelector('#result-section'),
|
|
7
7
|
resultSectionPre: document.querySelector('#result-section pre'),
|
|
8
|
+
previewSection: document.querySelector('#preview-section'),
|
|
9
|
+
previewSectionImgContainer: document.querySelector('#preview-image-container'),
|
|
10
|
+
previewSectionImg: document.querySelector('#preview-section img'),
|
|
8
11
|
features: document.querySelector('#features'),
|
|
9
12
|
};
|
|
10
13
|
|
|
14
|
+
const colors = [
|
|
15
|
+
'#e6194B', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#42d4f4', '#f032e6', '#fabed4',
|
|
16
|
+
'#469990', '#dcbeff', '#9A6324', '#fffac8', '#800000', '#aaffc3',
|
|
17
|
+
];
|
|
18
|
+
const labelToColor = { };
|
|
19
|
+
|
|
11
20
|
if (els.uploadFile) {
|
|
12
21
|
els.uploadFile.oninput = () => {
|
|
13
22
|
if (els.uploadFile.files.length > 0) {
|
|
@@ -83,15 +92,87 @@ window.InferenceServer = async () => {
|
|
|
83
92
|
}
|
|
84
93
|
|
|
85
94
|
const text = await resp.text();
|
|
95
|
+
let body;
|
|
86
96
|
try {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
els.resultSection.style.display = '';
|
|
90
|
-
els.resultSectionPre.textContent = JSON.stringify(body, null, 4);
|
|
97
|
+
body = JSON.parse(text);
|
|
91
98
|
}
|
|
92
99
|
catch (ex) {
|
|
93
100
|
throw new Error(text);
|
|
94
101
|
}
|
|
102
|
+
|
|
103
|
+
if (els.uploadFile && body.result.bounding_boxes) {
|
|
104
|
+
els.previewSection.style.display = '';
|
|
105
|
+
|
|
106
|
+
const dataUrl = await new Promise((resolve, reject) => {
|
|
107
|
+
const reader = new FileReader();
|
|
108
|
+
|
|
109
|
+
reader.onload = e => {
|
|
110
|
+
resolve(e.target.result);
|
|
111
|
+
};
|
|
112
|
+
reader.onerror = err => {
|
|
113
|
+
reject(err);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
reader.readAsDataURL(els.uploadFile.files[0]);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
els.previewSectionImg.src = dataUrl;
|
|
120
|
+
|
|
121
|
+
const result = body.result;
|
|
122
|
+
let factor = 1;
|
|
123
|
+
|
|
124
|
+
for (let oldEl of els.previewSectionImgContainer.querySelectorAll('.bounding-box-container')) {
|
|
125
|
+
oldEl.parentNode.removeChild(oldEl);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
for (let b of result.bounding_boxes) {
|
|
129
|
+
let bb = {
|
|
130
|
+
x: b.x / factor,
|
|
131
|
+
y: b.y / factor,
|
|
132
|
+
width: b.width / factor,
|
|
133
|
+
height: b.height / factor,
|
|
134
|
+
label: b.label,
|
|
135
|
+
value: b.value
|
|
136
|
+
};
|
|
137
|
+
if (!labelToColor[bb.label]) {
|
|
138
|
+
labelToColor[bb.label] = colors[0];
|
|
139
|
+
colors.splice(0, 1);
|
|
140
|
+
}
|
|
141
|
+
let color = labelToColor[bb.label];
|
|
142
|
+
let el = document.createElement('div');
|
|
143
|
+
el.classList.add('bounding-box-container');
|
|
144
|
+
el.style.position = 'absolute';
|
|
145
|
+
el.style.border = 'solid 3px ' + color;
|
|
146
|
+
// if (modelType === 'object_detection') {
|
|
147
|
+
el.style.width = (bb.width) + 'px';
|
|
148
|
+
el.style.height = (bb.height) + 'px';
|
|
149
|
+
el.style.left = (bb.x) + 'px';
|
|
150
|
+
el.style.top = (bb.y) + 'px';
|
|
151
|
+
// }
|
|
152
|
+
// else if (modelType === 'constrained_object_detection') {
|
|
153
|
+
// let centerX = bb.x + (bb.width / 2);
|
|
154
|
+
// let centerY = bb.y + (bb.height / 2);
|
|
155
|
+
// el.style.borderRadius = '10px';
|
|
156
|
+
// el.style.width = 20 + 'px';
|
|
157
|
+
// el.style.height = 20 + 'px';
|
|
158
|
+
// el.style.left = (centerX - 10) + 'px';
|
|
159
|
+
// el.style.top = (centerY - 10) + 'px';
|
|
160
|
+
// }
|
|
161
|
+
let label = document.createElement('div');
|
|
162
|
+
label.classList.add('bounding-box-label');
|
|
163
|
+
label.style.background = color;
|
|
164
|
+
label.textContent = bb.label + ' (' + bb.value.toFixed(2) + ')';
|
|
165
|
+
el.style.whiteSpace = 'nowrap';
|
|
166
|
+
el.appendChild(label);
|
|
167
|
+
els.previewSectionImgContainer.appendChild(el);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
els.previewSection.style.display = 'none';
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
els.resultSection.style.display = '';
|
|
175
|
+
els.resultSectionPre.textContent = JSON.stringify(body, null, 4);
|
|
95
176
|
}
|
|
96
177
|
catch (ex) {
|
|
97
178
|
alert('Failed to run inference: ' + (ex.message || ex.toString()));
|
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
import html from './escape-html-template-tag';
|
|
2
2
|
|
|
3
|
+
export type InferenceServerModelViewModel = {
|
|
4
|
+
mode: 'features',
|
|
5
|
+
featuresCount: number,
|
|
6
|
+
} | {
|
|
7
|
+
mode: 'image',
|
|
8
|
+
width: number,
|
|
9
|
+
height: number,
|
|
10
|
+
depth: 'Grayscale' | 'RGB',
|
|
11
|
+
isObjectDetection: boolean,
|
|
12
|
+
};
|
|
13
|
+
|
|
3
14
|
export type InferenceServerViewModel = {
|
|
4
15
|
studioLink: string,
|
|
5
16
|
owner: string,
|
|
6
17
|
projectName: string,
|
|
7
18
|
projectVersion: number,
|
|
8
19
|
serverPort: number,
|
|
9
|
-
|
|
10
|
-
mode: 'features' | 'image',
|
|
20
|
+
model: InferenceServerModelViewModel,
|
|
11
21
|
};
|
|
12
22
|
|
|
13
23
|
export const renderInferenceServerView = (vm: InferenceServerViewModel) => {
|
|
24
|
+
let resultsColClass = `col-12`;
|
|
25
|
+
if (vm.model.mode === 'image' && vm.model.isObjectDetection) {
|
|
26
|
+
resultsColClass = `col-12 col-lg-6`;
|
|
27
|
+
}
|
|
28
|
+
|
|
14
29
|
return html`<!DOCTYPE html>
|
|
15
30
|
<html>
|
|
16
31
|
|
|
@@ -63,24 +78,35 @@ export const renderInferenceServerView = (vm: InferenceServerViewModel) => {
|
|
|
63
78
|
<h4>Model information</h4>
|
|
64
79
|
</div>
|
|
65
80
|
</div>
|
|
81
|
+
<div class="mb-2 text-sm">
|
|
82
|
+
Inference server for "<a href="${vm.studioLink}" target="_blank">${vm.owner} / ${vm.projectName}</a>" (v${vm.projectVersion}).
|
|
83
|
+
</div>
|
|
84
|
+
<div class="row card-sub-header border-bottom">
|
|
85
|
+
<div class="col">
|
|
86
|
+
<h4>Get model info</h4>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
66
89
|
<div class="mb-3 text-sm">
|
|
67
|
-
|
|
90
|
+
<code>curl -v -X GET http://localhost:${vm.serverPort}/api/info</code>
|
|
68
91
|
</div>
|
|
69
92
|
<div class="row card-sub-header border-bottom">
|
|
70
93
|
<div class="col">
|
|
71
94
|
<h4>How to run inference</h4>
|
|
72
95
|
</div>
|
|
73
96
|
</div>
|
|
74
|
-
${vm.mode === 'image' ? html`
|
|
97
|
+
${vm.model.mode === 'image' ? html`
|
|
75
98
|
<div class="mb-3 text-sm">
|
|
76
99
|
<code>curl -v -X POST -F 'file=@path-to-an-image.jpg' http://localhost:${vm.serverPort}/api/image</code>
|
|
77
100
|
</div>
|
|
101
|
+
<div class="mb-4 text-xs">
|
|
102
|
+
(Expecting a ${vm.model.width} x ${vm.model.height} (${vm.model.depth}) image, images in other resolutions will be resized)
|
|
103
|
+
</div>
|
|
78
104
|
` : html`
|
|
79
105
|
<div class="mb-3 text-sm">
|
|
80
106
|
<code>curl -v -X POST -H "Content-Type: application/json" -d '{"features": [5, 10, 15, 20]}' http://localhost:${vm.serverPort}/api/features</code>
|
|
81
107
|
</div>
|
|
82
108
|
<div class="mb-4 text-xs">
|
|
83
|
-
(Expecting ${vm.featuresCount} features for this model)
|
|
109
|
+
(Expecting ${vm.model.featuresCount} features for this model)
|
|
84
110
|
</div>
|
|
85
111
|
`}
|
|
86
112
|
</div>
|
|
@@ -89,16 +115,16 @@ export const renderInferenceServerView = (vm: InferenceServerViewModel) => {
|
|
|
89
115
|
<div class="card-body text-left mb--3">
|
|
90
116
|
<div class="row card-sub-header border-bottom mt--2">
|
|
91
117
|
<div class="col">
|
|
92
|
-
<h4>Try
|
|
118
|
+
<h4>Try out inferencing</h4>
|
|
93
119
|
</div>
|
|
94
120
|
</div>
|
|
95
|
-
${vm.mode === 'image' ? html`
|
|
121
|
+
${vm.model.mode === 'image' ? html`
|
|
96
122
|
<div class="mb-3">
|
|
97
123
|
<input type="file" class="form-control form-control-sm border-0 px-0" id="upload-file">
|
|
98
124
|
</div>
|
|
99
125
|
` : html`
|
|
100
126
|
<div class="mb-2 text-sm">
|
|
101
|
-
Enter ${vm.featuresCount} features, split by ',' - for example from "Live classification".
|
|
127
|
+
Enter ${vm.model.featuresCount} features, split by ',' - for example from "Live classification".
|
|
102
128
|
</div>
|
|
103
129
|
<div class="mb-3">
|
|
104
130
|
<input class="form-control form-control-sm" id="features" placeholder="0, 0, 0, 0, ...">
|
|
@@ -107,14 +133,25 @@ export const renderInferenceServerView = (vm: InferenceServerViewModel) => {
|
|
|
107
133
|
<div class="mb-3">
|
|
108
134
|
<button class="btn-sm btn btn-primary" id="run-inference" disabled>Run inference</button>
|
|
109
135
|
</div>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
136
|
+
|
|
137
|
+
<div class="row mb-3" id="result-section" style="display: none">
|
|
138
|
+
<div class="${resultsColClass}">
|
|
139
|
+
<div class="row card-sub-header border-bottom">
|
|
140
|
+
<div class="col">
|
|
141
|
+
<h4>Result</h4>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
<pre class="text-xs mb-0">Bleep bloop</pre>
|
|
145
|
+
</div>
|
|
146
|
+
<div id="preview-section" class="${resultsColClass}" style="display: none">
|
|
147
|
+
<div class="row card-sub-header border-bottom">
|
|
148
|
+
<div class="col">
|
|
149
|
+
<h4>Preview</h4>
|
|
150
|
+
</div>
|
|
114
151
|
</div>
|
|
152
|
+
<div id="preview-image-container" class="mt-3"><img id="preview-image"></img></div>
|
|
115
153
|
</div>
|
|
116
|
-
|
|
117
|
-
</section>
|
|
154
|
+
</div>
|
|
118
155
|
</div>
|
|
119
156
|
</div>
|
|
120
157
|
</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "edge-impulse-linux",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Node.js SDK and tools for Edge Impulse for Linux",
|
|
5
5
|
"directories": {
|
|
6
6
|
"example": "examples"
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "./node_modules/.bin/tsc -p .",
|
|
10
10
|
"lint": "./node_modules/tslint/bin/tslint -p tsconfig.json",
|
|
11
|
-
"test": "tsc -b . && TS_NODE_PROJECT=./tsconfig.json mocha --config ./test/.mocharc.js"
|
|
11
|
+
"test": "tsc -b . && TS_NODE_PROJECT=./tsconfig.json mocha --config ./test/.mocharc.js",
|
|
12
|
+
"watch-runner": "func() { tsc-watch -b . --onSuccess \"node build/cli/linux/runner.js $1\" --noClear; }; func"
|
|
12
13
|
},
|
|
13
14
|
"bin": {
|
|
14
15
|
"edge-impulse-linux": "build/cli/linux/linux.js",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"@types/ws": "6.0.3",
|
|
66
67
|
"mocha": "9.1.3",
|
|
67
68
|
"ts-node": "10.4.0",
|
|
69
|
+
"tsc-watch": "4.6.2",
|
|
68
70
|
"tslint": "6.1.2",
|
|
69
71
|
"typescript": "3.9.3"
|
|
70
72
|
}
|