@sjcrh/proteinpaint-shared 2.187.0 → 2.188.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.
Files changed (117) hide show
  1. package/README.md +10 -2
  2. package/constants/AiHisto.ts +27 -0
  3. package/constants/README.md +11 -0
  4. package/devTs.ts +3 -0
  5. package/dist/constants/AiHisto.d.ts +23 -0
  6. package/dist/constants/AiHisto.js +31 -0
  7. package/dist/constants/AiHisto.js.map +7 -0
  8. package/dist/src/aiHisto.d.ts +5 -0
  9. package/dist/src/aiHisto.js +15 -0
  10. package/dist/src/aiHisto.js.map +7 -0
  11. package/dist/src/bulk.cnv.js +83 -0
  12. package/dist/src/bulk.cnv.js.map +7 -0
  13. package/dist/src/bulk.del.js +119 -0
  14. package/dist/src/bulk.del.js.map +7 -0
  15. package/dist/src/bulk.itd.js +119 -0
  16. package/dist/src/bulk.itd.js.map +7 -0
  17. package/dist/src/bulk.js +183 -0
  18. package/dist/src/bulk.js.map +7 -0
  19. package/dist/src/bulk.snv.js +175 -0
  20. package/dist/src/bulk.snv.js.map +7 -0
  21. package/dist/src/bulk.sv.js +266 -0
  22. package/dist/src/bulk.sv.js.map +7 -0
  23. package/dist/src/bulk.svjson.js +151 -0
  24. package/dist/src/bulk.svjson.js.map +7 -0
  25. package/dist/src/bulk.trunc.js +122 -0
  26. package/dist/src/bulk.trunc.js.map +7 -0
  27. package/dist/src/clustering.js +71 -0
  28. package/dist/src/clustering.js.map +7 -0
  29. package/dist/src/common.js +1302 -0
  30. package/dist/src/common.js.map +7 -0
  31. package/dist/src/compute.percentile.js +10 -0
  32. package/dist/src/compute.percentile.js.map +7 -0
  33. package/dist/src/doc.d.ts +7 -0
  34. package/dist/src/doc.js +10 -0
  35. package/dist/src/doc.js.map +7 -0
  36. package/dist/src/fetch-helpers.js +177 -0
  37. package/dist/src/fetch-helpers.js.map +7 -0
  38. package/dist/src/fileSize.js +10 -0
  39. package/dist/src/fileSize.js.map +7 -0
  40. package/dist/src/filter.d.ts +62 -0
  41. package/dist/src/filter.js +194 -0
  42. package/dist/src/filter.js.map +7 -0
  43. package/dist/src/hash.js +20 -0
  44. package/dist/src/hash.js.map +7 -0
  45. package/dist/src/helpers.js +66 -0
  46. package/dist/src/helpers.js.map +7 -0
  47. package/dist/src/index.d.ts +26 -0
  48. package/dist/src/index.js +27 -0
  49. package/dist/src/index.js.map +7 -0
  50. package/dist/src/joinUrl.d.ts +1 -0
  51. package/dist/src/joinUrl.js +17 -0
  52. package/dist/src/joinUrl.js.map +7 -0
  53. package/dist/src/mds3tk.js +64 -0
  54. package/dist/src/mds3tk.js.map +7 -0
  55. package/dist/src/roundValue.js +57 -0
  56. package/dist/src/roundValue.js.map +7 -0
  57. package/dist/src/termdb.bins.js +272 -0
  58. package/dist/src/termdb.bins.js.map +7 -0
  59. package/dist/src/termdb.initbinconfig.js +79 -0
  60. package/dist/src/termdb.initbinconfig.js.map +7 -0
  61. package/dist/src/termdb.usecase.js +239 -0
  62. package/dist/src/termdb.usecase.js.map +7 -0
  63. package/dist/src/terms.d.ts +83 -0
  64. package/dist/src/terms.js +327 -0
  65. package/dist/src/terms.js.map +7 -0
  66. package/dist/src/time.d.ts +9 -0
  67. package/dist/src/time.js +23 -0
  68. package/dist/src/time.js.map +7 -0
  69. package/dist/src/tree.js +82 -0
  70. package/dist/src/tree.js.map +7 -0
  71. package/dist/src/urljson.d.ts +8 -0
  72. package/dist/src/urljson.js +31 -0
  73. package/dist/src/urljson.js.map +7 -0
  74. package/dist/src/vcf.ann.js +56 -0
  75. package/dist/src/vcf.ann.js.map +7 -0
  76. package/dist/src/vcf.csq.js +82 -0
  77. package/dist/src/vcf.csq.js.map +7 -0
  78. package/dist/src/vcf.info.js +40 -0
  79. package/dist/src/vcf.info.js.map +7 -0
  80. package/dist/src/vcf.js +439 -0
  81. package/dist/src/vcf.js.map +7 -0
  82. package/dist/src/vcf.type.js +17 -0
  83. package/dist/src/vcf.type.js.map +7 -0
  84. package/package.json +20 -11
  85. package/src/bulk.cnv.js +0 -86
  86. package/src/bulk.del.js +0 -124
  87. package/src/bulk.itd.js +0 -123
  88. package/src/bulk.js +0 -197
  89. package/src/bulk.snv.js +0 -271
  90. package/src/bulk.sv.js +0 -276
  91. package/src/bulk.svjson.js +0 -164
  92. package/src/bulk.trunc.js +0 -132
  93. package/src/clustering.js +0 -66
  94. package/src/common.js +0 -1608
  95. package/src/compute.percentile.js +0 -11
  96. package/src/doc.js +0 -6
  97. package/src/fetch-helpers.js +0 -323
  98. package/src/fileSize.js +0 -6
  99. package/src/filter.js +0 -221
  100. package/src/hash.js +0 -21
  101. package/src/helpers.js +0 -88
  102. package/src/index.js +0 -26
  103. package/src/joinUrl.js +0 -14
  104. package/src/mds3tk.js +0 -100
  105. package/src/roundValue.js +0 -94
  106. package/src/termdb.bins.js +0 -456
  107. package/src/termdb.initbinconfig.js +0 -130
  108. package/src/termdb.usecase.js +0 -344
  109. package/src/terms.js +0 -341
  110. package/src/time.js +0 -22
  111. package/src/tree.js +0 -138
  112. package/src/urljson.js +0 -41
  113. package/src/vcf.ann.js +0 -62
  114. package/src/vcf.csq.js +0 -153
  115. package/src/vcf.info.js +0 -50
  116. package/src/vcf.js +0 -654
  117. package/src/vcf.type.js +0 -24
