@sponson/adapters 0.4.0 → 0.6.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.
- package/README.md +1 -1
- package/dist/algolia.d.ts +6 -0
- package/dist/algolia.js +151 -0
- package/dist/algolia.js.map +1 -0
- package/dist/clerk.js +1 -1
- package/dist/clerk.js.map +1 -1
- package/dist/cloud_run.d.ts +12 -0
- package/dist/cloud_run.js +469 -0
- package/dist/cloud_run.js.map +1 -0
- package/dist/cloudflare.d.ts +25 -0
- package/dist/cloudflare.js +310 -0
- package/dist/cloudflare.js.map +1 -0
- package/dist/common.d.ts +2 -6
- package/dist/common.js.map +1 -1
- package/dist/digest.d.ts +46 -0
- package/dist/digest.js +129 -0
- package/dist/digest.js.map +1 -0
- package/dist/digitalocean.d.ts +5 -0
- package/dist/digitalocean.js +243 -0
- package/dist/digitalocean.js.map +1 -0
- package/dist/http-adapter-action.d.ts +63 -0
- package/dist/http-adapter-action.js +369 -0
- package/dist/http-adapter-action.js.map +1 -0
- package/dist/http-adapter-auth.d.ts +94 -0
- package/dist/http-adapter-auth.js +440 -0
- package/dist/http-adapter-auth.js.map +1 -0
- package/dist/http-adapter-client.d.ts +57 -0
- package/dist/http-adapter-client.js +163 -0
- package/dist/http-adapter-client.js.map +1 -0
- package/dist/http-adapter-graphql.d.ts +39 -0
- package/dist/http-adapter-graphql.js +157 -0
- package/dist/http-adapter-graphql.js.map +1 -0
- package/dist/http-adapter-list.d.ts +33 -0
- package/dist/http-adapter-list.js +421 -0
- package/dist/http-adapter-list.js.map +1 -0
- package/dist/http-adapter-resource.d.ts +29 -0
- package/dist/http-adapter-resource.js +462 -0
- package/dist/http-adapter-resource.js.map +1 -0
- package/dist/http-adapter-spec.d.ts +216 -0
- package/dist/http-adapter-spec.js +660 -0
- package/dist/http-adapter-spec.js.map +1 -0
- package/dist/http-adapter.d.ts +16 -0
- package/dist/http-adapter.js +28 -0
- package/dist/http-adapter.js.map +1 -0
- package/dist/http.d.ts +61 -2
- package/dist/http.js +79 -18
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/launchdarkly.d.ts +15 -0
- package/dist/launchdarkly.js +337 -0
- package/dist/launchdarkly.js.map +1 -0
- package/dist/manual.d.ts +13 -0
- package/dist/manual.js +201 -0
- package/dist/manual.js.map +1 -0
- package/dist/neon.js +1 -1
- package/dist/neon.js.map +1 -1
- package/dist/netlify.d.ts +18 -0
- package/dist/netlify.js +436 -0
- package/dist/netlify.js.map +1 -0
- package/dist/planetscale.d.ts +10 -0
- package/dist/planetscale.js +311 -0
- package/dist/planetscale.js.map +1 -0
- package/dist/providers.d.ts +28 -0
- package/dist/providers.js +41 -0
- package/dist/providers.js.map +1 -0
- package/dist/recipes.d.ts +167 -0
- package/dist/recipes.js +246 -0
- package/dist/recipes.js.map +1 -0
- package/dist/secrets.d.ts +44 -0
- package/dist/secrets.js +279 -0
- package/dist/secrets.js.map +1 -1
- package/dist/sigv4.d.ts +56 -0
- package/dist/sigv4.js +118 -0
- package/dist/sigv4.js.map +1 -0
- package/dist/supabase.d.ts +9 -0
- package/dist/supabase.js +385 -0
- package/dist/supabase.js.map +1 -0
- package/dist/vercel.js +1 -1
- package/dist/vercel.js.map +1 -1
- package/dist/xata.d.ts +8 -0
- package/dist/xata.js +142 -0
- package/dist/xata.js.map +1 -0
- package/dist/xml.d.ts +25 -0
- package/dist/xml.js +211 -0
- package/dist/xml.js.map +1 -0
- package/package.json +11 -4
- package/recipes/amplify.yaml +147 -0
- package/recipes/auth0.yaml +178 -0
- package/recipes/azure_swa.yaml +116 -0
- package/recipes/cloudflare.yaml +108 -0
- package/recipes/cockroachdb.yaml +132 -0
- package/recipes/configcat.yaml +123 -0
- package/recipes/datadog.yaml +136 -0
- package/recipes/firebase.yaml +84 -0
- package/recipes/flagsmith.yaml +98 -0
- package/recipes/fly.yaml +97 -0
- package/recipes/fly_machines.yaml +67 -0
- package/recipes/gcs.yaml +102 -0
- package/recipes/github.yaml +124 -0
- package/recipes/growthbook.yaml +124 -0
- package/recipes/heroku.yaml +98 -0
- package/recipes/honeycomb.yaml +89 -0
- package/recipes/inngest.yaml +97 -0
- package/recipes/kinde.yaml +120 -0
- package/recipes/mongodb_atlas.yaml +119 -0
- package/recipes/okta.yaml +177 -0
- package/recipes/posthog.yaml +127 -0
- package/recipes/postmark.yaml +105 -0
- package/recipes/postmark_server.yaml +93 -0
- package/recipes/prisma.yaml +150 -0
- package/recipes/qstash.yaml +134 -0
- package/recipes/railway.yaml +130 -0
- package/recipes/render.yaml +103 -0
- package/recipes/resend.yaml +130 -0
- package/recipes/s3.yaml +108 -0
- package/recipes/sendgrid.yaml +165 -0
- package/recipes/sentry.yaml +158 -0
- package/recipes/split.yaml +121 -0
- package/recipes/statsig.yaml +124 -0
- package/recipes/stripe.yaml +310 -0
- package/recipes/stytch.yaml +113 -0
- package/recipes/svix.yaml +109 -0
- package/recipes/turso.yaml +98 -0
- package/recipes/unleash.yaml +149 -0
- package/recipes/upstash.yaml +130 -0
- package/recipes/vercel.yaml +116 -0
- package/recipes/workos.yaml +70 -0
package/dist/neon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neon.js","sourceRoot":"","sources":["../src/neon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAA+F,MAAM,eAAe,CAAC;AACpK,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzK,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAA6B,MAAM,WAAW,CAAC;AAE1G,mGAAmG;AACnG,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"neon.js","sourceRoot":"","sources":["../src/neon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAA+F,MAAM,eAAe,CAAC;AACpK,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzK,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAA6B,MAAM,WAAW,CAAC;AAE1G,mGAAmG;AACnG,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAW,CAAC;AAEhQ,qFAAqF;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAgBvE,SAAS,MAAM,CAAC,IAAoB;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AACxI,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,GAAG,aAAa,GAAG,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,4HAA4H;AAC5H,SAAS,UAAU,CAAC,CAA6C;IAC/D,OAAO,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,MAAM,CAAC,CAAa;IAC3B,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,CAAU,EAAE,IAAY;IAC7C,OAAO,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;YAAE,MAAM,IAAI,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC1K,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAG,CAAC,CAAC,SAAuC,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;IAC7J,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iHAAiH;AACjH,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,CAA6B,CAAC,IAAI,IAAK,CAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1F,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,CAAS;IACnC,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,OAAO,WAAW,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,8HAA8H;AAC9H,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAElC;;;;GAIG;AACH,KAAK,UAAU,UAAU,CAAC,CAAS,EAAE,CAAa;IAChD,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7F,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YACrE,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;YACrG,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACrG,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,mBAAmB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;QACjF,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAQD,SAAS,YAAY,CAAC,IAAa;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAE,CAAC;IACzD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzH,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/H,CAAC;AAED,MAAM,MAAM,GAAW;IACrB,OAAO,EAAE;QACP,SAAS,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;QACrC,iBAAiB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE;QAC9D,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;KACjC;IAED,QAAQ,CAAC,MAAM,EAAE,GAAG;QAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;QACrB,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,MAAM;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACvJ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3D,6HAA6H;QAC7H,IAAI,OAAO;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1H,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI;QAC5B,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAEzH,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM;YAAE,MAAM,UAAU,CAAC,MAAM,EAAE,mBAAmB,UAAU,2BAA2B,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QAErH,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAU,CAAC;QACf,IAAI,CAAC;YACH,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACzJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,mBAAmB,CAAC;gBAAE,MAAM,CAAC,CAAC;YACtD,uGAAuG;YACvG,qDAAqD;YACrD,MAAM,KAAK,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,CAAC;YACpB,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC1F,CAAC;QACD,8EAA8E;QAC9E,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACrI,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,MAAM,sBAAsB,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,OAAO,aAAa,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChI,CAAC;IAED,iHAAiH;IACjH,KAAK,CAAC,SAAS,CAAC,IAAI;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,SAAS;QACb,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Netlify: environment variable values per deploy context, and the deploy that carries them.
|
|
3
|
+
*
|
|
4
|
+
* Netlify stores one object per variable (`key`) with a list of values, one per deploy context (`production`,
|
|
5
|
+
* `deploy-preview`, `branch-deploy`, `dev`, `dev-server`, or `branch` with the branch name in
|
|
6
|
+
* `context_parameter`). A line owns one context's value of each variable it declares, never the variable: a
|
|
7
|
+
* value a human set for another context is never read as ours, changed or deleted. Every call and field below is
|
|
8
|
+
* checked against Netlify's OpenAPI document; see the NL assumptions in packages/sim/src/routes/netlify.ts and the
|
|
9
|
+
* Netlify section of docs/api-verification.md.
|
|
10
|
+
*/
|
|
11
|
+
import { type ResourceAdapter } from "@sponson/core";
|
|
12
|
+
/** Netlify's API base URL (OpenAPI `host` + `basePath`); `NETLIFY_API_URL` overrides it (the sim and tests use that). */
|
|
13
|
+
export declare const NETLIFY_DEFAULT_API_URL = "https://api.netlify.com/api/v1";
|
|
14
|
+
/**
|
|
15
|
+
* Netlify (`adapter: netlify`): op `env` manages environment variable values per deploy context and outputs the
|
|
16
|
+
* `preview_url` of the deploy that carries them. Needs `NETLIFY_AUTH_TOKEN` and `providers.netlify.site`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const netlifyAdapter: ResourceAdapter;
|
package/dist/netlify.js
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Netlify: environment variable values per deploy context, and the deploy that carries them.
|
|
3
|
+
*
|
|
4
|
+
* Netlify stores one object per variable (`key`) with a list of values, one per deploy context (`production`,
|
|
5
|
+
* `deploy-preview`, `branch-deploy`, `dev`, `dev-server`, or `branch` with the branch name in
|
|
6
|
+
* `context_parameter`). A line owns one context's value of each variable it declares, never the variable: a
|
|
7
|
+
* value a human set for another context is never read as ours, changed or deleted. Every call and field below is
|
|
8
|
+
* checked against Netlify's OpenAPI document; see the NL assumptions in packages/sim/src/routes/netlify.ts and the
|
|
9
|
+
* Netlify section of docs/api-verification.md.
|
|
10
|
+
*/
|
|
11
|
+
import { SponsonError, sha256 } from "@sponson/core";
|
|
12
|
+
import { assertNoPending, clientFor, deleteIgnoringNotFound, diffValue, optionalEnv, optionalProvider, paramError, requireEnv, requireProvider, stringParam } from "./common.js";
|
|
13
|
+
import { ShapeError, isProviderError, isTransient, obj, records } from "./http.js";
|
|
14
|
+
const ADAPTER = "netlify";
|
|
15
|
+
/** The environment Netlify reads; declared once, used by the code below and by the generated docs (`about`). */
|
|
16
|
+
const ABOUT = { credentialEnv: "NETLIFY_AUTH_TOKEN", baseUrlEnv: "NETLIFY_API_URL", title: "Netlify", category: "deploy", detect: { deps: ["@netlify/", "netlify-cli"], env: ["NETLIFY_*"], files: ["netlify.toml", ".netlify/state.json"] } };
|
|
17
|
+
/** Netlify's API base URL (OpenAPI `host` + `basePath`); `NETLIFY_API_URL` overrides it (the sim and tests use that). */
|
|
18
|
+
export const NETLIFY_DEFAULT_API_URL = "https://api.netlify.com/api/v1";
|
|
19
|
+
/**
|
|
20
|
+
* The deploy contexts a line may own (OpenAPI `envVarValue.context`). `all` is left out on purpose: one value for
|
|
21
|
+
* every context cannot belong to a line that manages one of them.
|
|
22
|
+
*/
|
|
23
|
+
const CONTEXTS = ["production", "deploy-preview", "branch-deploy", "dev", "dev-server", "branch"];
|
|
24
|
+
/** The branch dimension of a key for every context but `branch`. */
|
|
25
|
+
const NO_BRANCH = "*";
|
|
26
|
+
function client(actx) {
|
|
27
|
+
const token = requireEnv(actx.env, ABOUT.credentialEnv, ADAPTER);
|
|
28
|
+
const site = requireProvider(actx, "site", ADAPTER);
|
|
29
|
+
const api = clientFor(actx, ADAPTER, { baseUrl: optionalEnv(actx.env, ABOUT.baseUrlEnv) ?? NETLIFY_DEFAULT_API_URL, token });
|
|
30
|
+
const account = optionalProvider(actx, "account");
|
|
31
|
+
return { api, site, ...(account ? { account } : {}) };
|
|
32
|
+
}
|
|
33
|
+
/** GET /sites/{site_id}: the site's `name` (its `<name>.netlify.app` subdomain) and its account. */
|
|
34
|
+
async function loadSite(c) {
|
|
35
|
+
const s = await c.api.get(`/sites/${encodeURIComponent(c.site)}`, (body) => {
|
|
36
|
+
const o = obj(body, "the site");
|
|
37
|
+
const account = typeof o.account_id === "string" && o.account_id !== "" ? o.account_id : o.account_slug;
|
|
38
|
+
if (typeof o.name !== "string" || o.name === "")
|
|
39
|
+
throw new ShapeError("expected the site's `name` to be a string");
|
|
40
|
+
return { name: o.name, account: typeof account === "string" && account !== "" ? account : undefined };
|
|
41
|
+
});
|
|
42
|
+
c.name = s.name;
|
|
43
|
+
if (!c.account) {
|
|
44
|
+
if (!s.account)
|
|
45
|
+
throw new SponsonError("PROVIDER_RESPONSE", `${ADAPTER}: site ${c.site} names no account; set providers.netlify.account`, { adapter: ADAPTER, site: c.site });
|
|
46
|
+
c.account = s.account;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** `/accounts/{account_id}/env[/{key}…]?site_id=`: the site's own variables, never the account's shared ones. */
|
|
50
|
+
async function envPath(c, suffix = "") {
|
|
51
|
+
if (!c.account)
|
|
52
|
+
await loadSite(c);
|
|
53
|
+
return `/accounts/${encodeURIComponent(c.account)}/env${suffix}?site_id=${encodeURIComponent(c.site)}`;
|
|
54
|
+
}
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Response shapes
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
function parseValues(v, what) {
|
|
59
|
+
return records(v ?? [], what, ["id", "context"]).map((x) => ({
|
|
60
|
+
id: x.id,
|
|
61
|
+
context: x.context,
|
|
62
|
+
...(typeof x.context_parameter === "string" && x.context_parameter !== "" ? { contextParameter: x.context_parameter } : {}),
|
|
63
|
+
...(typeof x.value === "string" ? { value: x.value } : {}),
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
function parseEnvVar(e, what) {
|
|
67
|
+
if (typeof e.key !== "string")
|
|
68
|
+
throw new ShapeError(`expected ${what}.key to be a string`);
|
|
69
|
+
const updated = typeof e.updated_at === "string" ? Date.parse(e.updated_at) : NaN;
|
|
70
|
+
return {
|
|
71
|
+
key: e.key,
|
|
72
|
+
values: parseValues(e.values, `${what}.values`),
|
|
73
|
+
isSecret: e.is_secret === true,
|
|
74
|
+
...(Number.isFinite(updated) ? { updatedAt: updated } : {}),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function parseEnvVars(body) {
|
|
78
|
+
if (!Array.isArray(body))
|
|
79
|
+
throw new ShapeError("expected a list of environment variables");
|
|
80
|
+
return body.map((e, i) => parseEnvVar(obj(e, `[${i}]`), `[${i}]`));
|
|
81
|
+
}
|
|
82
|
+
function parseDeploys(body) {
|
|
83
|
+
return records(body, "the deploy list", ["id", "state"]).map((d, i) => {
|
|
84
|
+
const created = typeof d.created_at === "string" ? Date.parse(d.created_at) : NaN;
|
|
85
|
+
if (!Number.isFinite(created))
|
|
86
|
+
throw new ShapeError(`expected [${i}].created_at to be a date`);
|
|
87
|
+
return {
|
|
88
|
+
id: d.id,
|
|
89
|
+
state: d.state,
|
|
90
|
+
createdAt: created,
|
|
91
|
+
...(typeof d.context === "string" ? { context: d.context } : {}),
|
|
92
|
+
...(typeof d.commit_ref === "string" ? { commitRef: d.commit_ref } : {}),
|
|
93
|
+
...(typeof d.review_id === "number" ? { reviewId: d.review_id } : {}),
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function branchParam(params) {
|
|
98
|
+
const raw = params.branch;
|
|
99
|
+
if (raw !== undefined && raw !== null && typeof raw !== "string")
|
|
100
|
+
throw paramError(ADAPTER, "param `branch` must be a string", "branch");
|
|
101
|
+
return typeof raw === "string" && raw !== "" ? raw : undefined;
|
|
102
|
+
}
|
|
103
|
+
function envScope(params) {
|
|
104
|
+
const context = stringParam(params, "context", ADAPTER);
|
|
105
|
+
if (!CONTEXTS.includes(context))
|
|
106
|
+
throw paramError(ADAPTER, `param \`context\` must be one of ${CONTEXTS.join(", ")} (got ${JSON.stringify(context)})`, "context");
|
|
107
|
+
const branch = branchParam(params);
|
|
108
|
+
if (context === "branch" && branch === undefined)
|
|
109
|
+
throw paramError(ADAPTER, "param `branch` is required with `context: branch`", "branch");
|
|
110
|
+
if (context !== "branch" && branch !== undefined)
|
|
111
|
+
throw paramError(ADAPTER, `param \`branch\` only applies to \`context: branch\` (got context ${context})`, "branch");
|
|
112
|
+
const values = params.values;
|
|
113
|
+
if (values !== undefined && (typeof values !== "object" || values === null || Array.isArray(values)))
|
|
114
|
+
throw paramError(ADAPTER, "param `values` must be an object of NAME → value", "values");
|
|
115
|
+
return { context: context, branch, values: (values ?? {}) };
|
|
116
|
+
}
|
|
117
|
+
/** Identity: context, branch (`*` outside the `branch` context) and name. A variable name never contains `:`. */
|
|
118
|
+
function envKey(context, branch, name) {
|
|
119
|
+
return `env:${context}:${branch ?? NO_BRANCH}:${name}`;
|
|
120
|
+
}
|
|
121
|
+
/** Inverse of envKey. A branch may contain `:`, a variable name may not. */
|
|
122
|
+
function parseEnvKey(key) {
|
|
123
|
+
const [kind, context] = key.split(":", 2);
|
|
124
|
+
const last = key.lastIndexOf(":");
|
|
125
|
+
const branchAt = (kind?.length ?? 0) + (context?.length ?? 0) + 2;
|
|
126
|
+
if (kind !== "env" || !context || last < branchAt)
|
|
127
|
+
throw new SponsonError("INTERNAL", `${ADAPTER}: \`${key}\` is not an env key`, { adapter: ADAPTER, key });
|
|
128
|
+
return { context, branch: key.slice(branchAt, last), name: key.slice(last + 1) };
|
|
129
|
+
}
|
|
130
|
+
function scopeLabel(scope, name) {
|
|
131
|
+
return `${name} (${scope.context === "branch" ? `branch ${scope.branch}` : scope.context})`;
|
|
132
|
+
}
|
|
133
|
+
function owns(v, scope) {
|
|
134
|
+
return v.context === scope.context && (scope.context !== "branch" || v.contextParameter === scope.branch);
|
|
135
|
+
}
|
|
136
|
+
/** What a value hashes as: its text, or "" when Netlify will not show it (a secret outside `dev`): such a value always diffs as an update. */
|
|
137
|
+
function comparable(e, v) {
|
|
138
|
+
return e.isSecret && v.context !== "dev" ? "" : (v.value ?? "");
|
|
139
|
+
}
|
|
140
|
+
function valueRecord(scope, e, v) {
|
|
141
|
+
return { key: envKey(scope.context, scope.branch, e.key), id: v.id, hash: sha256(comparable(e, v)), label: scopeLabel(scope, e.key) };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* A variable with one value for all contexts cannot be managed by a line that owns one context: adding ours would
|
|
145
|
+
* either be refused or leave two values competing for the same deploys.
|
|
146
|
+
*/
|
|
147
|
+
function refuseAll(e, scope) {
|
|
148
|
+
return new SponsonError("PROVIDER_CONFLICT", `${ADAPTER}: ${e.key} has one value for all deploy contexts; this line manages only ${scope.context === "branch" ? `branch ${scope.branch}` : scope.context}. ` +
|
|
149
|
+
`In the Netlify UI, give ${e.key} different values for each deploy context, then run again.`, { adapter: ADAPTER, key: envKey(scope.context, scope.branch, e.key) });
|
|
150
|
+
}
|
|
151
|
+
async function listVars(c) {
|
|
152
|
+
return c.api.get(await envPath(c), parseEnvVars);
|
|
153
|
+
}
|
|
154
|
+
/** The value body of PATCH /accounts/{account_id}/env/{key} and of each `values` item of POST /accounts/{account_id}/env. */
|
|
155
|
+
function valueBody(scope, value) {
|
|
156
|
+
return { context: scope.context, value: String(value), ...(scope.branch !== undefined ? { context_parameter: scope.branch } : {}) };
|
|
157
|
+
}
|
|
158
|
+
function ownValue(e, scope, path) {
|
|
159
|
+
const v = e.values.find((x) => owns(x, scope));
|
|
160
|
+
if (!v)
|
|
161
|
+
throw new SponsonError("PROVIDER_RESPONSE", `${ADAPTER}: ${path}: the answer does not list the ${scopeLabel(scope, e.key)} value`, { adapter: ADAPTER, path, key: e.key });
|
|
162
|
+
return v;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Write the given values: one POST for the variables that do not exist yet (createEnvVars), one PATCH per
|
|
166
|
+
* variable that does (setEnvVarValue, "updates or creates a new value for an existing environment variable").
|
|
167
|
+
* Returns the written variables as Netlify answered them.
|
|
168
|
+
*/
|
|
169
|
+
async function writeValues(c, scope, toWrite, existing) {
|
|
170
|
+
const fresh = toWrite.filter(([name]) => !existing.has(name));
|
|
171
|
+
const out = [];
|
|
172
|
+
if (fresh.length > 0) {
|
|
173
|
+
const path = await envPath(c);
|
|
174
|
+
try {
|
|
175
|
+
out.push(...(await c.api.post(path, fresh.map(([key, value]) => ({ key, values: [valueBody(scope, value)] })), parseEnvVars)));
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
// Created meanwhile (by a human, or by an earlier attempt of ours whose answer was lost): set the value instead.
|
|
179
|
+
if (!isProviderError(e, ["PROVIDER_CONFLICT", "PROVIDER_INVALID"]))
|
|
180
|
+
throw e;
|
|
181
|
+
const now = new Set((await listVars(c)).map((v) => v.key));
|
|
182
|
+
if (!fresh.every(([name]) => now.has(name)))
|
|
183
|
+
throw e;
|
|
184
|
+
for (const [name] of fresh)
|
|
185
|
+
existing.add(name);
|
|
186
|
+
return writeValues(c, scope, toWrite, existing);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
for (const [name, value] of toWrite.filter(([n]) => existing.has(n))) {
|
|
190
|
+
const path = await envPath(c, `/${encodeURIComponent(name)}`);
|
|
191
|
+
out.push(await c.api.patch(path, valueBody(scope, value), (body) => parseEnvVar(obj(body, "the variable"), "the variable"), { idempotent: true }));
|
|
192
|
+
}
|
|
193
|
+
return out;
|
|
194
|
+
}
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
// Deploys: which deploy of this commit carries the line's values
|
|
197
|
+
// ---------------------------------------------------------------------------
|
|
198
|
+
/** The deploy contexts whose builds read a line's values. `branch` values reach Deploy Previews and branch deploys of that branch. */
|
|
199
|
+
const DEPLOYS_OF = {
|
|
200
|
+
production: ["production"],
|
|
201
|
+
"deploy-preview": ["deploy-preview"],
|
|
202
|
+
"branch-deploy": ["branch-deploy"],
|
|
203
|
+
branch: ["deploy-preview", "branch-deploy"],
|
|
204
|
+
dev: [],
|
|
205
|
+
"dev-server": [],
|
|
206
|
+
};
|
|
207
|
+
/** States a deploy does not leave by itself (OpenAPI: the `state` filter of listSiteDeploys). */
|
|
208
|
+
const FAILED_STATES = new Set(["error", "rejected"]);
|
|
209
|
+
/** The recent deploys of this commit that read the line's context, newest first. */
|
|
210
|
+
async function deploysOf(c, sha, scope) {
|
|
211
|
+
const contexts = DEPLOYS_OF[scope.context];
|
|
212
|
+
const list = await c.api.get(`/sites/${encodeURIComponent(c.site)}/deploys?page=1&per_page=100`, parseDeploys);
|
|
213
|
+
return list.filter((d) => d.commitRef === sha && (d.context === undefined || contexts.includes(d.context))).sort((a, b) => b.createdAt - a.createdAt);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Build again what a deploy that predates the write built: POST /sites/{site_id}/builds builds the production
|
|
217
|
+
* branch without `branch`, a branch deploy of that branch with it. A Deploy Preview cannot be rebuilt through the
|
|
218
|
+
* API (Netlify documents retrying one only in its UI), so for `deploy-preview` lines this returns false.
|
|
219
|
+
*/
|
|
220
|
+
async function rebuild(c, scope, gitBranch) {
|
|
221
|
+
if (scope.context === "deploy-preview" || DEPLOYS_OF[scope.context].length === 0)
|
|
222
|
+
return false;
|
|
223
|
+
const branch = scope.context === "production" ? undefined : scope.context === "branch" ? (scope.branch.endsWith("*") ? gitBranch : scope.branch) : gitBranch;
|
|
224
|
+
await c.api.post(`/sites/${encodeURIComponent(c.site)}/builds${branch ? `?branch=${encodeURIComponent(branch)}` : ""}`);
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
function deployFailed(d) {
|
|
228
|
+
return new SponsonError("PROVIDER_INVALID", `${ADAPTER}: deploy ${d.id} ended ${d.state}; it will not become ready`, { adapter: ADAPTER, deploy: d.id, state: d.state });
|
|
229
|
+
}
|
|
230
|
+
/** Documented URL formats: `<deploy id>--<site>.netlify.app` (permalink) and `deploy-preview-<n>--<site>.netlify.app`. */
|
|
231
|
+
function deployOutputs(d, siteName) {
|
|
232
|
+
const permalink = `https://${d.id}--${siteName}.netlify.app`;
|
|
233
|
+
const preview = d.context === "deploy-preview" && d.reviewId !== undefined ? `https://deploy-preview-${d.reviewId}--${siteName}.netlify.app` : permalink;
|
|
234
|
+
return { preview_url: permalink, deploy_id: d.id, deploy_preview_url: preview };
|
|
235
|
+
}
|
|
236
|
+
/** When the line's variables last changed in Netlify: a deploy created before that does not carry them. */
|
|
237
|
+
function writtenAt(vars, scope) {
|
|
238
|
+
return vars.filter((v) => v.key in scope.values).reduce((max, v) => Math.max(max, v.updatedAt ?? 0), 0);
|
|
239
|
+
}
|
|
240
|
+
/** After a write: rebuild (or report) a deploy of this commit that started before it. */
|
|
241
|
+
async function afterWrite(c, actx, scope, at) {
|
|
242
|
+
if (DEPLOYS_OF[scope.context].length === 0)
|
|
243
|
+
return undefined;
|
|
244
|
+
const stale = (await deploysOf(c, actx.ctx.git.sha, scope)).find((d) => d.createdAt < at && !FAILED_STATES.has(d.state));
|
|
245
|
+
if (!stale)
|
|
246
|
+
return undefined;
|
|
247
|
+
if (await rebuild(c, scope, actx.ctx.git.branch)) {
|
|
248
|
+
actx.log(`deploy ${stale.id} predates the variables; started a new build`);
|
|
249
|
+
return { redeployed: true };
|
|
250
|
+
}
|
|
251
|
+
actx.log(`deploy ${stale.id} started before the variables were written and does not carry them; retry it in the Netlify UI (Deploys → Retry) or push a commit`);
|
|
252
|
+
return { stale_deploy: stale.id };
|
|
253
|
+
}
|
|
254
|
+
// ---------------------------------------------------------------------------
|
|
255
|
+
// op: env
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
/** The line's context unless the plan names one: production values under `--env production`, else the git branch's. */
|
|
258
|
+
function contextFor(env) {
|
|
259
|
+
return env === "production" ? "production" : "branch";
|
|
260
|
+
}
|
|
261
|
+
const env = {
|
|
262
|
+
outputs: {
|
|
263
|
+
preview_url: { available: "external", event: "deploy" },
|
|
264
|
+
deploy_id: { available: "external", event: "deploy" },
|
|
265
|
+
deploy_preview_url: { available: "external", event: "deploy" },
|
|
266
|
+
},
|
|
267
|
+
defaults(params, ctx) {
|
|
268
|
+
const context = params.context ?? contextFor(ctx.env);
|
|
269
|
+
const out = { ...params, context };
|
|
270
|
+
if (context === "branch" && out.branch === undefined)
|
|
271
|
+
out.branch = ctx.git.branch;
|
|
272
|
+
return out;
|
|
273
|
+
},
|
|
274
|
+
writesEnvironment(params, ctx) {
|
|
275
|
+
const context = typeof params.context === "string" ? params.context : contextFor(ctx.env);
|
|
276
|
+
return context === "production" ? "production" : context;
|
|
277
|
+
},
|
|
278
|
+
/**
|
|
279
|
+
* A variable is a parent object every scope writing a value of it shares: the create (one POST per new name) and
|
|
280
|
+
* destroy's "delete the variable once no value is left" race another scope's write without a lock. `lockOn` names
|
|
281
|
+
* one object per line and a line declares several variables, so the only identity that makes every two lines
|
|
282
|
+
* sharing a variable exclude each other is the site's variable collection, `netlify:<site>:env` (ADR 0019).
|
|
283
|
+
* Only ids: never a value or a credential.
|
|
284
|
+
*/
|
|
285
|
+
lockOn(_params, provider) {
|
|
286
|
+
const site = provider.site;
|
|
287
|
+
return typeof site === "string" && site !== "" ? `netlify:${site}:env` : null;
|
|
288
|
+
},
|
|
289
|
+
async read(actx, params) {
|
|
290
|
+
const scope = envScope(params);
|
|
291
|
+
const c = client(actx);
|
|
292
|
+
const vars = await listVars(c);
|
|
293
|
+
const resources = [];
|
|
294
|
+
for (const name of Object.keys(scope.values)) {
|
|
295
|
+
const e = vars.find((x) => x.key === name);
|
|
296
|
+
if (!e)
|
|
297
|
+
continue;
|
|
298
|
+
if (e.values.some((v) => v.context === "all"))
|
|
299
|
+
throw refuseAll(e, scope);
|
|
300
|
+
const v = e.values.find((x) => owns(x, scope));
|
|
301
|
+
if (v)
|
|
302
|
+
resources.push(valueRecord(scope, e, v));
|
|
303
|
+
}
|
|
304
|
+
return resources.length === 0 ? null : { resources, outputs: {} };
|
|
305
|
+
},
|
|
306
|
+
diff(live, params) {
|
|
307
|
+
const scope = envScope(params);
|
|
308
|
+
const byKey = new Map((live?.resources ?? []).map((r) => [r.key, r]));
|
|
309
|
+
return Object.entries(scope.values).map(([name, desired]) => {
|
|
310
|
+
const key = envKey(scope.context, scope.branch, name);
|
|
311
|
+
return diffValue({ key, label: scopeLabel(scope, name), live: byKey.get(key), desired, sensitive: true });
|
|
312
|
+
});
|
|
313
|
+
},
|
|
314
|
+
async apply(actx, params, live) {
|
|
315
|
+
assertNoPending(params, ADAPTER);
|
|
316
|
+
const scope = envScope(params);
|
|
317
|
+
const c = client(actx);
|
|
318
|
+
const keyOf = (name) => envKey(scope.context, scope.branch, name);
|
|
319
|
+
const kindOf = new Map(env.diff(live, params).map((d) => [d.key, d.kind]));
|
|
320
|
+
const toWrite = Object.entries(scope.values).filter(([name]) => kindOf.get(keyOf(name)) !== "unchanged");
|
|
321
|
+
const creating = toWrite.map(([name]) => keyOf(name)).filter((k) => kindOf.get(k) === "create");
|
|
322
|
+
const byKey = new Map((live?.resources ?? []).map((r) => [r.key, r]));
|
|
323
|
+
let notes;
|
|
324
|
+
if (toWrite.length > 0) {
|
|
325
|
+
const vars = await listVars(c);
|
|
326
|
+
const shared = vars.find((e) => e.key in scope.values && e.values.some((v) => v.context === "all"));
|
|
327
|
+
if (shared)
|
|
328
|
+
throw refuseAll(shared, scope);
|
|
329
|
+
if (creating.length > 0)
|
|
330
|
+
await actx.intend(creating);
|
|
331
|
+
actx.log(`set ${toWrite.length} value(s) in ${scope.context === "branch" ? `branch ${scope.branch}` : scope.context}`);
|
|
332
|
+
const written = await writeValues(c, scope, toWrite, new Set(vars.map((v) => v.key)));
|
|
333
|
+
for (const [name, value] of toWrite) {
|
|
334
|
+
const e = written.find((x) => x.key === name);
|
|
335
|
+
if (!e)
|
|
336
|
+
throw new SponsonError("PROVIDER_RESPONSE", `${ADAPTER}: the write's answer does not list ${name}`, { adapter: ADAPTER, key: name });
|
|
337
|
+
// A secret's value never reads back (outside `dev`), so it is recorded as read() will see it.
|
|
338
|
+
const v = ownValue(e, scope, name);
|
|
339
|
+
byKey.set(keyOf(name), { ...valueRecord(scope, e, v), hash: sha256(e.isSecret && v.context !== "dev" ? "" : String(value)) });
|
|
340
|
+
}
|
|
341
|
+
notes = await afterWrite(c, actx, scope, writtenAt(written, scope) || Date.now());
|
|
342
|
+
}
|
|
343
|
+
const resources = Object.keys(scope.values).map((name) => {
|
|
344
|
+
const rec = byKey.get(keyOf(name));
|
|
345
|
+
if (!rec)
|
|
346
|
+
throw new SponsonError("INTERNAL", `${ADAPTER}: no record for ${name} after apply`, { adapter: ADAPTER, key: keyOf(name) });
|
|
347
|
+
return rec;
|
|
348
|
+
});
|
|
349
|
+
return { resources, outputs: {}, created: creating, ...(notes ? { notes } : {}) };
|
|
350
|
+
},
|
|
351
|
+
/**
|
|
352
|
+
* Delete the values this line owns (deleteEnvVarValue), then the variable only if that left it with no value at
|
|
353
|
+
* all: a value someone set for another context keeps the variable alive.
|
|
354
|
+
*/
|
|
355
|
+
async destroy(actx, resources) {
|
|
356
|
+
const c = client(actx);
|
|
357
|
+
for (const r of resources) {
|
|
358
|
+
const { name } = parseEnvKey(r.key);
|
|
359
|
+
const one = await envPath(c, `/${encodeURIComponent(name)}`);
|
|
360
|
+
await deleteIgnoringNotFound(c.api, await envPath(c, `/${encodeURIComponent(name)}/value/${encodeURIComponent(r.id)}`));
|
|
361
|
+
let left;
|
|
362
|
+
try {
|
|
363
|
+
left = await c.api.get(one, (body) => parseEnvVar(obj(body, "the variable"), "the variable"));
|
|
364
|
+
}
|
|
365
|
+
catch (e) {
|
|
366
|
+
if (isProviderError(e, "PROVIDER_NOT_FOUND"))
|
|
367
|
+
continue;
|
|
368
|
+
throw e;
|
|
369
|
+
}
|
|
370
|
+
if (left.values.length === 0)
|
|
371
|
+
await deleteIgnoringNotFound(c.api, one);
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
/** Every value of this line's context (and branch), whoever set it. */
|
|
375
|
+
async listScope(actx, params) {
|
|
376
|
+
const scope = envScope(params);
|
|
377
|
+
const c = client(actx);
|
|
378
|
+
return (await listVars(c)).flatMap((e) => e.values.filter((v) => owns(v, scope)).map((v) => valueRecord(scope, e, v)));
|
|
379
|
+
},
|
|
380
|
+
/**
|
|
381
|
+
* One line per context (and branch), every variable `{ keep: true }`: Sponson takes over that the values exist,
|
|
382
|
+
* never what they are. `branch` is omitted when it is the current git branch, the op's default.
|
|
383
|
+
*/
|
|
384
|
+
adopt(resources, ctx) {
|
|
385
|
+
const groups = new Map();
|
|
386
|
+
for (const r of resources) {
|
|
387
|
+
const { context, branch, name } = parseEnvKey(r.key);
|
|
388
|
+
const id = `${context}\u0000${branch}`;
|
|
389
|
+
const g = groups.get(id) ?? { context, branch, values: {}, keys: [] };
|
|
390
|
+
g.values[name] = { keep: true };
|
|
391
|
+
g.keys.push(r.key);
|
|
392
|
+
groups.set(id, g);
|
|
393
|
+
}
|
|
394
|
+
return [...groups.values()].map(({ context, branch, values, keys }) => {
|
|
395
|
+
const pinned = context === "branch" && branch !== ctx.git.branch;
|
|
396
|
+
return { id: context === "branch" ? (pinned ? `env-branch-${branch}` : "env-branch") : `env-${context}`, params: { context, ...(pinned ? { branch } : {}), values }, keys };
|
|
397
|
+
});
|
|
398
|
+
},
|
|
399
|
+
/**
|
|
400
|
+
* The newest deploy of this commit that reads the line's context and started after its variables last changed.
|
|
401
|
+
* An older one does not carry them, so it is never reported as ready.
|
|
402
|
+
*/
|
|
403
|
+
async awaitExternal(actx, params) {
|
|
404
|
+
const scope = envScope(params);
|
|
405
|
+
if (DEPLOYS_OF[scope.context].length === 0) {
|
|
406
|
+
throw new SponsonError("PARAM_INVALID", `${ADAPTER}: \`context: ${scope.context}\` values are for local development, not part of any deploy, so this line has no \`preview_url\``, { adapter: ADAPTER, context: scope.context });
|
|
407
|
+
}
|
|
408
|
+
const c = client(actx);
|
|
409
|
+
let found;
|
|
410
|
+
try {
|
|
411
|
+
const at = writtenAt(await listVars(c), scope);
|
|
412
|
+
found = (await deploysOf(c, actx.ctx.git.sha, scope)).find((d) => d.createdAt >= at);
|
|
413
|
+
if (found?.state === "ready")
|
|
414
|
+
await loadSite(c);
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
// The HTTP layer already retried; a provider that is still unavailable means "not known yet", not "failed".
|
|
418
|
+
if (isTransient(e))
|
|
419
|
+
return null;
|
|
420
|
+
throw e;
|
|
421
|
+
}
|
|
422
|
+
if (!found)
|
|
423
|
+
return null;
|
|
424
|
+
if (found.state === "ready")
|
|
425
|
+
return deployOutputs(found, c.name);
|
|
426
|
+
if (FAILED_STATES.has(found.state))
|
|
427
|
+
throw deployFailed(found);
|
|
428
|
+
return null;
|
|
429
|
+
},
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* Netlify (`adapter: netlify`): op `env` manages environment variable values per deploy context and outputs the
|
|
433
|
+
* `preview_url` of the deploy that carries them. Needs `NETLIFY_AUTH_TOKEN` and `providers.netlify.site`.
|
|
434
|
+
*/
|
|
435
|
+
export const netlifyAdapter = { name: ADAPTER, ops: { env }, about: ABOUT };
|
|
436
|
+
//# sourceMappingURL=netlify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netlify.js","sourceRoot":"","sources":["../src/netlify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ResourceAdapter } from "@sponson/core";
|
|
2
|
+
/** PlanetScale's API base URL; `PLANETSCALE_API_URL` overrides it (the sim and tests use that). */
|
|
3
|
+
export declare const PLANETSCALE_DEFAULT_API_URL = "https://api.planetscale.com/v1";
|
|
4
|
+
/**
|
|
5
|
+
* PlanetScale (Vitess / MySQL databases): op `branch` creates a development branch per scope and waits until it
|
|
6
|
+
* is ready; op `password` creates a password on it whose `connection_string` and `password` outputs (sensitive)
|
|
7
|
+
* exist only in the run that creates it (`once`). Needs `PLANETSCALE_SERVICE_TOKEN_ID`,
|
|
8
|
+
* `PLANETSCALE_SERVICE_TOKEN` and `providers.planetscale.{organization,database}`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const planetscaleAdapter: ResourceAdapter;
|