Time slots app prototype
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
3.0 KiB

import { pathToFileURL } from 'node:url';
import { readFile } from 'node:fs/promises';
import { i as isNodeBuiltin, h as hasCJSSyntax } from './vendor-index.2e96c50b.js';
import { normalizeModuleId } from 'vite-node/utils';
import { g as getWorkerState } from './chunk-mock-date.a1c85759.js';
import 'acorn';
import 'node:module';
import 'node:fs';
import 'url';
import 'fs';
import 'path';
import 'module';
import 'assert';
import 'util';
import 'node:path';
import 'picocolors';
import 'local-pkg';
import './chunk-utils-env.b861e3a0.js';
var ModuleFormat = /* @__PURE__ */ ((ModuleFormat2) => {
ModuleFormat2["Builtin"] = "builtin";
ModuleFormat2["Commonjs"] = "commonjs";
ModuleFormat2["Json"] = "json";
ModuleFormat2["Module"] = "module";
ModuleFormat2["Wasm"] = "wasm";
return ModuleFormat2;
})(ModuleFormat || {});
const ESM_RE = /([\s;}]|^)(import[\w,{}\s*]*from|import\s*['"*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m;
function hasESMSyntax(code) {
return ESM_RE.test(code);
}
const cache = /* @__PURE__ */ new Map();
const getPotentialSource = async (filepath, result) => {
var _a;
if (!result.url.startsWith("file://") || result.format === "module")
return null;
let source = (_a = cache.get(result.url)) == null ? void 0 : _a.source;
if (source == null)
source = await readFile(filepath, "utf8");
return source;
};
const detectESM = (url, source) => {
const cached = cache.get(url);
if (cached)
return cached.isPseudoESM;
if (!source)
return false;
return hasESMSyntax(source) && !hasCJSSyntax(source);
};
const resolve = async (url, context, next) => {
const { parentURL } = context;
const state = getWorkerState();
const resolver = state == null ? void 0 : state.rpc.resolveId;
if (!parentURL || isNodeBuiltin(url) || !resolver)
return next(url, context, next);
const id = normalizeModuleId(url);
const importer = normalizeModuleId(parentURL);
const resolved = await resolver(id, importer);
let result;
let filepath;
if (resolved) {
const resolvedUrl = pathToFileURL(resolved.id).toString();
filepath = resolved.id;
result = {
url: resolvedUrl,
shortCircuit: true
};
} else {
const { url: resolvedUrl, format } = await next(url, context, next);
filepath = new URL(resolvedUrl).pathname;
result = {
url: resolvedUrl,
format,
shortCircuit: true
};
}
const source = await getPotentialSource(filepath, result);
const isPseudoESM = detectESM(result.url, source);
if (typeof source === "string")
cache.set(result.url, { isPseudoESM, source });
if (isPseudoESM)
result.format = ModuleFormat.Module;
return result;
};
const load = async (url, context, next) => {
const result = await next(url, context, next);
const cached = cache.get(url);
if ((cached == null ? void 0 : cached.isPseudoESM) && result.format !== "module") {
return {
source: cached.source,
format: ModuleFormat.Module
};
}
return result;
};
export { load, resolve };