@capytale/activity.js 3.1.8 → 3.1.9
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/activity/activityType/activityType.d.ts +1 -0
- package/activity/activityType/activityType.js.map +1 -1
- package/api/http/backend.js +12 -10
- package/api/http/backend.js.map +1 -1
- package/api/http/error.d.ts +2 -1
- package/api/http/error.js +6 -1
- package/api/http/error.js.map +1 -1
- package/api/rest/field.d.ts +1 -1
- package/backend/capytale/resolver.js +24 -26
- package/backend/capytale/resolver.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityType.js","sourceRoot":"","sources":["../../src/activity/activityType/activityType.ts"],"names":[],"mappings":"","sourcesContent":["export type ActivityType = {\n id: string;\n name: string;\n status?: { beta?: boolean };\n icon: {\n path: string;\n style?: { [s: string]: string };\n };\n helpUrl: string;\n summary: string;\n description: string;\n tags?: string;\n bundle: string;\n available: boolean;\n replacedBy?: string | null;\n filterWith?: string | null;\n detailedEvaluation: boolean;\n exportable: boolean;\n}\n\nexport type ActivityGroup = {\n title: string;\n activities: string[];\n};\n\nexport type ActivityGroups = {\n [key: string]: ActivityGroup;\n};\n\nexport type ActivityWeights = {\n all: { [key: string]: number };\n niveaux: {\n [key: string]: {\n title: string;\n activities: { [key: string]: number }\n }\n };\n groups: ActivityGroups;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"activityType.js","sourceRoot":"","sources":["../../src/activity/activityType/activityType.ts"],"names":[],"mappings":"","sourcesContent":["export type ActivityType = {\n id: string;\n name: string;\n status?: { beta?: boolean };\n icon: {\n path: string;\n style?: { [s: string]: string };\n };\n helpUrl: string;\n summary: string;\n description: string;\n tags?: string;\n bundle: string;\n available: boolean;\n replacedBy?: string | null;\n filterWith?: string | null;\n detailedEvaluation: boolean;\n exportable: boolean;\n}\n\nexport type ActivityGroup = {\n title: string;\n tooltip?: string;\n activities: string[];\n};\n\nexport type ActivityGroups = {\n [key: string]: ActivityGroup;\n};\n\nexport type ActivityWeights = {\n all: { [key: string]: number };\n niveaux: {\n [key: string]: {\n title: string;\n activities: { [key: string]: number }\n }\n };\n groups: ActivityGroups;\n};\n"]}
|
package/api/http/backend.js
CHANGED
|
@@ -28,17 +28,19 @@ async function rawRequestAsync(method, url, data, expectedStatus, hdr) {
|
|
|
28
28
|
throw new NetworkError({ method, url }, e.message);
|
|
29
29
|
}
|
|
30
30
|
// Il y a une erreur. On extraie le message d'erreur du corps de la réponse
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
if (response.headers.get('Content-Type')?.includes('application/json')) {
|
|
32
|
+
let payload;
|
|
33
|
+
try {
|
|
34
|
+
payload = await response.json();
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
throw new StatusError({ method, url }, response.statusText, response.status);
|
|
38
|
+
}
|
|
39
|
+
if (typeof payload === 'object' && payload != null) {
|
|
40
|
+
throw new ApiError({ method, url }, response.statusText, response.status, payload);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
|
-
|
|
39
|
-
|| payload == null)
|
|
40
|
-
throw new StatusError({ method, url }, response.statusText, response.status);
|
|
41
|
-
throw new ApiError({ method, url }, payload);
|
|
43
|
+
throw new StatusError({ method, url }, response.statusText, response.status);
|
|
42
44
|
}
|
|
43
45
|
export default function (r, cp) {
|
|
44
46
|
function authRawRequestAsync(method, route, data, auth, expectedStatus, hdr) {
|
package/api/http/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/api/http/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkB5E,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAcA,CAAC;AA+CD,CAAC;AAEF,SAAS,IAAI,CAAC,CAAW,EAAE,QAA4B;IACrD,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,GAAW,EACX,IAAS,EACT,cAAkC,EAClC,GAAiB;IAEjB,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;YAAE,OAAO,QAAQ,CAAC;IACtD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,2EAA2E;IAC3E,IAAI,OAAY,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD,IACE,OAAO,OAAO,KAAK,QAAQ;WACxB,OAAO,IAAI,IAAI;QAClB,MAAM,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAGD,MAAM,CAAC,OAAO,WAAW,CAAgB,EAAE,EAAsB;IAC/D,SAAS,mBAAmB,CAC1B,MAAc,EACd,KAAoB,EACpB,IAAS,EACT,IAAc,EACd,cAAkC,EAClC,GAAiB;QAEjB,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,SAAS,YAAY,CACnB,MAAc,EACd,KAAoB,EACpB,IAAS,EACT,OAAU,EACV,IAAc,EACd,cAAkC,EAClC,GAAiB;QAEjB,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAuB,CAAC,CAAC;;YAC1E,OAAO,OAAO,CAAC,IAAI,CACtB,CAAC,QAAkB,EAAE,EAAE;gBACrB,IAAI,OAAO,KAAK,QAAQ;oBAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;;oBAC1C,OAAO,QAAQ,CAAC,OAA6B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wBAChE,MAAM,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oBACnG,CAAC,CAAC,CAAC;YACL,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,iBAAiB,CACxB,MAAc,EACd,KAAoB,EACpB,IAAS,EACT,OAAU,EACV,IAAc,EACd,cAAkC,EAClC,IAAa;QAEb,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,oBAAoB,CAC3B,MAAc,EACd,KAAoB,EACpB,WAAoB,EACpB,IAAS,EACT,IAAc;QAEd,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAC9E,CAAC,QAAkB,EAAE,EAAE;YACrB,IAAI,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC,CAAC;YAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;;gBACpC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtC,MAAM,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACnG,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC;IAED,SAAS,gBAAgB,CACvB,KAAoB,EACpB,OAAU,EACV,IAAc,EACd,GAAiB;QAEjB,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CACxE,CAAC,QAAkB,EAAE,EAAE;YACrB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACzC,IAAI,OAAO,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;;gBAC1C,OAAO,QAAQ,CAAC,OAA6B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChE,MAAM,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC1G,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC;IAGD,OAAO,CACL;QACE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAK,EAAE,cAAe,EAAE,GAAI;YACrE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;QAC/E,CAAC;QAED,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAK;YAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,YAAY,CAAC,KAAoB,EAAE,IAAc;YAC/C,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,cAAc,CAAC,KAAoB,EAAE,IAAc;YACjD,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAK;YACpC,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAC/C,CAAC;QACD,sBAAsB,CAAC,KAAoB,EAAE,IAAc;YACzD,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,IAAS,EAAE,IAAa;YACvC,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,aAAa,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC3D,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,gBAAgB,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC9D,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAa;YACjC,OAAO,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,YAAY,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC1D,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,eAAe,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC7D,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,IAAS,EAAE,IAAa;YACxC,OAAO,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;QACD,cAAc,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC5D,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,iBAAiB,CAAC,KAAoB,EAAE,IAAS,EAAE,IAAc;YAC/D,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,WAAW,CAAC,KAAK;YACf,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,kBAAkB,CAAC,KAAoB;YACrC,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { NetworkError, StatusError, ApiError, PayloadError } from \"./error\";\r\nimport type { Route, RouteResolver } from \"./route\";\r\n\r\ntype RouteOrString = Route | string;\r\n\r\nexport type NonVoidReturnType = 'json' | 'text' | 'blob' | 'arrayBuffer' | 'stream';\r\nexport type ReturnType = NonVoidReturnType | 'void';\r\ntype CallableReturnType = Exclude<NonVoidReturnType, 'stream'>;\r\n\r\nexport type ReturnValueType<T extends ReturnType> = {\r\n 'json': unknown;\r\n 'text': string;\r\n 'blob': Blob;\r\n 'arrayBuffer': ArrayBuffer;\r\n 'stream': ReadableStream<Uint8Array> | null;\r\n 'void': void;\r\n}[T];\r\n\r\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS'];\r\n\r\nfunction isSafeMethod(method: string): boolean {\r\n return safeMethods.includes(method);\r\n}\r\n\r\nexport interface CredentialProvider {\r\n /**\r\n * Fournit les en-têtes d'authentification pour une requête HTTP.\r\n * \r\n * @param isSafe - indique si la requête est considérée safe (GET, HEAD, OPTIONS)\r\n * @param url - l'URL de la requête\r\n * @param auth - indique si l'authentification est requise\r\n * @param hdr - si défini, les en-têtes de la requête auquel ajouter les en-têtes d'authentification \r\n * si non défini, les en-têtes d'authentification seuls sont retournés\r\n * @returns les en-têtes d'authentification\r\n */\r\n getCredentialsFor(isSafe: boolean, url: string, auth?: boolean, hdr?: HeadersInit): Promise<HeadersInit>\r\n};\r\n\r\nexport interface HttpBackend {\r\n requestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T>>;\r\n\r\n getAsync<const T extends ReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean\r\n ): Promise<ReturnValueType<T>>;\r\n getJsonAsync(route: RouteOrString, auth?: boolean): Promise<unknown | null>;\r\n getJsonAsync<T>(route: RouteOrString, auth?: boolean): Promise<T | null>;\r\n getStringAsync(route: RouteOrString, auth?: boolean): Promise<string>;\r\n\r\n getNullableAsync<const T extends NonVoidReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean\r\n ): Promise<ReturnValueType<T> | null>;\r\n getNullableStringAsync(route: RouteOrString, auth?: boolean): Promise<string | null>;\r\n\r\n postAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n postJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n postGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n postGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n putAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n putJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n putGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n putGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n patchAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n patchJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n patchGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n patchGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n deleteAsync(route: RouteOrString): Promise<void>;\r\n deleteGetJsonAsync(route: RouteOrString): Promise<unknown>;\r\n deleteGetJsonAsync<T>(route: RouteOrString): Promise<T>;\r\n};\r\n\r\nfunction isOk(r: Response, expected?: number | number[]): boolean {\r\n if (expected == null) return r.ok;\r\n if (Array.isArray(expected)) return expected.includes(r.status);\r\n return r.status === expected;\r\n}\r\n\r\nasync function rawRequestAsync(\r\n method: string,\r\n url: string,\r\n data: any,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n): Promise<Response> {\r\n let response: Response;\r\n try {\r\n let request = new Request(url, {\r\n method: method,\r\n headers: hdr,\r\n body: data,\r\n });\r\n response = await fetch(request);\r\n if (isOk(response, expectedStatus)) return response;\r\n } catch (e: any) {\r\n throw new NetworkError({ method, url }, e.message);\r\n }\r\n // Il y a une erreur. On extraie le message d'erreur du corps de la réponse\r\n let payload: any;\r\n try {\r\n payload = await response.json();\r\n } catch (e) {\r\n throw new StatusError({ method, url }, response.statusText, response.status);\r\n }\r\n if (\r\n typeof payload !== 'object'\r\n || payload == null\r\n ) throw new StatusError({ method, url }, response.statusText, response.status);\r\n throw new ApiError({ method, url }, payload);\r\n}\r\n\r\n\r\nexport default function (r: RouteResolver, cp: CredentialProvider): HttpBackend {\r\n function authRawRequestAsync(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<Response> {\r\n method = method.toUpperCase();\r\n const url = typeof route === 'string' ? route : r(route);\r\n return cp.getCredentialsFor(isSafeMethod(method), url, auth, hdr).then(\r\n hdr => rawRequestAsync(method, url, data, expectedStatus, hdr)\r\n );\r\n }\r\n\r\n function requestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T>> {\r\n const reqTask = authRawRequestAsync(method, route, data, auth, expectedStatus, hdr);\r\n if (retType === 'void') return reqTask.then(_ => void 0 as ReturnValueType<T>);\r\n else return reqTask.then(\r\n (response: Response) => {\r\n if (retType === 'stream') return response.body;\r\n else return response[retType as CallableReturnType]().catch((e) => {\r\n throw new PayloadError({ method, url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Une requête avec un type mime spécifié\r\n */\r\n function typedRequestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n type?: string\r\n ): Promise<ReturnValueType<T>> {\r\n if (type == null) return requestAsync(method, route, data, retType, auth, expectedStatus);\r\n const hdr = { 'Content-Type': type };\r\n return requestAsync(method, route, data, retType, auth, expectedStatus, hdr);\r\n }\r\n\r\n function jsonDataRequestAsync(\r\n method: string,\r\n route: RouteOrString,\r\n getResponse: boolean,\r\n data: any,\r\n json?: boolean\r\n ): Promise<any> {\r\n if (!json) data = JSON.stringify(data);\r\n const hdr = { 'Content-Type': 'application/json' };\r\n return authRawRequestAsync(method, route, data, true, [200, 201, 204], hdr).then(\r\n (response: Response) => {\r\n if (!getResponse) return void 0;\r\n if (response.status === 204) return null;\r\n else return response.json().catch((e) => {\r\n throw new PayloadError({ method, url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n function getNullableAsync<const T extends NonVoidReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean,\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T> | null> {\r\n return authRawRequestAsync(\"GET\", route, null, auth, [200, 204], hdr).then(\r\n (response: Response) => {\r\n if (response.status === 204) return null;\r\n if (retType === 'stream') return response.body;\r\n else return response[retType as CallableReturnType]().catch((e) => {\r\n throw new PayloadError({ method: 'GET', url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n\r\n return (\r\n {\r\n requestAsync(method, route, data, retType, auth?, expectedStatus?, hdr?) {\r\n return requestAsync(method, route, data, retType, auth, expectedStatus, hdr);\r\n },\r\n\r\n getAsync(route, retType, auth?) {\r\n return requestAsync(\"GET\", route, null, retType, auth);\r\n },\r\n getJsonAsync(route: RouteOrString, auth?: boolean): Promise<unknown> {\r\n return getNullableAsync(route, 'json', auth);\r\n },\r\n getStringAsync(route: RouteOrString, auth?: boolean): Promise<string> {\r\n return requestAsync(\"GET\", route, null, \"text\", auth);\r\n },\r\n getNullableAsync(route, retType, auth?) {\r\n return getNullableAsync(route, retType, auth)\r\n },\r\n getNullableStringAsync(route: RouteOrString, auth?: boolean): Promise<string | null> {\r\n return getNullableAsync(route, 'text', auth);\r\n },\r\n\r\n postAsync(route, data: any, type?: string): Promise<void> {\r\n return typedRequestAsync(\"POST\", route, data, 'void', true, [200, 201], type);\r\n },\r\n postJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"POST\", route, false, data, json);\r\n },\r\n postGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"POST\", route, true, data, json);\r\n },\r\n\r\n putAsync(route, data, type?: string): Promise<void> {\r\n return typedRequestAsync(\"PUT\", route, data, 'void', true, [200, 204], type);\r\n },\r\n putJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"PUT\", route, false, data, json);\r\n },\r\n putGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"PUT\", route, true, data, json);\r\n },\r\n\r\n patchAsync(route, data: any, type?: string): Promise<void> {\r\n return typedRequestAsync(\"PATCH\", route, data, 'void', true, [200, 204], type);\r\n },\r\n patchJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"PATCH\", route, false, data, json);\r\n },\r\n patchGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"PATCH\", route, true, data, json);\r\n },\r\n\r\n deleteAsync(route): Promise<void> {\r\n return requestAsync(\"DELETE\", route, null, 'void', true, [200, 204]);\r\n },\r\n deleteGetJsonAsync(route: RouteOrString): Promise<unknown> {\r\n return requestAsync(\"DELETE\", route, null, 'json', true);\r\n },\r\n });\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/api/http/backend.ts"],"names":[],"mappings":"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","sourcesContent":["import { NetworkError, StatusError, ApiError, PayloadError } from \"./error\";\r\nimport type { Route, RouteResolver } from \"./route\";\r\n\r\ntype RouteOrString = Route | string;\r\n\r\nexport type NonVoidReturnType = 'json' | 'text' | 'blob' | 'arrayBuffer' | 'stream';\r\nexport type ReturnType = NonVoidReturnType | 'void';\r\ntype CallableReturnType = Exclude<NonVoidReturnType, 'stream'>;\r\n\r\nexport type ReturnValueType<T extends ReturnType> = {\r\n 'json': unknown;\r\n 'text': string;\r\n 'blob': Blob;\r\n 'arrayBuffer': ArrayBuffer;\r\n 'stream': ReadableStream<Uint8Array> | null;\r\n 'void': void;\r\n}[T];\r\n\r\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS'];\r\n\r\nfunction isSafeMethod(method: string): boolean {\r\n return safeMethods.includes(method);\r\n}\r\n\r\nexport interface CredentialProvider {\r\n /**\r\n * Fournit les en-têtes d'authentification pour une requête HTTP.\r\n * \r\n * @param isSafe - indique si la requête est considérée safe (GET, HEAD, OPTIONS)\r\n * @param url - l'URL de la requête\r\n * @param auth - indique si l'authentification est requise\r\n * @param hdr - si défini, les en-têtes de la requête auquel ajouter les en-têtes d'authentification \r\n * si non défini, les en-têtes d'authentification seuls sont retournés\r\n * @returns les en-têtes d'authentification\r\n */\r\n getCredentialsFor(isSafe: boolean, url: string, auth?: boolean, hdr?: HeadersInit): Promise<HeadersInit>\r\n};\r\n\r\nexport interface HttpBackend {\r\n requestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T>>;\r\n\r\n getAsync<const T extends ReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean\r\n ): Promise<ReturnValueType<T>>;\r\n getJsonAsync(route: RouteOrString, auth?: boolean): Promise<unknown | null>;\r\n getJsonAsync<T>(route: RouteOrString, auth?: boolean): Promise<T | null>;\r\n getStringAsync(route: RouteOrString, auth?: boolean): Promise<string>;\r\n\r\n getNullableAsync<const T extends NonVoidReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean\r\n ): Promise<ReturnValueType<T> | null>;\r\n getNullableStringAsync(route: RouteOrString, auth?: boolean): Promise<string | null>;\r\n\r\n postAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n postJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n postGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n postGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n putAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n putJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n putGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n putGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n patchAsync(route: RouteOrString, data: any, type?: string): Promise<void>;\r\n patchJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void>;\r\n patchGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown>;\r\n patchGetJsonAsync<T>(route: RouteOrString, data: any, json?: boolean): Promise<T>;\r\n\r\n deleteAsync(route: RouteOrString): Promise<void>;\r\n deleteGetJsonAsync(route: RouteOrString): Promise<unknown>;\r\n deleteGetJsonAsync<T>(route: RouteOrString): Promise<T>;\r\n};\r\n\r\nfunction isOk(r: Response, expected?: number | number[]): boolean {\r\n if (expected == null) return r.ok;\r\n if (Array.isArray(expected)) return expected.includes(r.status);\r\n return r.status === expected;\r\n}\r\n\r\nasync function rawRequestAsync(\r\n method: string,\r\n url: string,\r\n data: any,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n): Promise<Response> {\r\n let response: Response;\r\n try {\r\n let request = new Request(url, {\r\n method: method,\r\n headers: hdr,\r\n body: data,\r\n });\r\n response = await fetch(request);\r\n if (isOk(response, expectedStatus)) return response;\r\n } catch (e: any) {\r\n throw new NetworkError({ method, url }, e.message);\r\n }\r\n // Il y a une erreur. On extraie le message d'erreur du corps de la réponse\r\n if (response.headers.get('Content-Type')?.includes('application/json')) {\r\n let payload: any;\r\n try {\r\n payload = await response.json();\r\n } catch (e) {\r\n throw new StatusError({ method, url }, response.statusText, response.status);\r\n }\r\n if (typeof payload === 'object' && payload != null) {\r\n throw new ApiError({ method, url }, response.statusText, response.status, payload);\r\n }\r\n }\r\n throw new StatusError({ method, url }, response.statusText, response.status);\r\n}\r\n\r\n\r\nexport default function (r: RouteResolver, cp: CredentialProvider): HttpBackend {\r\n function authRawRequestAsync(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<Response> {\r\n method = method.toUpperCase();\r\n const url = typeof route === 'string' ? route : r(route);\r\n return cp.getCredentialsFor(isSafeMethod(method), url, auth, hdr).then(\r\n hdr => rawRequestAsync(method, url, data, expectedStatus, hdr)\r\n );\r\n }\r\n\r\n function requestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T>> {\r\n const reqTask = authRawRequestAsync(method, route, data, auth, expectedStatus, hdr);\r\n if (retType === 'void') return reqTask.then(_ => void 0 as ReturnValueType<T>);\r\n else return reqTask.then(\r\n (response: Response) => {\r\n if (retType === 'stream') return response.body;\r\n else return response[retType as CallableReturnType]().catch((e) => {\r\n throw new PayloadError({ method, url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Une requête avec un type mime spécifié\r\n */\r\n function typedRequestAsync<const T extends ReturnType>(\r\n method: string,\r\n route: RouteOrString,\r\n data: any,\r\n retType: T,\r\n auth?: boolean,\r\n expectedStatus?: number | number[],\r\n type?: string\r\n ): Promise<ReturnValueType<T>> {\r\n if (type == null) return requestAsync(method, route, data, retType, auth, expectedStatus);\r\n const hdr = { 'Content-Type': type };\r\n return requestAsync(method, route, data, retType, auth, expectedStatus, hdr);\r\n }\r\n\r\n function jsonDataRequestAsync(\r\n method: string,\r\n route: RouteOrString,\r\n getResponse: boolean,\r\n data: any,\r\n json?: boolean\r\n ): Promise<any> {\r\n if (!json) data = JSON.stringify(data);\r\n const hdr = { 'Content-Type': 'application/json' };\r\n return authRawRequestAsync(method, route, data, true, [200, 201, 204], hdr).then(\r\n (response: Response) => {\r\n if (!getResponse) return void 0;\r\n if (response.status === 204) return null;\r\n else return response.json().catch((e) => {\r\n throw new PayloadError({ method, url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n function getNullableAsync<const T extends NonVoidReturnType>(\r\n route: RouteOrString,\r\n retType: T,\r\n auth?: boolean,\r\n hdr?: HeadersInit\r\n ): Promise<ReturnValueType<T> | null> {\r\n return authRawRequestAsync(\"GET\", route, null, auth, [200, 204], hdr).then(\r\n (response: Response) => {\r\n if (response.status === 204) return null;\r\n if (retType === 'stream') return response.body;\r\n else return response[retType as CallableReturnType]().catch((e) => {\r\n throw new PayloadError({ method: 'GET', url: typeof route === 'string' ? route : r(route) }, e.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n\r\n return (\r\n {\r\n requestAsync(method, route, data, retType, auth?, expectedStatus?, hdr?) {\r\n return requestAsync(method, route, data, retType, auth, expectedStatus, hdr);\r\n },\r\n\r\n getAsync(route, retType, auth?) {\r\n return requestAsync(\"GET\", route, null, retType, auth);\r\n },\r\n getJsonAsync(route: RouteOrString, auth?: boolean): Promise<unknown> {\r\n return getNullableAsync(route, 'json', auth);\r\n },\r\n getStringAsync(route: RouteOrString, auth?: boolean): Promise<string> {\r\n return requestAsync(\"GET\", route, null, \"text\", auth);\r\n },\r\n getNullableAsync(route, retType, auth?) {\r\n return getNullableAsync(route, retType, auth)\r\n },\r\n getNullableStringAsync(route: RouteOrString, auth?: boolean): Promise<string | null> {\r\n return getNullableAsync(route, 'text', auth);\r\n },\r\n\r\n postAsync(route, data: any, type?: string): Promise<void> {\r\n return typedRequestAsync(\"POST\", route, data, 'void', true, [200, 201], type);\r\n },\r\n postJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"POST\", route, false, data, json);\r\n },\r\n postGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"POST\", route, true, data, json);\r\n },\r\n\r\n putAsync(route, data, type?: string): Promise<void> {\r\n return typedRequestAsync(\"PUT\", route, data, 'void', true, [200, 204], type);\r\n },\r\n putJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"PUT\", route, false, data, json);\r\n },\r\n putGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"PUT\", route, true, data, json);\r\n },\r\n\r\n patchAsync(route, data: any, type?: string): Promise<void> {\r\n return typedRequestAsync(\"PATCH\", route, data, 'void', true, [200, 204], type);\r\n },\r\n patchJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<void> {\r\n return jsonDataRequestAsync(\"PATCH\", route, false, data, json);\r\n },\r\n patchGetJsonAsync(route: RouteOrString, data: any, json?: boolean): Promise<unknown> {\r\n return jsonDataRequestAsync(\"PATCH\", route, true, data, json);\r\n },\r\n\r\n deleteAsync(route): Promise<void> {\r\n return requestAsync(\"DELETE\", route, null, 'void', true, [200, 204]);\r\n },\r\n deleteGetJsonAsync(route: RouteOrString): Promise<unknown> {\r\n return requestAsync(\"DELETE\", route, null, 'json', true);\r\n },\r\n });\r\n}\r\n"]}
|
package/api/http/error.d.ts
CHANGED
|
@@ -19,7 +19,8 @@ export declare class PayloadError extends HttpError {
|
|
|
19
19
|
constructor(request: RequestInfo, msg: string);
|
|
20
20
|
}
|
|
21
21
|
export declare class ApiError extends HttpError {
|
|
22
|
+
status: number;
|
|
22
23
|
payload: any;
|
|
23
|
-
constructor(request: RequestInfo, payload: any);
|
|
24
|
+
constructor(request: RequestInfo, msg: string, status: number, payload: any);
|
|
24
25
|
}
|
|
25
26
|
export {};
|
package/api/http/error.js
CHANGED
|
@@ -33,14 +33,19 @@ export class PayloadError extends HttpError {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
export class ApiError extends HttpError {
|
|
36
|
+
status;
|
|
36
37
|
payload;
|
|
37
|
-
constructor(request, payload) {
|
|
38
|
+
constructor(request, msg, status, payload) {
|
|
38
39
|
super(request, true);
|
|
40
|
+
this.status = status;
|
|
39
41
|
this.payload = payload;
|
|
40
42
|
if (Object.hasOwn(payload, 'message')) {
|
|
41
43
|
this.message = payload.message;
|
|
42
44
|
this.apiMessage = payload.message;
|
|
43
45
|
}
|
|
46
|
+
else {
|
|
47
|
+
this.message = msg;
|
|
48
|
+
}
|
|
44
49
|
this.name = 'api_error';
|
|
45
50
|
}
|
|
46
51
|
}
|
package/api/http/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/api/http/error.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,OAAO,CAAc;IACrB,UAAU,CAAU;IACpB,UAAU,CAAU;IACpB,YAAY,OAAoB,EAAE,KAAc;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAoB,EAAE,GAAW;QAC3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AACD,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC,MAAM,CAAS;IACf,YAAY,OAAoB,EAAE,GAAW,EAAE,MAAc;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAoB,EAAE,GAAW;QAC3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,SAAS;IACrC,OAAO,CAAM;IACb,YAAY,OAAoB,EAAE,OAAY;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/api/http/error.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,OAAO,CAAc;IACrB,UAAU,CAAU;IACpB,UAAU,CAAU;IACpB,YAAY,OAAoB,EAAE,KAAc;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAoB,EAAE,GAAW;QAC3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AACD,MAAM,OAAO,WAAY,SAAQ,SAAS;IACxC,MAAM,CAAS;IACf,YAAY,OAAoB,EAAE,GAAW,EAAE,MAAc;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAoB,EAAE,GAAW;QAC3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,SAAS;IACrC,MAAM,CAAS;IACf,OAAO,CAAM;IACb,YAAY,OAAoB,EAAE,GAAW,EAAE,MAAc,EAAE,OAAY;QACzE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF","sourcesContent":["type RequestInfo = {\n url: string;\n method: string;\n};\n\nexport class HttpError extends Error {\n request: RequestInfo;\n isApiError: boolean;\n apiMessage?: string;\n constructor(request: RequestInfo, isApi: boolean) {\n super();\n this.request = request;\n this.isApiError = isApi;\n this.name = 'http_error';\n }\n}\n\nexport class NetworkError extends HttpError {\n constructor(request: RequestInfo, msg: string) {\n super(request, false);\n this.message = msg;\n this.name = 'network_error';\n }\n}\nexport class StatusError extends HttpError {\n status: number;\n constructor(request: RequestInfo, msg: string, status: number) {\n super(request, false);\n this.name = 'status_error';\n this.message = msg;\n this.status = status;\n }\n}\n\nexport class PayloadError extends HttpError {\n constructor(request: RequestInfo, msg: string) {\n super(request, false);\n this.message = msg;\n this.name = 'payload_error';\n }\n}\n\nexport class ApiError extends HttpError {\n status: number;\n payload: any;\n constructor(request: RequestInfo, msg: string, status: number, payload: any) {\n super(request, true);\n this.status = status;\n this.payload = payload;\n if (Object.hasOwn(payload, 'message')) {\n this.message = payload.message;\n this.apiMessage = payload.message;\n } else {\n this.message = msg;\n }\n this.name = 'api_error';\n }\n}"]}
|
package/api/rest/field.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export declare const ItemPackager: {
|
|
|
22
22
|
readonly valuePackager: ItemPackager<unknown>;
|
|
23
23
|
readonly stringValuePackager: ItemPackager<string>;
|
|
24
24
|
readonly urlPackager: ItemPackager<string>;
|
|
25
|
-
readonly targetIdPackager: ItemPackager<
|
|
25
|
+
readonly targetIdPackager: ItemPackager<number | string>;
|
|
26
26
|
readonly datePackager: ItemPackager<Date>;
|
|
27
27
|
readonly timeRangePackager: ItemPackager<TimeRange>;
|
|
28
28
|
readonly referencePackager: ItemPackager<RestReference>;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import ltiSession from "./lti";
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const typeFavoriteEp = '/web/c-ui/api/favorite_activity';
|
|
2
|
+
const cActApiEp = '/web/c-act/api/';
|
|
3
|
+
const cAuthApiEp = '/web/c-auth/api/';
|
|
4
|
+
const cUiApiEp = '/web/c-ui/api/';
|
|
5
|
+
const cHdlsEp = '/web/c-hdls/';
|
|
7
6
|
const nodeEp = '/web/node/';
|
|
8
7
|
const userEp = '/web/userinfos?uid_raw=';
|
|
9
8
|
const sessionEp = '/web/session/';
|
|
10
|
-
const cAuthEp = '/web/c-auth/api/';
|
|
11
9
|
const frontEp = '/web/';
|
|
12
10
|
const vanillaEp = '/vanilla/';
|
|
13
11
|
function restResolve(route) {
|
|
@@ -28,15 +26,15 @@ function restResolve(route) {
|
|
|
28
26
|
}
|
|
29
27
|
function typeResolve(route) {
|
|
30
28
|
if (route.type)
|
|
31
|
-
return
|
|
29
|
+
return `${cActApiEp}t/${route.type}`;
|
|
32
30
|
else
|
|
33
|
-
return
|
|
31
|
+
return `${cActApiEp}t`;
|
|
34
32
|
}
|
|
35
33
|
function typeFavoriteResolve(route) {
|
|
36
34
|
if (route.type)
|
|
37
|
-
return
|
|
35
|
+
return `${cUiApiEp}favorite_activity/${route.type}`;
|
|
38
36
|
else
|
|
39
|
-
return
|
|
37
|
+
return `${cUiApiEp}favorite_activity`;
|
|
40
38
|
}
|
|
41
39
|
function frontResolve(route) {
|
|
42
40
|
switch (route.page) {
|
|
@@ -58,10 +56,10 @@ function stdNavResolve(route) {
|
|
|
58
56
|
return frontEp + 'my';
|
|
59
57
|
}
|
|
60
58
|
else if (route.page === 'edit') {
|
|
61
|
-
return
|
|
59
|
+
return `${cHdlsEp}node/${route.id}/edit`;
|
|
62
60
|
}
|
|
63
61
|
else if (route.page === 'create') {
|
|
64
|
-
return
|
|
62
|
+
return `${cHdlsEp}activity/${route.type}/add`;
|
|
65
63
|
}
|
|
66
64
|
else {
|
|
67
65
|
return frontEp + 'my';
|
|
@@ -86,38 +84,38 @@ function navResolve(route) {
|
|
|
86
84
|
}
|
|
87
85
|
function sesameUserResole(route) {
|
|
88
86
|
if (route.count)
|
|
89
|
-
return
|
|
87
|
+
return cAuthApiEp + 'sesame/user/count';
|
|
90
88
|
if (route.uid)
|
|
91
|
-
return
|
|
92
|
-
return
|
|
89
|
+
return cAuthApiEp + 'sesame/user/' + route.uid;
|
|
90
|
+
return cAuthApiEp + 'sesame/user';
|
|
93
91
|
}
|
|
94
92
|
function sesameCodeResole(route) {
|
|
95
93
|
if (route.code)
|
|
96
|
-
return
|
|
97
|
-
return
|
|
94
|
+
return cAuthApiEp + 'sesame/code/' + route.code;
|
|
95
|
+
return cAuthApiEp + 'sesame/code';
|
|
98
96
|
}
|
|
99
97
|
function evalResolve(route) {
|
|
100
98
|
if (route.uid == null)
|
|
101
|
-
return
|
|
99
|
+
return `${cActApiEp}n/${route.id}/e`;
|
|
102
100
|
else
|
|
103
|
-
return
|
|
101
|
+
return `${cActApiEp}n/${route.id}/e/${route.uid}`;
|
|
104
102
|
}
|
|
105
103
|
function resolve(route) {
|
|
106
104
|
switch (route.name) {
|
|
107
|
-
case 'fs.list': return
|
|
108
|
-
case 'fs.field': return
|
|
105
|
+
case 'fs.list': return `${cActApiEp}n/${route.id}/fields`;
|
|
106
|
+
case 'fs.field': return `${cActApiEp}n/${route.id}/fields/${route.field}`;
|
|
109
107
|
case 'rest': return restResolve(route);
|
|
110
108
|
case 'session': return sessionEp + route.id;
|
|
111
|
-
case 'c-auth.me': return
|
|
112
|
-
case 'sa.list': return
|
|
109
|
+
case 'c-auth.me': return cAuthApiEp + 'me';
|
|
110
|
+
case 'sa.list': return `${cActApiEp}n/${route.id}/assignments`;
|
|
113
111
|
case 'sa.launch': return frontEp + 'c/' + route.code;
|
|
114
112
|
case 'sa.eval': return evalResolve(route);
|
|
115
113
|
case 'type': return typeResolve(route);
|
|
116
|
-
case 'type.groups': return
|
|
117
|
-
case 'type.weights': return
|
|
114
|
+
case 'type.groups': return `${cActApiEp}g`;
|
|
115
|
+
case 'type.weights': return `${cActApiEp}w`;
|
|
118
116
|
case 'type.favorite': return typeFavoriteResolve(route);
|
|
119
117
|
case 'front': return frontResolve(route);
|
|
120
|
-
case 'ent': return
|
|
118
|
+
case 'ent': return cAuthApiEp + 'list';
|
|
121
119
|
case 'sesame.user': return sesameUserResole(route);
|
|
122
120
|
case 'sesame.code': return sesameCodeResole(route);
|
|
123
121
|
case 'vanilla': return vanillaEp + route.service + '.php';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/backend/capytale/resolver.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,OAAO,CAAC;AAE/B,MAAM,
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/backend/capytale/resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Route } from \"../../api/http/route\";\nimport ltiSession from \"./lti\";\n\nconst cActApiEp = '/web/c-act/api/';\nconst cAuthApiEp = '/web/c-auth/api/';\nconst cUiApiEp = '/web/c-ui/api/';\nconst cHdlsEp = '/web/c-hdls/';\nconst nodeEp = '/web/node/';\nconst userEp = '/web/userinfos?uid_raw=';\nconst sessionEp = '/web/session/';\nconst frontEp = '/web/';\nconst vanillaEp = '/vanilla/';\n\nfunction restResolve(route: Route): string {\n let url;\n switch (route.type) {\n case 'node': url = nodeEp + route.id + '?_format=json'; break;\n case 'user': url = userEp + route.id + '&_format=json'; break;\n }\n if (url == null) return '';\n if (route?.noecho) url += '&_noecho=1';\n return url;\n}\n\nfunction typeResolve(route: Route): string {\n if (route.type) return `${cActApiEp}t/${route.type}`;\n else return `${cActApiEp}t`;\n}\n\nfunction typeFavoriteResolve(route: Route): string {\n if (route.type) return `${cUiApiEp}favorite_activity/${route.type}`;\n else return `${cUiApiEp}favorite_activity`;\n}\n\nfunction frontResolve(route: Route): string {\n switch (route.page) {\n case 'bib': return frontEp + 'bibliotheque';\n case 'assignments': return frontEp + 'assignments/' + route.id;\n case 'edit': return frontEp + 'node/' + route.id + '/edit';\n case 'my': return frontEp + 'my';\n }\n return frontEp;\n}\n\nfunction stdNavResolve(route: Route): string {\n if (route.page === 'return') {\n switch (route.mode) {\n case 'view': return frontEp + 'bibliotheque';\n case 'create': return frontEp + 'my';\n case 'review': return frontEp + 'assignments/' + route.id;\n case 'assignment': return frontEp + 'my';\n }\n return frontEp + 'my';\n } else if (route.page === 'edit') {\n return `${cHdlsEp}node/${route.id}/edit`;\n } else if (route.page === 'create') {\n return `${cHdlsEp}activity/${route.type}/add`;\n } else {\n return frontEp + 'my';\n }\n}\n\nfunction ltiNavResolve(route: Route): string {\n switch (route.page) {\n case 'return':\n return ltiSession.getProperty('returnUrl');\n case 'edit':\n return ltiSession.getProperty('formUrl');\n case 'create':\n return frontEp + 'lti/tool/activity/add/' + route.type + '?lti=' + ltiSession.getSessId();\n }\n return '';\n}\n\nfunction navResolve(route: Route): string {\n if (ltiSession.isActive) return ltiNavResolve(route);\n else return stdNavResolve(route);\n}\n\nfunction sesameUserResole(route: Route): string {\n if (route.count) return cAuthApiEp + 'sesame/user/count';\n if (route.uid) return cAuthApiEp + 'sesame/user/' + route.uid;\n return cAuthApiEp + 'sesame/user';\n}\n\nfunction sesameCodeResole(route: Route): string {\n if (route.code) return cAuthApiEp + 'sesame/code/' + route.code;\n return cAuthApiEp + 'sesame/code';\n}\n\nfunction evalResolve(route: Route): string {\n if (route.uid == null) return `${cActApiEp}n/${route.id}/e`;\n else return `${cActApiEp}n/${route.id}/e/${route.uid}`;\n}\n\nfunction resolve(route: Route): string {\n switch (route.name) {\n case 'fs.list': return `${cActApiEp}n/${route.id}/fields`;\n case 'fs.field': return `${cActApiEp}n/${route.id}/fields/${route.field}`;\n case 'rest': return restResolve(route);\n case 'session': return sessionEp + route.id;\n case 'c-auth.me': return cAuthApiEp + 'me';\n case 'sa.list': return `${cActApiEp}n/${route.id}/assignments`;\n case 'sa.launch': return frontEp + 'c/' + route.code;\n case 'sa.eval': return evalResolve(route);\n case 'type': return typeResolve(route);\n case 'type.groups': return `${cActApiEp}g`;\n case 'type.weights': return `${cActApiEp}w`;\n case 'type.favorite': return typeFavoriteResolve(route);\n case 'front': return frontResolve(route);\n case 'ent': return cAuthApiEp + 'list';\n case 'sesame.user': return sesameUserResole(route);\n case 'sesame.code': return sesameCodeResole(route);\n case 'vanilla': return vanillaEp + route.service + '.php';\n case 'vs-db': return '/web/vs-db/api/n/' + route.id;\n case 'activityNav': return navResolve(route);\n }\n return '';\n}\n\nexport default function (route: Route, absolute: boolean = false): string {\n const relative = resolve(route);\n if (absolute) return window.location.origin + relative;\n else return relative;\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capytale/activity.js",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.9",
|
|
4
4
|
"bin": {
|
|
5
5
|
"cactjs": "./bin/cactjs.js"
|
|
6
6
|
},
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
17
17
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
18
18
|
"@types/js-cookie": "^3.0.6",
|
|
19
|
-
"@types/node": "^20.17.
|
|
19
|
+
"@types/node": "^20.17.9",
|
|
20
20
|
"commander": "^12.1.0",
|
|
21
|
-
"rollup": "^4.
|
|
21
|
+
"rollup": "^4.28.1",
|
|
22
22
|
"tsc-alias": "^1.8.10",
|
|
23
|
-
"typescript": "^5.
|
|
23
|
+
"typescript": "^5.7.2"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"js-cookie": "^3.0.5",
|