@hestia-earth/api 0.28.22 → 0.28.24
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/esm/models.js +1 -0
- package/esm/source-tracker/model/lit-review.document.js +1 -0
- package/esm/source-tracker/model/lit-review.model.js +49 -0
- package/esm/ws.model.js +1 -0
- package/models.d.ts +1 -0
- package/models.js +1 -0
- package/package.json +1 -1
- package/source-tracker/model/lit-review.document.d.ts +4 -0
- package/source-tracker/model/lit-review.document.js +2 -0
- package/source-tracker/model/lit-review.model.d.ts +101 -0
- package/source-tracker/model/lit-review.model.js +56 -0
- package/source-tracker/model/model.d.ts +1 -0
- package/ws.model.d.ts +2 -1
- package/ws.model.js +1 -0
package/esm/models.js
CHANGED
|
@@ -13,6 +13,7 @@ export * from './nodes/model/model.js';
|
|
|
13
13
|
export * from './reconciliations/model/model.js';
|
|
14
14
|
export * from './reports/model.js';
|
|
15
15
|
export * from './settings/model/model.js';
|
|
16
|
+
export * from './source-tracker/model/lit-review.model.js';
|
|
16
17
|
export * from './source-tracker/model/model.js';
|
|
17
18
|
export * from './url-shortener/model/model.js';
|
|
18
19
|
export * from './users/model/model.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export var LitReviewStatus;
|
|
2
|
+
(function (LitReviewStatus) {
|
|
3
|
+
LitReviewStatus["Queued"] = "queued";
|
|
4
|
+
LitReviewStatus["Running"] = "running";
|
|
5
|
+
LitReviewStatus["Succeeded"] = "succeeded";
|
|
6
|
+
LitReviewStatus["Failed"] = "failed";
|
|
7
|
+
})(LitReviewStatus || (LitReviewStatus = {}));
|
|
8
|
+
export var LitReviewStep;
|
|
9
|
+
(function (LitReviewStep) {
|
|
10
|
+
LitReviewStep["Scope"] = "scope";
|
|
11
|
+
LitReviewStep["Snapshot"] = "snapshot";
|
|
12
|
+
LitReviewStep["Fetch"] = "fetch";
|
|
13
|
+
LitReviewStep["Screen"] = "screen";
|
|
14
|
+
LitReviewStep["Report"] = "report";
|
|
15
|
+
})(LitReviewStep || (LitReviewStep = {}));
|
|
16
|
+
export var LitReviewAnswer;
|
|
17
|
+
(function (LitReviewAnswer) {
|
|
18
|
+
LitReviewAnswer["Yes"] = "yes";
|
|
19
|
+
LitReviewAnswer["No"] = "no";
|
|
20
|
+
LitReviewAnswer["Unknown"] = "unknown";
|
|
21
|
+
})(LitReviewAnswer || (LitReviewAnswer = {}));
|
|
22
|
+
export var LitReviewConfidence;
|
|
23
|
+
(function (LitReviewConfidence) {
|
|
24
|
+
LitReviewConfidence["Strong"] = "A strong";
|
|
25
|
+
LitReviewConfidence["Probable"] = "B probable";
|
|
26
|
+
LitReviewConfidence["Possible"] = "C possible";
|
|
27
|
+
})(LitReviewConfidence || (LitReviewConfidence = {}));
|
|
28
|
+
export const LIT_REVIEW_TERMINAL_STATUSES = [LitReviewStatus.Succeeded, LitReviewStatus.Failed];
|
|
29
|
+
export const isLitReviewTerminal = (status) => LIT_REVIEW_TERMINAL_STATUSES.includes(status);
|
|
30
|
+
export const LIT_REVIEW_STALLED_AFTER = 30 * 60 * 1000;
|
|
31
|
+
const lastWriteAt = (job) => job.progress?.heartbeatAt || job.updatedAt || job.createdAt;
|
|
32
|
+
export const isLitReviewStalled = (job, now = new Date()) => {
|
|
33
|
+
const last = lastWriteAt(job);
|
|
34
|
+
const silent = last && now.getTime() - new Date(last).getTime() > LIT_REVIEW_STALLED_AFTER;
|
|
35
|
+
return !isLitReviewTerminal(job.status) && !!silent;
|
|
36
|
+
};
|
|
37
|
+
const armTotals = (arms) => arms.reduce((acc, { fetched, total }) => ({ fetched: acc.fetched + (fetched || 0), total: acc.total + (total || 0) }), { fetched: 0, total: 0 });
|
|
38
|
+
export const litReviewPercent = (progress) => {
|
|
39
|
+
const { fetched, total } = armTotals(progress?.arms || []);
|
|
40
|
+
return total > 0 ? Math.min(fetched / total, 1) : undefined;
|
|
41
|
+
};
|
|
42
|
+
export const litReviewAnswer = (value) => {
|
|
43
|
+
const normalized = `${value ?? ''}`.trim().toLowerCase();
|
|
44
|
+
return normalized === LitReviewAnswer.Yes
|
|
45
|
+
? LitReviewAnswer.Yes
|
|
46
|
+
: normalized === LitReviewAnswer.No
|
|
47
|
+
? LitReviewAnswer.No
|
|
48
|
+
: LitReviewAnswer.Unknown;
|
|
49
|
+
};
|
package/esm/ws.model.js
CHANGED
package/models.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from './nodes/model/model';
|
|
|
13
13
|
export * from './reconciliations/model/model';
|
|
14
14
|
export * from './reports/model';
|
|
15
15
|
export * from './settings/model/model';
|
|
16
|
+
export * from './source-tracker/model/lit-review.model';
|
|
16
17
|
export * from './source-tracker/model/model';
|
|
17
18
|
export * from './url-shortener/model/model';
|
|
18
19
|
export * from './users/model/model';
|
package/models.js
CHANGED
|
@@ -29,6 +29,7 @@ __exportStar(require("./nodes/model/model"), exports);
|
|
|
29
29
|
__exportStar(require("./reconciliations/model/model"), exports);
|
|
30
30
|
__exportStar(require("./reports/model"), exports);
|
|
31
31
|
__exportStar(require("./settings/model/model"), exports);
|
|
32
|
+
__exportStar(require("./source-tracker/model/lit-review.model"), exports);
|
|
32
33
|
__exportStar(require("./source-tracker/model/model"), exports);
|
|
33
34
|
__exportStar(require("./url-shortener/model/model"), exports);
|
|
34
35
|
__exportStar(require("./users/model/model"), exports);
|
package/package.json
CHANGED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { BaseModel } from '../../db/model.base';
|
|
2
|
+
export declare enum LitReviewStatus {
|
|
3
|
+
Queued = "queued",
|
|
4
|
+
Running = "running",
|
|
5
|
+
Succeeded = "succeeded",
|
|
6
|
+
Failed = "failed"
|
|
7
|
+
}
|
|
8
|
+
export declare enum LitReviewStep {
|
|
9
|
+
Scope = "scope",
|
|
10
|
+
Snapshot = "snapshot",
|
|
11
|
+
Fetch = "fetch",
|
|
12
|
+
Screen = "screen",
|
|
13
|
+
Report = "report"
|
|
14
|
+
}
|
|
15
|
+
export declare enum LitReviewAnswer {
|
|
16
|
+
Yes = "yes",
|
|
17
|
+
No = "no",
|
|
18
|
+
Unknown = "unknown"
|
|
19
|
+
}
|
|
20
|
+
export interface LitReviewScope {
|
|
21
|
+
crop?: string;
|
|
22
|
+
country?: string;
|
|
23
|
+
practice?: string;
|
|
24
|
+
years?: string;
|
|
25
|
+
freeText?: string;
|
|
26
|
+
anchorPractice?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface LitReviewArm {
|
|
29
|
+
name: string;
|
|
30
|
+
fetched?: number;
|
|
31
|
+
total?: number;
|
|
32
|
+
done?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface LitReviewProgress {
|
|
35
|
+
step?: LitReviewStep;
|
|
36
|
+
arms?: LitReviewArm[];
|
|
37
|
+
attempt?: number;
|
|
38
|
+
message?: string;
|
|
39
|
+
heartbeatAt?: Date;
|
|
40
|
+
}
|
|
41
|
+
export interface LitReview extends BaseModel {
|
|
42
|
+
status: LitReviewStatus;
|
|
43
|
+
scope: LitReviewScope;
|
|
44
|
+
scopeSummary?: string;
|
|
45
|
+
progress?: LitReviewProgress;
|
|
46
|
+
counts?: {
|
|
47
|
+
[tier: string]: number;
|
|
48
|
+
};
|
|
49
|
+
error?: string;
|
|
50
|
+
startedAt?: Date;
|
|
51
|
+
completedAt?: Date;
|
|
52
|
+
createdBy?: string;
|
|
53
|
+
}
|
|
54
|
+
export declare enum LitReviewConfidence {
|
|
55
|
+
Strong = "A strong",
|
|
56
|
+
Probable = "B probable",
|
|
57
|
+
Possible = "C possible"
|
|
58
|
+
}
|
|
59
|
+
export interface LitReviewStudy {
|
|
60
|
+
rank?: number;
|
|
61
|
+
cellPriority?: string;
|
|
62
|
+
confidence?: string;
|
|
63
|
+
crop?: string;
|
|
64
|
+
country?: string;
|
|
65
|
+
title?: string;
|
|
66
|
+
year?: number;
|
|
67
|
+
doi?: string;
|
|
68
|
+
url?: string;
|
|
69
|
+
studyDesign?: string;
|
|
70
|
+
reportsYield: LitReviewAnswer;
|
|
71
|
+
reportsFertiliser: LitReviewAnswer;
|
|
72
|
+
farmLevel?: boolean;
|
|
73
|
+
lcaFraming?: boolean;
|
|
74
|
+
openAccess?: boolean;
|
|
75
|
+
pdfUrl?: string;
|
|
76
|
+
practiceEvidence?: string;
|
|
77
|
+
venue?: string;
|
|
78
|
+
firstAuthor?: string;
|
|
79
|
+
citedBy?: number;
|
|
80
|
+
hasAbstract?: boolean;
|
|
81
|
+
foundBy?: string;
|
|
82
|
+
studyKey?: string;
|
|
83
|
+
studyPath?: string;
|
|
84
|
+
fields: {
|
|
85
|
+
[column: string]: string;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export interface LitReviewFiles {
|
|
89
|
+
workbookPath?: string;
|
|
90
|
+
logPath?: string;
|
|
91
|
+
scopePath?: string;
|
|
92
|
+
csvPaths: {
|
|
93
|
+
[filename: string]: string;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export declare const LIT_REVIEW_TERMINAL_STATUSES: LitReviewStatus[];
|
|
97
|
+
export declare const isLitReviewTerminal: (status?: LitReviewStatus) => boolean;
|
|
98
|
+
export declare const LIT_REVIEW_STALLED_AFTER: number;
|
|
99
|
+
export declare const isLitReviewStalled: (job: Pick<LitReview, "status" | "progress" | "updatedAt" | "createdAt">, now?: Date) => boolean;
|
|
100
|
+
export declare const litReviewPercent: (progress?: LitReviewProgress) => number;
|
|
101
|
+
export declare const litReviewAnswer: (value?: string) => LitReviewAnswer;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.litReviewAnswer = exports.litReviewPercent = exports.isLitReviewStalled = exports.LIT_REVIEW_STALLED_AFTER = exports.isLitReviewTerminal = exports.LIT_REVIEW_TERMINAL_STATUSES = exports.LitReviewConfidence = exports.LitReviewAnswer = exports.LitReviewStep = exports.LitReviewStatus = void 0;
|
|
4
|
+
var LitReviewStatus;
|
|
5
|
+
(function (LitReviewStatus) {
|
|
6
|
+
LitReviewStatus["Queued"] = "queued";
|
|
7
|
+
LitReviewStatus["Running"] = "running";
|
|
8
|
+
LitReviewStatus["Succeeded"] = "succeeded";
|
|
9
|
+
LitReviewStatus["Failed"] = "failed";
|
|
10
|
+
})(LitReviewStatus || (exports.LitReviewStatus = LitReviewStatus = {}));
|
|
11
|
+
var LitReviewStep;
|
|
12
|
+
(function (LitReviewStep) {
|
|
13
|
+
LitReviewStep["Scope"] = "scope";
|
|
14
|
+
LitReviewStep["Snapshot"] = "snapshot";
|
|
15
|
+
LitReviewStep["Fetch"] = "fetch";
|
|
16
|
+
LitReviewStep["Screen"] = "screen";
|
|
17
|
+
LitReviewStep["Report"] = "report";
|
|
18
|
+
})(LitReviewStep || (exports.LitReviewStep = LitReviewStep = {}));
|
|
19
|
+
var LitReviewAnswer;
|
|
20
|
+
(function (LitReviewAnswer) {
|
|
21
|
+
LitReviewAnswer["Yes"] = "yes";
|
|
22
|
+
LitReviewAnswer["No"] = "no";
|
|
23
|
+
LitReviewAnswer["Unknown"] = "unknown";
|
|
24
|
+
})(LitReviewAnswer || (exports.LitReviewAnswer = LitReviewAnswer = {}));
|
|
25
|
+
var LitReviewConfidence;
|
|
26
|
+
(function (LitReviewConfidence) {
|
|
27
|
+
LitReviewConfidence["Strong"] = "A strong";
|
|
28
|
+
LitReviewConfidence["Probable"] = "B probable";
|
|
29
|
+
LitReviewConfidence["Possible"] = "C possible";
|
|
30
|
+
})(LitReviewConfidence || (exports.LitReviewConfidence = LitReviewConfidence = {}));
|
|
31
|
+
exports.LIT_REVIEW_TERMINAL_STATUSES = [LitReviewStatus.Succeeded, LitReviewStatus.Failed];
|
|
32
|
+
const isLitReviewTerminal = (status) => exports.LIT_REVIEW_TERMINAL_STATUSES.includes(status);
|
|
33
|
+
exports.isLitReviewTerminal = isLitReviewTerminal;
|
|
34
|
+
exports.LIT_REVIEW_STALLED_AFTER = 30 * 60 * 1000;
|
|
35
|
+
const lastWriteAt = (job) => job.progress?.heartbeatAt || job.updatedAt || job.createdAt;
|
|
36
|
+
const isLitReviewStalled = (job, now = new Date()) => {
|
|
37
|
+
const last = lastWriteAt(job);
|
|
38
|
+
const silent = last && now.getTime() - new Date(last).getTime() > exports.LIT_REVIEW_STALLED_AFTER;
|
|
39
|
+
return !(0, exports.isLitReviewTerminal)(job.status) && !!silent;
|
|
40
|
+
};
|
|
41
|
+
exports.isLitReviewStalled = isLitReviewStalled;
|
|
42
|
+
const armTotals = (arms) => arms.reduce((acc, { fetched, total }) => ({ fetched: acc.fetched + (fetched || 0), total: acc.total + (total || 0) }), { fetched: 0, total: 0 });
|
|
43
|
+
const litReviewPercent = (progress) => {
|
|
44
|
+
const { fetched, total } = armTotals(progress?.arms || []);
|
|
45
|
+
return total > 0 ? Math.min(fetched / total, 1) : undefined;
|
|
46
|
+
};
|
|
47
|
+
exports.litReviewPercent = litReviewPercent;
|
|
48
|
+
const litReviewAnswer = (value) => {
|
|
49
|
+
const normalized = `${value ?? ''}`.trim().toLowerCase();
|
|
50
|
+
return normalized === LitReviewAnswer.Yes
|
|
51
|
+
? LitReviewAnswer.Yes
|
|
52
|
+
: normalized === LitReviewAnswer.No
|
|
53
|
+
? LitReviewAnswer.No
|
|
54
|
+
: LitReviewAnswer.Unknown;
|
|
55
|
+
};
|
|
56
|
+
exports.litReviewAnswer = litReviewAnswer;
|
package/ws.model.d.ts
CHANGED
package/ws.model.js
CHANGED