@code-pushup/nx-plugin 0.92.0 → 0.93.0
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/package.json +3 -3
- package/src/executors/cli/executor.d.ts +1 -1
- package/src/executors/cli/executor.js +22 -14
- package/src/executors/cli/executor.js.map +1 -1
- package/src/index.d.ts +0 -1
- package/src/index.js +1 -3
- package/src/index.js.map +1 -1
- package/src/plugin/target/configuration-target.d.ts +1 -2
- package/src/plugin/target/configuration-target.js +6 -7
- package/src/plugin/target/configuration-target.js.map +1 -1
- package/src/plugin/target/targets.js +1 -2
- package/src/plugin/target/targets.js.map +1 -1
- package/src/executors/internal/cli.d.ts +0 -16
- package/src/executors/internal/cli.js +0 -52
- package/src/executors/internal/cli.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/nx-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.93.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Nx plugin to integrate the Code PushUp CLI into your workspace 🛠️",
|
|
6
6
|
"publishConfig": {
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"generators": "./generators.json",
|
|
33
33
|
"executors": "./executors.json",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@code-pushup/models": "0.
|
|
36
|
-
"@code-pushup/utils": "0.
|
|
35
|
+
"@code-pushup/models": "0.93.0",
|
|
36
|
+
"@code-pushup/utils": "0.93.0",
|
|
37
37
|
"@nx/devkit": ">=17.0.0",
|
|
38
38
|
"nx": ">=17.0.0"
|
|
39
39
|
},
|
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = runAutorunExecutor;
|
|
4
|
-
const devkit_1 = require("@nx/devkit");
|
|
5
4
|
const execute_process_js_1 = require("../../internal/execute-process.js");
|
|
6
|
-
const cli_js_1 = require("../internal/cli.js");
|
|
7
5
|
const context_js_1 = require("../internal/context.js");
|
|
8
6
|
const utils_js_1 = require("./utils.js");
|
|
7
|
+
/* eslint-disable-next-line max-lines-per-function */
|
|
9
8
|
async function runAutorunExecutor(terminalAndExecutorOptions, context) {
|
|
9
|
+
const { objectToCliArgs, formatCommandStatus, logger, stringifyError } = await Promise.resolve().then(() => require('@code-pushup/utils'));
|
|
10
10
|
const normalizedContext = (0, context_js_1.normalizeContext)(context);
|
|
11
11
|
const cliArgumentObject = (0, utils_js_1.parseAutorunExecutorOptions)(terminalAndExecutorOptions, normalizedContext);
|
|
12
|
-
const {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
const { command: cliCommand } = terminalAndExecutorOptions;
|
|
13
|
+
const { verbose = false, dryRun, bin, ...restArgs } = cliArgumentObject;
|
|
14
|
+
logger.setVerbose(verbose);
|
|
15
|
+
const command = bin ? `node` : 'npx';
|
|
16
|
+
const positionals = [
|
|
17
|
+
bin ?? '@code-pushup/cli',
|
|
18
|
+
...(cliCommand ? [cliCommand] : []),
|
|
19
|
+
];
|
|
20
|
+
const args = [...positionals, ...objectToCliArgs(restArgs)];
|
|
21
|
+
const executorEnvVariables = {
|
|
22
|
+
...(verbose && { CP_VERBOSE: 'true' }),
|
|
23
|
+
};
|
|
24
|
+
const commandString = formatCommandStatus([command, ...args].join(' '), {
|
|
25
|
+
cwd: context.cwd,
|
|
26
|
+
env: executorEnvVariables,
|
|
17
27
|
});
|
|
18
|
-
if (verbose) {
|
|
19
|
-
devkit_1.logger.info(`Run CLI executor ${command ?? ''}`);
|
|
20
|
-
devkit_1.logger.info(`Command: ${commandString}`);
|
|
21
|
-
}
|
|
22
28
|
if (dryRun) {
|
|
23
|
-
|
|
29
|
+
logger.warn(`DryRun execution of: ${commandString}`);
|
|
24
30
|
}
|
|
25
31
|
else {
|
|
26
32
|
try {
|
|
33
|
+
logger.debug(`With env vars: ${executorEnvVariables}`);
|
|
27
34
|
await (0, execute_process_js_1.executeProcess)({
|
|
28
|
-
|
|
35
|
+
command,
|
|
36
|
+
args,
|
|
29
37
|
...(context.cwd ? { cwd: context.cwd } : {}),
|
|
30
38
|
});
|
|
31
39
|
}
|
|
32
40
|
catch (error) {
|
|
33
|
-
|
|
41
|
+
logger.error(stringifyError(error));
|
|
34
42
|
return {
|
|
35
43
|
success: false,
|
|
36
44
|
command: commandString,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/cli/executor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/cli/executor.ts"],"names":[],"mappings":";;AAaA,qCAoDC;AAhED,0EAAmE;AACnE,uDAA0D;AAE1D,yCAAyD;AAQzD,qDAAqD;AACtC,KAAK,UAAU,kBAAkB,CAC9C,0BAAyD,EACzD,OAAwB;IAExB,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,GACpE,2CAAa,oBAAoB,EAAC,CAAC;IACrC,MAAM,iBAAiB,GAAG,IAAA,6BAAgB,EAAC,OAAO,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,IAAA,sCAA2B,EACnD,0BAA0B,EAC1B,iBAAiB,CAClB,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,0BAA0B,CAAC;IAC3D,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,CAAC;IACxE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACrC,MAAM,WAAW,GAAG;QAClB,GAAG,IAAI,kBAAkB;QACzB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,oBAAoB,GAAG;QAC3B,GAAG,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;KACvC,CAAC;IACF,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtE,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,oBAAoB;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,oBAAoB,EAAE,CAAC,CAAC;YACvD,MAAM,IAAA,mCAAc,EAAC;gBACnB,OAAO;gBACP,IAAI;gBACJ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC"}
|
package/src/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ declare const plugin: {
|
|
|
5
5
|
};
|
|
6
6
|
export default plugin;
|
|
7
7
|
export type { AutorunCommandExecutorOptions } from './executors/cli/schema.js';
|
|
8
|
-
export { objectToCliArgs } from './executors/internal/cli.js';
|
|
9
8
|
export { generateCodePushupConfig } from './generators/configuration/code-pushup-config.js';
|
|
10
9
|
export { configurationGenerator } from './generators/configuration/generator.js';
|
|
11
10
|
export type { ConfigurationGeneratorOptions } from './generators/configuration/schema.js';
|
package/src/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createNodesV2 = exports.createNodes = exports.initSchematic = exports.initGenerator = exports.configurationGenerator = exports.generateCodePushupConfig =
|
|
17
|
+
exports.createNodesV2 = exports.createNodes = exports.initSchematic = exports.initGenerator = exports.configurationGenerator = exports.generateCodePushupConfig = void 0;
|
|
18
18
|
const index_js_1 = require("./plugin/index.js");
|
|
19
19
|
// default export for nx.json#plugins
|
|
20
20
|
const plugin = {
|
|
@@ -24,8 +24,6 @@ const plugin = {
|
|
|
24
24
|
createNodes: index_js_1.createNodes,
|
|
25
25
|
};
|
|
26
26
|
exports.default = plugin;
|
|
27
|
-
var cli_js_1 = require("./executors/internal/cli.js");
|
|
28
|
-
Object.defineProperty(exports, "objectToCliArgs", { enumerable: true, get: function () { return cli_js_1.objectToCliArgs; } });
|
|
29
27
|
var code_pushup_config_js_1 = require("./generators/configuration/code-pushup-config.js");
|
|
30
28
|
Object.defineProperty(exports, "generateCodePushupConfig", { enumerable: true, get: function () { return code_pushup_config_js_1.generateCodePushupConfig; } });
|
|
31
29
|
var generator_js_1 = require("./generators/configuration/generator.js");
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA+D;AAE/D,qCAAqC;AACrC,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,wBAAwB;IAC9B,aAAa,EAAb,wBAAa;IACb,gDAAgD;IAChD,WAAW,EAAX,sBAAW;CACZ,CAAC;AAEF,kBAAe,MAAM,CAAC;AAGtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA+D;AAE/D,qCAAqC;AACrC,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,wBAAwB;IAC9B,aAAa,EAAb,wBAAa;IACb,gDAAgD;IAChD,WAAW,EAAX,sBAAW;CACZ,CAAC;AAEF,kBAAe,MAAM,CAAC;AAGtB,0FAA4F;AAAnF,iIAAA,wBAAwB,OAAA;AACjC,wEAAiF;AAAxE,sHAAA,sBAAsB,OAAA;AAE/B,+DAA8E;AAArE,6GAAA,aAAa,OAAA;AAAE,6GAAA,aAAa,OAAA;AAErC,yDAAuC;AACvC,8CAA+D;AAAtD,uGAAA,WAAW,OAAA;AAAE,yGAAA,aAAa,OAAA"}
|
|
@@ -2,5 +2,4 @@ import type { TargetConfiguration } from '@nx/devkit';
|
|
|
2
2
|
import type { RunCommandsOptions } from 'nx/src/executors/run-commands/run-commands.impl';
|
|
3
3
|
export declare function createConfigurationTarget(options?: {
|
|
4
4
|
projectName?: string;
|
|
5
|
-
|
|
6
|
-
}): TargetConfiguration<RunCommandsOptions>;
|
|
5
|
+
}): Promise<TargetConfiguration<RunCommandsOptions>>;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createConfigurationTarget = createConfigurationTarget;
|
|
4
|
-
const cli_js_1 = require("../../executors/internal/cli.js");
|
|
5
4
|
const constants_js_1 = require("../../internal/constants.js");
|
|
6
|
-
function createConfigurationTarget(options) {
|
|
7
|
-
const { projectName
|
|
8
|
-
const
|
|
5
|
+
async function createConfigurationTarget(options) {
|
|
6
|
+
const { projectName } = options ?? {};
|
|
7
|
+
const { objectToCliArgs } = await Promise.resolve().then(() => require('@code-pushup/utils'));
|
|
8
|
+
const args = objectToCliArgs({
|
|
9
9
|
...(projectName ? { project: projectName } : {}),
|
|
10
10
|
});
|
|
11
|
-
const argsString = args.length > 0 ? args.join(' ') : '';
|
|
12
|
-
const baseCommand = `nx g ${bin}:configuration`;
|
|
11
|
+
const argsString = args.length > 0 ? ` ${args.join(' ')}` : '';
|
|
13
12
|
return {
|
|
14
|
-
command:
|
|
13
|
+
command: `nx g ${constants_js_1.PACKAGE_NAME}:configuration${argsString}`,
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
16
|
//# sourceMappingURL=configuration-target.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-target.js","sourceRoot":"","sources":["../../../../src/plugin/target/configuration-target.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"configuration-target.js","sourceRoot":"","sources":["../../../../src/plugin/target/configuration-target.ts"],"names":[],"mappings":";;AAIA,8DAYC;AAdD,8DAA2D;AAEpD,KAAK,UAAU,yBAAyB,CAAC,OAE/C;IACC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,EAAE,eAAe,EAAE,GAAG,2CAAa,oBAAoB,EAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,OAAO;QACL,OAAO,EAAE,QAAQ,2BAAY,iBAAiB,UAAU,EAAE;KAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -15,9 +15,8 @@ async function createTargets(normalizedContext) {
|
|
|
15
15
|
}
|
|
16
16
|
: // if NO code-pushup.config.*.(ts|js|mjs) is present return configuration target
|
|
17
17
|
{
|
|
18
|
-
[`${targetName}--configuration`]: (0, configuration_target_js_1.createConfigurationTarget)({
|
|
18
|
+
[`${targetName}--configuration`]: await (0, configuration_target_js_1.createConfigurationTarget)({
|
|
19
19
|
projectName: normalizedContext.projectJson.name,
|
|
20
|
-
bin,
|
|
21
20
|
}),
|
|
22
21
|
};
|
|
23
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/plugin/target/targets.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/plugin/target/targets.ts"],"names":[],"mappings":";;AAgBA,sCAiBC;AAjCD,+CAA2C;AAC3C,kDAAiD;AAKjD,uEAAsE;AACtE,iDAA0D;AAC1D,6DAA4D;AAQrD,KAAK,UAAU,aAAa,CAAC,iBAAuC;IACzE,MAAM,EACJ,UAAU,GAAG,6BAAc,EAC3B,GAAG,EACH,aAAa,GACd,GAAG,iBAAiB,CAAC,aAAa,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAO,EAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,uCAAwB,CAAC,CAAC;QACzE,CAAC,CAAC;YACE,CAAC,UAAU,CAAC,EAAE,IAAA,yCAAoB,EAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;SAC3D;QACH,CAAC,CAAC,gFAAgF;YAChF;gBACE,CAAC,GAAG,UAAU,iBAAiB,CAAC,EAAE,MAAM,IAAA,mDAAyB,EAAC;oBAChE,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI;iBAChD,CAAC;aACH,CAAC;AACR,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare function createCliCommandString(options?: {
|
|
2
|
-
args?: Record<string, unknown>;
|
|
3
|
-
command?: string;
|
|
4
|
-
bin?: string;
|
|
5
|
-
}): string;
|
|
6
|
-
export declare function createCliCommandObject(options?: {
|
|
7
|
-
args?: Record<string, unknown>;
|
|
8
|
-
command?: string;
|
|
9
|
-
bin?: string;
|
|
10
|
-
}): import('@code-pushup/utils').ProcessConfig;
|
|
11
|
-
type ArgumentValue = number | string | boolean | string[];
|
|
12
|
-
export type CliArgsObject<T extends object = Record<string, ArgumentValue>> = T extends never ? Record<string, ArgumentValue | undefined> | {
|
|
13
|
-
_: string;
|
|
14
|
-
} : T;
|
|
15
|
-
export declare function objectToCliArgs<T extends object = Record<string, ArgumentValue>>(params?: CliArgsObject<T>): string[];
|
|
16
|
-
export {};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createCliCommandString = createCliCommandString;
|
|
4
|
-
exports.createCliCommandObject = createCliCommandObject;
|
|
5
|
-
exports.objectToCliArgs = objectToCliArgs;
|
|
6
|
-
function createCliCommandString(options) {
|
|
7
|
-
const { bin = '@code-pushup/cli', command, args } = options ?? {};
|
|
8
|
-
return `npx ${bin} ${objectToCliArgs({ _: command ?? [], ...args }).join(' ')}`;
|
|
9
|
-
}
|
|
10
|
-
function createCliCommandObject(options) {
|
|
11
|
-
const { bin = '@code-pushup/cli', command, args } = options ?? {};
|
|
12
|
-
return {
|
|
13
|
-
command: 'npx',
|
|
14
|
-
args: [bin, ...objectToCliArgs({ _: command ?? [], ...args })],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
// @TODO import from @code-pushup/utils => get rid of poppins for cjs support
|
|
18
|
-
function objectToCliArgs(params) {
|
|
19
|
-
if (!params) {
|
|
20
|
-
return [];
|
|
21
|
-
}
|
|
22
|
-
return Object.entries(params).flatMap(([key, value]) => {
|
|
23
|
-
// process/file/script
|
|
24
|
-
if (key === '_') {
|
|
25
|
-
return (Array.isArray(value) ? value : [`${value}`]).filter(v => v != null);
|
|
26
|
-
}
|
|
27
|
-
const prefix = key.length === 1 ? '-' : '--';
|
|
28
|
-
// "-*" arguments (shorthands)
|
|
29
|
-
if (Array.isArray(value)) {
|
|
30
|
-
return value.map(v => `${prefix}${key}="${v}"`);
|
|
31
|
-
}
|
|
32
|
-
if (typeof value === 'object') {
|
|
33
|
-
return Object.entries(value).flatMap(
|
|
34
|
-
// transform nested objects to the dot notation `key.subkey`
|
|
35
|
-
([k, v]) => objectToCliArgs({ [`${key}.${k}`]: v }));
|
|
36
|
-
}
|
|
37
|
-
if (typeof value === 'string') {
|
|
38
|
-
return [`${prefix}${key}="${value}"`];
|
|
39
|
-
}
|
|
40
|
-
if (typeof value === 'number') {
|
|
41
|
-
return [`${prefix}${key}=${value}`];
|
|
42
|
-
}
|
|
43
|
-
if (typeof value === 'boolean') {
|
|
44
|
-
return [`${prefix}${value ? '' : 'no-'}${key}`];
|
|
45
|
-
}
|
|
46
|
-
if (value === undefined) {
|
|
47
|
-
return [];
|
|
48
|
-
}
|
|
49
|
-
throw new Error(`Unsupported type ${typeof value} for key ${key}`);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=cli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/executors/internal/cli.ts"],"names":[],"mappings":"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"}
|