one 2.11.5 → 2.12.1

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 (199) hide show
  1. package/android/src/main/java/com/margelo/nitro/one/HybridOneAudio.kt +309 -124
  2. package/dist/cjs/cli/build.cjs +31 -33
  3. package/dist/cjs/cli/build.native.cjs +31 -33
  4. package/dist/cjs/cli/build.native.js +31 -33
  5. package/dist/cjs/cli/build.native.js.map +1 -1
  6. package/dist/cjs/cli/buildPage.cjs +11 -7
  7. package/dist/cjs/cli/buildPage.native.cjs +11 -7
  8. package/dist/cjs/cli/buildPage.native.js +11 -7
  9. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  10. package/dist/cjs/cli/buildPageWorker.cjs +1 -1
  11. package/dist/cjs/cli/buildPageWorker.native.cjs +1 -1
  12. package/dist/cjs/cli/buildPageWorker.native.js +1 -1
  13. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  14. package/dist/cjs/cli-dev-memory.cjs +43 -0
  15. package/dist/cjs/cli-dev-memory.native.cjs +84 -0
  16. package/dist/cjs/cli-dev-memory.native.js +86 -0
  17. package/dist/cjs/cli-dev-memory.native.js.map +1 -0
  18. package/dist/cjs/headless-server.cjs +2 -5
  19. package/dist/cjs/headless-server.native.cjs +2 -5
  20. package/dist/cjs/headless-server.native.js +2 -5
  21. package/dist/cjs/headless-server.native.js.map +1 -1
  22. package/dist/cjs/platform/audio/index.cjs +83 -76
  23. package/dist/cjs/platform/audio/index.native.cjs +2 -2
  24. package/dist/cjs/platform/audio/index.native.js +2 -2
  25. package/dist/cjs/platform/audio/index.native.js.map +1 -1
  26. package/dist/cjs/platform/audio/nowPlaying.cjs +126 -0
  27. package/dist/cjs/platform/audio/nowPlaying.native.cjs +160 -0
  28. package/dist/cjs/platform/audio/nowPlaying.native.js +162 -0
  29. package/dist/cjs/platform/audio/nowPlaying.native.js.map +1 -0
  30. package/dist/cjs/platform/audio/player.cjs +15 -0
  31. package/dist/cjs/platform/audio/player.native.cjs +14 -0
  32. package/dist/cjs/platform/audio/player.native.js +14 -0
  33. package/dist/cjs/platform/audio/player.native.js.map +1 -1
  34. package/dist/cjs/platform/audio/unavailable.cjs +1 -1
  35. package/dist/cjs/platform/audio/unavailable.native.cjs +1 -1
  36. package/dist/cjs/platform/audio/unavailable.native.js +1 -1
  37. package/dist/cjs/platform/audio/unavailable.native.js.map +1 -1
  38. package/dist/cjs/serve-worker.cjs +0 -3
  39. package/dist/cjs/serve-worker.native.cjs +0 -3
  40. package/dist/cjs/serve-worker.native.js +0 -3
  41. package/dist/cjs/serve-worker.native.js.map +1 -1
  42. package/dist/cjs/server/oneServe.cjs +0 -6
  43. package/dist/cjs/server/oneServe.native.cjs +0 -6
  44. package/dist/cjs/server/oneServe.native.js +0 -6
  45. package/dist/cjs/server/oneServe.native.js.map +1 -1
  46. package/dist/cjs/server/workerHandler.cjs +12 -10
  47. package/dist/cjs/server/workerHandler.native.cjs +14 -10
  48. package/dist/cjs/server/workerHandler.native.js +14 -10
  49. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  50. package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +33 -37
  51. package/dist/cjs/vite/plugins/workerdDevPlugin.native.cjs +33 -37
  52. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +33 -37
  53. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  54. package/dist/esm/cli/build.mjs +31 -33
  55. package/dist/esm/cli/build.mjs.map +1 -1
  56. package/dist/esm/cli/build.native.js +31 -33
  57. package/dist/esm/cli/build.native.js.map +1 -1
  58. package/dist/esm/cli/buildPage.mjs +11 -7
  59. package/dist/esm/cli/buildPage.mjs.map +1 -1
  60. package/dist/esm/cli/buildPage.native.js +11 -7
  61. package/dist/esm/cli/buildPage.native.js.map +1 -1
  62. package/dist/esm/cli/buildPageWorker.mjs +1 -1
  63. package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
  64. package/dist/esm/cli/buildPageWorker.native.js +1 -1
  65. package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
  66. package/dist/esm/cli-dev-memory.mjs +23 -0
  67. package/dist/esm/cli-dev-memory.mjs.map +1 -0
  68. package/dist/esm/cli-dev-memory.native.js +62 -0
  69. package/dist/esm/cli-dev-memory.native.js.map +1 -0
  70. package/dist/esm/headless-server.mjs +2 -3
  71. package/dist/esm/headless-server.mjs.map +1 -1
  72. package/dist/esm/headless-server.native.js +2 -3
  73. package/dist/esm/headless-server.native.js.map +1 -1
  74. package/dist/esm/platform/audio/index.mjs +83 -76
  75. package/dist/esm/platform/audio/index.mjs.map +1 -1
  76. package/dist/esm/platform/audio/index.native.js +2 -2
  77. package/dist/esm/platform/audio/index.native.js.map +1 -1
  78. package/dist/esm/platform/audio/nowPlaying.mjs +102 -0
  79. package/dist/esm/platform/audio/nowPlaying.mjs.map +1 -0
  80. package/dist/esm/platform/audio/nowPlaying.native.js +134 -0
  81. package/dist/esm/platform/audio/nowPlaying.native.js.map +1 -0
  82. package/dist/esm/platform/audio/player.mjs +15 -0
  83. package/dist/esm/platform/audio/player.mjs.map +1 -1
  84. package/dist/esm/platform/audio/player.native.js +14 -0
  85. package/dist/esm/platform/audio/player.native.js.map +1 -1
  86. package/dist/esm/platform/audio/unavailable.mjs +1 -1
  87. package/dist/esm/platform/audio/unavailable.mjs.map +1 -1
  88. package/dist/esm/platform/audio/unavailable.native.js +1 -1
  89. package/dist/esm/platform/audio/unavailable.native.js.map +1 -1
  90. package/dist/esm/serve-worker.mjs +1 -2
  91. package/dist/esm/serve-worker.mjs.map +1 -1
  92. package/dist/esm/serve-worker.native.js +1 -2
  93. package/dist/esm/serve-worker.native.js.map +1 -1
  94. package/dist/esm/server/oneServe.mjs +0 -6
  95. package/dist/esm/server/oneServe.mjs.map +1 -1
  96. package/dist/esm/server/oneServe.native.js +0 -6
  97. package/dist/esm/server/oneServe.native.js.map +1 -1
  98. package/dist/esm/server/workerHandler.mjs +12 -10
  99. package/dist/esm/server/workerHandler.mjs.map +1 -1
  100. package/dist/esm/server/workerHandler.native.js +14 -10
  101. package/dist/esm/server/workerHandler.native.js.map +1 -1
  102. package/dist/esm/vite/plugins/workerdDevPlugin.mjs +33 -37
  103. package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -1
  104. package/dist/esm/vite/plugins/workerdDevPlugin.native.js +33 -37
  105. package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  106. package/ios/Nitro/HybridOneAudio.swift +309 -96
  107. package/nitrogen/generated/android/c++/JAudioPlayOptions.hpp +61 -0
  108. package/nitrogen/generated/android/c++/JAudioRemoteCommandEvent.hpp +8 -3
  109. package/nitrogen/generated/android/c++/JFunc_void_AudioRemoteCommandEvent.hpp +1 -0
  110. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.cpp +37 -3
  111. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.hpp +3 -1
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioPlayOptions.kt +56 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioRemoteCommandEvent.kt +9 -4
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneAudioSpec.kt +40 -32
  115. package/nitrogen/generated/ios/One-Swift-Cxx-Umbrella.hpp +3 -0
  116. package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.hpp +21 -2
  117. package/nitrogen/generated/ios/swift/AudioPlayOptions.swift +60 -0
  118. package/nitrogen/generated/ios/swift/AudioRemoteCommandEvent.swift +19 -1
  119. package/nitrogen/generated/ios/swift/HybridOneAudioSpec.swift +3 -1
  120. package/nitrogen/generated/ios/swift/HybridOneAudioSpec_cxx.swift +70 -32
  121. package/nitrogen/generated/shared/c++/AudioPlayOptions.hpp +87 -0
  122. package/nitrogen/generated/shared/c++/AudioRemoteCommandEvent.hpp +7 -2
  123. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp +2 -0
  124. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.hpp +6 -1
  125. package/package.json +13 -13
  126. package/run.mjs +5 -1
  127. package/src/cli/build.ts +35 -32
  128. package/src/cli/buildPage.test.ts +152 -0
  129. package/src/cli/buildPage.ts +14 -9
  130. package/src/cli/buildPageWorker.ts +2 -1
  131. package/src/cli/workerPool.ts +1 -0
  132. package/src/cli-dev-memory.ts +24 -0
  133. package/src/headless-server.ts +2 -2
  134. package/src/index.ts +1 -0
  135. package/src/platform/audio/index.native.ts +4 -2
  136. package/src/platform/audio/index.ts +102 -74
  137. package/src/platform/audio/nowPlaying.ts +122 -0
  138. package/src/platform/audio/player.native.ts +17 -1
  139. package/src/platform/audio/player.ts +23 -1
  140. package/src/platform/audio/types.ts +6 -1
  141. package/src/platform/audio/unavailable.ts +3 -1
  142. package/src/platform/index.native.ts +1 -0
  143. package/src/platform/index.ts +1 -0
  144. package/src/platform/specs/OneAudio.nitro.ts +11 -1
  145. package/src/serve-worker.ts +2 -3
  146. package/src/server/oneServe.ts +0 -6
  147. package/src/server/workerHandler.ts +34 -18
  148. package/src/vite/plugins/workerdDevPlugin.ts +33 -37
  149. package/src/vite/resolveResponse.ts +2 -2
  150. package/types/cli/build.d.ts.map +1 -1
  151. package/types/cli/buildPage.d.ts +1 -1
  152. package/types/cli/buildPage.d.ts.map +1 -1
  153. package/types/cli/workerPool.d.ts +1 -0
  154. package/types/cli/workerPool.d.ts.map +1 -1
  155. package/types/cli-dev-memory.d.ts +2 -0
  156. package/types/cli-dev-memory.d.ts.map +1 -0
  157. package/types/headless-server.d.ts +3 -3
  158. package/types/headless-server.d.ts.map +1 -1
  159. package/types/index.d.ts +1 -1
  160. package/types/index.d.ts.map +1 -1
  161. package/types/platform/audio/index.d.ts +2 -2
  162. package/types/platform/audio/index.d.ts.map +1 -1
  163. package/types/platform/audio/index.native.d.ts +3 -3
  164. package/types/platform/audio/index.native.d.ts.map +1 -1
  165. package/types/platform/audio/nowPlaying.d.ts +12 -0
  166. package/types/platform/audio/nowPlaying.d.ts.map +1 -0
  167. package/types/platform/audio/player.d.ts +3 -1
  168. package/types/platform/audio/player.d.ts.map +1 -1
  169. package/types/platform/audio/player.native.d.ts +3 -1
  170. package/types/platform/audio/player.native.d.ts.map +1 -1
  171. package/types/platform/audio/types.d.ts +3 -1
  172. package/types/platform/audio/types.d.ts.map +1 -1
  173. package/types/platform/audio/unavailable.d.ts +3 -3
  174. package/types/platform/audio/unavailable.d.ts.map +1 -1
  175. package/types/platform/index.d.ts +1 -1
  176. package/types/platform/index.d.ts.map +1 -1
  177. package/types/platform/index.native.d.ts +1 -1
  178. package/types/platform/index.native.d.ts.map +1 -1
  179. package/types/platform/specs/OneAudio.nitro.d.ts +8 -1
  180. package/types/platform/specs/OneAudio.nitro.d.ts.map +1 -1
  181. package/types/serve-worker.d.ts +3 -3
  182. package/types/serve-worker.d.ts.map +1 -1
  183. package/types/server/oneServe.d.ts.map +1 -1
  184. package/types/server/workerHandler.d.ts +1 -1
  185. package/types/server/workerHandler.d.ts.map +1 -1
  186. package/types/vite/plugins/workerdDevPlugin.d.ts.map +1 -1
  187. package/types/vite/resolveResponse.d.ts +1 -1
  188. package/types/vite/resolveResponse.d.ts.map +1 -1
  189. package/dist/cjs/server/staticHtmlFetcher.cjs +0 -33
  190. package/dist/cjs/server/staticHtmlFetcher.native.cjs +0 -35
  191. package/dist/cjs/server/staticHtmlFetcher.native.js +0 -37
  192. package/dist/cjs/server/staticHtmlFetcher.native.js.map +0 -1
  193. package/dist/esm/server/staticHtmlFetcher.mjs +0 -10
  194. package/dist/esm/server/staticHtmlFetcher.mjs.map +0 -1
  195. package/dist/esm/server/staticHtmlFetcher.native.js +0 -10
  196. package/dist/esm/server/staticHtmlFetcher.native.js.map +0 -1
  197. package/src/server/staticHtmlFetcher.ts +0 -12
  198. package/types/server/staticHtmlFetcher.d.ts +0 -3
  199. package/types/server/staticHtmlFetcher.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nowPlaying.native.js","names":[],"sources":["esm/platform/audio/nowPlaying.native.js"],"sourcesContent":["var listeners = /* @__PURE__ */ new Set();\nvar syncEvents = [\n \"play\",\n \"pause\",\n \"ended\"\n];\nvar owner;\nvar claim = 0;\nvar pendingKey;\nvar installed = false;\nfunction sync() {\n var _navigator_mediaSession;\n if (!owner || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;\n navigator.mediaSession.playbackState = owner.element.paused || owner.element.ended ? \"paused\" : \"playing\";\n}\nfunction setOwner(next) {\n if ((owner === null || owner === void 0 ? void 0 : owner.element) !== (next === null || next === void 0 ? void 0 : next.element)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = syncEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n owner === null || owner === void 0 ? void 0 : owner.element.removeEventListener(event, sync);\n next === null || next === void 0 ? void 0 : next.element.addEventListener(event, sync);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n owner = next;\n}\nasync function remote(event) {\n var _navigator_mediaSession;\n var current = owner;\n if (!current || !((_navigator_mediaSession = navigator.mediaSession) === null || _navigator_mediaSession === void 0 ? void 0 : _navigator_mediaSession.metadata)) return;\n try {\n if (event.type === \"play\") await current.play();\n else if (event.type === \"pause\") await current.pause();\n else await current.seek(event.positionMs);\n } catch (unused) {\n return;\n }\n if (owner !== current) return;\n sync();\n var emitted = current.key === \"global\" ? event : {\n ...event,\n playerId: current.key\n };\n for (var _i = 0, _iter = [\n ...listeners\n ]; _i < _iter.length; _i++) {\n var listener = _iter[_i];\n listener(emitted);\n }\n}\nfunction install(session) {\n if (installed) return;\n session.setActionHandler(\"play\", function() {\n return remote({\n type: \"play\"\n });\n });\n session.setActionHandler(\"pause\", function() {\n return remote({\n type: \"pause\"\n });\n });\n session.setActionHandler(\"seekto\", function(event) {\n var _event_seekTime;\n return remote({\n type: \"seek\",\n positionMs: ((_event_seekTime = event.seekTime) !== null && _event_seekTime !== void 0 ? _event_seekTime : 0) * 1e3\n });\n });\n installed = true;\n}\nasync function claimNowPlaying(next, info, verb, alive) {\n if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`);\n if (!navigator.mediaSession) throw new Error(\"Audio: Media Session is unavailable\");\n var ticket = ++claim;\n pendingKey = next.key;\n if (info.artworkUri) {\n var artwork = new window.Image();\n artwork.src = info.artworkUri;\n await artwork.decode();\n if (!alive()) throw new Error(`${verb}: playback was replaced`);\n if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`);\n }\n if (pendingKey === next.key) pendingKey = void 0;\n var session = navigator.mediaSession;\n setOwner(next);\n session.metadata = new MediaMetadata({\n title: info.title,\n artist: info.artist,\n album: info.albumTitle,\n artwork: info.artworkUri ? [\n {\n src: info.artworkUri\n }\n ] : []\n });\n install(session);\n sync();\n}\nfunction releaseNowPlaying(key) {\n if (pendingKey === key) {\n claim++;\n pendingKey = void 0;\n }\n if ((owner === null || owner === void 0 ? void 0 : owner.key) !== key) return;\n setOwner(void 0);\n if (typeof window === \"undefined\" || !navigator.mediaSession) return;\n var session = navigator.mediaSession;\n if (installed) for (var _i = 0, _iter = [\n \"play\",\n \"pause\",\n \"seekto\"\n ]; _i < _iter.length; _i++) {\n var action = _iter[_i];\n session.setActionHandler(action, null);\n }\n installed = false;\n session.metadata = null;\n session.playbackState = \"none\";\n}\nfunction addRemoteListener(onEvent) {\n listeners.add(onEvent);\n return function() {\n listeners.delete(onEvent);\n };\n}\nexport {\n addRemoteListener,\n claimNowPlaying,\n releaseNowPlaying\n};\n//# sourceMappingURL=nowPlaying.js.map\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createPlayerEvents } from "./events.mjs";
2
+ import { claimNowPlaying, releaseNowPlaying } from "./nowPlaying.mjs";
2
3
  import { assertCrossOrigin, assertFlag, assertPitchQuality, assertRate, assertSeconds, assertTolerance, assertVolume, normalizeSource, rateError, resolveUpdateInterval } from "./validate.mjs";
3
4
 
4
5
  var AudioPlayer = class {
@@ -143,9 +144,23 @@ var AudioPlayer = class {
143
144
  }
144
145
  this.element.load();
145
146
  }
147
+ setNowPlayingInfo(info) {
148
+ this.assertUsable("setNowPlayingInfo");
149
+ return claimNowPlaying({
150
+ key: this.playerId,
151
+ element: this.element,
152
+ play: async () => this.play(),
153
+ pause: async () => this.pause(),
154
+ seek: (positionMs) => this.seekTo(positionMs / 1e3)
155
+ }, info, "AudioPlayer.setNowPlayingInfo", () => !this.removed);
156
+ }
157
+ async clearNowPlayingInfo() {
158
+ releaseNowPlaying(this.playerId);
159
+ }
146
160
  remove() {
147
161
  if (this.removed) return;
148
162
  this.removed = true;
163
+ releaseNowPlaying(this.playerId);
149
164
  this.events.removeAll();
150
165
  this.element.pause();
151
166
  this.element.removeAttribute("src");
@@ -1 +1 @@
1
- {"version":3,"file":"player.js","names":[],"sources":["esm/platform/audio/player.js"],"sourcesContent":["import { createPlayerEvents } from \"./events\";\nimport {\n assertCrossOrigin,\n assertFlag,\n assertPitchQuality,\n assertRate,\n assertSeconds,\n assertTolerance,\n assertVolume,\n normalizeSource,\n rateError,\n resolveUpdateInterval\n} from \"./validate\";\nclass AudioPlayer {\n element;\n playerId;\n removed = false;\n events;\n buffering = false;\n finished = false;\n failure = null;\n // obtain through Audio.createPlayer().\n constructor(element, id, updateIntervalMs) {\n this.element = element;\n this.playerId = id;\n this.events = createPlayerEvents(() => this.getStatus(), updateIntervalMs);\n element.addEventListener(\"waiting\", () => {\n this.buffering = true;\n });\n element.addEventListener(\"playing\", () => {\n this.buffering = false;\n this.failure = null;\n });\n element.addEventListener(\"canplay\", () => {\n this.buffering = false;\n });\n element.addEventListener(\"ended\", () => {\n this.finished = true;\n });\n element.addEventListener(\"error\", () => {\n this.failure = element.error?.message || \"audio playback failed\";\n });\n }\n get id() {\n return this.playerId;\n }\n get currentTime() {\n this.assertUsable(\"currentTime\");\n return this.element.currentTime;\n }\n get duration() {\n this.assertUsable(\"duration\");\n const duration = this.element.duration;\n return Number.isFinite(duration) ? duration : 0;\n }\n get playing() {\n this.assertUsable(\"playing\");\n return !this.element.paused && !this.element.ended;\n }\n get paused() {\n this.assertUsable(\"paused\");\n return this.isLoaded && !this.playing;\n }\n get isLoaded() {\n this.assertUsable(\"isLoaded\");\n return this.element.readyState >= 2;\n }\n get isBuffering() {\n this.assertUsable(\"isBuffering\");\n return this.buffering;\n }\n get isAudioSamplingSupported() {\n return false;\n }\n get loop() {\n this.assertUsable(\"loop\");\n return this.element.loop;\n }\n set loop(value) {\n this.assertUsable(\"loop\");\n assertFlag(value, \"AudioPlayer.loop\");\n this.element.loop = value;\n }\n get muted() {\n this.assertUsable(\"muted\");\n return this.element.muted;\n }\n set muted(value) {\n this.assertUsable(\"muted\");\n assertFlag(value, \"AudioPlayer.muted\");\n this.element.muted = value;\n }\n get volume() {\n this.assertUsable(\"volume\");\n return this.element.volume;\n }\n set volume(value) {\n this.assertUsable(\"volume\");\n assertVolume(value, \"AudioPlayer.volume\");\n this.element.volume = value;\n }\n get playbackRate() {\n this.assertUsable(\"playbackRate\");\n return this.element.playbackRate;\n }\n get shouldCorrectPitch() {\n this.assertUsable(\"shouldCorrectPitch\");\n return this.element.preservesPitch;\n }\n set shouldCorrectPitch(value) {\n this.assertUsable(\"shouldCorrectPitch\");\n assertFlag(value, \"AudioPlayer.shouldCorrectPitch\");\n this.element.preservesPitch = value;\n }\n play() {\n this.assertUsable(\"play\");\n this.finished = false;\n const started = this.element.play();\n if (started && typeof started.catch === \"function\") {\n started.catch((error) => {\n this.failure = error instanceof Error ? error.message : \"audio playback failed\";\n });\n }\n }\n pause() {\n this.assertUsable(\"pause\");\n this.element.pause();\n }\n seekTo(seconds, toleranceMillisBefore, toleranceMillisAfter) {\n this.assertUsable(\"seekTo\");\n assertSeconds(seconds, \"AudioPlayer.seekTo\");\n if (toleranceMillisBefore !== void 0) {\n assertTolerance(toleranceMillisBefore, \"AudioPlayer.seekTo\");\n }\n if (toleranceMillisAfter !== void 0) {\n assertTolerance(toleranceMillisAfter, \"AudioPlayer.seekTo\");\n }\n this.finished = false;\n this.element.currentTime = seconds;\n if (!this.element.seeking) return Promise.resolve();\n return new Promise((resolve) => {\n this.element.addEventListener(\"seeked\", () => resolve(), { once: true });\n });\n }\n replace(source) {\n this.assertUsable(\"replace\");\n const normalized = normalizeSource(source, \"AudioPlayer.replace\");\n this.finished = false;\n this.failure = null;\n if (normalized.uri === void 0) {\n this.element.removeAttribute(\"src\");\n } else {\n this.element.src = normalized.uri;\n }\n this.element.load();\n }\n remove() {\n if (this.removed) return;\n this.removed = true;\n this.events.removeAll();\n this.element.pause();\n this.element.removeAttribute(\"src\");\n this.element.load();\n }\n getStatus() {\n this.assertUsable(\"getStatus\");\n return {\n currentTime: this.currentTime,\n didJustFinish: this.finished,\n duration: this.duration,\n error: this.failure,\n id: this.playerId,\n isBuffering: this.isBuffering,\n isLoaded: this.isLoaded,\n loop: this.loop,\n mute: this.muted,\n playbackRate: this.playbackRate,\n playing: this.playing,\n shouldCorrectPitch: this.shouldCorrectPitch\n };\n }\n setPlaybackRate(rate, pitchCorrectionQuality) {\n this.assertUsable(\"setPlaybackRate\");\n assertRate(rate, \"AudioPlayer.setPlaybackRate\");\n if (pitchCorrectionQuality !== void 0) {\n assertPitchQuality(pitchCorrectionQuality, \"AudioPlayer.setPlaybackRate\");\n }\n if (rate < 0 || rate > 2) throw rateError(\"AudioPlayer.setPlaybackRate\");\n this.element.playbackRate = rate;\n }\n addListener(event, listener) {\n this.assertUsable(\"addListener\");\n return this.events.add(event, listener);\n }\n removeAllListeners() {\n this.events.removeAll();\n }\n assertUsable(verb) {\n if (this.removed) throw new Error(`AudioPlayer.${verb}: the player was removed`);\n }\n}\nfunction createPlayer(source = null, options = {}) {\n const normalized = normalizeSource(source, \"Audio.createPlayer\");\n const updateIntervalMs = resolveUpdateInterval(options, \"Audio.createPlayer\");\n assertCrossOrigin(options.crossOrigin, \"Audio.createPlayer\");\n const element = new Audio();\n element.preload = \"auto\";\n if (options.crossOrigin !== void 0) element.crossOrigin = options.crossOrigin;\n if (normalized.uri !== void 0) element.src = normalized.uri;\n const id = `player-${AudioPlayerId.next++}`;\n return new AudioPlayer(element, id, updateIntervalMs);\n}\nconst AudioPlayerId = { next: 1 };\nexport {\n AudioPlayer,\n createPlayer\n};\n//# sourceMappingURL=player.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"player.js","names":[],"sources":["esm/platform/audio/player.js"],"sourcesContent":["import { createPlayerEvents } from \"./events\";\nimport { claimNowPlaying, releaseNowPlaying } from \"./nowPlaying\";\nimport {\n assertCrossOrigin,\n assertFlag,\n assertPitchQuality,\n assertRate,\n assertSeconds,\n assertTolerance,\n assertVolume,\n normalizeSource,\n rateError,\n resolveUpdateInterval\n} from \"./validate\";\nclass AudioPlayer {\n element;\n playerId;\n removed = false;\n events;\n buffering = false;\n finished = false;\n failure = null;\n // obtain through Audio.createPlayer().\n constructor(element, id, updateIntervalMs) {\n this.element = element;\n this.playerId = id;\n this.events = createPlayerEvents(() => this.getStatus(), updateIntervalMs);\n element.addEventListener(\"waiting\", () => {\n this.buffering = true;\n });\n element.addEventListener(\"playing\", () => {\n this.buffering = false;\n this.failure = null;\n });\n element.addEventListener(\"canplay\", () => {\n this.buffering = false;\n });\n element.addEventListener(\"ended\", () => {\n this.finished = true;\n });\n element.addEventListener(\"error\", () => {\n this.failure = element.error?.message || \"audio playback failed\";\n });\n }\n get id() {\n return this.playerId;\n }\n get currentTime() {\n this.assertUsable(\"currentTime\");\n return this.element.currentTime;\n }\n get duration() {\n this.assertUsable(\"duration\");\n const duration = this.element.duration;\n return Number.isFinite(duration) ? duration : 0;\n }\n get playing() {\n this.assertUsable(\"playing\");\n return !this.element.paused && !this.element.ended;\n }\n get paused() {\n this.assertUsable(\"paused\");\n return this.isLoaded && !this.playing;\n }\n get isLoaded() {\n this.assertUsable(\"isLoaded\");\n return this.element.readyState >= 2;\n }\n get isBuffering() {\n this.assertUsable(\"isBuffering\");\n return this.buffering;\n }\n get isAudioSamplingSupported() {\n return false;\n }\n get loop() {\n this.assertUsable(\"loop\");\n return this.element.loop;\n }\n set loop(value) {\n this.assertUsable(\"loop\");\n assertFlag(value, \"AudioPlayer.loop\");\n this.element.loop = value;\n }\n get muted() {\n this.assertUsable(\"muted\");\n return this.element.muted;\n }\n set muted(value) {\n this.assertUsable(\"muted\");\n assertFlag(value, \"AudioPlayer.muted\");\n this.element.muted = value;\n }\n get volume() {\n this.assertUsable(\"volume\");\n return this.element.volume;\n }\n set volume(value) {\n this.assertUsable(\"volume\");\n assertVolume(value, \"AudioPlayer.volume\");\n this.element.volume = value;\n }\n get playbackRate() {\n this.assertUsable(\"playbackRate\");\n return this.element.playbackRate;\n }\n get shouldCorrectPitch() {\n this.assertUsable(\"shouldCorrectPitch\");\n return this.element.preservesPitch;\n }\n set shouldCorrectPitch(value) {\n this.assertUsable(\"shouldCorrectPitch\");\n assertFlag(value, \"AudioPlayer.shouldCorrectPitch\");\n this.element.preservesPitch = value;\n }\n play() {\n this.assertUsable(\"play\");\n this.finished = false;\n const started = this.element.play();\n if (started && typeof started.catch === \"function\") {\n started.catch((error) => {\n this.failure = error instanceof Error ? error.message : \"audio playback failed\";\n });\n }\n }\n pause() {\n this.assertUsable(\"pause\");\n this.element.pause();\n }\n seekTo(seconds, toleranceMillisBefore, toleranceMillisAfter) {\n this.assertUsable(\"seekTo\");\n assertSeconds(seconds, \"AudioPlayer.seekTo\");\n if (toleranceMillisBefore !== void 0) {\n assertTolerance(toleranceMillisBefore, \"AudioPlayer.seekTo\");\n }\n if (toleranceMillisAfter !== void 0) {\n assertTolerance(toleranceMillisAfter, \"AudioPlayer.seekTo\");\n }\n this.finished = false;\n this.element.currentTime = seconds;\n if (!this.element.seeking) return Promise.resolve();\n return new Promise((resolve) => {\n this.element.addEventListener(\"seeked\", () => resolve(), { once: true });\n });\n }\n replace(source) {\n this.assertUsable(\"replace\");\n const normalized = normalizeSource(source, \"AudioPlayer.replace\");\n this.finished = false;\n this.failure = null;\n if (normalized.uri === void 0) {\n this.element.removeAttribute(\"src\");\n } else {\n this.element.src = normalized.uri;\n }\n this.element.load();\n }\n setNowPlayingInfo(info) {\n this.assertUsable(\"setNowPlayingInfo\");\n return claimNowPlaying(\n {\n key: this.playerId,\n element: this.element,\n play: async () => this.play(),\n pause: async () => this.pause(),\n seek: (positionMs) => this.seekTo(positionMs / 1e3)\n },\n info,\n \"AudioPlayer.setNowPlayingInfo\",\n () => !this.removed\n );\n }\n async clearNowPlayingInfo() {\n releaseNowPlaying(this.playerId);\n }\n remove() {\n if (this.removed) return;\n this.removed = true;\n releaseNowPlaying(this.playerId);\n this.events.removeAll();\n this.element.pause();\n this.element.removeAttribute(\"src\");\n this.element.load();\n }\n getStatus() {\n this.assertUsable(\"getStatus\");\n return {\n currentTime: this.currentTime,\n didJustFinish: this.finished,\n duration: this.duration,\n error: this.failure,\n id: this.playerId,\n isBuffering: this.isBuffering,\n isLoaded: this.isLoaded,\n loop: this.loop,\n mute: this.muted,\n playbackRate: this.playbackRate,\n playing: this.playing,\n shouldCorrectPitch: this.shouldCorrectPitch\n };\n }\n setPlaybackRate(rate, pitchCorrectionQuality) {\n this.assertUsable(\"setPlaybackRate\");\n assertRate(rate, \"AudioPlayer.setPlaybackRate\");\n if (pitchCorrectionQuality !== void 0) {\n assertPitchQuality(pitchCorrectionQuality, \"AudioPlayer.setPlaybackRate\");\n }\n if (rate < 0 || rate > 2) throw rateError(\"AudioPlayer.setPlaybackRate\");\n this.element.playbackRate = rate;\n }\n addListener(event, listener) {\n this.assertUsable(\"addListener\");\n return this.events.add(event, listener);\n }\n removeAllListeners() {\n this.events.removeAll();\n }\n assertUsable(verb) {\n if (this.removed) throw new Error(`AudioPlayer.${verb}: the player was removed`);\n }\n}\nfunction createPlayer(source = null, options = {}) {\n const normalized = normalizeSource(source, \"Audio.createPlayer\");\n const updateIntervalMs = resolveUpdateInterval(options, \"Audio.createPlayer\");\n assertCrossOrigin(options.crossOrigin, \"Audio.createPlayer\");\n const element = new Audio();\n element.preload = \"auto\";\n if (options.crossOrigin !== void 0) element.crossOrigin = options.crossOrigin;\n if (normalized.uri !== void 0) element.src = normalized.uri;\n const id = `player-${AudioPlayerId.next++}`;\n return new AudioPlayer(element, id, updateIntervalMs);\n}\nconst AudioPlayerId = { next: 1 };\nexport {\n AudioPlayer,\n createPlayer\n};\n//# sourceMappingURL=player.js.map\n"],"mappings":"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"}
@@ -210,6 +210,20 @@ var AudioPlayer = /* @__PURE__ */ (function() {
210
210
  });
211
211
  }
212
212
  },
