navikt/sif-brukerdialog · Archived

sif-codegen

Oversikt over hvordan codegen med @hey-api/openapi-ts er satt opp i monorepoet — pakker, scripts, post-prosessering og klient-initialisering.

Installation

$ npx skills add navikt/sif-brukerdialog --skill sif-codegen

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from navikt/sif-brukerdialog.

npx skills add navikt/sif-brukerdialog

Browse all from navikt/sif-brukerdialog

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,855 B
  • docs SUMMARY.md 162 B

History

  1. First recorded snapshot · 1 installs

SKILL.md

sif-codegen

Bruk når

  • Vi snakker om codegen, @hey-api/openapi-ts, genererte API-klienter eller client.gen.ts.
  • Noen spør om hvorfor genererte filer ser ut som de gjør, eller vil endre post-prosesseringen.
  • Vi skal legge til støtte for et nytt API (ny pakke med genererte klienter).

Arkitektur

Pakker med genererte klienter

Hvert API har sin egen pakke under packages/:

Pakke API
k9-brukerdialog-prosessering-api Søknadsinnsending (omsorgspenger, pleiepenger, etc.)
k9-sak-innsyn-api k9-sak-innsyn API (to separate configs: client + innsyn)
k9-sak-innsyn-k9-sak-api k9-sak API direkte
sif-innsyn-api sif-innsyn-api
ung-brukerdialog-api Ungdomsytelse brukerdialog API
ung-deltakelse-opplyser-api-deltaker Deltaker-API
ung-deltakelse-opplyser-api-veileder Veileder-API

Codegen-flyt

codegen:dev / codegen:prod
  └─ CODEGEN_ENV=dev|prod
      ├─ download-spec.mjs     → henter OpenAPI-spec fra dev/prod og lagrer i specs/
      ├─ openapi-ts            → genererer *.gen.ts fra spec (via openapi-ts.config*.ts)
      └─ fix-generated*.mjs   → kjører fixAndFormatGeneratedCode() fra codegenUtils.js

Post-prosessering (codegenUtils.js i root)

fixAndFormatGeneratedCode() kjøres etter codegen og transformerer de genererte filene med regex-patterns:

Pattern Hva det gjør
removeZodRegex Fjerner .regex(...) fra Zod-schemas
removeNullUnion Fjerner `\ null fra types.gen.ts (null håndteres av convertNullToUndefined-interceptor i initApiClient`)
removeBaseUrlLiteral Fjerner URL-literal fra baseURL-typen i types.gen.ts
replaceClientBaseUrl Erstatter hardkodet baseURL i client.gen.ts med 'SETBYINITAPICLIENT'
fixTsExpectError Bytter @ts-expect-error med @ts-ignore
fixIsoDateTimeAllowLocal Utvider z.iso.datetime() til å tillate local
fixVedleggBlobType Fikser vedlegg: z.string() → z.instanceof(Blob)

Etter regex-fixes kjøres prettier + eslint --fix på alle genererte filer.

Generert filstruktur

Per API genereres det en mappe med:

  • client.gen.ts — eksporterer client-instansen, baseURL settes til 'SETBYINITAPICLIENT'
  • client/client.gen.ts — lavnivå Axios-adapter (ikke berørt av baseURL-fix)
  • types.gen.ts — TypeScript-typer og Zod-schemas
  • sdk.gen.ts — typede SDK-funksjoner (klasse-basert)

Klient-initialisering i app

baseURL i client.gen.ts er en placeholder. Den faktiske URL settes av initApiClient() ved oppstart:

// f.eks. i apps/min-app/src/api/initApiClients.ts
import { initApiClient } from '@navikt/k9-sak-innsyn-k9-sak-api/utils/initApiClient';
import { client } from '@navikt/k9-sak-innsyn-k9-sak-api';

export const initApiClients = () => {
    initApiClient(client, env.FRONTEND_PATH, env.LOGIN_URL);
};

initApiClient setter baseURL, withCredentials, headers, og legger på 401-interceptor.

Relatert skill: Hvordan de genererte klientene faktisk brukes i en app (hooks, initApiClients, env-oppsett) er beskrevet i [sif-api](../sif-api/SKILL.md).

Viktige filer

  • codegenUtils.js (root) — delt post-prosesseringslogikk for alle pakker
  • packages/*/scripts/fix-generated-regex.mjs — kaller fixAndFormatGeneratedCode fra root
  • packages//configs/openapi-ts.config.ts — codegen-konfig per API/miljø
  • packages/*/scripts/download-spec.mjs — spec-nedlasting (bruker CODEGEN_ENV)