@apollo-annotation/shared 0.3.13 → 1.0.1
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
package/dist/Changes/{MergeTranscriptsChange.d.ts → MergeAndUndoMergeTranscriptsChanges.d.ts}
RENAMED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { type ChangeOptions,
|
|
1
|
+
import { type ChangeOptions, FeatureChange, type SerializedFeatureChange } from '@apollo-annotation/common';
|
|
2
2
|
import type { AnnotationFeature, AnnotationFeatureSnapshot } from '@apollo-annotation/mst';
|
|
3
3
|
import type { Feature } from '@apollo-annotation/schemas';
|
|
4
|
-
import { UndoMergeTranscriptsChange } from './UndoMergeTranscriptsChange.js';
|
|
5
4
|
interface SerializedMergeTranscriptsChangeBase extends SerializedFeatureChange {
|
|
6
5
|
typeName: 'MergeTranscriptsChange';
|
|
7
6
|
}
|
|
@@ -16,20 +15,37 @@ interface SerializedMergeTranscriptsChangeMultiple extends SerializedMergeTransc
|
|
|
16
15
|
changes: MergeTranscriptsChangeDetails[];
|
|
17
16
|
}
|
|
18
17
|
export type SerializedMergeTranscriptsChange = SerializedMergeTranscriptsChangeSingle | SerializedMergeTranscriptsChangeMultiple;
|
|
18
|
+
interface SerializedUndoMergeTranscriptsChangeBase extends SerializedFeatureChange {
|
|
19
|
+
typeName: 'UndoMergeTranscriptsChange';
|
|
20
|
+
}
|
|
21
|
+
export interface UndoMergeTranscriptsChangeDetails {
|
|
22
|
+
transcriptsToRestore: AnnotationFeatureSnapshot[];
|
|
23
|
+
parentFeatureId: string;
|
|
24
|
+
}
|
|
25
|
+
interface SerializedUndoMergeTranscriptsChangeSingle extends SerializedUndoMergeTranscriptsChangeBase, UndoMergeTranscriptsChangeDetails {
|
|
26
|
+
}
|
|
27
|
+
interface SerializedUndoMergeTranscriptsChangeMultiple extends SerializedUndoMergeTranscriptsChangeBase {
|
|
28
|
+
changes: UndoMergeTranscriptsChangeDetails[];
|
|
29
|
+
}
|
|
30
|
+
export type SerializedUndoMergeTranscriptsChange = SerializedUndoMergeTranscriptsChangeSingle | SerializedUndoMergeTranscriptsChangeMultiple;
|
|
19
31
|
export declare class MergeTranscriptsChange extends FeatureChange {
|
|
20
32
|
typeName: "MergeTranscriptsChange";
|
|
21
33
|
changes: MergeTranscriptsChangeDetails[];
|
|
22
34
|
constructor(json: SerializedMergeTranscriptsChange, options?: ChangeOptions);
|
|
23
35
|
get notification(): string;
|
|
24
36
|
toJSON(): SerializedMergeTranscriptsChange;
|
|
25
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
26
37
|
mergeTranscriptsOnServer(firstTranscript: Feature, secondTranscript: AnnotationFeatureSnapshot): void;
|
|
27
38
|
mergeFeatureIntoTranscriptOnServer(secondFeatureChild: AnnotationFeatureSnapshot, firstTranscript: Feature): void;
|
|
28
|
-
executeOnClient(dataStore: ClientDataStore): Promise<void>;
|
|
29
39
|
mergeTranscriptsOnClient(firstTranscript: AnnotationFeature, secondTranscript: AnnotationFeatureSnapshot): void;
|
|
30
40
|
mergeFeatureIntoTranscriptOnClient(secondFeatureChild: AnnotationFeatureSnapshot, firstTranscript: AnnotationFeature): void;
|
|
31
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
32
41
|
getInverse(): UndoMergeTranscriptsChange;
|
|
33
42
|
}
|
|
43
|
+
export declare class UndoMergeTranscriptsChange extends FeatureChange {
|
|
44
|
+
typeName: "UndoMergeTranscriptsChange";
|
|
45
|
+
changes: UndoMergeTranscriptsChangeDetails[];
|
|
46
|
+
constructor(json: SerializedUndoMergeTranscriptsChange, options?: ChangeOptions);
|
|
47
|
+
toJSON(): SerializedUndoMergeTranscriptsChange;
|
|
48
|
+
getInverse(): MergeTranscriptsChange;
|
|
49
|
+
}
|
|
34
50
|
export {};
|
|
35
|
-
//# sourceMappingURL=
|
|
51
|
+
//# sourceMappingURL=MergeAndUndoMergeTranscriptsChanges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MergeAndUndoMergeTranscriptsChanges.d.ts","sourceRoot":"","sources":["../../src/Changes/MergeAndUndoMergeTranscriptsChanges.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,aAAa,EACb,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAMzD,UAAU,oCAAqC,SAAQ,uBAAuB;IAC5E,QAAQ,EAAE,wBAAwB,CAAA;CACnC;AAED,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,yBAAyB,CAAA;IAC1C,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,sCACR,SAAQ,oCAAoC,EAC1C,6BAA6B;CAAG;AAEpC,UAAU,wCACR,SAAQ,oCAAoC;IAC5C,OAAO,EAAE,6BAA6B,EAAE,CAAA;CACzC;AAED,MAAM,MAAM,gCAAgC,GACxC,sCAAsC,GACtC,wCAAwC,CAAA;AAE5C,UAAU,wCACR,SAAQ,uBAAuB;IAC/B,QAAQ,EAAE,4BAA4B,CAAA;CACvC;AAED,MAAM,WAAW,iCAAiC;IAChD,oBAAoB,EAAE,yBAAyB,EAAE,CAAA;IACjD,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,0CACR,SAAQ,wCAAwC,EAC9C,iCAAiC;CAAG;AAExC,UAAU,4CACR,SAAQ,wCAAwC;IAChD,OAAO,EAAE,iCAAiC,EAAE,CAAA;CAC7C;AAED,MAAM,MAAM,oCAAoC,GAC5C,0CAA0C,GAC1C,4CAA4C,CAAA;AAEhD,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,2BAAoC;IAC5C,OAAO,EAAE,6BAA6B,EAAE,CAAA;gBAE5B,IAAI,EAAE,gCAAgC,EAAE,OAAO,CAAC,EAAE,aAAa;IAK3E,IAAI,YAAY,WAEf;IAED,MAAM,IAAI,gCAAgC;IAiB1C,wBAAwB,CACtB,eAAe,EAAE,OAAO,EACxB,gBAAgB,EAAE,yBAAyB;IA+B7C,kCAAkC,CAChC,kBAAkB,EAAE,yBAAyB,EAC7C,eAAe,EAAE,OAAO;IA+F1B,wBAAwB,CACtB,eAAe,EAAE,iBAAiB,EAClC,gBAAgB,EAAE,yBAAyB;IA4B7C,kCAAkC,CAChC,kBAAkB,EAAE,yBAAyB,EAC7C,eAAe,EAAE,iBAAiB;IAuEpC,UAAU;CAuBX;AAED,qBAAa,0BAA2B,SAAQ,aAAa;IAC3D,QAAQ,+BAAwC;IAChD,OAAO,EAAE,iCAAiC,EAAE,CAAA;gBAG1C,IAAI,EAAE,oCAAoC,EAC1C,OAAO,CAAC,EAAE,aAAa;IAMzB,MAAM,IAAI,oCAAoC;IAgB9C,UAAU;CAqBX"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
/* eslint-disable unicorn/prefer-structured-clone */
|
|
2
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
3
2
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
4
3
|
import { FeatureChange, } from '@apollo-annotation/common';
|
|
5
4
|
import { doesIntersect2 } from '@jbrowse/core/util';
|
|
6
5
|
import { getSnapshot } from '@jbrowse/mobx-state-tree';
|
|
7
6
|
import { attributesToRecords, stringifyAttributes } from '../util.js';
|
|
8
|
-
import { findAndDeleteChildFeature } from './DeleteFeatureChange.js';
|
|
9
|
-
import { UndoMergeTranscriptsChange } from './UndoMergeTranscriptsChange.js';
|
|
10
7
|
export class MergeTranscriptsChange extends FeatureChange {
|
|
11
8
|
typeName = 'MergeTranscriptsChange';
|
|
12
9
|
changes;
|
|
@@ -33,33 +30,6 @@ export class MergeTranscriptsChange extends FeatureChange {
|
|
|
33
30
|
}
|
|
34
31
|
return { typeName, changedIds, assembly, changes };
|
|
35
32
|
}
|
|
36
|
-
async executeOnServer(backend) {
|
|
37
|
-
const { featureModel, session } = backend;
|
|
38
|
-
const { changes, logger } = this;
|
|
39
|
-
for (const change of changes) {
|
|
40
|
-
const { firstTranscript, secondTranscript } = change;
|
|
41
|
-
const topLevelFeature = await featureModel
|
|
42
|
-
.findOne({ allIds: firstTranscript._id })
|
|
43
|
-
.session(session)
|
|
44
|
-
.exec();
|
|
45
|
-
if (!topLevelFeature) {
|
|
46
|
-
const errMsg = `*** ERROR: The following featureId was not found in database ='${firstTranscript._id}'`;
|
|
47
|
-
logger.error(errMsg);
|
|
48
|
-
throw new Error(errMsg);
|
|
49
|
-
}
|
|
50
|
-
const mergedTranscript = this.getFeatureFromId(topLevelFeature, firstTranscript._id);
|
|
51
|
-
if (!mergedTranscript) {
|
|
52
|
-
const errMsg = 'ERROR when searching feature by featureId';
|
|
53
|
-
logger.error(errMsg);
|
|
54
|
-
throw new Error(errMsg);
|
|
55
|
-
}
|
|
56
|
-
this.mergeTranscriptsOnServer(mergedTranscript, secondTranscript);
|
|
57
|
-
const deletedIds = findAndDeleteChildFeature(topLevelFeature, secondTranscript._id, this);
|
|
58
|
-
deletedIds.push(secondTranscript._id);
|
|
59
|
-
topLevelFeature.allIds = topLevelFeature.allIds.filter((id) => !deletedIds.includes(id));
|
|
60
|
-
await topLevelFeature.save();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
33
|
mergeTranscriptsOnServer(firstTranscript, secondTranscript) {
|
|
64
34
|
firstTranscript.min = Math.min(firstTranscript.min, secondTranscript.min);
|
|
65
35
|
firstTranscript.max = Math.max(firstTranscript.max, secondTranscript.max);
|
|
@@ -137,22 +107,6 @@ export class MergeTranscriptsChange extends FeatureChange {
|
|
|
137
107
|
this.addChild(firstTranscript, secondFeatureChild);
|
|
138
108
|
}
|
|
139
109
|
}
|
|
140
|
-
/* --------------------------------- */
|
|
141
|
-
async executeOnClient(dataStore) {
|
|
142
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
143
|
-
if (!dataStore) {
|
|
144
|
-
throw new Error('No data store');
|
|
145
|
-
}
|
|
146
|
-
for (const [idx, changedId] of this.changedIds.entries()) {
|
|
147
|
-
const { firstTranscript, secondTranscript } = this.changes[idx];
|
|
148
|
-
const mergedTranscript = dataStore.getFeature(firstTranscript._id);
|
|
149
|
-
if (!mergedTranscript) {
|
|
150
|
-
throw new Error(`Could not find feature with identifier "${changedId}"`);
|
|
151
|
-
}
|
|
152
|
-
this.mergeTranscriptsOnClient(mergedTranscript, secondTranscript);
|
|
153
|
-
mergedTranscript.parent?.deleteChild(secondTranscript._id);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
110
|
mergeTranscriptsOnClient(firstTranscript, secondTranscript) {
|
|
157
111
|
firstTranscript.setMin(Math.min(firstTranscript.min, secondTranscript.min));
|
|
158
112
|
firstTranscript.setMax(Math.max(firstTranscript.max, secondTranscript.max));
|
|
@@ -214,9 +168,6 @@ export class MergeTranscriptsChange extends FeatureChange {
|
|
|
214
168
|
firstTranscript.addChild(secondFeatureChild);
|
|
215
169
|
}
|
|
216
170
|
}
|
|
217
|
-
async executeOnLocalGFF3(_backend) {
|
|
218
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
219
|
-
}
|
|
220
171
|
getInverse() {
|
|
221
172
|
const { assembly, changedIds, changes, logger } = this;
|
|
222
173
|
const inverseChangedIds = [...changedIds].reverse();
|
|
@@ -238,4 +189,43 @@ export class MergeTranscriptsChange extends FeatureChange {
|
|
|
238
189
|
}, { logger });
|
|
239
190
|
}
|
|
240
191
|
}
|
|
241
|
-
|
|
192
|
+
export class UndoMergeTranscriptsChange extends FeatureChange {
|
|
193
|
+
typeName = 'UndoMergeTranscriptsChange';
|
|
194
|
+
changes;
|
|
195
|
+
constructor(json, options) {
|
|
196
|
+
super(json, options);
|
|
197
|
+
this.changes = 'changes' in json ? json.changes : [json];
|
|
198
|
+
}
|
|
199
|
+
toJSON() {
|
|
200
|
+
const { assembly, changedIds, changes, typeName } = this;
|
|
201
|
+
if (changes.length === 1) {
|
|
202
|
+
const [{ transcriptsToRestore, parentFeatureId }] = changes;
|
|
203
|
+
return {
|
|
204
|
+
typeName,
|
|
205
|
+
changedIds,
|
|
206
|
+
assembly,
|
|
207
|
+
transcriptsToRestore,
|
|
208
|
+
parentFeatureId,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
return { typeName, changedIds, assembly, changes };
|
|
212
|
+
}
|
|
213
|
+
getInverse() {
|
|
214
|
+
const { assembly, changedIds, changes, logger } = this;
|
|
215
|
+
const inverseChangedIds = [...changedIds].reverse();
|
|
216
|
+
const inverseChanges = [...changes]
|
|
217
|
+
.reverse()
|
|
218
|
+
.map((undoMergeTranscriptsChange) => ({
|
|
219
|
+
firstTranscript: undoMergeTranscriptsChange.transcriptsToRestore[0],
|
|
220
|
+
secondTranscript: undoMergeTranscriptsChange.transcriptsToRestore[1],
|
|
221
|
+
parentFeatureId: undoMergeTranscriptsChange.parentFeatureId,
|
|
222
|
+
}));
|
|
223
|
+
return new MergeTranscriptsChange({
|
|
224
|
+
changedIds: inverseChangedIds,
|
|
225
|
+
typeName: 'MergeTranscriptsChange',
|
|
226
|
+
changes: inverseChanges,
|
|
227
|
+
assembly,
|
|
228
|
+
}, { logger });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=MergeAndUndoMergeTranscriptsChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MergeAndUndoMergeTranscriptsChanges.js","sourceRoot":"","sources":["../../src/Changes/MergeAndUndoMergeTranscriptsChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type ChangeOptions, FeatureChange, type SerializedFeatureChange } from '@apollo-annotation/common';
|
|
2
|
+
import type { AnnotationFeatureSnapshot } from '@apollo-annotation/mst';
|
|
3
|
+
interface SerializedSplitExonChangeBase extends SerializedFeatureChange {
|
|
4
|
+
typeName: 'SplitExonChange';
|
|
5
|
+
}
|
|
6
|
+
export interface SplitExonChangeDetails {
|
|
7
|
+
exonToBeSplit: AnnotationFeatureSnapshot;
|
|
8
|
+
parentFeatureId: string;
|
|
9
|
+
upstreamCut: number;
|
|
10
|
+
downstreamCut: number;
|
|
11
|
+
leftExonId: string;
|
|
12
|
+
rightExonId: string;
|
|
13
|
+
}
|
|
14
|
+
interface SerializedSplitExonChangeSingle extends SerializedSplitExonChangeBase, SplitExonChangeDetails {
|
|
15
|
+
}
|
|
16
|
+
interface SerializedSplitExonChangeMultiple extends SerializedSplitExonChangeBase {
|
|
17
|
+
changes: SplitExonChangeDetails[];
|
|
18
|
+
}
|
|
19
|
+
export type SerializedSplitExonChange = SerializedSplitExonChangeSingle | SerializedSplitExonChangeMultiple;
|
|
20
|
+
interface SerializedUndoSplitExonChangeBase extends SerializedFeatureChange {
|
|
21
|
+
typeName: 'UndoSplitExonChange';
|
|
22
|
+
}
|
|
23
|
+
export interface UndoSplitExonChangeDetails {
|
|
24
|
+
exonToRestore: AnnotationFeatureSnapshot;
|
|
25
|
+
parentFeatureId: string;
|
|
26
|
+
idsToDelete: string[];
|
|
27
|
+
upstreamCut: number;
|
|
28
|
+
downstreamCut: number;
|
|
29
|
+
leftExonId: string;
|
|
30
|
+
rightExonId: string;
|
|
31
|
+
}
|
|
32
|
+
interface SerializedUndoSplitExonChangeSingle extends SerializedUndoSplitExonChangeBase, UndoSplitExonChangeDetails {
|
|
33
|
+
}
|
|
34
|
+
interface SerializedUndoSplitExonChangeMultiple extends SerializedUndoSplitExonChangeBase {
|
|
35
|
+
changes: UndoSplitExonChangeDetails[];
|
|
36
|
+
}
|
|
37
|
+
export type SerializedUndoSplitExonChange = SerializedUndoSplitExonChangeSingle | SerializedUndoSplitExonChangeMultiple;
|
|
38
|
+
export declare class SplitExonChange extends FeatureChange {
|
|
39
|
+
typeName: "SplitExonChange";
|
|
40
|
+
changes: SplitExonChangeDetails[];
|
|
41
|
+
constructor(json: SerializedSplitExonChange, options?: ChangeOptions);
|
|
42
|
+
get notification(): string;
|
|
43
|
+
toJSON(): SerializedSplitExonChange;
|
|
44
|
+
getInverse(): UndoSplitExonChange;
|
|
45
|
+
makeSplitExons(exonToBeSplit: AnnotationFeatureSnapshot, upstreamCut: number, downstreamCut: number, leftExonId: string, rightExonId: string): [AnnotationFeatureSnapshot, AnnotationFeatureSnapshot];
|
|
46
|
+
}
|
|
47
|
+
export declare class UndoSplitExonChange extends FeatureChange {
|
|
48
|
+
typeName: "UndoSplitExonChange";
|
|
49
|
+
changes: UndoSplitExonChangeDetails[];
|
|
50
|
+
constructor(json: SerializedUndoSplitExonChange, options?: ChangeOptions);
|
|
51
|
+
toJSON(): SerializedUndoSplitExonChange;
|
|
52
|
+
getInverse(): SplitExonChange;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=SplitAndUndoSplitExonChanges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitAndUndoSplitExonChanges.d.ts","sourceRoot":"","sources":["../../src/Changes/SplitAndUndoSplitExonChanges.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,aAAa,EACb,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEvE,UAAU,6BAA8B,SAAQ,uBAAuB;IACrE,QAAQ,EAAE,iBAAiB,CAAA;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,yBAAyB,CAAA;IACxC,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,+BACR,SAAQ,6BAA6B,EACnC,sBAAsB;CAAG;AAE7B,UAAU,iCACR,SAAQ,6BAA6B;IACrC,OAAO,EAAE,sBAAsB,EAAE,CAAA;CAClC;AAED,MAAM,MAAM,yBAAyB,GACjC,+BAA+B,GAC/B,iCAAiC,CAAA;AAErC,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;AAEzC,qBAAa,eAAgB,SAAQ,aAAa;IAChD,QAAQ,oBAA6B;IACrC,OAAO,EAAE,sBAAsB,EAAE,CAAA;gBAErB,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,aAAa;IAKpE,IAAI,YAAY,WAEf;IAED,MAAM,IAAI,yBAAyB;IA6BnC,UAAU;IAwBV,cAAc,CACZ,aAAa,EAAE,yBAAyB,EACxC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;CAsB1D;AAED,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+BvC,UAAU;CAwBX"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
+
import { FeatureChange, } from '@apollo-annotation/common';
|
|
3
|
+
export class SplitExonChange extends FeatureChange {
|
|
4
|
+
typeName = 'SplitExonChange';
|
|
5
|
+
changes;
|
|
6
|
+
constructor(json, options) {
|
|
7
|
+
super(json, options);
|
|
8
|
+
this.changes = 'changes' in json ? json.changes : [json];
|
|
9
|
+
}
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
|
11
|
+
get notification() {
|
|
12
|
+
return 'Exon successfully split';
|
|
13
|
+
}
|
|
14
|
+
toJSON() {
|
|
15
|
+
const { assembly, changedIds, changes, typeName } = this;
|
|
16
|
+
if (changes.length === 1) {
|
|
17
|
+
const [{ exonToBeSplit, parentFeatureId, upstreamCut, downstreamCut, leftExonId, rightExonId, },] = changes;
|
|
18
|
+
return {
|
|
19
|
+
typeName,
|
|
20
|
+
changedIds,
|
|
21
|
+
assembly,
|
|
22
|
+
exonToBeSplit,
|
|
23
|
+
parentFeatureId,
|
|
24
|
+
upstreamCut,
|
|
25
|
+
downstreamCut,
|
|
26
|
+
leftExonId,
|
|
27
|
+
rightExonId,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return { typeName, changedIds, assembly, changes };
|
|
31
|
+
}
|
|
32
|
+
getInverse() {
|
|
33
|
+
const { assembly, changedIds, changes, logger } = this;
|
|
34
|
+
const inverseChangedIds = [...changedIds].reverse();
|
|
35
|
+
const inverseChanges = [...changes].reverse().map((splitExonChange) => ({
|
|
36
|
+
exonToRestore: splitExonChange.exonToBeSplit,
|
|
37
|
+
parentFeatureId: splitExonChange.parentFeatureId,
|
|
38
|
+
idsToDelete: [splitExonChange.leftExonId, splitExonChange.rightExonId],
|
|
39
|
+
upstreamCut: splitExonChange.upstreamCut,
|
|
40
|
+
downstreamCut: splitExonChange.downstreamCut,
|
|
41
|
+
leftExonId: splitExonChange.leftExonId,
|
|
42
|
+
rightExonId: splitExonChange.rightExonId,
|
|
43
|
+
}));
|
|
44
|
+
logger.debug?.(`INVERSE CHANGE '${JSON.stringify(inverseChanges)}'`);
|
|
45
|
+
return new UndoSplitExonChange({
|
|
46
|
+
changedIds: inverseChangedIds,
|
|
47
|
+
typeName: 'UndoSplitExonChange',
|
|
48
|
+
changes: inverseChanges,
|
|
49
|
+
assembly,
|
|
50
|
+
}, { logger });
|
|
51
|
+
}
|
|
52
|
+
makeSplitExons(exonToBeSplit, upstreamCut, downstreamCut, leftExonId, rightExonId) {
|
|
53
|
+
// eslint-disable-next-line unicorn/prefer-structured-clone
|
|
54
|
+
const exon = JSON.parse(JSON.stringify(exonToBeSplit));
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
56
|
+
delete exon.attributes._id;
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
58
|
+
delete exon.attributes.gff_id;
|
|
59
|
+
const leftExon = structuredClone(exon);
|
|
60
|
+
leftExon._id = leftExonId;
|
|
61
|
+
leftExon.max = upstreamCut;
|
|
62
|
+
const rightExon = structuredClone(exon);
|
|
63
|
+
rightExon.min = downstreamCut;
|
|
64
|
+
rightExon._id = rightExonId;
|
|
65
|
+
return [leftExon, rightExon];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class UndoSplitExonChange extends FeatureChange {
|
|
69
|
+
typeName = 'UndoSplitExonChange';
|
|
70
|
+
changes;
|
|
71
|
+
constructor(json, options) {
|
|
72
|
+
super(json, options);
|
|
73
|
+
this.changes = 'changes' in json ? json.changes : [json];
|
|
74
|
+
}
|
|
75
|
+
toJSON() {
|
|
76
|
+
const { assembly, changedIds, changes, typeName } = this;
|
|
77
|
+
if (changes.length === 1) {
|
|
78
|
+
const [{ exonToRestore, parentFeatureId, idsToDelete, upstreamCut, downstreamCut, leftExonId, rightExonId, },] = changes;
|
|
79
|
+
return {
|
|
80
|
+
typeName,
|
|
81
|
+
changedIds,
|
|
82
|
+
assembly,
|
|
83
|
+
exonToRestore,
|
|
84
|
+
parentFeatureId,
|
|
85
|
+
idsToDelete,
|
|
86
|
+
upstreamCut,
|
|
87
|
+
downstreamCut,
|
|
88
|
+
leftExonId,
|
|
89
|
+
rightExonId,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return { typeName, changedIds, assembly, changes };
|
|
93
|
+
}
|
|
94
|
+
getInverse() {
|
|
95
|
+
const { assembly, changedIds, changes, logger } = this;
|
|
96
|
+
const inverseChangedIds = [...changedIds].reverse();
|
|
97
|
+
const inverseChanges = [...changes]
|
|
98
|
+
.reverse()
|
|
99
|
+
.map((undoSplitExonChange) => ({
|
|
100
|
+
parentFeatureId: undoSplitExonChange.parentFeatureId,
|
|
101
|
+
exonToBeSplit: undoSplitExonChange.exonToRestore,
|
|
102
|
+
upstreamCut: undoSplitExonChange.upstreamCut,
|
|
103
|
+
downstreamCut: undoSplitExonChange.downstreamCut,
|
|
104
|
+
leftExonId: undoSplitExonChange.leftExonId,
|
|
105
|
+
rightExonId: undoSplitExonChange.rightExonId,
|
|
106
|
+
}));
|
|
107
|
+
return new SplitExonChange({
|
|
108
|
+
changedIds: inverseChangedIds,
|
|
109
|
+
typeName: 'SplitExonChange',
|
|
110
|
+
changes: inverseChanges,
|
|
111
|
+
assembly,
|
|
112
|
+
}, { logger });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=SplitAndUndoSplitExonChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitAndUndoSplitExonChanges.js","sourceRoot":"","sources":["../../src/Changes/SplitAndUndoSplitExonChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ChangeOptions,
|
|
1
|
+
import { type ChangeOptions, FeatureChange, type SerializedFeatureChange } from '@apollo-annotation/common';
|
|
2
2
|
interface SerializedStrandChangeBase extends SerializedFeatureChange {
|
|
3
3
|
typeName: 'StrandChange';
|
|
4
4
|
}
|
|
@@ -18,14 +18,6 @@ export declare class StrandChange extends FeatureChange {
|
|
|
18
18
|
changes: StrandChangeDetails[];
|
|
19
19
|
constructor(json: SerializedStrandChange, options?: ChangeOptions);
|
|
20
20
|
toJSON(): SerializedStrandChange;
|
|
21
|
-
/**
|
|
22
|
-
* Applies the required change to database
|
|
23
|
-
* @param backend - parameters from backend
|
|
24
|
-
* @returns
|
|
25
|
-
*/
|
|
26
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
27
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
28
|
-
executeOnClient(dataStore: ClientDataStore): Promise<void>;
|
|
29
21
|
getInverse(): StrandChange;
|
|
30
22
|
}
|
|
31
23
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrandChange.d.ts","sourceRoot":"","sources":["../../src/Changes/StrandChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StrandChange.d.ts","sourceRoot":"","sources":["../../src/Changes/StrandChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,aAAa,EACb,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAA;AAElC,UAAU,0BAA2B,SAAQ,uBAAuB;IAClE,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;CAC9B;AAED,UAAU,4BACR,SAAQ,0BAA0B,EAChC,mBAAmB;CAAG;AAE1B,UAAU,8BAA+B,SAAQ,0BAA0B;IACzE,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED,KAAK,sBAAsB,GACvB,4BAA4B,GAC5B,8BAA8B,CAAA;AAElC,qBAAa,YAAa,SAAQ,aAAa;IAC7C,QAAQ,iBAA0B;IAClC,OAAO,EAAE,mBAAmB,EAAE,CAAA;gBAElB,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,aAAa;IAKjE,MAAM,IAAI,sBAAsB;IAShC,UAAU;CAkBX"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
2
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
4
1
|
import { FeatureChange, } from '@apollo-annotation/common';
|
|
5
2
|
export class StrandChange extends FeatureChange {
|
|
6
3
|
typeName = 'StrandChange';
|
|
@@ -17,80 +14,6 @@ export class StrandChange extends FeatureChange {
|
|
|
17
14
|
}
|
|
18
15
|
return { typeName, changedIds, assembly, changes };
|
|
19
16
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Applies the required change to database
|
|
22
|
-
* @param backend - parameters from backend
|
|
23
|
-
* @returns
|
|
24
|
-
*/
|
|
25
|
-
async executeOnServer(backend) {
|
|
26
|
-
const { featureModel, session } = backend;
|
|
27
|
-
const { changes, logger } = this;
|
|
28
|
-
const featuresForChanges = [];
|
|
29
|
-
// Let's first check that all features are found and those old values match with expected ones. We do this just to be sure that all changes can be done.
|
|
30
|
-
for (const entry of changes) {
|
|
31
|
-
const { featureId, oldStrand } = entry;
|
|
32
|
-
// Search correct feature
|
|
33
|
-
const topLevelFeature = await featureModel
|
|
34
|
-
.findOne({ allIds: featureId })
|
|
35
|
-
.session(session)
|
|
36
|
-
.exec();
|
|
37
|
-
if (!topLevelFeature) {
|
|
38
|
-
const errMsg = `*** ERROR: The following featureId was not found in database ='${featureId}'`;
|
|
39
|
-
logger.error(errMsg);
|
|
40
|
-
throw new Error(errMsg);
|
|
41
|
-
// throw new NotFoundException(errMsg) -- This is causing runtime error because Exception comes from @nestjs/common!!!
|
|
42
|
-
}
|
|
43
|
-
logger.debug?.(`*** Feature found: ${JSON.stringify(topLevelFeature)}`);
|
|
44
|
-
const foundFeature = this.getFeatureFromId(topLevelFeature, featureId);
|
|
45
|
-
if (!foundFeature) {
|
|
46
|
-
const errMsg = 'ERROR when searching feature by featureId';
|
|
47
|
-
logger.error(errMsg);
|
|
48
|
-
throw new Error(errMsg);
|
|
49
|
-
}
|
|
50
|
-
logger.debug?.(`*** Found feature: ${JSON.stringify(foundFeature)}`);
|
|
51
|
-
if (foundFeature.strand !== oldStrand) {
|
|
52
|
-
const errMsg = `*** ERROR: Feature's current strand "${topLevelFeature.strand}" doesn't match with expected value "${oldStrand}"`;
|
|
53
|
-
logger.error(errMsg);
|
|
54
|
-
throw new Error(errMsg);
|
|
55
|
-
}
|
|
56
|
-
featuresForChanges.push({ feature: foundFeature, topLevelFeature });
|
|
57
|
-
}
|
|
58
|
-
// Let's update objects.
|
|
59
|
-
for (const [idx, change] of changes.entries()) {
|
|
60
|
-
const { newStrand } = change;
|
|
61
|
-
const { feature, topLevelFeature } = featuresForChanges[idx];
|
|
62
|
-
feature.strand = newStrand;
|
|
63
|
-
if (topLevelFeature._id.equals(feature._id)) {
|
|
64
|
-
topLevelFeature.markModified('strand'); // Mark as modified. Without this save() -method is not updating data in database
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
topLevelFeature.markModified('children'); // Mark as modified. Without this save() -method is not updating data in database
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
await topLevelFeature.save();
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
logger.debug?.(`*** FAILED: ${error}`);
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
logger.debug?.(`*** Object updated in Mongo. New object: ${JSON.stringify(topLevelFeature)}`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async executeOnLocalGFF3(_backend) {
|
|
80
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
81
|
-
}
|
|
82
|
-
async executeOnClient(dataStore) {
|
|
83
|
-
if (!dataStore) {
|
|
84
|
-
throw new Error('No data store');
|
|
85
|
-
}
|
|
86
|
-
for (const [idx, changedId] of this.changedIds.entries()) {
|
|
87
|
-
const feature = dataStore.getFeature(changedId);
|
|
88
|
-
if (!feature) {
|
|
89
|
-
throw new Error(`Could not find feature with identifier "${changedId}"`);
|
|
90
|
-
}
|
|
91
|
-
feature.setStrand(this.changes[idx].newStrand);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
17
|
getInverse() {
|
|
95
18
|
const { assembly, changedIds, changes, logger, typeName } = this;
|
|
96
19
|
const inverseChangedIds = [...changedIds].reverse();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrandChange.js","sourceRoot":"","sources":["../../src/Changes/StrandChange.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"StrandChange.js","sourceRoot":"","sources":["../../src/Changes/StrandChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,GAEd,MAAM,2BAA2B,CAAA;AAwBlC,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,QAAQ,GAAG,cAAuB,CAAA;IAClC,OAAO,CAAuB;IAE9B,YAAY,IAA4B,EAAE,OAAuB;QAC/D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAA;YACrD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;QAC5E,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACpD,CAAC;IAED,UAAU;QACR,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAChE,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;QACnD,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChE,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC,CAAC,CAAA;QACH,OAAO,IAAI,YAAY,CACrB;YACE,UAAU,EAAE,iBAAiB;YAC7B,QAAQ;YACR,OAAO,EAAE,cAAc;YACvB,QAAQ;SACT,EACD,EAAE,MAAM,EAAE,CACX,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ChangeOptions,
|
|
1
|
+
import { type ChangeOptions, FeatureChange, type SerializedFeatureChange } from '@apollo-annotation/common';
|
|
2
2
|
interface SerializedTypeChangeBase extends SerializedFeatureChange {
|
|
3
3
|
typeName: 'TypeChange';
|
|
4
4
|
}
|
|
@@ -18,14 +18,6 @@ export declare class TypeChange extends FeatureChange {
|
|
|
18
18
|
changes: TypeChangeDetails[];
|
|
19
19
|
constructor(json: SerializedTypeChange, options?: ChangeOptions);
|
|
20
20
|
toJSON(): SerializedTypeChange;
|
|
21
|
-
/**
|
|
22
|
-
* Applies the required change to database
|
|
23
|
-
* @param backend - parameters from backend
|
|
24
|
-
* @returns
|
|
25
|
-
*/
|
|
26
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
27
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
28
|
-
executeOnClient(dataStore: ClientDataStore): Promise<void>;
|
|
29
21
|
getInverse(): TypeChange;
|
|
30
22
|
}
|
|
31
23
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeChange.d.ts","sourceRoot":"","sources":["../../src/Changes/TypeChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeChange.d.ts","sourceRoot":"","sources":["../../src/Changes/TypeChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,aAAa,EACb,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAA;AAElC,UAAU,wBAAyB,SAAQ,uBAAuB;IAChE,QAAQ,EAAE,YAAY,CAAA;CACvB;AAED,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,0BACR,SAAQ,wBAAwB,EAC9B,iBAAiB;CAAG;AAExB,UAAU,4BAA6B,SAAQ,wBAAwB;IACrE,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC5B,0BAA0B,GAC1B,4BAA4B,CAAA;AAEhC,qBAAa,UAAW,SAAQ,aAAa;IAC3C,QAAQ,eAAwB;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAA;gBAEhB,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,aAAa;IAK/D,MAAM,IAAI,oBAAoB;IAS9B,UAAU;CAkBX"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
2
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
4
1
|
import { FeatureChange, } from '@apollo-annotation/common';
|
|
5
2
|
export class TypeChange extends FeatureChange {
|
|
6
3
|
typeName = 'TypeChange';
|
|
@@ -17,80 +14,6 @@ export class TypeChange extends FeatureChange {
|
|
|
17
14
|
}
|
|
18
15
|
return { typeName, changedIds, assembly, changes };
|
|
19
16
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Applies the required change to database
|
|
22
|
-
* @param backend - parameters from backend
|
|
23
|
-
* @returns
|
|
24
|
-
*/
|
|
25
|
-
async executeOnServer(backend) {
|
|
26
|
-
const { featureModel, session } = backend;
|
|
27
|
-
const { changes, logger } = this;
|
|
28
|
-
const featuresForChanges = [];
|
|
29
|
-
// Let's first check that all features are found and those old values match with expected ones. We do this just to be sure that all changes can be done.
|
|
30
|
-
for (const entry of changes) {
|
|
31
|
-
const { featureId, oldType } = entry;
|
|
32
|
-
// Search correct feature
|
|
33
|
-
const topLevelFeature = await featureModel
|
|
34
|
-
.findOne({ allIds: featureId })
|
|
35
|
-
.session(session)
|
|
36
|
-
.exec();
|
|
37
|
-
if (!topLevelFeature) {
|
|
38
|
-
const errMsg = `*** ERROR: The following featureId was not found in database ='${featureId}'`;
|
|
39
|
-
logger.error(errMsg);
|
|
40
|
-
throw new Error(errMsg);
|
|
41
|
-
// throw new NotFoundException(errMsg) -- This is causing runtime error because Exception comes from @nestjs/common!!!
|
|
42
|
-
}
|
|
43
|
-
logger.debug?.(`*** Feature found: ${JSON.stringify(topLevelFeature)}`);
|
|
44
|
-
const foundFeature = this.getFeatureFromId(topLevelFeature, featureId);
|
|
45
|
-
if (!foundFeature) {
|
|
46
|
-
const errMsg = 'ERROR when searching feature by featureId';
|
|
47
|
-
logger.error(errMsg);
|
|
48
|
-
throw new Error(errMsg);
|
|
49
|
-
}
|
|
50
|
-
logger.debug?.(`*** Found feature: ${JSON.stringify(foundFeature)}`);
|
|
51
|
-
if (foundFeature.type !== oldType) {
|
|
52
|
-
const errMsg = `*** ERROR: Feature's current type "${topLevelFeature.type}" doesn't match with expected value "${oldType}"`;
|
|
53
|
-
logger.error(errMsg);
|
|
54
|
-
throw new Error(errMsg);
|
|
55
|
-
}
|
|
56
|
-
featuresForChanges.push({ feature: foundFeature, topLevelFeature });
|
|
57
|
-
}
|
|
58
|
-
// Let's update objects.
|
|
59
|
-
for (const [idx, change] of changes.entries()) {
|
|
60
|
-
const { newType } = change;
|
|
61
|
-
const { feature, topLevelFeature } = featuresForChanges[idx];
|
|
62
|
-
feature.type = newType;
|
|
63
|
-
if (topLevelFeature._id.equals(feature._id)) {
|
|
64
|
-
topLevelFeature.markModified('type'); // Mark as modified. Without this save() -method is not updating data in database
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
topLevelFeature.markModified('children'); // Mark as modified. Without this save() -method is not updating data in database
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
await topLevelFeature.save();
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
logger.debug?.(`*** FAILED: ${error}`);
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
logger.debug?.(`*** Object updated in Mongo. New object: ${JSON.stringify(topLevelFeature)}`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async executeOnLocalGFF3(_backend) {
|
|
80
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
81
|
-
}
|
|
82
|
-
async executeOnClient(dataStore) {
|
|
83
|
-
if (!dataStore) {
|
|
84
|
-
throw new Error('No data store');
|
|
85
|
-
}
|
|
86
|
-
for (const [idx, changedId] of this.changedIds.entries()) {
|
|
87
|
-
const feature = dataStore.getFeature(changedId);
|
|
88
|
-
if (!feature) {
|
|
89
|
-
throw new Error(`Could not find feature with identifier "${changedId}"`);
|
|
90
|
-
}
|
|
91
|
-
feature.setType(this.changes[idx].newType);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
17
|
getInverse() {
|
|
95
18
|
const { assembly, changedIds, changes, logger, typeName } = this;
|
|
96
19
|
const inverseChangedIds = [...changedIds].reverse();
|