From 2f1edd985170ba0afb20e4a457f9e7053a72f60d Mon Sep 17 00:00:00 2001 From: Drew Haven Date: Wed, 4 Jun 2025 16:38:24 -0700 Subject: [PATCH] Adds Astro files --- .astro/collections/blog.schema.json | 61 ++++++++++ .astro/config.json | 5 + .astro/content-assets.mjs | 1 + .astro/content-modules.mjs | 1 + .astro/content.d.ts | 175 ++++++++++++++++++++++++++++ .astro/data-store.json | 1 + .astro/settings.json | 5 + .astro/types.d.ts | 2 + .gitignore | 5 +- src/pages/index.astro | 2 +- 10 files changed, 253 insertions(+), 5 deletions(-) create mode 100644 .astro/collections/blog.schema.json create mode 100644 .astro/config.json create mode 100644 .astro/content-assets.mjs create mode 100644 .astro/content-modules.mjs create mode 100644 .astro/content.d.ts create mode 100644 .astro/data-store.json create mode 100644 .astro/settings.json create mode 100644 .astro/types.d.ts diff --git a/.astro/collections/blog.schema.json b/.astro/collections/blog.schema.json new file mode 100644 index 0000000..6605314 --- /dev/null +++ b/.astro/collections/blog.schema.json @@ -0,0 +1,61 @@ +{ + "$ref": "#/definitions/blog", + "definitions": { + "blog": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "pubDate": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string", + "format": "date" + }, + { + "type": "integer", + "format": "unix-time" + } + ] + }, + "updatedDate": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "string", + "format": "date" + }, + { + "type": "integer", + "format": "unix-time" + } + ] + }, + "heroImage": { + "type": "string" + }, + "$schema": { + "type": "string" + } + }, + "required": [ + "title", + "description", + "pubDate" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/.astro/config.json b/.astro/config.json new file mode 100644 index 0000000..a012efd --- /dev/null +++ b/.astro/config.json @@ -0,0 +1,5 @@ +{ + "telemetry": { + "enabled": false + } +} diff --git a/.astro/content-assets.mjs b/.astro/content-assets.mjs new file mode 100644 index 0000000..2b8b823 --- /dev/null +++ b/.astro/content-assets.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/.astro/content-modules.mjs b/.astro/content-modules.mjs new file mode 100644 index 0000000..2b8b823 --- /dev/null +++ b/.astro/content-modules.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/.astro/content.d.ts b/.astro/content.d.ts new file mode 100644 index 0000000..ea98e5c --- /dev/null +++ b/.astro/content.d.ts @@ -0,0 +1,175 @@ +declare module 'astro:content' { + interface Render { + '.mdx': Promise<{ + Content: import('astro').MarkdownInstance<{}>['Content']; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + components: import('astro').MDXInstance<{}>['components']; + }>; + } +} + +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export type ReferenceDataEntry< + C extends CollectionKey, + E extends keyof DataEntryMap[C] = string, + > = { + collection: C; + id: E; + }; + export type ReferenceContentEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}) = string, + > = { + collection: C; + slug: E; + }; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + entry: ReferenceContentEntry, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + entry: ReferenceDataEntry, + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: ReferenceContentEntry>[], + ): Promise[]>; + export function getEntries( + entries: ReferenceDataEntry[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? ReferenceContentEntry> + : ReferenceDataEntry + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + "blog": Record; + rendered?: RenderedContent; + filePath?: string; +}>; + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + export type ContentConfig = typeof import("../src/content.config.js"); +} diff --git a/.astro/data-store.json b/.astro/data-store.json new file mode 100644 index 0000000..d77ea5b --- /dev/null +++ b/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.8.1","content-config-digest","8d1b7566f4d3c391","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://example.com\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"experimentalDefaultStyles\":true},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false},\"legacy\":{\"collections\":false}}","blog",["Map",11,12],"a-fresh-start",{"id":11,"data":13,"body":18,"filePath":19,"digest":20,"rendered":21},{"title":14,"description":15,"pubDate":16,"heroImage":17},"A Fresh Start","Starting a new venture",["Date","2025-06-03T00:00:00.000Z"],"https://placecats.com/500/400","This year we decided that we wanted to try something different. As funding\ntightens and the AI bubble grows we realized that start-ups are not where we\nwant to be.\n\nWe decided to found a tech co-operative to:\n\n- Support democratic decision making.\n- Center the company around the workers and not just profit.\n- Capture the value of our work for the workers and their communities.\n- Align our work with our values.","src/content/blog/a-fresh-start.md","d2a18861b3414187",{"html":22,"metadata":23},"\u003Cp>This year we decided that we wanted to try something different. As funding\ntightens and the AI bubble grows we realized that start-ups are not where we\nwant to be.\u003C/p>\n\u003Cp>We decided to found a tech co-operative to:\u003C/p>\n\u003Cul>\n\u003Cli>Support democratic decision making.\u003C/li>\n\u003Cli>Center the company around the workers and not just profit.\u003C/li>\n\u003Cli>Capture the value of our work for the workers and their communities.\u003C/li>\n\u003Cli>Align our work with our values.\u003C/li>\n\u003C/ul>",{"headings":24,"localImagePaths":25,"remoteImagePaths":26,"frontmatter":27,"imagePaths":29},[],[],[],{"title":14,"description":15,"pubDate":28,"heroImage":17},"2025-06-03",[]] \ No newline at end of file diff --git a/.astro/settings.json b/.astro/settings.json new file mode 100644 index 0000000..db0dc92 --- /dev/null +++ b/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1748973652292 + } +} \ No newline at end of file diff --git a/.astro/types.d.ts b/.astro/types.d.ts new file mode 100644 index 0000000..03d7cc4 --- /dev/null +++ b/.astro/types.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/.gitignore b/.gitignore index 75bcbfe..1f8e03f 100644 --- a/.gitignore +++ b/.gitignore @@ -130,8 +130,5 @@ dist .yarn/install-state.gz .pnp.* -# Astro -.astro/ - -# Direnv +# Direnv cache .direnv/ diff --git a/src/pages/index.astro b/src/pages/index.astro index 6bcff8c..c425140 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -56,7 +56,7 @@ import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';

Ready to Solve Your Software Puzzle?

Contact us today for a consultation and let Terakoda Software Systems help you overcome your unique software challenges with precision and excellence.

- Contact Us + Contact Us