@sudobility/music_types 0.13.26 → 0.13.28

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 (158) hide show
  1. package/CLAUDE.md +33 -3
  2. package/dist/domain/documents/document-state.d.ts +17 -0
  3. package/dist/domain/documents/document-state.d.ts.map +1 -0
  4. package/dist/domain/documents/document-state.js +6 -0
  5. package/dist/domain/documents/document-state.js.map +1 -0
  6. package/dist/domain/documents/export-formats.d.ts +74 -0
  7. package/dist/domain/documents/export-formats.d.ts.map +1 -0
  8. package/dist/domain/documents/export-formats.js +53 -0
  9. package/dist/domain/documents/export-formats.js.map +1 -0
  10. package/dist/domain/documents/formats.d.ts +17 -0
  11. package/dist/domain/documents/formats.d.ts.map +1 -0
  12. package/dist/domain/documents/formats.js +61 -0
  13. package/dist/domain/documents/formats.js.map +1 -0
  14. package/dist/domain/documents/project-file.d.ts +33 -0
  15. package/dist/domain/documents/project-file.d.ts.map +1 -0
  16. package/dist/domain/documents/project-file.js +14 -0
  17. package/dist/domain/documents/project-file.js.map +1 -0
  18. package/dist/domain/documents/publish.d.ts +6 -0
  19. package/dist/domain/documents/publish.d.ts.map +1 -0
  20. package/dist/domain/documents/publish.js +2 -0
  21. package/dist/domain/documents/publish.js.map +1 -0
  22. package/dist/domain/documents/templates.d.ts +21 -0
  23. package/dist/domain/documents/templates.d.ts.map +1 -0
  24. package/dist/domain/documents/templates.js +22 -0
  25. package/dist/domain/documents/templates.js.map +1 -0
  26. package/dist/domain/editor/app-errors.d.ts +16 -0
  27. package/dist/domain/editor/app-errors.d.ts.map +1 -0
  28. package/dist/domain/editor/app-errors.js +8 -0
  29. package/dist/domain/editor/app-errors.js.map +1 -0
  30. package/dist/domain/editor/context-menu.d.ts +74 -0
  31. package/dist/domain/editor/context-menu.d.ts.map +1 -0
  32. package/dist/domain/editor/context-menu.js +19 -0
  33. package/dist/domain/editor/context-menu.js.map +1 -0
  34. package/dist/domain/editor/device-prefs.d.ts +107 -0
  35. package/dist/domain/editor/device-prefs.d.ts.map +1 -0
  36. package/dist/domain/editor/device-prefs.js +66 -0
  37. package/dist/domain/editor/device-prefs.js.map +1 -0
  38. package/dist/domain/editor/docs.d.ts +56 -0
  39. package/dist/domain/editor/docs.d.ts.map +1 -0
  40. package/dist/domain/editor/docs.js +41 -0
  41. package/dist/domain/editor/docs.js.map +1 -0
  42. package/dist/domain/editor/edit-mode.d.ts +31 -0
  43. package/dist/domain/editor/edit-mode.d.ts.map +1 -0
  44. package/dist/domain/editor/edit-mode.js +40 -0
  45. package/dist/domain/editor/edit-mode.js.map +1 -0
  46. package/dist/domain/editor/editing-copy.d.ts +91 -0
  47. package/dist/domain/editor/editing-copy.d.ts.map +1 -0
  48. package/dist/domain/editor/editing-copy.js +88 -0
  49. package/dist/domain/editor/editing-copy.js.map +1 -0
  50. package/dist/domain/editor/inspector.d.ts +45 -0
  51. package/dist/domain/editor/inspector.d.ts.map +1 -0
  52. package/dist/domain/editor/inspector.js +34 -0
  53. package/dist/domain/editor/inspector.js.map +1 -0
  54. package/dist/domain/editor/labelled-option.d.ts +6 -0
  55. package/dist/domain/editor/labelled-option.d.ts.map +1 -0
  56. package/dist/domain/editor/labelled-option.js +2 -0
  57. package/dist/domain/editor/labelled-option.js.map +1 -0
  58. package/dist/domain/editor/library-copy.d.ts +61 -0
  59. package/dist/domain/editor/library-copy.d.ts.map +1 -0
  60. package/dist/domain/editor/library-copy.js +2 -0
  61. package/dist/domain/editor/library-copy.js.map +1 -0
  62. package/dist/domain/editor/print.d.ts +30 -0
  63. package/dist/domain/editor/print.d.ts.map +1 -0
  64. package/dist/domain/editor/print.js +43 -0
  65. package/dist/domain/editor/print.js.map +1 -0
  66. package/dist/domain/editor/score-input.d.ts +158 -0
  67. package/dist/domain/editor/score-input.d.ts.map +1 -0
  68. package/dist/domain/editor/score-input.js +2 -0
  69. package/dist/domain/editor/score-input.js.map +1 -0
  70. package/dist/domain/editor/toast.d.ts +32 -0
  71. package/dist/domain/editor/toast.d.ts.map +1 -0
  72. package/dist/domain/editor/toast.js +5 -0
  73. package/dist/domain/editor/toast.js.map +1 -0
  74. package/dist/domain/editor/toolbar.d.ts +62 -0
  75. package/dist/domain/editor/toolbar.d.ts.map +1 -0
  76. package/dist/domain/editor/toolbar.js +83 -0
  77. package/dist/domain/editor/toolbar.js.map +1 -0
  78. package/dist/domain/editor/view-settings.d.ts +22 -0
  79. package/dist/domain/editor/view-settings.d.ts.map +1 -0
  80. package/dist/domain/editor/view-settings.js +30 -0
  81. package/dist/domain/editor/view-settings.js.map +1 -0
  82. package/dist/domain/generation/replace-drafts.d.ts +78 -0
  83. package/dist/domain/generation/replace-drafts.d.ts.map +1 -0
  84. package/dist/domain/generation/replace-drafts.js +40 -0
  85. package/dist/domain/generation/replace-drafts.js.map +1 -0
  86. package/dist/domain/generation/request-drafts.d.ts +226 -0
  87. package/dist/domain/generation/request-drafts.d.ts.map +1 -0
  88. package/dist/domain/generation/request-drafts.js +52 -0
  89. package/dist/domain/generation/request-drafts.js.map +1 -0
  90. package/dist/domain/instruments/gm-catalogue.d.ts +27 -3
  91. package/dist/domain/instruments/gm-catalogue.d.ts.map +1 -1
  92. package/dist/domain/instruments/gm-catalogue.js +4 -3
  93. package/dist/domain/instruments/gm-catalogue.js.map +1 -1
  94. package/dist/domain/instruments/gm-polyphony.d.ts +25 -2
  95. package/dist/domain/instruments/gm-polyphony.d.ts.map +1 -1
  96. package/dist/domain/instruments/gm-polyphony.js +9 -3
  97. package/dist/domain/instruments/gm-polyphony.js.map +1 -1
  98. package/dist/domain/instruments/gm-range.d.ts +10 -6
  99. package/dist/domain/instruments/gm-range.d.ts.map +1 -1
  100. package/dist/domain/instruments/gm-range.js +18 -3
  101. package/dist/domain/instruments/gm-range.js.map +1 -1
  102. package/dist/domain/instruments/out-of-range.d.ts +70 -0
  103. package/dist/domain/instruments/out-of-range.d.ts.map +1 -0
  104. package/dist/domain/instruments/out-of-range.js +106 -0
  105. package/dist/domain/instruments/out-of-range.js.map +1 -0
  106. package/dist/domain/instruments/track-instrument.d.ts +23 -0
  107. package/dist/domain/instruments/track-instrument.d.ts.map +1 -1
  108. package/dist/domain/instruments/track-instrument.js +26 -0
  109. package/dist/domain/instruments/track-instrument.js.map +1 -1
  110. package/dist/domain/notation/music-vocabulary.d.ts +17 -0
  111. package/dist/domain/notation/music-vocabulary.d.ts.map +1 -1
  112. package/dist/domain/notation/music-vocabulary.js +25 -1
  113. package/dist/domain/notation/music-vocabulary.js.map +1 -1
  114. package/dist/domain/notation/picker-options.d.ts +42 -2
  115. package/dist/domain/notation/picker-options.d.ts.map +1 -1
  116. package/dist/domain/notation/picker-options.js +41 -2
  117. package/dist/domain/notation/picker-options.js.map +1 -1
  118. package/dist/domain/score/transport-settings.d.ts +29 -0
  119. package/dist/domain/score/transport-settings.d.ts.map +1 -0
  120. package/dist/domain/score/transport-settings.js +2 -0
  121. package/dist/domain/score/transport-settings.js.map +1 -0
  122. package/dist/formats/audio-import.d.ts +15 -0
  123. package/dist/formats/audio-import.d.ts.map +1 -0
  124. package/dist/formats/audio-import.js +26 -0
  125. package/dist/formats/audio-import.js.map +1 -0
  126. package/dist/formats/index.d.ts +10 -0
  127. package/dist/formats/index.d.ts.map +1 -1
  128. package/dist/formats/index.js +10 -0
  129. package/dist/formats/index.js.map +1 -1
  130. package/dist/formats/midi-import.d.ts +128 -0
  131. package/dist/formats/midi-import.d.ts.map +1 -0
  132. package/dist/formats/midi-import.js +2 -0
  133. package/dist/formats/midi-import.js.map +1 -0
  134. package/dist/formats/musicxml.d.ts +44 -0
  135. package/dist/formats/musicxml.d.ts.map +1 -0
  136. package/dist/formats/musicxml.js +2 -0
  137. package/dist/formats/musicxml.js.map +1 -0
  138. package/dist/formats/tracker-export.d.ts +55 -0
  139. package/dist/formats/tracker-export.d.ts.map +1 -0
  140. package/dist/formats/tracker-export.js +18 -0
  141. package/dist/formats/tracker-export.js.map +1 -0
  142. package/dist/index.d.ts +24 -0
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +30 -0
  145. package/dist/index.js.map +1 -1
  146. package/dist/platform/index.d.ts +2 -0
  147. package/dist/platform/index.d.ts.map +1 -1
  148. package/dist/platform/index.js +2 -0
  149. package/dist/platform/index.js.map +1 -1
  150. package/dist/platform/score-files.d.ts +36 -0
  151. package/dist/platform/score-files.d.ts.map +1 -0
  152. package/dist/platform/score-files.js +2 -0
  153. package/dist/platform/score-files.js.map +1 -0
  154. package/dist/platform/storage.d.ts +19 -0
  155. package/dist/platform/storage.d.ts.map +1 -0
  156. package/dist/platform/storage.js +10 -0
  157. package/dist/platform/storage.js.map +1 -0
  158. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B;;;;GAIG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B;;;;GAIG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The file layer above the codecs, as a contract.
