code: stream,packages,nextjs (4 files)

This commit is contained in:
2025-12-26 01:05:56 +00:00
parent a57d1f095f
commit 12737a0d68
4 changed files with 61 additions and 3 deletions
@@ -1,4 +1,4 @@
import { CodegenProjectTemplate } from './codegen-types'
import { CodegenProjectTemplate, CodegenSpec } from './codegen-types'
const sanitizeProjectName = (value: string) =>
value
@@ -22,10 +22,10 @@ const describeRuntime = (runtime: string) => {
}
}
export const createProjectTemplate = (spec: Parameters<CodegenProjectTemplate['files']>[0] & { projectName: string } & { packageId: string } & { runtime: string }) => {
export const createProjectTemplate = (spec: CodegenSpec): CodegenProjectTemplate => {
const baseName = sanitizeProjectName(spec.projectName || 'metabuilder-starter')
const rootDir = baseName || 'metabuilder-starter'
const manifest = {
const manifest: CodegenProjectTemplate['manifest'] = {
projectName: spec.projectName,
packageId: spec.packageId,
runtime: spec.runtime,
@@ -0,0 +1,20 @@
import JSZip from 'jszip'
import { CodegenSpec } from './codegen-types'
import { createProjectTemplate } from './create-project-template'
export const generateCodegenZip = async (spec: CodegenSpec) => {
const template = createProjectTemplate(spec)
const zip = new JSZip()
template.files.forEach((file) => {
zip.file(file.path, file.contents)
})
const uint8Array = await zip.generateAsync({ type: 'uint8array', compression: 'DEFLATE' })
return {
fileName: template.zipName,
manifest: template.manifest,
zipBuffer: Buffer.from(uint8Array),
}
}
@@ -0,0 +1,10 @@
#include <iostream>
int main() {
std::cout << "Stream Cast CLI" << std::endl;
std::cout << "Run of show:" << std::endl;
std::cout << "00:00 Intro" << std::endl;
std::cout << "00:10 Main" << std::endl;
std::cout << "00:30 Q&A" << std::endl;
return 0;
}
@@ -0,0 +1,28 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Stream Cast Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('stream_cast')
expect(metadata.name).toBe('Stream Cast')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})