@robinpath/netlify
Advanced tools
| import type { ModuleAdapter } from "@robinpath/core"; | ||
| declare const NetlifyModule: ModuleAdapter; | ||
| export default NetlifyModule; | ||
| export { NetlifyModule }; | ||
| export { NetlifyFunctions, NetlifyFunctionMetadata, NetlifyModuleMetadata, NetlifyCredentialTypes, } from "./netlify.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASrD,QAAA,MAAM,aAAa,EAAE,aAQpB,CAAC;AAEF,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"} |
| import { NetlifyFunctions, NetlifyFunctionMetadata, NetlifyModuleMetadata, NetlifyCredentialTypes, configureNetlify, } from "./netlify.js"; | ||
| const NetlifyModule = { | ||
| name: "netlify", | ||
| functions: NetlifyFunctions, | ||
| functionMetadata: NetlifyFunctionMetadata, | ||
| moduleMetadata: NetlifyModuleMetadata, | ||
| credentialTypes: NetlifyCredentialTypes, | ||
| configure: configureNetlify, | ||
| global: false, | ||
| }; | ||
| export default NetlifyModule; | ||
| export { NetlifyModule }; | ||
| export { NetlifyFunctions, NetlifyFunctionMetadata, NetlifyModuleMetadata, NetlifyCredentialTypes, } from "./netlify.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,aAAa,GAAkB;IACnC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,gBAAgB;IAC3B,gBAAgB,EAAE,uBAAuB;IACzC,cAAc,EAAE,qBAAqB;IACrC,eAAe,EAAE,sBAAsB;IACvC,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"} |
| /** | ||
| * RobinPath Netlify Module (Node port) | ||
| * | ||
| * Netlify REST API client — sites, deploys, and builds. Uses the RobinPath | ||
| * credential vault for bearer-token authentication against api.netlify.com. | ||
| * | ||
| * Credential type declared by this module: | ||
| * - netlify : { access_token } → Bearer auth with a Personal Access Token. | ||
| * | ||
| * All handlers return the parsed JSON response as-is. Errors are never | ||
| * thrown — they are returned as `{error, code, status?, netlify_error?}`. | ||
| */ | ||
| import type { BuiltinHandler, CredentialTypeSchema, FunctionMetadata, ModuleHost, ModuleMetadata } from "@robinpath/core"; | ||
| export declare function configureNetlify(h: ModuleHost): void; | ||
| export declare const NetlifyFunctions: Record<string, BuiltinHandler>; | ||
| export declare const NetlifyCredentialTypes: CredentialTypeSchema[]; | ||
| export declare const NetlifyFunctionMetadata: Record<string, FunctionMetadata>; | ||
| export declare const NetlifyModuleMetadata: ModuleMetadata; | ||
| //# sourceMappingURL=netlify.d.ts.map |
| {"version":3,"file":"netlify.d.ts","sourceRoot":"","sources":["../src/netlify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAezB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAEpD;AAwND,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAK3D,CAAC;AAIF,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,EAiBxD,CAAC;AA8CF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0HpE,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,cA4BnC,CAAC"} |
+394
| /** | ||
| * RobinPath Netlify Module (Node port) | ||
| * | ||
| * Netlify REST API client — sites, deploys, and builds. Uses the RobinPath | ||
| * credential vault for bearer-token authentication against api.netlify.com. | ||
| * | ||
| * Credential type declared by this module: | ||
| * - netlify : { access_token } → Bearer auth with a Personal Access Token. | ||
| * | ||
| * All handlers return the parsed JSON response as-is. Errors are never | ||
| * thrown — they are returned as `{error, code, status?, netlify_error?}`. | ||
| */ | ||
| // ── Module-local state (populated by configure hook) ──────────────────── | ||
| const state = {}; | ||
| function host() { | ||
| if (!state.host) { | ||
| throw new Error("Netlify module not initialized. Pass the adapter to rp.registerModule() via loadModule so its configure() hook runs first."); | ||
| } | ||
| return state.host; | ||
| } | ||
| export function configureNetlify(h) { | ||
| state.host = h; | ||
| } | ||
| // ── Constants ────────────────────────────────────────────────────────── | ||
| const API_BASE = "https://api.netlify.com/api/v1"; | ||
| const CREDENTIAL_TYPE = "netlify"; | ||
| function errorReturn(error, code, extra = {}) { | ||
| return { error, code, ...extra }; | ||
| } | ||
| async function resolveToken(credentialSlug) { | ||
| if (!credentialSlug) { | ||
| return errorReturn("Credential slug is required.", "credential_not_found"); | ||
| } | ||
| let fields; | ||
| try { | ||
| fields = await host().credentials.get(credentialSlug); | ||
| } | ||
| catch (e) { | ||
| return errorReturn(e instanceof Error ? e.message : String(e), "credential_not_found"); | ||
| } | ||
| if (!fields) { | ||
| return errorReturn(`Credential '${credentialSlug}' not found.`, "credential_not_found"); | ||
| } | ||
| const token = String(fields.access_token ?? ""); | ||
| if (!token) { | ||
| return errorReturn("Credential has no `access_token` field.", "token_missing"); | ||
| } | ||
| return { token }; | ||
| } | ||
| // ── HTTP helper ──────────────────────────────────────────────────────── | ||
| async function http(cred, method, pathAndQuery, body) { | ||
| const init = { | ||
| method, | ||
| headers: { | ||
| Authorization: `Bearer ${cred.token}`, | ||
| Accept: "application/json", | ||
| ...(body !== undefined ? { "Content-Type": "application/json" } : {}), | ||
| }, | ||
| }; | ||
| if (body !== undefined) | ||
| init.body = JSON.stringify(body); | ||
| let response; | ||
| try { | ||
| response = await fetch(`${API_BASE}${pathAndQuery}`, init); | ||
| } | ||
| catch (e) { | ||
| return errorReturn(e instanceof Error ? e.message : String(e), "transport"); | ||
| } | ||
| const raw = await response.text(); | ||
| let decoded = null; | ||
| if (raw) { | ||
| try { | ||
| decoded = JSON.parse(raw); | ||
| } | ||
| catch { | ||
| decoded = { raw }; | ||
| } | ||
| } | ||
| if (response.status >= 200 && response.status < 300) { | ||
| return decoded ?? { ok: true, status: response.status }; | ||
| } | ||
| let message = `Netlify returned HTTP ${response.status}.`; | ||
| if (decoded && typeof decoded === "object") { | ||
| const d = decoded; | ||
| if (typeof d.message === "string") | ||
| message = d.message; | ||
| else if (typeof d.error === "string") | ||
| message = d.error; | ||
| } | ||
| else if (typeof decoded === "string") { | ||
| message = decoded; | ||
| } | ||
| let code = "netlify_error"; | ||
| if (response.status === 404) | ||
| code = "not_found"; | ||
| else if (response.status === 401 || response.status === 403) | ||
| code = "permission_denied"; | ||
| else if (response.status === 429) | ||
| code = "rate_limited"; | ||
| return errorReturn(message, code, { | ||
| status: response.status, | ||
| netlify_error: decoded, | ||
| }); | ||
| } | ||
| // ── Helpers ──────────────────────────────────────────────────────────── | ||
| function buildQuery(params) { | ||
| const qs = new URLSearchParams(); | ||
| for (const [k, v] of Object.entries(params)) { | ||
| if (v !== undefined && v !== null && v !== "") | ||
| qs.set(k, String(v)); | ||
| } | ||
| const str = qs.toString(); | ||
| return str ? `?${str}` : ""; | ||
| } | ||
| function asString(v) { | ||
| if (v === undefined || v === null) | ||
| return ""; | ||
| return String(v); | ||
| } | ||
| function asOpts(v) { | ||
| return v && typeof v === "object" && !Array.isArray(v) | ||
| ? v | ||
| : {}; | ||
| } | ||
| // ── Handlers ─────────────────────────────────────────────────────────── | ||
| const listSites = async (args) => { | ||
| const cred = await resolveToken(asString(args[0])); | ||
| if ("error" in cred) | ||
| return cred; | ||
| const opts = asOpts(args[1]); | ||
| const query = buildQuery({ | ||
| name: opts.name, | ||
| filter: opts.filter, | ||
| page: opts.page, | ||
| per_page: opts.perPage ?? opts.per_page, | ||
| }); | ||
| return (await http(cred, "GET", `/sites${query}`)); | ||
| }; | ||
| const getSite = async (args) => { | ||
| const cred = await resolveToken(asString(args[0])); | ||
| if ("error" in cred) | ||
| return cred; | ||
| const siteId = asString(args[1]); | ||
| if (!siteId) | ||
| return errorReturn("`siteId` is required.", "validation"); | ||
| return (await http(cred, "GET", `/sites/${encodeURIComponent(siteId)}`)); | ||
| }; | ||
| const deploySite = async (args) => { | ||
| const cred = await resolveToken(asString(args[0])); | ||
| if ("error" in cred) | ||
| return cred; | ||
| const siteId = asString(args[1]); | ||
| if (!siteId) | ||
| return errorReturn("`siteId` is required.", "validation"); | ||
| const opts = asOpts(args[2]); | ||
| const body = {}; | ||
| if (opts.files) | ||
| body.files = opts.files; | ||
| if (opts.functions) | ||
| body.functions = opts.functions; | ||
| if (opts.draft !== undefined) | ||
| body.draft = Boolean(opts.draft); | ||
| if (opts.branch) | ||
| body.branch = opts.branch; | ||
| if (opts.title) | ||
| body.title = opts.title; | ||
| if (opts.async !== undefined) | ||
| body.async = Boolean(opts.async); | ||
| return (await http(cred, "POST", `/sites/${encodeURIComponent(siteId)}/deploys`, body)); | ||
| }; | ||
| const listBuilds = async (args) => { | ||
| const cred = await resolveToken(asString(args[0])); | ||
| if ("error" in cred) | ||
| return cred; | ||
| const siteId = asString(args[1]); | ||
| if (!siteId) | ||
| return errorReturn("`siteId` is required.", "validation"); | ||
| const opts = asOpts(args[2]); | ||
| const query = buildQuery({ | ||
| page: opts.page, | ||
| per_page: opts.perPage ?? opts.per_page, | ||
| }); | ||
| return (await http(cred, "GET", `/sites/${encodeURIComponent(siteId)}/builds${query}`)); | ||
| }; | ||
| // ── Exports: functions map ───────────────────────────────────────────── | ||
| export const NetlifyFunctions = { | ||
| listSites, | ||
| getSite, | ||
| deploySite, | ||
| listBuilds, | ||
| }; | ||
| // ── Exports: credential types ────────────────────────────────────────── | ||
| export const NetlifyCredentialTypes = [ | ||
| { | ||
| slug: CREDENTIAL_TYPE, | ||
| title: "Netlify", | ||
| icon: "cloud", | ||
| fields: [ | ||
| { | ||
| name: "access_token", | ||
| title: "Personal Access Token", | ||
| type: "password", | ||
| required: true, | ||
| placeholder: "nfp_…", | ||
| description: "Create one at app.netlify.com/user/applications#personal-access-tokens. Grant the scopes your automation needs.", | ||
| }, | ||
| ], | ||
| }, | ||
| ]; | ||
| // ── Metadata: shared parameter descriptors ───────────────────────────── | ||
| const credentialParam = { | ||
| name: "credential", | ||
| title: "Credential", | ||
| description: "Slug of a saved `netlify` credential.", | ||
| dataType: "string", | ||
| formInputType: "resource", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "my_netlify", | ||
| resource: { | ||
| type: "credential", | ||
| listFn: "credential.list", | ||
| modes: ["list", "expression"], | ||
| searchable: true, | ||
| filter: { type: CREDENTIAL_TYPE }, | ||
| }, | ||
| }; | ||
| const siteIdParam = { | ||
| name: "siteId", | ||
| title: "Site ID", | ||
| description: "Netlify site ID (UUID) or site name (`my-site.netlify.app`).", | ||
| dataType: "string", | ||
| formInputType: "text", | ||
| required: true, | ||
| allowExpression: true, | ||
| placeholder: "12345678-abcd-…", | ||
| }; | ||
| const commonErrors = { | ||
| credential_not_found: "No credential with that slug exists in the vault.", | ||
| token_missing: "The credential exists but has no `access_token` field.", | ||
| transport: "Network failure calling api.netlify.com.", | ||
| netlify_error: "Netlify returned an error — see `netlify_error` and `status`.", | ||
| not_found: "The resource does not exist or the token lacks access.", | ||
| permission_denied: "The token is valid but lacks the required scope.", | ||
| rate_limited: "Netlify rate limited the request.", | ||
| validation: "A required parameter was missing or invalid.", | ||
| }; | ||
| // ── Exports: function metadata ───────────────────────────────────────── | ||
| export const NetlifyFunctionMetadata = { | ||
| listSites: { | ||
| title: "List sites", | ||
| summary: "List sites visible to the token", | ||
| description: "Calls `GET /sites`.", | ||
| group: "sites", | ||
| action: "query", | ||
| icon: "list", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["netlify", "site", "list"], | ||
| parameters: [ | ||
| credentialParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "Recognized keys:\n name : substring match on name\n filter : 'all' | 'owner' | 'guest'\n page : pagination page number\n perPage : results per page", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "array", | ||
| returnDescription: "Array of site objects.", | ||
| errors: commonErrors, | ||
| example: 'netlify.listSites "my_netlify" {perPage: 20}', | ||
| }, | ||
| getSite: { | ||
| title: "Get site", | ||
| summary: "Fetch a single site by ID or name", | ||
| description: "Calls `GET /sites/{siteId}`.", | ||
| group: "sites", | ||
| action: "read", | ||
| icon: "folder", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["netlify", "site"], | ||
| parameters: [credentialParam, siteIdParam], | ||
| returnType: "object", | ||
| errors: commonErrors, | ||
| example: 'netlify.getSite "my_netlify" "my-site.netlify.app"', | ||
| }, | ||
| deploySite: { | ||
| title: "Deploy site", | ||
| summary: "Create a new deploy for a site", | ||
| description: "Calls `POST /sites/{siteId}/deploys`. Pass a file digest map in `options.files` (and optional `options.functions`) to trigger the diff-upload flow.", | ||
| group: "deploys", | ||
| action: "write", | ||
| icon: "upload", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: false, | ||
| since: "1.0.0", | ||
| tags: ["netlify", "deploy", "create"], | ||
| parameters: [ | ||
| credentialParam, | ||
| siteIdParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "Recognized keys:\n files : { 'index.html': '<sha1>', … } — digest map\n functions : { name: '<sha256>' } — function digests\n draft : bool — create a draft deploy\n branch : git branch label\n title : deploy title\n async : bool — return before processing completes", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 6, | ||
| }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "The created deploy object with `id`, `state`, `deploy_url`.", | ||
| errors: commonErrors, | ||
| example: 'netlify.deploySite "my_netlify" "my-site.netlify.app" {files: {"index.html": "abc123…"}}', | ||
| }, | ||
| listBuilds: { | ||
| title: "List builds", | ||
| summary: "List recent builds for a site", | ||
| description: "Calls `GET /sites/{siteId}/builds`.", | ||
| group: "deploys", | ||
| action: "query", | ||
| icon: "list", | ||
| capability: "manage_options", | ||
| sideEffects: ["makes_http_call"], | ||
| idempotent: true, | ||
| since: "1.0.0", | ||
| tags: ["netlify", "build", "list"], | ||
| parameters: [ | ||
| credentialParam, | ||
| siteIdParam, | ||
| { | ||
| name: "options", | ||
| title: "Options", | ||
| description: "Recognized keys:\n page : pagination page number\n perPage : results per page", | ||
| dataType: "object", | ||
| formInputType: "json", | ||
| required: false, | ||
| allowExpression: true, | ||
| language: "json", | ||
| rows: 3, | ||
| advanced: true, | ||
| }, | ||
| ], | ||
| returnType: "array", | ||
| returnDescription: "Array of build objects.", | ||
| errors: commonErrors, | ||
| example: 'netlify.listBuilds "my_netlify" "my-site.netlify.app"', | ||
| }, | ||
| }; | ||
| // ── Exports: module metadata ─────────────────────────────────────────── | ||
| export const NetlifyModuleMetadata = { | ||
| slug: "netlify", | ||
| title: "Netlify", | ||
| summary: "Sites, deploys, and builds via the Netlify REST API", | ||
| description: "Drive Netlify from RobinPath scripts. Every method takes a saved `netlify` credential slug as its first argument; the token is decrypted at call time, scrubbed from logs, and recorded in the audit trail.\n\nErrors are returned as `{error, code, status, netlify_error?}` rather than thrown.", | ||
| category: "devops", | ||
| icon: "icon.svg", | ||
| color: "#00C7B7", | ||
| version: "0.2.0", | ||
| docsUrl: "https://docs.robinpath.com/modules/netlify", | ||
| status: "stable", | ||
| requires: [], | ||
| minNodeVersion: "18.0.0", | ||
| credentialsType: CREDENTIAL_TYPE, | ||
| operationGroups: { | ||
| sites: { | ||
| title: "Sites", | ||
| description: "Read and list Netlify sites.", | ||
| order: 1, | ||
| }, | ||
| deploys: { | ||
| title: "Deploys & Builds", | ||
| description: "Trigger deploys and inspect build history.", | ||
| order: 2, | ||
| }, | ||
| }, | ||
| methods: Object.keys(NetlifyFunctions), | ||
| }; | ||
| //# sourceMappingURL=netlify.js.map |
| {"version":3,"file":"netlify.js","sourceRoot":"","sources":["../src/netlify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,2EAA2E;AAE3E,MAAM,KAAK,GAA0B,EAAE,CAAC;AAExC,SAAS,IAAI;IACX,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAa;IAC5C,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,0EAA0E;AAE1E,MAAM,QAAQ,GAAG,gCAAgC,CAAC;AAClD,MAAM,eAAe,GAAG,SAAS,CAAC;AAWlC,SAAS,WAAW,CAClB,KAAa,EACb,IAAY,EACZ,QAAiC,EAAE;IAEnC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAiB,CAAC;AAClD,CAAC;AAQD,KAAK,UAAU,YAAY,CACzB,cAAsB;IAEtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,8BAA8B,EAAE,sBAAsB,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,MAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO,WAAW,CAChB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,sBAAsB,CACvB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,WAAW,CAChB,eAAe,cAAc,cAAc,EAC3C,sBAAsB,CACvB,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAChB,yCAAyC,EACzC,eAAe,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,0EAA0E;AAE1E,KAAK,UAAU,IAAI,CACjB,IAAkB,EAClB,MAAc,EACd,YAAoB,EACpB,IAAc;IAEd,MAAM,IAAI,GAAgB;QACxB,MAAM;QACN,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,kBAAkB;YAC1B,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE;KACF,CAAC;IACF,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO,WAAW,CAChB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACpD,OAAO,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,GAAG,yBAAyB,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC1D,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;aAClD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1D,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,GAAG,eAAe,CAAC;IAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,IAAI,GAAG,WAAW,CAAC;SAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QACzD,IAAI,GAAG,mBAAmB,CAAC;SACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,IAAI,GAAG,cAAc,CAAC;IAExD,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;QAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAE1E,SAAS,UAAU,CAAC,MAA+B;IACjD,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IACxB,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC,CAAE,CAA6B;QAChC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,0EAA0E;AAE1E,MAAM,SAAS,GAAmB,KAAK,EAAE,IAAI,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAsB,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,UAAU,CAAC;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;KACxC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAmB,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,OAAO,GAAmB,KAAK,EAAE,IAAI,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAsB,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM;QACT,OAAO,WAAW,CAAC,uBAAuB,EAAE,YAAY,CAAmB,CAAC;IAC9E,OAAO,CAAC,MAAM,IAAI,CAChB,IAAI,EACJ,KAAK,EACL,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE,CACvC,CAAmB,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAmB,KAAK,EAAE,IAAI,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAsB,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM;QACT,OAAO,WAAW,CAAC,uBAAuB,EAAE,YAAY,CAAmB,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACpD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,IAAI,CAChB,IAAI,EACJ,MAAM,EACN,UAAU,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAC9C,IAAI,CACL,CAAmB,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAmB,KAAK,EAAE,IAAI,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAsB,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM;QACT,OAAO,WAAW,CAAC,uBAAuB,EAAE,YAAY,CAAmB,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,UAAU,CAAC;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;KACxC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,IAAI,CAChB,IAAI,EACJ,KAAK,EACL,UAAU,kBAAkB,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,CACtD,CAAmB,CAAC;AACvB,CAAC,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,SAAS;IACT,OAAO;IACP,UAAU;IACV,UAAU;CACX,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,uBAAuB;gBAC9B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,OAAO;gBACpB,WAAW,EACT,iHAAiH;aACpH;SACF;KACF;CACF,CAAC;AAEF,0EAA0E;AAE1E,MAAM,eAAe,GAAsB;IACzC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,uCAAuC;IACpD,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,UAAU;IACzB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE;QACR,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;QAC7B,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;KAClC;CACF,CAAC;AAEF,MAAM,WAAW,GAAsB;IACrC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,8DAA8D;IAC3E,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,oBAAoB,EAAE,mDAAmD;IACzE,aAAa,EAAE,wDAAwD;IACvE,SAAS,EAAE,0CAA0C;IACrD,aAAa,EAAE,+DAA+D;IAC9E,SAAS,EAAE,wDAAwD;IACnE,iBAAiB,EAAE,kDAAkD;IACrE,YAAY,EAAE,mCAAmC;IACjD,UAAU,EAAE,8CAA8C;CAC3D,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,uBAAuB,GAAqC;IACvE,SAAS,EAAE;QACT,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,qBAAqB;QAClC,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,UAAU,EAAE;YACV,eAAe;YACf;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,WAAW,EACT,oKAAoK;gBACtK,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,IAAI;aACf;SACF;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,wBAAwB;QAC3C,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,8CAA8C;KACxD;IAED,OAAO,EAAE;QACP,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,mCAAmC;QAC5C,WAAW,EAAE,8BAA8B;QAC3C,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;QAC1C,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,oDAAoD;KAC9D;IAED,UAAU,EAAE;QACV,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,gCAAgC;QACzC,WAAW,EACT,qJAAqJ;QACvJ,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACrC,UAAU,EAAE;YACV,eAAe;YACf,WAAW;YACX;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,WAAW,EACT,oSAAoS;gBACtS,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,CAAC;aACR;SACF;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,6DAA6D;QAChF,MAAM,EAAE,YAAY;QACpB,OAAO,EACL,0FAA0F;KAC7F;IAED,UAAU,EAAE;QACV,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;QAClC,UAAU,EAAE;YACV,eAAe;YACf,WAAW;YACX;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,oFAAoF;gBACjG,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,IAAI;aACf;SACF;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,yBAAyB;QAC5C,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,uDAAuD;KACjE;CACF,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,qDAAqD;IAC9D,WAAW,EACT,mSAAmS;IACrS,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,EAAE;IACZ,cAAc,EAAE,QAAQ;IACxB,eAAe,EAAE,eAAe;IAChC,eAAe,EAAE;QACf,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,8BAA8B;YAC3C,KAAK,EAAE,CAAC;SACT;QACD,OAAO,EAAE;YACP,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,4CAA4C;YACzD,KAAK,EAAE,CAAC;SACT;KACF;IACD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;CACvC,CAAC"} |
+12
-6
| { | ||
| "name": "@robinpath/netlify", | ||
| "version": "0.1.2", | ||
| "version": "0.3.0", | ||
| "publishConfig": { | ||
@@ -23,6 +23,6 @@ "access": "public" | ||
| "peerDependencies": { | ||
| "@robinpath/core": ">=0.20.0" | ||
| "@robinpath/core": ">=0.40.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@robinpath/core": "^0.30.1", | ||
| "@robinpath/core": "^0.40.0", | ||
| "typescript": "^5.6.0" | ||
@@ -39,6 +39,12 @@ }, | ||
| "type": "integration", | ||
| "auth": "api-key", | ||
| "functionCount": 21, | ||
| "baseUrl": "https://api.netlify.com" | ||
| "auth": "credential-vault", | ||
| "credentialType": "netlify", | ||
| "functionCount": 4, | ||
| "baseUrl": "https://api.netlify.com", | ||
| "language": "nodejs", | ||
| "platforms": [ | ||
| "cloud", | ||
| "cli" | ||
| ] | ||
| } | ||
| } |
+1
-1
@@ -22,3 +22,3 @@ # @robinpath/netlify | ||
| ```bash | ||
| npm install @robinpath/netlify | ||
| robinpath add @robinpath/netlify | ||
| ``` | ||
@@ -25,0 +25,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Network access
Supply chain riskThis module accesses the network.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
32804
766.68%10
400%430
Infinity%2
100%