@nodesecure/rc 4.0.0 → 4.0.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.
- package/README.md +9 -36
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/functions/memoize.d.ts +3 -2
- package/dist/functions/memoize.d.ts.map +1 -0
- package/dist/functions/memoize.js.map +1 -1
- package/dist/functions/read.d.ts +3 -2
- package/dist/functions/read.d.ts.map +1 -0
- package/dist/functions/read.js +1 -1
- package/dist/functions/read.js.map +1 -1
- package/dist/functions/write.d.ts +3 -2
- package/dist/functions/write.d.ts.map +1 -0
- package/dist/functions/write.js +2 -2
- package/dist/functions/write.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/projects/ci.d.ts +1 -0
- package/dist/projects/ci.d.ts.map +1 -0
- package/dist/projects/ci.js +2 -0
- package/dist/projects/ci.js.map +1 -1
- package/dist/projects/report.d.ts +1 -0
- package/dist/projects/report.d.ts.map +1 -0
- package/dist/projects/scanner.d.ts +1 -0
- package/dist/projects/scanner.d.ts.map +1 -0
- package/dist/rc.d.ts +3 -3
- package/dist/rc.d.ts.map +1 -0
- package/dist/rc.js +2 -0
- package/dist/rc.js.map +1 -1
- package/dist/schema/loader.d.ts +1 -0
- package/dist/schema/loader.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/readJSON.d.ts +1 -0
- package/dist/utils/readJSON.d.ts.map +1 -0
- package/package.json +8 -14
- package/LICENSE +0 -21
- package/dist/schema/defs/author.json +0 -13
package/README.md
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://github.com/NodeSecure/rc">
|
|
7
|
-
<img src="https://img.shields.io/badge/dynamic/json.svg?style=for-the-badge&url=https://raw.githubusercontent.com/NodeSecure/
|
|
6
|
+
<a href="https://github.com/NodeSecure/blob/master/workspaces/rc">
|
|
7
|
+
<img src="https://img.shields.io/badge/dynamic/json.svg?style=for-the-badge&url=https://raw.githubusercontent.com/NodeSecure/scanner/blob/master/workspaces/rc/package.json&query=$.version&label=Version" alt="npm version">
|
|
8
8
|
</a>
|
|
9
|
-
<a href="https://github.com/NodeSecure/
|
|
10
|
-
<img src="https://img.shields.io/github/license/NodeSecure/
|
|
9
|
+
<a href="https://github.com/NodeSecure/scanner/blob/master/workspaces/rc/LICENSE">
|
|
10
|
+
<img src="https://img.shields.io/github/license/NodeSecure/scanner.svg?style=for-the-badge" alt="license">
|
|
11
11
|
</a>
|
|
12
|
-
<a href="https://api.securityscorecards.dev/projects/github.com/NodeSecure/rc">
|
|
13
|
-
<img src="https://api.securityscorecards.dev/projects/github.com/NodeSecure/
|
|
12
|
+
<a href="https://api.securityscorecards.dev/projects/github.com/NodeSecure/blob/master/workspaces/rc">
|
|
13
|
+
<img src="https://api.securityscorecards.dev/projects/github.com/NodeSecure/scanner/badge?style=for-the-badge" alt="ossf scorecard">
|
|
14
14
|
</a>
|
|
15
|
-
<a href="https://github.com/NodeSecure/
|
|
16
|
-
<img src="https://img.shields.io/github/actions/workflow/status/NodeSecure/
|
|
15
|
+
<a href="https://github.com/NodeSecure/scanner/actions?query=workflow%3A%22Node.js+CI%22">
|
|
16
|
+
<img src="https://img.shields.io/github/actions/workflow/status/NodeSecure/scanner/node.js.yml?style=for-the-badge" alt="github ci workflow">
|
|
17
17
|
</a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ NodeSecure runtime configuration.
|
|
|
21
21
|
|
|
22
22
|
## Requirements
|
|
23
23
|
|
|
24
|
-
- [Node.js](https://nodejs.org/en/)
|
|
24
|
+
- [Node.js](https://nodejs.org/en/) v20 or higher
|
|
25
25
|
|
|
26
26
|
## Getting Started
|
|
27
27
|
|
|
@@ -240,33 +240,6 @@ The JSON schema is a composition of multiple definitions for each tool:
|
|
|
240
240
|
- [reportChart](./src/schema/defs/reportChart.json)
|
|
241
241
|
- [scanner](./src/schema/defs/scanner.json)
|
|
242
242
|
|
|
243
|
-
## Contributors ✨
|
|
244
|
-
|
|
245
|
-
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
246
|
-
[](#contributors-)
|
|
247
|
-
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
248
|
-
|
|
249
|
-
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
250
|
-
|
|
251
|
-
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
252
|
-
<!-- prettier-ignore-start -->
|
|
253
|
-
<!-- markdownlint-disable -->
|
|
254
|
-
<table>
|
|
255
|
-
<tbody>
|
|
256
|
-
<tr>
|
|
257
|
-
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/thomas-gentilhomme/"><img src="https://avatars.githubusercontent.com/u/4438263?v=4?s=100" width="100px;" alt="Gentilhomme"/><br /><sub><b>Gentilhomme</b></sub></a><br /><a href="https://github.com/NodeSecure/rc/commits?author=fraxken" title="Code">💻</a> <a href="https://github.com/NodeSecure/rc/issues?q=author%3Afraxken" title="Bug reports">🐛</a> <a href="https://github.com/NodeSecure/rc/pulls?q=is%3Apr+reviewed-by%3Afraxken" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/NodeSecure/rc/commits?author=fraxken" title="Documentation">📖</a> <a href="#security-fraxken" title="Security">🛡️</a></td>
|
|
258
|
-
<td align="center" valign="top" width="14.28%"><a href="https://dev.to/antoinecoulon"><img src="https://avatars.githubusercontent.com/u/43391199?v=4?s=100" width="100px;" alt="Antoine Coulon"/><br /><sub><b>Antoine Coulon</b></sub></a><br /><a href="https://github.com/NodeSecure/rc/commits?author=antoine-coulon" title="Code">💻</a> <a href="https://github.com/NodeSecure/rc/issues?q=author%3Aantoine-coulon" title="Bug reports">🐛</a> <a href="https://github.com/NodeSecure/rc/pulls?q=is%3Apr+reviewed-by%3Aantoine-coulon" title="Reviewed Pull Requests">👀</a></td>
|
|
259
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/PierreDemailly"><img src="https://avatars.githubusercontent.com/u/39910767?v=4?s=100" width="100px;" alt="PierreD"/><br /><sub><b>PierreD</b></sub></a><br /><a href="https://github.com/NodeSecure/rc/commits?author=PierreDemailly" title="Code">💻</a></td>
|
|
260
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fabnguess"><img src="https://avatars.githubusercontent.com/u/72697416?v=4?s=100" width="100px;" alt="Kouadio Fabrice Nguessan"/><br /><sub><b>Kouadio Fabrice Nguessan</b></sub></a><br /><a href="https://github.com/NodeSecure/rc/commits?author=fabnguess" title="Code">💻</a> <a href="#maintenance-fabnguess" title="Maintenance">🚧</a></td>
|
|
261
|
-
</tr>
|
|
262
|
-
</tbody>
|
|
263
|
-
</table>
|
|
264
|
-
|
|
265
|
-
<!-- markdownlint-restore -->
|
|
266
|
-
<!-- prettier-ignore-end -->
|
|
267
|
-
|
|
268
|
-
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
269
|
-
|
|
270
243
|
## License
|
|
271
244
|
|
|
272
245
|
MIT
|
package/dist/constants.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,8BAA8B,eAAe,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Option } from "@openally/result";
|
|
2
|
-
import { RC } from "../rc.js";
|
|
1
|
+
import { type Option } from "@openally/result";
|
|
2
|
+
import type { RC } from "../rc.js";
|
|
3
3
|
export interface memoizeOptions {
|
|
4
4
|
/**
|
|
5
5
|
* If enabled it will overwrite (crush) the previous memoized RC
|
|
@@ -14,3 +14,4 @@ export interface memoizedOptions {
|
|
|
14
14
|
export declare function memoized(options?: memoizedOptions): Partial<RC> | null;
|
|
15
15
|
export declare function maybeMemoized(): Option<Partial<RC>>;
|
|
16
16
|
export declare function clearMemoized(): void;
|
|
17
|
+
//# sourceMappingURL=memoize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/functions/memoize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAInC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,OAAO,CACrB,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EACpB,OAAO,GAAE,cAAmB,GAC3B,IAAI,CASN;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAIpB;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAInD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/functions/memoize.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/functions/memoize.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAe,MAAM,kBAAkB,CAAC;AAK3D,IAAI,aAAa,GAAuB,IAAI,CAAC;AAU7C,MAAM,UAAU,OAAO,CACrB,OAAoB,EACpB,UAA0B,EAAE;IAE5B,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,aAAa,KAAK,IAAI,IAAI,SAAS,EAAE,CAAC;QACxC,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC;SACI,CAAC;QACJ,aAAa,GAAG,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,QAAQ,CACtB,OAAyB;IAEzB,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE9C,OAAO,aAAa,IAAI,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,KAAK,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC"}
|
package/dist/functions/read.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@openally/result";
|
|
2
|
-
import { RequireAtLeastOne } from "type-fest";
|
|
3
|
-
import {
|
|
2
|
+
import type { RequireAtLeastOne } from "type-fest";
|
|
3
|
+
import { type RCGenerationMode, type RC } from "../rc.js";
|
|
4
4
|
interface createReadOptions {
|
|
5
5
|
/**
|
|
6
6
|
* If enabled the file will be created if it does not exist on the disk.
|
|
@@ -24,3 +24,4 @@ interface createReadOptions {
|
|
|
24
24
|
export type readOptions = RequireAtLeastOne<createReadOptions, "createIfDoesNotExist" | "createMode">;
|
|
25
25
|
export declare function read(location?: string, options?: readOptions): Promise<Result<RC, NodeJS.ErrnoException>>;
|
|
26
26
|
export {};
|
|
27
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/functions/read.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGnD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,EAAE,EACR,MAAM,UAAU,CAAC;AAIlB,UAAU,iBAAiB;IACzB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEnD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,YAAY,CAAC,CAAC;AAEtG,wBAAsB,IAAI,CACxB,QAAQ,SAAgB,EACxB,OAAO,GAAE,WAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CA2B5C"}
|
package/dist/functions/read.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { once } from "node:events";
|
|
4
4
|
// Import Third-party Dependencies
|
|
5
5
|
import { AsynchronousConfig } from "@openally/config";
|
|
6
|
-
import { Ok, Err } from "@openally/result";
|
|
6
|
+
import { Ok, Err, Result } from "@openally/result";
|
|
7
7
|
// Import Internal Dependencies
|
|
8
8
|
import { JSONSchema, generateDefaultRC } from "../rc.js";
|
|
9
9
|
import * as CONSTANTS from "../constants.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/functions/read.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/functions/read.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGnD,+BAA+B;AAC/B,OAAO,EACL,UAAU,EACV,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA0BvC,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,EACxB,UAAuB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE/G,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAK,OAAO,EAAE;YAC9C,UAAU,EAAE,UAAU;YACtB,eAAe,EAAE,oBAAoB;SACtC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAElB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,KAA8B,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from "@openally/result";
|
|
2
|
-
import { RC } from "../rc.js";
|
|
2
|
+
import { type RC } from "../rc.js";
|
|
3
3
|
/**
|
|
4
4
|
* Overwrite the complete payload. partialUpdate property is mandatory.
|
|
5
5
|
*/
|
|
@@ -15,4 +15,5 @@ export interface writePartialPayload {
|
|
|
15
15
|
partialUpdate: true;
|
|
16
16
|
}
|
|
17
17
|
export type writeOptions = writeCompletePayload | writePartialPayload;
|
|
18
|
-
export declare function write(location: string
|
|
18
|
+
export declare function write(location: string, options: writeOptions): Promise<Result<void, NodeJS.ErrnoException>>;
|
|
19
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/functions/write.ts"],"names":[],"mappings":"AAKA,OAAO,EAAW,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAc,KAAK,EAAE,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,EAAE,CAAC;IACZ,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB;AAED;;IAEI;AACJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEtE,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAoB9C"}
|
package/dist/functions/write.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
// Import Third-party Dependencies
|
|
4
4
|
import { AsynchronousConfig } from "@openally/config";
|
|
5
|
-
import { Ok, Err } from "@openally/result";
|
|
5
|
+
import { Ok, Err, Result } from "@openally/result";
|
|
6
6
|
// Import Internal Dependencies
|
|
7
7
|
import { JSONSchema } from "../rc.js";
|
|
8
8
|
import * as CONSTANTS from "../constants.js";
|
|
9
|
-
export async function write(location
|
|
9
|
+
export async function write(location, options) {
|
|
10
10
|
try {
|
|
11
11
|
const { payload, partialUpdate = false } = options;
|
|
12
12
|
const cfgPath = path.join(location, CONSTANTS.CONFIGURATION_NAME);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/functions/write.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/functions/write.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAW,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAmB7C,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,QAAgB,EAChB,OAAqB;IAErB,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAK,OAAO,EAAE;YAC9C,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAa,CAAC;QAC5F,GAAG,CAAC,OAAO,GAAG,eAAe,CAAC;QAE9B,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAElB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,KAA8B,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from "./functions/read.js";
|
|
|
2
2
|
export * from "./functions/write.js";
|
|
3
3
|
export * from "./functions/memoize.js";
|
|
4
4
|
export * as CONSTANTS from "./constants.js";
|
|
5
|
-
export { type RC, JSONSchema, homedir } from "./rc.js";
|
|
5
|
+
export { type RC, type CiConfiguration, type CiWarnings, type ReportConfiguration, type ReportChart, type ScannerConfiguration, JSONSchema, homedir } from "./rc.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EACL,KAAK,EAAE,EACP,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,UAAU,EACV,OAAO,EACR,MAAM,SAAS,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAOL,UAAU,EACV,OAAO,EACR,MAAM,SAAS,CAAC"}
|
package/dist/projects/ci.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/projects/ci.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE;QAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;KACnD,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;CAChE;AACD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,wBAAgB,uBAAuB,IAAI;IAAE,EAAE,EAAE,eAAe,CAAC;CAAE,CAUlE"}
|
package/dist/projects/ci.js
CHANGED
package/dist/projects/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/projects/ci.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/projects/ci.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAwB/C,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,GAAoB;QAC1B,SAAS,EAAE,CAAC,SAAS,CAAC;QACtB,eAAe,EAAE;YACf,QAAQ,EAAE,QAAQ;SACnB;QACD,QAAQ,EAAE,OAAO;KAClB,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/projects/report.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,GAAG,CAAC,EAAE;QACJ;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;QAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ;;;WAGG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;WAEG;QACH,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IACvD;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;IAC1D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,2BAA2B,IAAI;IAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAAE,CAgCvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/projects/scanner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,4BAA4B,IAAI;IAAE,OAAO,EAAE,oBAAoB,CAAC;CAAE,CAQjF"}
|
package/dist/rc.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import i18n from "@nodesecure/i18n";
|
|
2
1
|
import * as vulnera from "@nodesecure/vulnera";
|
|
3
2
|
import { generateCIConfiguration, type CiConfiguration, type CiWarnings } from "./projects/ci.js";
|
|
4
3
|
import { generateReportConfiguration, type ReportConfiguration, type ReportChart } from "./projects/report.js";
|
|
@@ -14,7 +13,7 @@ export interface RC {
|
|
|
14
13
|
*
|
|
15
14
|
* @default `english`
|
|
16
15
|
*/
|
|
17
|
-
i18n?:
|
|
16
|
+
i18n?: "english" | "french";
|
|
18
17
|
/**
|
|
19
18
|
* Vulnerability strategy to use. Can be disabled by using `none` as value.
|
|
20
19
|
* @see https://github.com/NodeSecure/vuln#available-strategy
|
|
@@ -45,4 +44,5 @@ export declare function generateDefaultRC(mode?: RCGenerationMode | RCGeneration
|
|
|
45
44
|
* Dedicated directory for NodeSecure to store the configuration in the os HOME directory.
|
|
46
45
|
*/
|
|
47
46
|
export declare function homedir(): string;
|
|
48
|
-
export { generateCIConfiguration, CiConfiguration, CiWarnings, generateReportConfiguration, ReportConfiguration, ReportChart, generateScannerConfiguration, ScannerConfiguration };
|
|
47
|
+
export { generateCIConfiguration, type CiConfiguration, type CiWarnings, generateReportConfiguration, type ReportConfiguration, type ReportChart, generateScannerConfiguration, type ScannerConfiguration };
|
|
48
|
+
//# sourceMappingURL=rc.d.ts.map
|
package/dist/rc.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rc.d.ts","sourceRoot":"","sources":["../src/rc.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EACL,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,UAAU,KAAuB,CAAC;AAE/C,MAAM,WAAW,EAAE;IACjB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,yCAAyC;IACzC,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE,gBAAgB,GAAG,gBAAgB,EAAc,GACtD,EAAE,CAiBJ;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,OAAO,EACL,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAEhB,4BAA4B,EAC5B,KAAK,oBAAoB,EAC1B,CAAC"}
|
package/dist/rc.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Import Node.js Dependencies
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
+
// Import Third-party Dependencies
|
|
5
|
+
import * as vulnera from "@nodesecure/vulnera";
|
|
4
6
|
// Import Internal Dependencies
|
|
5
7
|
import { GLOBAL_CONFIGURATION_DIRECTORY } from "./constants.js";
|
|
6
8
|
import { loadJSONSchemaSync } from "./schema/loader.js";
|
package/dist/rc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rc.js","sourceRoot":"","sources":["../src/rc.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"rc.js","sourceRoot":"","sources":["../src/rc.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,kCAAkC;AAClC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,+BAA+B;AAC/B,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,uBAAuB,EAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,2BAA2B,EAG5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,EAE7B,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;AAmC/C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8C,SAAS;IAEvD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAkB;QACxB,QAAQ,EAAE,iBAA0B;QACpC,QAAQ,EAAE,4BAA4B;KACvC,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAClB,SAAS,EACT,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,EAC5D,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,EACpE,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CACvE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;AACjE,CAAC;AAED,OAAO,EACL,uBAAuB,EAIvB,2BAA2B,EAI3B,4BAA4B,EAE7B,CAAC"}
|
package/dist/schema/loader.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/schema/loader.ts"],"names":[],"mappings":"AAiBA,wBAAgB,kBAAkB,QAOjC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/dist/utils/readJSON.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readJSON.d.ts","sourceRoot":"","sources":["../../src/utils/readJSON.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,OAI7D"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nodesecure/rc",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "NodeSecure runtime configuration",
|
|
5
|
-
"exports": "./dist/index.js",
|
|
6
5
|
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": ">=
|
|
9
|
+
"node": ">=20"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc",
|
|
13
13
|
"prepublishOnly": "npm run build",
|
|
14
14
|
"test-only": "glob -c \"tsx --test\" \"test/**/*.spec.ts\"",
|
|
15
|
-
"test": "npm run test-only && npm run test:tsd",
|
|
16
15
|
"test:tsd": "npm run build && tsd",
|
|
17
|
-
"
|
|
18
|
-
"lint": "eslint src/**/*.ts"
|
|
16
|
+
"test": "c8 -r html npm run test-only && npm run test:tsd"
|
|
19
17
|
},
|
|
20
18
|
"repository": {
|
|
21
19
|
"type": "git",
|
|
22
|
-
"url": "git+https://github.com/NodeSecure/
|
|
20
|
+
"url": "git+https://github.com/NodeSecure/scanner.git"
|
|
23
21
|
},
|
|
24
22
|
"files": [
|
|
25
23
|
"dist"
|
|
@@ -32,9 +30,9 @@
|
|
|
32
30
|
"author": "GENTILHOMME Thomas <gentilhomme.thomas@gmail.com>",
|
|
33
31
|
"license": "MIT",
|
|
34
32
|
"bugs": {
|
|
35
|
-
"url": "https://github.com/NodeSecure/
|
|
33
|
+
"url": "https://github.com/NodeSecure/scanner/issues"
|
|
36
34
|
},
|
|
37
|
-
"homepage": "https://github.com/NodeSecure/rc#readme",
|
|
35
|
+
"homepage": "https://github.com/NodeSecure/tree/master/workspaces/rc#readme",
|
|
38
36
|
"devDependencies": {
|
|
39
37
|
"@nodesecure/eslint-config": "^2.0.0-beta.0",
|
|
40
38
|
"@types/lodash.merge": "^4.6.7",
|
|
@@ -48,7 +46,6 @@
|
|
|
48
46
|
"typescript": "^5.5.4"
|
|
49
47
|
},
|
|
50
48
|
"dependencies": {
|
|
51
|
-
"@nodesecure/i18n": "^4.0.1",
|
|
52
49
|
"@nodesecure/js-x-ray": "^7.3.0",
|
|
53
50
|
"@nodesecure/npm-types": "^1.0.0",
|
|
54
51
|
"@nodesecure/vulnera": "^2.0.1",
|
|
@@ -58,9 +55,6 @@
|
|
|
58
55
|
"type-fest": "^4.23.0"
|
|
59
56
|
},
|
|
60
57
|
"tsd": {
|
|
61
|
-
"directory": "test/types"
|
|
62
|
-
"compilerOptions": {
|
|
63
|
-
"esModuleInterop": true
|
|
64
|
-
}
|
|
58
|
+
"directory": "test/types"
|
|
65
59
|
}
|
|
66
60
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2021-2024 NodeSecure
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|