@neurodevs/ndx-cli 0.1.2 → 0.1.3
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/build/__tests__/modules/CliCommandRunner.test.d.ts +3 -1
- package/build/__tests__/modules/CliCommandRunner.test.js +23 -7
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +2 -0
- package/build/modules/CliCommandRunner.js +16 -1
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/build/testDoubles/prompts/fakePrompts.d.ts +4 -4
- package/build/testDoubles/prompts/fakePrompts.js.map +1 -1
- package/package.json +5 -4
- package/src/__tests__/modules/CliCommandRunner.test.ts +28 -9
- package/src/modules/CliCommandRunner.ts +21 -1
- package/src/testDoubles/prompts/fakePrompts.ts +4 -4
|
@@ -14,9 +14,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
14
14
|
protected static createPackageDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
15
15
|
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
16
16
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
17
|
-
private static expandHomeDir;
|
|
18
17
|
private static runCreateModule;
|
|
19
18
|
private static runCreatePackage;
|
|
19
|
+
private static expandHomeDir;
|
|
20
|
+
private static splitOnCommaOrWhitespace;
|
|
20
21
|
private static setFakeAutomodule;
|
|
21
22
|
private static setFakeAutopackage;
|
|
22
23
|
private static setFakePrompts;
|
|
@@ -26,6 +27,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
26
27
|
private static readonly implName;
|
|
27
28
|
private static readonly packageName;
|
|
28
29
|
private static readonly description;
|
|
30
|
+
private static readonly keywords;
|
|
29
31
|
private static readonly githubToken;
|
|
30
32
|
private static readonly interfaceNameMessage;
|
|
31
33
|
private static readonly implNameMessage;
|
|
@@ -107,7 +107,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
107
107
|
}
|
|
108
108
|
static async createPackagePromptsUserForInput() {
|
|
109
109
|
await this.runCreatePackage();
|
|
110
|
-
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
110
|
+
test_utils_1.assert.isEqualDeep(JSON.stringify(fakePrompts_1.callsToFakePrompts[0]), JSON.stringify([
|
|
111
111
|
{
|
|
112
112
|
type: 'text',
|
|
113
113
|
name: 'packageName',
|
|
@@ -118,7 +118,14 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
118
118
|
name: 'description',
|
|
119
119
|
message: this.packageDescriptionMessage,
|
|
120
120
|
},
|
|
121
|
-
|
|
121
|
+
{
|
|
122
|
+
type: 'text',
|
|
123
|
+
name: 'keywords',
|
|
124
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
125
|
+
initial: '',
|
|
126
|
+
format: (value) => value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
127
|
+
},
|
|
128
|
+
]), 'Did not prompt user for expected input!');
|
|
122
129
|
}
|
|
123
130
|
static async createPackageDoesNotContinueIfPromptsIsInterrupted() {
|
|
124
131
|
await this.runCreatePackage({
|
|
@@ -133,6 +140,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
133
140
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutopackage.callsToConstructor[0], {
|
|
134
141
|
name: this.packageName,
|
|
135
142
|
description: this.description,
|
|
143
|
+
keywords: this.keywords,
|
|
136
144
|
gitNamespace: 'neurodevs',
|
|
137
145
|
npmNamespace: 'neurodevs',
|
|
138
146
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -144,11 +152,6 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
144
152
|
await this.runCreatePackage();
|
|
145
153
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 1, 'Did not call run on Autopackage!');
|
|
146
154
|
}
|
|
147
|
-
static expandHomeDir(inputPath) {
|
|
148
|
-
return inputPath.startsWith('~')
|
|
149
|
-
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
150
|
-
: inputPath;
|
|
151
|
-
}
|
|
152
155
|
static async runCreateModule(responses) {
|
|
153
156
|
this.setFakeResponsesForCreateModule(responses);
|
|
154
157
|
const instance = this.CliCommandRunner([this.createModuleCommand]);
|
|
@@ -161,6 +164,17 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
161
164
|
await instance.run();
|
|
162
165
|
return instance;
|
|
163
166
|
}
|
|
167
|
+
static expandHomeDir(inputPath) {
|
|
168
|
+
return inputPath.startsWith('~')
|
|
169
|
+
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
170
|
+
: inputPath;
|
|
171
|
+
}
|
|
172
|
+
static splitOnCommaOrWhitespace(value) {
|
|
173
|
+
return value
|
|
174
|
+
.split(/[\s,]+/)
|
|
175
|
+
.map((v) => v.trim())
|
|
176
|
+
.filter(Boolean);
|
|
177
|
+
}
|
|
164
178
|
static setFakeAutomodule() {
|
|
165
179
|
meta_node_1.NodeAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
166
180
|
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
@@ -184,6 +198,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
184
198
|
(0, fakePrompts_1.setFakeResponses)({
|
|
185
199
|
packageName: this.packageName,
|
|
186
200
|
description: this.description,
|
|
201
|
+
keywords: this.keywords,
|
|
187
202
|
...responses,
|
|
188
203
|
});
|
|
189
204
|
}
|
|
@@ -197,6 +212,7 @@ CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
|
197
212
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
198
213
|
CliCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
|
|
199
214
|
CliCommandRunnerTest.description = (0, test_utils_1.generateId)();
|
|
215
|
+
CliCommandRunnerTest.keywords = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
200
216
|
CliCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
|
|
201
217
|
CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
202
218
|
CliCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
7
7
|
private implName;
|
|
8
8
|
private packageName;
|
|
9
9
|
private description;
|
|
10
|
+
private keywords;
|
|
10
11
|
private readonly createModuleCommand;
|
|
11
12
|
private readonly createPackageCommand;
|
|
12
13
|
private readonly supportedCommands;
|
|
@@ -26,6 +27,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
26
27
|
private promptForAutopackage;
|
|
27
28
|
private readonly packageNameMessage;
|
|
28
29
|
private readonly packageDescriptionMessage;
|
|
30
|
+
private splitOnCommaOrWhitespace;
|
|
29
31
|
private get userInputExistsForCreatePackage();
|
|
30
32
|
private expandHomeDir;
|
|
31
33
|
private get prompts();
|
|
@@ -75,9 +75,10 @@ class CliCommandRunner {
|
|
|
75
75
|
return this.interfaceName && this.implName;
|
|
76
76
|
}
|
|
77
77
|
async createPackage() {
|
|
78
|
-
const { packageName, description } = await this.promptForAutopackage();
|
|
78
|
+
const { packageName, description, keywords } = await this.promptForAutopackage();
|
|
79
79
|
this.packageName = packageName;
|
|
80
80
|
this.description = description;
|
|
81
|
+
this.keywords = keywords;
|
|
81
82
|
if (!this.userInputExistsForCreatePackage) {
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
@@ -96,8 +97,21 @@ class CliCommandRunner {
|
|
|
96
97
|
name: 'description',
|
|
97
98
|
message: this.packageDescriptionMessage,
|
|
98
99
|
},
|
|
100
|
+
{
|
|
101
|
+
type: 'text',
|
|
102
|
+
name: 'keywords',
|
|
103
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
104
|
+
initial: '',
|
|
105
|
+
format: (value) => value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
106
|
+
},
|
|
99
107
|
]);
|
|
100
108
|
}
|
|
109
|
+
splitOnCommaOrWhitespace(value) {
|
|
110
|
+
return value
|
|
111
|
+
.split(/[\s,]+/)
|
|
112
|
+
.map((v) => v.trim())
|
|
113
|
+
.filter(Boolean);
|
|
114
|
+
}
|
|
101
115
|
get userInputExistsForCreatePackage() {
|
|
102
116
|
return this.packageName && this.description;
|
|
103
117
|
}
|
|
@@ -121,6 +135,7 @@ class CliCommandRunner {
|
|
|
121
135
|
return meta_node_1.NpmAutopackage.Create({
|
|
122
136
|
name: this.packageName,
|
|
123
137
|
description: this.description,
|
|
138
|
+
keywords: this.keywords,
|
|
124
139
|
gitNamespace: 'neurodevs',
|
|
125
140
|
npmNamespace: 'neurodevs',
|
|
126
141
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,gDAAuB;AACvB,oDAAqE;AACrE,sDAA6B;AAE7B,MAAqB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare let callsToFakePrompts: Record<string,
|
|
1
|
+
export declare let callsToFakePrompts: Record<string, unknown>[][];
|
|
2
2
|
export declare function resetCallsToFakePrompts(): void;
|
|
3
|
-
export declare let fakeResponses: Record<string,
|
|
4
|
-
export declare function setFakeResponses(responses: Record<string,
|
|
5
|
-
export declare function fakePrompts(questions: Record<string,
|
|
3
|
+
export declare let fakeResponses: Record<string, unknown>;
|
|
4
|
+
export declare function setFakeResponses(responses: Record<string, unknown>): void;
|
|
5
|
+
export declare function fakePrompts(questions: Record<string, unknown>[]): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fakePrompts.js","sourceRoot":"","sources":["../../../src/testDoubles/prompts/fakePrompts.ts"],"names":[],"mappings":";;;AAEA,0DAEC;AAID,4CAEC;AAED,kCAGC;AAfU,QAAA,kBAAkB,
|
|
1
|
+
{"version":3,"file":"fakePrompts.js","sourceRoot":"","sources":["../../../src/testDoubles/prompts/fakePrompts.ts"],"names":[],"mappings":";;;AAEA,0DAEC;AAID,4CAEC;AAED,kCAGC;AAfU,QAAA,kBAAkB,GAAgC,EAAE,CAAA;AAE/D,SAAgB,uBAAuB;IACnC,0BAAkB,GAAG,EAAE,CAAA;AAC3B,CAAC;AAEU,QAAA,aAAa,GAA4B,EAAE,CAAA;AAEtD,SAAgB,gBAAgB,CAAC,SAAkC;IAC/D,qBAAa,GAAG,SAAS,CAAA;AAC7B,CAAC;AAED,SAAgB,WAAW,CAAC,SAAoC;IAC5D,0BAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClC,OAAO,qBAAa,CAAA;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/ndx-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "CLI tools for the Neurodevs ecosystem.",
|
|
4
5
|
"keywords": [],
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"author": "Eric Yates <hello@ericthecurious.com>",
|
|
@@ -13,6 +14,9 @@
|
|
|
13
14
|
"url": "https://github.com/neurodevs/ndx-cli/issues"
|
|
14
15
|
},
|
|
15
16
|
"main": "build/index.js",
|
|
17
|
+
"bin": {
|
|
18
|
+
"ndx": "build/cli.js"
|
|
19
|
+
},
|
|
16
20
|
"scripts": {
|
|
17
21
|
"build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
|
|
18
22
|
"build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
|
|
@@ -73,8 +77,5 @@
|
|
|
73
77
|
"moduleNameMapper": {
|
|
74
78
|
"^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
|
|
75
79
|
}
|
|
76
|
-
},
|
|
77
|
-
"bin": {
|
|
78
|
-
"ndx": "build/cli.js"
|
|
79
80
|
}
|
|
80
81
|
}
|
|
@@ -138,8 +138,8 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
138
138
|
await this.runCreatePackage()
|
|
139
139
|
|
|
140
140
|
assert.isEqualDeep(
|
|
141
|
-
callsToFakePrompts[0],
|
|
142
|
-
[
|
|
141
|
+
JSON.stringify(callsToFakePrompts[0]),
|
|
142
|
+
JSON.stringify([
|
|
143
143
|
{
|
|
144
144
|
type: 'text',
|
|
145
145
|
name: 'packageName',
|
|
@@ -150,7 +150,16 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
150
150
|
name: 'description',
|
|
151
151
|
message: this.packageDescriptionMessage,
|
|
152
152
|
},
|
|
153
|
-
|
|
153
|
+
{
|
|
154
|
+
type: 'text',
|
|
155
|
+
name: 'keywords',
|
|
156
|
+
message:
|
|
157
|
+
'Enter keywords (comma or space separated, optional):',
|
|
158
|
+
initial: '',
|
|
159
|
+
format: (value: string) =>
|
|
160
|
+
value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
161
|
+
},
|
|
162
|
+
]),
|
|
154
163
|
'Did not prompt user for expected input!'
|
|
155
164
|
)
|
|
156
165
|
}
|
|
@@ -180,6 +189,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
180
189
|
{
|
|
181
190
|
name: this.packageName,
|
|
182
191
|
description: this.description,
|
|
192
|
+
keywords: this.keywords,
|
|
183
193
|
gitNamespace: 'neurodevs',
|
|
184
194
|
npmNamespace: 'neurodevs',
|
|
185
195
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -201,12 +211,6 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
201
211
|
)
|
|
202
212
|
}
|
|
203
213
|
|
|
204
|
-
private static expandHomeDir(inputPath: string): string {
|
|
205
|
-
return inputPath.startsWith('~')
|
|
206
|
-
? path.join(os.homedir(), inputPath.slice(1))
|
|
207
|
-
: inputPath
|
|
208
|
-
}
|
|
209
|
-
|
|
210
214
|
private static async runCreateModule(responses?: Record<string, string>) {
|
|
211
215
|
this.setFakeResponsesForCreateModule(responses)
|
|
212
216
|
|
|
@@ -225,6 +229,19 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
225
229
|
return instance
|
|
226
230
|
}
|
|
227
231
|
|
|
232
|
+
private static expandHomeDir(inputPath: string): string {
|
|
233
|
+
return inputPath.startsWith('~')
|
|
234
|
+
? path.join(os.homedir(), inputPath.slice(1))
|
|
235
|
+
: inputPath
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private static splitOnCommaOrWhitespace(value: string) {
|
|
239
|
+
return value
|
|
240
|
+
.split(/[\s,]+/)
|
|
241
|
+
.map((v: string) => v.trim())
|
|
242
|
+
.filter(Boolean)
|
|
243
|
+
}
|
|
244
|
+
|
|
228
245
|
private static setFakeAutomodule() {
|
|
229
246
|
NodeAutomodule.Class = FakeAutomodule
|
|
230
247
|
FakeAutomodule.resetTestDouble()
|
|
@@ -256,6 +273,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
256
273
|
setFakeResponses({
|
|
257
274
|
packageName: this.packageName,
|
|
258
275
|
description: this.description,
|
|
276
|
+
keywords: this.keywords,
|
|
259
277
|
...responses,
|
|
260
278
|
})
|
|
261
279
|
}
|
|
@@ -264,6 +282,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
264
282
|
private static readonly implName = generateId()
|
|
265
283
|
private static readonly packageName = generateId()
|
|
266
284
|
private static readonly description = generateId()
|
|
285
|
+
private static readonly keywords = [generateId(), generateId()]
|
|
267
286
|
private static readonly githubToken = generateId()
|
|
268
287
|
|
|
269
288
|
private static readonly interfaceNameMessage =
|
|
@@ -11,8 +11,10 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
11
11
|
|
|
12
12
|
private interfaceName!: string
|
|
13
13
|
private implName!: string
|
|
14
|
+
|
|
14
15
|
private packageName!: string
|
|
15
16
|
private description!: string
|
|
17
|
+
private keywords!: string[]
|
|
16
18
|
|
|
17
19
|
private readonly createModuleCommand = 'create.module'
|
|
18
20
|
private readonly createPackageCommand = 'create.package'
|
|
@@ -97,10 +99,12 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
private async createPackage() {
|
|
100
|
-
const { packageName, description } =
|
|
102
|
+
const { packageName, description, keywords } =
|
|
103
|
+
await this.promptForAutopackage()
|
|
101
104
|
|
|
102
105
|
this.packageName = packageName
|
|
103
106
|
this.description = description
|
|
107
|
+
this.keywords = keywords
|
|
104
108
|
|
|
105
109
|
if (!this.userInputExistsForCreatePackage) {
|
|
106
110
|
return
|
|
@@ -122,6 +126,14 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
122
126
|
name: 'description',
|
|
123
127
|
message: this.packageDescriptionMessage,
|
|
124
128
|
},
|
|
129
|
+
{
|
|
130
|
+
type: 'text',
|
|
131
|
+
name: 'keywords',
|
|
132
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
133
|
+
initial: '',
|
|
134
|
+
format: (value) =>
|
|
135
|
+
value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
136
|
+
},
|
|
125
137
|
])
|
|
126
138
|
}
|
|
127
139
|
|
|
@@ -131,6 +143,13 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
131
143
|
private readonly packageDescriptionMessage =
|
|
132
144
|
'What should the package description be? Example: A useful package.'
|
|
133
145
|
|
|
146
|
+
private splitOnCommaOrWhitespace(value: string) {
|
|
147
|
+
return value
|
|
148
|
+
.split(/[\s,]+/)
|
|
149
|
+
.map((v: string) => v.trim())
|
|
150
|
+
.filter(Boolean)
|
|
151
|
+
}
|
|
152
|
+
|
|
134
153
|
private get userInputExistsForCreatePackage() {
|
|
135
154
|
return this.packageName && this.description
|
|
136
155
|
}
|
|
@@ -158,6 +177,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
158
177
|
return NpmAutopackage.Create({
|
|
159
178
|
name: this.packageName,
|
|
160
179
|
description: this.description,
|
|
180
|
+
keywords: this.keywords,
|
|
161
181
|
gitNamespace: 'neurodevs',
|
|
162
182
|
npmNamespace: 'neurodevs',
|
|
163
183
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export let callsToFakePrompts: Record<string,
|
|
1
|
+
export let callsToFakePrompts: Record<string, unknown>[][] = []
|
|
2
2
|
|
|
3
3
|
export function resetCallsToFakePrompts() {
|
|
4
4
|
callsToFakePrompts = []
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
export let fakeResponses: Record<string,
|
|
7
|
+
export let fakeResponses: Record<string, unknown> = {}
|
|
8
8
|
|
|
9
|
-
export function setFakeResponses(responses: Record<string,
|
|
9
|
+
export function setFakeResponses(responses: Record<string, unknown>) {
|
|
10
10
|
fakeResponses = responses
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function fakePrompts(questions: Record<string,
|
|
13
|
+
export function fakePrompts(questions: Record<string, unknown>[]) {
|
|
14
14
|
callsToFakePrompts.push(questions)
|
|
15
15
|
return fakeResponses
|
|
16
16
|
}
|