@@ -6,35 +6,13 @@ import {reconcileAndPollThemeEditorChanges} from './remote-theme-watcher.js'
66import { uploadTheme } from '../theme-uploader.js'
77import { renderTasksToStdErr } from '../theme-ui.js'
88import { renderThrownError } from '../errors.js'
9+ import { promiseWithResolvers } from '../../polyfills/promiseWithResolvers.js'
910import { createApp , defineEventHandler , defineLazyEventHandler , toNodeListener , handleCors } from 'h3'
1011import { fetchChecksums } from '@shopify/cli-kit/node/themes/api'
1112import { createServer } from 'node:http'
1213import type { Checksum , Theme } from '@shopify/cli-kit/node/themes/types'
1314import type { DevServerContext } from './types.js'
1415
15- // Polyfill for Promise.withResolvers
16- // Can remove once our minimum supported Node version is 22
17- interface PromiseWithResolvers < T > {
18- promise : Promise < T >
19- resolve : ( value : T | PromiseLike < T > ) => void
20- reject : ( reason ?: unknown ) => void
21- }
22-
23- function promiseWithResolvers < T > ( ) : PromiseWithResolvers < T > {
24- if ( typeof Promise . withResolvers === 'function' ) {
25- return Promise . withResolvers < T > ( )
26- }
27-
28- let resolve ! : ( value : T | PromiseLike < T > ) => void
29- let reject ! : ( reason ?: unknown ) => void
30- const promise = new Promise < T > ( ( _resolve , _reject ) => {
31- resolve = _resolve
32- reject = _reject
33- } )
34-
35- return { promise, resolve, reject}
36- }
37-
3816export function setupDevServer ( theme : Theme , ctx : DevServerContext ) {
3917 const { promise : backgroundJobPromise , reject : rejectBackgroundJob } = promiseWithResolvers < never > ( )
4018
0 commit comments