patorg-web-api-js
TypeScript icon, indicating that this package has built-in type declarations

2.5.2 • Public • Published

PatOrg Web API JS

Docs: http://pbgweb1.patorg.org/docs/patorg-web-api-js/
Code: https://gitlab.patorg.de/dev/patorg-web-api-js

Hilfreiche Funktionen zum Arbeiten mit der PatOrg Web API mit JavaScript.

Installation

npm i patorg-web-api-js

Migration von v1 auf v2

Im Code selbst gibt es keine signifikanten Breaking Changes. Es ändert sich aber die NPM-Registry von GitLab auf das öffentliche NPM. Damit ändert sich auch der Paketname von @bsw/patorg-web-api-js auf patorg-web-api-js.

Migrations-Guide

  1. Deinstalliere das alte Paket:
    npm uninstall @bsw/patorg-web-api-js
    
  2. Lösche die Zeile mit @bsw aus der .npmrc-Datei in deinem Projekt. Wenn es der einzige Eintrag war, kannst du die Datei auch löschen.
  3. Aktiviere wieder strengeres SSL:
    npm config set strict-ssl true
    
  4. Installiere das Paket:
    npm i patorg-web-api-js@latest
    
  5. Ersetze im Code alle Importe von @bsw/patorg-web-api-js auf patorg-web-api-js.

Neues Release erzeugen

Lokal

  1. Setze die neue Version in package.json.
  2. npm run release - Das erzeugt nen neuen Build, lädt neues Paket nach NPM hoch und deployt die neue Doku. Stelle sicher, dass du lokal mit einem berechtigten NPM-Account angemeldet bist und dass für publish-docs.js die richtigen Umgebungsvariablen gesetzt hast.
  3. Committe und pushe deine Änderungen durch Git.

Über GitLab CI/CD (veraltet)

Diese Methode funktioniert wahrscheinlich mit Umstellung auf öffentliche NPM-Registry nicht mehr. Benutze die obere Methode.

Erstelle einen neuen Commit und setze als Commit-Nachricht-Titel die neue Version. Z.B.:

git commit -m "1.0.1"
git push

Anschließend startet das CI/CD von GitLab. Es wird ein neues NPM-Paket veröffentlicht und die Doku-Seite wird neu deployt.

Benutzung

import { setBaseUrl, auth, fetchApi } from "patorg-web-api-js"

// 1. Basis-URL setzen. Muss einmalig ausgeführt werden.
setBaseUrl("http://pbgbuild6/api")

async function main() {
    // 2. Authentifizierung
    await auth("LGK", "PBG", "lgk")

    // 3. Akte lesen
    const record = await fetchApi("read", { params: "context=P6.AKTE&id=PPP" })
}
main()

React

React-Komponenten befinden sich im Unterordner patorg-web-api-js/dist/react.

Binde PowapiProvider in deine Root-Komponente ein und setze die baseUrl:

import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import App from "./App"

import PowapiProvider from "patorg-web-api-js/dist/react/PowapiProvider"

const root = createRoot(document.getElementById("root")!)

root.render(
    <StrictMode>
        <PowapiProvider baseUrl="http://pbgbuild6/api">
            <App />
        </PowapiProvider>
    </StrictMode>
)

Nutze den Hook usePowapi() und setze beim Anmeldevorgang den AccessToken:

import { Page, Header, HeaderTitle, Body } from "blue-react"

import { appLogo, appTitle, getPhrase } from "../shared"
import usePowapi from "patorg-web-api-js/dist/react/usePowapi"
import { auth, fetchApi } from "patorg-web-api-js"

export default function HomePage() {
    const { setToken } = usePowapi()

    const login = async () => {
        const token = await auth("LGK", "PBG", "lgk")
        setToken(token)
    }

    const readRecord = async () => {
        const record = await fetchApi("read", { params: "context=P6.AKTE&id=PPP" })
        console.log(record)
    }

    return (
        <Page>
            <Header>
                <HeaderTitle logo={appLogo} appTitle={appTitle}>
                    {getPhrase("HELLO_WORLD")}
                </HeaderTitle>
            </Header>

            <Body containerClass="container">
                <button type="button" className="btn btn-primary" onClick={login}>
                    Log in
                </button>

                <button type="button" className="btn btn-primary" onClick={readRecord}>
                    Read record
                </button>
            </Body>
        </Page>
    )
}

PowapiProvider hat die Komponente RefreshAccessToken eingebunden, die dafür sorgt, dass der AccessToken im Hintergrund rechtzeitig vor Ablauf erneuert wird. Props zu PowapiProvider

Webpack-Warnung für Polyfill unterdrücken

Für die Nutzung von TextEncoder und TextDecoder in utils.ts musste eine Polyfill-Lösung für Node.js integriert werden.

In einem Projekt mit Webpack wirst du dann so eine Meldung erhalten:

WARNING in ./node_modules/patorg-web-api-js/dist/utils.js 13:15-30
Module not found: Error: Can't resolve 'util' in 'C:\projects\florence\Florence2\node_modules\patorg-web-api-js\dist'

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
        - add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
        - install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
        resolve.fallback: { "util": false }

Wie in der Meldung vorgeschlagen, kannst du in der webpack.config.js angeben, dass kein Fallback für Node.js's util genutzt werden soll:

module.exports = {
    // ...
    resolve: {
        // ...
        fallback: {
            util: false
        }
    }
    // ...
}

Readme

Keywords

none

Package Sidebar

Install

npm i patorg-web-api-js

Weekly Downloads

14

Version

2.5.2

License

ISC

Unpacked Size

112 kB

Total Files

18

Last publish

Collaborators

  • lgk-bsw