@apollo-annotation/shared 0.3.12 → 1.0.0
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/dist/Changes/{DeleteFeatureChange.d.ts → AddAndDeleteFeatureChanges.d.ts} +26 -11
- package/dist/Changes/AddAndDeleteFeatureChanges.d.ts.map +1 -0
- package/dist/Changes/AddAndDeleteFeatureChanges.js +117 -0
- package/dist/Changes/AddAndDeleteFeatureChanges.js.map +1 -0
- package/dist/Changes/AddAssemblyAliasesChange.d.ts +1 -4
- package/dist/Changes/AddAssemblyAliasesChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyAliasesChange.js +0 -27
- package/dist/Changes/AddAssemblyAliasesChange.js.map +1 -1
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.d.ts +2 -11
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js +2 -82
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js.map +1 -1
- package/dist/Changes/AddAssemblyFromExternalChange.d.ts +1 -9
- package/dist/Changes/AddAssemblyFromExternalChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyFromExternalChange.js +0 -72
- package/dist/Changes/AddAssemblyFromExternalChange.js.map +1 -1
- package/dist/Changes/AddAssemblyFromFileChange.d.ts +2 -17
- package/dist/Changes/AddAssemblyFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyFromFileChange.js +2 -119
- package/dist/Changes/AddAssemblyFromFileChange.js.map +1 -1
- package/dist/Changes/AddFeaturesFromFileChange.d.ts +2 -11
- package/dist/Changes/AddFeaturesFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddFeaturesFromFileChange.js +2 -66
- package/dist/Changes/AddFeaturesFromFileChange.js.map +1 -1
- package/dist/Changes/AddRefSeqAliasesChange.d.ts +1 -4
- package/dist/Changes/AddRefSeqAliasesChange.d.ts.map +1 -1
- package/dist/Changes/AddRefSeqAliasesChange.js +0 -34
- package/dist/Changes/AddRefSeqAliasesChange.js.map +1 -1
- package/dist/Changes/DeleteAssemblyChange.d.ts +1 -9
- package/dist/Changes/DeleteAssemblyChange.d.ts.map +1 -1
- package/dist/Changes/DeleteAssemblyChange.js +0 -53
- package/dist/Changes/DeleteAssemblyChange.js.map +1 -1
- package/dist/Changes/DeleteUserChange.d.ts +1 -4
- package/dist/Changes/DeleteUserChange.d.ts.map +1 -1
- package/dist/Changes/DeleteUserChange.js +0 -19
- package/dist/Changes/DeleteUserChange.js.map +1 -1
- package/dist/Changes/FeatureAttributeChange.d.ts +1 -9
- package/dist/Changes/FeatureAttributeChange.d.ts.map +1 -1
- package/dist/Changes/FeatureAttributeChange.js +0 -82
- package/dist/Changes/FeatureAttributeChange.js.map +1 -1
- package/dist/Changes/ImportJBrowseConfigChange.d.ts +1 -4
- package/dist/Changes/ImportJBrowseConfigChange.d.ts.map +1 -1
- package/dist/Changes/ImportJBrowseConfigChange.js +1 -18
- package/dist/Changes/ImportJBrowseConfigChange.js.map +1 -1
- package/dist/Changes/LocationEndChange.d.ts +1 -9
- package/dist/Changes/LocationEndChange.d.ts.map +1 -1
- package/dist/Changes/LocationEndChange.js +0 -90
- package/dist/Changes/LocationEndChange.js.map +1 -1
- package/dist/Changes/LocationStartChange.d.ts +1 -9
- package/dist/Changes/LocationStartChange.d.ts.map +1 -1
- package/dist/Changes/LocationStartChange.js +0 -90
- package/dist/Changes/LocationStartChange.js.map +1 -1
- package/dist/Changes/MergeAndUndoMergeExonsChanges.d.ts +46 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.d.ts.map +1 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.js +83 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.js.map +1 -0
- package/dist/Changes/{MergeTranscriptsChange.d.ts → MergeAndUndoMergeTranscriptsChanges.d.ts} +22 -6
- package/dist/Changes/MergeAndUndoMergeTranscriptsChanges.d.ts.map +1 -0
- package/dist/Changes/{MergeTranscriptsChange.js → MergeAndUndoMergeTranscriptsChanges.js} +40 -50
- package/dist/Changes/MergeAndUndoMergeTranscriptsChanges.js.map +1 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.d.ts +55 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.d.ts.map +1 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.js +115 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.js.map +1 -0
- package/dist/Changes/StrandChange.d.ts +1 -9
- package/dist/Changes/StrandChange.d.ts.map +1 -1
- package/dist/Changes/StrandChange.js +0 -77
- package/dist/Changes/StrandChange.js.map +1 -1
- package/dist/Changes/TypeChange.d.ts +1 -9
- package/dist/Changes/TypeChange.d.ts.map +1 -1
- package/dist/Changes/TypeChange.js +0 -77
- package/dist/Changes/TypeChange.js.map +1 -1
- package/dist/Changes/UserChange.d.ts +1 -4
- package/dist/Changes/UserChange.d.ts.map +1 -1
- package/dist/Changes/UserChange.js +0 -23
- package/dist/Changes/UserChange.js.map +1 -1
- package/dist/Changes/index.d.ts +29 -22
- package/dist/Changes/index.d.ts.map +1 -1
- package/dist/Changes/index.js +19 -24
- package/dist/Changes/index.js.map +1 -1
- package/dist/Validations/Validation.d.ts +2 -2
- package/dist/Validations/Validation.d.ts.map +1 -1
- package/dist/Validations/Validation.js +1 -1
- package/dist/Validations/Validation.js.map +1 -1
- package/dist/Validations/ValidationSet.d.ts +2 -2
- package/dist/Validations/ValidationSet.d.ts.map +1 -1
- package/dist/Validations/ValidationSet.js +2 -2
- package/dist/Validations/ValidationSet.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -4
- package/src/Changes/{DeleteFeatureChange.ts → AddAndDeleteFeatureChanges.ts} +77 -107
- package/src/Changes/AddAssemblyAliasesChange.ts +0 -35
- package/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts +5 -108
- package/src/Changes/AddAssemblyFromExternalChange.ts +0 -87
- package/src/Changes/AddAssemblyFromFileChange.ts +5 -169
- package/src/Changes/AddFeaturesFromFileChange.ts +5 -86
- package/src/Changes/AddRefSeqAliasesChange.ts +0 -44
- package/src/Changes/DeleteAssemblyChange.ts +0 -72
- package/src/Changes/DeleteUserChange.ts +0 -25
- package/src/Changes/FeatureAttributeChange.ts +0 -104
- package/src/Changes/ImportJBrowseConfigChange.ts +1 -27
- package/src/Changes/LocationEndChange.ts +0 -100
- package/src/Changes/LocationStartChange.ts +0 -100
- package/src/Changes/{MergeExonsChange.ts → MergeAndUndoMergeExonsChanges.ts} +70 -90
- package/src/Changes/{MergeTranscriptsChange.ts → MergeAndUndoMergeTranscriptsChanges.ts} +74 -66
- package/src/Changes/{SplitExonChange.ts → SplitAndUndoSplitExonChanges.ts} +95 -122
- package/src/Changes/StrandChange.ts +0 -94
- package/src/Changes/TypeChange.ts +0 -94
- package/src/Changes/UserChange.ts +0 -30
- package/src/Changes/index.ts +32 -24
- package/src/Validations/Validation.ts +2 -5
- package/src/Validations/ValidationSet.ts +3 -6
- package/src/index.ts +0 -1
- package/dist/Changes/AddFeatureChange.d.ts +0 -37
- package/dist/Changes/AddFeatureChange.d.ts.map +0 -1
- package/dist/Changes/AddFeatureChange.js +0 -169
- package/dist/Changes/AddFeatureChange.js.map +0 -1
- package/dist/Changes/DeleteFeatureChange.d.ts.map +0 -1
- package/dist/Changes/DeleteFeatureChange.js +0 -161
- package/dist/Changes/DeleteFeatureChange.js.map +0 -1
- package/dist/Changes/FromFileBaseChange.d.ts +0 -12
- package/dist/Changes/FromFileBaseChange.d.ts.map +0 -1
- package/dist/Changes/FromFileBaseChange.js +0 -196
- package/dist/Changes/FromFileBaseChange.js.map +0 -1
- package/dist/Changes/MergeExonsChange.d.ts +0 -30
- package/dist/Changes/MergeExonsChange.d.ts.map +0 -1
- package/dist/Changes/MergeExonsChange.js +0 -110
- package/dist/Changes/MergeExonsChange.js.map +0 -1
- package/dist/Changes/MergeTranscriptsChange.d.ts.map +0 -1
- package/dist/Changes/MergeTranscriptsChange.js.map +0 -1
- package/dist/Changes/SplitExonChange.d.ts +0 -34
- package/dist/Changes/SplitExonChange.d.ts.map +0 -1
- package/dist/Changes/SplitExonChange.js +0 -138
- package/dist/Changes/SplitExonChange.js.map +0 -1
- package/dist/Changes/UndoMergeExonsChange.d.ts +0 -28
- package/dist/Changes/UndoMergeExonsChange.d.ts.map +0 -1
- package/dist/Changes/UndoMergeExonsChange.js +0 -100
- package/dist/Changes/UndoMergeExonsChange.js.map +0 -1
- package/dist/Changes/UndoMergeTranscriptsChange.d.ts +0 -28
- package/dist/Changes/UndoMergeTranscriptsChange.d.ts.map +0 -1
- package/dist/Changes/UndoMergeTranscriptsChange.js +0 -100
- package/dist/Changes/UndoMergeTranscriptsChange.js.map +0 -1
- package/dist/Changes/UndoSplitExonChange.d.ts +0 -33
- package/dist/Changes/UndoSplitExonChange.d.ts.map +0 -1
- package/dist/Changes/UndoSplitExonChange.js +0 -107
- package/dist/Changes/UndoSplitExonChange.js.map +0 -1
- package/dist/Operations/GetAssembliesOperation.d.ts +0 -12
- package/dist/Operations/GetAssembliesOperation.d.ts.map +0 -1
- package/dist/Operations/GetAssembliesOperation.js +0 -16
- package/dist/Operations/GetAssembliesOperation.js.map +0 -1
- package/dist/Operations/GetFeaturesOperation.d.ts +0 -27
- package/dist/Operations/GetFeaturesOperation.d.ts.map +0 -1
- package/dist/Operations/GetFeaturesOperation.js +0 -38
- package/dist/Operations/GetFeaturesOperation.js.map +0 -1
- package/dist/Operations/index.d.ts +0 -9
- package/dist/Operations/index.d.ts.map +0 -1
- package/dist/Operations/index.js +0 -6
- package/dist/Operations/index.js.map +0 -1
- package/src/Changes/AddFeatureChange.ts +0 -236
- package/src/Changes/FromFileBaseChange.ts +0 -231
- package/src/Changes/UndoMergeExonsChange.ts +0 -149
- package/src/Changes/UndoMergeTranscriptsChange.ts +0 -153
- package/src/Changes/UndoSplitExonChange.ts +0 -174
- package/src/Operations/GetAssembliesOperation.ts +0 -28
- package/src/Operations/GetFeaturesOperation.ts +0 -58
- package/src/Operations/index.ts +0 -6
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
2
|
-
import { FeatureChange, } from '@apollo-annotation/common';
|
|
3
|
-
import { MergeTranscriptsChange } from './MergeTranscriptsChange.js';
|
|
4
|
-
export class UndoMergeTranscriptsChange extends FeatureChange {
|
|
5
|
-
typeName = 'UndoMergeTranscriptsChange';
|
|
6
|
-
changes;
|
|
7
|
-
constructor(json, options) {
|
|
8
|
-
super(json, options);
|
|
9
|
-
this.changes = 'changes' in json ? json.changes : [json];
|
|
10
|
-
}
|
|
11
|
-
toJSON() {
|
|
12
|
-
const { assembly, changedIds, changes, typeName } = this;
|
|
13
|
-
if (changes.length === 1) {
|
|
14
|
-
const [{ transcriptsToRestore, parentFeatureId }] = changes;
|
|
15
|
-
return {
|
|
16
|
-
typeName,
|
|
17
|
-
changedIds,
|
|
18
|
-
assembly,
|
|
19
|
-
transcriptsToRestore,
|
|
20
|
-
parentFeatureId,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
return { typeName, changedIds, assembly, changes };
|
|
24
|
-
}
|
|
25
|
-
async executeOnServer(backend) {
|
|
26
|
-
const { featureModel, session } = backend;
|
|
27
|
-
const { changes } = this;
|
|
28
|
-
for (const change of changes) {
|
|
29
|
-
const { transcriptsToRestore, parentFeatureId } = change;
|
|
30
|
-
if (transcriptsToRestore.length !== 2) {
|
|
31
|
-
throw new Error(`Expected exactly two transcripts to restore. Got :${transcriptsToRestore.length}`);
|
|
32
|
-
}
|
|
33
|
-
const topLevelFeature = await featureModel
|
|
34
|
-
.findOne({ allIds: parentFeatureId })
|
|
35
|
-
.session(session)
|
|
36
|
-
.exec();
|
|
37
|
-
if (!topLevelFeature) {
|
|
38
|
-
throw new Error(`Could not find feature with ID "${parentFeatureId}"`);
|
|
39
|
-
}
|
|
40
|
-
const parentFeature = this.getFeatureFromId(topLevelFeature, parentFeatureId);
|
|
41
|
-
if (!parentFeature) {
|
|
42
|
-
throw new Error(`Could not find feature with ID "${parentFeatureId}" in feature "${topLevelFeature._id.toString()}"`);
|
|
43
|
-
}
|
|
44
|
-
if (!parentFeature.children) {
|
|
45
|
-
parentFeature.children = new Map();
|
|
46
|
-
}
|
|
47
|
-
for (const transcript of transcriptsToRestore) {
|
|
48
|
-
this.addChild(parentFeature, transcript);
|
|
49
|
-
const childIds = this.getChildFeatureIds(transcript);
|
|
50
|
-
topLevelFeature.allIds.push(transcript._id, ...childIds);
|
|
51
|
-
}
|
|
52
|
-
await topLevelFeature.save();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async executeOnLocalGFF3(_backend) {
|
|
56
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
57
|
-
}
|
|
58
|
-
async executeOnClient(dataStore) {
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
60
|
-
if (!dataStore) {
|
|
61
|
-
throw new Error('No data store');
|
|
62
|
-
}
|
|
63
|
-
const { changes } = this;
|
|
64
|
-
for (const change of changes) {
|
|
65
|
-
const { transcriptsToRestore, parentFeatureId } = change;
|
|
66
|
-
if (!parentFeatureId) {
|
|
67
|
-
throw new Error('Parent ID is missing');
|
|
68
|
-
}
|
|
69
|
-
const parentFeature = dataStore.getFeature(parentFeatureId);
|
|
70
|
-
if (!parentFeature) {
|
|
71
|
-
throw new Error(`Could not find parent feature "${parentFeatureId}"`);
|
|
72
|
-
}
|
|
73
|
-
// create an ID for the parent feature if it does not have one
|
|
74
|
-
if (!parentFeature.attributes.get('_id')) {
|
|
75
|
-
parentFeature.setAttribute('_id', [parentFeature._id]);
|
|
76
|
-
}
|
|
77
|
-
for (const transcript of transcriptsToRestore) {
|
|
78
|
-
parentFeature.addChild(transcript);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
getInverse() {
|
|
83
|
-
const { assembly, changedIds, changes, logger } = this;
|
|
84
|
-
const inverseChangedIds = [...changedIds].reverse();
|
|
85
|
-
const inverseChanges = [...changes]
|
|
86
|
-
.reverse()
|
|
87
|
-
.map((undoMergeTranscriptsChange) => ({
|
|
88
|
-
firstTranscript: undoMergeTranscriptsChange.transcriptsToRestore[0],
|
|
89
|
-
secondTranscript: undoMergeTranscriptsChange.transcriptsToRestore[1],
|
|
90
|
-
parentFeatureId: undoMergeTranscriptsChange.parentFeatureId,
|
|
91
|
-
}));
|
|
92
|
-
return new MergeTranscriptsChange({
|
|
93
|
-
changedIds: inverseChangedIds,
|
|
94
|
-
typeName: 'MergeTranscriptsChange',
|
|
95
|
-
changes: inverseChanges,
|
|
96
|
-
assembly,
|
|
97
|
-
}, { logger });
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=UndoMergeTranscriptsChange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UndoMergeTranscriptsChange.js","sourceRoot":"","sources":["../../src/Changes/UndoMergeTranscriptsChange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type ChangeOptions, type ClientDataStore, FeatureChange, type LocalGFF3DataStore, type SerializedFeatureChange, type ServerDataStore } from '@apollo-annotation/common';
|
|
2
|
-
import type { AnnotationFeatureSnapshot } from '@apollo-annotation/mst';
|
|
3
|
-
import { SplitExonChange } from './SplitExonChange.js';
|
|
4
|
-
interface SerializedUndoSplitExonChangeBase extends SerializedFeatureChange {
|
|
5
|
-
typeName: 'UndoSplitExonChange';
|
|
6
|
-
}
|
|
7
|
-
export interface UndoSplitExonChangeDetails {
|
|
8
|
-
exonToRestore: AnnotationFeatureSnapshot;
|
|
9
|
-
parentFeatureId: string;
|
|
10
|
-
idsToDelete: string[];
|
|
11
|
-
upstreamCut: number;
|
|
12
|
-
downstreamCut: number;
|
|
13
|
-
leftExonId: string;
|
|
14
|
-
rightExonId: string;
|
|
15
|
-
}
|
|
16
|
-
interface SerializedUndoSplitExonChangeSingle extends SerializedUndoSplitExonChangeBase, UndoSplitExonChangeDetails {
|
|
17
|
-
}
|
|
18
|
-
interface SerializedUndoSplitExonChangeMultiple extends SerializedUndoSplitExonChangeBase {
|
|
19
|
-
changes: UndoSplitExonChangeDetails[];
|
|
20
|
-
}
|
|
21
|
-
export type SerializedUndoSplitExonChange = SerializedUndoSplitExonChangeSingle | SerializedUndoSplitExonChangeMultiple;
|
|
22
|
-
export declare class UndoSplitExonChange extends FeatureChange {
|
|
23
|
-
typeName: "UndoSplitExonChange";
|
|
24
|
-
changes: UndoSplitExonChangeDetails[];
|
|
25
|
-
constructor(json: SerializedUndoSplitExonChange, options?: ChangeOptions);
|
|
26
|
-
toJSON(): SerializedUndoSplitExonChange;
|
|
27
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
28
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
29
|
-
executeOnClient(dataStore: ClientDataStore): Promise<void>;
|
|
30
|
-
getInverse(): SplitExonChange;
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=UndoSplitExonChange.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UndoSplitExonChange.d.ts","sourceRoot":"","sources":["../../src/Changes/UndoSplitExonChange.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,UAAU,iCAAkC,SAAQ,uBAAuB;IACzE,QAAQ,EAAE,qBAAqB,CAAA;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,yBAAyB,CAAA;IACxC,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,mCACR,SAAQ,iCAAiC,EACvC,0BAA0B;CAAG;AAEjC,UAAU,qCACR,SAAQ,iCAAiC;IACzC,OAAO,EAAE,0BAA0B,EAAE,CAAA;CACtC;AAED,MAAM,MAAM,6BAA6B,GACrC,mCAAmC,GACnC,qCAAqC,CAAA;AACzC,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,wBAAiC;IACzC,OAAO,EAAE,0BAA0B,EAAE,CAAA;gBAEzB,IAAI,EAAE,6BAA6B,EAAE,OAAO,CAAC,EAAE,aAAa;IAKxE,MAAM,IAAI,6BAA6B;IA+BjC,eAAe,CAAC,OAAO,EAAE,eAAe;IAsCxC,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB;IAI/C,eAAe,CAAC,SAAS,EAAE,eAAe;IA0BhD,UAAU;CAwBX"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
2
|
-
import { FeatureChange, } from '@apollo-annotation/common';
|
|
3
|
-
import { findAndDeleteChildFeature } from './DeleteFeatureChange.js';
|
|
4
|
-
import { SplitExonChange } from './SplitExonChange.js';
|
|
5
|
-
export class UndoSplitExonChange extends FeatureChange {
|
|
6
|
-
typeName = 'UndoSplitExonChange';
|
|
7
|
-
changes;
|
|
8
|
-
constructor(json, options) {
|
|
9
|
-
super(json, options);
|
|
10
|
-
this.changes = 'changes' in json ? json.changes : [json];
|
|
11
|
-
}
|
|
12
|
-
toJSON() {
|
|
13
|
-
const { assembly, changedIds, changes, typeName } = this;
|
|
14
|
-
if (changes.length === 1) {
|
|
15
|
-
const [{ exonToRestore, parentFeatureId, idsToDelete, upstreamCut, downstreamCut, leftExonId, rightExonId, },] = changes;
|
|
16
|
-
return {
|
|
17
|
-
typeName,
|
|
18
|
-
changedIds,
|
|
19
|
-
assembly,
|
|
20
|
-
exonToRestore,
|
|
21
|
-
parentFeatureId,
|
|
22
|
-
idsToDelete,
|
|
23
|
-
upstreamCut,
|
|
24
|
-
downstreamCut,
|
|
25
|
-
leftExonId,
|
|
26
|
-
rightExonId,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
return { typeName, changedIds, assembly, changes };
|
|
30
|
-
}
|
|
31
|
-
async executeOnServer(backend) {
|
|
32
|
-
const { featureModel, session } = backend;
|
|
33
|
-
const { changes } = this;
|
|
34
|
-
for (const change of changes) {
|
|
35
|
-
const { exonToRestore, parentFeatureId, idsToDelete } = change;
|
|
36
|
-
const topLevelFeature = await featureModel
|
|
37
|
-
.findOne({ allIds: parentFeatureId })
|
|
38
|
-
.session(session)
|
|
39
|
-
.exec();
|
|
40
|
-
if (!topLevelFeature) {
|
|
41
|
-
throw new Error(`Could not find feature with ID "${parentFeatureId}"`);
|
|
42
|
-
}
|
|
43
|
-
const parentFeature = this.getFeatureFromId(topLevelFeature, parentFeatureId);
|
|
44
|
-
if (!parentFeature) {
|
|
45
|
-
throw new Error(`Could not find feature with ID "${parentFeatureId}" in feature "${topLevelFeature._id.toString()}"`);
|
|
46
|
-
}
|
|
47
|
-
if (!parentFeature.children) {
|
|
48
|
-
parentFeature.children = new Map();
|
|
49
|
-
}
|
|
50
|
-
this.addChild(parentFeature, exonToRestore);
|
|
51
|
-
const childIds = this.getChildFeatureIds(exonToRestore);
|
|
52
|
-
topLevelFeature.allIds.push(exonToRestore._id, ...childIds);
|
|
53
|
-
topLevelFeature.allIds = topLevelFeature.allIds.filter((id) => !idsToDelete.includes(id));
|
|
54
|
-
idsToDelete.map((id) => findAndDeleteChildFeature(topLevelFeature, id, this));
|
|
55
|
-
await topLevelFeature.save();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async executeOnLocalGFF3(_backend) {
|
|
59
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
60
|
-
}
|
|
61
|
-
async executeOnClient(dataStore) {
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
63
|
-
if (!dataStore) {
|
|
64
|
-
throw new Error('No data store');
|
|
65
|
-
}
|
|
66
|
-
const { changes } = this;
|
|
67
|
-
for (const change of changes) {
|
|
68
|
-
const { exonToRestore, parentFeatureId, idsToDelete } = change;
|
|
69
|
-
if (!parentFeatureId) {
|
|
70
|
-
throw new Error('Parent ID is missing');
|
|
71
|
-
}
|
|
72
|
-
const parentFeature = dataStore.getFeature(parentFeatureId);
|
|
73
|
-
if (!parentFeature) {
|
|
74
|
-
throw new Error(`Could not find parent feature "${parentFeatureId}"`);
|
|
75
|
-
}
|
|
76
|
-
// create an ID for the parent feature if it does not have one
|
|
77
|
-
if (!parentFeature.attributes.get('_id')) {
|
|
78
|
-
parentFeature.setAttribute('_id', [parentFeature._id]);
|
|
79
|
-
}
|
|
80
|
-
parentFeature.addChild(exonToRestore);
|
|
81
|
-
idsToDelete.map((id) => {
|
|
82
|
-
parentFeature.deleteChild(id);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
getInverse() {
|
|
87
|
-
const { assembly, changedIds, changes, logger } = this;
|
|
88
|
-
const inverseChangedIds = [...changedIds].reverse();
|
|
89
|
-
const inverseChanges = [...changes]
|
|
90
|
-
.reverse()
|
|
91
|
-
.map((undoSplitExonChange) => ({
|
|
92
|
-
parentFeatureId: undoSplitExonChange.parentFeatureId,
|
|
93
|
-
exonToBeSplit: undoSplitExonChange.exonToRestore,
|
|
94
|
-
upstreamCut: undoSplitExonChange.upstreamCut,
|
|
95
|
-
downstreamCut: undoSplitExonChange.downstreamCut,
|
|
96
|
-
leftExonId: undoSplitExonChange.leftExonId,
|
|
97
|
-
rightExonId: undoSplitExonChange.rightExonId,
|
|
98
|
-
}));
|
|
99
|
-
return new SplitExonChange({
|
|
100
|
-
changedIds: inverseChangedIds,
|
|
101
|
-
typeName: 'SplitExonChange',
|
|
102
|
-
changes: inverseChanges,
|
|
103
|
-
assembly,
|
|
104
|
-
}, { logger });
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=UndoSplitExonChange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UndoSplitExonChange.js","sourceRoot":"","sources":["../../src/Changes/UndoSplitExonChange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type LocalGFF3DataStore, Operation, type SerializedOperation, type ServerDataStore } from '@apollo-annotation/common';
|
|
2
|
-
interface SerializedGetAssembliesOperation extends SerializedOperation {
|
|
3
|
-
typeName: 'GetAssembliesOperation';
|
|
4
|
-
}
|
|
5
|
-
export declare class GetAssembliesOperation extends Operation {
|
|
6
|
-
typeName: "GetAssembliesOperation";
|
|
7
|
-
toJSON(): SerializedGetAssembliesOperation;
|
|
8
|
-
executeOnServer(backend: ServerDataStore): Promise<any[]>;
|
|
9
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=GetAssembliesOperation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetAssembliesOperation.d.ts","sourceRoot":"","sources":["../../src/Operations/GetAssembliesOperation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,SAAS,EACT,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAA;AAElC,UAAU,gCAAiC,SAAQ,mBAAmB;IACpE,QAAQ,EAAE,wBAAwB,CAAA;CACnC;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,QAAQ,2BAAoC;IAE5C,MAAM,IAAI,gCAAgC;IAK1C,eAAe,CAAC,OAAO,EAAE,eAAe;IAIlC,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB;CAGtD"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
2
|
-
import { Operation, } from '@apollo-annotation/common';
|
|
3
|
-
export class GetAssembliesOperation extends Operation {
|
|
4
|
-
typeName = 'GetAssembliesOperation';
|
|
5
|
-
toJSON() {
|
|
6
|
-
const { typeName } = this;
|
|
7
|
-
return { typeName };
|
|
8
|
-
}
|
|
9
|
-
executeOnServer(backend) {
|
|
10
|
-
return backend.assemblyModel.find({ status: 0 }).exec();
|
|
11
|
-
}
|
|
12
|
-
async executeOnLocalGFF3(_backend) {
|
|
13
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=GetAssembliesOperation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetAssembliesOperation.js","sourceRoot":"","sources":["../../src/Operations/GetAssembliesOperation.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,EAEL,SAAS,GAGV,MAAM,2BAA2B,CAAA;AAMlC,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IACnD,QAAQ,GAAG,wBAAiC,CAAA;IAE5C,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACzB,OAAO,EAAE,QAAQ,EAAE,CAAA;IACrB,CAAC;IAED,eAAe,CAAC,OAAwB;QACtC,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAA4B;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { type LocalGFF3DataStore, Operation, type OperationOptions, type SerializedOperation, type ServerDataStore } from '@apollo-annotation/common';
|
|
2
|
-
interface SerializedGetFeaturesOperation extends SerializedOperation {
|
|
3
|
-
typeName: 'GetFeaturesOperation';
|
|
4
|
-
refSeq: string;
|
|
5
|
-
start: number;
|
|
6
|
-
end: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class GetFeaturesOperation extends Operation {
|
|
9
|
-
typeName: "GetFeaturesOperation";
|
|
10
|
-
refSeq: string;
|
|
11
|
-
start: number;
|
|
12
|
-
end: number;
|
|
13
|
-
constructor(json: SerializedGetFeaturesOperation, options?: OperationOptions);
|
|
14
|
-
toJSON(): SerializedGetFeaturesOperation;
|
|
15
|
-
/**
|
|
16
|
-
* Fetch features based on Reference seq, Start and End -values
|
|
17
|
-
* @param request - Contain search criteria i.e. refSeq, start and end -parameters
|
|
18
|
-
* @returns Return Array of features if search was successful
|
|
19
|
-
* or if search data was not found or in case of error throw exception
|
|
20
|
-
*/
|
|
21
|
-
executeOnServer(backend: ServerDataStore): Promise<(import("@apollo-annotation/schemas").FeatureDocument & Required<{
|
|
22
|
-
_id: import("mongoose").Types.ObjectId;
|
|
23
|
-
}>)[]>;
|
|
24
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=GetFeaturesOperation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetFeaturesOperation.d.ts","sourceRoot":"","sources":["../../src/Operations/GetFeaturesOperation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAA;AAElC,UAAU,8BAA+B,SAAQ,mBAAmB;IAClE,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,QAAQ,yBAAkC;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;gBAGT,IAAI,EAAE,8BAA8B,EACpC,OAAO,CAAC,EAAE,gBAAgB;IAQ5B,MAAM,IAAI,8BAA8B;IAKxC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe;;;IAWlC,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB;CAGtD"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
2
|
-
import { Operation, } from '@apollo-annotation/common';
|
|
3
|
-
export class GetFeaturesOperation extends Operation {
|
|
4
|
-
typeName = 'GetFeaturesOperation';
|
|
5
|
-
refSeq;
|
|
6
|
-
start;
|
|
7
|
-
end;
|
|
8
|
-
constructor(json, options) {
|
|
9
|
-
super(json, options);
|
|
10
|
-
this.refSeq = json.refSeq;
|
|
11
|
-
this.start = json.start;
|
|
12
|
-
this.end = json.end;
|
|
13
|
-
}
|
|
14
|
-
toJSON() {
|
|
15
|
-
const { end, refSeq, start, typeName } = this;
|
|
16
|
-
return { typeName, refSeq, start, end };
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Fetch features based on Reference seq, Start and End -values
|
|
20
|
-
* @param request - Contain search criteria i.e. refSeq, start and end -parameters
|
|
21
|
-
* @returns Return Array of features if search was successful
|
|
22
|
-
* or if search data was not found or in case of error throw exception
|
|
23
|
-
*/
|
|
24
|
-
executeOnServer(backend) {
|
|
25
|
-
return backend.featureModel
|
|
26
|
-
.find({
|
|
27
|
-
refSeq: this.refSeq,
|
|
28
|
-
min: { $lte: this.end },
|
|
29
|
-
max: { $gte: this.start },
|
|
30
|
-
status: 0,
|
|
31
|
-
})
|
|
32
|
-
.exec();
|
|
33
|
-
}
|
|
34
|
-
async executeOnLocalGFF3(_backend) {
|
|
35
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=GetFeaturesOperation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GetFeaturesOperation.js","sourceRoot":"","sources":["../../src/Operations/GetFeaturesOperation.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,EAEL,SAAS,GAIV,MAAM,2BAA2B,CAAA;AASlC,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACjD,QAAQ,GAAG,sBAA+B,CAAA;IAC1C,MAAM,CAAQ;IACd,KAAK,CAAQ;IACb,GAAG,CAAQ;IAEX,YACE,IAAoC,EACpC,OAA0B;QAE1B,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACzC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAwB;QACtC,OAAO,OAAO,CAAC,YAAY;aACxB,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;YACzB,MAAM,EAAE,CAAC;SACV,CAAC;aACD,IAAI,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAA4B;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { GetAssembliesOperation } from './GetAssembliesOperation.js';
|
|
2
|
-
import { GetFeaturesOperation } from './GetFeaturesOperation.js';
|
|
3
|
-
export declare const operations: {
|
|
4
|
-
GetAssembliesOperation: typeof GetAssembliesOperation;
|
|
5
|
-
GetFeaturesOperation: typeof GetFeaturesOperation;
|
|
6
|
-
};
|
|
7
|
-
export * from './GetAssembliesOperation.js';
|
|
8
|
-
export * from './GetFeaturesOperation.js';
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Operations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,eAAO,MAAM,UAAU;;;CAAmD,CAAA;AAC1E,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA"}
|
package/dist/Operations/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { GetAssembliesOperation } from './GetAssembliesOperation.js';
|
|
2
|
-
import { GetFeaturesOperation } from './GetFeaturesOperation.js';
|
|
3
|
-
export const operations = { GetAssembliesOperation, GetFeaturesOperation };
|
|
4
|
-
export * from './GetAssembliesOperation.js';
|
|
5
|
-
export * from './GetFeaturesOperation.js';
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Operations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAA;AAC1E,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA"}
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
3
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
5
|
-
import {
|
|
6
|
-
type ChangeOptions,
|
|
7
|
-
type ClientDataStore,
|
|
8
|
-
FeatureChange,
|
|
9
|
-
type LocalGFF3DataStore,
|
|
10
|
-
type SerializedFeatureChange,
|
|
11
|
-
type ServerDataStore,
|
|
12
|
-
} from '@apollo-annotation/common'
|
|
13
|
-
import type { AnnotationFeatureSnapshot } from '@apollo-annotation/mst'
|
|
14
|
-
|
|
15
|
-
import { DeleteFeatureChange } from './DeleteFeatureChange.js'
|
|
16
|
-
|
|
17
|
-
interface SerializedAddFeatureChangeBase extends SerializedFeatureChange {
|
|
18
|
-
typeName: 'AddFeatureChange'
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface AddFeatureChangeDetails {
|
|
22
|
-
addedFeature: AnnotationFeatureSnapshot
|
|
23
|
-
parentFeatureId?: string // Parent feature to where feature will be added
|
|
24
|
-
copyFeature?: boolean // Are we copying or adding a new child feature
|
|
25
|
-
allIds?: string[]
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface SerializedAddFeatureChangeSingle
|
|
29
|
-
extends SerializedAddFeatureChangeBase,
|
|
30
|
-
AddFeatureChangeDetails {}
|
|
31
|
-
|
|
32
|
-
interface SerializedAddFeatureChangeMultiple
|
|
33
|
-
extends SerializedAddFeatureChangeBase {
|
|
34
|
-
changes: AddFeatureChangeDetails[]
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export type SerializedAddFeatureChange =
|
|
38
|
-
| SerializedAddFeatureChangeSingle
|
|
39
|
-
| SerializedAddFeatureChangeMultiple
|
|
40
|
-
|
|
41
|
-
export class AddFeatureChange extends FeatureChange {
|
|
42
|
-
typeName = 'AddFeatureChange' as const
|
|
43
|
-
changes: AddFeatureChangeDetails[]
|
|
44
|
-
|
|
45
|
-
constructor(json: SerializedAddFeatureChange, options?: ChangeOptions) {
|
|
46
|
-
super(json, options)
|
|
47
|
-
this.changes = 'changes' in json ? json.changes : [json]
|
|
48
|
-
}
|
|
49
|
-
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
|
50
|
-
get notification() {
|
|
51
|
-
return 'Feature added successfully'
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
toJSON(): SerializedAddFeatureChange {
|
|
55
|
-
const { assembly, changedIds, changes, typeName } = this
|
|
56
|
-
if (changes.length === 1) {
|
|
57
|
-
const [{ addedFeature, allIds, copyFeature, parentFeatureId }] = changes
|
|
58
|
-
return {
|
|
59
|
-
typeName,
|
|
60
|
-
changedIds,
|
|
61
|
-
assembly,
|
|
62
|
-
addedFeature,
|
|
63
|
-
parentFeatureId,
|
|
64
|
-
copyFeature,
|
|
65
|
-
allIds,
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return { typeName, changedIds, assembly, changes }
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Applies the required change to database
|
|
73
|
-
* @param backend - parameters from backend
|
|
74
|
-
* @returns
|
|
75
|
-
*/
|
|
76
|
-
async executeOnServer(backend: ServerDataStore) {
|
|
77
|
-
const { assemblyModel, featureModel, refSeqModel, session, user } = backend
|
|
78
|
-
const { assembly, changes, logger } = this
|
|
79
|
-
|
|
80
|
-
const assemblyDoc = await assemblyModel
|
|
81
|
-
.findById(assembly)
|
|
82
|
-
.session(session)
|
|
83
|
-
.exec()
|
|
84
|
-
if (!assemblyDoc) {
|
|
85
|
-
const errMsg = `*** ERROR: Assembly with id "${assembly}" not found`
|
|
86
|
-
logger.error(errMsg)
|
|
87
|
-
throw new Error(errMsg)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
let featureCnt = 0
|
|
91
|
-
logger.debug?.(`changes: ${JSON.stringify(changes)}`)
|
|
92
|
-
|
|
93
|
-
const { INDEXED_IDS } = process.env
|
|
94
|
-
let idsToIndex: string[] | undefined
|
|
95
|
-
if (INDEXED_IDS) {
|
|
96
|
-
idsToIndex = INDEXED_IDS.split(',')
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Loop the changes
|
|
100
|
-
for (const change of changes) {
|
|
101
|
-
logger.debug?.(`change: ${JSON.stringify(change)}`)
|
|
102
|
-
const { addedFeature, allIds, copyFeature, parentFeatureId } = change
|
|
103
|
-
const { _id, refSeq } = addedFeature
|
|
104
|
-
const refSeqDoc = await refSeqModel
|
|
105
|
-
.findById(refSeq)
|
|
106
|
-
.session(session)
|
|
107
|
-
.exec()
|
|
108
|
-
if (!refSeqDoc) {
|
|
109
|
-
throw new Error(
|
|
110
|
-
`RefSeq was not found by assembly "${assembly}" and seq_id "${refSeq}" not found`,
|
|
111
|
-
)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// CopyFeature is called from CopyFeature.tsx
|
|
115
|
-
if (copyFeature) {
|
|
116
|
-
const indexedIds = this.getIndexedIds(addedFeature, idsToIndex)
|
|
117
|
-
// Add into Mongo
|
|
118
|
-
const [newFeatureDoc] = await featureModel.create(
|
|
119
|
-
[{ ...addedFeature, allIds, indexedIds, status: -1, user }],
|
|
120
|
-
{ session },
|
|
121
|
-
)
|
|
122
|
-
logger.debug?.(
|
|
123
|
-
`Copied feature, docId "${newFeatureDoc._id}" to assembly "${assembly}"`,
|
|
124
|
-
)
|
|
125
|
-
featureCnt++
|
|
126
|
-
} else {
|
|
127
|
-
const indexedIds = this.getIndexedIds(addedFeature, idsToIndex)
|
|
128
|
-
// Adding new child feature
|
|
129
|
-
if (parentFeatureId) {
|
|
130
|
-
const topLevelFeature = await featureModel
|
|
131
|
-
.findOne({ allIds: parentFeatureId })
|
|
132
|
-
.session(session)
|
|
133
|
-
.exec()
|
|
134
|
-
if (!topLevelFeature) {
|
|
135
|
-
throw new Error(
|
|
136
|
-
`Could not find feature with ID "${parentFeatureId}"`,
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
const parentFeature = this.getFeatureFromId(
|
|
140
|
-
topLevelFeature,
|
|
141
|
-
parentFeatureId,
|
|
142
|
-
)
|
|
143
|
-
if (!parentFeature) {
|
|
144
|
-
throw new Error(
|
|
145
|
-
`Could not find feature with ID "${parentFeatureId}" in feature "${topLevelFeature._id}"`,
|
|
146
|
-
)
|
|
147
|
-
}
|
|
148
|
-
this.addChild(parentFeature, addedFeature)
|
|
149
|
-
const childIds = this.getChildFeatureIds(addedFeature)
|
|
150
|
-
topLevelFeature.allIds.push(_id, ...childIds)
|
|
151
|
-
if (indexedIds.length > 0 && !topLevelFeature.indexedIds) {
|
|
152
|
-
topLevelFeature.indexedIds = []
|
|
153
|
-
}
|
|
154
|
-
topLevelFeature.indexedIds?.push(...indexedIds)
|
|
155
|
-
await topLevelFeature.save()
|
|
156
|
-
} else {
|
|
157
|
-
const childIds = this.getChildFeatureIds(addedFeature)
|
|
158
|
-
const allIdsV2 = [_id, ...childIds]
|
|
159
|
-
const [newFeatureDoc] = await featureModel.create(
|
|
160
|
-
[{ allIds: allIdsV2, indexedIds, status: 0, ...addedFeature }],
|
|
161
|
-
{ session },
|
|
162
|
-
)
|
|
163
|
-
logger.verbose?.(`Added docId "${newFeatureDoc._id}"`)
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
featureCnt++
|
|
167
|
-
}
|
|
168
|
-
logger.debug?.(`Added ${featureCnt} new feature(s) into database.`)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
async executeOnLocalGFF3(_backend: LocalGFF3DataStore) {
|
|
172
|
-
throw new Error('executeOnLocalGFF3 not implemented')
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
async executeOnClient(dataStore: ClientDataStore) {
|
|
176
|
-
if (!dataStore) {
|
|
177
|
-
throw new Error('No data store')
|
|
178
|
-
}
|
|
179
|
-
const { assembly, changes } = this
|
|
180
|
-
for (const change of changes) {
|
|
181
|
-
const { addedFeature, parentFeatureId } = change
|
|
182
|
-
if (parentFeatureId) {
|
|
183
|
-
let parentFeature = dataStore.getFeature(parentFeatureId)
|
|
184
|
-
// maybe the parent feature hasn't been loaded yet
|
|
185
|
-
if (!parentFeature) {
|
|
186
|
-
await dataStore.loadFeatures([
|
|
187
|
-
{
|
|
188
|
-
assemblyName: assembly,
|
|
189
|
-
refName: addedFeature.refSeq,
|
|
190
|
-
start: addedFeature.min,
|
|
191
|
-
end: addedFeature.max,
|
|
192
|
-
},
|
|
193
|
-
])
|
|
194
|
-
parentFeature = dataStore.getFeature(parentFeatureId)
|
|
195
|
-
if (!parentFeature) {
|
|
196
|
-
throw new Error(
|
|
197
|
-
`Could not find parent feature "${parentFeatureId}"`,
|
|
198
|
-
)
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// create an ID for the parent feature if it does not have one
|
|
202
|
-
if (!parentFeature.attributes.get('_id')) {
|
|
203
|
-
parentFeature.setAttribute('_id', [parentFeature._id])
|
|
204
|
-
}
|
|
205
|
-
parentFeature.addChild(addedFeature)
|
|
206
|
-
} else {
|
|
207
|
-
dataStore.addFeature(assembly, addedFeature)
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
getInverse() {
|
|
213
|
-
const { assembly, changedIds, changes, logger } = this
|
|
214
|
-
const inverseChangedIds = [...changedIds].reverse()
|
|
215
|
-
const inverseChanges = [...changes].reverse().map((addFeatureChange) => ({
|
|
216
|
-
deletedFeature: addFeatureChange.addedFeature,
|
|
217
|
-
parentFeatureId: addFeatureChange.parentFeatureId,
|
|
218
|
-
}))
|
|
219
|
-
|
|
220
|
-
return new DeleteFeatureChange(
|
|
221
|
-
{
|
|
222
|
-
changedIds: inverseChangedIds,
|
|
223
|
-
typeName: 'DeleteFeatureChange',
|
|
224
|
-
changes: inverseChanges,
|
|
225
|
-
assembly,
|
|
226
|
-
},
|
|
227
|
-
{ logger },
|
|
228
|
-
)
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
export function isAddFeatureChange(
|
|
233
|
-
change: unknown,
|
|
234
|
-
): change is AddFeatureChange {
|
|
235
|
-
return (change as AddFeatureChange).typeName === 'AddFeatureChange'
|
|
236
|
-
}
|