package/README.md CHANGED
@@ -13,14 +13,22 @@ are specific to `nodejs` or `browser` environments, like `fs` or `DOM` elements
13
13
 
14
14
  ## Develop
15
15
 
16
+ It is much simpler to import *runtime* code directly from `@sjcrh/proteinpaint-shared`,
17
+ or static code from `@sjcrh/proteinpaint-shared/devTs`, instead of specifying a code
18
+ filename.
19
+
16
20
  For server dev, the `tsx` library will accept imports with or without file extension.
17
- Server (consumer) code MUST use the `.js` file extension even when importing
18
- `#shared/*.ts` files.
21
+ Server (consumer) code should use `@sjcrh/proteinpaint-shared`, or if for some reason
22
+ a shared file must be specific, it MUST use the `.js` file extension (e.g.,
23
+ `#shared/someFile.js`).
19
24
 
20
25
  For client dev, the esbuild config will bundle the #shared imports correctly, even
21
26
  when `.js` extension is used to import what is actually a `.ts` file, by using
22
27
  custom plugins like dirname.
23
28
 
29
+ When importing types that are defined in `shared/utils` to `shared/types` dev,
30
+ always use `@sjcrh/proteinpaint-shared/devTs` (or an alias such as `#shared/devTs`).
31
+
24
32
  ## Build
25
33
 
26
34
  This package will be bundled as part of the client dependencies.
