diff options
Diffstat (limited to 'src/js_parser')
-rw-r--r-- | src/js_parser/imports.zig | 5 | ||||
-rw-r--r-- | src/js_parser/js_parser.zig | 41 |
2 files changed, 43 insertions, 3 deletions
diff --git a/src/js_parser/imports.zig b/src/js_parser/imports.zig index 9ab6a9cb2..e276d6260 100644 --- a/src/js_parser/imports.zig +++ b/src/js_parser/imports.zig @@ -7,7 +7,9 @@ pub const options = @import("../options.zig"); pub const alloc = @import("../alloc.zig"); pub const js_printer = @import("../js_printer.zig"); pub const renamer = @import("../renamer.zig"); -pub const RuntimeImports = @import("../runtime.zig").Runtime.Imports; +const _runtime = @import("../runtime.zig"); +pub const RuntimeImports = _runtime.Runtime.Imports; +pub const RuntimeFeatures = _runtime.Runtime.Features; pub const fs = @import("../fs.zig"); const _hash_map = @import("../hash_map.zig"); pub usingnamespace @import("../global.zig"); @@ -23,6 +25,7 @@ pub const ExprNodeIndex = js_ast.ExprNodeIndex; pub const ExprNodeList = js_ast.ExprNodeList; pub const StmtNodeList = js_ast.StmtNodeList; pub const BindingNodeList = js_ast.BindingNodeList; + pub const assert = std.debug.assert; pub const LocRef = js_ast.LocRef; diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 23e9cfad0..4033cdd8d 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -1552,6 +1552,8 @@ pub const Parser = struct { use_define_for_class_fields: bool = false, suppress_warnings_about_weird_code: bool = true, + features: RuntimeFeatures = RuntimeFeatures{}, + // Used when bundling node_modules enable_bundling: bool = false, transform_require_to_import: bool = true, @@ -1889,7 +1891,7 @@ pub const Parser = struct { jsx_part_stmts[stmt_i] = p.s(S.Local{ .kind = .k_var, .decls = decls }, loc); - after.append(js_ast.Part{ + before.append(js_ast.Part{ .stmts = jsx_part_stmts, .declared_symbols = declared_symbols, .import_record_indices = import_records, @@ -1947,7 +1949,7 @@ pub const Parser = struct { }; } - after.append(js_ast.Part{ + before.append(js_ast.Part{ .stmts = p.cjs_import_stmts.items, .declared_symbols = declared_symbols, .import_record_indices = import_records, @@ -4419,6 +4421,41 @@ pub fn NewParser( }, loc); } + // For HMR, we must convert syntax like this: + // export function leftPad() { + // export const guy = GUY_FIERI_ASCII_ART; + // export class Bacon {} + // export default GuyFieriAsciiArt; + // export {Bacon}; + // export {Bacon as default}; + // to: + // var __hmr__module = new __hmr_HMRModule(file_id, import.meta); + // (__hmr__module._load = function() { + // __hmr__module.exports.leftPad = function () {}; + // __hmr__module.exports.npmProgressBar33 = true; + // __hmr__module.exports.Bacon = class {}; + // })(); + // export { __hmr__module.exports.leftPad as leftPad, __hmr__module.exports.npmProgressBar33 as npmProgressBar33, __hmr__module } + // + // + // + // At bottom of the file: + // - + // var __hmr__exports = new HMRModule({ + // leftPad: () => leftPad, + // npmProgressBar33 () => npmProgressBar33, + // default: () => GuyFieriAsciiArt, + // [__hmr_ModuleIDSymbol]: + //}); + // export { __hmr__exports.leftPad as leftPad, __hmr__ } + // - + // Then: + // if () { + // + // } + + // pub fn maybeRewriteExportSymbol(p: *P, ) + pub fn parseStmt(p: *P, opts: *ParseStatementOptions) anyerror!Stmt { var loc = p.lexer.loc(); |