@ghoran/audio 0.0.0-stage → 0.2.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.
Files changed (172) hide show
  1. package/README.md +150 -2
  2. package/dist/abdulbasit-CgLk633T.mjs +14 -0
  3. package/dist/abdulbasit-vmZoDL5W.mjs +12 -0
  4. package/dist/almuiqly-DMovgqFY.mjs +12 -0
  5. package/dist/almuiqly-Ds8QVRUj.mjs +14 -0
  6. package/dist/ansarian-CsfxGgu4.mjs +14 -0
  7. package/dist/ansarian-DAYqks3x.mjs +93 -0
  8. package/dist/ayah-index-p8ffdA40.mjs +7 -0
  9. package/dist/catalog.d.ts +4 -0
  10. package/dist/catalog.mjs +31 -0
  11. package/dist/fooladvand-hedayatfar-DPOvoFnl.mjs +14 -0
  12. package/dist/fooladvand-hedayatfar-bfGu26PN.mjs +12 -0
  13. package/dist/ghamadi-Gq4oILyo.mjs +14 -0
  14. package/dist/ghamadi-IUX7AtH-.mjs +20 -0
  15. package/dist/hashes/abdulbasit.d.ts +5 -0
  16. package/dist/hashes/abdulbasit.mjs +7 -0
  17. package/dist/hashes/almuiqly.d.ts +5 -0
  18. package/dist/hashes/almuiqly.mjs +7 -0
  19. package/dist/hashes/ansarian.d.ts +5 -0
  20. package/dist/hashes/ansarian.mjs +7 -0
  21. package/dist/hashes/fooladvand-hedayatfar.d.ts +5 -0
  22. package/dist/hashes/fooladvand-hedayatfar.mjs +7 -0
  23. package/dist/hashes/ghamadi.d.ts +5 -0
  24. package/dist/hashes/ghamadi.mjs +7 -0
  25. package/dist/hashes/husary.d.ts +5 -0
  26. package/dist/hashes/husary.mjs +7 -0
  27. package/dist/hashes/jafarpour.d.ts +5 -0
  28. package/dist/hashes/jafarpour.mjs +7 -0
  29. package/dist/hashes/makarem-kabiri.d.ts +5 -0
  30. package/dist/hashes/makarem-kabiri.mjs +7 -0
  31. package/dist/hashes/maleki.d.ts +5 -0
  32. package/dist/hashes/maleki.mjs +7 -0
  33. package/dist/hashes/minshawy-mujawwad.d.ts +5 -0
  34. package/dist/hashes/minshawy-mujawwad.mjs +7 -0
  35. package/dist/hashes/minshawy-murattal.d.ts +5 -0
  36. package/dist/hashes/minshawy-murattal.mjs +7 -0
  37. package/dist/hashes/motaz.d.ts +5 -0
  38. package/dist/hashes/motaz.mjs +7 -0
  39. package/dist/hashes/parhizgar.d.ts +5 -0
  40. package/dist/hashes/parhizgar.mjs +7 -0
  41. package/dist/husary-58J-Hbbz.mjs +14 -0
  42. package/dist/husary-RnRQi5i-.mjs +12 -0
  43. package/dist/index-OUGKp8YA.d.ts +64 -0
  44. package/dist/index.d.ts +3 -0
  45. package/dist/index.mjs +15 -0
  46. package/dist/jafarpour--RmpKsL1.mjs +12 -0
  47. package/dist/jafarpour-2Nco5LM6.mjs +14 -0
  48. package/dist/load.d.ts +7 -0
  49. package/dist/load.mjs +94 -0
  50. package/dist/makarem-kabiri-DNCrtExW.mjs +12 -0
  51. package/dist/makarem-kabiri-Di0qt0pO.mjs +14 -0
  52. package/dist/maleki-BtTzBMIi.mjs +14 -0
  53. package/dist/maleki-CrOeub6K.mjs +2433 -0
  54. package/dist/minshawy-mujawwad-BduwtoWV.mjs +12 -0
  55. package/dist/minshawy-mujawwad-CF0_Aws9.mjs +14 -0
  56. package/dist/minshawy-murattal-BCila8ep.mjs +12 -0
  57. package/dist/minshawy-murattal-DWTJ7Vbi.mjs +14 -0
  58. package/dist/motaz-B3SeKFg1.mjs +333 -0
  59. package/dist/motaz-BPiSDPjo.mjs +14 -0
  60. package/dist/parhizgar-DI28CJpf.mjs +14 -0
  61. package/dist/parhizgar-DkUYzfYH.mjs +12 -0
  62. package/dist/playback-BK0IJjxS.mjs +130 -0
  63. package/dist/sources/abdulbasit.d.ts +2 -0
  64. package/dist/sources/abdulbasit.mjs +1 -0
  65. package/dist/sources/almuiqly.d.ts +2 -0
  66. package/dist/sources/almuiqly.mjs +1 -0
  67. package/dist/sources/ansarian.d.ts +2 -0
  68. package/dist/sources/ansarian.mjs +1 -0
  69. package/dist/sources/fooladvand-hedayatfar.d.ts +2 -0
  70. package/dist/sources/fooladvand-hedayatfar.mjs +1 -0
  71. package/dist/sources/ghamadi.d.ts +2 -0
  72. package/dist/sources/ghamadi.mjs +1 -0
  73. package/dist/sources/husary.d.ts +2 -0
  74. package/dist/sources/husary.mjs +1 -0
  75. package/dist/sources/jafarpour.d.ts +2 -0
  76. package/dist/sources/jafarpour.mjs +1 -0
  77. package/dist/sources/makarem-kabiri.d.ts +2 -0
  78. package/dist/sources/makarem-kabiri.mjs +1 -0
  79. package/dist/sources/maleki.d.ts +2 -0
  80. package/dist/sources/maleki.mjs +1 -0
  81. package/dist/sources/minshawy-mujawwad.d.ts +2 -0
  82. package/dist/sources/minshawy-mujawwad.mjs +1 -0
  83. package/dist/sources/minshawy-murattal.d.ts +2 -0
  84. package/dist/sources/minshawy-murattal.mjs +1 -0
  85. package/dist/sources/motaz.d.ts +2 -0
  86. package/dist/sources/motaz.mjs +1 -0
  87. package/dist/sources/parhizgar.d.ts +2 -0
  88. package/dist/sources/parhizgar.mjs +1 -0
  89. package/dist/targets/-16/abdulbasit.d.ts +5 -0
  90. package/dist/targets/-16/abdulbasit.mjs +333 -0
  91. package/dist/targets/-16/almuiqly.d.ts +5 -0
  92. package/dist/targets/-16/almuiqly.mjs +3953 -0
  93. package/dist/targets/-16/ansarian.d.ts +5 -0
  94. package/dist/targets/-16/ansarian.mjs +29723 -0
  95. package/dist/targets/-16/fooladvand-hedayatfar.d.ts +5 -0
  96. package/dist/targets/-16/fooladvand-hedayatfar.mjs +13818 -0
  97. package/dist/targets/-16/ghamadi.d.ts +5 -0
  98. package/dist/targets/-16/ghamadi.mjs +2133 -0
  99. package/dist/targets/-16/husary.d.ts +5 -0
  100. package/dist/targets/-16/husary.mjs +7958 -0
  101. package/dist/targets/-16/jafarpour.d.ts +5 -0
  102. package/dist/targets/-16/jafarpour.mjs +9243 -0
  103. package/dist/targets/-16/makarem-kabiri.d.ts +5 -0
  104. package/dist/targets/-16/makarem-kabiri.mjs +24293 -0
  105. package/dist/targets/-16/maleki.d.ts +5 -0
  106. package/dist/targets/-16/maleki.mjs +23403 -0
  107. package/dist/targets/-16/minshawy-mujawwad.d.ts +5 -0
  108. package/dist/targets/-16/minshawy-mujawwad.mjs +38 -0
  109. package/dist/targets/-16/minshawy-murattal.d.ts +5 -0
  110. package/dist/targets/-16/minshawy-murattal.mjs +108 -0
  111. package/dist/targets/-16/motaz.d.ts +5 -0
  112. package/dist/targets/-16/motaz.mjs +7813 -0
  113. package/dist/targets/-16/parhizgar.d.ts +5 -0
  114. package/dist/targets/-16/parhizgar.mjs +183 -0
  115. package/dist/targets/-18/abdulbasit.d.ts +5 -0
  116. package/dist/targets/-18/abdulbasit.mjs +12 -0
  117. package/dist/targets/-18/almuiqly.d.ts +5 -0
  118. package/dist/targets/-18/almuiqly.mjs +73 -0
  119. package/dist/targets/-18/ansarian.d.ts +5 -0
  120. package/dist/targets/-18/ansarian.mjs +16483 -0
  121. package/dist/targets/-18/fooladvand-hedayatfar.d.ts +5 -0
  122. package/dist/targets/-18/fooladvand-hedayatfar.mjs +1308 -0
  123. package/dist/targets/-18/ghamadi.d.ts +5 -0
  124. package/dist/targets/-18/ghamadi.mjs +248 -0
  125. package/dist/targets/-18/husary.d.ts +5 -0
  126. package/dist/targets/-18/husary.mjs +12 -0
  127. package/dist/targets/-18/jafarpour.d.ts +5 -0
  128. package/dist/targets/-18/jafarpour.mjs +233 -0
  129. package/dist/targets/-18/makarem-kabiri.d.ts +5 -0
  130. package/dist/targets/-18/makarem-kabiri.mjs +2873 -0
  131. package/dist/targets/-18/maleki.d.ts +5 -0
  132. package/dist/targets/-18/maleki.mjs +11178 -0
  133. package/dist/targets/-18/minshawy-mujawwad.d.ts +5 -0
  134. package/dist/targets/-18/minshawy-mujawwad.mjs +12 -0
  135. package/dist/targets/-18/minshawy-murattal.d.ts +5 -0
  136. package/dist/targets/-18/minshawy-murattal.mjs +12 -0
  137. package/dist/targets/-18/motaz.d.ts +5 -0
  138. package/dist/targets/-18/motaz.mjs +1978 -0
  139. package/dist/targets/-18/parhizgar.d.ts +5 -0
  140. package/dist/targets/-18/parhizgar.mjs +12 -0
  141. package/dist/targets/-23/abdulbasit.d.ts +5 -0
  142. package/dist/targets/-23/abdulbasit.mjs +12 -0
  143. package/dist/targets/-23/almuiqly.d.ts +5 -0
  144. package/dist/targets/-23/almuiqly.mjs +12 -0
  145. package/dist/targets/-23/ansarian.d.ts +5 -0
  146. package/dist/targets/-23/ansarian.mjs +12 -0
  147. package/dist/targets/-23/fooladvand-hedayatfar.d.ts +5 -0
  148. package/dist/targets/-23/fooladvand-hedayatfar.mjs +12 -0
  149. package/dist/targets/-23/ghamadi.d.ts +5 -0
  150. package/dist/targets/-23/ghamadi.mjs +20 -0
  151. package/dist/targets/-23/husary.d.ts +5 -0
  152. package/dist/targets/-23/husary.mjs +12 -0
  153. package/dist/targets/-23/jafarpour.d.ts +5 -0
  154. package/dist/targets/-23/jafarpour.mjs +12 -0
  155. package/dist/targets/-23/makarem-kabiri.d.ts +5 -0
  156. package/dist/targets/-23/makarem-kabiri.mjs +12 -0
  157. package/dist/targets/-23/maleki.d.ts +5 -0
  158. package/dist/targets/-23/maleki.mjs +16 -0
  159. package/dist/targets/-23/minshawy-mujawwad.d.ts +5 -0
  160. package/dist/targets/-23/minshawy-mujawwad.mjs +12 -0
  161. package/dist/targets/-23/minshawy-murattal.d.ts +5 -0
  162. package/dist/targets/-23/minshawy-murattal.mjs +12 -0
  163. package/dist/targets/-23/motaz.d.ts +5 -0
  164. package/dist/targets/-23/motaz.mjs +16 -0
  165. package/dist/targets/-23/parhizgar.d.ts +5 -0
  166. package/dist/targets/-23/parhizgar.mjs +12 -0
  167. package/dist/types-BiTocnkC.d.ts +76 -0
  168. package/dist/url.d.ts +5 -0
  169. package/dist/url.mjs +135 -0
  170. package/dist/verify.d.ts +7 -0
  171. package/dist/verify.mjs +26 -0
  172. package/package.json +61 -3
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-18/parhizgar.d.ts
3
+ declare const parhizgar: AudioSourceProfile<"parhizgar">;
4
+ //#endregion
5
+ export { parhizgar as default, parhizgar };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../parhizgar-DI28CJpf.mjs";
3
+ //#endregion
4
+ //#region src/targets/-18/parhizgar.ts
5
+ const parhizgar = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -18,
7
+ "base": -554,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { parhizgar as default, parhizgar };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/abdulbasit.d.ts
3
+ declare const abdulbasit: AudioSourceProfile<"abdulbasit">;
4
+ //#endregion
5
+ export { abdulbasit, abdulbasit as default };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../abdulbasit-CgLk633T.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/abdulbasit.ts
5
+ const abdulbasit = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -886,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { abdulbasit, abdulbasit as default };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/almuiqly.d.ts
3
+ declare const almuiqly: AudioSourceProfile<"almuiqly">;
4
+ //#endregion
5
+ export { almuiqly, almuiqly as default };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../almuiqly-Ds8QVRUj.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/almuiqly.ts
5
+ const almuiqly = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -718,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { almuiqly, almuiqly as default };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/ansarian.d.ts
3
+ declare const ansarian: AudioSourceProfile<"ansarian">;
4
+ //#endregion
5
+ export { ansarian, ansarian as default };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../ansarian-CsfxGgu4.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/ansarian.ts
5
+ const ansarian = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -630,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { ansarian, ansarian as default };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/fooladvand-hedayatfar.d.ts
3
+ declare const fooladvandHedayatfar: AudioSourceProfile<"fooladvand-hedayatfar">;
4
+ //#endregion
5
+ export { fooladvandHedayatfar as default, fooladvandHedayatfar };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../fooladvand-hedayatfar-DPOvoFnl.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/fooladvand-hedayatfar.ts
5
+ const fooladvandHedayatfar = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -848,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { fooladvandHedayatfar as default, fooladvandHedayatfar };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/ghamadi.d.ts
3
+ declare const ghamadi: AudioSourceProfile<"ghamadi">;
4
+ //#endregion
5
+ export { ghamadi as default, ghamadi };
@@ -0,0 +1,20 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../ghamadi-Gq4oILyo.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/ghamadi.ts
5
+ const ghamadi = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -721,
8
+ "overrides": [[
9
+ 235,
10
+ -1275,
11
+ true
12
+ ], [
13
+ 3314,
14
+ -835,
15
+ true
16
+ ]],
17
+ "unavailable": []
18
+ });
19
+ //#endregion
20
+ export { ghamadi as default, ghamadi };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/husary.d.ts
3
+ declare const husary: AudioSourceProfile<"husary">;
4
+ //#endregion
5
+ export { husary as default, husary };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../husary-58J-Hbbz.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/husary.ts
5
+ const husary = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -699,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { husary as default, husary };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/jafarpour.d.ts
3
+ declare const jafarpour: AudioSourceProfile<"jafarpour">;
4
+ //#endregion
5
+ export { jafarpour as default, jafarpour };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../jafarpour-2Nco5LM6.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/jafarpour.ts
5
+ const jafarpour = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -820,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { jafarpour as default, jafarpour };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/makarem-kabiri.d.ts
3
+ declare const makaremKabiri: AudioSourceProfile<"makarem-kabiri">;
4
+ //#endregion
5
+ export { makaremKabiri as default, makaremKabiri };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../makarem-kabiri-Di0qt0pO.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/makarem-kabiri.ts
5
+ const makaremKabiri = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -814,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { makaremKabiri as default, makaremKabiri };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/maleki.d.ts
3
+ declare const maleki: AudioSourceProfile<"maleki">;
4
+ //#endregion
5
+ export { maleki as default, maleki };
@@ -0,0 +1,16 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../maleki-BtTzBMIi.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/maleki.ts
5
+ const maleki = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -289,
8
+ "overrides": [[
9
+ 3308,
10
+ -305,
11
+ true
12
+ ]],
13
+ "unavailable": []
14
+ });
15
+ //#endregion
16
+ export { maleki as default, maleki };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/minshawy-mujawwad.d.ts
3
+ declare const minshawyMujawwad: AudioSourceProfile<"minshawy-mujawwad">;
4
+ //#endregion
5
+ export { minshawyMujawwad as default, minshawyMujawwad };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../minshawy-mujawwad-CF0_Aws9.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/minshawy-mujawwad.ts
5
+ const minshawyMujawwad = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -966,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { minshawyMujawwad as default, minshawyMujawwad };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/minshawy-murattal.d.ts
3
+ declare const minshawyMurattal: AudioSourceProfile<"minshawy-murattal">;
4
+ //#endregion
5
+ export { minshawyMurattal as default, minshawyMurattal };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../minshawy-murattal-DWTJ7Vbi.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/minshawy-murattal.ts
5
+ const minshawyMurattal = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -887,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { minshawyMurattal as default, minshawyMurattal };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/motaz.d.ts
3
+ declare const motaz: AudioSourceProfile<"motaz">;
4
+ //#endregion
5
+ export { motaz as default, motaz };
@@ -0,0 +1,16 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../motaz-BPiSDPjo.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/motaz.ts
5
+ const motaz = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -34,
8
+ "overrides": [[
9
+ 475,
10
+ -35,
11
+ true
12
+ ]],
13
+ "unavailable": []
14
+ });
15
+ //#endregion
16
+ export { motaz as default, motaz };
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile } from "../../types-BiTocnkC.js";
2
+ //#region src/targets/-23/parhizgar.d.ts
3
+ declare const parhizgar: AudioSourceProfile<"parhizgar">;
4
+ //#endregion
5
+ export { parhizgar as default, parhizgar };
@@ -0,0 +1,12 @@
1
+ import { r as createAudioSource } from "../../playback-BK0IJjxS.mjs";
2
+ import { t as metadata } from "../../parhizgar-DI28CJpf.mjs";
3
+ //#endregion
4
+ //#region src/targets/-23/parhizgar.ts
5
+ const parhizgar = /* @__PURE__ */ createAudioSource(metadata, {
6
+ "targetLufs": -23,
7
+ "base": -1054,
8
+ "overrides": [],
9
+ "unavailable": []
10
+ });
11
+ //#endregion
12
+ export { parhizgar as default, parhizgar };
@@ -0,0 +1,76 @@
1
+ //#region src/types.d.ts
2
+ type AudioSourceId = 'parhizgar' | 'ghamadi' | 'husary' | 'minshawy-murattal' | 'minshawy-mujawwad' | 'motaz' | 'abdulbasit' | 'almuiqly' | 'jafarpour' | 'ansarian' | 'maleki' | 'makarem-kabiri' | 'fooladvand-hedayatfar';
3
+ type AudioLoudnessTarget = -23 | -20 | -18 | -16;
4
+ /** Zero-based Quran ayah index (0..6235), shared with text arrays and Ayah.index. */
5
+ type AyahIndex = number;
6
+ type AudioUnavailableReason = 'invalid-audio' | 'unmeasurable' | 'unprocessed' | 'missing-audio' | 'download-error' | 'peak-limit-unreachable';
7
+ interface AudioSource {
8
+ readonly id: AudioSourceId;
9
+ readonly nameFa: string;
10
+ readonly kind: 'recitation' | 'mujawwad' | 'translation';
11
+ readonly urlTemplate: string;
12
+ readonly baselinePlaybackLufs: number | null;
13
+ /** Ordered reference audio hashes/statuses digest; not an individual file hash. */
14
+ readonly contentRevision: string;
15
+ readonly measuredFiles: number;
16
+ readonly inventoryComplete: boolean;
17
+ /** Accepted reference revisions awaiting verification at their canonical URLs. */
18
+ readonly pendingPublicationFiles?: number;
19
+ }
20
+ interface AudioGainPolicyInfo {
21
+ readonly targetLufs: AudioLoudnessTarget;
22
+ readonly truePeakCeilingDbtp: number;
23
+ readonly truePeakMarginDb: number;
24
+ readonly maximumBoostDb: number;
25
+ readonly maximumCutDb: number;
26
+ readonly quantizationDb: number;
27
+ readonly inferredCorrectionsApplied: false;
28
+ }
29
+ interface AudioRecommendationDetails {
30
+ readonly sourceId: AudioSourceId;
31
+ readonly ayahIndex: AyahIndex;
32
+ readonly targetLufs: AudioLoudnessTarget;
33
+ readonly snapshotId: string;
34
+ readonly contentRevision: string;
35
+ /** Reference lookup does not verify audio bytes; see /verify. */
36
+ readonly contentVerified: false;
37
+ readonly baseGainDb: number | null;
38
+ readonly peakLimited: boolean;
39
+ readonly provisional: boolean;
40
+ }
41
+ /** Status narrows both gains to numbers or null in TypeScript. */
42
+ type AudioRecommendation = AudioRecommendationDetails & ({
43
+ readonly status: 'ready';
44
+ readonly reason: null;
45
+ readonly gainDb: number;
46
+ readonly gainLinear: number;
47
+ } | {
48
+ readonly status: 'unavailable';
49
+ readonly reason: AudioUnavailableReason;
50
+ readonly gainDb: null;
51
+ readonly gainLinear: null;
52
+ });
53
+ interface AudioSourceProfile<Id extends AudioSourceId = AudioSourceId> {
54
+ readonly id: Id;
55
+ readonly metadata: AudioSource;
56
+ readonly targetLufs: AudioLoudnessTarget;
57
+ readonly snapshotId: string;
58
+ readonly policy: AudioGainPolicyInfo;
59
+ getGain(ayahIndex: AyahIndex): number | null;
60
+ getGainDb(ayahIndex: AyahIndex): number | null;
61
+ getRecommendation(ayahIndex: AyahIndex): AudioRecommendation;
62
+ }
63
+ interface AudioNormalizer<Id extends AudioSourceId = AudioSourceId> {
64
+ readonly targetLufs: AudioLoudnessTarget;
65
+ readonly snapshotId: string;
66
+ getGain(source: Id, ayahIndex: AyahIndex): number | null;
67
+ getGainDb(source: Id, ayahIndex: AyahIndex): number | null;
68
+ getRecommendation(source: Id, ayahIndex: AyahIndex): AudioRecommendation;
69
+ }
70
+ interface AudioContentManifest {
71
+ readonly sourceId: AudioSourceId;
72
+ readonly contentRevision: string;
73
+ getHash(ayahIndex: AyahIndex): string | null;
74
+ }
75
+ //#endregion
76
+ export { AudioRecommendation as a, AudioSourceProfile as c, AudioNormalizer as i, AudioUnavailableReason as l, AudioGainPolicyInfo as n, AudioSource as o, AudioLoudnessTarget as r, AudioSourceId as s, AudioContentManifest as t, AyahIndex as u };
package/dist/url.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { c as AudioSourceProfile, o as AudioSource, u as AyahIndex } from "./types-BiTocnkC.js";
2
+ //#region src/url.d.ts
3
+ /** Build a canonical URL without downloading or verifying its content. */
4
+ export declare function getAudioUrl(source: AudioSource | AudioSourceProfile, ayahIndex: AyahIndex): string;
5
+ //#endregion
package/dist/url.mjs ADDED
@@ -0,0 +1,135 @@
1
+ import { t as assertAyahIndex } from "./ayah-index-p8ffdA40.mjs";
2
+ //#region src/generated/addressing.ts
3
+ const surahLengths = [
4
+ 7,
5
+ 286,
6
+ 200,
7
+ 176,
8
+ 120,
9
+ 165,
10
+ 206,
11
+ 75,
12
+ 129,
13
+ 109,
14
+ 123,
15
+ 111,
16
+ 43,
17
+ 52,
18
+ 99,
19
+ 128,
20
+ 111,
21
+ 110,
22
+ 98,
23
+ 135,
24
+ 112,
25
+ 78,
26
+ 118,
27
+ 64,
28
+ 77,
29
+ 227,
30
+ 93,
31
+ 88,
32
+ 69,
33
+ 60,
34
+ 34,
35
+ 30,
36
+ 73,
37
+ 54,
38
+ 45,
39
+ 83,
40
+ 182,
41
+ 88,
42
+ 75,
43
+ 85,
44
+ 54,
45
+ 53,
46
+ 89,
47
+ 59,
48
+ 37,
49
+ 35,
50
+ 38,
51
+ 29,
52
+ 18,
53
+ 45,
54
+ 60,
55
+ 49,
56
+ 62,
57
+ 55,
58
+ 78,
59
+ 96,
60
+ 29,
61
+ 22,
62
+ 24,
63
+ 13,
64
+ 14,
65
+ 11,
66
+ 11,
67
+ 18,
68
+ 12,
69
+ 12,
70
+ 30,
71
+ 52,
72
+ 52,
73
+ 44,
74
+ 28,
75
+ 28,
76
+ 20,
77
+ 56,
78
+ 40,
79
+ 31,
80
+ 50,
81
+ 40,
82
+ 46,
83
+ 42,
84
+ 29,
85
+ 19,
86
+ 36,
87
+ 25,
88
+ 22,
89
+ 17,
90
+ 19,
91
+ 26,
92
+ 30,
93
+ 20,
94
+ 15,
95
+ 21,
96
+ 11,
97
+ 8,
98
+ 8,
99
+ 19,
100
+ 5,
101
+ 8,
102
+ 8,
103
+ 11,
104
+ 11,
105
+ 8,
106
+ 3,
107
+ 9,
108
+ 5,
109
+ 4,
110
+ 7,
111
+ 3,
112
+ 6,
113
+ 3,
114
+ 5,
115
+ 4,
116
+ 5,
117
+ 6
118
+ ];
119
+ //#endregion
120
+ //#region src/url.ts
121
+ /** Optional URL addressing. This module is never imported by gain profiles. */
122
+ /** Build a canonical URL without downloading or verifying its content. */
123
+ function getAudioUrl(source, ayahIndex) {
124
+ assertAyahIndex(ayahIndex);
125
+ let surahIndex = 0;
126
+ let localIndex = ayahIndex;
127
+ while (localIndex >= surahLengths[surahIndex]) {
128
+ localIndex -= surahLengths[surahIndex];
129
+ surahIndex++;
130
+ }
131
+ const fileStem = `${String(surahIndex + 1).padStart(3, "0")}${String(localIndex + 1).padStart(3, "0")}`;
132
+ return ("metadata" in source ? source.metadata : source).urlTemplate.replace("{file_stem}", fileStem);
133
+ }
134
+ //#endregion
135
+ export { getAudioUrl };
@@ -0,0 +1,7 @@
1
+ import { c as AudioSourceProfile, s as AudioSourceId, t as AudioContentManifest, u as AyahIndex } from "./types-BiTocnkC.js";
2
+ //#region src/verify.d.ts
3
+ export declare function createAudioContentManifest(sourceId: AudioSourceId, contentRevision: string, hashes: string): AudioContentManifest;
4
+ export declare function verifyAudioContent(manifest: AudioContentManifest, ayahIndex: AyahIndex, actualSha256: string): boolean;
5
+ /** Mismatched source revisions, changed bytes, and unavailable gains return null. */
6
+ export declare function getVerifiedAudioGain(source: AudioSourceProfile, manifest: AudioContentManifest, ayahIndex: AyahIndex, actualSha256: string): number | null;
7
+ //#endregion
@@ -0,0 +1,26 @@
1
+ import { t as assertAyahIndex } from "./ayah-index-p8ffdA40.mjs";
2
+ //#region src/verify.ts
3
+ /** Optional, data-free verification helpers. The caller supplies the actual file hash. */
4
+ function createAudioContentManifest(sourceId, contentRevision, hashes) {
5
+ if (hashes.length !== 399104 || !/^[0-9a-f]+$/.test(hashes)) throw new TypeError("Invalid original-file SHA-256 manifest");
6
+ return Object.freeze({
7
+ sourceId,
8
+ contentRevision,
9
+ getHash(ayahIndex) {
10
+ assertAyahIndex(ayahIndex);
11
+ const hash = hashes.slice(ayahIndex * 64, (ayahIndex + 1) * 64);
12
+ return hash === "0".repeat(64) ? null : hash;
13
+ }
14
+ });
15
+ }
16
+ function verifyAudioContent(manifest, ayahIndex, actualSha256) {
17
+ if (!/^[0-9a-f]{64}$/.test(actualSha256)) throw new TypeError("Expected lowercase original-file SHA-256");
18
+ return manifest.getHash(ayahIndex) === actualSha256;
19
+ }
20
+ /** Mismatched source revisions, changed bytes, and unavailable gains return null. */
21
+ function getVerifiedAudioGain(source, manifest, ayahIndex, actualSha256) {
22
+ if (source.id !== manifest.sourceId || source.metadata.contentRevision !== manifest.contentRevision) return null;
23
+ return verifyAudioContent(manifest, ayahIndex, actualSha256) ? source.getGain(ayahIndex) : null;
24
+ }
25
+ //#endregion
26
+ export { createAudioContentManifest, getVerifiedAudioGain, verifyAudioContent };
package/package.json CHANGED
@@ -1,6 +1,64 @@
1
1
  {
2
2
  "name": "@ghoran/audio",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0",
4
+ "description": "Tree-shakable Quran audio gain profiles, per-file peak protection and optional content verification",
5
+ "type": "module",
6
+ "main": "dist/index.mjs",
7
+ "module": "dist/index.mjs",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs"
13
+ },
14
+ "./catalog": {
15
+ "types": "./dist/catalog.d.ts",
16
+ "import": "./dist/catalog.mjs"
17
+ },
18
+ "./load": {
19
+ "types": "./dist/load.d.ts",
20
+ "import": "./dist/load.mjs"
21
+ },
22
+ "./verify": {
23
+ "types": "./dist/verify.d.ts",
24
+ "import": "./dist/verify.mjs"
25
+ },
26
+ "./sources/*": {
27
+ "types": "./dist/sources/*.d.ts",
28
+ "import": "./dist/sources/*.mjs"
29
+ },
30
+ "./targets/*": {
31
+ "types": "./dist/targets/*.d.ts",
32
+ "import": "./dist/targets/*.mjs"
33
+ },
34
+ "./hashes/*": {
35
+ "types": "./dist/hashes/*.d.ts",
36
+ "import": "./dist/hashes/*.mjs"
37
+ },
38
+ "./url": {
39
+ "types": "./dist/url.d.ts",
40
+ "import": "./dist/url.mjs"
41
+ }
42
+ },
43
+ "sideEffects": false,
44
+ "files": [
45
+ "dist/**/*",
46
+ "README.md"
47
+ ],
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/sabereen/ghoran.git",
51
+ "directory": "packages/audio"
52
+ },
53
+ "license": "MIT",
54
+ "publishConfig": {
55
+ "access": "public",
56
+ "registry": "https://registry.npmjs.org/"
57
+ },
58
+ "scripts": {
59
+ "build": "node scripts/generate-runtime.mjs && tsdown",
60
+ "generate:runtime": "node scripts/generate-runtime.mjs",
61
+ "check:runtime": "node scripts/generate-runtime.mjs --check",
62
+ "import:analysis": "node scripts/import-analysis.mjs"
63
+ }
6
64
  }