@@ -0,0 +1,27 @@
1
+ export enum FlagStatus {
2
+ Normal = 0,
3
+ Skipped = 1,
4
+ Flagged = 2,
5
+ Deleted = 3
6
+ }
7
+
8
+ export enum FeaturePrefixes {
9
+ Star = 'annotation-star-',
10
+ Square = 'annotation-square-',
11
+ Border = 'annotation-border-',
12
+ PredBorder = 'prediction-border-'
13
+ }
14
+
15
+ export const SelectionPrefixes = {
16
+ TileSelection: 'ts_',
17
+ Prediction: 'pred_',
18
+ Annotation: 'anno_'
19
+ } as const
20
+
21
+ export type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes]
22
+
23
+ export const FlagStatusMessages = {
24
+ [FlagStatus.Normal]: '',
25
+ [FlagStatus.Skipped]: '(Skipped)',
26
+ [FlagStatus.Flagged]: '(Flagged)'
27
+ }
@@ -0,0 +1,11 @@
1
+ # Shared Constants
2
+
3
+ The goal of the `constants` code is to allow shared/types code to be able to import type definitions
4
+ from shared/utils with no bundling or tsc compilation issues. Ideally, there would be a separate
5
+ `shared/constants` workspace. However, due to time constraints and effort required to set up a
6
+ new workspace, this `shared/utils/constants` directory was created instead.
7
+
8
+ The code files in proteinpaint/shared/utils/constants:
9
+ - typescript files
10
+ - must have no imports from outside this folder, to prevent cyclical references/imports that crash bundling and/or tsc compilation
11
+ - must export constants that can be transitively exported to devTs.ts file and shared/utils/src/index.js
package/devTs.ts ADDED
@@ -0,0 +1,3 @@
1
+ // please list in alphanumeric order for readability
2
+ // use .ts file extension for all code files below
3
+ export * from './constants/AiHisto.ts'
@@ -0,0 +1,23 @@
1
+ export declare enum FlagStatus {
2
+ Normal = 0,
3
+ Skipped = 1,
4
+ Flagged = 2,
5
+ Deleted = 3
6
+ }
7
+ export declare enum FeaturePrefixes {
8
+ Star = "annotation-star-",
9
+ Square = "annotation-square-",
10
+ Border = "annotation-border-",
11
+ PredBorder = "prediction-border-"
12
+ }
13
+ export declare const SelectionPrefixes: {
14
+ readonly TileSelection: "ts_";
15
+ readonly Prediction: "pred_";
16
+ readonly Annotation: "anno_";
17
+ };
18
+ export type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes];
19
+ export declare const FlagStatusMessages: {
20
+ 0: string;
21
+ 1: string;
22
+ 2: string;
23
+ };
@@ -0,0 +1,31 @@
1
+ var FlagStatus = /* @__PURE__ */ ((FlagStatus2) => {
2
+ FlagStatus2[FlagStatus2["Normal"] = 0] = "Normal";
3
+ FlagStatus2[FlagStatus2["Skipped"] = 1] = "Skipped";
4
+ FlagStatus2[FlagStatus2["Flagged"] = 2] = "Flagged";
5
+ FlagStatus2[FlagStatus2["Deleted"] = 3] = "Deleted";
6
+ return FlagStatus2;
7
+ })(FlagStatus || {});
8
+ var FeaturePrefixes = /* @__PURE__ */ ((FeaturePrefixes2) => {
9
+ FeaturePrefixes2["Star"] = "annotation-star-";
10
+ FeaturePrefixes2["Square"] = "annotation-square-";
11
+ FeaturePrefixes2["Border"] = "annotation-border-";
12
+ FeaturePrefixes2["PredBorder"] = "prediction-border-";
13
+ return FeaturePrefixes2;
14
+ })(FeaturePrefixes || {});
15
+ const SelectionPrefixes = {
16
+ TileSelection: "ts_",
17
+ Prediction: "pred_",
18
+ Annotation: "anno_"
19
+ };
20
+ const FlagStatusMessages = {
21
+ [0 /* Normal */]: "",
22
+ [1 /* Skipped */]: "(Skipped)",
23
+ [2 /* Flagged */]: "(Flagged)"
24
+ };
25
+ export {
26
+ FeaturePrefixes,
27
+ FlagStatus,
28
+ FlagStatusMessages,
29
+ SelectionPrefixes
30
+ };
31
+ //# sourceMappingURL=AiHisto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../constants/AiHisto.ts"],
4
+ "sourcesContent": ["export enum FlagStatus {\n\tNormal = 0,\n\tSkipped = 1,\n\tFlagged = 2,\n\tDeleted = 3\n}\n\nexport enum FeaturePrefixes {\n\tStar = 'annotation-star-',\n\tSquare = 'annotation-square-',\n\tBorder = 'annotation-border-',\n\tPredBorder = 'prediction-border-'\n}\n\nexport const SelectionPrefixes = {\n\tTileSelection: 'ts_',\n\tPrediction: 'pred_',\n\tAnnotation: 'anno_'\n} as const\n\nexport type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes]\n\nexport const FlagStatusMessages = {\n\t[FlagStatus.Normal]: '',\n\t[FlagStatus.Skipped]: '(Skipped)',\n\t[FlagStatus.Flagged]: '(Flagged)'\n}\n"],
5
+ "mappings": "AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACN,EAAAA,wBAAA,YAAS,KAAT;AACA,EAAAA,wBAAA,aAAU,KAAV;AACA,EAAAA,wBAAA,aAAU,KAAV;AACA,EAAAA,wBAAA,aAAU,KAAV;AAJW,SAAAA;AAAA,GAAA;AAOL,IAAK,kBAAL,kBAAKC,qBAAL;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,gBAAa;AAJF,SAAAA;AAAA,GAAA;AAOL,MAAM,oBAAoB;AAAA,EAChC,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,YAAY;AACb;AAIO,MAAM,qBAAqB;AAAA,EACjC,CAAC,cAAiB,GAAG;AAAA,EACrB,CAAC,eAAkB,GAAG;AAAA,EACtB,CAAC,eAAkB,GAAG;AACvB;",
6
+ "names": ["FlagStatus", "FeaturePrefixes"]
7
+ }
@@ -0,0 +1,5 @@
1
+ import { type TileSelection } from '@sjcrh/proteinpaint-types';
2
+ import type { FeaturePrefixes, SelectionPrefixValues } from '../constants/AiHisto.js';
3
+ export declare function createSelectionID(prefix: SelectionPrefixValues, coordinates: [number, number]): string;
4
+ export declare function checkSelectionType(tileSelection: TileSelection, suspectedPrefix: SelectionPrefixValues): boolean;
5
+ export declare function createFeatureID(featurePrefix: FeaturePrefixes, coords: [number, number]): string;
@@ -0,0 +1,15 @@
1
+ function createSelectionID(prefix, coordinates) {
2
+ return prefix + JSON.stringify(coordinates);
3
+ }
4
+ function checkSelectionType(tileSelection, suspectedPrefix) {
5
+ return tileSelection.id.startsWith(suspectedPrefix);
6
+ }
7
+ function createFeatureID(featurePrefix, coords) {
8
+ return featurePrefix + JSON.stringify(coords);
9
+ }
10
+ export {
11
+ checkSelectionType,
12
+ createFeatureID,
13
+ createSelectionID
14
+ };
15
+ //# sourceMappingURL=aiHisto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/aiHisto.ts"],
4
+ "sourcesContent": ["import { type TileSelection } from '@sjcrh/proteinpaint-types'\nimport type { FeaturePrefixes, SelectionPrefixValues } from '../constants/AiHisto.js'\n\nexport function createSelectionID(prefix: SelectionPrefixValues, coordinates: [number, number]): string {\n\treturn prefix + JSON.stringify(coordinates)\n}\n\nexport function checkSelectionType(tileSelection: TileSelection, suspectedPrefix: SelectionPrefixValues): boolean {\n\treturn tileSelection.id.startsWith(suspectedPrefix)\n}\n\nexport function createFeatureID(featurePrefix: FeaturePrefixes, coords: [number, number]) {\n\treturn featurePrefix + JSON.stringify(coords)\n}\n"],
5
+ "mappings": "AAGO,SAAS,kBAAkB,QAA+B,aAAuC;AACvG,SAAO,SAAS,KAAK,UAAU,WAAW;AAC3C;AAEO,SAAS,mBAAmB,eAA8B,iBAAiD;AACjH,SAAO,cAAc,GAAG,WAAW,eAAe;AACnD;AAEO,SAAS,gBAAgB,eAAgC,QAA0B;AACzF,SAAO,gBAAgB,KAAK,UAAU,MAAM;AAC7C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,83 @@
1
+ import * as common from "./common.js";
2
+ import * as bulk from "./bulk.js";
3
+ function parseheader(line, flag) {
4
+ const header = line.toLowerCase().split(" ");
5
+ if (header.length <= 1) return "invalid file header for CNV";
6
+ const htry = (...lst) => {
7
+ for (const i2 of lst) {
8
+ const j = header.indexOf(i2);
9
+ if (j != -1) return j;
10
+ }
11
+ return -1;
12
+ };
13
+ let i = htry("gene");
14
+ if (i == -1) return "gene missing from header";
15
+ header[i] = "gene";
16
+ i = htry("cnv");
17
+ if (i == -1) return "CNV missing from header";
18
+ header[i] = "cnv";
19
+ i = htry("sample", "sample_name", "tumor_sample_barcode");
20
+ if (i != -1) header[i] = "sample";
21
+ i = htry("patient", "donor", "target_case_id");
22
+ if (i != -1) header[i] = "patient";
23
+ i = htry("disease");
24
+ if (i != -1) header[i] = "disease";
25
+ i = htry("origin");
26
+ if (i != -1) header[i] = "origin";
27
+ i = htry("sampletype", "sample type", "sample_type");
28
+ if (i != -1) header[i] = "sampletype";
29
+ flag.cnv.header = header;
30
+ flag.cnv.loaded = true;
31
+ return false;
32
+ }
33
+ function parseline(i, line, flag) {
34
+ if (line == "" || line[0] == "#") return;
35
+ const lst = line.split(" ");
36
+ const m = {};
37
+ for (let j = 0; j < flag.cnv.header.length; j++) {
38
+ m[flag.cnv.header[j]] = lst[j];
39
+ }
40
+ if (!m.gene) {
41
+ flag.cnv.badlines.push([i, "missing gene", lst]);
42
+ return;
43
+ }
44
+ if (!m.cnv) {
45
+ flag.cnv.badlines.push([i, "missing cnv value", lst]);
46
+ return;
47
+ }
48
+ const value = m.cnv.toLowerCase();
49
+ switch (value) {
50
+ case "amplification":
51
+ case "gain":
52
+ m.class = common.mclasscnvgain;
53
+ break;
54
+ case "deletion":
55
+ case "loss":
56
+ m.class = common.mclasscnvloss;
57
+ break;
58
+ case "loh":
59
+ m.class = common.mclasscnvloh;
60
+ break;
61
+ default:
62
+ flag.cnv.badlines.push([i, "invalid cnv value: " + m.cnv, lst]);
63
+ m.class = null;
64
+ }
65
+ if (!m.class) {
66
+ return;
67
+ }
68
+ if (bulk.parsesample(m, flag, i, lst, flag.cnv.badlines)) {
69
+ return;
70
+ }
71
+ m.dt = common.dtcnv;
72
+ flag.good++;
73
+ const n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
74
+ if (!(n in flag.data)) {
75
+ flag.data[n] = [];
76
+ }
77
+ flag.data[n].push(m);
78
+ }
79
+ export {
80
+ parseheader,
81
+ parseline
82
+ };
83
+ //# sourceMappingURL=bulk.cnv.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.cnv.js"],
4
+ "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\nimport * as bulk from './bulk.js'\n\nexport function parseheader(line, flag) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid file header for CNV'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('gene')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry('cnv')\n\tif (i == -1) return 'CNV missing from header'\n\theader[i] = 'cnv'\n\ti = htry('sample', 'sample_name', 'tumor_sample_barcode')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('patient', 'donor', 'target_case_id')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('disease')\n\tif (i != -1) header[i] = 'disease'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\tflag.cnv.header = header\n\tflag.cnv.loaded = true\n\treturn false\n}\n\nexport function parseline(i, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tfor (let j = 0; j < flag.cnv.header.length; j++) {\n\t\tm[flag.cnv.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.cnv.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (!m.cnv) {\n\t\tflag.cnv.badlines.push([i, 'missing cnv value', lst])\n\t\treturn\n\t}\n\tconst value = m.cnv.toLowerCase()\n\tswitch (value) {\n\t\tcase 'amplification':\n\t\tcase 'gain':\n\t\t\tm.class = common.mclasscnvgain\n\t\t\tbreak\n\t\tcase 'deletion':\n\t\tcase 'loss':\n\t\t\tm.class = common.mclasscnvloss\n\t\t\tbreak\n\t\tcase 'loh':\n\t\t\tm.class = common.mclasscnvloh\n\t\t\tbreak\n\t\tdefault:\n\t\t\tflag.cnv.badlines.push([i, 'invalid cnv value: ' + m.cnv, lst])\n\t\t\tm.class = null\n\t}\n\tif (!m.class) {\n\t\treturn\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, flag.cnv.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtcnv\n\tflag.good++\n\tconst n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!(n in flag.data)) {\n\t\tflag.data[n] = []\n\t}\n\tflag.data[n].push(m)\n}\n"],
5
+ "mappings": "AAMA,YAAY,YAAY;AACxB,YAAY,UAAU;AAEf,SAAS,YAAY,MAAM,MAAM;AACvC,QAAM,SAAS,KAAK,YAAY,EAAE,MAAM,GAAI;AAC5C,MAAI,OAAO,UAAU,EAAG,QAAO;AAC/B,QAAM,OAAO,IAAI,QAAQ;AACxB,eAAWA,MAAK,KAAK;AACpB,YAAM,IAAI,OAAO,QAAQA,EAAC;AAC1B,UAAI,KAAK,GAAI,QAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACR;AACA,MAAI,IAAI,KAAK,MAAM;AACnB,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,KAAK;AACd,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,UAAU,eAAe,sBAAsB;AACxD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,WAAW,SAAS,gBAAgB;AAC7C,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,SAAS;AAClB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,QAAQ;AACjB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,cAAc,eAAe,aAAa;AACnD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,OAAK,IAAI,SAAS;AAClB,OAAK,IAAI,SAAS;AAClB,SAAO;AACR;AAEO,SAAS,UAAU,GAAG,MAAM,MAAM;AACxC,MAAI,QAAQ,MAAM,KAAK,CAAC,KAAK,IAAK;AAClC,QAAM,MAAM,KAAK,MAAM,GAAI;AAC3B,QAAM,IAAI,CAAC;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,QAAQ,KAAK;AAChD,MAAE,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,EAC9B;AACA,MAAI,CAAC,EAAE,MAAM;AACZ,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,gBAAgB,GAAG,CAAC;AAC/C;AAAA,EACD;AACA,MAAI,CAAC,EAAE,KAAK;AACX,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,qBAAqB,GAAG,CAAC;AACpD;AAAA,EACD;AACA,QAAM,QAAQ,EAAE,IAAI,YAAY;AAChC,UAAQ,OAAO;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD;AACC,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,wBAAwB,EAAE,KAAK,GAAG,CAAC;AAC9D,QAAE,QAAQ;AAAA,EACZ;AACA,MAAI,CAAC,EAAE,OAAO;AACb;AAAA,EACD;AACA,MAAI,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,QAAQ,GAAG;AACzD;AAAA,EACD;AACA,IAAE,KAAK,OAAO;AACd,OAAK;AACL,QAAM,IAAI,KAAK,cAAc,EAAE,KAAK,YAAY,IAAI,EAAE;AACtD,MAAI,EAAE,KAAK,KAAK,OAAO;AACtB,SAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EACjB;AACA,OAAK,KAAK,CAAC,EAAE,KAAK,CAAC;AACpB;",
6
+ "names": ["i"]
7
+ }
@@ -0,0 +1,119 @@
1
+ import * as common from "./common.js";
2
+ import * as bulk from "./bulk.js";
3
+ function parseheader(line, flag) {
4
+ const header = line.toLowerCase().split(" ");
5
+ if (header.length <= 1) return "invalid header line for intragenic deletion";
6
+ const htry = (...lst) => {
7
+ for (const i2 of lst) {
8
+ const j = header.indexOf(i2);
9
+ if (j != -1) return j;
10
+ }
11
+ return -1;
12
+ };
13
+ let i = htry("gene");
14
+ if (i == -1) return "gene missing from header";
15
+ header[i] = "gene";
16
+ i = htry(
17
+ "annovar_isoform",
18
+ "mrna_accession",
19
+ "mrna accession",
20
+ "refseq_mrna_id",
21
+ "annovar_sj_filter_isoform",
22
+ "refseq",
23
+ "isoform"
24
+ );
25
+ if (i == -1) return "isoform missing from header";
26
+ header[i] = "isoform";
27
+ i = htry("rnaposition");
28
+ if (i != -1) {
29
+ header[i] = "rnaposition";
30
+ i = htry("rnadellength");
31
+ if (i == -1) return "rnadellength is required when rnaPosition is used";
32
+ header[i] = "rnadellength";
33
+ }
34
+ i = htry("chromosome", "chr");
35
+ if (i != -1) {
36
+ header[i] = "chr";
37
+ i = htry("chr_start");
38
+ if (i == -1) return "chr_start is required when chr is used";
39
+ header[i] = "chrpos1";
40
+ i = htry("chr_stop");
41
+ if (i == -1) return "chr_stop is required when chr is used";
42
+ header[i] = "chrpos2";
43
+ }
44
+ i = htry("sample", "sample_name", "tumor_sample_barcode");
45
+ if (i != -1) header[i] = "sample";
46
+ i = htry("patient", "donor", "target_case_id");
47
+ if (i != -1) header[i] = "patient";
48
+ i = htry("disease");
49
+ if (i != -1) header[i] = "disease";
50
+ i = htry("origin");
51
+ if (i != -1) header[i] = "origin";
52
+ i = htry("sampletype", "sample type", "sample_type");
53
+ if (i != -1) header[i] = "sampletype";
54
+ flag.del.header = header;
55
+ flag.del.loaded = true;
56
+ return false;
57
+ }
58
+ function parseline(i, line, flag) {
59
+ if (line == "" || line[0] == "#") return;
60
+ const lst = line.split(" ");
61
+ const m = {};
62
+ for (let j = 0; j < flag.del.header.length; j++) {
63
+ if (lst[j] == void 0) break;
64
+ m[flag.del.header[j]] = lst[j];
65
+ }
66
+ if (!m.gene) {
67
+ flag.del.badlines.push([i, "missing gene", lst]);
68
+ return;
69
+ }
70
+ if (m.rnaposition) {
71
+ let v = Number.parseInt(m.rnaposition);
72
+ if (Number.isNaN(v) || v < 0) {
73
+ flag.del.badlines.push([i, "invalid rnaPosition value", lst]);
74
+ return;
75
+ }
76
+ m.rnaposition = v;
77
+ if (!m.rnadellength) {
78
+ flag.del.badlines.push([i, "missing rnaDellength value", lst]);
79
+ return;
80
+ }
81
+ v = Number.parseInt(m.rnadellength);
82
+ if (Number.isNaN(v) || v < 0) {
83
+ flag.del.badlines.push([i, "invalid rnaDellength value", lst]);
84
+ return;
85
+ }
86
+ m.rnadellength = v;
87
+ }
88
+ if (m.chr) {
89
+ let v = Number.parseInt(m.chrpos1);
90
+ if (Number.isNaN(v) || v < 0) {
91
+ flag.del.badlines.push([i, "invalid chr_start value", lst]);
92
+ return;
93
+ }
94
+ m.chrpos1 = v;
95
+ v = Number.parseInt(m.chrpos2);
96
+ if (Number.isNaN(v) || v < 0) {
97
+ flag.del.badlines.push([i, "invalid chr_stop value", lst]);
98
+ return;
99
+ }
100
+ m.chrpos2 = v;
101
+ }
102
+ if (bulk.parsesample(m, flag, i, lst, flag.del.badlines)) {
103
+ return;
104
+ }
105
+ m.dt = common.dtdel;
106
+ m.class = common.mclassdel;
107
+ m.mname = "DEL";
108
+ flag.good++;
109
+ var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
110
+ if (!(n in flag.data)) {
111
+ flag.data[n] = [];
112
+ }
113
+ flag.data[n].push(m);
114
+ }
115
+ export {
116
+ parseheader,
117
+ parseline
118
+ };
119
+ //# sourceMappingURL=bulk.del.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.del.js"],
4
+ "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\nimport * as bulk from './bulk.js'\n\nexport function parseheader(line, flag) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid header line for intragenic deletion'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('gene')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry(\n\t\t'annovar_isoform',\n\t\t'mrna_accession',\n\t\t'mrna accession',\n\t\t'refseq_mrna_id',\n\t\t'annovar_sj_filter_isoform',\n\t\t'refseq',\n\t\t'isoform'\n\t)\n\tif (i == -1) return 'isoform missing from header'\n\theader[i] = 'isoform'\n\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnadellength')\n\t\tif (i == -1) return 'rnadellength is required when rnaPosition is used'\n\t\theader[i] = 'rnadellength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is used'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is used'\n\t\theader[i] = 'chrpos2'\n\t}\n\n\ti = htry('sample', 'sample_name', 'tumor_sample_barcode')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('patient', 'donor', 'target_case_id')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('disease')\n\tif (i != -1) header[i] = 'disease'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\tflag.del.header = header\n\tflag.del.loaded = true\n\treturn false\n}\n\nexport function parseline(i, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tfor (let j = 0; j < flag.del.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.del.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.del.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnadellength) {\n\t\t\tflag.del.badlines.push([i, 'missing rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnadellength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnadellength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\n\tif (bulk.parsesample(m, flag, i, lst, flag.del.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtdel\n\tm.class = common.mclassdel\n\tm.mname = 'DEL'\n\tflag.good++\n\tvar n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!(n in flag.data)) {\n\t\tflag.data[n] = []\n\t}\n\tflag.data[n].push(m)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["i"]
7
+ }
@@ -0,0 +1,119 @@
1
+ import * as common from "./common.js";
2
+ import * as bulk from "./bulk.js";
3
+ function parseheader(line, flag) {
4
+ const header = line.toLowerCase().split(" ");
5
+ if (header.length <= 1) return "invalid header line for ITD";
6
+ const htry = (...lst) => {
7
+ for (const i2 of lst) {
8
+ const j = header.indexOf(i2);
9
+ if (j != -1) return j;
10
+ }
11
+ return -1;
12
+ };
13
+ let i = htry("gene");
14
+ if (i == -1) return "gene missing from header";
15
+ header[i] = "gene";
16
+ i = htry(
17
+ "annovar_isoform",
18
+ "mrna_accession",
19
+ "mrna accession",
20
+ "refseq_mrna_id",
21
+ "annovar_sj_filter_isoform",
22
+ "refseq",
23
+ "isoform"
24
+ );
25
+ if (i == -1) return "isoform missing from header";
26
+ header[i] = "isoform";
27
+ i = htry("rnaposition");
28
+ if (i != -1) {
29
+ header[i] = "rnaposition";
30
+ i = htry("rnaduplength");
31
+ if (i == -1) return "rnaduplength is required when rnaposition is present";
32
+ header[i] = "rnaduplength";
33
+ }
34
+ i = htry("chromosome", "chr");
35
+ if (i != -1) {
36
+ header[i] = "chr";
37
+ i = htry("chr_start");
38
+ if (i == -1) return "chr_start is required when chr is present";
39
+ header[i] = "chrpos1";
40
+ i = htry("chr_stop");
41
+ if (i == -1) return "chr_stop is required when chr is present";
42
+ header[i] = "chrpos2";
43
+ }
44
+ i = htry("sample", "sample_name", "tumor_sample_barcode");
45
+ if (i != -1) header[i] = "sample";
46
+ i = htry("patient", "donor", "target_case_id");
47
+ if (i != -1) header[i] = "patient";
48
+ i = htry("disease");
49
+ if (i != -1) header[i] = "disease";
50
+ i = htry("origin");
51
+ if (i != -1) header[i] = "origin";
52
+ i = htry("sampletype", "sample type", "sample_type");
53
+ if (i != -1) header[i] = "sampletype";
54
+ flag.itd.header = header;
55
+ flag.itd.loaded = true;
56
+ return false;
57
+ }
58
+ function parseline(i, line, flag) {
59
+ if (line == "" || line[0] == "#") return;
60
+ const lst = line.split(" ");
61
+ const m = {};
62
+ for (let j = 0; j < flag.itd.header.length; j++) {
63
+ if (lst[j] == void 0) break;
64
+ m[flag.itd.header[j]] = lst[j];
65
+ }
66
+ if (!m.gene) {
67
+ flag.itd.badlines.push([i, "missing gene", lst]);
68
+ return;
69
+ }
70
+ if (m.rnaposition) {
71
+ let v = Number.parseInt(m.rnaposition);
72
+ if (Number.isNaN(v) || v < 0) {
73
+ flag.itd.badlines.push([i, "invalid rnaPosition value", lst]);
74
+ return;
75
+ }
76
+ m.rnaposition = v;
77
+ if (!m.rnaduplength) {
78
+ flag.itd.badlines.push([i, "missing rnaDuplength value", lst]);
79
+ return;
80
+ }
81
+ v = Number.parseInt(m.rnaduplength);
82
+ if (Number.isNaN(v) || v < 0) {
83
+ flag.itd.badlines.push([i, "invalid rnaDuplength value", lst]);
84
+ return;
85
+ }
86
+ m.rnaduplength = v;
87
+ }
88
+ if (m.chr) {
89
+ let v = Number.parseInt(m.chrpos1);
90
+ if (Number.isNaN(v) || v < 0) {
91
+ flag.itd.badlines.push([i, "invalid chr_start value", lst]);
92
+ return;
93
+ }
94
+ m.chrpos1 = v;
95
+ v = Number.parseInt(m.chrpos2);
96
+ if (Number.isNaN(v) || v < 0) {
97
+ flag.itd.badlines.push([i, "invalid chr_stop value", lst]);
98
+ return;
99
+ }
100
+ m.chrpos2 = v;
101
+ }
102
+ if (bulk.parsesample(m, flag, i, lst, flag.itd.badlines)) {
103
+ return;
104
+ }
105
+ m.dt = common.dtitd;
106
+ m.class = common.mclassitd;
107
+ m.mname = "ITD";
108
+ flag.good++;
109
+ var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
110
+ if (!(n in flag.data)) {
111
+ flag.data[n] = [];
112
+ }
113
+ flag.data[n].push(m);
114
+ }
115
+ export {
116
+ parseheader,
117
+ parseline
118
+ };
119
+ //# sourceMappingURL=bulk.itd.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.itd.js"],
4
+ "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\nimport * as bulk from './bulk.js'\n\nexport function parseheader(line, flag) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid header line for ITD'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('gene')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry(\n\t\t'annovar_isoform',\n\t\t'mrna_accession',\n\t\t'mrna accession',\n\t\t'refseq_mrna_id',\n\t\t'annovar_sj_filter_isoform',\n\t\t'refseq',\n\t\t'isoform'\n\t)\n\tif (i == -1) return 'isoform missing from header'\n\theader[i] = 'isoform'\n\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnaduplength')\n\t\tif (i == -1) return 'rnaduplength is required when rnaposition is present'\n\t\theader[i] = 'rnaduplength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is present'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is present'\n\t\theader[i] = 'chrpos2'\n\t}\n\n\ti = htry('sample', 'sample_name', 'tumor_sample_barcode')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('patient', 'donor', 'target_case_id')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('disease')\n\tif (i != -1) header[i] = 'disease'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\tflag.itd.header = header\n\tflag.itd.loaded = true\n\treturn false\n}\n\nexport function parseline(i, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tfor (let j = 0; j < flag.itd.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.itd.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.itd.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnaduplength) {\n\t\t\tflag.itd.badlines.push([i, 'missing rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnaduplength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaduplength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, flag.itd.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtitd\n\tm.class = common.mclassitd\n\tm.mname = 'ITD'\n\tflag.good++\n\tvar n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!(n in flag.data)) {\n\t\tflag.data[n] = []\n\t}\n\tflag.data[n].push(m)\n}\n"],
5
+ "mappings": "AAMA,YAAY,YAAY;AACxB,YAAY,UAAU;AAEf,SAAS,YAAY,MAAM,MAAM;AACvC,QAAM,SAAS,KAAK,YAAY,EAAE,MAAM,GAAI;AAC5C,MAAI,OAAO,UAAU,EAAG,QAAO;AAC/B,QAAM,OAAO,IAAI,QAAQ;AACxB,eAAWA,MAAK,KAAK;AACpB,YAAM,IAAI,OAAO,QAAQA,EAAC;AAC1B,UAAI,KAAK,GAAI,QAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACR;AACA,MAAI,IAAI,KAAK,MAAM;AACnB,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,aAAa;AACtB,MAAI,KAAK,IAAI;AACZ,WAAO,CAAC,IAAI;AACZ,QAAI,KAAK,cAAc;AACvB,QAAI,KAAK,GAAI,QAAO;AACpB,WAAO,CAAC,IAAI;AAAA,EACb;AACA,MAAI,KAAK,cAAc,KAAK;AAC5B,MAAI,KAAK,IAAI;AACZ,WAAO,CAAC,IAAI;AACZ,QAAI,KAAK,WAAW;AACpB,QAAI,KAAK,GAAI,QAAO;AACpB,WAAO,CAAC,IAAI;AACZ,QAAI,KAAK,UAAU;AACnB,QAAI,KAAK,GAAI,QAAO;AACpB,WAAO,CAAC,IAAI;AAAA,EACb;AAEA,MAAI,KAAK,UAAU,eAAe,sBAAsB;AACxD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,WAAW,SAAS,gBAAgB;AAC7C,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,SAAS;AAClB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,QAAQ;AACjB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,cAAc,eAAe,aAAa;AACnD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,OAAK,IAAI,SAAS;AAClB,OAAK,IAAI,SAAS;AAClB,SAAO;AACR;AAEO,SAAS,UAAU,GAAG,MAAM,MAAM;AACxC,MAAI,QAAQ,MAAM,KAAK,CAAC,KAAK,IAAK;AAClC,QAAM,MAAM,KAAK,MAAM,GAAI;AAC3B,QAAM,IAAI,CAAC;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,QAAQ,KAAK;AAChD,QAAI,IAAI,CAAC,KAAK,OAAW;AACzB,MAAE,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,EAC9B;AACA,MAAI,CAAC,EAAE,MAAM;AACZ,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,gBAAgB,GAAG,CAAC;AAC/C;AAAA,EACD;AACA,MAAI,EAAE,aAAa;AAClB,QAAI,IAAI,OAAO,SAAS,EAAE,WAAW;AACrC,QAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG;AAC7B,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,6BAA6B,GAAG,CAAC;AAC5D;AAAA,IACD;AACA,MAAE,cAAc;AAChB,QAAI,CAAC,EAAE,cAAc;AACpB,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,8BAA8B,GAAG,CAAC;AAC7D;AAAA,IACD;AACA,QAAI,OAAO,SAAS,EAAE,YAAY;AAClC,QAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG;AAC7B,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,8BAA8B,GAAG,CAAC;AAC7D;AAAA,IACD;AACA,MAAE,eAAe;AAAA,EAClB;AACA,MAAI,EAAE,KAAK;AACV,QAAI,IAAI,OAAO,SAAS,EAAE,OAAO;AACjC,QAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG;AAC7B,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,2BAA2B,GAAG,CAAC;AAC1D;AAAA,IACD;AACA,MAAE,UAAU;AACZ,QAAI,OAAO,SAAS,EAAE,OAAO;AAC7B,QAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG;AAC7B,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,0BAA0B,GAAG,CAAC;AACzD;AAAA,IACD;AACA,MAAE,UAAU;AAAA,EACb;AACA,MAAI,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,QAAQ,GAAG;AACzD;AAAA,EACD;AACA,IAAE,KAAK,OAAO;AACd,IAAE,QAAQ,OAAO;AACjB,IAAE,QAAQ;AACV,OAAK;AACL,MAAI,IAAI,KAAK,cAAc,EAAE,KAAK,YAAY,IAAI,EAAE;AACpD,MAAI,EAAE,KAAK,KAAK,OAAO;AACtB,SAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EACjB;AACA,OAAK,KAAK,CAAC,EAAE,KAAK,CAAC;AACpB;",
6
+ "names": ["i"]
7
+ }