@snowieedev/vertex-builder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ import type { Builder } from './interfaces/Builder.js';
2
+ import type { VertexConfig } from '@snowieedev/vertex-config';
3
+ export type ProviderType = 'esbuild';
4
+ export declare function createBuilder(providerType: ProviderType, cwd: string, config: VertexConfig): Promise<Builder>;
@@ -0,0 +1,12 @@
1
+ import { esbuildProvider } from './providers/esbuild/index.js';
2
+ const providers = {
3
+ esbuild: esbuildProvider,
4
+ };
5
+ export async function createBuilder(providerType, cwd, config) {
6
+ const provider = providers[providerType];
7
+ if (!provider) {
8
+ throw new Error(`Unknown builder provider: ${providerType}`);
9
+ }
10
+ return provider.create(cwd, config);
11
+ }
12
+ //# sourceMappingURL=createBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBuilder.js","sourceRoot":"","sources":["../src/createBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAA0B,EAC1B,GAAW,EACX,MAAoB;IAEpB,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './interfaces/Builder.js';
2
+ export * from './createBuilder.js';
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './interfaces/Builder.js';
2
+ export * from './createBuilder.js';
3
+ // Providers are not directly exported to enforce the interface abstraction
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,2EAA2E"}
@@ -0,0 +1,11 @@
1
+ import type { VertexConfig } from '@snowieedev/vertex-config';
2
+ export interface BuildResult {
3
+ durationMs: number;
4
+ warnings: string[];
5
+ }
6
+ export interface Builder {
7
+ build(): Promise<BuildResult>;
8
+ }
9
+ export interface BuilderProvider {
10
+ create(cwd: string, config: VertexConfig): Promise<Builder>;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/interfaces/Builder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { Builder, BuilderProvider, BuildResult } from '../../interfaces/Builder.js';
2
+ import type { VertexConfig } from '@snowieedev/vertex-config';
3
+ export declare class EsbuildBuilder implements Builder {
4
+ private cwd;
5
+ private config;
6
+ constructor(cwd: string, config: VertexConfig);
7
+ build(): Promise<BuildResult>;
8
+ }
9
+ export declare const esbuildProvider: BuilderProvider;
@@ -0,0 +1,60 @@
1
+ import * as esbuild from 'esbuild';
2
+ import path from 'node:path';
3
+ import fs from 'node:fs';
4
+ import { logger } from '@snowieedev/vertex-shared';
5
+ export class EsbuildBuilder {
6
+ cwd;
7
+ config;
8
+ constructor(cwd, config) {
9
+ this.cwd = cwd;
10
+ this.config = config;
11
+ }
12
+ async build() {
13
+ const startTime = performance.now();
14
+ const entryPoint = path.resolve(this.cwd, 'src/index.ts'); // Simplification for Phase 1
15
+ // In Phase 1, we'll try to find a few common entry points, or error if missing.
16
+ // In later phases, we'd integrate App Router, file-system routing, etc.
17
+ const possibleEntries = ['src/index.ts', 'src/index.tsx', 'src/main.ts', 'src/main.tsx'];
18
+ let finalEntry = entryPoint;
19
+ let entryFound = false;
20
+ for (const entry of possibleEntries) {
21
+ if (fs.existsSync(path.resolve(this.cwd, entry))) {
22
+ finalEntry = path.resolve(this.cwd, entry);
23
+ entryFound = true;
24
+ break;
25
+ }
26
+ }
27
+ if (!entryFound) {
28
+ logger.warn(`No entry point found (searched ${possibleEntries.join(', ')}).`);
29
+ return { durationMs: 0, warnings: ['No entry point found'] };
30
+ }
31
+ const outdir = path.resolve(this.cwd, 'dist');
32
+ try {
33
+ const result = await esbuild.build({
34
+ entryPoints: [finalEntry],
35
+ outdir,
36
+ bundle: true,
37
+ minify: true,
38
+ sourcemap: true,
39
+ target: 'es2022',
40
+ format: 'esm',
41
+ // Example base path logic
42
+ publicPath: this.config.base || '/',
43
+ metafile: true,
44
+ });
45
+ const durationMs = performance.now() - startTime;
46
+ const warnings = result.warnings.map(w => w.text);
47
+ logger.success(`Build completed in ${durationMs.toFixed(2)}ms`);
48
+ return { durationMs, warnings };
49
+ }
50
+ catch (error) {
51
+ throw new Error(`Esbuild failed: ${error instanceof Error ? error.message : String(error)}`);
52
+ }
53
+ }
54
+ }
55
+ export const esbuildProvider = {
56
+ async create(cwd, config) {
57
+ return new EsbuildBuilder(cwd, config);
58
+ }
59
+ };
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/esbuild/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@snowieedev/vertex-builder",
3
+ "version": "0.1.0",
4
+ "description": "Build system abstraction and providers for VERTEX",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "dependencies": {
12
+ "esbuild": "^0.20.1",
13
+ "@snowieedev/vertex-shared": "0.1.0",
14
+ "@snowieedev/vertex-config": "0.1.0"
15
+ },
16
+ "devDependencies": {
17
+ "typescript": "^5.4.0"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsc --watch",
22
+ "clean": "rm -rf dist"
23
+ }
24
+ }