@pwrdrvr/microapps-datalib 0.0.25 → 0.0.29
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/models/version.d.ts +34 -3
- package/dist/models/version.d.ts.map +1 -1
- package/dist/models/version.js +44 -0
- package/dist/models/version.js.map +1 -1
- package/package.json +1 -1
- package/src/models/application.spec.ts +2 -2
- package/src/models/version.spec.ts +24 -10
- package/src/models/version.ts +62 -5
package/dist/models/version.d.ts
CHANGED
|
@@ -1,25 +1,46 @@
|
|
|
1
1
|
import { DBManager } from '..';
|
|
2
2
|
export declare type VersionStatus = 'pending' | 'assets-copied' | 'permissioned' | 'integrated' | 'routed' | 'deployed';
|
|
3
|
+
export declare type AppTypes = 'static' | 'lambda';
|
|
3
4
|
export interface IVersionRecord {
|
|
4
5
|
PK: string;
|
|
5
6
|
SK: string;
|
|
6
7
|
AppName: string;
|
|
7
8
|
SemVer: string;
|
|
8
|
-
Type:
|
|
9
|
+
Type: 'lambda' | 'static';
|
|
9
10
|
Status: VersionStatus;
|
|
10
11
|
DefaultFile: string;
|
|
11
12
|
IntegrationID: string;
|
|
13
|
+
RouteIDAppVersion: string;
|
|
14
|
+
RouteIDAppVersionSplat: string;
|
|
12
15
|
}
|
|
13
16
|
export declare type IVersionRecordNoKeysLoose = Partial<Omit<IVersionRecord, 'PK' | 'SK' | 'AppName' | 'SemVer'>> & Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
14
17
|
export declare class Version implements IVersionRecord {
|
|
18
|
+
/**
|
|
19
|
+
* Load records for all the versions of an app
|
|
20
|
+
* @param opts
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
15
23
|
static LoadVersions(opts: {
|
|
16
24
|
dbManager: DBManager;
|
|
17
25
|
key: Pick<IVersionRecord, 'AppName'>;
|
|
18
26
|
}): Promise<Version[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Load record for a single version of an app
|
|
29
|
+
*/
|
|
19
30
|
static LoadVersion(opts: {
|
|
20
31
|
dbManager: DBManager;
|
|
21
32
|
key: Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
22
33
|
}): Promise<Version>;
|
|
34
|
+
/**
|
|
35
|
+
* Delete record for a single version of an app
|
|
36
|
+
*/
|
|
37
|
+
static DeleteVersion(opts: {
|
|
38
|
+
dbManager: DBManager;
|
|
39
|
+
key: Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Get PK (primary key / hash key) field value for current KeyBy
|
|
43
|
+
*/
|
|
23
44
|
get PK(): string;
|
|
24
45
|
private _keyBy;
|
|
25
46
|
private _appName;
|
|
@@ -28,21 +49,31 @@ export declare class Version implements IVersionRecord {
|
|
|
28
49
|
private _status;
|
|
29
50
|
private _defaultFile;
|
|
30
51
|
private _integrationID;
|
|
52
|
+
private _routeIDAppVersion;
|
|
53
|
+
private _routeIDAppVersionSplat;
|
|
31
54
|
constructor(init?: Partial<IVersionRecordNoKeysLoose>);
|
|
32
55
|
get DbStruct(): IVersionRecord;
|
|
56
|
+
/**
|
|
57
|
+
* Save this record to DynamoDB
|
|
58
|
+
* @param dbManager
|
|
59
|
+
*/
|
|
33
60
|
Save(dbManager: DBManager): Promise<void>;
|
|
34
61
|
get SK(): string;
|
|
35
62
|
get AppName(): string;
|
|
36
63
|
set AppName(value: string);
|
|
37
64
|
get SemVer(): string;
|
|
38
65
|
set SemVer(value: string);
|
|
39
|
-
get Type():
|
|
40
|
-
set Type(value:
|
|
66
|
+
get Type(): AppTypes;
|
|
67
|
+
set Type(value: AppTypes);
|
|
41
68
|
get Status(): VersionStatus;
|
|
42
69
|
set Status(value: VersionStatus);
|
|
43
70
|
get DefaultFile(): string;
|
|
44
71
|
set DefaultFile(value: string);
|
|
45
72
|
get IntegrationID(): string;
|
|
46
73
|
set IntegrationID(value: string);
|
|
74
|
+
get RouteIDAppVersion(): string;
|
|
75
|
+
set RouteIDAppVersion(value: string);
|
|
76
|
+
get RouteIDAppVersionSplat(): string;
|
|
77
|
+
set RouteIDAppVersionSplat(value: string);
|
|
47
78
|
}
|
|
48
79
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAM/B,oBAAY,aAAa,GACrB,SAAS,GACT,eAAe,GACf,cAAc,GACd,YAAY,GACZ,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"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"}
|
package/dist/models/version.js
CHANGED
|
@@ -12,9 +12,16 @@ class Version {
|
|
|
12
12
|
this._status = 'pending';
|
|
13
13
|
this._defaultFile = '';
|
|
14
14
|
this._integrationID = '';
|
|
15
|
+
this._routeIDAppVersion = '';
|
|
16
|
+
this._routeIDAppVersionSplat = '';
|
|
15
17
|
// Save any passed in values over the defaults
|
|
16
18
|
Object.assign(this, init);
|
|
17
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Load records for all the versions of an app
|
|
22
|
+
* @param opts
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
18
25
|
static async LoadVersions(opts) {
|
|
19
26
|
const { dbManager, key } = opts;
|
|
20
27
|
const { Items } = await dbManager.ddbDocClient.query({
|
|
@@ -34,6 +41,9 @@ class Version {
|
|
|
34
41
|
}
|
|
35
42
|
return records;
|
|
36
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Load record for a single version of an app
|
|
46
|
+
*/
|
|
37
47
|
static async LoadVersion(opts) {
|
|
38
48
|
const { dbManager, key } = opts;
|
|
39
49
|
const { Item } = await dbManager.ddbDocClient.get({
|
|
@@ -46,6 +56,22 @@ class Version {
|
|
|
46
56
|
const record = class_transformer_1.plainToClass(Version, Item);
|
|
47
57
|
return record;
|
|
48
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Delete record for a single version of an app
|
|
61
|
+
*/
|
|
62
|
+
static async DeleteVersion(opts) {
|
|
63
|
+
const { dbManager, key } = opts;
|
|
64
|
+
await dbManager.ddbDocClient.delete({
|
|
65
|
+
TableName: dbManager.tableName,
|
|
66
|
+
Key: {
|
|
67
|
+
PK: `appName#${key.AppName}`.toLowerCase(),
|
|
68
|
+
SK: `version#${key.SemVer}`.toLowerCase(),
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get PK (primary key / hash key) field value for current KeyBy
|
|
74
|
+
*/
|
|
49
75
|
get PK() {
|
|
50
76
|
switch (this._keyBy) {
|
|
51
77
|
case SaveBy.AppName:
|
|
@@ -64,8 +90,14 @@ class Version {
|
|
|
64
90
|
Status: this.Status,
|
|
65
91
|
DefaultFile: this.DefaultFile,
|
|
66
92
|
IntegrationID: this.IntegrationID,
|
|
93
|
+
RouteIDAppVersion: this.RouteIDAppVersion,
|
|
94
|
+
RouteIDAppVersionSplat: this.RouteIDAppVersionSplat,
|
|
67
95
|
};
|
|
68
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Save this record to DynamoDB
|
|
99
|
+
* @param dbManager
|
|
100
|
+
*/
|
|
69
101
|
async Save(dbManager) {
|
|
70
102
|
// TODO: Validate that all the fields needed are present
|
|
71
103
|
// Save under specific AppName key
|
|
@@ -119,6 +151,18 @@ class Version {
|
|
|
119
151
|
set IntegrationID(value) {
|
|
120
152
|
this._integrationID = value;
|
|
121
153
|
}
|
|
154
|
+
get RouteIDAppVersion() {
|
|
155
|
+
return this._routeIDAppVersion;
|
|
156
|
+
}
|
|
157
|
+
set RouteIDAppVersion(value) {
|
|
158
|
+
this._routeIDAppVersion = value;
|
|
159
|
+
}
|
|
160
|
+
get RouteIDAppVersionSplat() {
|
|
161
|
+
return this._routeIDAppVersionSplat;
|
|
162
|
+
}
|
|
163
|
+
set RouteIDAppVersionSplat(value) {
|
|
164
|
+
this._routeIDAppVersionSplat = value;
|
|
165
|
+
}
|
|
122
166
|
}
|
|
123
167
|
exports.Version = Version;
|
|
124
168
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":";;;AAAA,yDAAiD;AAGjD,IAAK,MAEJ;AAFD,WAAK,MAAM;IACT,yCAAO,CAAA;AACT,CAAC,EAFI,MAAM,KAAN,MAAM,QAEV;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -137,7 +137,7 @@ describe('application records', () => {
|
|
|
137
137
|
IntegrationID: 'abcd',
|
|
138
138
|
SemVer: '3.2.1-beta0',
|
|
139
139
|
Status: 'deployed',
|
|
140
|
-
Type: '
|
|
140
|
+
Type: 'lambda',
|
|
141
141
|
});
|
|
142
142
|
await version.Save(dbManager);
|
|
143
143
|
|
|
@@ -176,7 +176,7 @@ describe('application records', () => {
|
|
|
176
176
|
IntegrationID: 'abcd',
|
|
177
177
|
SemVer: '3.2.1-beta0',
|
|
178
178
|
Status: 'deployed',
|
|
179
|
-
Type: '
|
|
179
|
+
Type: 'lambda',
|
|
180
180
|
});
|
|
181
181
|
await version.Save(dbManager);
|
|
182
182
|
|
|
@@ -29,9 +29,11 @@ describe('version records', () => {
|
|
|
29
29
|
version.AppName = 'Cat';
|
|
30
30
|
version.SemVer = '1.2.3-Beta4';
|
|
31
31
|
version.Status = 'pending';
|
|
32
|
-
version.Type = '
|
|
32
|
+
version.Type = 'lambda';
|
|
33
33
|
version.DefaultFile = 'index.html';
|
|
34
34
|
version.IntegrationID = 'abcd';
|
|
35
|
+
version.RouteIDAppVersion = '123';
|
|
36
|
+
version.RouteIDAppVersionSplat = '456';
|
|
35
37
|
|
|
36
38
|
await version.Save(dbManager);
|
|
37
39
|
|
|
@@ -45,9 +47,11 @@ describe('version records', () => {
|
|
|
45
47
|
expect(Item?.AppName).toBe('cat');
|
|
46
48
|
expect(Item?.SemVer).toBe('1.2.3-Beta4');
|
|
47
49
|
expect(Item?.Status).toBe('pending');
|
|
48
|
-
expect(Item?.Type).toBe('
|
|
50
|
+
expect(Item?.Type).toBe('lambda');
|
|
49
51
|
expect(Item?.DefaultFile).toBe('index.html');
|
|
50
52
|
expect(Item?.IntegrationID).toBe('abcd');
|
|
53
|
+
expect(Item?.RouteIDAppVersion).toEqual('123');
|
|
54
|
+
expect(Item?.RouteIDAppVersionSplat).toEqual('456');
|
|
51
55
|
});
|
|
52
56
|
|
|
53
57
|
it('load 1 version should load 1 version', async () => {
|
|
@@ -55,7 +59,7 @@ describe('version records', () => {
|
|
|
55
59
|
version.AppName = 'Dog';
|
|
56
60
|
version.SemVer = '1.2.3-Beta5';
|
|
57
61
|
version.Status = 'pending';
|
|
58
|
-
version.Type = '
|
|
62
|
+
version.Type = 'lambda';
|
|
59
63
|
version.DefaultFile = 'index.html';
|
|
60
64
|
version.IntegrationID = 'abcd';
|
|
61
65
|
|
|
@@ -65,7 +69,7 @@ describe('version records', () => {
|
|
|
65
69
|
version.AppName = 'Dog';
|
|
66
70
|
version.SemVer = '1.2.3-Beta6';
|
|
67
71
|
version.Status = 'pending';
|
|
68
|
-
version.Type = '
|
|
72
|
+
version.Type = 'lambda';
|
|
69
73
|
version.DefaultFile = 'index.html';
|
|
70
74
|
version.IntegrationID = 'abcd';
|
|
71
75
|
|
|
@@ -98,9 +102,11 @@ describe('version records', () => {
|
|
|
98
102
|
version.AppName = 'Frog';
|
|
99
103
|
version.SemVer = '2.2.3-Beta5';
|
|
100
104
|
version.Status = 'pending';
|
|
101
|
-
version.Type = '
|
|
102
|
-
version.DefaultFile = '
|
|
103
|
-
version.IntegrationID = '
|
|
105
|
+
version.Type = 'lambda';
|
|
106
|
+
version.DefaultFile = 'index1.html';
|
|
107
|
+
version.IntegrationID = 'abcd1';
|
|
108
|
+
version.RouteIDAppVersion = 'routeAppVersion1';
|
|
109
|
+
version.RouteIDAppVersionSplat = 'routeAppVersionSplat1';
|
|
104
110
|
|
|
105
111
|
await version.Save(dbManager);
|
|
106
112
|
|
|
@@ -108,9 +114,11 @@ describe('version records', () => {
|
|
|
108
114
|
version.AppName = 'Frog';
|
|
109
115
|
version.SemVer = '2.2.3-Beta6';
|
|
110
116
|
version.Status = 'pending';
|
|
111
|
-
version.Type = '
|
|
112
|
-
version.DefaultFile = '
|
|
113
|
-
version.IntegrationID = '
|
|
117
|
+
version.Type = 'lambda';
|
|
118
|
+
version.DefaultFile = 'index2.html';
|
|
119
|
+
version.IntegrationID = 'abcd2';
|
|
120
|
+
version.RouteIDAppVersion = 'routeAppVersion2';
|
|
121
|
+
version.RouteIDAppVersionSplat = 'routeAppVersionSplat2';
|
|
114
122
|
|
|
115
123
|
await version.Save(dbManager);
|
|
116
124
|
|
|
@@ -121,8 +129,14 @@ describe('version records', () => {
|
|
|
121
129
|
expect(versions[0].AppName).toBe('frog');
|
|
122
130
|
expect(versions[0].SK).toBe('version#2.2.3-beta5');
|
|
123
131
|
expect(versions[0].SemVer).toBe('2.2.3-Beta5');
|
|
132
|
+
expect(versions[0].DefaultFile).toEqual('index1.html');
|
|
133
|
+
expect(versions[0].RouteIDAppVersion).toEqual('routeAppVersion1');
|
|
134
|
+
expect(versions[0].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat1');
|
|
124
135
|
expect(versions[1].AppName).toBe('frog');
|
|
125
136
|
expect(versions[1].SK).toBe('version#2.2.3-beta6');
|
|
126
137
|
expect(versions[1].SemVer).toBe('2.2.3-Beta6');
|
|
138
|
+
expect(versions[1].DefaultFile).toEqual('index2.html');
|
|
139
|
+
expect(versions[1].RouteIDAppVersion).toEqual('routeAppVersion2');
|
|
140
|
+
expect(versions[1].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat2');
|
|
127
141
|
});
|
|
128
142
|
});
|
package/src/models/version.ts
CHANGED
|
@@ -13,15 +13,19 @@ export type VersionStatus =
|
|
|
13
13
|
| 'routed'
|
|
14
14
|
| 'deployed';
|
|
15
15
|
|
|
16
|
+
export type AppTypes = 'static' | 'lambda';
|
|
17
|
+
|
|
16
18
|
export interface IVersionRecord {
|
|
17
19
|
PK: string;
|
|
18
20
|
SK: string;
|
|
19
21
|
AppName: string;
|
|
20
22
|
SemVer: string;
|
|
21
|
-
Type:
|
|
23
|
+
Type: 'lambda' | 'static';
|
|
22
24
|
Status: VersionStatus;
|
|
23
25
|
DefaultFile: string;
|
|
24
26
|
IntegrationID: string;
|
|
27
|
+
RouteIDAppVersion: string;
|
|
28
|
+
RouteIDAppVersionSplat: string;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
export type IVersionRecordNoKeysLoose = Partial<
|
|
@@ -30,6 +34,11 @@ export type IVersionRecordNoKeysLoose = Partial<
|
|
|
30
34
|
Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
31
35
|
|
|
32
36
|
export class Version implements IVersionRecord {
|
|
37
|
+
/**
|
|
38
|
+
* Load records for all the versions of an app
|
|
39
|
+
* @param opts
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
33
42
|
public static async LoadVersions(opts: {
|
|
34
43
|
dbManager: DBManager;
|
|
35
44
|
key: Pick<IVersionRecord, 'AppName'>;
|
|
@@ -55,6 +64,9 @@ export class Version implements IVersionRecord {
|
|
|
55
64
|
return records;
|
|
56
65
|
}
|
|
57
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Load record for a single version of an app
|
|
69
|
+
*/
|
|
58
70
|
public static async LoadVersion(opts: {
|
|
59
71
|
dbManager: DBManager;
|
|
60
72
|
key: Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
@@ -72,6 +84,27 @@ export class Version implements IVersionRecord {
|
|
|
72
84
|
return record;
|
|
73
85
|
}
|
|
74
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Delete record for a single version of an app
|
|
89
|
+
*/
|
|
90
|
+
public static async DeleteVersion(opts: {
|
|
91
|
+
dbManager: DBManager;
|
|
92
|
+
key: Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
93
|
+
}): Promise<void> {
|
|
94
|
+
const { dbManager, key } = opts;
|
|
95
|
+
|
|
96
|
+
await dbManager.ddbDocClient.delete({
|
|
97
|
+
TableName: dbManager.tableName,
|
|
98
|
+
Key: {
|
|
99
|
+
PK: `appName#${key.AppName}`.toLowerCase(),
|
|
100
|
+
SK: `version#${key.SemVer}`.toLowerCase(),
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get PK (primary key / hash key) field value for current KeyBy
|
|
107
|
+
*/
|
|
75
108
|
public get PK(): string {
|
|
76
109
|
switch (this._keyBy) {
|
|
77
110
|
case SaveBy.AppName:
|
|
@@ -84,16 +117,20 @@ export class Version implements IVersionRecord {
|
|
|
84
117
|
private _keyBy: SaveBy;
|
|
85
118
|
private _appName: string | undefined;
|
|
86
119
|
private _semVer: string | undefined;
|
|
87
|
-
private _type:
|
|
120
|
+
private _type: AppTypes | undefined;
|
|
88
121
|
private _status: VersionStatus;
|
|
89
122
|
private _defaultFile: string;
|
|
90
123
|
private _integrationID: string;
|
|
124
|
+
private _routeIDAppVersion: string;
|
|
125
|
+
private _routeIDAppVersionSplat: string | undefined;
|
|
91
126
|
|
|
92
127
|
public constructor(init?: Partial<IVersionRecordNoKeysLoose>) {
|
|
93
128
|
this._keyBy = SaveBy.AppName;
|
|
94
129
|
this._status = 'pending';
|
|
95
130
|
this._defaultFile = '';
|
|
96
131
|
this._integrationID = '';
|
|
132
|
+
this._routeIDAppVersion = '';
|
|
133
|
+
this._routeIDAppVersionSplat = '';
|
|
97
134
|
|
|
98
135
|
// Save any passed in values over the defaults
|
|
99
136
|
Object.assign(this, init);
|
|
@@ -109,9 +146,15 @@ export class Version implements IVersionRecord {
|
|
|
109
146
|
Status: this.Status,
|
|
110
147
|
DefaultFile: this.DefaultFile,
|
|
111
148
|
IntegrationID: this.IntegrationID,
|
|
149
|
+
RouteIDAppVersion: this.RouteIDAppVersion,
|
|
150
|
+
RouteIDAppVersionSplat: this.RouteIDAppVersionSplat,
|
|
112
151
|
};
|
|
113
152
|
}
|
|
114
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Save this record to DynamoDB
|
|
156
|
+
* @param dbManager
|
|
157
|
+
*/
|
|
115
158
|
public async Save(dbManager: DBManager): Promise<void> {
|
|
116
159
|
// TODO: Validate that all the fields needed are present
|
|
117
160
|
|
|
@@ -146,10 +189,10 @@ export class Version implements IVersionRecord {
|
|
|
146
189
|
this._semVer = value;
|
|
147
190
|
}
|
|
148
191
|
|
|
149
|
-
public get Type():
|
|
150
|
-
return this._type as
|
|
192
|
+
public get Type(): AppTypes {
|
|
193
|
+
return this._type as AppTypes;
|
|
151
194
|
}
|
|
152
|
-
public set Type(value:
|
|
195
|
+
public set Type(value: AppTypes) {
|
|
153
196
|
this._type = value;
|
|
154
197
|
}
|
|
155
198
|
|
|
@@ -173,4 +216,18 @@ export class Version implements IVersionRecord {
|
|
|
173
216
|
public set IntegrationID(value: string) {
|
|
174
217
|
this._integrationID = value;
|
|
175
218
|
}
|
|
219
|
+
|
|
220
|
+
public get RouteIDAppVersion(): string {
|
|
221
|
+
return this._routeIDAppVersion as string;
|
|
222
|
+
}
|
|
223
|
+
public set RouteIDAppVersion(value: string) {
|
|
224
|
+
this._routeIDAppVersion = value;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public get RouteIDAppVersionSplat(): string {
|
|
228
|
+
return this._routeIDAppVersionSplat as string;
|
|
229
|
+
}
|
|
230
|
+
public set RouteIDAppVersionSplat(value: string) {
|
|
231
|
+
this._routeIDAppVersionSplat = value;
|
|
232
|
+
}
|
|
176
233
|
}
|