@capytale/activity.js 3.1.12 → 3.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/activity/activityBunch/base/nodes/base.d.ts +1 -0
- package/activity/activityBunch/base/nodes/base.js +1 -0
- package/activity/activityBunch/base/nodes/base.js.map +1 -1
- package/api/logger.d.ts +55 -11
- package/api/logger.js +32 -16
- package/api/logger.js.map +1 -1
- package/backend/capytale/logger.d.ts +7 -11
- package/backend/capytale/logger.js +6 -0
- package/backend/capytale/logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ declare abstract class ActivityNode extends Node {
|
|
|
18
18
|
readonly created: Field<'Date', 'Single', 'Read'>;
|
|
19
19
|
readonly changed: Field<'Date', 'Single', 'Read'>;
|
|
20
20
|
readonly shared_notes: Field<'String', 'Single', 'Write'>;
|
|
21
|
+
readonly has_evaluation: Field<'Boolean', 'Single', 'Read'>;
|
|
21
22
|
/**
|
|
22
23
|
* activityType :
|
|
23
24
|
* - console.python
|
|
@@ -25,6 +25,7 @@ class ActivityNode extends Node {
|
|
|
25
25
|
created: Field('Date', 'Single', 'Read', 'created'),
|
|
26
26
|
changed: Field('Date', 'Single', 'Read', 'changed'),
|
|
27
27
|
shared_notes: Field('String', 'Single', 'Write', 'field_answer_sheet'),
|
|
28
|
+
has_evaluation: Field('Boolean', 'Single', 'Read'),
|
|
28
29
|
};
|
|
29
30
|
/**
|
|
30
31
|
* activityType :
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/activity/activityBunch/base/nodes/base.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAM,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,aAAa,MAAM,SAAS,CAAC;AAEpC,SAAS,KAAK,CAAC,CAAgC;IAC3C,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,IAAI,aAAa,CAAC,0CAA0C,CAAC,CAAC;IACjG,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,IAAI,aAAa,CAAC,0CAA0C,CAAC,CAAC;IACjG,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAClE,CAAC;AAED,MAAe,YAAa,SAAQ,IAAI;IACpC,MAAM,CAAU,MAAM,GAA8B;QAChD,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1B,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;QAC3E,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;QACpD,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;QACvC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;QAC/C,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC9C,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;QACtD,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;QACjD,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;QAChD,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC;QAC3D,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC;QACrE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;QACnD,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/activity/activityBunch/base/nodes/base.ts"],"names":[],"mappings":"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","sourcesContent":["import Node from \"~entity/node\";\nimport { Field, TitleField, ReferenceField } from \"~entity/fieldDefinition\";\nimport type { FieldDefinitionCollection } from \"~entity/fieldDefinition\";\nimport { int_to_wf, wf, wf_to_int } from \"~/field/workflow\";\nimport ActivityError from \"~/error\";\n\nfunction isNew(n: ActivityNode | AssignmentNode): boolean {\n if (n.created.value == null) throw new ActivityError('La propriété created n\\'est pas définie.');\n if (n.changed.value == null) throw new ActivityError('La propriété changed n\\'est pas définie.');\n return n.created.value.getTime() >= n.changed.value.getTime();\n}\n\nabstract class ActivityNode extends Node {\n static readonly fields: FieldDefinitionCollection = {\n title: TitleField('Write'),\n _instructions: Field('FormatedText', 'Multi', 'Write', 'field_description'),\n status_clonable: Field('Boolean', 'Single', 'Write'),\n code: Field('String', 'Single', 'Read'),\n associates: Field('Reference', 'Multi', 'Read'),\n attached_files: Field('File', 'Multi', 'Read'),\n access_timerange: Field('TimeRange', 'Single', 'Read'),\n access_tr_mode: Field('String', 'Single', 'Read'),\n activity_type: Field('String', 'Single', 'Read'),\n _config: Field('String', 'Single', 'Write', 'field_config'),\n _anti_cheat: Field('AntiCheat', 'Single', 'Read', 'field_anti_cheat'),\n created: Field('Date', 'Single', 'Read', 'created'),\n changed: Field('Date', 'Single', 'Read', 'changed'),\n shared_notes: Field('String', 'Single', 'Write', 'field_answer_sheet'),\n has_evaluation: Field('Boolean', 'Single', 'Read'),\n };\n declare readonly title: TitleField<'Write'>;\n declare readonly _instructions: Field<'FormatedText', 'Multi', 'Write'>;\n declare readonly status_clonable: Field<'Boolean', 'Single', 'Write'>;\n declare readonly code: Field<'String', 'Single', 'Read'>;\n declare readonly associates: Field<'Reference', 'Multi', 'Read'>;\n declare readonly attached_files: Field<'File', 'Multi', 'Read'>;\n declare readonly access_timerange: Field<'TimeRange', 'Single', 'Read'>;\n declare readonly access_tr_mode: Field<'String', 'Single', 'Read'>;\n declare readonly activity_type: Field<'String', 'Single', 'Read'>;\n declare readonly _config: Field<'String', 'Single', 'Write'>;\n declare readonly _anti_cheat: Field<'AntiCheat', 'Single', 'Read'>;\n declare readonly created: Field<'Date', 'Single', 'Read'>;\n declare readonly changed: Field<'Date', 'Single', 'Read'>;\n declare readonly shared_notes: Field<'String', 'Single', 'Write'>;\n declare readonly has_evaluation: Field<'Boolean', 'Single', 'Read'>;\n\n /**\n * activityType :\n * - console.python\n * - notebook.python\n * - notebook.sql\n * - notebook.ocaml\n * - html\n * - pixel\n * - codabloc\n */\n get activityType(): string {\n return this.activity_type.value as string;\n };\n\n /**\n * Indique si l'objet est nouveau ou non.\n * Cette propriété n'est pas mise à jour automatiquement lors d'une sauvegarde ou d'un touch().\n */\n get isNew(): boolean {\n return isNew(this);\n }\n\n}\n\nabstract class AssignmentNode extends Node {\n static readonly bundle = 'student_assignment';\n static readonly fields: FieldDefinitionCollection = {\n activity: ReferenceField('Single'),\n grading: Field('String', 'Single', 'Write', 'field_evaluation'),\n comments: Field('String', 'Single', 'Write', 'field_appreciation'),\n _wf: Field('Number', 'Single', 'Write', 'field_workflow'),\n created: Field('Date', 'Single', 'Read', 'created'),\n changed: Field('Date', 'Single', 'Read', 'changed'),\n shared_notes: Field('String', 'Single', 'Write', 'field_answer_sheet'),\n };\n declare readonly activity: ReferenceField<'Single'>;\n declare readonly grading: Field<'String', 'Single', 'Write'>;\n declare readonly comments: Field<'String', 'Single', 'Write'>;\n declare protected readonly _wf: Field<'Number', 'Single', 'Write'>;\n declare readonly created: Field<'Date', 'Single', 'Read'>;\n declare readonly changed: Field<'Date', 'Single', 'Read'>;\n declare readonly shared_notes: Field<'String', 'Single', 'Write'>;\n get workflow(): wf { return int_to_wf(this._wf.value as number); }\n set workflow(v: wf) {\n let msg = \"Assigner une valeur à la propriété workflow est interdit. Utilisez la méthode asynchrone changeWorkflow à la place.\";\n console.log(msg);\n throw new ActivityError(msg);\n }\n\n /**\n * Indique si l'objet est nouveau ou non.\n * Cette propriété n'est pas mise à jour automatiquement lors d'une sauvegarde ou d'un touch().\n */\n get isNew(): boolean {\n return isNew(this);\n }\n changeWorkflow(v: wf): Promise<void> {\n let wfn = wf_to_int(v);\n if (this._wf.value === wfn) return Promise.resolve();\n this._wf.value = wfn;\n return this._wf.save();\n }\n}\n\nexport { ActivityNode, AssignmentNode }\n"]}
|
package/api/logger.d.ts
CHANGED
|
@@ -1,12 +1,56 @@
|
|
|
1
1
|
import type { HttpBackend } from "./http/backend";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
interface Report {
|
|
3
|
+
/**
|
|
4
|
+
* Log un message d'information
|
|
5
|
+
*
|
|
6
|
+
* @param message Message à logger
|
|
7
|
+
*/
|
|
8
|
+
notice(...message: string[] | [string[]]): void;
|
|
9
|
+
/**
|
|
10
|
+
* Log un message d'avertissement
|
|
11
|
+
*
|
|
12
|
+
* @param message Message à logger
|
|
13
|
+
*/
|
|
14
|
+
warning(...message: string[] | [string[]]): void;
|
|
15
|
+
/**
|
|
16
|
+
* Log un message d'erreur
|
|
17
|
+
*
|
|
18
|
+
* @param message Message à logger
|
|
19
|
+
*/
|
|
20
|
+
error(...message: string[] | [string[]]): void;
|
|
21
|
+
/**
|
|
22
|
+
* Envoie le rapport
|
|
23
|
+
*
|
|
24
|
+
* @param force Envoie le rapport même s'il est vide
|
|
25
|
+
*/
|
|
26
|
+
send(force?: boolean): void;
|
|
27
|
+
}
|
|
28
|
+
export interface Logger {
|
|
29
|
+
/**
|
|
30
|
+
* Log un message d'information
|
|
31
|
+
*
|
|
32
|
+
* @param message Message à logger
|
|
33
|
+
*/
|
|
34
|
+
notice(...message: string[] | [string[]]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Log un message d'avertissement
|
|
37
|
+
*
|
|
38
|
+
* @param message Message à logger
|
|
39
|
+
*/
|
|
40
|
+
warning(...message: string[] | [string[]]): void;
|
|
41
|
+
/**
|
|
42
|
+
* Log un message d'erreur
|
|
43
|
+
*
|
|
44
|
+
* @param message Message à logger
|
|
45
|
+
*/
|
|
46
|
+
error(...message: string[] | [string[]]): void;
|
|
47
|
+
/**
|
|
48
|
+
* Crée un rapport qui peut être envoyé plus tard
|
|
49
|
+
*
|
|
50
|
+
* @param title Titre du rapport
|
|
51
|
+
* @returns Objet Rapport
|
|
52
|
+
*/
|
|
53
|
+
report(...title: string[] | [string[]]): Report;
|
|
54
|
+
}
|
|
55
|
+
declare const _default: (backend: HttpBackend) => (channel: string) => Logger;
|
|
56
|
+
export default _default;
|
package/api/logger.js
CHANGED
|
@@ -1,37 +1,53 @@
|
|
|
1
1
|
const levels = ['notice', 'warning', 'error'];
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
function parseParam(m) {
|
|
3
|
+
if (m.length === 1 && Array.isArray(m[0])) {
|
|
4
|
+
return m[0];
|
|
5
|
+
}
|
|
6
|
+
return m;
|
|
7
|
+
}
|
|
8
|
+
export default (function (backend) {
|
|
9
|
+
return (function (channel) {
|
|
4
10
|
function log(level, message) {
|
|
11
|
+
message = parseParam(message);
|
|
5
12
|
return backend.postJsonAsync('/web/capytale/api/logger', { channel, level: levels[level], message });
|
|
6
13
|
}
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Crée un rapport qui peut être envoyé plus tard
|
|
16
|
+
*
|
|
17
|
+
* @param title Titre du rapport
|
|
18
|
+
* @returns Objet Rapport
|
|
19
|
+
*/
|
|
20
|
+
function report(...title) {
|
|
21
|
+
title = parseParam(title);
|
|
22
|
+
const msg = [];
|
|
9
23
|
let level = 0;
|
|
10
24
|
function add(l, message) {
|
|
25
|
+
message = parseParam(message);
|
|
11
26
|
if (l > level)
|
|
12
27
|
level = l;
|
|
13
|
-
|
|
28
|
+
message = message.map(m => `[${levels[l]}] ${m.trim()}`);
|
|
29
|
+
msg.push(...message);
|
|
14
30
|
}
|
|
15
31
|
function send(force = false) {
|
|
16
|
-
if (!force &&
|
|
32
|
+
if (!force && msg.length === 0)
|
|
17
33
|
return;
|
|
18
|
-
log(level,
|
|
19
|
-
|
|
34
|
+
log(level, [...title, ...msg]);
|
|
35
|
+
msg.length = 0;
|
|
20
36
|
level = 0;
|
|
21
37
|
}
|
|
22
38
|
return {
|
|
23
|
-
notice(message) { add(0, message); },
|
|
24
|
-
warning(message) { add(1, message); },
|
|
25
|
-
error(message) { add(2, message); },
|
|
39
|
+
notice(...message) { add(0, message); },
|
|
40
|
+
warning(...message) { add(1, message); },
|
|
41
|
+
error(...message) { add(2, message); },
|
|
26
42
|
send,
|
|
27
43
|
};
|
|
28
44
|
}
|
|
29
45
|
return {
|
|
30
|
-
notice(message) { log(0, message); },
|
|
31
|
-
warning(message) { log(1, message); },
|
|
32
|
-
error(message) { log(2, message); },
|
|
46
|
+
notice(...message) { log(0, message); },
|
|
47
|
+
warning(...message) { log(1, message); },
|
|
48
|
+
error(...message) { log(2, message); },
|
|
33
49
|
report,
|
|
34
50
|
};
|
|
35
|
-
};
|
|
36
|
-
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
37
53
|
//# sourceMappingURL=logger.js.map
|
package/api/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/api/logger.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAuC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/api/logger.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAuC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAwDlF,SAAS,UAAU,CAAC,CAAwB;IAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,CAAa,CAAC;AACvB,CAAC;AAGD,eAAe,CACb,UAAU,OAAoB;IAC5B,OAAO,CACL,UAAU,OAAe;QACvB,SAAS,GAAG,CACV,KAAgB,EAChB,OAA8B;YAC9B,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,OAAO,CAAC,aAAa,CAC1B,0BAA0B,EAC1B,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAC3C,CAAC;QACJ,CAAC;QAED;;;;;WAKG;QACH,SAAS,MAAM,CAAC,GAAG,KAA4B;YAC7C,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,IAAI,KAAK,GAAc,CAAC,CAAC;YAEzB,SAAS,GAAG,CAAC,CAAY,EAAE,OAA8B;gBACvD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,KAAK;oBAAE,KAAK,GAAG,CAAC,CAAC;gBACzB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,SAAS,IAAI,CAAC,KAAK,GAAG,KAAK;gBACzB,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBACvC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAI,KAAkB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC7C,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACf,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC;YAED,OAAO;gBACL,MAAM,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/D,KAAK,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAI;aACL,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,GAAG,OAA8B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM;SACG,CAAC;IACd,CAAC,CACF,CAAC;AACJ,CAAC,CACF,CAAA","sourcesContent":["import type { HttpBackend } from \"./http/backend\";\n\nconst levels: ('notice' | 'warning' | 'error')[] = ['notice', 'warning', 'error'];\n\ninterface Report {\n /**\n * Log un message d'information\n * \n * @param message Message à logger\n */\n notice(...message: string[] | [string[]]): void;\n /**\n * Log un message d'avertissement\n * \n * @param message Message à logger\n */\n warning(...message: string[] | [string[]]): void;\n /**\n * Log un message d'erreur\n * \n * @param message Message à logger\n */\n error(...message: string[] | [string[]]): void;\n /**\n * Envoie le rapport\n * \n * @param force Envoie le rapport même s'il est vide\n */\n send(force?: boolean): void;\n}\nexport interface Logger {\n /**\n * Log un message d'information\n * \n * @param message Message à logger\n */\n notice(...message: string[] | [string[]]): void;\n /**\n * Log un message d'avertissement\n * \n * @param message Message à logger\n */\n warning(...message: string[] | [string[]]): void;\n /**\n * Log un message d'erreur\n * \n * @param message Message à logger\n */\n error(...message: string[] | [string[]]): void;\n /**\n * Crée un rapport qui peut être envoyé plus tard\n * \n * @param title Titre du rapport\n * @returns Objet Rapport\n */\n report(...title: string[] | [string[]]): Report;\n}\n\nfunction parseParam(m: string[] | [string[]]): string[] {\n if (m.length === 1 && Array.isArray(m[0])) {\n return m[0];\n }\n return m as string[];\n}\n\n\nexport default (\n function (backend: HttpBackend) {\n return (\n function (channel: string) {\n function log(\n level: 0 | 1 | 2,\n message: string[] | [string[]]): Promise<void> {\n message = parseParam(message);\n return backend.postJsonAsync(\n '/web/capytale/api/logger',\n { channel, level: levels[level], message }\n );\n }\n\n /**\n * Crée un rapport qui peut être envoyé plus tard\n * \n * @param title Titre du rapport\n * @returns Objet Rapport\n */\n function report(...title: string[] | [string[]]) {\n title = parseParam(title);\n const msg: string[] = [];\n let level: 0 | 1 | 2 = 0;\n\n function add(l: 0 | 1 | 2, message: string[] | [string[]]) {\n message = parseParam(message);\n if (l > level) level = l;\n message = message.map(m => `[${levels[l]}] ${m.trim()}`);\n msg.push(...message);\n }\n\n function send(force = false): void {\n if (!force && msg.length === 0) return;\n log(level, [...(title as string[]), ...msg]);\n msg.length = 0;\n level = 0;\n }\n\n return {\n notice(...message: string[] | [string[]]) { add(0, message); },\n warning(...message: string[] | [string[]]) { add(1, message); },\n error(...message: string[] | [string[]]) { add(2, message); },\n send,\n };\n }\n\n return {\n notice(...message: string[] | [string[]]) { log(0, message); },\n warning(...message: string[] | [string[]]) { log(1, message); },\n error(...message: string[] | [string[]]) { log(2, message); },\n report,\n } as Logger;\n }\n );\n }\n)"]}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
error(message: string): void;
|
|
9
|
-
send: (force?: boolean) => void;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Crée un logger pour le canal donné
|
|
3
|
+
*
|
|
4
|
+
* @param channel canal de log
|
|
5
|
+
* @returns objet Logger
|
|
6
|
+
*/
|
|
7
|
+
declare const _default: (channel: string) => import("../../api/logger").Logger;
|
|
12
8
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/backend/capytale/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,eAAe,SAAS,CAAC,IAAI,CAAC,CAAC","sourcesContent":["import http from \"./http\";\nimport loggerApi from \"../../api/logger\";\n\nexport default loggerApi(http);"]}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/backend/capytale/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC;;;;;GAKG;AACH,eAAe,SAAS,CAAC,IAAI,CAAC,CAAC","sourcesContent":["import http from \"./http\";\nimport loggerApi from \"../../api/logger\";\n\n/**\n * Crée un logger pour le canal donné\n * \n * @param channel canal de log\n * @returns objet Logger\n */\nexport default loggerApi(http);"]}
|