feat: init
This commit is contained in:
103
node_modules/compatx/dist/index.mjs
generated
vendored
Normal file
103
node_modules/compatx/dist/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
const platforms = [
|
||||
"aws",
|
||||
"azure",
|
||||
"cloudflare",
|
||||
"deno",
|
||||
"firebase",
|
||||
"netlify",
|
||||
"vercel"
|
||||
];
|
||||
|
||||
function resolveCompatibilityDates(input, defaults) {
|
||||
const dates = {
|
||||
default: ""
|
||||
};
|
||||
const _defaults = typeof defaults === "string" ? { default: defaults } : defaults || {};
|
||||
for (const [key, value] of Object.entries(_defaults)) {
|
||||
if (value) {
|
||||
dates[key] = formatDate(value);
|
||||
}
|
||||
}
|
||||
const _input = typeof input === "string" ? { default: input } : input || {};
|
||||
for (const [key, value] of Object.entries(_input)) {
|
||||
if (value) {
|
||||
dates[key] = formatDate(value);
|
||||
}
|
||||
}
|
||||
dates.default = formatDate(dates.default || "") || Object.values(dates).sort().pop() || "";
|
||||
return dates;
|
||||
}
|
||||
function resolveCompatibilityDatesFromEnv(overridesInput) {
|
||||
const defaults = {
|
||||
default: process.env.COMPATIBILITY_DATE ? formatDate(process.env.COMPATIBILITY_DATE) : void 0
|
||||
};
|
||||
for (const platform of platforms) {
|
||||
const envName = `COMPATIBILITY_DATE_${platform.toUpperCase()}`;
|
||||
const env = process.env[envName];
|
||||
if (env) {
|
||||
defaults[platform] = formatDate(env);
|
||||
}
|
||||
}
|
||||
return resolveCompatibilityDates(overridesInput, defaults);
|
||||
}
|
||||
function formatCompatibilityDate(input) {
|
||||
const dates = resolveCompatibilityDates(input);
|
||||
const entries = Object.entries(dates);
|
||||
if (entries.length === 0) {
|
||||
return "-";
|
||||
}
|
||||
return [
|
||||
`${dates["default"]}`,
|
||||
...Object.entries(dates).filter(
|
||||
([key, value]) => key !== "default" && value && value !== dates["default"]
|
||||
).map(([key, value]) => `${key}: ${value}`)
|
||||
].join(", ");
|
||||
}
|
||||
function formatDate(date) {
|
||||
const d = normalizeDate(date);
|
||||
if (Number.isNaN(d.getDate())) {
|
||||
return "";
|
||||
}
|
||||
const year = d.getFullYear().toString();
|
||||
const month = (d.getMonth() + 1).toString().padStart(2, "0");
|
||||
const day = d.getDate().toString().padStart(2, "0");
|
||||
return `${year}-${month}-${day}`;
|
||||
}
|
||||
function normalizeDate(date) {
|
||||
if (date instanceof Date) {
|
||||
return date;
|
||||
}
|
||||
if (date === "latest") {
|
||||
return /* @__PURE__ */ new Date();
|
||||
}
|
||||
return new Date(date);
|
||||
}
|
||||
|
||||
function getCompatibilityUpdates(allUpdates, compatibilityDate) {
|
||||
const _date = resolveCompatibilityDates(compatibilityDate);
|
||||
return allUpdates.filter((change) => {
|
||||
const _platformDate = _date[change.platform] || _date.default;
|
||||
if (!_platformDate) {
|
||||
return false;
|
||||
}
|
||||
if (change.from && _platformDate < change.from) {
|
||||
return false;
|
||||
}
|
||||
if (change.until && _platformDate > change.until) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
function getCompatibilityChanges(allUpdates, compatibilityDate1, compatibilityDate2) {
|
||||
const updates1 = getCompatibilityUpdates(allUpdates, compatibilityDate1);
|
||||
const updates2 = getCompatibilityUpdates(allUpdates, compatibilityDate2);
|
||||
const added = updates2.filter((update) => !updates1.includes(update));
|
||||
const removed = updates1.filter((update) => !updates2.includes(update));
|
||||
return {
|
||||
added,
|
||||
removed
|
||||
};
|
||||
}
|
||||
|
||||
export { formatCompatibilityDate, formatDate, getCompatibilityChanges, getCompatibilityUpdates, platforms, resolveCompatibilityDates, resolveCompatibilityDatesFromEnv };
|
||||
Reference in New Issue
Block a user