@cadit-app/script-params 0.1.1 → 0.3.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 CHANGED
@@ -14,14 +14,17 @@ npm install @cadit-app/script-params
14
14
  import { defineParams } from '@cadit-app/script-params';
15
15
 
16
16
  export default defineParams({
17
- size: { type: 'number', default: 10, min: 1, max: 100 },
18
- label: { type: 'text', default: 'Hello' },
19
- hollow: { type: 'boolean', default: false },
20
- }, (params) => {
21
- // params.size is number
22
- // params.label is string
23
- // params.hollow is boolean
24
- return createModel(params.size, params.label, params.hollow);
17
+ params: {
18
+ size: { type: 'number', default: 10, min: 1, max: 100 },
19
+ label: { type: 'text', default: 'Hello' },
20
+ hollow: { type: 'boolean', default: false },
21
+ },
22
+ main: (params) => {
23
+ // params.size is number
24
+ // params.label is string
25
+ // params.hollow is boolean
26
+ return createModel(params.size, params.label, params.hollow);
27
+ },
25
28
  });
26
29
  ```
27
30
 
@@ -30,6 +33,7 @@ export default defineParams({
30
33
  - **Type-safe parameters** - Full TypeScript inference without `as const`
31
34
  - **Default values** - Scripts work standalone when params are undefined
32
35
  - **UI generation** - Schema can be converted to UI controls
36
+ - **Exporters** - Define custom export formats (SVG, PNG, etc.)
33
37
  - **Simple API** - Just one function to learn
34
38
 
35
39
  ## Parameter Types
@@ -40,48 +44,71 @@ export default defineParams({
40
44
  | `int` | `number` | `min`, `max`, `step` |
41
45
  | `text` | `string` | `maxLength`, `placeholder` |
42
46
  | `boolean` | `boolean` | - |
43
- | `choice` | `string` | `options: string[]` |
47
+ | `choice` | `string` | `options: string[]` or `options: { value, label }[]` |
44
48
  | `slider` | `number` | `min`, `max`, `step` (required: `min`, `max`) |
49
+ | `buttonGrid` | `string` | `options: { value, image?, caption? }[]` |
45
50
  | `image` | `ImageData \| null` | - |
51
+ | `embedded` | `EmbeddedParamValue` | `params`, `enabled?`, `showSettings?` |
46
52
 
47
53
  ## API Reference
48
54
 
49
- ### `defineParams(schema)` / `defineParams(schema, main)`
55
+ ### `defineParams(config)`
50
56
 
51
- Define parameters for a script.
57
+ Define parameters for a script. Pass a config object with `params` (required), and optionally `main` and `exporters`.
52
58
 
53
- **Schema only:**
59
+ **Basic usage:**
54
60
  ```typescript