3
+ *
4
+ * `@sudobility/music_codecs` turns bytes into a `Score` and back; an
5
+ * implementation of this turns *files* into a `Score` and back — read bytes,
6
+ * call the codec, hand over a score; take a score, call the codec, write the
7
+ * file. `@sudobility/music_io` implements it (`createScoreFiles`) and exposes
8
+ * it on its `MusicIo` bundle.
9
+ *
10
+ * **`open*`/`save*`, never `import*`/`export*`.** music_codecs already exports
11
+ * `importMidi`/`exportMidi`; two identically-named functions in packages an app
12
+ * imports together is a collision that gets resolved wrongly under time
13
+ * pressure.
14
+ *
15
+ * **Audio is deliberately asymmetric with the score formats.** `saveAudio`
16
+ * takes PCM the caller already rendered, because rendering is a live synth in
17
+ * `@sudobility/music_player` and the file layer never holds a reference to one.
18
+ */
19
+ import type { Score } from "../model/score.js";
20
+ import type { TrackerModule } from "../formats/mod.js";
21
+ import type { MidiImportOptions, MidiImportResult, MidiSummary } from "../formats/midi-import.js";
22
+ import type { MusicXmlImportResult, MusicXmlWarnings } from "../formats/musicxml.js";
23
+ export type ScoreFiles = {
24
+ openMidi(bytes: ArrayBuffer, options: MidiImportOptions): MidiImportResult;
25
+ analyzeMidi(bytes: ArrayBuffer): MidiSummary;
26
+ openTracker(bytes: ArrayBuffer): {
27
+ module: TrackerModule;
28
+ score: Score;
29
+ };
30
+ openMusicXml(text: string, warnings: MusicXmlWarnings): Promise<MusicXmlImportResult>;
31
+ saveMidi(score: Score, filename: string): Promise<void>;
32
+ saveTracker(module: TrackerModule, filename: string): Promise<void>;
33
+ saveMusicXml(score: Score, filename: string): Promise<void>;
34
+ saveAudio(samples: Float32Array, sampleRate: number, format: "wav" | "mp3", filename: string): Promise<void>;
35
+ };
36
+ //# sourceMappingURL=score-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-files.d.ts","sourceRoot":"","sources":["../../src/platform/score-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IAC3E,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC;IAC7C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IACzE,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,CACP,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,KAAK,GAAG,KAAK,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=score-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-files.js","sourceRoot":"","sources":["../../src/platform/score-files.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The storage a frontend store is handed, as structural contracts.
3
+ *
4
+ * Structural so each platform brings its own and a test brings a map: the web
5
+ * passes `localStorage` behind @sudobility/di's `StorageService`, a sandboxed
6
+ * macOS build reaches a file through a security-scoped bookmark — a different
7
+ * storage, not a different document.
8
+ */
9
+ /** Structural subset of @sudobility/di's StorageService used for device prefs. */
10
+ export type PrefsStorage = {
11
+ getItem(key: string): Promise<string | null | undefined> | string | null | undefined;
12
+ setItem(key: string, value: string): Promise<void> | void;
13
+ };
14
+ /** The filesystem, as far as a document needs one. */
15
+ export type DocumentFileStorage = {
16
+ readText(uri: string): Promise<string>;
17
+ writeText(uri: string, text: string): Promise<void>;
18
+ };
19
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/platform/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CACL,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D,CAAC;AAEF,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The storage a frontend store is handed, as structural contracts.
3
+ *
4
+ * Structural so each platform brings its own and a test brings a map: the web
5
+ * passes `localStorage` behind @sudobility/di's `StorageService`, a sandboxed
6
+ * macOS build reaches a file through a security-scoped bookmark — a different
7
+ * storage, not a different document.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/platform/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/music_types",
3
- "version": "0.13.26",
3
+ "version": "0.13.28",
4
4
  "description": "TypeScript types and Zod schemas for the ScoreSmith music API - scores, generation contracts, project payloads",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,11 +20,11 @@
20
20
  "scripts": {
21
21
  "build": "tsc -p tsconfig.esm.json",
22
22
  "clean": "rimraf dist",
23
- "test": "vitest run",
23
+ "test:unit": "vitest run",
24
24
  "test:watch": "vitest",
25
25
  "lint": "eslint src",
26
26
  "typecheck": "tsc --noEmit",
27
- "verify": "bun run typecheck && bun run lint && bun run test && bun run build",
27
+ "verify": "bun run typecheck && bun run lint && bun run test:unit && bun run build",
28
28
  "prepublishOnly": "bun run clean && bun run verify"
29
29
  },
30
30
  "files": [