@heramb1/provider-netlify 0.1.1

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.
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # @heramb1/provider-netlify
2
+
3
+ Netlify provider lock for [Heramb](https://heramb.pages.dev) — REST API driver for frontend and static site deploys.
4
+
5
+ Install the CLI to use this provider:
6
+
7
+ ```bash
8
+ npm install -g @heramb1/cli
9
+ ```
10
+
11
+ ## License
12
+
13
+ MIT
@@ -0,0 +1,22 @@
1
+ import type { DeployOptions, DeployResult, DestroyResult, EnvVarResult, ProviderLock, StatusResult } from '@heramb1/core';
2
+ export interface NetlifyLockOptions {
3
+ token: string;
4
+ }
5
+ export declare class NetlifyLock implements ProviderLock {
6
+ readonly name = "netlify";
7
+ private token;
8
+ constructor(options: NetlifyLockOptions);
9
+ private headers;
10
+ deploy(options: DeployOptions): Promise<DeployResult>;
11
+ getStatus(siteId: string): Promise<StatusResult>;
12
+ setEnvVars(siteId: string, vars: Record<string, string>): Promise<EnvVarResult>;
13
+ getLogs(siteId: string): AsyncIterable<string>;
14
+ destroy(siteId: string): Promise<DestroyResult>;
15
+ private ensureSite;
16
+ private buildLocal;
17
+ private collectFiles;
18
+ private uploadDeploy;
19
+ private waitForDeploy;
20
+ }
21
+ export declare function createNetlifyLock(token: string): NetlifyLock;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,EAAE,kBAAkB;IAIvC,OAAO,CAAC,OAAO;IAOT,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBrD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BhD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC9E,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAM/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAevC,UAAU;IAwBxB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;YAoBN,YAAY;YAoCZ,aAAa;CAwB5B;AA4BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE5D"}
package/dist/index.js ADDED
@@ -0,0 +1,236 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
3
+ import { join, relative, resolve } from 'node:path';
4
+ const NETLIFY_API = 'https://api.netlify.com/api/v1';
5
+ export class NetlifyLock {
6
+ name = 'netlify';
7
+ token;
8
+ constructor(options) {
9
+ this.token = options.token;
10
+ }
11
+ headers(contentType = 'application/json') {
12
+ return {
13
+ Authorization: `Bearer ${this.token}`,
14
+ ...(contentType ? { 'Content-Type': contentType } : {}),
15
+ };
16
+ }
17
+ async deploy(options) {
18
+ const siteName = options.projectId ?? options.serviceId ?? options.name;
19
+ if (!siteName) {
20
+ throw new Error('Netlify deploy requires projectId or name in heramb.config.json');
21
+ }
22
+ const site = await this.ensureSite(siteName);
23
+ if (options.envVars) {
24
+ await this.setEnvVars(site.id, options.envVars);
25
+ }
26
+ const distDir = this.buildLocal(options.path ?? '.', options.envVars);
27
+ const deploy = await this.uploadDeploy(site.id, distDir);
28
+ const url = await this.waitForDeploy(deploy.id, site);
29
+ return {
30
+ url,
31
+ serviceId: site.id,
32
+ };
33
+ }
34
+ async getStatus(siteId) {
35
+ try {
36
+ const res = await fetch(`${NETLIFY_API}/sites/${siteId}`, {
37
+ headers: this.headers(),
38
+ });
39
+ if (!res.ok)
40
+ return { status: 'unknown' };
41
+ const site = (await res.json());
42
+ const url = site.ssl_url || site.url;
43
+ const deployRes = await fetch(`${NETLIFY_API}/sites/${siteId}/deploys?per_page=1`, {
44
+ headers: this.headers(),
45
+ });
46
+ let status = url ? 'live' : 'unknown';
47
+ if (deployRes.ok) {
48
+ const deploys = (await deployRes.json());
49
+ const latest = deploys[0];
50
+ if (latest)
51
+ status = mapNetlifyDeployState(latest.state);
52
+ }
53
+ return {
54
+ status,
55
+ url: url ? normalizeUrl(url) : undefined,
56
+ };
57
+ }
58
+ catch {
59
+ return { status: 'unknown' };
60
+ }
61
+ }
62
+ async setEnvVars(siteId, vars) {
63
+ try {
64
+ const siteRes = await fetch(`${NETLIFY_API}/sites/${siteId}`, {
65
+ headers: this.headers(),
66
+ });
67
+ if (!siteRes.ok) {
68
+ throw new Error(`Netlify site not found: ${await siteRes.text()}`);
69
+ }
70
+ const site = (await siteRes.json());
71
+ const env = { ...(site.build_settings?.env ?? {}), ...vars };
72
+ const res = await fetch(`${NETLIFY_API}/sites/${siteId}`, {
73
+ method: 'PATCH',
74
+ headers: this.headers(),
75
+ body: JSON.stringify({
76
+ build_settings: { env },
77
+ }),
78
+ });
79
+ if (!res.ok) {
80
+ throw new Error(`Netlify env error: ${await res.text()}`);
81
+ }
82
+ return { ok: true };
83
+ }
84
+ catch (err) {
85
+ return {
86
+ ok: false,
87
+ error: err instanceof Error ? err.message : String(err),
88
+ };
89
+ }
90
+ }
91
+ async *getLogs(siteId) {
92
+ const status = await this.getStatus(siteId);
93
+ yield `[netlify] Site ${siteId} — status: ${status.status}${status.url ? ` (${status.url})` : ''}`;
94
+ yield `[netlify] Use Netlify dashboard for deploy logs`;
95
+ }
96
+ async destroy(siteId) {
97
+ try {
98
+ const res = await fetch(`${NETLIFY_API}/sites/${siteId}`, {
99
+ method: 'DELETE',
100
+ headers: this.headers(),
101
+ });
102
+ return { ok: res.ok };
103
+ }
104
+ catch (err) {
105
+ return {
106
+ ok: false,
107
+ error: err instanceof Error ? err.message : String(err),
108
+ };
109
+ }
110
+ }
111
+ async ensureSite(name) {
112
+ const listRes = await fetch(`${NETLIFY_API}/sites?filter=all&name=${encodeURIComponent(name)}`, {
113
+ headers: this.headers(),
114
+ });
115
+ if (listRes.ok) {
116
+ const sites = (await listRes.json());
117
+ const match = sites.find((s) => s.name === name);
118
+ if (match)
119
+ return match;
120
+ }
121
+ const createRes = await fetch(`${NETLIFY_API}/sites`, {
122
+ method: 'POST',
123
+ headers: this.headers(),
124
+ body: JSON.stringify({ name }),
125
+ });
126
+ if (!createRes.ok) {
127
+ throw new Error(`Netlify site create failed: ${await createRes.text()}`);
128
+ }
129
+ return createRes.json();
130
+ }
131
+ buildLocal(appPath, envVars) {
132
+ const absPath = resolve(process.cwd(), appPath);
133
+ const distDir = join(absPath, 'dist');
134
+ const env = {
135
+ ...process.env,
136
+ ...envVars,
137
+ NODE_ENV: 'development',
138
+ npm_config_production: 'false',
139
+ };
140
+ execSync('npm install', { cwd: absPath, env, stdio: 'pipe' });
141
+ execSync('npm run build', { cwd: absPath, env, stdio: 'pipe' });
142
+ if (!existsSync(distDir)) {
143
+ throw new Error(`Build did not produce dist/ at ${distDir}`);
144
+ }
145
+ return distDir;
146
+ }
147
+ collectFiles(distDir) {
148
+ const files = [];
149
+ const walk = (dir) => {
150
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
151
+ const fullPath = join(dir, entry.name);
152
+ if (entry.isDirectory()) {
153
+ walk(fullPath);
154
+ continue;
155
+ }
156
+ const relPath = relative(distDir, fullPath).replace(/\\/g, '/');
157
+ files.push({ path: relPath, content: readFileSync(fullPath) });
158
+ }
159
+ };
160
+ walk(distDir);
161
+ return files;
162
+ }
163
+ async uploadDeploy(siteId, distDir) {
164
+ const files = this.collectFiles(distDir);
165
+ if (files.length === 0) {
166
+ throw new Error(`No build output found in ${distDir}`);
167
+ }
168
+ const createRes = await fetch(`${NETLIFY_API}/sites/${siteId}/deploys`, {
169
+ method: 'POST',
170
+ headers: this.headers(),
171
+ body: JSON.stringify({}),
172
+ });
173
+ if (!createRes.ok) {
174
+ throw new Error(`Netlify deploy create failed: ${await createRes.text()}`);
175
+ }
176
+ const deploy = (await createRes.json());
177
+ for (const file of files) {
178
+ const uploadRes = await fetch(`${NETLIFY_API}/deploys/${deploy.id}/files/${encodeURIComponent(file.path)}`, {
179
+ method: 'PUT',
180
+ headers: this.headers(''),
181
+ body: file.content,
182
+ });
183
+ if (!uploadRes.ok) {
184
+ throw new Error(`Netlify file upload failed (${file.path}): ${await uploadRes.text()}`);
185
+ }
186
+ }
187
+ return deploy;
188
+ }
189
+ async waitForDeploy(deployId, site, maxAttempts = 60) {
190
+ for (let i = 0; i < maxAttempts; i++) {
191
+ const res = await fetch(`${NETLIFY_API}/deploys/${deployId}`, {
192
+ headers: this.headers(),
193
+ });
194
+ if (!res.ok) {
195
+ await sleep(3000);
196
+ continue;
197
+ }
198
+ const deploy = (await res.json());
199
+ if (deploy.state === 'ready') {
200
+ return normalizeUrl(deploy.ssl_url ?? deploy.deploy_ssl_url ?? site.ssl_url ?? site.url);
201
+ }
202
+ if (deploy.state === 'error') {
203
+ throw new Error(deploy.error_message ?? 'Netlify deployment failed');
204
+ }
205
+ await sleep(3000);
206
+ }
207
+ throw new Error('Netlify deployment timed out');
208
+ }
209
+ }
210
+ function normalizeUrl(url) {
211
+ return url.startsWith('http') ? url : `https://${url}`;
212
+ }
213
+ function mapNetlifyDeployState(state) {
214
+ switch (state) {
215
+ case 'ready':
216
+ return 'live';
217
+ case 'building':
218
+ case 'processing':
219
+ case 'uploading':
220
+ return 'building';
221
+ case 'preparing':
222
+ case 'enqueued':
223
+ return 'pending';
224
+ case 'error':
225
+ return 'failed';
226
+ default:
227
+ return 'unknown';
228
+ }
229
+ }
230
+ function sleep(ms) {
231
+ return new Promise((resolve) => setTimeout(resolve, ms));
232
+ }
233
+ export function createNetlifyLock(token) {
234
+ return new NetlifyLock({ token });
235
+ }
236
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@heramb1/provider-netlify",
3
+ "version": "0.1.1",
4
+ "description": "Netlify lock — REST API driver for Heramb",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc"
16
+ },
17
+ "files": ["dist"],
18
+ "license": "MIT",
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/buildwithrenuka/heremb.git",
25
+ "directory": "packages/providers/netlify"
26
+ },
27
+ "keywords": ["deploy", "netlify", "heramb"],
28
+ "engines": {
29
+ "node": ">=18"
30
+ },
31
+ "dependencies": {
32
+ "@heramb1/core": "0.1.1"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^22.10.2",
36
+ "typescript": "^5.7.2"
37
+ }
38
+ }