@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.
@@ -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":"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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"]}
@@ -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",