Skip to content

Commit 63f3f69

Browse files
committed
feat: now it allows using scoped and scope-structured objects and able to decode this
1 parent d9a9bb6 commit 63f3f69

File tree

13 files changed

+77
-17
lines changed

13 files changed

+77
-17
lines changed

src/analyze.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../types/interfaces';
1+
import { IBlock } from './types/interfaces';
22
import caseRequestModeFinder from './finders/request';
33
import babelCompilerManipulationNormalize from './utils/babel-normalise';
44
import eachStringLine from './utils/each-str-line';

src/extractors/scopes.ts

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { BlockMode } from '../../types/interfaces';
1+
import { BlockMode } from '../types/interfaces';
22

33
export default (line: string): ['request' | 'req', BlockMode, string?] => {
44
const matches = [];
55
const cases = {
6+
SPACES: 0,
67
SCOPE: 0,
78
CURVE_SCOPE: 0,
89
QUOTE: 0,
@@ -11,6 +12,9 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
1112
DOTS: 0,
1213
COMMAS: 0
1314
};
15+
const caseSum = (): number =>
16+
Object.values(cases).reduce((acc, n) => acc + n, 0);
17+
let pointer = 0;
1418

1519
let rebuild = '';
1620
for (const char of line) {
@@ -19,19 +23,25 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
1923
cases.SCOPE++;
2024

2125
rebuild += char;
26+
27+
pointer++;
2228
break;
2329
}
2430
case "'":
2531
case '"': {
2632
cases.QUOTE++;
2733

2834
rebuild += char;
35+
36+
pointer++;
2937
break;
3038
}
3139
case '{': {
3240
cases.CURVE_SCOPE++;
3341

3442
rebuild += char;
43+
44+
pointer++;
3545
break;
3646
}
3747
case ')': {
@@ -41,6 +51,8 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
4151
} else {
4252
// rebuild = '';
4353
}
54+
55+
pointer++;
4456
break;
4557
}
4658
case '}': {
@@ -52,16 +64,22 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
5264
rebuild = '';
5365
}
5466
}
67+
68+
pointer++;
5569
break;
5670
}
5771
case ':':
5872
case '=': {
59-
cases.ENDLINES++;
60-
61-
if (rebuild.length > 0) {
73+
if (caseSum() === 0) {
74+
rebuild = '';
75+
line = line.substr(pointer + 1);
76+
} else if (rebuild.length > 0) {
6277
matches.push(rebuild);
6378
rebuild = '';
6479
}
80+
cases.ENDLINES++;
81+
82+
pointer++;
6583
break;
6684
}
6785
case '.': {
@@ -71,6 +89,8 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
7189
matches.push(rebuild);
7290
rebuild = '';
7391
}
92+
93+
pointer++;
7494
break;
7595
}
7696
case ',': {
@@ -80,9 +100,14 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
80100
matches.push(rebuild);
81101
rebuild = '';
82102
}
103+
104+
pointer++;
83105
break;
84106
}
85107
case ' ': {
108+
cases.SPACES++;
109+
110+
pointer++;
86111
break;
87112
}
88113
case ';': {
@@ -94,11 +119,14 @@ export default (line: string): ['request' | 'req', BlockMode, string?] => {
94119
rebuild = '';
95120
}
96121
}
122+
123+
pointer++;
97124
break;
98125
}
99126
default: {
100127
rebuild += char;
101128

129+
pointer++;
102130
break;
103131
}
104132
}

src/extractors/variable-key.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default function variableKeyExtractor(line: string): string[] | null {
2-
const matcRegEx = /(const|let|var)(.*)=(.*)/;
2+
const matcRegEx = /(const|let|var)(.*)=(.*)?;/;
33
const matches = line.match(matcRegEx);
44

55
if (matches) {

src/finders/request/body.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestModeBodyFinder(

src/finders/request/cookies.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestModeCookiesFinder(

src/finders/request/headers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestModeHeadersFinder(

src/finders/request/index.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { IBlock } from '../../../types/interfaces';
21
import scopeExtractor from '../../extractors/scopes';
2+
import { IBlock } from '../../types/interfaces';
3+
import isScopeIn from '../../utils/is-scope-in';
34
import requestModeBodyFinder from './body';
45
import requestModeCookiesFinder from './cookies';
56
import requestModeHeadersFinder from './headers';
@@ -8,9 +9,10 @@ import requestMethodFinder from './property';
89
import requestModeQueryFinder from './query';
910

1011
export default function caseRequestModeFinder(
11-
line: string,
12+
raw_line: string,
1213
index: number
1314
): IBlock | null | undefined {
15+
const line = raw_line.trim();
1416
const requestPropertyCaseFindMatch = line.match(
1517
/(request|req).(.*)?(;|\.|\()/
1618
);
@@ -26,12 +28,27 @@ export default function caseRequestModeFinder(
2628
[_, _key, _skey] = scopeExtractor(input);
2729

2830
if (_skey) {
31+
if (isScopeIn(_key)) {
32+
return {
33+
link: _skey,
34+
linked: false,
35+
line_index: index,
36+
key: _skey,
37+
mode: _key
38+
};
39+
}
40+
return undefined;
41+
}
42+
43+
if (_key === undefined) {
44+
[_, _key] = scopeExtractor(line);
45+
2946
return {
30-
link: _skey,
47+
link: _key,
3148
linked: false,
3249
line_index: index,
33-
key: _skey,
34-
mode: _key
50+
key: _key,
51+
mode: 'property'
3552
};
3653
}
3754

src/finders/request/params.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestModeParamsFinder(

src/finders/request/property.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestMethodFinder(

src/finders/request/query.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IBlock } from '../../../types/interfaces';
1+
import { IBlock } from '../../types/interfaces';
22
import variableKeyExtractor from '../../extractors/variable-key';
33

44
export default function requestModeQueryFinder(

0 commit comments

Comments
 (0)