1- const fs = require ( "fs" ) ;
2- const AdmZip = require ( "adm-zip" ) ;
3- const pathUtil = require ( "path" ) ;
4- const ExtendedJSON = require ( "@turbowarp/json" ) ;
5- const compatibilityAliases = require ( "./compatibility-aliases" ) ;
6- const parseMetadata = require ( "./parse-extension-metadata" ) ;
7- const { mkdirp, recursiveReadDirectory } = require ( "./fs-utils" ) ;
1+ import * as fs from "node:fs" ;
2+ import * as pathUtil from "node:path" ;
3+ import AdmZip from "adm-zip" ;
4+ import chokidar from "chokidar" ;
5+ import spdxParser from "spdx-expression-parse" ;
6+ import { imageSize } from "image-size" ;
7+ import ExtendedJSON from "@turbowarp/json" ;
8+ import compatibilityAliases from "./compatibility-aliases.js" ;
9+ import parseMetadata from "./parse-extension-metadata.js" ;
10+ import parseTranslations from "./parse-extension-translations.js" ;
11+ import renderTemplate from "./render-template.js" ;
12+ import renderDocs from "./render-docs.js" ;
13+ import { mkdirp , recursiveReadDirectory } from "./fs-utils.js" ;
814
915/**
1016 * @typedef {'development'|'production'|'desktop' } Mode
@@ -213,7 +219,6 @@ class ExtensionFile extends BuildFile {
213219 ) ;
214220 }
215221
216- const spdxParser = require ( "spdx-expression-parse" ) ;
217222 try {
218223 // Don't care about the result -- just see if it parses.
219224 spdxParser ( metadata . license ) ;
@@ -264,7 +269,6 @@ class ExtensionFile extends BuildFile {
264269 } ,
265270 } ;
266271
267- const parseTranslations = require ( "./parse-extension-translations" ) ;
268272 const jsCode = fs . readFileSync ( this . sourcePath , "utf-8" ) ;
269273 const unprefixedRuntimeStrings = parseTranslations ( jsCode ) ;
270274 const runtimeStrings = Object . fromEntries (
@@ -290,7 +294,7 @@ class HomepageFile extends BuildFile {
290294 samples ,
291295 mode
292296 ) {
293- super ( pathUtil . join ( __dirname , "homepage-template.ejs" ) ) ;
297+ super ( pathUtil . join ( import . meta . dirname , "homepage-template.ejs" ) ) ;
294298
295299 /** @type {Record<string, ExtensionFile> } */
296300 this . extensionFiles = extensionFiles ;
@@ -344,8 +348,6 @@ class HomepageFile extends BuildFile {
344348 }
345349
346350 read ( ) {
347- const renderTemplate = require ( "./render-template" ) ;
348-
349351 const mostRecentExtensions = Object . entries ( this . extensionFiles )
350352 . sort ( ( a , b ) => b [ 1 ] . getLastModified ( ) - a [ 1 ] . getLastModified ( ) )
351353 . slice ( 0 , 5 )
@@ -473,7 +475,6 @@ class JSONMetadataFile extends BuildFile {
473475
474476class ImageFile extends BuildFile {
475477 validate ( ) {
476- const { imageSize } = require ( "image-size" ) ;
477478 const contents = this . read ( ) ;
478479 const { width, height } = imageSize ( contents ) ;
479480 const aspectRatio = width / height ;
@@ -544,7 +545,6 @@ class DocsFile extends BuildFile {
544545 }
545546
546547 read ( ) {
547- const renderDocs = require ( "./render-docs" ) ;
548548 const markdown = super . read ( ) . toString ( "utf-8" ) ;
549549 return renderDocs ( markdown , this . extensionSlug ) ;
550550 }
@@ -688,12 +688,15 @@ class Builder {
688688 this . mode = mode ;
689689 }
690690
691- this . extensionsRoot = pathUtil . join ( __dirname , "../extensions" ) ;
692- this . websiteRoot = pathUtil . join ( __dirname , "../website" ) ;
693- this . imagesRoot = pathUtil . join ( __dirname , "../images" ) ;
694- this . docsRoot = pathUtil . join ( __dirname , "../docs" ) ;
695- this . samplesRoot = pathUtil . join ( __dirname , "../samples" ) ;
696- this . translationsRoot = pathUtil . join ( __dirname , "../translations" ) ;
691+ this . extensionsRoot = pathUtil . join ( import . meta. dirname , "../extensions" ) ;
692+ this . websiteRoot = pathUtil . join ( import . meta. dirname , "../website" ) ;
693+ this . imagesRoot = pathUtil . join ( import . meta. dirname , "../images" ) ;
694+ this . docsRoot = pathUtil . join ( import . meta. dirname , "../docs" ) ;
695+ this . samplesRoot = pathUtil . join ( import . meta. dirname , "../samples" ) ;
696+ this . translationsRoot = pathUtil . join (
697+ import . meta. dirname ,
698+ "../translations"
699+ ) ;
697700 }
698701
699702 build ( ) {
@@ -804,7 +807,9 @@ class Builder {
804807
805808 // Don't rely on node_modules being stored in a specific location or having a specific structure
806809 // so that this works when we are a dependency in a bigger npm tree.
807- const scratchblocksPath = require . resolve ( "@turbowarp/scratchblocks" ) ;
810+ const scratchblocksPath = new URL (
811+ import . meta. resolve ( "@turbowarp/scratchblocks" )
812+ ) . pathname ;
808813 build . files [ "/docs-internal/scratchblocks.js" ] = new BuildFile (
809814 scratchblocksPath
810815 ) ;
@@ -854,8 +859,6 @@ class Builder {
854859 }
855860
856861 startWatcher ( callback ) {
857- // Load chokidar lazily.
858- const chokidar = require ( "chokidar" ) ;
859862 callback ( this . tryBuild ( ) ) ;
860863 chokidar
861864 . watch (
@@ -893,4 +896,4 @@ class Builder {
893896 }
894897}
895898
896- module . exports = Builder ;
899+ export default Builder ;
0 commit comments