Skip to main content

Projekt-Setup

Damit VS Code die Typings findet, braucht einunser Workspace zweidrei Dinge: eine jsconfig.json im Root undRoot, den Ordner typings/ mit den .d.ts-Dateien.Dateien Beidesvon otris und den Ordner typings_dexpro/ mit unseren eigenen Deklarationen. jsconfig.json und typings/ legt die DOCUMENTS-Extension (vscode-documentsos) beim Einrichten des Projekts an.an, typings_dexpro/ pflegen wir selbst.

jsconfig.json

Die jsconfig.json sagt VS Code, welche Dateien zum Projekt gehören und welche JavaScript-Version gilt. Unsere aktuelle Konfiguration:

{
  "compilerOptions": {
    //"checkJs": true,
    "checkJs"alwaysStrict": true,
    "target": "es2016",
    "lib": ["es2016", "scripthost"],
    "baseUrl": ".",
    "paths": {
      "DexRecordLib": ["./src/DexRecord.cat/DexRecordLib.js"],
      "DexRecordReference": ["./src/DexDocumentTree.cat/DexRecordReference.mjs"],
      "gadgetAPI": ["typings/gadgetApi.d.ts"],
      "otrUpgrade_TypeDef": ["typings/otrUpgrade_TypeDef.d.ts"]
      // ... weitere Bibliotheken
    },
    "typeRoots": ["./typings"]
  },
  "include": [
    "node_modules/@types/**/*.d.ts",
    "src/**/*.js",
    "src/**/*.mjs",
    "typings/**/*.d.ts",
    "typings_dexpro/**/*.d.ts"
  ]
}
  • include bindet unsere Skripte (.js und .mjs in src/), die otris-Typings (typings/) und alleunsere Typingseigenen (typings/typings_dexpro/) ein. Nur was hier steht, kennt IntelliSense.
  • lib lässt bewusst dom weg. Sonst kollidieren die Browser-Klassen File und Document mit den gleichnamigen DOCUMENTS-Klassen.
  • target: es2016 schaltet Autovervollständigung für ES6-Features wie Map oder for...of frei. Achtung: Nicht alles davon unterstützt der DOCUMENTS-Server.
  • checkJscheckJs: true prüft jede Datei aus include auf Typfehler, nicht nur für IntelliSense. Die Meldungen erscheinen in der Problems-Ansicht.
  • alwaysStrict: true prüft jede Datei so, als stünde "use strict" darüber. Das ist auskommentiert.nur VSLinting: CodeAuf zeigtdem alsoServer IntelliSenseläuft an,ein meldetSkript abererst keinestrikt, Typfehler.wenn Wie"use manstrict"; dieim PrüfungSkript gezieltselbst einschaltet,steht.
  • steht
  • baseUrl unten.+ paths ordnen Modulnamen Dateien zu: unsere Bibliotheken (DexRecordLib → src/…) und Typings, deren Dateiname vom Modulnamen abweicht (gadgetAPI → gadgetApi.d.ts).
  • typeRoots sorgt dafür, dass Typings mit gleichem Datei- und Modulnamen (otrAssert, util.otrLogger) auch ohne paths-Eintrag gefunden werden.

Der Ordner typingstypings/

Datei

Inhalt

Woher

portalScripting.d.ts

Die komplette PortalScripting-API: context, util, DocFile, FileResultset, SystemUser, Folder usw.

Extension

scriptExtensions.d.ts

Erweiterungen im Namespace otris.*, z.B. otris.tools.ClientHeaderCode

Extension

gadgetApi.d.ts

Gadget-API im Namespace otris.gadget.*

Extension

documentsClientSdk.d.ts

Client-SDK documents.sdk.* für Code, der im Browser läuft

Extension

fileTypes.d.ts

Unsere Mappentypen, Felder, Register und Ordnernamen, erzeugt aus dem DOCUMENTS-Server

Generiert aus dem Server

otrUpgrade*.d.ts, otrAssert.d.ts, util.otrLogger.d.ts, otrPackageManager.d.ts

Typings der otris-Bibliotheken (mit deutscher Doku)

Mit den Bibliotheken ausgeliefert

Wichtig: Die Dateien in typings/ werden nicht von Hand bearbeitet, denn die Extension überschreibt sie beim nächsten Aktualisieren. Eigene Typen gehören in JSDoc-Kommentare im Skript oder in einen eigenenunseren Ordner types/typings_dexpro/ (siehe "Bibliotheken und eigene .d.ts-Dateien").

Aktualisiert werden die Typings über die Befehlspalette (Cmd/Strg+Shift+P) oder per Rechtsklick auf den Ordner typings/ im Explorer:

  • documentsOS: Install Typings installiert die Standard-Typings der API (Rechtsklick auf das Projekt-Root).
  • documentsOS: Get Typings lädt die API-Typings passend zur Serverversion.
  • documentsOS: Get File Type Typings erzeugt fileTypes.d.ts neu aus den Mappentypen des Servers. Nach jeder Änderung an Mappentypen oder Feldern ausführen.