@capytale/activity.js 3.1.8 → 3.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,6 +23,7 @@ export type ActivityType = {
23
23
  };
24
24
  export type ActivityGroup = {
25
25
  title: string;
26
+ tooltip?: string;
26
27
  activities: string[];
27
28
  };
28
29
  export type ActivityGroups = {
@@ -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"]}
@@ -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
- let payload;
32
- try {
33
- payload = await response.json();
34
- }
35
- catch (e) {
36
- throw new StatusError({ method, url }, response.statusText, response.status);
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
- if (typeof payload !== 'object'
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) {
@@ -1 +1 @@
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 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":"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,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvE,IAAI,OAAY,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACnD,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,MAAM,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/E,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 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"]}
@@ -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
  }
@@ -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;QAC5C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,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;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 payload: any;\n constructor(request: RequestInfo, payload: any) {\n super(request, true);\n this.payload = payload;\n if (Object.hasOwn(payload, 'message')) {\n this.message = payload.message;\n this.apiMessage = payload.message;\n }\n this.name = 'api_error';\n }\n}"]}
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}"]}
@@ -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<string | number>;
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 actApiEp = '/web/c-act/api/n/';
3
- const typeEp = '/web/c-act/api/t';
4
- const typeGroupsEp = '/web/c-act/api/g';
5
- const typeWeightsEp = '/web/c-act/api/w';
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 typeEp + '/' + route.type;
29
+ return `${cActApiEp}t/${route.type}`;
32
30
  else
33
- return typeEp;
31
+ return `${cActApiEp}t`;
34
32
  }
35
33
  function typeFavoriteResolve(route) {
36
34
  if (route.type)
37
- return typeFavoriteEp + '/' + route.type;
35
+ return `${cUiApiEp}favorite_activity/${route.type}`;
38
36
  else
39
- return typeFavoriteEp;
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 frontEp + 'node/' + route.id + '/edit';
59
+ return `${cHdlsEp}node/${route.id}/edit`;
62
60
  }
63
61
  else if (route.page === 'create') {
64
- return frontEp + 'node/add/' + route.bundle + '?type=' + route.type;
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 cAuthEp + 'sesame/user/count';
87
+ return cAuthApiEp + 'sesame/user/count';
90
88
  if (route.uid)
91
- return cAuthEp + 'sesame/user/' + route.uid;
92
- return cAuthEp + 'sesame/user';
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 cAuthEp + 'sesame/code/' + route.code;
97
- return cAuthEp + 'sesame/code';
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 actApiEp + route.id + '/e';
99
+ return `${cActApiEp}n/${route.id}/e`;
102
100
  else
103
- return actApiEp + route.id + '/e/' + route.uid;
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 actApiEp + route.id + '/fields';
108
- case 'fs.field': return actApiEp + route.id + '/fields/' + route.field;
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 cAuthEp + 'me';
112
- case 'sa.list': return actApiEp + route.id + '/assignments';
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 typeGroupsEp;
117
- case 'type.weights': return typeWeightsEp;
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 cAuthEp + 'list';
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":"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","sourcesContent":["import type { Route } from \"../../api/http/route\";\nimport ltiSession from \"./lti\";\n\nconst actApiEp = '/web/c-act/api/n/';\nconst typeEp = '/web/c-act/api/t';\nconst typeGroupsEp = '/web/c-act/api/g';\nconst typeWeightsEp = '/web/c-act/api/w';\nconst typeFavoriteEp = '/web/c-ui/api/favorite_activity';\nconst nodeEp = '/web/node/';\nconst userEp = '/web/userinfos?uid_raw=';\nconst sessionEp = '/web/session/';\nconst cAuthEp = '/web/c-auth/api/';\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 typeEp + '/' + route.type;\n else return typeEp;\n}\n\nfunction typeFavoriteResolve(route: Route): string {\n if (route.type) return typeFavoriteEp + '/' + route.type;\n else return typeFavoriteEp;\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 frontEp + 'node/' + route.id + '/edit';\n } else if (route.page === 'create') {\n return frontEp + 'node/add/' + route.bundle + '?type=' + route.type;\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 cAuthEp + 'sesame/user/count';\n if (route.uid) return cAuthEp + 'sesame/user/' + route.uid;\n return cAuthEp + 'sesame/user';\n}\n\nfunction sesameCodeResole(route: Route): string {\n if (route.code) return cAuthEp + 'sesame/code/' + route.code;\n return cAuthEp + 'sesame/code';\n}\n\nfunction evalResolve(route: Route): string {\n if (route.uid == null) return actApiEp + route.id + '/e';\n else return actApiEp + route.id + '/e/' + route.uid;\n}\n\nfunction resolve(route: Route): string {\n switch (route.name) {\n case 'fs.list': return actApiEp + route.id + '/fields';\n case 'fs.field': return actApiEp + route.id + '/fields/' + route.field;\n case 'rest': return restResolve(route);\n case 'session': return sessionEp + route.id;\n case 'c-auth.me': return cAuthEp + 'me';\n case 'sa.list': return actApiEp + 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 typeGroupsEp;\n case 'type.weights': return typeWeightsEp;\n case 'type.favorite': return typeFavoriteResolve(route);\n case 'front': return frontResolve(route);\n case 'ent': return cAuthEp + '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}"]}
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.8",
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.6",
19
+ "@types/node": "^20.17.9",
20
20
  "commander": "^12.1.0",
21
- "rollup": "^4.26.0",
21
+ "rollup": "^4.28.1",
22
22
  "tsc-alias": "^1.8.10",
23
- "typescript": "^5.6.3"
23
+ "typescript": "^5.7.2"
24
24
  },
25
25
  "dependencies": {
26
26
  "js-cookie": "^3.0.5",