mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-05 11:09:39 +00:00
code: stream,packages,nextjs (4 files)
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user