55
- const params = defineParams({
56
- size: { type: 'number', default: 10 },
61
+ export default defineParams({
62
+ params: {
63
+ size: { type: 'number', default: 10 },
64
+ },
65
+ main: (params) => Manifold.cube([params.size, params.size, params.size]),
57
66
  });
58
- // Returns the schema itself
67
+ // Returns a callable ScriptModule
59
68
  ```
60
69
 
61
- **With callback:**
70
+ **With exporters:**
62
71
  ```typescript
63
72
  export default defineParams({
64
- size: { type: 'number', default: 10 },
65
- }, (params) => {
66
- return Manifold.cube([params.size, params.size, params.size]);
73
+ params: {
74
+ size: { type: 'number', default: 10 },
75
+ },
76
+ exporters: {
77
+ svg: {
78
+ name: 'SVG',
79
+ label: 'Download SVG',
80
+ export: async (params) => ({
81
+ mimeType: 'image/svg+xml',
82
+ fileName: 'model.svg',
83
+ data: generateSvg(params),
84
+ }),
85
+ },
86
+ },
87
+ main: (params) => Manifold.cube([params.size, params.size, params.size]),
88
+ });
89
+ ```
90
+
91
+ **Without main (add main separately):**
92
+ ```typescript
93
+ const script = defineParams({
94
+ params: { size: { type: 'number', default: 10 } },
95
+ exporters: { svg: svgExporter },
67
96
  });
68
- // Returns a callable module with .params property
97
+
98
+ export default createMain(script, myMainFunction);
69
99
  ```
70
100
 
71
- ### `createMain(schema, main)`
101
+ ### `createMain(scriptModule, main)`
72
102
 
73
- Create an executable script from a schema and main function. Useful when defining the main function separately.
103
+ Add a main function to a ScriptModule. Preserves any exporters.
74
104
 
75
105
  ```typescript
76
- const params = defineParams({
77
- size: { type: 'number', default: 10 },
106
+ const script = defineParams({
107
+ params: { size: { type: 'number', default: 10 } },
108
+ exporters: { svg: svgExporter },
78
109
  });
79
110
 
80
- function main(p: Params<typeof params>) {
81
- return Manifold.cube([p.size, p.size, p.size]);
82
- }
83
-
84
- export default createMain(params, main);
111
+ export default createMain(script, (p) => Manifold.cube([p.size, ...]));
85
112
  ```
86
113
 
87
114
  ### `Params<S>`
@@ -89,11 +116,13 @@ export default createMain(params, main);
89
116
  Type helper to get the params object type from a schema.
90
117
 
91
118
  ```typescript
92
- const schema = defineParams({
93
- size: { type: 'number', default: 10 },
119
+ const script = defineParams({
120
+ params: {
121
+ size: { type: 'number', default: 10 },
122
+ },
94
123
  });
95
124
 
96
- type MyParams = Params<typeof schema>;
125
+ type MyParams = Params<typeof script.params>;
97
126
  // { size: number }
98
127
  ```
99
128
 
@@ -105,7 +134,7 @@ Convert object-based schema to array format for legacy UI compatibility.
105
134
  const array = schemaToArray({
106
135
  size: { type: 'number', default: 10 },
107
136
  });
108
- // [{ name: 'size', type: 'number', default: 10 }]
137
+ // [{ name: 'size', type: 'number', initial: 10, caption: 'size' }]
109
138
  ```
110
139
 
111
140
  ### `getDefaults(schema)`
@@ -122,7 +151,7 @@ const defaults = getDefaults({
122
151
 
123
152
  ### `isScriptModule(value)`
124
153
 
125
- Check if a value is a script module created by `defineParams`.
154
+ Check if a value is a ScriptModule created by `defineParams`.
126
155
 
127
156
  ```typescript
128
157
  const mod = await import('./script.ts');
@@ -131,6 +160,50 @@ if (isScriptModule(mod.default)) {
131
160
  }
132
161
  ```
133
162
 
163
+ ### `getParams(source)`
164
+
165
+ Extract the parameter schema from a ScriptModule.
166
+
167
+ ```typescript
168
+ const qrParams = getParams(qrCodeScript);
169
+ ```
170
+
171
+ ### `getExporters(module)`
172
+
173
+ Extract exporters from a ScriptModule.
174
+
175
+ ```typescript
176
+ const exporters = getExporters(script);
177
+ // { svg: { name: 'SVG', ... }, png: { name: 'PNG', ... } }
178
+ ```
179
+
180
+ ## Exporters
181
+
182
+ Exporters allow scripts to define custom download formats:
183
+
184
+ ```typescript
185
+ import { defineParams, Exporter, ExportResult } from '@cadit-app/script-params';
186
+
187
+ const svgExporter: Exporter = {
188
+ name: 'SVG',
189
+ label: 'Download SVG',
190
+ description: 'Export as scalable vector graphic',
191
+ export: async (params): Promise<ExportResult> => ({
192
+ mimeType: 'image/svg+xml',
193
+ fileName: 'output.svg',
194
+ data: generateSvgFromParams(params),
195
+ }),
196
+ };
197
+
198
+ export default defineParams({
199
+ params: {
200
+ size: { type: 'number', default: 10 },
201
+ },
202
+ exporters: { svg: svgExporter },
203
+ main: (params) => generateGeometry(params),
204
+ });
205
+ ```
206
+
134
207
  ## License
135
208
 
136
209
  MIT
package/dist/index.d.ts CHANGED
@@ -8,14 +8,79 @@
8
8
  * import { defineParams } from '@cadit-app/script-params';
9
9
  *
10
10
  * export default defineParams({
11
- * size: { type: 'number', default: 10 },
12
- * label: { type: 'text', default: 'Hello' },
13
- * }, (params) => {
14
- * // params.size is number, params.label is string
15
- * return Manifold.cube([params.size, params.size, params.size]);
11
+ * params: {
12
+ * size: { type: 'number', default: 10 },
13
+ * label: { type: 'text', default: 'Hello' },
14
+ * },
15
+ * main: (params) => {
16
+ * // params.size is number, params.label is string
17
+ * return Manifold.cube([params.size, params.size, params.size]);
18
+ * },
16
19
  * });
17
20
  * ```
18
21
  */
22
+ /**
23
+ * Result returned by an exporter function.
24
+ * Contains the file data, MIME type, and suggested filename.
25
+ */
26
+ export interface ExportResult {
27
+ /** MIME type of the exported data (e.g., 'image/svg+xml', 'image/png'). */
28
+ mimeType: string;
29
+ /** Suggested filename for download (e.g., 'model.svg'). */
30
+ fileName: string;
31
+ /** The exported data - string for text formats, ArrayBuffer for binary. */
32
+ data: ArrayBuffer | string;
33
+ }
34
+ /**
35
+ * Exporter definition.
36
+ * Provides a function to export the current state to a downloadable format.
37
+ *
38
+ * @template P - The params type. Use `InferParams<typeof myScript>` to derive
39
+ * from a script, or define inline when used with defineParams.
40
+ *
41
+ * @example Inline with defineParams (type is inferred automatically)
42
+ * ```typescript
43
+ * export default defineParams({
44
+ * params: { size: { type: 'number', default: 10 } },
45
+ * exporters: {
46
+ * svg: {
47
+ * name: 'SVG',
48
+ * export: (p) => ({ ... }), // p.size is typed as number
49
+ * },
50
+ * },
51
+ * });
52
+ * ```
53
+ *
54
+ * @example Separate file using InferParams
55
+ * ```typescript
56
+ * import type { Exporter, InferParams } from '@cadit-app/script-params';
57
+ * import type script from './main';
58
+ *
59
+ * type Params = InferParams<typeof script>;
60
+ *
61
+ * export const pngExporter: Exporter<Params> = {
62
+ * name: 'PNG',
63
+ * export: (params) => { ... }, // params is fully typed
64
+ * };
65
+ * ```
66
+ */
67
+ export interface Exporter<P = unknown> {
68
+ /** Short name for the exporter (e.g., 'SVG', 'PNG', '3MF'). */
69
+ name: string;
70
+ /** Label shown on the download button (e.g., 'Download SVG'). */
71
+ label?: string;
72
+ /** Description or tooltip for the exporter. */
73
+ description?: string;
74
+ /** Export function that receives the current parameter values. */
75
+ export: (params: P) => Promise<ExportResult> | ExportResult;
76
+ }
77
+ /**
78
+ * Map of exporters keyed by identifier.
79
+ * The key is used to identify the exporter, the value contains the definition.
80
+ *
81
+ * @template P - The params type for all exporters in the map.
82
+ */
83
+ export type Exporters<P = unknown> = Record<string, Exporter<P>>;
19
84
  /**
20
85
  * Base properties shared by all parameter types.
21
86
  */
@@ -226,69 +291,123 @@ export type Params<S extends ParamSchema> = {
226
291
  [K in keyof S]: ParamValue<S[K]>;
227
292
  };
228
293
  /**
229
- * The result returned by defineParams when a main function is provided.
230
- * Contains both the schema (for UI) and the executable function.
294
+ * Infer the params type from a ScriptModule.
295
+ * Use this to get the typed params for use in exporters defined in separate files.
296
+ *
297
+ * @example
298
+ * ```typescript
299
+ * // In main.ts
300
+ * const script = defineParams({
301
+ * params: {
302
+ * size: { type: 'number', default: 10 },
303
+ * label: { type: 'text', default: 'Hello' },
304
+ * },
305
+ * main: (p) => { ... },
306
+ * });
307
+ * export default script;
308
+ *
309
+ * // In pngExport.ts
310
+ * import type { Exporter, InferParams } from '@cadit-app/script-params';
311
+ * import type script from './main';
312
+ *
313
+ * type QrCodeParams = InferParams<typeof script>;
314
+ * // { size: number; label: string }
315
+ *
316
+ * export const pngExporter: Exporter<QrCodeParams> = {
317
+ * name: 'PNG',
318
+ * export: (params) => { ... }, // params.size is number, params.label is string
319
+ * };
320
+ * ```
231
321
  */
232
- export interface ScriptModule<S extends ParamSchema, R> {
322
+ export type InferParams<T> = T extends ScriptModule<infer S, unknown> ? Params<S> : T extends {
323
+ params: infer S extends ParamSchema;
324
+ } ? Params<S> : never;
325
+ /**
326
+ * Configuration object for defineParams when using named properties.
327
+ * All options are named for clarity and extensibility.
328
+ */
329
+ export interface ScriptConfig<S extends ParamSchema, R = unknown> {
330
+ /** The parameter schema defining all inputs. */
331
+ params: S;
332
+ /** Optional main function that generates geometry. */
333
+ main?: (params: Params<S>) => R;
334
+ /** Optional exporters for custom download formats (SVG, PNG, etc.). */
335
+ exporters?: Exporters<Params<S>>;
336
+ }
337
+ /**
338
+ * The result returned by defineParams.
339
+ * Contains the schema (for UI), optional exporters, and is optionally callable.
340
+ */
341
+ export interface ScriptModule<S extends ParamSchema, R = unknown> {
233
342
  /** The parameter schema for UI generation. */
234
343
  params: S;
344
+ /** Optional exporters for custom download formats. */
345
+ exporters?: Exporters<Params<S>>;
235
346
  /**
236
347
  * Execute the script with optional parameter overrides.
237
348
  * Missing parameters use their default values.
349
+ * Only available if a main function was provided.
238
350
  */
239
351
  (inputParams?: Partial<Params<S>>): R;
240
352
  }
241
353
  /**
242
354
  * Define parameters for a parametric script.
243
355
  *
244
- * This function has two overloads:
245
- * 1. Schema only - returns the schema for use with `createMain`
246
- * 2. Schema + callback - returns an executable module with defaults
356
+ * Pass a config object with `params` (required), and optionally `main` and `exporters`.
247
357
  *
248
- * @example Schema only (for separate main function)
358
+ * @example Basic usage
249
359
  * ```typescript
250
- * const params = defineParams({
251
- * size: { type: 'number', default: 10 },
360
+ * export default defineParams({
361
+ * params: {
362
+ * size: { type: 'number', default: 10 },
363
+ * },
364
+ * main: (params) => Manifold.cube([params.size, params.size, params.size]),
252
365
  * });
253
- *
254
- * function main(p: Params<typeof params>) {
255
- * return Manifold.cube([p.size, p.size, p.size]);
256
- * }
257
- *
258
- * export default createMain(params, main);
259
366
  * ```
260
367
  *
261
- * @example With callback (recommended)
368
+ * @example With exporters
262
369
  * ```typescript
263
370
  * export default defineParams({
264
- * size: { type: 'number', default: 10 },
265
- * }, (params) => {
266
- * return Manifold.cube([params.size, params.size, params.size]);
371
+ * params: {
372
+ * size: { type: 'number', default: 10 },
373
+ * },
374
+ * exporters: {
375
+ * svg: { name: 'SVG', export: (p) => svgExport(p) },
376
+ * png: { name: 'PNG', export: (p) => pngExport(p) },
377
+ * },
378
+ * main: (params) => Manifold.cube([params.size, params.size, params.size]),
379
+ * });
380
+ * ```
381
+ *
382
+ * @example Without main (add main separately with createMain)
383
+ * ```typescript
384
+ * const script = defineParams({
385
+ * params: { size: { type: 'number', default: 10 } },
386
+ * exporters: { svg: svgExporter },
267
387
  * });
388
+ * export default createMain(script, myMainFunction);
268
389
  * ```
269
390
  */
270
- export declare function defineParams<const S extends ParamSchema>(schema: S): S;
271
- export declare function defineParams<const S extends ParamSchema, R>(schema: S, main: (params: Params<S>) => R): ScriptModule<S, R>;
391
+ export declare function defineParams<const S extends ParamSchema, R = unknown>(config: ScriptConfig<S, R>): ScriptModule<S, R>;
272
392
  /**
273
- * Create an executable script module from a schema and main function.
393
+ * Create an executable script module by adding a main function.
394
+ *
395
+ * Use this when you want to define your main function separately from the params,
396
+ * for example when the main is complex or needs to be tested independently.
274
397
  *
275
- * Use this when you want to define your main function separately,
276
- * for example when it's complex or needs to be tested independently.
398
+ * Preserves any exporters defined on the original ScriptModule.
277
399
  *
278
400
  * @example
279
401
  * ```typescript
280
- * const params = defineParams({
281
- * size: { type: 'number', default: 10 },
402
+ * const script = defineParams({
403
+ * params: { size: { type: 'number', default: 10 } },
404
+ * exporters: { svg: svgExporter },
282
405
  * });
283
406
  *
284
- * function main(p: Params<typeof params>) {
285
- * return Manifold.cube([p.size, p.size, p.size]);
286
- * }
287
- *
288
- * export default createMain(params, main);
407
+ * export default createMain(script, (p) => Manifold.cube([p.size, ...]));
289
408
  * ```
290
409
  */
291
- export declare function createMain<S extends ParamSchema, R>(schema: S, main: (params: Params<S>) => R): ScriptModule<S, R>;
410
+ export declare function createMain<S extends ParamSchema, R>(scriptModule: ScriptModule<S, unknown>, main: (params: Params<S>) => R): ScriptModule<S, R>;
292
411
  /**
293
412
  * Convert an object-based schema to array format for legacy UI compatibility.
294
413
  *
@@ -330,30 +449,40 @@ export declare function getDefaults<S extends ParamSchema>(schema: S): Params<S>
330
449
  */
331
450
  export declare function isScriptModule(value: unknown): value is ScriptModule<ParamSchema, unknown>;
332
451
  /**
333
- * Extract the parameter schema from a ScriptModule or plain schema.
452
+ * Extract the parameter schema from a ScriptModule.
334
453
  * Useful for embedding another script's parameters.
335
454
  *
336
455
  * @example
337
456
  * ```typescript
338
457
  * import qrCodeScript from './qr-code';
339
458
  *
340
- * // Works with ScriptModule
341
459
  * const qrParams = getParams(qrCodeScript);
342
460
  *
343
- * // Also works with plain schema
344
- * const schema = { size: { type: 'number', default: 10 } } as const;
345
- * const plainParams = getParams(schema);
346
- *
347
461
  * // Use in embedded param definition
348
462
  * export default defineParams({
349
- * qrCode: {
350
- * type: 'embedded',
351
- * params: getParams(qrCodeScript),
352
- * enabled: false,
353
- * }
463
+ * params: {
464
+ * qrCode: {
465
+ * type: 'embedded',
466
+ * params: getParams(qrCodeScript),
467
+ * enabled: false,
468
+ * },
469
+ * },
354
470
  * });
355
471
  * ```
356
472
  */
357
- export declare function getParams<S extends ParamSchema>(source: ScriptModule<S, unknown> | S): S;
473
+ export declare function getParams<S extends ParamSchema>(source: ScriptModule<S, unknown>): S;
474
+ /**
475
+ * Extract exporters from a ScriptModule.
476
+ * Returns an empty object if the module has no exporters.
477
+ *
478
+ * @example
479
+ * ```typescript
480
+ * import qrCodeScript from './qr-code';
481
+ *
482
+ * const exporters = getExporters(qrCodeScript);
483
+ * // { svg: { name: 'SVG', ... }, png: { name: 'PNG', ... } }
484
+ * ```
485
+ */
486
+ export declare function getExporters<S extends ParamSchema>(source: ScriptModule<S, unknown>): Exporters<Params<S>>;
358
487
  export {};
359
488
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,11 +8,14 @@
8
8
  * import { defineParams } from '@cadit-app/script-params';
9
9
  *
10
10
  * export default defineParams({
11
- * size: { type: 'number', default: 10 },
12
- * label: { type: 'text', default: 'Hello' },
13
- * }, (params) => {
14
- * // params.size is number, params.label is string
15
- * return Manifold.cube([params.size, params.size, params.size]);
11
+ * params: {
12
+ * size: { type: 'number', default: 10 },
13
+ * label: { type: 'text', default: 'Hello' },
14
+ * },
15
+ * main: (params) => {
16
+ * // params.size is number, params.label is string
17
+ * return Manifold.cube([params.size, params.size, params.size]);
18
+ * },
16
19
  * });
17
20
  * ```
18
21
  */
@@ -41,39 +44,89 @@ function buildDefaults(schema) {
41
44
  }
42
45
  return defaults;
43
46
  }
44
- export function defineParams(schema, main) {
45
- if (!main) {
46
- return schema;
47
- }
47
+ /**
48
+ * Define parameters for a parametric script.
49
+ *
50
+ * Pass a config object with `params` (required), and optionally `main` and `exporters`.
51
+ *
52
+ * @example Basic usage
53
+ * ```typescript
54
+ * export default defineParams({
55
+ * params: {
56
+ * size: { type: 'number', default: 10 },
57
+ * },
58
+ * main: (params) => Manifold.cube([params.size, params.size, params.size]),
59
+ * });
60
+ * ```
61
+ *
62
+ * @example With exporters
63
+ * ```typescript
64
+ * export default defineParams({
65
+ * params: {
66
+ * size: { type: 'number', default: 10 },
67
+ * },
68
+ * exporters: {
69
+ * svg: { name: 'SVG', export: (p) => svgExport(p) },
70
+ * png: { name: 'PNG', export: (p) => pngExport(p) },
71
+ * },
72
+ * main: (params) => Manifold.cube([params.size, params.size, params.size]),
73
+ * });
74
+ * ```
75
+ *
76
+ * @example Without main (add main separately with createMain)
77
+ * ```typescript
78
+ * const script = defineParams({
79
+ * params: { size: { type: 'number', default: 10 } },
80
+ * exporters: { svg: svgExporter },
81
+ * });
82
+ * export default createMain(script, myMainFunction);
83
+ * ```
84
+ */
85
+ export function defineParams(config) {
86
+ const { params: schema, main, exporters } = config;
48
87
  const defaults = buildDefaults(schema);
49
88
  const scriptModule = ((inputParams) => {
89
+ if (!main) {
90
+ throw new Error('This script does not have a main function. Use createMain() to add one.');
91
+ }
50
92
  const merged = { ...defaults, ...inputParams };
51
93
  return main(merged);
52
94
  });
53
95
  scriptModule.params = schema;
96
+ if (exporters) {
97
+ scriptModule.exporters = exporters;
98
+ }
54
99
  return scriptModule;
55
100
  }
56
101
  /**
57
- * Create an executable script module from a schema and main function.
102
+ * Create an executable script module by adding a main function.
103
+ *
104
+ * Use this when you want to define your main function separately from the params,
105
+ * for example when the main is complex or needs to be tested independently.
58
106
  *
59
- * Use this when you want to define your main function separately,
60
- * for example when it's complex or needs to be tested independently.
107
+ * Preserves any exporters defined on the original ScriptModule.
61
108
  *
62
109
  * @example
63
110
  * ```typescript
64
- * const params = defineParams({
65
- * size: { type: 'number', default: 10 },
111
+ * const script = defineParams({
112
+ * params: { size: { type: 'number', default: 10 } },
113
+ * exporters: { svg: svgExporter },
66
114
  * });
67
115
  *
68
- * function main(p: Params<typeof params>) {
69
- * return Manifold.cube([p.size, p.size, p.size]);
70
- * }
71
- *
72
- * export default createMain(params, main);
116
+ * export default createMain(script, (p) => Manifold.cube([p.size, ...]));
73
117
  * ```
74
118
  */
75
- export function createMain(schema, main) {
76
- return defineParams(schema, main);
119
+ export function createMain(scriptModule, main) {
120
+ const defaults = buildDefaults(scriptModule.params);
121
+ const newModule = ((inputParams) => {
122
+ const merged = { ...defaults, ...inputParams };
123
+ return main(merged);
124
+ });
125
+ newModule.params = scriptModule.params;
126
+ if (scriptModule.exporters) {
127
+ newModule.exporters = scriptModule.exporters;
128
+ }
129
+ return newModule;
77
130
  }
78
131
  // =============================================================================
79
132
  // Utility Functions
@@ -198,34 +251,43 @@ export function isScriptModule(value) {
198
251
  value.params !== null);
199
252
  }
200
253
  /**
201
- * Extract the parameter schema from a ScriptModule or plain schema.
254
+ * Extract the parameter schema from a ScriptModule.
202
255
  * Useful for embedding another script's parameters.
203
256
  *
204
257
  * @example
205
258
  * ```typescript
206
259
  * import qrCodeScript from './qr-code';
207
260
  *
208
- * // Works with ScriptModule
209
261
  * const qrParams = getParams(qrCodeScript);
210
262
  *
211
- * // Also works with plain schema
212
- * const schema = { size: { type: 'number', default: 10 } } as const;
213
- * const plainParams = getParams(schema);
214
- *
215
263
  * // Use in embedded param definition
216
264
  * export default defineParams({
217
- * qrCode: {
218
- * type: 'embedded',
219
- * params: getParams(qrCodeScript),
220
- * enabled: false,
221
- * }
265
+ * params: {
266
+ * qrCode: {
267
+ * type: 'embedded',
268
+ * params: getParams(qrCodeScript),
269
+ * enabled: false,
270
+ * },
271
+ * },
222
272
  * });
223
273
  * ```
224
274
  */
225
275
  export function getParams(source) {
226
- if (isScriptModule(source)) {
227
- return source.params;
228
- }
229
- return source;
276
+ return source.params;
277
+ }
278
+ /**
279
+ * Extract exporters from a ScriptModule.
280
+ * Returns an empty object if the module has no exporters.
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * import qrCodeScript from './qr-code';
285
+ *
286
+ * const exporters = getExporters(qrCodeScript);
287
+ * // { svg: { name: 'SVG', ... }, png: { name: 'PNG', ... } }
288
+ * ```
289
+ */
290
+ export function getExporters(source) {
291
+ return source.exporters ?? {};
230
292
  }
231
293
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cadit-app/script-params",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Type-safe parameter definitions for CADit scripts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",