@ndla/types-backend 1.0.37 → 1.0.39
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/build/article-api-openapi.d.ts +0 -4
- package/build/article-api-openapi.js +0 -4
- package/build/article-api-openapi.js.map +1 -1
- package/build/audio-api-openapi.d.ts +2 -6
- package/build/audio-api-openapi.js +0 -4
- package/build/audio-api-openapi.js.map +1 -1
- package/build/concept-api-openapi.d.ts +0 -4
- package/build/concept-api-openapi.js +0 -4
- package/build/concept-api-openapi.js.map +1 -1
- package/build/draft-api-openapi.d.ts +2 -5
- package/build/draft-api-openapi.js +0 -4
- package/build/draft-api-openapi.js.map +1 -1
- package/build/frontpage-api-openapi.d.ts +0 -4
- package/build/frontpage-api-openapi.js +0 -4
- package/build/frontpage-api-openapi.js.map +1 -1
- package/build/image-api-openapi.d.ts +5 -9
- package/build/image-api-openapi.js +0 -4
- package/build/image-api-openapi.js.map +1 -1
- package/build/learningpath-api-openapi.d.ts +0 -4
- package/build/learningpath-api-openapi.js +0 -4
- package/build/learningpath-api-openapi.js.map +1 -1
- package/build/myndla-api-openapi.d.ts +0 -4
- package/build/myndla-api-openapi.js +0 -4
- package/build/myndla-api-openapi.js.map +1 -1
- package/build/oembed-proxy-openapi.d.ts +0 -4
- package/build/oembed-proxy-openapi.js +0 -4
- package/build/oembed-proxy-openapi.js.map +1 -1
- package/build/scripts/generate-openapi.d.ts +1 -0
- package/build/scripts/generate-openapi.js +116 -0
- package/build/scripts/generate-openapi.js.map +1 -0
- package/build/search-api-openapi.d.ts +0 -4
- package/build/search-api-openapi.js +0 -4
- package/build/search-api-openapi.js.map +1 -1
- package/oembed-proxy/package.json +5 -0
- package/package.json +34 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-api-openapi.js","sourceRoot":"","sources":["../article-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"article-api-openapi.js","sourceRoot":"","sources":["../article-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file was auto-generated by openapi-typescript.
|
|
3
|
-
* Do not make direct changes to the file.
|
|
4
|
-
*/
|
|
5
1
|
export type paths = {
|
|
6
2
|
"/audio-api/v1/audio": {
|
|
7
3
|
parameters: {
|
|
@@ -520,13 +516,13 @@ export type components = {
|
|
|
520
516
|
MetaDataAndFileForm: {
|
|
521
517
|
metadata: components["schemas"]["NewAudioMetaInformationDTO"];
|
|
522
518
|
/** Format: binary */
|
|
523
|
-
file:
|
|
519
|
+
file: Blob;
|
|
524
520
|
};
|
|
525
521
|
/** MetaDataAndOptFileForm */
|
|
526
522
|
MetaDataAndOptFileForm: {
|
|
527
523
|
metadata: components["schemas"]["UpdatedAudioMetaInformationDTO"];
|
|
528
524
|
/** Format: binary */
|
|
529
|
-
file?:
|
|
525
|
+
file?: Blob;
|
|
530
526
|
};
|
|
531
527
|
/**
|
|
532
528
|
* NewAudioMetaInformationDTO
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-api-openapi.js","sourceRoot":"","sources":["../audio-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio-api-openapi.js","sourceRoot":"","sources":["../audio-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concept-api-openapi.js","sourceRoot":"","sources":["../concept-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"concept-api-openapi.js","sourceRoot":"","sources":["../concept-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file was auto-generated by openapi-typescript.
|
|
3
|
-
* Do not make direct changes to the file.
|
|
4
|
-
*/
|
|
5
1
|
export type paths = {
|
|
6
2
|
"/draft-api/v1/drafts/licenses": {
|
|
7
3
|
parameters: {
|
|
@@ -789,7 +785,7 @@ export type components = {
|
|
|
789
785
|
/** FileForm */
|
|
790
786
|
FileForm: {
|
|
791
787
|
/** Format: binary */
|
|
792
|
-
file:
|
|
788
|
+
file: Blob;
|
|
793
789
|
};
|
|
794
790
|
/**
|
|
795
791
|
* Grade
|
|
@@ -1080,6 +1076,7 @@ export type components = {
|
|
|
1080
1076
|
introduction?: string;
|
|
1081
1077
|
/** @description A meta description */
|
|
1082
1078
|
metaDescription?: string;
|
|
1079
|
+
/** @description An image-api ID for the article meta image */
|
|
1083
1080
|
metaImage?: components["schemas"]["NewArticleMetaImageDTO"] | null;
|
|
1084
1081
|
/** @description A visual element for the article. May be anything from an image to a video or H5P */
|
|
1085
1082
|
visualElement?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-api-openapi.js","sourceRoot":"","sources":["../draft-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"draft-api-openapi.js","sourceRoot":"","sources":["../draft-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontpage-api-openapi.js","sourceRoot":"","sources":["../frontpage-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frontpage-api-openapi.js","sourceRoot":"","sources":["../frontpage-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file was auto-generated by openapi-typescript.
|
|
3
|
-
* Do not make direct changes to the file.
|
|
4
|
-
*/
|
|
5
1
|
export type paths = {
|
|
6
2
|
"/image-api/v2/images": {
|
|
7
3
|
parameters: {
|
|
@@ -380,7 +376,7 @@ export type components = {
|
|
|
380
376
|
/** CopyMetaDataAndFileForm */
|
|
381
377
|
CopyMetaDataAndFileForm: {
|
|
382
378
|
/** Format: binary */
|
|
383
|
-
file:
|
|
379
|
+
file: Blob;
|
|
384
380
|
};
|
|
385
381
|
/**
|
|
386
382
|
* CopyrightDTO
|
|
@@ -620,7 +616,7 @@ export type components = {
|
|
|
620
616
|
MetaDataAndFileForm: {
|
|
621
617
|
metadata: components["schemas"]["NewImageMetaInformationV2DTO"];
|
|
622
618
|
/** Format: binary */
|
|
623
|
-
file:
|
|
619
|
+
file: Blob;
|
|
624
620
|
};
|
|
625
621
|
/**
|
|
626
622
|
* NewImageMetaInformationV2DTO
|
|
@@ -807,7 +803,7 @@ export type components = {
|
|
|
807
803
|
UpdateMetaDataAndFileForm: {
|
|
808
804
|
metadata: components["schemas"]["UpdateImageMetaInformationDTO"];
|
|
809
805
|
/** Format: binary */
|
|
810
|
-
file?:
|
|
806
|
+
file?: Blob;
|
|
811
807
|
};
|
|
812
808
|
/**
|
|
813
809
|
* ValidationErrorBody
|
|
@@ -2088,7 +2084,7 @@ export interface operations {
|
|
|
2088
2084
|
[name: string]: unknown;
|
|
2089
2085
|
};
|
|
2090
2086
|
content: {
|
|
2091
|
-
"application/octet-stream":
|
|
2087
|
+
"application/octet-stream": Blob;
|
|
2092
2088
|
};
|
|
2093
2089
|
};
|
|
2094
2090
|
400: {
|
|
@@ -2160,7 +2156,7 @@ export interface operations {
|
|
|
2160
2156
|
[name: string]: unknown;
|
|
2161
2157
|
};
|
|
2162
2158
|
content: {
|
|
2163
|
-
"application/octet-stream":
|
|
2159
|
+
"application/octet-stream": Blob;
|
|
2164
2160
|
};
|
|
2165
2161
|
};
|
|
2166
2162
|
400: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-api-openapi.js","sourceRoot":"","sources":["../image-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-api-openapi.js","sourceRoot":"","sources":["../image-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learningpath-api-openapi.js","sourceRoot":"","sources":["../learningpath-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"learningpath-api-openapi.js","sourceRoot":"","sources":["../learningpath-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"myndla-api-openapi.js","sourceRoot":"","sources":["../myndla-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"myndla-api-openapi.js","sourceRoot":"","sources":["../myndla-api-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oembed-proxy-openapi.js","sourceRoot":"","sources":["../oembed-proxy-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oembed-proxy-openapi.js","sourceRoot":"","sources":["../oembed-proxy-openapi.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Part of NDLA backend
|
|
4
|
+
* Copyright (C) 2025 NDLA
|
|
5
|
+
*
|
|
6
|
+
* See LICENSE
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
33
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
34
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
35
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
36
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
37
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
38
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
42
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
43
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
44
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
45
|
+
function step(op) {
|
|
46
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
47
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
48
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
49
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
50
|
+
switch (op[0]) {
|
|
51
|
+
case 0: case 1: t = op; break;
|
|
52
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
53
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
54
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
55
|
+
default:
|
|
56
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
57
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
58
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
59
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
60
|
+
if (t[2]) _.ops.pop();
|
|
61
|
+
_.trys.pop(); continue;
|
|
62
|
+
}
|
|
63
|
+
op = body.call(thisArg, _);
|
|
64
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
65
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
69
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
|
+
var node_fs_1 = __importDefault(require("node:fs"));
|
|
73
|
+
var openapi_typescript_1 = __importStar(require("openapi-typescript"));
|
|
74
|
+
var typescript_1 = __importDefault(require("typescript"));
|
|
75
|
+
if (process.argv.length !== 3) {
|
|
76
|
+
throw new Error("Invalid use");
|
|
77
|
+
}
|
|
78
|
+
var BLOB = typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Blob"));
|
|
79
|
+
var NULL = typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNull()); // `null`
|
|
80
|
+
function generate_types(appName) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
82
|
+
var jsonFile, schema, ast, outputPath, output;
|
|
83
|
+
return __generator(this, function (_a) {
|
|
84
|
+
switch (_a.label) {
|
|
85
|
+
case 0:
|
|
86
|
+
jsonFile = "./openapi/".concat(appName, ".json");
|
|
87
|
+
console.log("Parsing ".concat(jsonFile, " to generate typescript files..."));
|
|
88
|
+
return [4 /*yield*/, node_fs_1.default.promises.readFile(jsonFile, "utf8")];
|
|
89
|
+
case 1:
|
|
90
|
+
schema = _a.sent();
|
|
91
|
+
return [4 /*yield*/, (0, openapi_typescript_1.default)(JSON.parse(schema), {
|
|
92
|
+
exportType: true,
|
|
93
|
+
transform: function (schemaObject, _options) {
|
|
94
|
+
if (schemaObject.format === "binary") {
|
|
95
|
+
if (schemaObject.nullable) {
|
|
96
|
+
return typescript_1.default.factory.createUnionTypeNode([BLOB, NULL]);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
return BLOB;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
})];
|
|
104
|
+
case 2:
|
|
105
|
+
ast = _a.sent();
|
|
106
|
+
outputPath = "./".concat(appName, "-openapi.ts");
|
|
107
|
+
output = (0, openapi_typescript_1.astToString)(ast);
|
|
108
|
+
console.log("Outputting to ".concat(outputPath));
|
|
109
|
+
node_fs_1.default.writeFileSync(outputPath, output);
|
|
110
|
+
return [2 /*return*/];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
generate_types(process.argv[2]);
|
|
116
|
+
//# sourceMappingURL=generate-openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-openapi.js","sourceRoot":"","sources":["../../scripts/generate-openapi.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAyB;AACzB,uEAA6E;AAC7E,0DAA0C;AAE1C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED,IAAM,IAAI,GAAG,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAC7C,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACpC,CAAC;AACF,IAAM,IAAI,GAAG,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;AAEjF,SAAe,cAAc,CAAC,OAAe;;;;;;oBACrC,QAAQ,GAAG,oBAAa,OAAO,UAAO,CAAC;oBAC7C,OAAO,CAAC,GAAG,CAAC,kBAAW,QAAQ,qCAAkC,CAAC,CAAC;oBACpD,qBAAM,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAA;;oBAArD,MAAM,GAAG,SAA4C;oBAE/C,qBAAM,IAAA,4BAAS,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;4BAC9C,UAAU,EAAE,IAAI;4BAChB,SAAS,YAAC,YAAY,EAAE,QAAQ;gCAC9B,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oCACrC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;wCAC1B,OAAO,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;oCACtD,CAAC;yCAAM,CAAC;wCACN,OAAO,IAAI,CAAC;oCACd,CAAC;gCACH,CAAC;4BACH,CAAC;yBACF,CAAC,EAAA;;oBAXI,GAAG,GAAG,SAWV;oBAEI,UAAU,GAAG,YAAK,OAAO,gBAAa,CAAC;oBACvC,MAAM,GAAG,IAAA,gCAAW,EAAC,GAAG,CAAC,CAAC;oBAEhC,OAAO,CAAC,GAAG,CAAC,wBAAiB,UAAU,CAAE,CAAC,CAAC;oBAC3C,iBAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;;;;CACtC;AAED,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-api-openapi.js","sourceRoot":"","sources":["../search-api-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-api-openapi.js","sourceRoot":"","sources":["../search-api-openapi.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,32 +1,36 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
2
|
+
"name": "@ndla/types-backend",
|
|
3
|
+
"description": "Typescript type definitions for NDLA backend",
|
|
4
|
+
"license": "GPL-3.0",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"do-publish": "tsc",
|
|
8
|
+
"generate-typescript": "tsx scripts/generate-openapi.ts"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/NDLANO/backend.git",
|
|
13
|
+
"directory": "typescript/types-backend"
|
|
14
|
+
},
|
|
15
|
+
"author": "ndla@knowit.no",
|
|
16
|
+
"files": [
|
|
17
|
+
"build",
|
|
18
|
+
"article-api",
|
|
19
|
+
"audio-api",
|
|
20
|
+
"concept-api",
|
|
21
|
+
"draft-api",
|
|
22
|
+
"frontpage-api",
|
|
23
|
+
"image-api",
|
|
24
|
+
"learningpath-api",
|
|
25
|
+
"myndla-api",
|
|
26
|
+
"oembed-proxy",
|
|
27
|
+
"search-api"
|
|
28
|
+
],
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^22.13.16",
|
|
31
|
+
"openapi-typescript": "^7.6.1",
|
|
32
|
+
"tsx": "^4.19.3",
|
|
33
|
+
"typescript": "^5.3.3"
|
|
34
|
+
},
|
|
35
|
+
"version": "1.0.39"
|
|
32
36
|
}
|