@naturalcycles/nodejs-lib 15.98.0 → 15.100.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/dist/bin/secrets-decrypt.d.ts +1 -1
- package/dist/bin/secrets-decrypt.js +0 -1
- package/dist/bin/secrets-encrypt.d.ts +1 -1
- package/dist/bin/secrets-encrypt.js +0 -1
- package/dist/fs/fs2.js +0 -1
- package/dist/fs/yaml2.d.ts +3 -2
- package/dist/fs/yaml2.js +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/node.util.d.ts +4 -0
- package/dist/node.util.js +16 -0
- package/dist/script/runScript.d.ts +0 -1
- package/dist/script/runScript.js +2 -1
- package/dist/secret/secrets-decrypt.util.js +1 -2
- package/dist/security/secret.util.js +1 -1
- package/dist/validation/ajv/getAjv.js +0 -1
- package/dist/validation/ajv/jSchema.js +2 -4
- package/dist/yargs/yargs.util.js +1 -1
- package/package.json +1 -2
- package/src/bin/secrets-decrypt.ts +0 -1
- package/src/bin/secrets-encrypt.ts +0 -1
- package/src/fs/fs2.ts +0 -1
- package/src/fs/yaml2.ts +6 -4
- package/src/index.ts +1 -0
- package/src/node.util.ts +16 -0
- package/src/script/runScript.ts +3 -1
- package/src/secret/secrets-decrypt.util.ts +1 -2
- package/src/security/secret.util.ts +1 -1
- package/src/stream/stream.model.ts +0 -3
- package/src/validation/ajv/getAjv.ts +0 -1
- package/src/validation/ajv/jSchema.ts +2 -5
- package/src/yargs/yargs.util.ts +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
export {};
|
package/dist/fs/fs2.js
CHANGED
package/dist/fs/yaml2.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToStringOptions } from 'yaml';
|
|
2
|
+
export type YamlParseOptions = ParseOptions & DocumentOptions & SchemaOptions;
|
|
2
3
|
export type YamlStringifyOptions = DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions & ToStringOptions;
|
|
3
4
|
declare class Yaml2 {
|
|
4
|
-
readYaml<T = unknown>(filePath: string): T;
|
|
5
|
-
readYamlAsync<T = unknown>(filePath: string): Promise<T>;
|
|
5
|
+
readYaml<T = unknown>(filePath: string, opt?: YamlParseOptions): T;
|
|
6
|
+
readYamlAsync<T = unknown>(filePath: string, opt?: YamlParseOptions): Promise<T>;
|
|
6
7
|
writeYaml(filePath: string, data: any, opt?: YamlStringifyOptions): void;
|
|
7
8
|
writeYamlAsync(filePath: string, data: any, opt?: YamlStringifyOptions): Promise<void>;
|
|
8
9
|
outputYaml(filePath: string, data: any, opt?: YamlStringifyOptions): void;
|
package/dist/fs/yaml2.js
CHANGED
|
@@ -3,11 +3,11 @@ import fsp from 'node:fs/promises';
|
|
|
3
3
|
import { parse, stringify } from 'yaml';
|
|
4
4
|
import { fs2 } from './fs2.js';
|
|
5
5
|
class Yaml2 {
|
|
6
|
-
readYaml(filePath) {
|
|
7
|
-
return parse(fs.readFileSync(filePath, 'utf8'));
|
|
6
|
+
readYaml(filePath, opt) {
|
|
7
|
+
return parse(fs.readFileSync(filePath, 'utf8'), opt);
|
|
8
8
|
}
|
|
9
|
-
async readYamlAsync(filePath) {
|
|
10
|
-
return parse(await fsp.readFile(filePath, 'utf8'));
|
|
9
|
+
async readYamlAsync(filePath, opt) {
|
|
10
|
+
return parse(await fsp.readFile(filePath, 'utf8'), opt);
|
|
11
11
|
}
|
|
12
12
|
writeYaml(filePath, data, opt) {
|
|
13
13
|
const str = stringify(data, opt);
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './buffer/buffer.util.js';
|
|
|
2
2
|
export * from './diff/tableDiff.js';
|
|
3
3
|
export * from './infra/process.util.js';
|
|
4
4
|
export * from './log/log.util.js';
|
|
5
|
+
export * from './node.util.js';
|
|
5
6
|
export * from './security/crypto.util.js';
|
|
6
7
|
export * from './security/hash.util.js';
|
|
7
8
|
export * from './security/id.util.js';
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from './buffer/buffer.util.js';
|
|
|
2
2
|
export * from './diff/tableDiff.js';
|
|
3
3
|
export * from './infra/process.util.js';
|
|
4
4
|
export * from './log/log.util.js';
|
|
5
|
+
export * from './node.util.js';
|
|
5
6
|
export * from './security/crypto.util.js';
|
|
6
7
|
export * from './security/hash.util.js';
|
|
7
8
|
export * from './security/id.util.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if load was successful
|
|
3
|
+
*/
|
|
4
|
+
export function loadEnvFileIfExists(path = '.env') {
|
|
5
|
+
try {
|
|
6
|
+
process.loadEnvFile(path);
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
if (err.code === 'ENOENT') {
|
|
11
|
+
// gracefully ignore that the file does not exist
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
package/dist/script/runScript.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import 'dotenv/config';
|
|
2
1
|
import os from 'node:os';
|
|
3
2
|
import { pDelay } from '@naturalcycles/js-lib/promise/pDelay.js';
|
|
4
3
|
import { setGlobalStringifyFunction } from '@naturalcycles/js-lib/string/stringify.js';
|
|
5
4
|
import { dimGrey } from '../colors/colors.js';
|
|
5
|
+
import { loadEnvFileIfExists } from '../node.util.js';
|
|
6
6
|
import { inspectStringifyFn } from '../string/inspect.js';
|
|
7
|
+
loadEnvFileIfExists();
|
|
7
8
|
const { DEBUG_RUN_SCRIPT } = process.env;
|
|
8
9
|
/**
|
|
9
10
|
* Use it in your top-level scripts like this:
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
1
|
+
import fs, { globSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { _assert } from '@naturalcycles/js-lib/error/assert.js';
|
|
4
|
-
import { globSync } from 'tinyglobby';
|
|
5
4
|
import { dimGrey, yellow } from '../colors/colors.js';
|
|
6
5
|
import { fs2 } from '../fs/fs2.js';
|
|
7
6
|
import { decryptObject, decryptRandomIVBuffer } from '../security/crypto.util.js';
|
|
@@ -11,7 +11,7 @@ const secretMap = {};
|
|
|
11
11
|
* Does NOT delete previous secrets from secretMap.
|
|
12
12
|
*/
|
|
13
13
|
export function loadSecretsFromEnv() {
|
|
14
|
-
//
|
|
14
|
+
// loadEnvFileIfExists() // ensure .env is loaded
|
|
15
15
|
const secrets = {};
|
|
16
16
|
Object.keys(process.env)
|
|
17
17
|
.filter(k => k.toUpperCase().startsWith('SECRET_'))
|
|
@@ -4,7 +4,6 @@ import { _deepCopy, _mapObject, Set2 } from '@naturalcycles/js-lib/object';
|
|
|
4
4
|
import { _substringAfterLast } from '@naturalcycles/js-lib/string';
|
|
5
5
|
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
6
6
|
import { validTLDs } from '../tlds.js';
|
|
7
|
-
/* eslint-disable @typescript-eslint/prefer-string-starts-ends-with */
|
|
8
7
|
// oxlint-disable unicorn/prefer-code-point
|
|
9
8
|
const AJV_OPTIONS = {
|
|
10
9
|
removeAdditional: true,
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable id-denylist */
|
|
2
|
-
// oxlint-disable max-lines
|
|
3
1
|
import { _isObject, _isUndefined, _numberEnumValues, _stringEnumValues, getEnumType, } from '@naturalcycles/js-lib';
|
|
4
2
|
import { _uniq } from '@naturalcycles/js-lib/array';
|
|
5
3
|
import { _assert, _try } from '@naturalcycles/js-lib/error';
|
|
@@ -822,7 +820,7 @@ export class JObject extends JBuilder {
|
|
|
822
820
|
/**
|
|
823
821
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
824
822
|
*/
|
|
825
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
823
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
826
824
|
dbEntity() {
|
|
827
825
|
return this.extend({
|
|
828
826
|
id: j.string(),
|
|
@@ -872,7 +870,7 @@ export class JObjectInfer extends JBuilder {
|
|
|
872
870
|
/**
|
|
873
871
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
874
872
|
*/
|
|
875
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
873
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
876
874
|
dbEntity() {
|
|
877
875
|
return this.extend({
|
|
878
876
|
id: j.string(),
|
package/dist/yargs/yargs.util.js
CHANGED
|
@@ -5,7 +5,7 @@ import { hideBin } from 'yargs/helpers';
|
|
|
5
5
|
* Quick yargs helper to make it work in esm.
|
|
6
6
|
* It also allows to not have yargs and `@types/yargs` to be declared as dependencies.
|
|
7
7
|
*/
|
|
8
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
8
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
9
9
|
export function _yargs() {
|
|
10
10
|
return yargs(hideBin(process.argv));
|
|
11
11
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturalcycles/nodejs-lib",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "15.
|
|
4
|
+
"version": "15.100.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@naturalcycles/js-lib": "^15",
|
|
7
7
|
"@standard-schema/spec": "^1",
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
"@types/yargs": "^16",
|
|
10
10
|
"ajv": "^8",
|
|
11
11
|
"ansis": "^4",
|
|
12
|
-
"dotenv": "^17",
|
|
13
12
|
"jsonwebtoken": "^9",
|
|
14
13
|
"lru-cache": "^11",
|
|
15
14
|
"tinyglobby": "^0.2",
|
package/src/fs/fs2.ts
CHANGED
package/src/fs/yaml2.ts
CHANGED
|
@@ -10,6 +10,8 @@ import type {
|
|
|
10
10
|
import { parse, stringify } from 'yaml'
|
|
11
11
|
import { fs2 } from './fs2.js'
|
|
12
12
|
|
|
13
|
+
export type YamlParseOptions = ParseOptions & DocumentOptions & SchemaOptions
|
|
14
|
+
|
|
13
15
|
export type YamlStringifyOptions = DocumentOptions &
|
|
14
16
|
SchemaOptions &
|
|
15
17
|
ParseOptions &
|
|
@@ -17,12 +19,12 @@ export type YamlStringifyOptions = DocumentOptions &
|
|
|
17
19
|
ToStringOptions
|
|
18
20
|
|
|
19
21
|
class Yaml2 {
|
|
20
|
-
readYaml<T = unknown>(filePath: string): T {
|
|
21
|
-
return parse(fs.readFileSync(filePath, 'utf8')) as T
|
|
22
|
+
readYaml<T = unknown>(filePath: string, opt?: YamlParseOptions): T {
|
|
23
|
+
return parse(fs.readFileSync(filePath, 'utf8'), opt) as T
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
async readYamlAsync<T = unknown>(filePath: string): Promise<T> {
|
|
25
|
-
return parse(await fsp.readFile(filePath, 'utf8')) as T
|
|
26
|
+
async readYamlAsync<T = unknown>(filePath: string, opt?: YamlParseOptions): Promise<T> {
|
|
27
|
+
return parse(await fsp.readFile(filePath, 'utf8'), opt) as T
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
writeYaml(filePath: string, data: any, opt?: YamlStringifyOptions): void {
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './buffer/buffer.util.js'
|
|
|
2
2
|
export * from './diff/tableDiff.js'
|
|
3
3
|
export * from './infra/process.util.js'
|
|
4
4
|
export * from './log/log.util.js'
|
|
5
|
+
export * from './node.util.js'
|
|
5
6
|
export * from './security/crypto.util.js'
|
|
6
7
|
export * from './security/hash.util.js'
|
|
7
8
|
export * from './security/id.util.js'
|
package/src/node.util.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if load was successful
|
|
3
|
+
*/
|
|
4
|
+
export function loadEnvFileIfExists(path = '.env'): boolean {
|
|
5
|
+
try {
|
|
6
|
+
process.loadEnvFile(path)
|
|
7
|
+
return true
|
|
8
|
+
} catch (err) {
|
|
9
|
+
if ((err as NodeJS.ErrnoException).code === 'ENOENT') {
|
|
10
|
+
// gracefully ignore that the file does not exist
|
|
11
|
+
return false
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
throw err
|
|
15
|
+
}
|
|
16
|
+
}
|
package/src/script/runScript.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import 'dotenv/config'
|
|
2
1
|
import os from 'node:os'
|
|
3
2
|
import type { CommonLogger } from '@naturalcycles/js-lib/log'
|
|
4
3
|
import { pDelay } from '@naturalcycles/js-lib/promise/pDelay.js'
|
|
5
4
|
import { setGlobalStringifyFunction } from '@naturalcycles/js-lib/string/stringify.js'
|
|
6
5
|
import type { AnyObject } from '@naturalcycles/js-lib/types'
|
|
7
6
|
import { dimGrey } from '../colors/colors.js'
|
|
7
|
+
import { loadEnvFileIfExists } from '../node.util.js'
|
|
8
8
|
import { inspectStringifyFn } from '../string/inspect.js'
|
|
9
9
|
|
|
10
|
+
loadEnvFileIfExists()
|
|
11
|
+
|
|
10
12
|
export interface RunScriptOptions {
|
|
11
13
|
/**
|
|
12
14
|
* @default false
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import fs from 'node:fs'
|
|
1
|
+
import fs, { globSync } from 'node:fs'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
import { _assert } from '@naturalcycles/js-lib/error/assert.js'
|
|
4
|
-
import { globSync } from 'tinyglobby'
|
|
5
4
|
import { dimGrey, yellow } from '../colors/colors.js'
|
|
6
5
|
import { fs2 } from '../fs/fs2.js'
|
|
7
6
|
import { decryptObject, decryptRandomIVBuffer } from '../security/crypto.util.js'
|
|
@@ -15,7 +15,7 @@ const secretMap: StringMap = {}
|
|
|
15
15
|
* Does NOT delete previous secrets from secretMap.
|
|
16
16
|
*/
|
|
17
17
|
export function loadSecretsFromEnv(): void {
|
|
18
|
-
//
|
|
18
|
+
// loadEnvFileIfExists() // ensure .env is loaded
|
|
19
19
|
|
|
20
20
|
const secrets: StringMap = {}
|
|
21
21
|
Object.keys(process.env)
|
|
@@ -50,12 +50,9 @@ export interface ReadableTyped<T = unknown> extends Readable {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// oxlint-disable no-unused-vars
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
54
53
|
export interface WritableTyped<_T> extends Writable {}
|
|
55
54
|
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
57
55
|
export interface TransformTyped<_IN = unknown, _OUT = unknown> extends Transform {}
|
|
58
|
-
// oxlint-enable
|
|
59
56
|
|
|
60
57
|
export interface TransformOptions {
|
|
61
58
|
/**
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* eslint-disable id-denylist */
|
|
2
|
-
// oxlint-disable max-lines
|
|
3
|
-
|
|
4
1
|
import type { ValidationFunction, ValidationFunctionResult } from '@naturalcycles/js-lib'
|
|
5
2
|
import {
|
|
6
3
|
_isObject,
|
|
@@ -1122,7 +1119,7 @@ export class JObject<OUT extends AnyObject, Opt extends boolean = false> extends
|
|
|
1122
1119
|
/**
|
|
1123
1120
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
1124
1121
|
*/
|
|
1125
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1122
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1126
1123
|
dbEntity() {
|
|
1127
1124
|
return this.extend({
|
|
1128
1125
|
id: j.string(),
|
|
@@ -1229,7 +1226,7 @@ export class JObjectInfer<
|
|
|
1229
1226
|
/**
|
|
1230
1227
|
* Extends the current schema with `id`, `created` and `updated` according to NC DB conventions.
|
|
1231
1228
|
*/
|
|
1232
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1229
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1233
1230
|
dbEntity() {
|
|
1234
1231
|
return this.extend({
|
|
1235
1232
|
id: j.string(),
|
package/src/yargs/yargs.util.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { hideBin } from 'yargs/helpers'
|
|
|
6
6
|
* Quick yargs helper to make it work in esm.
|
|
7
7
|
* It also allows to not have yargs and `@types/yargs` to be declared as dependencies.
|
|
8
8
|
*/
|
|
9
|
-
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
9
|
+
// oxlint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
10
10
|
export function _yargs() {
|
|
11
11
|
return yargs(hideBin(process.argv))
|
|
12
12
|
}
|