61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { defineIntegration, createResolver } from "astro-integration-kit"
|
|
import { corePlugins } from "astro-integration-kit/plugins"
|
|
import { isThereAToken, TOKEN_MISSING_ERROR } from "./lib"
|
|
import { optionsSchema } from "./index"
|
|
import { readFileSync } from "node:fs";
|
|
|
|
/**
|
|
* Astro-Gist - An Astro.js integration for embedding GitHub Gists in your Astro.js project.
|
|
*/
|
|
export default defineIntegration({
|
|
name: "@matthiesenxyz/astro-gists",
|
|
optionsSchema,
|
|
plugins: [...corePlugins],
|
|
setup({ options }) {
|
|
const { resolve } = createResolver(import.meta.url)
|
|
|
|
return {
|
|
"astro:config:setup": ({
|
|
watchIntegration, addVirtualImports, logger, addDts
|
|
}) => {
|
|
logger.info("Setting up Astro Gists Integration.")
|
|
const configSetup = logger.fork("astro-gists/config:setup")
|
|
|
|
// WATCH INTEGRATION FOR CHANGES
|
|
watchIntegration(resolve())
|
|
|
|
// Check for GITHUB_PERSONAL_TOKEN
|
|
if (!isThereAToken) {configSetup.warn(TOKEN_MISSING_ERROR)}
|
|
|
|
// Add virtual imports
|
|
addVirtualImports({
|
|
"virtual:astro-gists/config": `export default ${JSON.stringify(options)}`,
|
|
"astro-gists:components": `export * from "@matthiesenxyz/astro-gists/components";`
|
|
});
|
|
|
|
addDts({
|
|
name: "astro-gists",
|
|
content: readFileSync(resolve("./stubs/astro-gists.d.ts"), "utf-8")
|
|
})
|
|
|
|
},
|
|
"astro:config:done": ({ logger }) => {
|
|
const configDone = logger.fork("astro-gists/config:done")
|
|
configDone.info("Astro Gists Integration Loaded.")
|
|
},
|
|
"astro:server:setup": ({ logger }) => {
|
|
const serverSetup = logger.fork("astro-gists/server:setup")
|
|
serverSetup.info("Setting up Astro Gists Integration for Development.")
|
|
},
|
|
"astro:build:start": ({ logger }) => {
|
|
const buildStart = logger.fork("astro-gists/build:start")
|
|
buildStart.info("Building Astro Gists Integration.")
|
|
},
|
|
"astro:build:done": ({ logger }) => {
|
|
const buildDone = logger.fork("astro-gists/build:done")
|
|
buildDone.info("Astro Gists Integration Built.")
|
|
}
|
|
}
|
|
}
|
|
})
|