one 2.11.4 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/margelo/nitro/one/HybridOneAudio.kt +309 -124
- package/dist/cjs/cli/build.cjs +31 -33
- package/dist/cjs/cli/build.native.cjs +31 -33
- package/dist/cjs/cli/build.native.js +31 -33
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +11 -7
- package/dist/cjs/cli/buildPage.native.cjs +11 -7
- package/dist/cjs/cli/buildPage.native.js +11 -7
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/cli/buildPageWorker.cjs +1 -1
- package/dist/cjs/cli/buildPageWorker.native.cjs +1 -1
- package/dist/cjs/cli/buildPageWorker.native.js +1 -1
- package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
- package/dist/cjs/headless-server.cjs +2 -5
- package/dist/cjs/headless-server.native.cjs +2 -5
- package/dist/cjs/headless-server.native.js +2 -5
- package/dist/cjs/headless-server.native.js.map +1 -1
- package/dist/cjs/platform/audio/index.cjs +83 -76
- package/dist/cjs/platform/audio/index.native.cjs +2 -2
- package/dist/cjs/platform/audio/index.native.js +2 -2
- package/dist/cjs/platform/audio/index.native.js.map +1 -1
- package/dist/cjs/platform/audio/nowPlaying.cjs +126 -0
- package/dist/cjs/platform/audio/nowPlaying.native.cjs +160 -0
- package/dist/cjs/platform/audio/nowPlaying.native.js +162 -0
- package/dist/cjs/platform/audio/nowPlaying.native.js.map +1 -0
- package/dist/cjs/platform/audio/player.cjs +15 -0
- package/dist/cjs/platform/audio/player.native.cjs +14 -0
- package/dist/cjs/platform/audio/player.native.js +14 -0
- package/dist/cjs/platform/audio/player.native.js.map +1 -1
- package/dist/cjs/platform/audio/unavailable.cjs +1 -1
- package/dist/cjs/platform/audio/unavailable.native.cjs +1 -1
- package/dist/cjs/platform/audio/unavailable.native.js +1 -1
- package/dist/cjs/platform/audio/unavailable.native.js.map +1 -1
- package/dist/cjs/platform/location/index.native.cjs +9 -2
- package/dist/cjs/platform/location/index.native.js +9 -2
- package/dist/cjs/platform/location/index.native.js.map +1 -1
- package/dist/cjs/serve-worker.cjs +0 -3
- package/dist/cjs/serve-worker.native.cjs +0 -3
- package/dist/cjs/serve-worker.native.js +0 -3
- package/dist/cjs/serve-worker.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +0 -6
- package/dist/cjs/server/oneServe.native.cjs +0 -6
- package/dist/cjs/server/oneServe.native.js +0 -6
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/server/workerHandler.cjs +12 -10
- package/dist/cjs/server/workerHandler.native.cjs +14 -10
- package/dist/cjs/server/workerHandler.native.js +14 -10
- package/dist/cjs/server/workerHandler.native.js.map +1 -1
- package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +33 -37
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.cjs +33 -37
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +33 -37
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +31 -33
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +31 -33
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +11 -7
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +11 -7
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/cli/buildPageWorker.mjs +1 -1
- package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
- package/dist/esm/cli/buildPageWorker.native.js +1 -1
- package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
- package/dist/esm/headless-server.mjs +2 -3
- package/dist/esm/headless-server.mjs.map +1 -1
- package/dist/esm/headless-server.native.js +2 -3
- package/dist/esm/headless-server.native.js.map +1 -1
- package/dist/esm/platform/audio/index.mjs +83 -76
- package/dist/esm/platform/audio/index.mjs.map +1 -1
- package/dist/esm/platform/audio/index.native.js +2 -2
- package/dist/esm/platform/audio/index.native.js.map +1 -1
- package/dist/esm/platform/audio/nowPlaying.mjs +102 -0
- package/dist/esm/platform/audio/nowPlaying.mjs.map +1 -0
- package/dist/esm/platform/audio/nowPlaying.native.js +134 -0
- package/dist/esm/platform/audio/nowPlaying.native.js.map +1 -0
- package/dist/esm/platform/audio/player.mjs +15 -0
- package/dist/esm/platform/audio/player.mjs.map +1 -1
- package/dist/esm/platform/audio/player.native.js +14 -0
- package/dist/esm/platform/audio/player.native.js.map +1 -1
- package/dist/esm/platform/audio/unavailable.mjs +1 -1
- package/dist/esm/platform/audio/unavailable.mjs.map +1 -1
- package/dist/esm/platform/audio/unavailable.native.js +1 -1
- package/dist/esm/platform/audio/unavailable.native.js.map +1 -1
- package/dist/esm/platform/location/index.native.js +9 -2
- package/dist/esm/platform/location/index.native.js.map +1 -1
- package/dist/esm/serve-worker.mjs +1 -2
- package/dist/esm/serve-worker.mjs.map +1 -1
- package/dist/esm/serve-worker.native.js +1 -2
- package/dist/esm/serve-worker.native.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +0 -6
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +0 -6
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/server/workerHandler.mjs +12 -10
- package/dist/esm/server/workerHandler.mjs.map +1 -1
- package/dist/esm/server/workerHandler.native.js +14 -10
- package/dist/esm/server/workerHandler.native.js.map +1 -1
- package/dist/esm/vite/plugins/workerdDevPlugin.mjs +33 -37
- package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/workerdDevPlugin.native.js +33 -37
- package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -1
- package/ios/Nitro/HybridOneAudio.swift +309 -96
- package/nitrogen/generated/android/c++/JAudioPlayOptions.hpp +61 -0
- package/nitrogen/generated/android/c++/JAudioRemoteCommandEvent.hpp +8 -3
- package/nitrogen/generated/android/c++/JFunc_void_AudioRemoteCommandEvent.hpp +1 -0
- package/nitrogen/generated/android/c++/JHybridOneAudioSpec.cpp +37 -3
- package/nitrogen/generated/android/c++/JHybridOneAudioSpec.hpp +3 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioPlayOptions.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioRemoteCommandEvent.kt +9 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneAudioSpec.kt +40 -32
- package/nitrogen/generated/ios/One-Swift-Cxx-Umbrella.hpp +3 -0
- package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.hpp +21 -2
- package/nitrogen/generated/ios/swift/AudioPlayOptions.swift +60 -0
- package/nitrogen/generated/ios/swift/AudioRemoteCommandEvent.swift +19 -1
- package/nitrogen/generated/ios/swift/HybridOneAudioSpec.swift +3 -1
- package/nitrogen/generated/ios/swift/HybridOneAudioSpec_cxx.swift +70 -32
- package/nitrogen/generated/shared/c++/AudioPlayOptions.hpp +87 -0
- package/nitrogen/generated/shared/c++/AudioRemoteCommandEvent.hpp +7 -2
- package/nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridOneAudioSpec.hpp +6 -1
- package/package.json +16 -16
- package/src/cli/build.ts +35 -32
- package/src/cli/buildPage.test.ts +152 -0
- package/src/cli/buildPage.ts +14 -9
- package/src/cli/buildPageWorker.ts +2 -1
- package/src/cli/workerPool.ts +1 -0
- package/src/headless-server.ts +2 -2
- package/src/index.ts +1 -0
- package/src/platform/audio/index.native.ts +4 -2
- package/src/platform/audio/index.ts +102 -74
- package/src/platform/audio/nowPlaying.ts +122 -0
- package/src/platform/audio/player.native.ts +17 -1
- package/src/platform/audio/player.ts +23 -1
- package/src/platform/audio/types.ts +6 -1
- package/src/platform/audio/unavailable.ts +3 -1
- package/src/platform/index.native.ts +1 -0
- package/src/platform/index.ts +1 -0
- package/src/platform/location/index.native.ts +14 -3
- package/src/platform/specs/OneAudio.nitro.ts +11 -1
- package/src/serve-worker.ts +2 -3
- package/src/server/oneServe.ts +0 -6
- package/src/server/workerHandler.ts +34 -18
- package/src/vite/plugins/workerdDevPlugin.ts +33 -37
- package/src/vite/resolveResponse.ts +2 -2
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/buildPage.d.ts +1 -1
- package/types/cli/buildPage.d.ts.map +1 -1
- package/types/cli/workerPool.d.ts +1 -0
- package/types/cli/workerPool.d.ts.map +1 -1
- package/types/headless-server.d.ts +3 -3
- package/types/headless-server.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/platform/audio/index.d.ts +2 -2
- package/types/platform/audio/index.d.ts.map +1 -1
- package/types/platform/audio/index.native.d.ts +3 -3
- package/types/platform/audio/index.native.d.ts.map +1 -1
- package/types/platform/audio/nowPlaying.d.ts +12 -0
- package/types/platform/audio/nowPlaying.d.ts.map +1 -0
- package/types/platform/audio/player.d.ts +3 -1
- package/types/platform/audio/player.d.ts.map +1 -1
- package/types/platform/audio/player.native.d.ts +3 -1
- package/types/platform/audio/player.native.d.ts.map +1 -1
- package/types/platform/audio/types.d.ts +3 -1
- package/types/platform/audio/types.d.ts.map +1 -1
- package/types/platform/audio/unavailable.d.ts +3 -3
- package/types/platform/audio/unavailable.d.ts.map +1 -1
- package/types/platform/index.d.ts +1 -1
- package/types/platform/index.d.ts.map +1 -1
- package/types/platform/index.native.d.ts +1 -1
- package/types/platform/index.native.d.ts.map +1 -1
- package/types/platform/location/index.native.d.ts.map +1 -1
- package/types/platform/specs/OneAudio.nitro.d.ts +8 -1
- package/types/platform/specs/OneAudio.nitro.d.ts.map +1 -1
- package/types/serve-worker.d.ts +3 -3
- package/types/serve-worker.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/server/workerHandler.d.ts +1 -1
- package/types/server/workerHandler.d.ts.map +1 -1
- package/types/vite/plugins/workerdDevPlugin.d.ts.map +1 -1
- package/types/vite/resolveResponse.d.ts +1 -1
- package/types/vite/resolveResponse.d.ts.map +1 -1
- package/dist/cjs/server/staticHtmlFetcher.cjs +0 -33
- package/dist/cjs/server/staticHtmlFetcher.native.cjs +0 -35
- package/dist/cjs/server/staticHtmlFetcher.native.js +0 -37
- package/dist/cjs/server/staticHtmlFetcher.native.js.map +0 -1
- package/dist/esm/server/staticHtmlFetcher.mjs +0 -10
- package/dist/esm/server/staticHtmlFetcher.mjs.map +0 -1
- package/dist/esm/server/staticHtmlFetcher.native.js +0 -10
- package/dist/esm/server/staticHtmlFetcher.native.js.map +0 -1
- package/src/server/staticHtmlFetcher.ts +0 -12
- package/types/server/staticHtmlFetcher.d.ts +0 -3
- package/types/server/staticHtmlFetcher.d.ts.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { AudioNowPlayingInfo, AudioRemoteCommandEvent } from '../specs/OneAudio.nitro'
|
|
2
|
+
|
|
3
|
+
// the one browser media session, owned by the singleton or by one player
|
|
4
|
+
// instance. a claim moves ownership without clearing the metadata first;
|
|
5
|
+
// owners release only their own claim, so an old owner's cleanup never
|
|
6
|
+
// clears a newer one, and a claim that finishes after a newer claim or
|
|
7
|
+
// release (slow artwork) rejects instead of taking ownership back.
|
|
8
|
+
|
|
9
|
+
export type NowPlayingOwner = {
|
|
10
|
+
// 'global' for the singleton, else the player id.
|
|
11
|
+
key: string
|
|
12
|
+
element: HTMLAudioElement
|
|
13
|
+
play: () => Promise<unknown>
|
|
14
|
+
pause: () => Promise<unknown>
|
|
15
|
+
seek: (positionMs: number) => Promise<unknown>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const listeners = new Set<(event: AudioRemoteCommandEvent) => void>()
|
|
19
|
+
const syncEvents = ['play', 'pause', 'ended'] as const
|
|
20
|
+
let owner: NowPlayingOwner | undefined
|
|
21
|
+
let claim = 0
|
|
22
|
+
let pendingKey: string | undefined
|
|
23
|
+
let installed = false
|
|
24
|
+
|
|
25
|
+
function sync(): void {
|
|
26
|
+
if (!owner || !navigator.mediaSession?.metadata) return
|
|
27
|
+
navigator.mediaSession.playbackState =
|
|
28
|
+
owner.element.paused || owner.element.ended ? 'paused' : 'playing'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function setOwner(next: NowPlayingOwner | undefined): void {
|
|
32
|
+
if (owner?.element !== next?.element) {
|
|
33
|
+
for (const event of syncEvents) {
|
|
34
|
+
owner?.element.removeEventListener(event, sync)
|
|
35
|
+
next?.element.addEventListener(event, sync)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
owner = next
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async function remote(event: AudioRemoteCommandEvent): Promise<void> {
|
|
42
|
+
const current = owner
|
|
43
|
+
if (!current || !navigator.mediaSession?.metadata) return
|
|
44
|
+
try {
|
|
45
|
+
if (event.type === 'play') await current.play()
|
|
46
|
+
else if (event.type === 'pause') await current.pause()
|
|
47
|
+
else await current.seek(event.positionMs!)
|
|
48
|
+
} catch {
|
|
49
|
+
// the browser callback has no error channel; failed work emits no success.
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
if (owner !== current) return
|
|
53
|
+
sync()
|
|
54
|
+
const emitted = current.key === 'global' ? event : { ...event, playerId: current.key }
|
|
55
|
+
for (const listener of [...listeners]) listener(emitted)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function install(session: MediaSession): void {
|
|
59
|
+
if (installed) return
|
|
60
|
+
session.setActionHandler('play', () => remote({ type: 'play' }))
|
|
61
|
+
session.setActionHandler('pause', () => remote({ type: 'pause' }))
|
|
62
|
+
session.setActionHandler('seekto', (event) =>
|
|
63
|
+
remote({ type: 'seek', positionMs: (event.seekTime ?? 0) * 1000 })
|
|
64
|
+
)
|
|
65
|
+
installed = true
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export async function claimNowPlaying(
|
|
69
|
+
next: NowPlayingOwner,
|
|
70
|
+
info: AudioNowPlayingInfo,
|
|
71
|
+
verb: string,
|
|
72
|
+
alive: () => boolean
|
|
73
|
+
): Promise<void> {
|
|
74
|
+
if (!info.title.trim()) throw new Error(`${verb}: title must not be empty`)
|
|
75
|
+
if (!navigator.mediaSession) throw new Error('Audio: Media Session is unavailable')
|
|
76
|
+
const ticket = ++claim
|
|
77
|
+
pendingKey = next.key
|
|
78
|
+
if (info.artworkUri) {
|
|
79
|
+
const artwork = new window.Image()
|
|
80
|
+
artwork.src = info.artworkUri
|
|
81
|
+
await artwork.decode()
|
|
82
|
+
if (!alive()) throw new Error(`${verb}: playback was replaced`)
|
|
83
|
+
if (ticket !== claim) throw new Error(`${verb}: now playing was claimed or cleared again`)
|
|
84
|
+
}
|
|
85
|
+
if (pendingKey === next.key) pendingKey = undefined
|
|
86
|
+
const session = navigator.mediaSession
|
|
87
|
+
setOwner(next)
|
|
88
|
+
session.metadata = new MediaMetadata({
|
|
89
|
+
title: info.title,
|
|
90
|
+
artist: info.artist,
|
|
91
|
+
album: info.albumTitle,
|
|
92
|
+
artwork: info.artworkUri ? [{ src: info.artworkUri }] : [],
|
|
93
|
+
})
|
|
94
|
+
install(session)
|
|
95
|
+
sync()
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function releaseNowPlaying(key: string): void {
|
|
99
|
+
if (pendingKey === key) {
|
|
100
|
+
claim++
|
|
101
|
+
pendingKey = undefined
|
|
102
|
+
}
|
|
103
|
+
if (owner?.key !== key) return
|
|
104
|
+
setOwner(undefined)
|
|
105
|
+
if (typeof window === 'undefined' || !navigator.mediaSession) return
|
|
106
|
+
const session = navigator.mediaSession
|
|
107
|
+
if (installed)
|
|
108
|
+
for (const action of ['play', 'pause', 'seekto'] as const)
|
|
109
|
+
session.setActionHandler(action, null)
|
|
110
|
+
installed = false
|
|
111
|
+
session.metadata = null
|
|
112
|
+
session.playbackState = 'none'
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function addRemoteListener(
|
|
116
|
+
onEvent: (event: AudioRemoteCommandEvent) => void
|
|
117
|
+
): () => void {
|
|
118
|
+
listeners.add(onEvent)
|
|
119
|
+
return () => {
|
|
120
|
+
listeners.delete(onEvent)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { rethrowNativeError } from '../nativeError'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
AudioNowPlayingInfo,
|
|
4
|
+
AudioPlayerStatus,
|
|
5
|
+
OneAudio,
|
|
6
|
+
PitchCorrectionQuality,
|
|
7
|
+
} from '../specs/OneAudio.nitro'
|
|
3
8
|
import { createPlayerEvents } from './events'
|
|
4
9
|
import { audioNative } from './hybrid.native'
|
|
5
10
|
import type {
|
|
@@ -155,6 +160,17 @@ export class AudioPlayer implements AudioPlayerShape {
|
|
|
155
160
|
sync(() => native().playerReplace(this.playerId, normalized.uri, normalized.headers))
|
|
156
161
|
}
|
|
157
162
|
|
|
163
|
+
setNowPlayingInfo(info: AudioNowPlayingInfo): Promise<void> {
|
|
164
|
+
this.assertUsable('setNowPlayingInfo')
|
|
165
|
+
return native().setPlayerNowPlayingInfo(this.playerId, info).catch(rethrowNativeError)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// removal already released any claim, so clearing after it is a no-op.
|
|
169
|
+
clearNowPlayingInfo(): Promise<void> {
|
|
170
|
+
if (this.removed) return Promise.resolve()
|
|
171
|
+
return native().clearPlayerNowPlayingInfo(this.playerId).catch(rethrowNativeError)
|
|
172
|
+
}
|
|
173
|
+
|
|
158
174
|
remove(): void {
|
|
159
175
|
if (this.removed) return
|
|
160
176
|
this.removed = true
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { PitchCorrectionQuality } from '../specs/OneAudio.nitro'
|
|
1
|
+
import type { AudioNowPlayingInfo, PitchCorrectionQuality } from '../specs/OneAudio.nitro'
|
|
2
2
|
import { createPlayerEvents } from './events'
|
|
3
|
+
import { claimNowPlaying, releaseNowPlaying } from './nowPlaying'
|
|
3
4
|
import type {
|
|
4
5
|
AudioPlayer as AudioPlayerShape,
|
|
5
6
|
AudioPlayerOptions,
|
|
@@ -195,9 +196,30 @@ export class AudioPlayer implements AudioPlayerShape {
|
|
|
195
196
|
this.element.load()
|
|
196
197
|
}
|
|
197
198
|
|
|
199
|
+
setNowPlayingInfo(info: AudioNowPlayingInfo): Promise<void> {
|
|
200
|
+
this.assertUsable('setNowPlayingInfo')
|
|
201
|
+
return claimNowPlaying(
|
|
202
|
+
{
|
|
203
|
+
key: this.playerId,
|
|
204
|
+
element: this.element,
|
|
205
|
+
play: async () => this.play(),
|
|
206
|
+
pause: async () => this.pause(),
|
|
207
|
+
seek: (positionMs) => this.seekTo(positionMs / 1000),
|
|
208
|
+
},
|
|
209
|
+
info,
|
|
210
|
+
'AudioPlayer.setNowPlayingInfo',
|
|
211
|
+
() => !this.removed
|
|
212
|
+
)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
async clearNowPlayingInfo(): Promise<void> {
|
|
216
|
+
releaseNowPlaying(this.playerId)
|
|
217
|
+
}
|
|
218
|
+
|
|
198
219
|
remove(): void {
|
|
199
220
|
if (this.removed) return
|
|
200
221
|
this.removed = true
|
|
222
|
+
releaseNowPlaying(this.playerId)
|
|
201
223
|
this.events.removeAll()
|
|
202
224
|
this.element.pause()
|
|
203
225
|
this.element.removeAttribute('src')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PitchCorrectionQuality } from '../specs/OneAudio.nitro'
|
|
1
|
+
import type { AudioNowPlayingInfo, PitchCorrectionQuality } from '../specs/OneAudio.nitro'
|
|
2
2
|
|
|
3
3
|
// player instance shapes behind One.Audio, mirroring expo-audio. AudioPlayer
|
|
4
4
|
// is the shared interface both platform classes implement; AudioStatus is
|
|
@@ -58,6 +58,11 @@ export interface AudioPlayer {
|
|
|
58
58
|
toleranceMillisAfter?: number
|
|
59
59
|
) => Promise<void>
|
|
60
60
|
replace: (source: AudioSource) => void
|
|
61
|
+
// take the one now playing session with this metadata, moving it from the
|
|
62
|
+
// singleton or another player without clearing the system controls.
|
|
63
|
+
setNowPlayingInfo: (info: AudioNowPlayingInfo) => Promise<void>
|
|
64
|
+
// release the session when this player owns it; otherwise a no-op.
|
|
65
|
+
clearNowPlayingInfo: () => Promise<void>
|
|
61
66
|
remove: () => void
|
|
62
67
|
getStatus: () => AudioStatus
|
|
63
68
|
setPlaybackRate: (rate: number, pitchCorrectionQuality?: PitchCorrectionQuality) => void
|
|
@@ -2,6 +2,7 @@ import { validateCallback } from '../validateCallback'
|
|
|
2
2
|
import { missingNativeBuild } from '../nativeError'
|
|
3
3
|
import type {
|
|
4
4
|
AudioPlaybackStatus,
|
|
5
|
+
AudioPlayOptions,
|
|
5
6
|
AudioRecordingPermission,
|
|
6
7
|
AudioRecordingResult,
|
|
7
8
|
AudioRecordingStatus,
|
|
@@ -13,6 +14,7 @@ import type {
|
|
|
13
14
|
export type {
|
|
14
15
|
AudioPlaybackState,
|
|
15
16
|
AudioPlaybackStatus,
|
|
17
|
+
AudioPlayOptions,
|
|
16
18
|
AudioRecordingPermission,
|
|
17
19
|
AudioRecordingResult,
|
|
18
20
|
AudioRecordingState,
|
|
@@ -29,7 +31,7 @@ export const Audio = Object.freeze({
|
|
|
29
31
|
Promise.resolve('denied'),
|
|
30
32
|
requestRecordingPermission: (): Promise<AudioRecordingPermission> =>
|
|
31
33
|
Promise.resolve('denied'),
|
|
32
|
-
play: (_uri: string): Promise<AudioPlaybackStatus> =>
|
|
34
|
+
play: (_uri: string, _options?: AudioPlayOptions): Promise<AudioPlaybackStatus> =>
|
|
33
35
|
Promise.reject(missingNativeBuild('Audio.play')),
|
|
34
36
|
getPlaybackStatus: (): Promise<AudioPlaybackStatus> =>
|
|
35
37
|
Promise.resolve({ state: 'idle', positionMs: 0 }),
|
package/src/platform/index.ts
CHANGED
|
@@ -54,9 +54,20 @@ function watchPosition(
|
|
|
54
54
|
onError: (error: LocationWatchError) => void,
|
|
55
55
|
options: { background?: boolean } = {}
|
|
56
56
|
): () => void {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
let active = true
|
|
58
|
+
const remove = native().addPositionListener(
|
|
59
|
+
(position) => {
|
|
60
|
+
if (active) onPosition(position)
|
|
61
|
+
},
|
|
62
|
+
(code, message) => {
|
|
63
|
+
if (active) onError(Object.assign(new Error(message), { code }))
|
|
64
|
+
},
|
|
65
|
+
options.background === true
|
|
66
|
+
)
|
|
67
|
+
return () => {
|
|
68
|
+
active = false
|
|
69
|
+
remove()
|
|
70
|
+
}
|
|
60
71
|
}
|
|
61
72
|
|
|
62
73
|
function geocodeAddress(address: string): Promise<LocationPlace[]> {
|
|
@@ -12,6 +12,13 @@ export interface AudioPlaybackStatus {
|
|
|
12
12
|
error?: string
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
// with either field set, play prepares the item and seeks before any sound,
|
|
16
|
+
// resolving once it is ready at the position.
|
|
17
|
+
export interface AudioPlayOptions {
|
|
18
|
+
positionMs?: number
|
|
19
|
+
paused?: boolean
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
export interface AudioRecordingStatus {
|
|
16
23
|
state: AudioRecordingState
|
|
17
24
|
uri?: string
|
|
@@ -61,12 +68,13 @@ export type AudioRemoteCommandType = 'play' | 'pause' | 'seek'
|
|
|
61
68
|
export interface AudioRemoteCommandEvent {
|
|
62
69
|
type: AudioRemoteCommandType
|
|
63
70
|
positionMs?: number
|
|
71
|
+
playerId?: string
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
export interface OneAudio extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
|
|
67
75
|
getRecordingPermissionStatus(): Promise<AudioRecordingPermission>
|
|
68
76
|
requestRecordingPermission(): Promise<AudioRecordingPermission>
|
|
69
|
-
play(uri: string): Promise<AudioPlaybackStatus>
|
|
77
|
+
play(uri: string, options: AudioPlayOptions): Promise<AudioPlaybackStatus>
|
|
70
78
|
getPlaybackStatus(): Promise<AudioPlaybackStatus>
|
|
71
79
|
pause(): Promise<AudioPlaybackStatus>
|
|
72
80
|
resume(): Promise<AudioPlaybackStatus>
|
|
@@ -92,6 +100,8 @@ export interface OneAudio extends HybridObject<{ ios: 'swift'; android: 'kotlin'
|
|
|
92
100
|
): Promise<void>
|
|
93
101
|
playerReplace(playerId: string, sourceUri?: string, headers?: Record<string, string>): void
|
|
94
102
|
removePlayer(playerId: string): void
|
|
103
|
+
setPlayerNowPlayingInfo(playerId: string, info: AudioNowPlayingInfo): Promise<void>
|
|
104
|
+
clearPlayerNowPlayingInfo(playerId: string): Promise<void>
|
|
95
105
|
getPlayerStatus(playerId: string): AudioPlayerStatus
|
|
96
106
|
setPlayerRate(playerId: string, rate: number, pitchQuality?: PitchCorrectionQuality): void
|
|
97
107
|
setPlayerVolume(playerId: string, volume: number): void
|
package/src/serve-worker.ts
CHANGED
|
@@ -4,8 +4,6 @@ import { createWorkerHandler, type LazyRoutes } from './server/workerHandler'
|
|
|
4
4
|
import { ensureExists } from './utils/ensureExists'
|
|
5
5
|
import type { One } from './vite/types'
|
|
6
6
|
|
|
7
|
-
// re-export static HTML fetcher utilities for worker use
|
|
8
|
-
export { getFetchStaticHtml, setFetchStaticHtml } from './server/staticHtmlFetcher'
|
|
9
7
|
export { withRange } from './server/assetRange'
|
|
10
8
|
|
|
11
9
|
// re-export for use in generated worker code
|
|
@@ -15,7 +13,8 @@ export type { LazyRoutes }
|
|
|
15
13
|
* Creates a fetch handler for edge/worker environments (Cloudflare Workers, service workers, etc.)
|
|
16
14
|
* No Hono dependency — routes are matched dynamically via compiled regexes against a mutable table.
|
|
17
15
|
*
|
|
18
|
-
* @returns `{ fetch, updateRoutes }` — call `fetch(request, env?, ctx?)`
|
|
16
|
+
* @returns `{ fetch, updateRoutes }` — call `fetch(request, env?, ctx?, fetchStaticHtml?)`
|
|
17
|
+
* with a request-scoped static HTML reader when serving SPA or SSG pages.
|
|
19
18
|
* (`env` and `ctx` are forwarded from the worker's fetch handler and surfaced on
|
|
20
19
|
* API route handler contexts as `{ env, executionCtx }`).
|
|
21
20
|
* Call `updateRoutes(newBuildInfo, newLazyRoutes?)` to hot-swap the route table.
|
package/src/server/oneServe.ts
CHANGED
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
} from '../loaderSearchParams'
|
|
29
29
|
import { getRouteExportsFromEntry } from './routeExportsFromEntry'
|
|
30
30
|
import { setSSRLoaderData } from './ssrLoaderData'
|
|
31
|
-
import { getFetchStaticHtml } from './staticHtmlFetcher'
|
|
32
31
|
|
|
33
32
|
const debugRouter = process.env.ONE_DEBUG_ROUTER
|
|
34
33
|
|
|
@@ -64,11 +63,6 @@ function forwardHeaders(response: Response, context: { header: Function }) {
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
async function readStaticHtml(htmlPath: string, outDir = 'dist'): Promise<string | null> {
|
|
67
|
-
const fetchStaticHtml = getFetchStaticHtml()
|
|
68
|
-
if (fetchStaticHtml) {
|
|
69
|
-
const html = await fetchStaticHtml(htmlPath)
|
|
70
|
-
if (html) return html
|
|
71
|
-
}
|
|
72
66
|
try {
|
|
73
67
|
return await readFile(join(`${outDir}/client`, htmlPath), 'utf-8')
|
|
74
68
|
} catch {
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
} from '../loaderSearchParams'
|
|
29
29
|
import { getRouteExportsFromEntry } from './routeExportsFromEntry'
|
|
30
30
|
import { setSSRLoaderData } from './ssrLoaderData'
|
|
31
|
-
import { getFetchStaticHtml } from './staticHtmlFetcher'
|
|
32
31
|
|
|
33
32
|
export type LazyRoutes = {
|
|
34
33
|
pages?: Record<string, () => Promise<any>>
|
|
@@ -160,8 +159,10 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
160
159
|
return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`
|
|
161
160
|
}
|
|
162
161
|
|
|
163
|
-
async function readStaticHtml(
|
|
164
|
-
|
|
162
|
+
async function readStaticHtml(
|
|
163
|
+
htmlPath: string,
|
|
164
|
+
fetchStaticHtml?: (path: string) => Promise<string | null>
|
|
165
|
+
): Promise<string | null> {
|
|
165
166
|
if (fetchStaticHtml) return await fetchStaticHtml(htmlPath)
|
|
166
167
|
if (debugRouter) {
|
|
167
168
|
console.warn(`[one/worker] no fetchStaticHtml set, cannot read ${htmlPath}`)
|
|
@@ -281,7 +282,7 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
281
282
|
}
|
|
282
283
|
|
|
283
284
|
// request handlers - worker-only, always uses lazyRoutes
|
|
284
|
-
const requestHandlers
|
|
285
|
+
const requestHandlers = {
|
|
285
286
|
async handleStaticFile() {
|
|
286
287
|
// workers serve static assets via platform (ASSETS binding)
|
|
287
288
|
return null
|
|
@@ -338,7 +339,14 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
338
339
|
return `export function loader() { return ${JSON.stringify(json)} }`
|
|
339
340
|
},
|
|
340
341
|
|
|
341
|
-
async handlePage(
|
|
342
|
+
async handlePage(
|
|
343
|
+
{
|
|
344
|
+
route,
|
|
345
|
+
url,
|
|
346
|
+
loaderProps,
|
|
347
|
+
}: Parameters<NonNullable<RequestHandlers['handlePage']>>[0],
|
|
348
|
+
fetchStaticHtml?: (path: string) => Promise<string | null>
|
|
349
|
+
) {
|
|
342
350
|
const routeBuildInfo = routeToBuildInfo[route.file]
|
|
343
351
|
|
|
344
352
|
if (route.type === 'ssr') {
|
|
@@ -370,7 +378,12 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
370
378
|
})
|
|
371
379
|
} else {
|
|
372
380
|
layoutLoaderPromises.push(
|
|
373
|
-
importAndRunLoader(
|
|
381
|
+
importAndRunLoader(
|
|
382
|
+
layout.contextKey,
|
|
383
|
+
layout.contextKey,
|
|
384
|
+
loaderProps,
|
|
385
|
+
true
|
|
386
|
+
)
|
|
374
387
|
)
|
|
375
388
|
}
|
|
376
389
|
}
|
|
@@ -415,7 +428,7 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
415
428
|
const nfPath = findNearestNotFoundPath(loaderProps?.path || '/')
|
|
416
429
|
const nfHtml = routeMap?.[nfPath]
|
|
417
430
|
if (nfHtml) {
|
|
418
|
-
const html = await readStaticHtml(nfHtml)
|
|
431
|
+
const html = await readStaticHtml(nfHtml, fetchStaticHtml)
|
|
419
432
|
if (html) {
|
|
420
433
|
return new Response(html, {
|
|
421
434
|
headers: { 'content-type': 'text/html' },
|
|
@@ -564,7 +577,7 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
564
577
|
: routeMap?.[url.pathname] || routeMap?.[routeBuildInfo?.cleanPath]
|
|
565
578
|
|
|
566
579
|
if (htmlPath) {
|
|
567
|
-
const html = await readStaticHtml(htmlPath)
|
|
580
|
+
const html = await readStaticHtml(htmlPath, fetchStaticHtml)
|
|
568
581
|
if (html) {
|
|
569
582
|
return new Response(html, {
|
|
570
583
|
headers: htmlHeaders,
|
|
@@ -579,7 +592,7 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
579
592
|
const notFoundHtmlPath = routeMap?.[notFoundRoute]
|
|
580
593
|
|
|
581
594
|
if (notFoundHtmlPath) {
|
|
582
|
-
const notFoundHtml = await readStaticHtml(notFoundHtmlPath)
|
|
595
|
+
const notFoundHtml = await readStaticHtml(notFoundHtmlPath, fetchStaticHtml)
|
|
583
596
|
if (notFoundHtml) {
|
|
584
597
|
const notFoundMarker = `<script>window.__one404=${JSON.stringify({ originalPath: url.pathname, notFoundPath: notFoundRoute })}</script>`
|
|
585
598
|
const injectedHtml = notFoundHtml.includes('</head>')
|
|
@@ -599,7 +612,7 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
599
612
|
return null
|
|
600
613
|
}
|
|
601
614
|
},
|
|
602
|
-
}
|
|
615
|
+
} satisfies RequestHandlers
|
|
603
616
|
|
|
604
617
|
// set cache headers based on route type
|
|
605
618
|
function setCacheHeaders(
|
|
@@ -633,7 +646,8 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
633
646
|
async function handleRequest(
|
|
634
647
|
request: Request,
|
|
635
648
|
env?: unknown,
|
|
636
|
-
executionCtx?: unknown
|
|
649
|
+
executionCtx?: unknown,
|
|
650
|
+
fetchStaticHtml?: (path: string) => Promise<string | null>
|
|
637
651
|
): Promise<Response | null> {
|
|
638
652
|
const url = getURLfromRequestURL(request)
|
|
639
653
|
const pathname = url.pathname
|
|
@@ -802,12 +816,10 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
802
816
|
|
|
803
817
|
const response = await resolveResponse(async () => {
|
|
804
818
|
try {
|
|
805
|
-
return await requestHandlers.handlePage
|
|
806
|
-
request,
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
loaderProps,
|
|
810
|
-
})
|
|
819
|
+
return await requestHandlers.handlePage(
|
|
820
|
+
{ request, route, url, loaderProps },
|
|
821
|
+
fetchStaticHtml
|
|
822
|
+
)
|
|
811
823
|
} catch (err) {
|
|
812
824
|
if (isResponse(err)) return err as Response
|
|
813
825
|
throw err
|
|
@@ -822,7 +834,11 @@ export function createWorkerHandler(options: WorkerHandlerOptions) {
|
|
|
822
834
|
|
|
823
835
|
// general path
|
|
824
836
|
try {
|
|
825
|
-
const
|
|
837
|
+
const pageHandlers: RequestHandlers = {
|
|
838
|
+
...requestHandlers,
|
|
839
|
+
handlePage: (props) => requestHandlers.handlePage(props, fetchStaticHtml),
|
|
840
|
+
}
|
|
841
|
+
const response = await resolvePageRoute(pageHandlers, request, url, route)
|
|
826
842
|
if (response && isResponse(response)) {
|
|
827
843
|
return setCacheHeaders(response, route, false)
|
|
828
844
|
}
|
|
@@ -172,7 +172,7 @@ export function generateWorkerdDevEntryModule(args: {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
import { serve
|
|
175
|
+
import { serve } from 'one/serve-worker'
|
|
176
176
|
|
|
177
177
|
const lazyRoutes = {
|
|
178
178
|
serverEntry: () => import(${JSON.stringify(virtualEntryId)}),
|
|
@@ -203,50 +203,46 @@ export default {
|
|
|
203
203
|
server = await serve(buildInfo, lazyRoutes, { disableModuleCache: true })
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
try {
|
|
209
|
-
const assetUrl = new URL(request.url)
|
|
210
|
-
assetUrl.pathname = path
|
|
211
|
-
const assetResponse = await env.ASSETS.fetch(new Request(assetUrl))
|
|
212
|
-
if (assetResponse && assetResponse.ok) {
|
|
213
|
-
return await assetResponse.text()
|
|
214
|
-
}
|
|
215
|
-
} catch {}
|
|
216
|
-
return null
|
|
217
|
-
})
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
try {
|
|
221
|
-
const response = await server.fetch(request, env, ctx)
|
|
222
|
-
|
|
223
|
-
if (!response || response.status === 404) {
|
|
224
|
-
if (env && env.ASSETS) {
|
|
206
|
+
const fetchStaticHtml = env && env.ASSETS
|
|
207
|
+
? async (path) => {
|
|
225
208
|
try {
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
209
|
+
const assetUrl = new URL(request.url)
|
|
210
|
+
assetUrl.pathname = path
|
|
211
|
+
const assetResponse = await env.ASSETS.fetch(new Request(assetUrl))
|
|
212
|
+
if (assetResponse && assetResponse.ok) {
|
|
213
|
+
return await assetResponse.text()
|
|
229
214
|
}
|
|
230
215
|
} catch {}
|
|
216
|
+
return null
|
|
231
217
|
}
|
|
232
|
-
|
|
218
|
+
: undefined
|
|
233
219
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
220
|
+
const response = await server.fetch(request, env, ctx, fetchStaticHtml)
|
|
221
|
+
|
|
222
|
+
if (!response || response.status === 404) {
|
|
223
|
+
if (env && env.ASSETS) {
|
|
224
|
+
try {
|
|
225
|
+
const assetResponse = await env.ASSETS.fetch(request)
|
|
226
|
+
if (assetResponse && assetResponse.status !== 404) {
|
|
227
|
+
return assetResponse
|
|
228
|
+
}
|
|
229
|
+
} catch {}
|
|
244
230
|
}
|
|
231
|
+
}
|
|
245
232
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
233
|
+
if (!response) {
|
|
234
|
+
if (request.method === 'GET' || request.method === 'HEAD') {
|
|
235
|
+
return new Response(
|
|
236
|
+
'<!DOCTYPE html><html><head>' +
|
|
237
|
+
${JSON.stringify(spaPreloadScripts)} +
|
|
238
|
+
'</head></html>',
|
|
239
|
+
{ headers: { 'content-type': 'text/html' } }
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
return new Response('Not Found', { status: 404 })
|
|
249
243
|
}
|
|
244
|
+
|
|
245
|
+
return response
|
|
250
246
|
}
|
|
251
247
|
}
|
|
252
248
|
`
|
|
@@ -13,14 +13,14 @@ function createId(): ALSId {
|
|
|
13
13
|
return { _id: _nextId++ }
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export async function resolveResponse(getResponse: () => Promise<Response>) {
|
|
16
|
+
export async function resolveResponse(getResponse: () => Promise<Response | null>) {
|
|
17
17
|
// always read ALS from globalThis to match the bundled server code
|
|
18
18
|
const store =
|
|
19
19
|
requestAsyncLocalStore ??
|
|
20
20
|
(globalThis['__vxrnrequestAsyncLocalStore'] as typeof requestAsyncLocalStore)
|
|
21
21
|
if (store) {
|
|
22
22
|
const id = createId()
|
|
23
|
-
let response: Response
|
|
23
|
+
let response: Response | null
|
|
24
24
|
await store.run(id, async () => {
|
|
25
25
|
try {
|
|
26
26
|
response = await getResponse()
|
package/types/cli/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAyLA,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACxD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAyLA,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACxD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,iBAm3CA"}
|
package/types/cli/buildPage.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { One, RouteInfo } from '../vite/types';
|
|
2
2
|
export declare function printBuildTimings(): void;
|
|
3
|
-
export declare function buildPage(serverEntry: string, routerRoot: string, path: string, relativeId: string, params: any, foundRoute: RouteInfo<string>, clientManifestEntry: any, staticDir: string, clientDir: string, builtMiddlewares: Record<string, string>, serverJsPath: string, preloads: string[], allCSS: string[], layoutCSS: string[], routePreloads: string[], allCSSContents?: string[], criticalPreloads?: string[], deferredPreloads?: string[], useAfterLCP?: boolean, useAfterLCPAggressive?: boolean): Promise<One.RouteBuildInfo>;
|
|
3
|
+
export declare function buildPage(serverEntry: string, routerRoot: string, path: string, relativeId: string, params: any, foundRoute: RouteInfo<string>, clientManifestEntry: any, staticDir: string, clientDir: string, builtMiddlewares: Record<string, string>, serverJsPath: string, preloads: string[], allCSS: string[], layoutCSS: string[], routePreloads: string[], allCSSContents?: string[], criticalPreloads?: string[], deferredPreloads?: string[], useAfterLCP?: boolean, useAfterLCPAggressive?: boolean, skipNativeLoaders?: boolean): Promise<One.RouteBuildInfo>;
|
|
4
4
|
//# sourceMappingURL=buildPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPage.d.ts","sourceRoot":"","sources":["../../src/cli/buildPage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAmBnD,wBAAgB,iBAAiB,SAUhC;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAC7B,mBAAmB,EAAE,GAAG,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,WAAW,CAAC,EAAE,OAAO,EACrB,qBAAqB,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"buildPage.d.ts","sourceRoot":"","sources":["../../src/cli/buildPage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAmBnD,wBAAgB,iBAAiB,SAUhC;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAC7B,mBAAmB,EAAE,GAAG,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,WAAW,CAAC,EAAE,OAAO,EACrB,qBAAqB,CAAC,EAAE,OAAO,EAC/B,iBAAiB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAsa7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerPool.d.ts","sourceRoot":"","sources":["../../src/cli/workerPool.ts"],"names":[],"mappings":"AAoBA,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAQ;IAE3B,YAAY,IAAI,SAAiC,EAgDhD;IAED,IAAI,IAAI,WAEP;IAGK,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,iBAQhC;IAED,OAAO,CAAC,QAAQ;IASV,SAAS,CAAC,IAAI,EAAE;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,GAAG,CAAA;QACX,UAAU,EAAE,GAAG,CAAA;QACf,mBAAmB,EAAE,GAAG,CAAA;QACxB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,qBAAqB,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"workerPool.d.ts","sourceRoot":"","sources":["../../src/cli/workerPool.ts"],"names":[],"mappings":"AAoBA,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAQ;IAE3B,YAAY,IAAI,SAAiC,EAgDhD;IAED,IAAI,IAAI,WAEP;IAGK,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,iBAQhC;IAED,OAAO,CAAC,QAAQ;IASV,SAAS,CAAC,IAAI,EAAE;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,GAAG,CAAA;QACX,UAAU,EAAE,GAAG,CAAA;QACf,mBAAmB,EAAE,GAAG,CAAA;QACxB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,qBAAqB,CAAC,EAAE,OAAO,CAAA;QAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CAyCf;IAEK,SAAS,kBAKd;CACF;AAKD,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAK5D;AAED,wBAAsB,mBAAmB,kBAKxC"}
|