blank project
This commit is contained in:
93
node_modules/astro/dist/content/config.js
generated
vendored
Normal file
93
node_modules/astro/dist/content/config.js
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
import { AstroError, AstroErrorData, AstroUserError } from "../core/errors/index.js";
|
||||
import { CONTENT_LAYER_TYPE, LIVE_CONTENT_TYPE } from "./consts.js";
|
||||
function getImporterFilename() {
|
||||
const stackLine = new Error().stack?.split("\n").find(
|
||||
(line) => !line.includes("defineCollection") && !line.includes("defineLiveCollection") && !line.includes("getImporterFilename") && !line.startsWith("Error")
|
||||
);
|
||||
if (!stackLine) {
|
||||
return void 0;
|
||||
}
|
||||
const match = /\/((?:src|chunks)\/.*?):\d+:\d+/.exec(stackLine);
|
||||
return match?.[1] ?? void 0;
|
||||
}
|
||||
function defineLiveCollection(config) {
|
||||
const importerFilename = getImporterFilename();
|
||||
if (importerFilename && !importerFilename.includes("live.config")) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"Live collections must be defined in a `src/live.config.ts` file.",
|
||||
importerFilename ?? "your content config file"
|
||||
)
|
||||
});
|
||||
}
|
||||
config.type ??= LIVE_CONTENT_TYPE;
|
||||
if (config.type !== LIVE_CONTENT_TYPE) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"Collections in a live config file must have a type of `live`.",
|
||||
importerFilename
|
||||
)
|
||||
});
|
||||
}
|
||||
if (!config.loader) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"Live collections must have a `loader` defined.",
|
||||
importerFilename
|
||||
)
|
||||
});
|
||||
}
|
||||
if (!config.loader.loadCollection || !config.loader.loadEntry) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"Live collection loaders must have `loadCollection()` and `loadEntry()` methods. Please check that you are not using a loader intended for build-time collections",
|
||||
importerFilename
|
||||
)
|
||||
});
|
||||
}
|
||||
if (typeof config.schema === "function") {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"The schema cannot be a function for live collections. Please use a schema object instead.",
|
||||
importerFilename
|
||||
)
|
||||
});
|
||||
}
|
||||
return config;
|
||||
}
|
||||
function defineCollection(config) {
|
||||
const importerFilename = getImporterFilename();
|
||||
if (importerFilename?.includes("live.config")) {
|
||||
throw new AstroError({
|
||||
...AstroErrorData.LiveContentConfigError,
|
||||
message: AstroErrorData.LiveContentConfigError.message(
|
||||
"Collections in a live config file must use `defineLiveCollection`.",
|
||||
importerFilename
|
||||
)
|
||||
});
|
||||
}
|
||||
if ("loader" in config) {
|
||||
if (config.type && config.type !== CONTENT_LAYER_TYPE) {
|
||||
throw new AstroUserError(
|
||||
`Collections that use the Content Layer API must have a \`loader\` defined and no \`type\` set. Check your collection definitions in ${importerFilename ?? "your content config file"}.`
|
||||
);
|
||||
}
|
||||
if (typeof config.loader === "object" && typeof config.loader.load !== "function" && ("loadEntry" in config.loader || "loadCollection" in config.loader)) {
|
||||
throw new AstroUserError(
|
||||
`Live content collections must be defined in "src/live.config.ts" file. Check your collection definitions in "${importerFilename ?? "your content config file"}" to ensure you are not using a live loader.`
|
||||
);
|
||||
}
|
||||
config.type = CONTENT_LAYER_TYPE;
|
||||
}
|
||||
if (!config.type) config.type = "content";
|
||||
return config;
|
||||
}
|
||||
export {
|
||||
defineCollection,
|
||||
defineLiveCollection
|
||||
};
|
||||
Reference in New Issue
Block a user