JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 49
  • Score
    100M100P100Q106019F
  • License MIT

Elding SDK — accès aux secrets depuis le code, zéro .env

Package Exports

  • @elding/sdk
  • @elding/sdk/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@elding/sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@elding/sdk

Utilise tes clés API sans jamais les écrire dans ton code. Elding garde la clé hors de ton app : ton code manipule un placeholder, la vraie valeur est injectée au dernier moment et verrouillée à un seul domaine (anti-exfiltration).

npm install @elding/sdk

Pour une clé API HTTP : configure()

Utilise configure() pour toute clé d'API HTTP (OpenAI, Mistral, Stripe, Resend, etc.). Retourne de quoi faire un fetch normal, sans jamais exposer la clé.

import { configure } from "@elding/sdk";

// "MISTRAL_KEY" = nom du secret dans ton vault Elding.
// 2e arg = le domaine de l'API (verrouillage anti-fuite).
const { apiKey, baseURL } = await configure("MISTRAL_KEY", "https://api.mistral.ai");

const res = await fetch(`${baseURL}/v1/chat/completions`, {
  method: "POST",
  headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "mistral-small-latest", messages: [...] }),
});

Important :

  • Utilise toujours baseURL dans ton fetch, jamais l'URL de l'API en dur. En dev, baseURL pointe vers le proxy local qui injecte la vraie clé.
  • Mets apiKey dans un header (Authorization, x-api-key…), jamais dans l'URL.
  • configure() est réservé aux API HTTP. Pour autre chose, voir secret().

Pour un secret non-HTTP : secret()

DATABASE_URL, REDIS_URL, JWT_SECRET… tout ce qui n'est pas une API HTTP. Retourne la valeur brute. Jamais dans process.env, effacée de la mémoire après 5 min (réglable via ELDING_CACHE_TTL_MS).

import { secret } from "@elding/sdk";

const dbUrl = await secret("DATABASE_URL");

Plusieurs secrets d'un coup : client()

import { client } from "@elding/sdk";

const elding = await client();
const dbUrl = elding.secret("DATABASE_URL");

Règle simple

  • Clé qui part dans une requête HTTPconfigure(nom, "https://api.exemple.com").
  • N'importe quel autre secretsecret(nom).
  • Jamais de clé en dur, jamais dans process.env, jamais dans l'URL.

Dev vs prod

  • Dev (elding proxy -- npm run dev) : la clé n'entre jamais dans ton process.
  • Prod (serverless) : la clé est récupérée du vault au runtime. Elle reste verrouillée au domaine, surveillée, révocable en un clic.