@morscherlab/mint-sdk 1.0.0-rc.2 → 1.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/components/AppSidebar.vue.d.ts +3 -3
  2. package/dist/components/ControlWorkspaceView.vue.d.ts +3 -3
  3. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +1 -1
  4. package/dist/components/PluginWorkspaceView.vue.d.ts +3 -3
  5. package/dist/components/index.js +2 -2
  6. package/dist/{components-BhK-dW99.js → components-DafPc4rM.js} +3 -3
  7. package/dist/{components-BhK-dW99.js.map → components-DafPc4rM.js.map} +1 -1
  8. package/dist/composables/controlComponentBindings.d.ts +7 -0
  9. package/dist/composables/controlSchemaAdapters.d.ts +20 -0
  10. package/dist/composables/controlSchemaFormFields.d.ts +3 -0
  11. package/dist/composables/controlSchemaLayout.d.ts +7 -0
  12. package/dist/composables/controlSchemaNormalize.d.ts +15 -0
  13. package/dist/composables/controlSchemaUtils.d.ts +9 -0
  14. package/dist/composables/controlWorkspaceOptions.d.ts +2 -0
  15. package/dist/composables/index.js +3 -3
  16. package/dist/composables/useControlSchema.d.ts +4 -30
  17. package/dist/composables/useControlWorkspace.d.ts +5 -0
  18. package/dist/{composables-Bg7CFuNz.js → composables-BMkPQhVK.js} +2 -2
  19. package/dist/{composables-Bg7CFuNz.js.map → composables-BMkPQhVK.js.map} +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/install.js +2 -2
  22. package/dist/templates/adapters.d.ts +14 -47
  23. package/dist/templates/assayLookups.d.ts +3 -0
  24. package/dist/templates/assayMatrixAdapters.d.ts +6 -0
  25. package/dist/templates/assayMatrixBuilder.d.ts +2 -0
  26. package/dist/templates/assayNormalizers.d.ts +4 -0
  27. package/dist/templates/builderDefaults.d.ts +1 -0
  28. package/dist/templates/builderIdUtils.d.ts +4 -0
  29. package/dist/templates/builderPresetControls.d.ts +10 -0
  30. package/dist/templates/builderReadUtils.d.ts +8 -0
  31. package/dist/templates/builders.d.ts +26 -67
  32. package/dist/templates/calibrationCurveAdapters.d.ts +4 -0
  33. package/dist/templates/calibrationCurveBuilder.d.ts +2 -0
  34. package/dist/templates/calibrationNormalizers.d.ts +5 -0
  35. package/dist/templates/componentBindingCatalog.d.ts +25 -0
  36. package/dist/templates/componentBindingHelpers.d.ts +17 -0
  37. package/dist/templates/componentDoseResponseProps.d.ts +3 -0
  38. package/dist/templates/componentGenericProps.d.ts +8 -0
  39. package/dist/templates/componentPlateHelpers.d.ts +5 -0
  40. package/dist/templates/componentPlateMapProps.d.ts +3 -0
  41. package/dist/templates/componentPropsFactory.d.ts +3 -0
  42. package/dist/templates/componentQpcrPlateProps.d.ts +3 -0
  43. package/dist/templates/componentTargetResolvers.d.ts +5 -0
  44. package/dist/templates/componentTemplateProps.d.ts +3 -0
  45. package/dist/templates/controlSchemaClone.d.ts +4 -0
  46. package/dist/templates/controlSchemaConstants.d.ts +10 -0
  47. package/dist/templates/controlSchemaMerge.d.ts +3 -0
  48. package/dist/templates/controlSchemaTargets.d.ts +17 -0
  49. package/dist/templates/controlSchemaTypes.d.ts +4 -0
  50. package/dist/templates/controlSchemas.d.ts +4 -4
  51. package/dist/templates/defaultBioTemplateBuilder.d.ts +2 -0
  52. package/dist/templates/doseResponseAdapters.d.ts +4 -0
  53. package/dist/templates/doseResponseBuilder.d.ts +2 -0
  54. package/dist/templates/elisaAssayCollectionBuilder.d.ts +2 -0
  55. package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +2 -0
  56. package/dist/templates/flowCytometryPanelBuilder.d.ts +2 -0
  57. package/dist/templates/flowNormalizers.d.ts +8 -0
  58. package/dist/templates/flowPanelAdapters.d.ts +4 -0
  59. package/dist/templates/index.js +1 -1
  60. package/dist/templates/instrumentRunAdapterHelpers.d.ts +8 -0
  61. package/dist/templates/instrumentRunAdapters.d.ts +8 -0
  62. package/dist/templates/instrumentRunBuilder.d.ts +2 -0
  63. package/dist/templates/lcmsBatchCollectionBuilder.d.ts +2 -0
  64. package/dist/templates/plateGeometry.d.ts +4 -0
  65. package/dist/templates/plateMapAdapters.d.ts +3 -0
  66. package/dist/templates/plateMapBuilder.d.ts +2 -0
  67. package/dist/templates/presetControlSchemas.d.ts +534 -0
  68. package/dist/templates/protocolAdapters.d.ts +5 -0
  69. package/dist/templates/protocolNormalizers.d.ts +6 -0
  70. package/dist/templates/protocolStepsBuilder.d.ts +2 -0
  71. package/dist/templates/qpcrAdapters.d.ts +5 -0
  72. package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +2 -0
  73. package/dist/templates/qpcrPlateBuilder.d.ts +2 -0
  74. package/dist/templates/reagentAdapters.d.ts +5 -0
  75. package/dist/templates/reagentListBuilder.d.ts +2 -0
  76. package/dist/templates/runNormalizers.d.ts +10 -0
  77. package/dist/templates/sampleNormalizers.d.ts +4 -0
  78. package/dist/templates/samplePrepAdapters.d.ts +4 -0
  79. package/dist/templates/samplePrepBuilder.d.ts +2 -0
  80. package/dist/templates/sampleSheetAdapters.d.ts +5 -0
  81. package/dist/templates/sampleSheetBuilder.d.ts +2 -0
  82. package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +2 -0
  83. package/dist/templates/targetedMetabolomicsHelpers.d.ts +5 -0
  84. package/dist/templates/templateControlSchemas.d.ts +400 -0
  85. package/dist/templates/templateEnvelopes.d.ts +9 -0
  86. package/dist/templates/templatePackCollectionBuilder.d.ts +2 -0
  87. package/dist/templates/templatePresetCollectionBuilder.d.ts +18 -0
  88. package/dist/templates/templateValidators.d.ts +13 -0
  89. package/dist/templates/timeCourseAdapters.d.ts +5 -0
  90. package/dist/templates/timeCourseBuilder.d.ts +2 -0
  91. package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +2 -0
  92. package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +2 -0
  93. package/dist/{templates-BorLR_7p.js → templates-bUAWMn5L.js} +3574 -3428
  94. package/dist/templates-bUAWMn5L.js.map +1 -0
  95. package/dist/{useProtocolTemplates-n6AJqSqv.js → useProtocolTemplates-QZtHFFH2.js} +2 -2
  96. package/dist/{useProtocolTemplates-n6AJqSqv.js.map → useProtocolTemplates-QZtHFFH2.js.map} +1 -1
  97. package/package.json +1 -1
  98. package/src/composables/controlComponentBindings.ts +80 -0
  99. package/src/composables/controlSchemaAdapters.ts +196 -0
  100. package/src/composables/controlSchemaFormFields.ts +61 -0
  101. package/src/composables/controlSchemaLayout.ts +59 -0
  102. package/src/composables/controlSchemaNormalize.ts +101 -0
  103. package/src/composables/controlSchemaUtils.ts +36 -0
  104. package/src/composables/controlWorkspaceOptions.ts +21 -0
  105. package/src/composables/useControlSchema.ts +51 -628
  106. package/src/composables/useControlWorkspace.ts +207 -0
  107. package/src/templates/adapters.ts +89 -930
  108. package/src/templates/assayLookups.ts +33 -0
  109. package/src/templates/assayMatrixAdapters.ts +78 -0
  110. package/src/templates/assayMatrixBuilder.ts +59 -0
  111. package/src/templates/assayNormalizers.ts +34 -0
  112. package/src/templates/builderDefaults.ts +11 -0
  113. package/src/templates/builderIdUtils.ts +20 -0
  114. package/src/templates/builderPresetControls.ts +165 -0
  115. package/src/templates/builderReadUtils.ts +57 -0
  116. package/src/templates/builders.ts +122 -2350
  117. package/src/templates/calibrationCurveAdapters.ts +59 -0
  118. package/src/templates/calibrationCurveBuilder.ts +99 -0
  119. package/src/templates/calibrationNormalizers.ts +60 -0
  120. package/src/templates/componentBindingCatalog.ts +90 -0
  121. package/src/templates/componentBindingHelpers.ts +93 -0
  122. package/src/templates/componentBindings.ts +12 -461
  123. package/src/templates/componentDoseResponseProps.ts +42 -0
  124. package/src/templates/componentGenericProps.ts +77 -0
  125. package/src/templates/componentPlateHelpers.ts +29 -0
  126. package/src/templates/componentPlateMapProps.ts +32 -0
  127. package/src/templates/componentPropsFactory.ts +21 -0
  128. package/src/templates/componentQpcrPlateProps.ts +28 -0
  129. package/src/templates/componentTargetResolvers.ts +69 -0
  130. package/src/templates/componentTemplateProps.ts +78 -0
  131. package/src/templates/controlSchemaClone.ts +32 -0
  132. package/src/templates/controlSchemaConstants.ts +11 -0
  133. package/src/templates/controlSchemaMerge.ts +40 -0
  134. package/src/templates/controlSchemaTargets.ts +87 -0
  135. package/src/templates/controlSchemaTypes.ts +20 -0
  136. package/src/templates/controlSchemas.ts +22 -704
  137. package/src/templates/defaultBioTemplateBuilder.ts +124 -0
  138. package/src/templates/doseResponseAdapters.ts +45 -0
  139. package/src/templates/doseResponseBuilder.ts +44 -0
  140. package/src/templates/elisaAssayCollectionBuilder.ts +62 -0
  141. package/src/templates/flowCytometryAssayCollectionBuilder.ts +41 -0
  142. package/src/templates/flowCytometryPanelBuilder.ts +53 -0
  143. package/src/templates/flowNormalizers.ts +58 -0
  144. package/src/templates/flowPanelAdapters.ts +58 -0
  145. package/src/templates/instrumentRunAdapterHelpers.ts +94 -0
  146. package/src/templates/instrumentRunAdapters.ts +163 -0
  147. package/src/templates/instrumentRunBuilder.ts +97 -0
  148. package/src/templates/lcmsBatchCollectionBuilder.ts +38 -0
  149. package/src/templates/plateGeometry.ts +62 -0
  150. package/src/templates/plateMapAdapters.ts +36 -0
  151. package/src/templates/plateMapBuilder.ts +43 -0
  152. package/src/templates/presetControlSchemas.ts +258 -0
  153. package/src/templates/protocolAdapters.ts +69 -0
  154. package/src/templates/protocolNormalizers.ts +37 -0
  155. package/src/templates/protocolStepsBuilder.ts +36 -0
  156. package/src/templates/qpcrAdapters.ts +104 -0
  157. package/src/templates/qpcrExpressionCollectionBuilder.ts +33 -0
  158. package/src/templates/qpcrPlateBuilder.ts +96 -0
  159. package/src/templates/reagentAdapters.ts +77 -0
  160. package/src/templates/reagentListBuilder.ts +30 -0
  161. package/src/templates/runNormalizers.ts +63 -0
  162. package/src/templates/sampleNormalizers.ts +58 -0
  163. package/src/templates/samplePrepAdapters.ts +63 -0
  164. package/src/templates/samplePrepBuilder.ts +51 -0
  165. package/src/templates/sampleSheetAdapters.ts +75 -0
  166. package/src/templates/sampleSheetBuilder.ts +23 -0
  167. package/src/templates/targetedMetabolomicsCollectionBuilder.ts +79 -0
  168. package/src/templates/targetedMetabolomicsHelpers.ts +102 -0
  169. package/src/templates/templateControlSchemas.ts +320 -0
  170. package/src/templates/templateEnvelopes.ts +137 -0
  171. package/src/templates/templatePackCollectionBuilder.ts +23 -0
  172. package/src/templates/templatePresetCollectionBuilder.ts +139 -0
  173. package/src/templates/templateValidators.ts +414 -0
  174. package/src/templates/timeCourseAdapters.ts +73 -0
  175. package/src/templates/timeCourseBuilder.ts +64 -0
  176. package/src/templates/wellPlateScreenCollectionBuilder.ts +36 -0
  177. package/src/templates/westernBlotAssayCollectionBuilder.ts +68 -0
  178. package/dist/templates-BorLR_7p.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ import type {
2
+ BioTemplateEnvelope,
3
+ TemplateCollection,
4
+ TemplateCollectionEnvelope,
5
+ TemplateId,
6
+ } from './types'
7
+ import { isRecord } from './builderReadUtils'
8
+
9
+ export const TEMPLATE_COLLECTION_KEY = 'templates'
10
+
11
+ export function createTemplateEnvelope<TData>(
12
+ templateId: TemplateId,
13
+ data: TData,
14
+ metadata: Record<string, unknown> = {},
15
+ templateVersion = '1.0'
16
+ ): BioTemplateEnvelope<TData> {
17
+ return {
18
+ template_id: templateId,
19
+ template_version: templateVersion,
20
+ kind: 'experiment-design',
21
+ data,
22
+ metadata,
23
+ }
24
+ }
25
+
26
+ export function createTemplateCollection(
27
+ templates: Array<BioTemplateEnvelope<unknown>>,
28
+ metadata?: Record<string, unknown>
29
+ ): TemplateCollectionEnvelope {
30
+ const collection: TemplateCollection = {}
31
+ for (const template of templates) {
32
+ assertGenericTemplateEnvelope(template)
33
+ const templateId = template.template_id
34
+ if (collection[templateId]) {
35
+ throw new Error(`Duplicate template_id '${templateId}' in template collection.`)
36
+ }
37
+ collection[templateId] = template
38
+ }
39
+
40
+ return metadata === undefined
41
+ ? { [TEMPLATE_COLLECTION_KEY]: collection }
42
+ : { [TEMPLATE_COLLECTION_KEY]: collection, metadata }
43
+ }
44
+
45
+ export function extractTemplateCollection(value: unknown): TemplateCollection {
46
+ if (isEnvelope<unknown>(value)) {
47
+ assertGenericTemplateEnvelope(value)
48
+ return { [value.template_id]: value }
49
+ }
50
+ if (!isRecord(value)) {
51
+ throw new Error('Template collection payload must be an object.')
52
+ }
53
+
54
+ const rawCollection = value[TEMPLATE_COLLECTION_KEY]
55
+ if (rawCollection === undefined) {
56
+ return {}
57
+ }
58
+ if (!isRecord(rawCollection)) {
59
+ throw new Error('Template collection must be an object.')
60
+ }
61
+
62
+ const collection: TemplateCollection = {}
63
+ for (const [templateId, template] of Object.entries(rawCollection)) {
64
+ assertGenericTemplateEnvelope(template)
65
+ if (template.template_id !== templateId) {
66
+ throw new Error(
67
+ `Template collection key '${templateId}' does not match envelope template_id '${template.template_id}'.`
68
+ )
69
+ }
70
+ collection[templateId] = template
71
+ }
72
+ return collection
73
+ }
74
+
75
+ export function ensureTemplateFromCollection<TTemplate extends BioTemplateEnvelope<unknown>>(
76
+ value: unknown,
77
+ templateId: TemplateId | string
78
+ ): TTemplate {
79
+ const collection = extractTemplateCollection(value)
80
+ const template = collection[templateId]
81
+ if (!template) {
82
+ throw new Error(`Template '${templateId}' was not found in template collection.`)
83
+ }
84
+ assertTemplateEnvelope(template, templateId)
85
+ return template as TTemplate
86
+ }
87
+
88
+ export function assertTemplateEnvelope<TData>(
89
+ value: unknown,
90
+ templateId: TemplateId | string
91
+ ): asserts value is BioTemplateEnvelope<TData> {
92
+ assertGenericTemplateEnvelope(value)
93
+ if (value.template_id !== templateId) {
94
+ throw new Error(`Expected template_id '${templateId}', got '${String(value.template_id)}'.`)
95
+ }
96
+ }
97
+
98
+ export function ensureTemplateEnvelope<TTemplate extends BioTemplateEnvelope<unknown>>(
99
+ value: unknown,
100
+ templateId: TemplateId | string
101
+ ): TTemplate {
102
+ assertTemplateEnvelope(value, templateId)
103
+ return value as TTemplate
104
+ }
105
+
106
+ export function getTemplateData<TData>(
107
+ template: BioTemplateEnvelope<TData> | TData,
108
+ templateId?: TemplateId | string
109
+ ): TData {
110
+ if (isEnvelope<TData>(template)) {
111
+ if (templateId) assertTemplateEnvelope<TData>(template, templateId)
112
+ return template.data
113
+ }
114
+ return template
115
+ }
116
+
117
+ function assertGenericTemplateEnvelope(value: unknown): asserts value is BioTemplateEnvelope<unknown> {
118
+ if (!isRecord(value)) {
119
+ throw new Error('Template envelope must be an object.')
120
+ }
121
+ if (typeof value.template_id !== 'string' || value.template_id.length === 0) {
122
+ throw new Error('Template envelope requires a template_id string.')
123
+ }
124
+ if (typeof value.template_version !== 'string' || value.template_version.length === 0) {
125
+ throw new Error('Template envelope requires a template_version string.')
126
+ }
127
+ if (!isRecord(value.data)) {
128
+ throw new Error('Template envelope data must be an object.')
129
+ }
130
+ if ('metadata' in value && !isRecord(value.metadata)) {
131
+ throw new Error('Template envelope metadata must be an object.')
132
+ }
133
+ }
134
+
135
+ function isEnvelope<TData>(value: unknown): value is BioTemplateEnvelope<TData> {
136
+ return isRecord(value) && 'template_id' in value && 'data' in value
137
+ }
@@ -0,0 +1,23 @@
1
+ import { getBioTemplatePackInfo } from './packs'
2
+ import { createDefaultBioTemplate } from './defaultBioTemplateBuilder'
3
+ import { createTemplateCollection } from './templateEnvelopes'
4
+ import type {
5
+ CreateBioTemplatePackCollectionOptions,
6
+ TemplateCollectionEnvelope,
7
+ TemplatePackId,
8
+ } from './types'
9
+
10
+ export function createBioTemplatePackCollection(
11
+ name: TemplatePackId | string,
12
+ options: CreateBioTemplatePackCollectionOptions = {},
13
+ ): TemplateCollectionEnvelope {
14
+ const pack = getBioTemplatePackInfo(name)
15
+ if (!pack) {
16
+ throw new Error(`Unknown template pack '${name}'.`)
17
+ }
18
+
19
+ return createTemplateCollection(
20
+ pack.templates.map(templateId => createDefaultBioTemplate(templateId)),
21
+ { pack: pack.name, ...(options.metadata ?? {}) },
22
+ )
23
+ }
@@ -0,0 +1,139 @@
1
+ import { bioTemplatePresetControlValuesToOptions } from './builderPresetControls'
2
+ import type { BioTemplateControlValues } from './builderPresetControls'
3
+ import { createElisaAssayCollection } from './elisaAssayCollectionBuilder'
4
+ import { createFlowCytometryAssayCollection } from './flowCytometryAssayCollectionBuilder'
5
+ import { createLcmsBatchCollection } from './lcmsBatchCollectionBuilder'
6
+ import { getBioTemplatePresetInfo } from './presets'
7
+ import { createQpcrExpressionCollection } from './qpcrExpressionCollectionBuilder'
8
+ import { createTargetedMetabolomicsCollection } from './targetedMetabolomicsCollectionBuilder'
9
+ import { createWellPlateScreenCollection } from './wellPlateScreenCollectionBuilder'
10
+ import { createWesternBlotAssayCollection } from './westernBlotAssayCollectionBuilder'
11
+ import type {
12
+ CreateElisaAssayCollectionOptions,
13
+ CreateFlowCytometryAssayCollectionOptions,
14
+ CreateLcmsBatchCollectionOptions,
15
+ CreateQpcrExpressionCollectionOptions,
16
+ CreateTargetedMetabolomicsCollectionOptions,
17
+ CreateWellPlateScreenCollectionOptions,
18
+ CreateWesternBlotAssayCollectionOptions,
19
+ TemplateCollectionEnvelope,
20
+ TemplatePresetId,
21
+ } from './types'
22
+
23
+ export function createBioTemplatePresetCollection(
24
+ name: 'wellplate-screen',
25
+ options?: CreateWellPlateScreenCollectionOptions
26
+ ): TemplateCollectionEnvelope
27
+ export function createBioTemplatePresetCollection(
28
+ name: 'qpcr-expression',
29
+ options?: CreateQpcrExpressionCollectionOptions
30
+ ): TemplateCollectionEnvelope
31
+ export function createBioTemplatePresetCollection(
32
+ name: 'lcms-batch',
33
+ options?: CreateLcmsBatchCollectionOptions
34
+ ): TemplateCollectionEnvelope
35
+ export function createBioTemplatePresetCollection(
36
+ name: 'targeted-metabolomics',
37
+ options?: CreateTargetedMetabolomicsCollectionOptions
38
+ ): TemplateCollectionEnvelope
39
+ export function createBioTemplatePresetCollection(
40
+ name: 'elisa-assay',
41
+ options?: CreateElisaAssayCollectionOptions
42
+ ): TemplateCollectionEnvelope
43
+ export function createBioTemplatePresetCollection(
44
+ name: 'flow-cytometry-assay',
45
+ options?: CreateFlowCytometryAssayCollectionOptions
46
+ ): TemplateCollectionEnvelope
47
+ export function createBioTemplatePresetCollection(
48
+ name: 'western-blot-assay',
49
+ options?: CreateWesternBlotAssayCollectionOptions
50
+ ): TemplateCollectionEnvelope
51
+ export function createBioTemplatePresetCollection(
52
+ name: string,
53
+ options?:
54
+ | CreateWellPlateScreenCollectionOptions
55
+ | CreateQpcrExpressionCollectionOptions
56
+ | CreateLcmsBatchCollectionOptions
57
+ | CreateTargetedMetabolomicsCollectionOptions
58
+ | CreateElisaAssayCollectionOptions
59
+ | CreateFlowCytometryAssayCollectionOptions
60
+ | CreateWesternBlotAssayCollectionOptions
61
+ ): TemplateCollectionEnvelope
62
+ export function createBioTemplatePresetCollection(
63
+ name: TemplatePresetId | string,
64
+ options:
65
+ | CreateWellPlateScreenCollectionOptions
66
+ | CreateQpcrExpressionCollectionOptions
67
+ | CreateLcmsBatchCollectionOptions
68
+ | CreateTargetedMetabolomicsCollectionOptions
69
+ | CreateElisaAssayCollectionOptions
70
+ | CreateFlowCytometryAssayCollectionOptions
71
+ | CreateWesternBlotAssayCollectionOptions = {}
72
+ ): TemplateCollectionEnvelope {
73
+ const preset = getBioTemplatePresetInfo(name)
74
+ if (!preset) {
75
+ throw new Error(`Unknown template preset '${name}'.`)
76
+ }
77
+ if (preset.name === 'wellplate-screen') {
78
+ return createWellPlateScreenCollection(options as CreateWellPlateScreenCollectionOptions)
79
+ }
80
+ if (preset.name === 'qpcr-expression') {
81
+ return createQpcrExpressionCollection(options as CreateQpcrExpressionCollectionOptions)
82
+ }
83
+ if (preset.name === 'lcms-batch') {
84
+ return createLcmsBatchCollection(options as CreateLcmsBatchCollectionOptions)
85
+ }
86
+ if (preset.name === 'targeted-metabolomics') {
87
+ return createTargetedMetabolomicsCollection(options as CreateTargetedMetabolomicsCollectionOptions)
88
+ }
89
+ if (preset.name === 'elisa-assay') {
90
+ return createElisaAssayCollection(options as CreateElisaAssayCollectionOptions)
91
+ }
92
+ if (preset.name === 'flow-cytometry-assay') {
93
+ return createFlowCytometryAssayCollection(options as CreateFlowCytometryAssayCollectionOptions)
94
+ }
95
+ if (preset.name === 'western-blot-assay') {
96
+ return createWesternBlotAssayCollection(options as CreateWesternBlotAssayCollectionOptions)
97
+ }
98
+ throw new Error(`Unknown template preset '${name}'.`)
99
+ }
100
+
101
+ export function createBioTemplatePresetCollectionFromControls(
102
+ name: 'wellplate-screen',
103
+ values: BioTemplateControlValues
104
+ ): TemplateCollectionEnvelope
105
+ export function createBioTemplatePresetCollectionFromControls(
106
+ name: 'qpcr-expression',
107
+ values: BioTemplateControlValues
108
+ ): TemplateCollectionEnvelope
109
+ export function createBioTemplatePresetCollectionFromControls(
110
+ name: 'lcms-batch',
111
+ values: BioTemplateControlValues
112
+ ): TemplateCollectionEnvelope
113
+ export function createBioTemplatePresetCollectionFromControls(
114
+ name: 'targeted-metabolomics',
115
+ values: BioTemplateControlValues
116
+ ): TemplateCollectionEnvelope
117
+ export function createBioTemplatePresetCollectionFromControls(
118
+ name: 'elisa-assay',
119
+ values: BioTemplateControlValues
120
+ ): TemplateCollectionEnvelope
121
+ export function createBioTemplatePresetCollectionFromControls(
122
+ name: 'flow-cytometry-assay',
123
+ values: BioTemplateControlValues
124
+ ): TemplateCollectionEnvelope
125
+ export function createBioTemplatePresetCollectionFromControls(
126
+ name: 'western-blot-assay',
127
+ values: BioTemplateControlValues
128
+ ): TemplateCollectionEnvelope
129
+ export function createBioTemplatePresetCollectionFromControls(
130
+ name: TemplatePresetId | string,
131
+ values: BioTemplateControlValues
132
+ ): TemplateCollectionEnvelope
133
+ export function createBioTemplatePresetCollectionFromControls(
134
+ name: TemplatePresetId | string,
135
+ values: BioTemplateControlValues
136
+ ): TemplateCollectionEnvelope {
137
+ const options = bioTemplatePresetControlValuesToOptions(name, values)
138
+ return createBioTemplatePresetCollection(name, options)
139
+ }