213
+ {
214
+ key: "setNowPlayingInfo",
215
+ value: function setNowPlayingInfo(info) {
216
+ this.assertUsable("setNowPlayingInfo");
217
+ return native().setPlayerNowPlayingInfo(this.playerId, info).catch(rethrowNativeError);
218
+ }
219
+ },
220
+ {
221
+ key: "clearNowPlayingInfo",
222
+ value: function clearNowPlayingInfo() {
223
+ if (this.removed) return Promise.resolve();
224
+ return native().clearPlayerNowPlayingInfo(this.playerId).catch(rethrowNativeError);
225
+ }
226
+ },
213
227
  {
214
228
  key: "remove",
215
229
  value: function remove() {
@@ -1 +1 @@
1
- {"version":3,"file":"player.native.js","names":[],"sources":["esm/platform/audio/player.native.js"],"sourcesContent":["import { rethrowNativeError } from \"../nativeError\";\nimport { createPlayerEvents } from \"./events\";\nimport { audioNative } from \"./hybrid.native\";\nimport { assertCrossOrigin, assertFlag, assertPitchQuality, assertRate, assertSeconds, assertTolerance, assertVolume, normalizeSource, resolveUpdateInterval } from \"./validate\";\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nfunction native() {\n return audioNative();\n}\nfunction sync(work) {\n try {\n return work();\n } catch (error) {\n return rethrowNativeError(error);\n }\n}\nvar AudioPlayer = /* @__PURE__ */ (function() {\n \"use strict\";\n function AudioPlayer2(id, updateIntervalMs) {\n var _this = this;\n _class_call_check(this, AudioPlayer2);\n _define_property(this, \"playerId\", void 0);\n _define_property(this, \"removed\", false);\n _define_property(this, \"events\", void 0);\n this.playerId = id;\n this.events = createPlayerEvents(function() {\n return _this.getStatus();\n }, updateIntervalMs);\n }\n _create_class(AudioPlayer2, [\n {\n key: \"id\",\n get: function get() {\n return this.playerId;\n }\n },\n {\n key: \"currentTime\",\n get: function get() {\n return this.status().currentTime;\n }\n },\n {\n key: \"duration\",\n get: function get() {\n return this.status().duration;\n }\n },\n {\n key: \"playing\",\n get: function get() {\n return this.status().playing;\n }\n },\n {\n key: \"paused\",\n get: function get() {\n return this.status().paused;\n }\n },\n {\n key: \"isLoaded\",\n get: function get() {\n return this.status().isLoaded;\n }\n },\n {\n key: \"isBuffering\",\n get: function get() {\n return this.status().isBuffering;\n }\n },\n {\n key: \"isAudioSamplingSupported\",\n get: function get() {\n return false;\n }\n },\n {\n key: \"loop\",\n get: function get() {\n return this.status().loop;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"loop\");\n assertFlag(value, \"AudioPlayer.loop\");\n sync(function() {\n return native().setPlayerLoop(_this.playerId, value);\n });\n }\n },\n {\n key: \"muted\",\n get: function get() {\n return this.status().muted;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"muted\");\n assertFlag(value, \"AudioPlayer.muted\");\n sync(function() {\n return native().setPlayerMuted(_this.playerId, value);\n });\n }\n },\n {\n key: \"volume\",\n get: function get() {\n return this.status().volume;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"volume\");\n assertVolume(value, \"AudioPlayer.volume\");\n sync(function() {\n return native().setPlayerVolume(_this.playerId, value);\n });\n }\n },\n {\n key: \"playbackRate\",\n get: function get() {\n return this.status().playbackRate;\n }\n },\n {\n key: \"shouldCorrectPitch\",\n get: function get() {\n return this.status().shouldCorrectPitch;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"shouldCorrectPitch\");\n assertFlag(value, \"AudioPlayer.shouldCorrectPitch\");\n sync(function() {\n return native().setPlayerPitchCorrection(_this.playerId, value);\n });\n }\n },\n {\n key: \"play\",\n value: function play() {\n var _this = this;\n this.assertUsable(\"play\");\n sync(function() {\n return native().playerPlay(_this.playerId);\n });\n }\n },\n {\n key: \"pause\",\n value: function pause() {\n var _this = this;\n this.assertUsable(\"pause\");\n sync(function() {\n return native().playerPause(_this.playerId);\n });\n }\n },\n {\n key: \"seekTo\",\n value: function seekTo(seconds, toleranceMillisBefore, toleranceMillisAfter) {\n this.assertUsable(\"seekTo\");\n assertSeconds(seconds, \"AudioPlayer.seekTo\");\n if (toleranceMillisBefore !== void 0) {\n assertTolerance(toleranceMillisBefore, \"AudioPlayer.seekTo\");\n }\n if (toleranceMillisAfter !== void 0) {\n assertTolerance(toleranceMillisAfter, \"AudioPlayer.seekTo\");\n }\n return native().playerSeek(this.playerId, seconds, toleranceMillisBefore, toleranceMillisAfter).catch(rethrowNativeError);\n }\n },\n {\n key: \"replace\",\n value: function replace(source) {\n var _this = this;\n this.assertUsable(\"replace\");\n var normalized = normalizeSource(source, \"AudioPlayer.replace\");\n sync(function() {\n return native().playerReplace(_this.playerId, normalized.uri, normalized.headers);\n });\n }\n },\n {\n key: \"remove\",\n value: function remove() {\n var _this = this;\n if (this.removed) return;\n this.removed = true;\n this.events.removeAll();\n sync(function() {\n return native().removePlayer(_this.playerId);\n });\n }\n },\n {\n key: \"getStatus\",\n value: function getStatus() {\n var _status_error;\n var status = this.status();\n return {\n currentTime: status.currentTime,\n didJustFinish: status.didJustFinish,\n duration: status.duration,\n error: (_status_error = status.error) !== null && _status_error !== void 0 ? _status_error : null,\n id: this.playerId,\n isBuffering: status.isBuffering,\n isLoaded: status.isLoaded,\n loop: status.loop,\n mute: status.muted,\n playbackRate: status.playbackRate,\n playing: status.playing,\n shouldCorrectPitch: status.shouldCorrectPitch\n };\n }\n },\n {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate, pitchCorrectionQuality) {\n var _this = this;\n this.assertUsable(\"setPlaybackRate\");\n assertRate(rate, \"AudioPlayer.setPlaybackRate\");\n if (pitchCorrectionQuality !== void 0) {\n assertPitchQuality(pitchCorrectionQuality, \"AudioPlayer.setPlaybackRate\");\n }\n sync(function() {\n return native().setPlayerRate(_this.playerId, rate, pitchCorrectionQuality);\n });\n }\n },\n {\n key: \"addListener\",\n value: function addListener(event, listener) {\n this.assertUsable(\"addListener\");\n return this.events.add(event, listener);\n }\n },\n {\n key: \"removeAllListeners\",\n value: function removeAllListeners() {\n this.events.removeAll();\n }\n },\n {\n key: \"status\",\n value: function status() {\n var _this = this;\n this.assertUsable(\"status\");\n return sync(function() {\n return native().getPlayerStatus(_this.playerId);\n });\n }\n },\n {\n key: \"assertUsable\",\n value: function assertUsable(verb) {\n if (this.removed) throw new Error(`AudioPlayer.${verb}: the player was removed`);\n }\n }\n ]);\n return AudioPlayer2;\n})();\nfunction createPlayer() {\n var source = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null, options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var normalized = normalizeSource(source, \"Audio.createPlayer\");\n var updateIntervalMs = resolveUpdateInterval(options, \"Audio.createPlayer\");\n assertCrossOrigin(options.crossOrigin, \"Audio.createPlayer\");\n var id = sync(function() {\n return native().createPlayer(normalized.uri, normalized.headers);\n });\n return new AudioPlayer(id, updateIntervalMs);\n}\nexport {\n AudioPlayer,\n createPlayer\n};\n//# sourceMappingURL=player.native.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"player.native.js","names":[],"sources":["esm/platform/audio/player.native.js"],"sourcesContent":["import { rethrowNativeError } from \"../nativeError\";\nimport { createPlayerEvents } from \"./events\";\nimport { audioNative } from \"./hybrid.native\";\nimport { assertCrossOrigin, assertFlag, assertPitchQuality, assertRate, assertSeconds, assertTolerance, assertVolume, normalizeSource, resolveUpdateInterval } from \"./validate\";\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nfunction native() {\n return audioNative();\n}\nfunction sync(work) {\n try {\n return work();\n } catch (error) {\n return rethrowNativeError(error);\n }\n}\nvar AudioPlayer = /* @__PURE__ */ (function() {\n \"use strict\";\n function AudioPlayer2(id, updateIntervalMs) {\n var _this = this;\n _class_call_check(this, AudioPlayer2);\n _define_property(this, \"playerId\", void 0);\n _define_property(this, \"removed\", false);\n _define_property(this, \"events\", void 0);\n this.playerId = id;\n this.events = createPlayerEvents(function() {\n return _this.getStatus();\n }, updateIntervalMs);\n }\n _create_class(AudioPlayer2, [\n {\n key: \"id\",\n get: function get() {\n return this.playerId;\n }\n },\n {\n key: \"currentTime\",\n get: function get() {\n return this.status().currentTime;\n }\n },\n {\n key: \"duration\",\n get: function get() {\n return this.status().duration;\n }\n },\n {\n key: \"playing\",\n get: function get() {\n return this.status().playing;\n }\n },\n {\n key: \"paused\",\n get: function get() {\n return this.status().paused;\n }\n },\n {\n key: \"isLoaded\",\n get: function get() {\n return this.status().isLoaded;\n }\n },\n {\n key: \"isBuffering\",\n get: function get() {\n return this.status().isBuffering;\n }\n },\n {\n key: \"isAudioSamplingSupported\",\n get: function get() {\n return false;\n }\n },\n {\n key: \"loop\",\n get: function get() {\n return this.status().loop;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"loop\");\n assertFlag(value, \"AudioPlayer.loop\");\n sync(function() {\n return native().setPlayerLoop(_this.playerId, value);\n });\n }\n },\n {\n key: \"muted\",\n get: function get() {\n return this.status().muted;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"muted\");\n assertFlag(value, \"AudioPlayer.muted\");\n sync(function() {\n return native().setPlayerMuted(_this.playerId, value);\n });\n }\n },\n {\n key: \"volume\",\n get: function get() {\n return this.status().volume;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"volume\");\n assertVolume(value, \"AudioPlayer.volume\");\n sync(function() {\n return native().setPlayerVolume(_this.playerId, value);\n });\n }\n },\n {\n key: \"playbackRate\",\n get: function get() {\n return this.status().playbackRate;\n }\n },\n {\n key: \"shouldCorrectPitch\",\n get: function get() {\n return this.status().shouldCorrectPitch;\n },\n set: function set(value) {\n var _this = this;\n this.assertUsable(\"shouldCorrectPitch\");\n assertFlag(value, \"AudioPlayer.shouldCorrectPitch\");\n sync(function() {\n return native().setPlayerPitchCorrection(_this.playerId, value);\n });\n }\n },\n {\n key: \"play\",\n value: function play() {\n var _this = this;\n this.assertUsable(\"play\");\n sync(function() {\n return native().playerPlay(_this.playerId);\n });\n }\n },\n {\n key: \"pause\",\n value: function pause() {\n var _this = this;\n this.assertUsable(\"pause\");\n sync(function() {\n return native().playerPause(_this.playerId);\n });\n }\n },\n {\n key: \"seekTo\",\n value: function seekTo(seconds, toleranceMillisBefore, toleranceMillisAfter) {\n this.assertUsable(\"seekTo\");\n assertSeconds(seconds, \"AudioPlayer.seekTo\");\n if (toleranceMillisBefore !== void 0) {\n assertTolerance(toleranceMillisBefore, \"AudioPlayer.seekTo\");\n }\n if (toleranceMillisAfter !== void 0) {\n assertTolerance(toleranceMillisAfter, \"AudioPlayer.seekTo\");\n }\n return native().playerSeek(this.playerId, seconds, toleranceMillisBefore, toleranceMillisAfter).catch(rethrowNativeError);\n }\n },\n {\n key: \"replace\",\n value: function replace(source) {\n var _this = this;\n this.assertUsable(\"replace\");\n var normalized = normalizeSource(source, \"AudioPlayer.replace\");\n sync(function() {\n return native().playerReplace(_this.playerId, normalized.uri, normalized.headers);\n });\n }\n },\n {\n key: \"setNowPlayingInfo\",\n value: function setNowPlayingInfo(info) {\n this.assertUsable(\"setNowPlayingInfo\");\n return native().setPlayerNowPlayingInfo(this.playerId, info).catch(rethrowNativeError);\n }\n },\n {\n // removal already released any claim, so clearing after it is a no-op.\n key: \"clearNowPlayingInfo\",\n value: function clearNowPlayingInfo() {\n if (this.removed) return Promise.resolve();\n return native().clearPlayerNowPlayingInfo(this.playerId).catch(rethrowNativeError);\n }\n },\n {\n key: \"remove\",\n value: function remove() {\n var _this = this;\n if (this.removed) return;\n this.removed = true;\n this.events.removeAll();\n sync(function() {\n return native().removePlayer(_this.playerId);\n });\n }\n },\n {\n key: \"getStatus\",\n value: function getStatus() {\n var _status_error;\n var status = this.status();\n return {\n currentTime: status.currentTime,\n didJustFinish: status.didJustFinish,\n duration: status.duration,\n error: (_status_error = status.error) !== null && _status_error !== void 0 ? _status_error : null,\n id: this.playerId,\n isBuffering: status.isBuffering,\n isLoaded: status.isLoaded,\n loop: status.loop,\n mute: status.muted,\n playbackRate: status.playbackRate,\n playing: status.playing,\n shouldCorrectPitch: status.shouldCorrectPitch\n };\n }\n },\n {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate, pitchCorrectionQuality) {\n var _this = this;\n this.assertUsable(\"setPlaybackRate\");\n assertRate(rate, \"AudioPlayer.setPlaybackRate\");\n if (pitchCorrectionQuality !== void 0) {\n assertPitchQuality(pitchCorrectionQuality, \"AudioPlayer.setPlaybackRate\");\n }\n sync(function() {\n return native().setPlayerRate(_this.playerId, rate, pitchCorrectionQuality);\n });\n }\n },\n {\n key: \"addListener\",\n value: function addListener(event, listener) {\n this.assertUsable(\"addListener\");\n return this.events.add(event, listener);\n }\n },\n {\n key: \"removeAllListeners\",\n value: function removeAllListeners() {\n this.events.removeAll();\n }\n },\n {\n key: \"status\",\n value: function status() {\n var _this = this;\n this.assertUsable(\"status\");\n return sync(function() {\n return native().getPlayerStatus(_this.playerId);\n });\n }\n },\n {\n key: \"assertUsable\",\n value: function assertUsable(verb) {\n if (this.removed) throw new Error(`AudioPlayer.${verb}: the player was removed`);\n }\n }\n ]);\n return AudioPlayer2;\n})();\nfunction createPlayer() {\n var source = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null, options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var normalized = normalizeSource(source, \"Audio.createPlayer\");\n var updateIntervalMs = resolveUpdateInterval(options, \"Audio.createPlayer\");\n assertCrossOrigin(options.crossOrigin, \"Audio.createPlayer\");\n var id = sync(function() {\n return native().createPlayer(normalized.uri, normalized.headers);\n });\n return new AudioPlayer(id, updateIntervalMs);\n}\nexport {\n AudioPlayer,\n createPlayer\n};\n//# sourceMappingURL=player.native.js.map\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { missingNativeBuild } from "../nativeError.mjs";
4
4
  const Audio = Object.freeze({
5
5
  getRecordingPermissionStatus: () => Promise.resolve("denied"),
6
6
  requestRecordingPermission: () => Promise.resolve("denied"),
7
- play: (_uri) => Promise.reject(missingNativeBuild("Audio.play")),
7
+ play: (_uri, _options) => Promise.reject(missingNativeBuild("Audio.play")),
8
8
  getPlaybackStatus: () => Promise.resolve({
9
9
  state: "idle",
10
10
  positionMs: 0
@@ -1 +1 @@
1
- {"version":3,"file":"unavailable.js","names":[],"sources":["esm/platform/audio/unavailable.js"],"sourcesContent":["import { validateCallback } from \"../validateCallback\";\nimport { missingNativeBuild } from \"../nativeError\";\nconst Audio = Object.freeze({\n getRecordingPermissionStatus: () => Promise.resolve(\"denied\"),\n requestRecordingPermission: () => Promise.resolve(\"denied\"),\n play: (_uri) => Promise.reject(missingNativeBuild(\"Audio.play\")),\n getPlaybackStatus: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n pause: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n resume: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n seek: (_positionMs) => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n stop: () => Promise.resolve(),\n startRecording: () => Promise.reject(missingNativeBuild(\"Audio.startRecording\")),\n getRecordingStatus: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n pauseRecording: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n resumeRecording: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n stopRecording: () => Promise.reject(missingNativeBuild(\"Audio.stopRecording\")),\n watchInterruptions: (onEvent) => {\n validateCallback(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return () => {\n };\n },\n setNowPlayingInfo: (_info) => Promise.resolve(),\n clearNowPlayingInfo: () => Promise.resolve(),\n watchRemoteCommands: (onEvent) => {\n validateCallback(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return () => {\n };\n }\n});\nexport {\n Audio\n};\n//# sourceMappingURL=unavailable.js.map\n"],"mappings":";;;;AAEA,MAAM,QAAQ,OAAO,OAAO;CAC1B,oCAAoC,QAAQ,QAAQ,QAAQ;CAC5D,kCAAkC,QAAQ,QAAQ,QAAQ;CAC1D,OAAO,SAAS,QAAQ,OAAO,mBAAmB,YAAY,CAAC;CAC/D,yBAAyB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACzE,aAAa,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC7D,cAAc,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC9D,OAAO,gBAAgB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACvE,YAAY,QAAQ,QAAQ;CAC5B,sBAAsB,QAAQ,OAAO,mBAAmB,sBAAsB,CAAC;CAC/E,0BAA0B,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC1E,sBAAsB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACtE,uBAAuB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACvE,qBAAqB,QAAQ,OAAO,mBAAmB,qBAAqB,CAAC;CAC7E,qBAAqB,YAAY;EAC/B,iBAAiB,SAAS,sDAAsD;EAChF,aAAa,CACb;CACF;CACA,oBAAoB,UAAU,QAAQ,QAAQ;CAC9C,2BAA2B,QAAQ,QAAQ;CAC3C,sBAAsB,YAAY;EAChC,iBAAiB,SAAS,uDAAuD;EACjF,aAAa,CACb;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"unavailable.js","names":[],"sources":["esm/platform/audio/unavailable.js"],"sourcesContent":["import { validateCallback } from \"../validateCallback\";\nimport { missingNativeBuild } from \"../nativeError\";\nconst Audio = Object.freeze({\n getRecordingPermissionStatus: () => Promise.resolve(\"denied\"),\n requestRecordingPermission: () => Promise.resolve(\"denied\"),\n play: (_uri, _options) => Promise.reject(missingNativeBuild(\"Audio.play\")),\n getPlaybackStatus: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n pause: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n resume: () => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n seek: (_positionMs) => Promise.resolve({ state: \"idle\", positionMs: 0 }),\n stop: () => Promise.resolve(),\n startRecording: () => Promise.reject(missingNativeBuild(\"Audio.startRecording\")),\n getRecordingStatus: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n pauseRecording: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n resumeRecording: () => Promise.resolve({ state: \"idle\", durationMs: 0 }),\n stopRecording: () => Promise.reject(missingNativeBuild(\"Audio.stopRecording\")),\n watchInterruptions: (onEvent) => {\n validateCallback(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return () => {\n };\n },\n setNowPlayingInfo: (_info) => Promise.resolve(),\n clearNowPlayingInfo: () => Promise.resolve(),\n watchRemoteCommands: (onEvent) => {\n validateCallback(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return () => {\n };\n }\n});\nexport {\n Audio\n};\n//# sourceMappingURL=unavailable.js.map\n"],"mappings":";;;;AAEA,MAAM,QAAQ,OAAO,OAAO;CAC1B,oCAAoC,QAAQ,QAAQ,QAAQ;CAC5D,kCAAkC,QAAQ,QAAQ,QAAQ;CAC1D,OAAO,MAAM,aAAa,QAAQ,OAAO,mBAAmB,YAAY,CAAC;CACzE,yBAAyB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACzE,aAAa,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC7D,cAAc,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC9D,OAAO,gBAAgB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACvE,YAAY,QAAQ,QAAQ;CAC5B,sBAAsB,QAAQ,OAAO,mBAAmB,sBAAsB,CAAC;CAC/E,0BAA0B,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CAC1E,sBAAsB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACtE,uBAAuB,QAAQ,QAAQ;EAAE,OAAO;EAAQ,YAAY;CAAE,CAAC;CACvE,qBAAqB,QAAQ,OAAO,mBAAmB,qBAAqB,CAAC;CAC7E,qBAAqB,YAAY;EAC/B,iBAAiB,SAAS,sDAAsD;EAChF,aAAa,CACb;CACF;CACA,oBAAoB,UAAU,QAAQ,QAAQ;CAC9C,2BAA2B,QAAQ,QAAQ;CAC3C,sBAAsB,YAAY;EAChC,iBAAiB,SAAS,uDAAuD;EACjF,aAAa,CACb;CACF;AACF,CAAC"}
@@ -8,7 +8,7 @@ var Audio = Object.freeze({
8
8
  requestRecordingPermission: function requestRecordingPermission() {
9
9
  return Promise.resolve("denied");
10
10
  },
11
- play: function play(_uri) {
11
+ play: function play(_uri, _options) {
12
12
  return Promise.reject(missingNativeBuild("Audio.play"));
13
13
  },
14
14
  getPlaybackStatus: function getPlaybackStatus() {
@@ -1 +1 @@
1
- {"version":3,"file":"unavailable.native.js","names":[],"sources":["esm/platform/audio/unavailable.native.js"],"sourcesContent":["import { validateCallback } from \"../validateCallback\";\nimport { missingNativeBuild } from \"../nativeError\";\nvar Audio = Object.freeze({\n getRecordingPermissionStatus: function getRecordingPermissionStatus() {\n return Promise.resolve(\"denied\");\n },\n requestRecordingPermission: function requestRecordingPermission() {\n return Promise.resolve(\"denied\");\n },\n play: function play(_uri) {\n return Promise.reject(missingNativeBuild(\"Audio.play\"));\n },\n getPlaybackStatus: function getPlaybackStatus() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n pause: function pause() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n resume: function resume() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n seek: function seek(_positionMs) {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n stop: function stop() {\n return Promise.resolve();\n },\n startRecording: function startRecording() {\n return Promise.reject(missingNativeBuild(\"Audio.startRecording\"));\n },\n getRecordingStatus: function getRecordingStatus() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n pauseRecording: function pauseRecording() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n resumeRecording: function resumeRecording() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n stopRecording: function stopRecording() {\n return Promise.reject(missingNativeBuild(\"Audio.stopRecording\"));\n },\n watchInterruptions: function watchInterruptions(onEvent) {\n validateCallback(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return function() {\n };\n },\n setNowPlayingInfo: function setNowPlayingInfo(_info) {\n return Promise.resolve();\n },\n clearNowPlayingInfo: function clearNowPlayingInfo() {\n return Promise.resolve();\n },\n watchRemoteCommands: function watchRemoteCommands(onEvent) {\n validateCallback(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return function() {\n };\n }\n});\nexport {\n Audio\n};\n//# sourceMappingURL=unavailable.js.map\n"],"mappings":";;;;AAEA,IAAI,QAAQ,OAAO,OAAO;CACxB,8BAA8B,SAAS,+BAA+B;EACpE,OAAO,QAAQ,QAAQ,QAAQ;CACjC;CACA,4BAA4B,SAAS,6BAA6B;EAChE,OAAO,QAAQ,QAAQ,QAAQ;CACjC;CACA,MAAM,SAAS,KAAK,MAAM;EACxB,OAAO,QAAQ,OAAO,mBAAmB,YAAY,CAAC;CACxD;CACA,mBAAmB,SAAS,oBAAoB;EAC9C,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,OAAO,SAAS,QAAQ;EACtB,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,QAAQ,SAAS,SAAS;EACxB,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,MAAM,SAAS,KAAK,aAAa;EAC/B,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,MAAM,SAAS,OAAO;EACpB,OAAO,QAAQ,QAAQ;CACzB;CACA,gBAAgB,SAAS,iBAAiB;EACxC,OAAO,QAAQ,OAAO,mBAAmB,sBAAsB,CAAC;CAClE;CACA,oBAAoB,SAAS,qBAAqB;EAChD,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,gBAAgB,SAAS,iBAAiB;EACxC,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,iBAAiB,SAAS,kBAAkB;EAC1C,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,eAAe,SAAS,gBAAgB;EACtC,OAAO,QAAQ,OAAO,mBAAmB,qBAAqB,CAAC;CACjE;CACA,oBAAoB,SAAS,mBAAmB,SAAS;EACvD,iBAAiB,SAAS,sDAAsD;EAChF,OAAO,WAAW,CAClB;CACF;CACA,mBAAmB,SAAS,kBAAkB,OAAO;EACnD,OAAO,QAAQ,QAAQ;CACzB;CACA,qBAAqB,SAAS,sBAAsB;EAClD,OAAO,QAAQ,QAAQ;CACzB;CACA,qBAAqB,SAAS,oBAAoB,SAAS;EACzD,iBAAiB,SAAS,uDAAuD;EACjF,OAAO,WAAW,CAClB;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"unavailable.native.js","names":[],"sources":["esm/platform/audio/unavailable.native.js"],"sourcesContent":["import { validateCallback } from \"../validateCallback\";\nimport { missingNativeBuild } from \"../nativeError\";\nvar Audio = Object.freeze({\n getRecordingPermissionStatus: function getRecordingPermissionStatus() {\n return Promise.resolve(\"denied\");\n },\n requestRecordingPermission: function requestRecordingPermission() {\n return Promise.resolve(\"denied\");\n },\n play: function play(_uri, _options) {\n return Promise.reject(missingNativeBuild(\"Audio.play\"));\n },\n getPlaybackStatus: function getPlaybackStatus() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n pause: function pause() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n resume: function resume() {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n seek: function seek(_positionMs) {\n return Promise.resolve({\n state: \"idle\",\n positionMs: 0\n });\n },\n stop: function stop() {\n return Promise.resolve();\n },\n startRecording: function startRecording() {\n return Promise.reject(missingNativeBuild(\"Audio.startRecording\"));\n },\n getRecordingStatus: function getRecordingStatus() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n pauseRecording: function pauseRecording() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n resumeRecording: function resumeRecording() {\n return Promise.resolve({\n state: \"idle\",\n durationMs: 0\n });\n },\n stopRecording: function stopRecording() {\n return Promise.reject(missingNativeBuild(\"Audio.stopRecording\"));\n },\n watchInterruptions: function watchInterruptions(onEvent) {\n validateCallback(onEvent, \"Audio.watchInterruptions: onEvent must be a function\");\n return function() {\n };\n },\n setNowPlayingInfo: function setNowPlayingInfo(_info) {\n return Promise.resolve();\n },\n clearNowPlayingInfo: function clearNowPlayingInfo() {\n return Promise.resolve();\n },\n watchRemoteCommands: function watchRemoteCommands(onEvent) {\n validateCallback(onEvent, \"Audio.watchRemoteCommands: onEvent must be a function\");\n return function() {\n };\n }\n});\nexport {\n Audio\n};\n//# sourceMappingURL=unavailable.js.map\n"],"mappings":";;;;AAEA,IAAI,QAAQ,OAAO,OAAO;CACxB,8BAA8B,SAAS,+BAA+B;EACpE,OAAO,QAAQ,QAAQ,QAAQ;CACjC;CACA,4BAA4B,SAAS,6BAA6B;EAChE,OAAO,QAAQ,QAAQ,QAAQ;CACjC;CACA,MAAM,SAAS,KAAK,MAAM,UAAU;EAClC,OAAO,QAAQ,OAAO,mBAAmB,YAAY,CAAC;CACxD;CACA,mBAAmB,SAAS,oBAAoB;EAC9C,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,OAAO,SAAS,QAAQ;EACtB,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,QAAQ,SAAS,SAAS;EACxB,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,MAAM,SAAS,KAAK,aAAa;EAC/B,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,MAAM,SAAS,OAAO;EACpB,OAAO,QAAQ,QAAQ;CACzB;CACA,gBAAgB,SAAS,iBAAiB;EACxC,OAAO,QAAQ,OAAO,mBAAmB,sBAAsB,CAAC;CAClE;CACA,oBAAoB,SAAS,qBAAqB;EAChD,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,gBAAgB,SAAS,iBAAiB;EACxC,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,iBAAiB,SAAS,kBAAkB;EAC1C,OAAO,QAAQ,QAAQ;GACrB,OAAO;GACP,YAAY;EACd,CAAC;CACH;CACA,eAAe,SAAS,gBAAgB;EACtC,OAAO,QAAQ,OAAO,mBAAmB,qBAAqB,CAAC;CACjE;CACA,oBAAoB,SAAS,mBAAmB,SAAS;EACvD,iBAAiB,SAAS,sDAAsD;EAChF,OAAO,WAAW,CAClB;CACF;CACA,mBAAmB,SAAS,kBAAkB,OAAO;EACnD,OAAO,QAAQ,QAAQ;CACzB;CACA,qBAAqB,SAAS,sBAAsB;EAClD,OAAO,QAAQ,QAAQ;CACzB;CACA,qBAAqB,SAAS,oBAAoB,SAAS;EACzD,iBAAiB,SAAS,uDAAuD;EACjF,OAAO,WAAW,CAClB;CACF;AACF,CAAC"}
@@ -2,7 +2,6 @@ import { setServerGlobals } from "./server/setServerGlobals.mjs";
2
2
  import { setupBuildInfo } from "./server/setupBuildOptions.mjs";
3
3
  import { createWorkerHandler } from "./server/workerHandler.mjs";
4
4
  import { ensureExists } from "./utils/ensureExists.mjs";
5
- import { getFetchStaticHtml, setFetchStaticHtml } from "./server/staticHtmlFetcher.mjs";
6
5
  import { withRange } from "./server/assetRange.mjs";
7
6
 
8
7
  async function serve(buildInfo, lazyRoutes, serveOptions) {
@@ -24,5 +23,5 @@ async function serve(buildInfo, lazyRoutes, serveOptions) {
24
23
  };
25
24
  }
26
25
 
27
- export { getFetchStaticHtml, serve, setFetchStaticHtml, withRange };
26
+ export { serve, withRange };
28
27
  //# sourceMappingURL=serve-worker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve-worker.js","names":[],"sources":["esm/serve-worker.js"],"sourcesContent":["import { setServerGlobals } from \"./server/setServerGlobals\";\nimport { setupBuildInfo } from \"./server/setupBuildOptions\";\nimport { createWorkerHandler } from \"./server/workerHandler\";\nimport { ensureExists } from \"./utils/ensureExists\";\nimport { getFetchStaticHtml, setFetchStaticHtml } from \"./server/staticHtmlFetcher\";\nimport { withRange } from \"./server/assetRange\";\nasync function serve(buildInfo, lazyRoutes, serveOptions) {\n setupBuildInfo(buildInfo);\n ensureExists(buildInfo.oneOptions);\n setServerGlobals();\n const handler = createWorkerHandler({\n oneOptions: buildInfo.oneOptions,\n buildInfo,\n lazyRoutes,\n disableModuleCache: serveOptions?.disableModuleCache\n });\n return {\n fetch: handler.handleRequest,\n updateRoutes(newBuildInfo, newLazyRoutes) {\n setupBuildInfo(newBuildInfo);\n handler.updateRoutes(newBuildInfo, newLazyRoutes);\n }\n };\n}\nexport {\n getFetchStaticHtml,\n serve,\n setFetchStaticHtml,\n withRange\n};\n//# sourceMappingURL=serve-worker.js.map\n"],"mappings":";;;;;;;;AAMA,eAAe,MAAM,WAAW,YAAY,cAAc;CACxD,eAAe,SAAS;CACxB,aAAa,UAAU,UAAU;CACjC,iBAAiB;CACjB,MAAM,UAAU,oBAAoB;EAClC,YAAY,UAAU;EACtB;EACA;EACA,oBAAoB,cAAc;CACpC,CAAC;CACD,OAAO;EACL,OAAO,QAAQ;EACf,aAAa,cAAc,eAAe;GACxC,eAAe,YAAY;GAC3B,QAAQ,aAAa,cAAc,aAAa;EAClD;CACF;AACF"}
1
+ {"version":3,"file":"serve-worker.js","names":[],"sources":["esm/serve-worker.js"],"sourcesContent":["import { setServerGlobals } from \"./server/setServerGlobals\";\nimport { setupBuildInfo } from \"./server/setupBuildOptions\";\nimport { createWorkerHandler } from \"./server/workerHandler\";\nimport { ensureExists } from \"./utils/ensureExists\";\nimport { withRange } from \"./server/assetRange\";\nasync function serve(buildInfo, lazyRoutes, serveOptions) {\n setupBuildInfo(buildInfo);\n ensureExists(buildInfo.oneOptions);\n setServerGlobals();\n const handler = createWorkerHandler({\n oneOptions: buildInfo.oneOptions,\n buildInfo,\n lazyRoutes,\n disableModuleCache: serveOptions?.disableModuleCache\n });\n return {\n fetch: handler.handleRequest,\n updateRoutes(newBuildInfo, newLazyRoutes) {\n setupBuildInfo(newBuildInfo);\n handler.updateRoutes(newBuildInfo, newLazyRoutes);\n }\n };\n}\nexport {\n serve,\n withRange\n};\n//# sourceMappingURL=serve-worker.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,MAAM,WAAW,YAAY,cAAc;CACxD,eAAe,SAAS;CACxB,aAAa,UAAU,UAAU;CACjC,iBAAiB;CACjB,MAAM,UAAU,oBAAoB;EAClC,YAAY,UAAU;EACtB;EACA;EACA,oBAAoB,cAAc;CACpC,CAAC;CACD,OAAO;EACL,OAAO,QAAQ;EACf,aAAa,cAAc,eAAe;GACxC,eAAe,YAAY;GAC3B,QAAQ,aAAa,cAAc,aAAa;EAClD;CACF;AACF"}
@@ -2,7 +2,6 @@ import { setServerGlobals } from "./server/setServerGlobals.native.js";
2
2
  import { setupBuildInfo } from "./server/setupBuildOptions.native.js";
3
3
  import { createWorkerHandler } from "./server/workerHandler.native.js";
4
4
  import { ensureExists } from "./utils/ensureExists.native.js";
5
- import { getFetchStaticHtml, setFetchStaticHtml } from "./server/staticHtmlFetcher.native.js";
6
5
  import { withRange } from "./server/assetRange.native.js";
7
6
 
8
7
  async function serve(buildInfo, lazyRoutes, serveOptions) {
@@ -24,5 +23,5 @@ async function serve(buildInfo, lazyRoutes, serveOptions) {
24
23
  };
25
24
  }
26
25
 
27
- export { getFetchStaticHtml, serve, setFetchStaticHtml, withRange };
26
+ export { serve, withRange };
28
27
  //# sourceMappingURL=serve-worker.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve-worker.native.js","names":[],"sources":["esm/serve-worker.native.js"],"sourcesContent":["import { setServerGlobals } from \"./server/setServerGlobals\";\nimport { setupBuildInfo } from \"./server/setupBuildOptions\";\nimport { createWorkerHandler } from \"./server/workerHandler\";\nimport { ensureExists } from \"./utils/ensureExists\";\nimport { getFetchStaticHtml, setFetchStaticHtml } from \"./server/staticHtmlFetcher\";\nimport { withRange } from \"./server/assetRange\";\nasync function serve(buildInfo, lazyRoutes, serveOptions) {\n setupBuildInfo(buildInfo);\n ensureExists(buildInfo.oneOptions);\n setServerGlobals();\n var handler = createWorkerHandler({\n oneOptions: buildInfo.oneOptions,\n buildInfo,\n lazyRoutes,\n disableModuleCache: serveOptions === null || serveOptions === void 0 ? void 0 : serveOptions.disableModuleCache\n });\n return {\n fetch: handler.handleRequest,\n updateRoutes(newBuildInfo, newLazyRoutes) {\n setupBuildInfo(newBuildInfo);\n handler.updateRoutes(newBuildInfo, newLazyRoutes);\n }\n };\n}\nexport {\n getFetchStaticHtml,\n serve,\n setFetchStaticHtml,\n withRange\n};\n//# sourceMappingURL=serve-worker.js.map\n"],"mappings":";;;;;;;;AAMA,eAAe,MAAM,WAAW,YAAY,cAAc;CACxD,eAAe,SAAS;CACxB,aAAa,UAAU,UAAU;CACjC,iBAAiB;CACjB,IAAI,UAAU,oBAAoB;EAChC,YAAY,UAAU;EACtB;EACA;EACA,oBAAoB,iBAAiB,QAAQ,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa;CAC/F,CAAC;CACD,OAAO;EACL,OAAO,QAAQ;EACf,aAAa,cAAc,eAAe;GACxC,eAAe,YAAY;GAC3B,QAAQ,aAAa,cAAc,aAAa;EAClD;CACF;AACF"}
1
+ {"version":3,"file":"serve-worker.native.js","names":[],"sources":["esm/serve-worker.native.js"],"sourcesContent":["import { setServerGlobals } from \"./server/setServerGlobals\";\nimport { setupBuildInfo } from \"./server/setupBuildOptions\";\nimport { createWorkerHandler } from \"./server/workerHandler\";\nimport { ensureExists } from \"./utils/ensureExists\";\nimport { withRange } from \"./server/assetRange\";\nasync function serve(buildInfo, lazyRoutes, serveOptions) {\n setupBuildInfo(buildInfo);\n ensureExists(buildInfo.oneOptions);\n setServerGlobals();\n var handler = createWorkerHandler({\n oneOptions: buildInfo.oneOptions,\n buildInfo,\n lazyRoutes,\n disableModuleCache: serveOptions === null || serveOptions === void 0 ? void 0 : serveOptions.disableModuleCache\n });\n return {\n fetch: handler.handleRequest,\n updateRoutes(newBuildInfo, newLazyRoutes) {\n setupBuildInfo(newBuildInfo);\n handler.updateRoutes(newBuildInfo, newLazyRoutes);\n }\n };\n}\nexport {\n serve,\n withRange\n};\n//# sourceMappingURL=serve-worker.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,MAAM,WAAW,YAAY,cAAc;CACxD,eAAe,SAAS;CACxB,aAAa,UAAU,UAAU;CACjC,iBAAiB;CACjB,IAAI,UAAU,oBAAoB;EAChC,YAAY,UAAU;EACtB;EACA;EACA,oBAAoB,iBAAiB,QAAQ,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa;CAC/F,CAAC;CACD,OAAO;EACL,OAAO,QAAQ;EACf,aAAa,cAAc,eAAe;GACxC,eAAe,YAAY;GAC3B,QAAQ,aAAa,cAAc,aAAa;EAClD;CACF;AACF"}
@@ -9,7 +9,6 @@ import { toServerOutputPath } from "../utils/toServerOutputPath.mjs";
9
9
  import { getLoaderSearchSchemas, withLoaderSearchParams } from "../loaderSearchParams.mjs";
10
10
  import { getRouteExportsFromEntry } from "./routeExportsFromEntry.mjs";
11
11
  import { setSSRLoaderData } from "./ssrLoaderData.mjs";
12
- import { getFetchStaticHtml } from "./staticHtmlFetcher.mjs";
13
12
 
14
13
  const debugRouter = process.env.ONE_DEBUG_ROUTER;
15
14
  const MODULE_CACHE_MAX = 500;
@@ -37,11 +36,6 @@ function forwardHeaders(response, context) {
37
36
  });
38
37
  }
39
38
  async function readStaticHtml(htmlPath, outDir = "dist") {
40
- const fetchStaticHtml = getFetchStaticHtml();
41
- if (fetchStaticHtml) {
42
- const html = await fetchStaticHtml(htmlPath);
43
- if (html) return html;
44
- }
45
39
  try {
46
40
  return await readFile(join(`${outDir}/client`, htmlPath), "utf-8");
47
41
  } catch {
@@ -1 +1 @@
1
- {"version":3,"file":"oneServe.js","names":[],"sources":["esm/server/oneServe.js"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { join, posix } from \"node:path\";\nimport {\n CSS_PRELOAD_JS_POSTFIX_REGEX,\n LOADER_JS_POSTFIX_UNCACHED,\n PRELOAD_JS_POSTFIX_REGEX\n} from \"../constants\";\nimport {\n compileManifest,\n getSubdomain,\n getURLfromRequestURL,\n runMiddlewares\n} from \"../createHandleRequest\";\nimport { getPathFromLoaderPath } from \"../utils/cleanUrl\";\nimport { getRouterRootFromOneOptions } from \"../utils/getRouterRootFromOneOptions\";\nimport { toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { toServerOutputPath } from \"../utils/toServerOutputPath\";\nimport {\n getLoaderSearchSchemas,\n withLoaderSearchParams\n} from \"../loaderSearchParams\";\nimport { getRouteExportsFromEntry } from \"./routeExportsFromEntry\";\nimport { setSSRLoaderData } from \"./ssrLoaderData\";\nimport { getFetchStaticHtml } from \"./staticHtmlFetcher\";\nconst debugRouter = process.env.ONE_DEBUG_ROUTER;\nconst MODULE_CACHE_MAX = 500;\nfunction setBounded(map, key, value, max) {\n if (map.has(key)) {\n map.set(key, value);\n return;\n }\n if (map.size >= max) {\n const firstKey = map.keys().next().value;\n if (firstKey !== void 0) map.delete(firstKey);\n }\n map.set(key, value);\n}\nfunction forwardHeaders(response, context) {\n const setCookies = response.headers.getSetCookie?.();\n if (setCookies?.length) {\n for (const cookie of setCookies) {\n context.header(\"set-cookie\", cookie, { append: true });\n }\n }\n response.headers.forEach((value, key) => {\n if (key === \"set-cookie\") return;\n context.header(key, value);\n });\n}\nasync function readStaticHtml(htmlPath, outDir = \"dist\") {\n const fetchStaticHtml = getFetchStaticHtml();\n if (fetchStaticHtml) {\n const html = await fetchStaticHtml(htmlPath);\n if (html) return html;\n }\n try {\n return await readFile(join(`${outDir}/client`, htmlPath), \"utf-8\");\n } catch {\n return null;\n }\n}\nasync function oneServe(oneOptions, buildInfo, app, options) {\n const outDir = buildInfo.outDir || \"dist\";\n const { resolveAPIRoute, resolveLoaderRoute, resolvePageRoute } = await import(\"../createHandleRequest\");\n const { isResponse } = await import(\"../utils/isResponse\");\n const { isStatusRedirect } = await import(\"../utils/isStatus\");\n const { resolveResponse } = await import(\"../vite/resolveResponse\");\n const isAPIRequest = /* @__PURE__ */ new WeakMap();\n const redirects = oneOptions.web?.redirects;\n if (redirects) {\n for (const redirect of redirects) {\n app.get(redirect.source, (context) => {\n const destinationUrl = redirect.destination.replace(/:\\w+/g, (param) => {\n const paramName = param.substring(1);\n return context.req.param(paramName) || \"\";\n });\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${context.req.path} \\u2192 ${destinationUrl}`);\n }\n return context.redirect(destinationUrl, redirect.permanent ? 301 : 302);\n });\n }\n }\n if (!buildInfo) {\n throw new Error(`No build info found, have you run build?`);\n }\n const { routeToBuildInfo, routeMap } = buildInfo;\n function findNearestNotFoundPath(urlPath) {\n let cur = urlPath;\n while (cur) {\n const parent = cur.lastIndexOf(\"/\") > 0 ? cur.slice(0, cur.lastIndexOf(\"/\")) : \"\";\n if (routeMap[`${parent}/+not-found`]) {\n return `${parent}/+not-found`;\n }\n if (!parent) break;\n cur = parent;\n }\n return \"/+not-found\";\n }\n function make404LoaderJs(path, logReason) {\n const nfPath = findNearestNotFoundPath(path);\n if (logReason) {\n console.error(`[one] 404 loader for ${path}: ${logReason}`);\n }\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n const serverOptions = {\n ...oneOptions,\n root: \".\"\n };\n const apiCJS = oneOptions.build?.api?.outputFormat === \"cjs\";\n const routerRoot = getRouterRootFromOneOptions(oneOptions);\n const useStreaming = !process.env.ONE_BUFFERED_SSR;\n const htmlHeaders = { \"content-type\": \"text/html\" };\n const ssrHtmlHeaders = { \"content-type\": \"text/html\", \"cache-control\": \"no-cache\" };\n const loaderCache = /* @__PURE__ */ new Map();\n const moduleImportCache = /* @__PURE__ */ new Map();\n const loaderCacheFnMap = /* @__PURE__ */ new Map();\n const loaderSearchSchemaMap = /* @__PURE__ */ new Map();\n const pendingLoaderResults = /* @__PURE__ */ new Map();\n async function importRouteModule(lazyKey, serverPath) {\n if (lazyKey && options?.lazyRoutes?.pages?.[lazyKey]) {\n return await options.lazyRoutes.pages[lazyKey]();\n }\n if (lazyKey) {\n const entry = await loadServerEntry();\n const exported = await getRouteExportsFromEntry(entry, routerRoot, lazyKey);\n if (exported) return exported;\n }\n return await import(toAbsoluteUrl(toServerOutputPath(serverPath || lazyKey || \"\", outDir)));\n }\n function resolveLoaderSync(serverPath, lazyKey) {\n const cacheKey = lazyKey || serverPath || \"\";\n const cached = loaderCache.get(cacheKey);\n if (cached !== void 0) return cached;\n return (async () => {\n let routeExported;\n if (moduleImportCache.has(cacheKey)) {\n routeExported = moduleImportCache.get(cacheKey);\n } else {\n routeExported = await importRouteModule(lazyKey, serverPath);\n setBounded(moduleImportCache, cacheKey, routeExported, MODULE_CACHE_MAX);\n }\n const loader = routeExported?.loader || null;\n setBounded(loaderCache, cacheKey, loader, MODULE_CACHE_MAX);\n const loaderCacheFn = routeExported?.loaderCache ?? null;\n setBounded(loaderCacheFnMap, cacheKey, loaderCacheFn, MODULE_CACHE_MAX);\n setBounded(\n loaderSearchSchemaMap,\n cacheKey,\n getLoaderSearchSchemas(routeExported),\n MODULE_CACHE_MAX\n );\n return loader;\n })();\n }\n async function importAndRunLoader(routeId, serverPath, lazyKey, requestLoaderProps, withSearchParams = false) {\n if (!serverPath && !lazyKey) {\n return { loaderData: void 0, routeId };\n }\n const cacheMapKey = lazyKey || serverPath || \"\";\n let loaderProps = requestLoaderProps;\n const validateSearch = () => {\n const schemas = withSearchParams && loaderSearchSchemaMap.get(cacheMapKey);\n if (schemas) loaderProps = withLoaderSearchParams(schemas, requestLoaderProps);\n };\n validateSearch();\n const loaderCacheFn = loaderCacheFnMap.get(cacheMapKey);\n let coalFullKey;\n let coalTtl = 0;\n if (loaderCacheFn) {\n const cacheResult = loaderCacheFn(loaderProps?.params, loaderProps?.request);\n const cacheKey = typeof cacheResult === \"string\" ? cacheResult : cacheResult?.key;\n coalTtl = typeof cacheResult === \"string\" ? 0 : cacheResult?.ttl ?? 0;\n if (cacheKey != null) {\n coalFullKey = routeId + \"\\0\" + cacheKey;\n const existing = pendingLoaderResults.get(coalFullKey);\n if (existing && (!existing.expires || Date.now() < existing.expires)) {\n const loaderData = await existing.promise;\n return { loaderData, routeId };\n }\n }\n }\n try {\n const loaderOrPromise = resolveLoaderSync(serverPath, lazyKey);\n const loader = loaderOrPromise instanceof Promise ? await loaderOrPromise : loaderOrPromise;\n if (!loader) {\n return { loaderData: void 0, routeId };\n }\n if (loaderProps === requestLoaderProps) validateSearch();\n if (coalFullKey) {\n const promise = loader(loaderProps);\n const entry = { promise, expires: 0 };\n pendingLoaderResults.set(coalFullKey, entry);\n promise.then(\n () => {\n entry.expires = coalTtl > 0 ? Date.now() + coalTtl : 0;\n if (coalTtl <= 0) {\n Promise.resolve().then(() => pendingLoaderResults.delete(coalFullKey));\n }\n },\n () => {\n pendingLoaderResults.delete(coalFullKey);\n }\n );\n const loaderData2 = await promise;\n return { loaderData: loaderData2, routeId };\n }\n const loaderData = await loader(loaderProps);\n return { loaderData, routeId };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n return { loaderData: void 0, routeId, isEnoent: true };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return { loaderData: void 0, routeId };\n }\n }\n let render = null;\n let renderStream = null;\n let renderLoading = null;\n let entryLoading = null;\n function loadServerEntry() {\n if (!entryLoading) {\n entryLoading = options?.lazyRoutes?.serverEntry ? options.lazyRoutes.serverEntry() : import(toAbsoluteUrl(\n `${serverOptions.root}/${outDir}/server/_virtual_one-entry.${typeof oneOptions.build?.server === \"object\" && oneOptions.build.server.outputFormat === \"cjs\" ? \"c\" : \"\"}js`\n ));\n }\n return entryLoading;\n }\n function ensureRenderLoaded() {\n if (render) return;\n if (renderLoading) return renderLoading;\n renderLoading = (async () => {\n const entry = await loadServerEntry();\n render = entry.default.render;\n renderStream = entry.default.renderStream;\n })();\n return renderLoading;\n }\n const clientDir = join(process.cwd(), outDir, \"client\");\n const requestHandlers = {\n async handleStaticFile(filePath) {\n try {\n const fullPath = join(clientDir, filePath);\n const content = await readFile(fullPath, \"utf-8\");\n return new Response(content, {\n headers: { \"Content-Type\": \"text/javascript\" }\n });\n } catch {\n return null;\n }\n },\n async handleAPI({ route }) {\n if (options?.lazyRoutes?.api?.[route.page]) {\n return await options.lazyRoutes.api[route.page]();\n }\n const fileName = route.page.slice(1).replace(/\\[/g, \"_\").replace(/\\]/g, \"_\");\n const apiFile = posix.join(outDir, \"api\", fileName + (apiCJS ? \".cjs\" : \".js\"));\n return await import(toAbsoluteUrl(apiFile));\n },\n async loadMiddleware(route) {\n if (options?.lazyRoutes?.middlewares?.[route.contextKey]) {\n return await options.lazyRoutes.middlewares[route.contextKey]();\n }\n return await import(toAbsoluteUrl(route.contextKey));\n },\n async handleLoader({ route, loaderProps }) {\n const routeFile = route.routeFile || route.file;\n const serverPath = toServerOutputPath(route.file, outDir);\n let loader;\n try {\n const loaderResult = resolveLoaderSync(serverPath, routeFile);\n loader = loaderResult instanceof Promise ? await loaderResult : loaderResult;\n } catch (err) {\n if (err?.code === \"ERR_MODULE_NOT_FOUND\") {\n return null;\n }\n throw err;\n }\n if (!loader) {\n return null;\n }\n const searchSchemas = route.type === \"ssr\" && loaderSearchSchemaMap.get(routeFile || serverPath);\n if (searchSchemas) loaderProps = withLoaderSearchParams(searchSchemas, loaderProps);\n let json;\n try {\n json = await loader(loaderProps);\n } catch (err) {\n if (err?.code === \"ENOENT\") {\n return make404LoaderJs(\n loaderProps?.path || \"/\",\n `ENOENT ${err?.path || err}`\n );\n }\n throw err;\n }\n if (isResponse(json)) {\n throw json;\n }\n return `export function loader() { return ${JSON.stringify(json)} }`;\n },\n async handlePage({ route, url, loaderProps }) {\n const buildInfo2 = routeToBuildInfo[route.file];\n if (route.type === \"ssr\") {\n if (!buildInfo2) {\n console.error(`Error in route`, route);\n throw new Error(\n `No buildinfo found for ${url}, route: ${route.file}, in keys:\n ${Object.keys(routeToBuildInfo).join(\"\\n \")}`\n );\n }\n try {\n const layoutRoutes = route.layouts || [];\n const layoutLoaderPromises = [];\n const noLoaderResults = [];\n for (const layout of layoutRoutes) {\n const serverPath = layout.loaderServerPath || layout.contextKey;\n const cacheKey = layout.contextKey || serverPath || \"\";\n const cachedLoader = loaderCache.get(cacheKey);\n if (cachedLoader === null) {\n noLoaderResults.push({ loaderData: void 0, routeId: layout.contextKey });\n } else {\n layoutLoaderPromises.push(\n importAndRunLoader(\n layout.contextKey,\n serverPath,\n layout.contextKey,\n loaderProps,\n true\n )\n );\n }\n }\n const pageLoaderPromise = importAndRunLoader(\n route.file,\n buildInfo2.serverJsPath,\n route.file,\n loaderProps,\n true\n );\n let layoutResults;\n let pageResult;\n try {\n if (layoutLoaderPromises.length === 0) {\n layoutResults = noLoaderResults;\n pageResult = await pageLoaderPromise;\n } else {\n const [asyncLayoutResults, pr] = await Promise.all([\n Promise.all(layoutLoaderPromises),\n pageLoaderPromise\n ]);\n layoutResults = [...noLoaderResults, ...asyncLayoutResults];\n pageResult = pr;\n }\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n throw err;\n }\n if (pageResult.isEnoent) {\n const nfPath = findNearestNotFoundPath(loaderProps?.path || \"/\");\n const nfHtml = routeMap[nfPath];\n if (nfHtml) {\n try {\n const html = await readFile(\n join(process.cwd(), `${outDir}/client`, nfHtml),\n \"utf-8\"\n );\n return new Response(html, {\n headers: { \"content-type\": \"text/html\" },\n status: 404\n });\n } catch {\n }\n }\n return new Response(\"404 Not Found\", { status: 404 });\n }\n const matchPathname = loaderProps?.path || \"/\";\n const matchParams = loaderProps?.params || {};\n const matches = new Array(layoutResults.length + 1);\n for (let i = 0; i < layoutResults.length; i++) {\n const result = layoutResults[i];\n matches[i] = {\n routeId: result.routeId,\n pathname: matchPathname,\n params: matchParams,\n loaderData: result.loaderData\n };\n }\n matches[layoutResults.length] = {\n routeId: pageResult.routeId,\n pathname: matchPathname,\n params: matchParams,\n loaderData: pageResult.loaderData\n };\n const loaderData = pageResult.loaderData;\n for (const layout of layoutRoutes) {\n const key = layout.contextKey;\n const loaderFn = loaderCache.get(key);\n if (loaderFn) {\n const result = layoutResults.find((r) => r.routeId === key);\n if (result) {\n setSSRLoaderData(loaderFn, result.loaderData);\n }\n }\n }\n const pageLoaderFn = loaderCache.get(route.file);\n if (pageLoaderFn) {\n setSSRLoaderData(pageLoaderFn, pageResult.loaderData);\n }\n globalThis[\"__vxrnresetState\"]?.();\n const renderProps = {\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || \"/\",\n preloads: buildInfo2.criticalPreloads || buildInfo2.preloads,\n deferredPreloads: buildInfo2.deferredPreloads,\n css: buildInfo2.css,\n cssContents: buildInfo2.cssContents,\n matches\n };\n const _rl = ensureRenderLoaded();\n if (_rl) await _rl;\n const status = route.isNotFound ? 404 : 200;\n const responseHeaders = route.isNotFound ? htmlHeaders : ssrHtmlHeaders;\n if (useStreaming) {\n const stream = await renderStream(renderProps);\n return new Response(stream, {\n headers: responseHeaders,\n status\n });\n }\n const rendered = await render(renderProps);\n return new Response(rendered, {\n headers: responseHeaders,\n status\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(`[one] Error rendering SSR route ${route.file}\n\n${err?.[\"stack\"] ?? err}\n\nurl: ${url}`);\n }\n } else {\n const layoutRoutes = route.layouts || [];\n const needsSpaShell = route.type === \"spa\" && layoutRoutes.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (needsSpaShell) {\n try {\n const layoutResults = await Promise.all(\n layoutRoutes.map((layout) => {\n const serverPath = layout.loaderServerPath || layout.contextKey;\n return importAndRunLoader(\n layout.contextKey,\n serverPath,\n layout.contextKey,\n loaderProps\n );\n })\n );\n const matches = layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n }));\n globalThis[\"__vxrnresetState\"]?.();\n const _rl3 = ensureRenderLoaded();\n if (_rl3) await _rl3;\n const rendered = await render({\n mode: \"spa-shell\",\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n loaderProps,\n path: loaderProps?.path || \"/\",\n preloads: buildInfo2?.criticalPreloads || buildInfo2?.preloads,\n deferredPreloads: buildInfo2?.deferredPreloads,\n css: buildInfo2?.css,\n cssContents: buildInfo2?.cssContents,\n matches\n });\n return new Response(rendered, {\n headers: htmlHeaders,\n status: route.isNotFound ? 404 : 200\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(\n `[one] Error rendering spa-shell for ${route.file}\n${err?.[\"stack\"] ?? err}\nurl: ${url}`\n );\n }\n }\n const isDynamicRoute = Object.keys(route.routeKeys).length > 0;\n const routeCleanPath = route.urlCleanPath.replace(/\\?/g, \"\");\n const notFoundKey = route.isNotFound ? route.page.replace(/\\[([^\\]]+)\\]/g, \":$1\") : null;\n const htmlPath = notFoundKey ? routeMap[notFoundKey] : isDynamicRoute ? routeMap[routeCleanPath] || routeMap[url.pathname] : routeMap[url.pathname] || routeMap[buildInfo2?.cleanPath];\n if (htmlPath) {\n const html = await readStaticHtml(htmlPath, outDir);\n if (html) {\n const headers = new Headers();\n headers.set(\"content-type\", \"text/html\");\n return new Response(html, {\n headers,\n status: route.isNotFound ? 404 : 200\n });\n }\n }\n if (isDynamicRoute) {\n const notFoundRoute = findNearestNotFoundPath(url.pathname);\n const notFoundHtmlPath = routeMap[notFoundRoute];\n if (notFoundHtmlPath) {\n const notFoundHtml = await readStaticHtml(notFoundHtmlPath, outDir);\n if (notFoundHtml) {\n const notFoundMarker = `<script>window.__one404=${JSON.stringify({ originalPath: url.pathname, notFoundPath: notFoundRoute })}</script>`;\n const injectedHtml = notFoundHtml.includes(\"</head>\") ? notFoundHtml.replace(\"</head>\", `${notFoundMarker}</head>`) : notFoundHtml.replace(\"<body\", `${notFoundMarker}<body`);\n const headers = new Headers();\n headers.set(\"content-type\", \"text/html\");\n return new Response(injectedHtml, {\n headers,\n status: 404\n });\n }\n }\n return new Response(\"404 Not Found\", { status: 404 });\n }\n }\n }\n };\n function createHonoHandler(route) {\n const isDynamicOrNotFound = route.page.endsWith(\"/+not-found\") || Object.keys(route.routeKeys).length > 0;\n return async (context, next) => {\n try {\n const request = context.req.raw;\n if (isDynamicOrNotFound) {\n if (options?.serveStaticAssets) {\n const staticAssetResponse = await options.serveStaticAssets({\n context\n });\n if (staticAssetResponse) {\n return await runMiddlewares(\n requestHandlers,\n request,\n route,\n async () => staticAssetResponse\n );\n }\n }\n }\n const reqPath = context.req.path;\n if (reqPath.endsWith(\".js\") || reqPath.endsWith(\".css\")) {\n return next();\n }\n if (route.type === \"ssr\" && !route.middlewares?.length && !reqPath.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n if (debugRouter) {\n console.info(`[one] \\u26A1 ${reqPath} \\u2192 matched page route: ${route.page} (ssr)`);\n }\n const pathname = reqPath;\n const rawUrl = request.url;\n const qIdx = rawUrl.indexOf(\"?\");\n const search = qIdx >= 0 ? rawUrl.slice(qIdx) : \"\";\n const params = {};\n const match = route.compiledRegex.exec(pathname);\n if (match?.groups) {\n for (const [key, value] of Object.entries(match.groups)) {\n const namedKey = route.routeKeys[key];\n params[namedKey] = value;\n }\n }\n const loaderProps = {\n path: pathname,\n search,\n subdomain: getSubdomain(getURLfromRequestURL(request)),\n request,\n params\n };\n const url2 = getURLfromRequestURL(request);\n const response2 = await resolveResponse(async () => {\n try {\n return await requestHandlers.handlePage({\n request,\n route,\n url: url2,\n loaderProps\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n throw err;\n }\n });\n if (response2) {\n if (isResponse(response2)) {\n if (isStatusRedirect(response2.status)) {\n const location = `${response2.headers.get(\"location\") || \"\"}`;\n forwardHeaders(response2, context);\n return context.redirect(location, response2.status);\n }\n return response2;\n }\n return next();\n }\n return next();\n }\n const url = getURLfromRequestURL(request);\n const response = await (() => {\n if (url.pathname.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n const originalUrl = getPathFromLoaderPath(url.pathname);\n if (route.type === \"ssg\" && Object.keys(route.routeKeys).length > 0) {\n if (!routeMap[originalUrl]) {\n return new Response(\n make404LoaderJs(originalUrl, \"ssg route not in routeMap\"),\n {\n headers: { \"Content-Type\": \"text/javascript\" }\n }\n );\n }\n }\n const finalUrl = new URL(originalUrl, url.origin);\n finalUrl.search = url.search;\n const cleanedRequest = new Request(finalUrl, request);\n return resolveLoaderRoute(requestHandlers, cleanedRequest, finalUrl, route);\n }\n switch (route.type) {\n case \"api\": {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${url.pathname} \\u2192 matched API route: ${route.page}`\n );\n }\n return resolveAPIRoute(requestHandlers, request, url, route);\n }\n case \"ssg\":\n case \"spa\":\n case \"ssr\": {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${url.pathname} \\u2192 matched page route: ${route.page} (${route.type})`\n );\n }\n return resolvePageRoute(requestHandlers, request, url, route);\n }\n }\n })();\n if (response) {\n if (isResponse(response)) {\n if (isStatusRedirect(response.status)) {\n const location = `${response.headers.get(\"location\") || \"\"}`;\n forwardHeaders(response, context);\n return context.redirect(location, response.status);\n }\n if (isAPIRequest.get(request)) {\n try {\n if (!response.headers.has(\"cache-control\") && !response.headers.has(\"Cache-Control\")) {\n response.headers.set(\"cache-control\", \"no-store\");\n }\n return response;\n } catch (err) {\n console.info(\n `Error updating cache header on api route \"${context.req.path}\" to no-store, it is ${response.headers.get(\"cache-control\")}, continue`,\n err\n );\n }\n }\n if (!response.headers.has(\"cache-control\") && !response.headers.has(\"Cache-Control\")) {\n if (route.type === \"ssg\" || route.type === \"spa\") {\n response.headers.set(\n \"cache-control\",\n \"public, s-maxage=60, stale-while-revalidate=120\"\n );\n } else {\n response.headers.set(\"cache-control\", \"no-cache\");\n }\n }\n return response;\n }\n return next();\n }\n } catch (err) {\n console.error(` [one] Error handling request: ${err[\"stack\"]}`);\n }\n return next();\n };\n }\n const compiledManifest = compileManifest(buildInfo.manifest);\n for (const route of compiledManifest.apiRoutes) {\n app.get(route.urlPath, createHonoHandler(route));\n app.put(route.urlPath, createHonoHandler(route));\n app.post(route.urlPath, createHonoHandler(route));\n app.delete(route.urlPath, createHonoHandler(route));\n app.patch(route.urlPath, createHonoHandler(route));\n app.options(route.urlPath, createHonoHandler(route));\n if (route.urlPath !== route.urlCleanPath) {\n app.get(route.urlCleanPath, createHonoHandler(route));\n app.put(route.urlCleanPath, createHonoHandler(route));\n app.post(route.urlCleanPath, createHonoHandler(route));\n app.delete(route.urlCleanPath, createHonoHandler(route));\n app.patch(route.urlCleanPath, createHonoHandler(route));\n app.options(route.urlCleanPath, createHonoHandler(route));\n }\n }\n for (const route of compiledManifest.pageRoutes) {\n app.get(route.urlPath, createHonoHandler(route));\n if (route.urlPath !== route.urlCleanPath) {\n app.get(route.urlCleanPath, createHonoHandler(route));\n }\n }\n const { preloads, cssPreloads } = buildInfo;\n app.get(\"*\", async (c, next) => {\n if (PRELOAD_JS_POSTFIX_REGEX.test(c.req.path)) {\n if (!preloads[c.req.path]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(``);\n }\n }\n if (CSS_PRELOAD_JS_POSTFIX_REGEX.test(c.req.path)) {\n if (!cssPreloads?.[c.req.path]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(`export default Promise.resolve()`);\n }\n }\n if (c.req.path.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n const request = c.req.raw;\n const url = getURLfromRequestURL(request);\n const originalUrl = getPathFromLoaderPath(c.req.path);\n for (const route of compiledManifest.pageRoutes) {\n if (route.file === \"\") {\n continue;\n }\n if (!route.compiledRegex.test(originalUrl)) {\n continue;\n }\n if (route.type === \"ssg\" && Object.keys(route.routeKeys).length > 0 && !routeMap[originalUrl]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(make404LoaderJs(originalUrl, \"ssg route not in routeMap\"));\n }\n const loaderRoute = {\n ...route,\n routeFile: route.file,\n // preserve original for lazy route lookup\n file: route.loaderServerPath || c.req.path\n };\n const finalUrl = new URL(originalUrl, url.origin);\n finalUrl.search = url.search;\n const cleanedRequest = new Request(finalUrl, request);\n try {\n const resolved = await resolveLoaderRoute(\n requestHandlers,\n cleanedRequest,\n finalUrl,\n loaderRoute\n );\n return resolved;\n } catch (err) {\n if (err?.code === \"ERR_MODULE_NOT_FOUND\") {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(`export function loader() { return undefined }`);\n }\n console.error(`Error running loader: ${err}`);\n return next();\n }\n }\n }\n return next();\n });\n}\nexport {\n oneServe\n};\n//# sourceMappingURL=oneServe.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"oneServe.js","names":[],"sources":["esm/server/oneServe.js"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { join, posix } from \"node:path\";\nimport {\n CSS_PRELOAD_JS_POSTFIX_REGEX,\n LOADER_JS_POSTFIX_UNCACHED,\n PRELOAD_JS_POSTFIX_REGEX\n} from \"../constants\";\nimport {\n compileManifest,\n getSubdomain,\n getURLfromRequestURL,\n runMiddlewares\n} from \"../createHandleRequest\";\nimport { getPathFromLoaderPath } from \"../utils/cleanUrl\";\nimport { getRouterRootFromOneOptions } from \"../utils/getRouterRootFromOneOptions\";\nimport { toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { toServerOutputPath } from \"../utils/toServerOutputPath\";\nimport {\n getLoaderSearchSchemas,\n withLoaderSearchParams\n} from \"../loaderSearchParams\";\nimport { getRouteExportsFromEntry } from \"./routeExportsFromEntry\";\nimport { setSSRLoaderData } from \"./ssrLoaderData\";\nconst debugRouter = process.env.ONE_DEBUG_ROUTER;\nconst MODULE_CACHE_MAX = 500;\nfunction setBounded(map, key, value, max) {\n if (map.has(key)) {\n map.set(key, value);\n return;\n }\n if (map.size >= max) {\n const firstKey = map.keys().next().value;\n if (firstKey !== void 0) map.delete(firstKey);\n }\n map.set(key, value);\n}\nfunction forwardHeaders(response, context) {\n const setCookies = response.headers.getSetCookie?.();\n if (setCookies?.length) {\n for (const cookie of setCookies) {\n context.header(\"set-cookie\", cookie, { append: true });\n }\n }\n response.headers.forEach((value, key) => {\n if (key === \"set-cookie\") return;\n context.header(key, value);\n });\n}\nasync function readStaticHtml(htmlPath, outDir = \"dist\") {\n try {\n return await readFile(join(`${outDir}/client`, htmlPath), \"utf-8\");\n } catch {\n return null;\n }\n}\nasync function oneServe(oneOptions, buildInfo, app, options) {\n const outDir = buildInfo.outDir || \"dist\";\n const { resolveAPIRoute, resolveLoaderRoute, resolvePageRoute } = await import(\"../createHandleRequest\");\n const { isResponse } = await import(\"../utils/isResponse\");\n const { isStatusRedirect } = await import(\"../utils/isStatus\");\n const { resolveResponse } = await import(\"../vite/resolveResponse\");\n const isAPIRequest = /* @__PURE__ */ new WeakMap();\n const redirects = oneOptions.web?.redirects;\n if (redirects) {\n for (const redirect of redirects) {\n app.get(redirect.source, (context) => {\n const destinationUrl = redirect.destination.replace(/:\\w+/g, (param) => {\n const paramName = param.substring(1);\n return context.req.param(paramName) || \"\";\n });\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${context.req.path} \\u2192 ${destinationUrl}`);\n }\n return context.redirect(destinationUrl, redirect.permanent ? 301 : 302);\n });\n }\n }\n if (!buildInfo) {\n throw new Error(`No build info found, have you run build?`);\n }\n const { routeToBuildInfo, routeMap } = buildInfo;\n function findNearestNotFoundPath(urlPath) {\n let cur = urlPath;\n while (cur) {\n const parent = cur.lastIndexOf(\"/\") > 0 ? cur.slice(0, cur.lastIndexOf(\"/\")) : \"\";\n if (routeMap[`${parent}/+not-found`]) {\n return `${parent}/+not-found`;\n }\n if (!parent) break;\n cur = parent;\n }\n return \"/+not-found\";\n }\n function make404LoaderJs(path, logReason) {\n const nfPath = findNearestNotFoundPath(path);\n if (logReason) {\n console.error(`[one] 404 loader for ${path}: ${logReason}`);\n }\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n const serverOptions = {\n ...oneOptions,\n root: \".\"\n };\n const apiCJS = oneOptions.build?.api?.outputFormat === \"cjs\";\n const routerRoot = getRouterRootFromOneOptions(oneOptions);\n const useStreaming = !process.env.ONE_BUFFERED_SSR;\n const htmlHeaders = { \"content-type\": \"text/html\" };\n const ssrHtmlHeaders = { \"content-type\": \"text/html\", \"cache-control\": \"no-cache\" };\n const loaderCache = /* @__PURE__ */ new Map();\n const moduleImportCache = /* @__PURE__ */ new Map();\n const loaderCacheFnMap = /* @__PURE__ */ new Map();\n const loaderSearchSchemaMap = /* @__PURE__ */ new Map();\n const pendingLoaderResults = /* @__PURE__ */ new Map();\n async function importRouteModule(lazyKey, serverPath) {\n if (lazyKey && options?.lazyRoutes?.pages?.[lazyKey]) {\n return await options.lazyRoutes.pages[lazyKey]();\n }\n if (lazyKey) {\n const entry = await loadServerEntry();\n const exported = await getRouteExportsFromEntry(entry, routerRoot, lazyKey);\n if (exported) return exported;\n }\n return await import(toAbsoluteUrl(toServerOutputPath(serverPath || lazyKey || \"\", outDir)));\n }\n function resolveLoaderSync(serverPath, lazyKey) {\n const cacheKey = lazyKey || serverPath || \"\";\n const cached = loaderCache.get(cacheKey);\n if (cached !== void 0) return cached;\n return (async () => {\n let routeExported;\n if (moduleImportCache.has(cacheKey)) {\n routeExported = moduleImportCache.get(cacheKey);\n } else {\n routeExported = await importRouteModule(lazyKey, serverPath);\n setBounded(moduleImportCache, cacheKey, routeExported, MODULE_CACHE_MAX);\n }\n const loader = routeExported?.loader || null;\n setBounded(loaderCache, cacheKey, loader, MODULE_CACHE_MAX);\n const loaderCacheFn = routeExported?.loaderCache ?? null;\n setBounded(loaderCacheFnMap, cacheKey, loaderCacheFn, MODULE_CACHE_MAX);\n setBounded(\n loaderSearchSchemaMap,\n cacheKey,\n getLoaderSearchSchemas(routeExported),\n MODULE_CACHE_MAX\n );\n return loader;\n })();\n }\n async function importAndRunLoader(routeId, serverPath, lazyKey, requestLoaderProps, withSearchParams = false) {\n if (!serverPath && !lazyKey) {\n return { loaderData: void 0, routeId };\n }\n const cacheMapKey = lazyKey || serverPath || \"\";\n let loaderProps = requestLoaderProps;\n const validateSearch = () => {\n const schemas = withSearchParams && loaderSearchSchemaMap.get(cacheMapKey);\n if (schemas) loaderProps = withLoaderSearchParams(schemas, requestLoaderProps);\n };\n validateSearch();\n const loaderCacheFn = loaderCacheFnMap.get(cacheMapKey);\n let coalFullKey;\n let coalTtl = 0;\n if (loaderCacheFn) {\n const cacheResult = loaderCacheFn(loaderProps?.params, loaderProps?.request);\n const cacheKey = typeof cacheResult === \"string\" ? cacheResult : cacheResult?.key;\n coalTtl = typeof cacheResult === \"string\" ? 0 : cacheResult?.ttl ?? 0;\n if (cacheKey != null) {\n coalFullKey = routeId + \"\\0\" + cacheKey;\n const existing = pendingLoaderResults.get(coalFullKey);\n if (existing && (!existing.expires || Date.now() < existing.expires)) {\n const loaderData = await existing.promise;\n return { loaderData, routeId };\n }\n }\n }\n try {\n const loaderOrPromise = resolveLoaderSync(serverPath, lazyKey);\n const loader = loaderOrPromise instanceof Promise ? await loaderOrPromise : loaderOrPromise;\n if (!loader) {\n return { loaderData: void 0, routeId };\n }\n if (loaderProps === requestLoaderProps) validateSearch();\n if (coalFullKey) {\n const promise = loader(loaderProps);\n const entry = { promise, expires: 0 };\n pendingLoaderResults.set(coalFullKey, entry);\n promise.then(\n () => {\n entry.expires = coalTtl > 0 ? Date.now() + coalTtl : 0;\n if (coalTtl <= 0) {\n Promise.resolve().then(() => pendingLoaderResults.delete(coalFullKey));\n }\n },\n () => {\n pendingLoaderResults.delete(coalFullKey);\n }\n );\n const loaderData2 = await promise;\n return { loaderData: loaderData2, routeId };\n }\n const loaderData = await loader(loaderProps);\n return { loaderData, routeId };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n return { loaderData: void 0, routeId, isEnoent: true };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return { loaderData: void 0, routeId };\n }\n }\n let render = null;\n let renderStream = null;\n let renderLoading = null;\n let entryLoading = null;\n function loadServerEntry() {\n if (!entryLoading) {\n entryLoading = options?.lazyRoutes?.serverEntry ? options.lazyRoutes.serverEntry() : import(toAbsoluteUrl(\n `${serverOptions.root}/${outDir}/server/_virtual_one-entry.${typeof oneOptions.build?.server === \"object\" && oneOptions.build.server.outputFormat === \"cjs\" ? \"c\" : \"\"}js`\n ));\n }\n return entryLoading;\n }\n function ensureRenderLoaded() {\n if (render) return;\n if (renderLoading) return renderLoading;\n renderLoading = (async () => {\n const entry = await loadServerEntry();\n render = entry.default.render;\n renderStream = entry.default.renderStream;\n })();\n return renderLoading;\n }\n const clientDir = join(process.cwd(), outDir, \"client\");\n const requestHandlers = {\n async handleStaticFile(filePath) {\n try {\n const fullPath = join(clientDir, filePath);\n const content = await readFile(fullPath, \"utf-8\");\n return new Response(content, {\n headers: { \"Content-Type\": \"text/javascript\" }\n });\n } catch {\n return null;\n }\n },\n async handleAPI({ route }) {\n if (options?.lazyRoutes?.api?.[route.page]) {\n return await options.lazyRoutes.api[route.page]();\n }\n const fileName = route.page.slice(1).replace(/\\[/g, \"_\").replace(/\\]/g, \"_\");\n const apiFile = posix.join(outDir, \"api\", fileName + (apiCJS ? \".cjs\" : \".js\"));\n return await import(toAbsoluteUrl(apiFile));\n },\n async loadMiddleware(route) {\n if (options?.lazyRoutes?.middlewares?.[route.contextKey]) {\n return await options.lazyRoutes.middlewares[route.contextKey]();\n }\n return await import(toAbsoluteUrl(route.contextKey));\n },\n async handleLoader({ route, loaderProps }) {\n const routeFile = route.routeFile || route.file;\n const serverPath = toServerOutputPath(route.file, outDir);\n let loader;\n try {\n const loaderResult = resolveLoaderSync(serverPath, routeFile);\n loader = loaderResult instanceof Promise ? await loaderResult : loaderResult;\n } catch (err) {\n if (err?.code === \"ERR_MODULE_NOT_FOUND\") {\n return null;\n }\n throw err;\n }\n if (!loader) {\n return null;\n }\n const searchSchemas = route.type === \"ssr\" && loaderSearchSchemaMap.get(routeFile || serverPath);\n if (searchSchemas) loaderProps = withLoaderSearchParams(searchSchemas, loaderProps);\n let json;\n try {\n json = await loader(loaderProps);\n } catch (err) {\n if (err?.code === \"ENOENT\") {\n return make404LoaderJs(\n loaderProps?.path || \"/\",\n `ENOENT ${err?.path || err}`\n );\n }\n throw err;\n }\n if (isResponse(json)) {\n throw json;\n }\n return `export function loader() { return ${JSON.stringify(json)} }`;\n },\n async handlePage({ route, url, loaderProps }) {\n const buildInfo2 = routeToBuildInfo[route.file];\n if (route.type === \"ssr\") {\n if (!buildInfo2) {\n console.error(`Error in route`, route);\n throw new Error(\n `No buildinfo found for ${url}, route: ${route.file}, in keys:\n ${Object.keys(routeToBuildInfo).join(\"\\n \")}`\n );\n }\n try {\n const layoutRoutes = route.layouts || [];\n const layoutLoaderPromises = [];\n const noLoaderResults = [];\n for (const layout of layoutRoutes) {\n const serverPath = layout.loaderServerPath || layout.contextKey;\n const cacheKey = layout.contextKey || serverPath || \"\";\n const cachedLoader = loaderCache.get(cacheKey);\n if (cachedLoader === null) {\n noLoaderResults.push({ loaderData: void 0, routeId: layout.contextKey });\n } else {\n layoutLoaderPromises.push(\n importAndRunLoader(\n layout.contextKey,\n serverPath,\n layout.contextKey,\n loaderProps,\n true\n )\n );\n }\n }\n const pageLoaderPromise = importAndRunLoader(\n route.file,\n buildInfo2.serverJsPath,\n route.file,\n loaderProps,\n true\n );\n let layoutResults;\n let pageResult;\n try {\n if (layoutLoaderPromises.length === 0) {\n layoutResults = noLoaderResults;\n pageResult = await pageLoaderPromise;\n } else {\n const [asyncLayoutResults, pr] = await Promise.all([\n Promise.all(layoutLoaderPromises),\n pageLoaderPromise\n ]);\n layoutResults = [...noLoaderResults, ...asyncLayoutResults];\n pageResult = pr;\n }\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n throw err;\n }\n if (pageResult.isEnoent) {\n const nfPath = findNearestNotFoundPath(loaderProps?.path || \"/\");\n const nfHtml = routeMap[nfPath];\n if (nfHtml) {\n try {\n const html = await readFile(\n join(process.cwd(), `${outDir}/client`, nfHtml),\n \"utf-8\"\n );\n return new Response(html, {\n headers: { \"content-type\": \"text/html\" },\n status: 404\n });\n } catch {\n }\n }\n return new Response(\"404 Not Found\", { status: 404 });\n }\n const matchPathname = loaderProps?.path || \"/\";\n const matchParams = loaderProps?.params || {};\n const matches = new Array(layoutResults.length + 1);\n for (let i = 0; i < layoutResults.length; i++) {\n const result = layoutResults[i];\n matches[i] = {\n routeId: result.routeId,\n pathname: matchPathname,\n params: matchParams,\n loaderData: result.loaderData\n };\n }\n matches[layoutResults.length] = {\n routeId: pageResult.routeId,\n pathname: matchPathname,\n params: matchParams,\n loaderData: pageResult.loaderData\n };\n const loaderData = pageResult.loaderData;\n for (const layout of layoutRoutes) {\n const key = layout.contextKey;\n const loaderFn = loaderCache.get(key);\n if (loaderFn) {\n const result = layoutResults.find((r) => r.routeId === key);\n if (result) {\n setSSRLoaderData(loaderFn, result.loaderData);\n }\n }\n }\n const pageLoaderFn = loaderCache.get(route.file);\n if (pageLoaderFn) {\n setSSRLoaderData(pageLoaderFn, pageResult.loaderData);\n }\n globalThis[\"__vxrnresetState\"]?.();\n const renderProps = {\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || \"/\",\n preloads: buildInfo2.criticalPreloads || buildInfo2.preloads,\n deferredPreloads: buildInfo2.deferredPreloads,\n css: buildInfo2.css,\n cssContents: buildInfo2.cssContents,\n matches\n };\n const _rl = ensureRenderLoaded();\n if (_rl) await _rl;\n const status = route.isNotFound ? 404 : 200;\n const responseHeaders = route.isNotFound ? htmlHeaders : ssrHtmlHeaders;\n if (useStreaming) {\n const stream = await renderStream(renderProps);\n return new Response(stream, {\n headers: responseHeaders,\n status\n });\n }\n const rendered = await render(renderProps);\n return new Response(rendered, {\n headers: responseHeaders,\n status\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(`[one] Error rendering SSR route ${route.file}\n\n${err?.[\"stack\"] ?? err}\n\nurl: ${url}`);\n }\n } else {\n const layoutRoutes = route.layouts || [];\n const needsSpaShell = route.type === \"spa\" && layoutRoutes.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (needsSpaShell) {\n try {\n const layoutResults = await Promise.all(\n layoutRoutes.map((layout) => {\n const serverPath = layout.loaderServerPath || layout.contextKey;\n return importAndRunLoader(\n layout.contextKey,\n serverPath,\n layout.contextKey,\n loaderProps\n );\n })\n );\n const matches = layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n }));\n globalThis[\"__vxrnresetState\"]?.();\n const _rl3 = ensureRenderLoaded();\n if (_rl3) await _rl3;\n const rendered = await render({\n mode: \"spa-shell\",\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n loaderProps,\n path: loaderProps?.path || \"/\",\n preloads: buildInfo2?.criticalPreloads || buildInfo2?.preloads,\n deferredPreloads: buildInfo2?.deferredPreloads,\n css: buildInfo2?.css,\n cssContents: buildInfo2?.cssContents,\n matches\n });\n return new Response(rendered, {\n headers: htmlHeaders,\n status: route.isNotFound ? 404 : 200\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(\n `[one] Error rendering spa-shell for ${route.file}\n${err?.[\"stack\"] ?? err}\nurl: ${url}`\n );\n }\n }\n const isDynamicRoute = Object.keys(route.routeKeys).length > 0;\n const routeCleanPath = route.urlCleanPath.replace(/\\?/g, \"\");\n const notFoundKey = route.isNotFound ? route.page.replace(/\\[([^\\]]+)\\]/g, \":$1\") : null;\n const htmlPath = notFoundKey ? routeMap[notFoundKey] : isDynamicRoute ? routeMap[routeCleanPath] || routeMap[url.pathname] : routeMap[url.pathname] || routeMap[buildInfo2?.cleanPath];\n if (htmlPath) {\n const html = await readStaticHtml(htmlPath, outDir);\n if (html) {\n const headers = new Headers();\n headers.set(\"content-type\", \"text/html\");\n return new Response(html, {\n headers,\n status: route.isNotFound ? 404 : 200\n });\n }\n }\n if (isDynamicRoute) {\n const notFoundRoute = findNearestNotFoundPath(url.pathname);\n const notFoundHtmlPath = routeMap[notFoundRoute];\n if (notFoundHtmlPath) {\n const notFoundHtml = await readStaticHtml(notFoundHtmlPath, outDir);\n if (notFoundHtml) {\n const notFoundMarker = `<script>window.__one404=${JSON.stringify({ originalPath: url.pathname, notFoundPath: notFoundRoute })}</script>`;\n const injectedHtml = notFoundHtml.includes(\"</head>\") ? notFoundHtml.replace(\"</head>\", `${notFoundMarker}</head>`) : notFoundHtml.replace(\"<body\", `${notFoundMarker}<body`);\n const headers = new Headers();\n headers.set(\"content-type\", \"text/html\");\n return new Response(injectedHtml, {\n headers,\n status: 404\n });\n }\n }\n return new Response(\"404 Not Found\", { status: 404 });\n }\n }\n }\n };\n function createHonoHandler(route) {\n const isDynamicOrNotFound = route.page.endsWith(\"/+not-found\") || Object.keys(route.routeKeys).length > 0;\n return async (context, next) => {\n try {\n const request = context.req.raw;\n if (isDynamicOrNotFound) {\n if (options?.serveStaticAssets) {\n const staticAssetResponse = await options.serveStaticAssets({\n context\n });\n if (staticAssetResponse) {\n return await runMiddlewares(\n requestHandlers,\n request,\n route,\n async () => staticAssetResponse\n );\n }\n }\n }\n const reqPath = context.req.path;\n if (reqPath.endsWith(\".js\") || reqPath.endsWith(\".css\")) {\n return next();\n }\n if (route.type === \"ssr\" && !route.middlewares?.length && !reqPath.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n if (debugRouter) {\n console.info(`[one] \\u26A1 ${reqPath} \\u2192 matched page route: ${route.page} (ssr)`);\n }\n const pathname = reqPath;\n const rawUrl = request.url;\n const qIdx = rawUrl.indexOf(\"?\");\n const search = qIdx >= 0 ? rawUrl.slice(qIdx) : \"\";\n const params = {};\n const match = route.compiledRegex.exec(pathname);\n if (match?.groups) {\n for (const [key, value] of Object.entries(match.groups)) {\n const namedKey = route.routeKeys[key];\n params[namedKey] = value;\n }\n }\n const loaderProps = {\n path: pathname,\n search,\n subdomain: getSubdomain(getURLfromRequestURL(request)),\n request,\n params\n };\n const url2 = getURLfromRequestURL(request);\n const response2 = await resolveResponse(async () => {\n try {\n return await requestHandlers.handlePage({\n request,\n route,\n url: url2,\n loaderProps\n });\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n throw err;\n }\n });\n if (response2) {\n if (isResponse(response2)) {\n if (isStatusRedirect(response2.status)) {\n const location = `${response2.headers.get(\"location\") || \"\"}`;\n forwardHeaders(response2, context);\n return context.redirect(location, response2.status);\n }\n return response2;\n }\n return next();\n }\n return next();\n }\n const url = getURLfromRequestURL(request);\n const response = await (() => {\n if (url.pathname.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n const originalUrl = getPathFromLoaderPath(url.pathname);\n if (route.type === \"ssg\" && Object.keys(route.routeKeys).length > 0) {\n if (!routeMap[originalUrl]) {\n return new Response(\n make404LoaderJs(originalUrl, \"ssg route not in routeMap\"),\n {\n headers: { \"Content-Type\": \"text/javascript\" }\n }\n );\n }\n }\n const finalUrl = new URL(originalUrl, url.origin);\n finalUrl.search = url.search;\n const cleanedRequest = new Request(finalUrl, request);\n return resolveLoaderRoute(requestHandlers, cleanedRequest, finalUrl, route);\n }\n switch (route.type) {\n case \"api\": {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${url.pathname} \\u2192 matched API route: ${route.page}`\n );\n }\n return resolveAPIRoute(requestHandlers, request, url, route);\n }\n case \"ssg\":\n case \"spa\":\n case \"ssr\": {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${url.pathname} \\u2192 matched page route: ${route.page} (${route.type})`\n );\n }\n return resolvePageRoute(requestHandlers, request, url, route);\n }\n }\n })();\n if (response) {\n if (isResponse(response)) {\n if (isStatusRedirect(response.status)) {\n const location = `${response.headers.get(\"location\") || \"\"}`;\n forwardHeaders(response, context);\n return context.redirect(location, response.status);\n }\n if (isAPIRequest.get(request)) {\n try {\n if (!response.headers.has(\"cache-control\") && !response.headers.has(\"Cache-Control\")) {\n response.headers.set(\"cache-control\", \"no-store\");\n }\n return response;\n } catch (err) {\n console.info(\n `Error updating cache header on api route \"${context.req.path}\" to no-store, it is ${response.headers.get(\"cache-control\")}, continue`,\n err\n );\n }\n }\n if (!response.headers.has(\"cache-control\") && !response.headers.has(\"Cache-Control\")) {\n if (route.type === \"ssg\" || route.type === \"spa\") {\n response.headers.set(\n \"cache-control\",\n \"public, s-maxage=60, stale-while-revalidate=120\"\n );\n } else {\n response.headers.set(\"cache-control\", \"no-cache\");\n }\n }\n return response;\n }\n return next();\n }\n } catch (err) {\n console.error(` [one] Error handling request: ${err[\"stack\"]}`);\n }\n return next();\n };\n }\n const compiledManifest = compileManifest(buildInfo.manifest);\n for (const route of compiledManifest.apiRoutes) {\n app.get(route.urlPath, createHonoHandler(route));\n app.put(route.urlPath, createHonoHandler(route));\n app.post(route.urlPath, createHonoHandler(route));\n app.delete(route.urlPath, createHonoHandler(route));\n app.patch(route.urlPath, createHonoHandler(route));\n app.options(route.urlPath, createHonoHandler(route));\n if (route.urlPath !== route.urlCleanPath) {\n app.get(route.urlCleanPath, createHonoHandler(route));\n app.put(route.urlCleanPath, createHonoHandler(route));\n app.post(route.urlCleanPath, createHonoHandler(route));\n app.delete(route.urlCleanPath, createHonoHandler(route));\n app.patch(route.urlCleanPath, createHonoHandler(route));\n app.options(route.urlCleanPath, createHonoHandler(route));\n }\n }\n for (const route of compiledManifest.pageRoutes) {\n app.get(route.urlPath, createHonoHandler(route));\n if (route.urlPath !== route.urlCleanPath) {\n app.get(route.urlCleanPath, createHonoHandler(route));\n }\n }\n const { preloads, cssPreloads } = buildInfo;\n app.get(\"*\", async (c, next) => {\n if (PRELOAD_JS_POSTFIX_REGEX.test(c.req.path)) {\n if (!preloads[c.req.path]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(``);\n }\n }\n if (CSS_PRELOAD_JS_POSTFIX_REGEX.test(c.req.path)) {\n if (!cssPreloads?.[c.req.path]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(`export default Promise.resolve()`);\n }\n }\n if (c.req.path.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {\n const request = c.req.raw;\n const url = getURLfromRequestURL(request);\n const originalUrl = getPathFromLoaderPath(c.req.path);\n for (const route of compiledManifest.pageRoutes) {\n if (route.file === \"\") {\n continue;\n }\n if (!route.compiledRegex.test(originalUrl)) {\n continue;\n }\n if (route.type === \"ssg\" && Object.keys(route.routeKeys).length > 0 && !routeMap[originalUrl]) {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(make404LoaderJs(originalUrl, \"ssg route not in routeMap\"));\n }\n const loaderRoute = {\n ...route,\n routeFile: route.file,\n // preserve original for lazy route lookup\n file: route.loaderServerPath || c.req.path\n };\n const finalUrl = new URL(originalUrl, url.origin);\n finalUrl.search = url.search;\n const cleanedRequest = new Request(finalUrl, request);\n try {\n const resolved = await resolveLoaderRoute(\n requestHandlers,\n cleanedRequest,\n finalUrl,\n loaderRoute\n );\n return resolved;\n } catch (err) {\n if (err?.code === \"ERR_MODULE_NOT_FOUND\") {\n c.header(\"Content-Type\", \"text/javascript\");\n c.status(200);\n return c.body(`export function loader() { return undefined }`);\n }\n console.error(`Error running loader: ${err}`);\n return next();\n }\n }\n }\n return next();\n });\n}\nexport {\n oneServe\n};\n//# sourceMappingURL=oneServe.js.map\n"],"mappings":"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"}
@@ -9,7 +9,6 @@ import { toServerOutputPath } from "../utils/toServerOutputPath.native.js";
9
9
  import { getLoaderSearchSchemas, withLoaderSearchParams } from "../loaderSearchParams.native.js";
10
10
  import { getRouteExportsFromEntry } from "./routeExportsFromEntry.native.js";
11
11
  import { setSSRLoaderData } from "./ssrLoaderData.native.js";
12
- import { getFetchStaticHtml } from "./staticHtmlFetcher.native.js";
13
12
 
14
13
  var debugRouter = process.env.ONE_DEBUG_ROUTER;
15
14
  var MODULE_CACHE_MAX = 500;
@@ -56,11 +55,6 @@ function forwardHeaders(response, context) {
56
55
  }
57
56
  async function readStaticHtml(htmlPath) {
58
57
  var outDir = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "dist";
59
- var fetchStaticHtml = getFetchStaticHtml();
60
- if (fetchStaticHtml) {
61
- var html = await fetchStaticHtml(htmlPath);
62
- if (html) return html;
63
- }
64
58
  try {
65
59
  return await readFile(join(`${outDir}/client`, htmlPath), "utf-8");
66
60
  } catch (unused) {