lemon-core 4.2.7 → 5.0.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/README.md +128 -2
- package/dist/common/lemon-error.d.ts +34 -0
- package/dist/common/lemon-error.js +52 -0
- package/dist/common/lemon-error.js.map +1 -0
- package/dist/controllers/general-api-controller.d.ts +7 -0
- package/dist/controllers/general-api-controller.js +7 -0
- package/dist/controllers/general-api-controller.js.map +1 -1
- package/dist/cores/api/api-service.js +10 -43
- package/dist/cores/api/api-service.js.map +1 -1
- package/dist/cores/aws/aws-kms-service.d.ts +13 -5
- package/dist/cores/aws/aws-kms-service.js +23 -9
- package/dist/cores/aws/aws-kms-service.js.map +1 -1
- package/dist/cores/aws/aws-s3-service.d.ts +30 -4
- package/dist/cores/aws/aws-s3-service.js +35 -15
- package/dist/cores/aws/aws-s3-service.js.map +1 -1
- package/dist/cores/aws/aws-sns-service.js +59 -9
- package/dist/cores/aws/aws-sns-service.js.map +1 -1
- package/dist/cores/aws/aws-sqs-service.d.ts +1 -1
- package/dist/cores/aws/aws-sqs-service.js +54 -12
- package/dist/cores/aws/aws-sqs-service.js.map +1 -1
- package/dist/cores/cache/cache-service.d.ts +10 -9
- package/dist/cores/cache/cache-service.js +9 -346
- package/dist/cores/cache/cache-service.js.map +1 -1
- package/dist/cores/config/config-service.d.ts +3 -15
- package/dist/cores/config/config-service.js +5 -34
- package/dist/cores/config/config-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-query-service.js +42 -2
- package/dist/cores/dynamo/dynamo-query-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-scan-service.js +42 -2
- package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-service.d.ts +45 -14
- package/dist/cores/dynamo/dynamo-service.js +48 -21
- package/dist/cores/dynamo/dynamo-service.js.map +1 -1
- package/dist/cores/dynamo/tools/expressions.js +32 -22
- package/dist/cores/dynamo/tools/expressions.js.map +1 -1
- package/dist/cores/dynamo/tools/lang.d.ts +30 -0
- package/dist/cores/dynamo/tools/lang.js +75 -0
- package/dist/cores/dynamo/tools/lang.js.map +1 -0
- package/dist/cores/dynamo/tools/query.js +20 -21
- package/dist/cores/dynamo/tools/query.js.map +1 -1
- package/dist/cores/dynamo/tools/scan.js +15 -16
- package/dist/cores/dynamo/tools/scan.js.map +1 -1
- package/dist/cores/dynamo/tools/serializer.js +40 -38
- package/dist/cores/dynamo/tools/serializer.js.map +1 -1
- package/dist/cores/dynamo/tools/utils.d.ts +6 -2
- package/dist/cores/dynamo/tools/utils.js +11 -8
- package/dist/cores/dynamo/tools/utils.js.map +1 -1
- package/dist/cores/elastic/elastic6-query-service.d.ts +1 -104
- package/dist/cores/elastic/elastic6-query-service.js +15 -489
- package/dist/cores/elastic/elastic6-query-service.js.map +1 -1
- package/dist/cores/elastic/elastic6-service.d.ts +1 -482
- package/dist/cores/elastic/elastic6-service.js +15 -1153
- package/dist/cores/elastic/elastic6-service.js.map +1 -1
- package/dist/cores/elastic/index.d.ts +2 -2
- package/dist/cores/elastic/index.js +3 -2
- package/dist/cores/elastic/index.js.map +1 -1
- package/dist/cores/elastic/os2-query-service.d.ts +104 -0
- package/dist/cores/elastic/os2-query-service.js +495 -0
- package/dist/cores/elastic/os2-query-service.js.map +1 -0
- package/dist/cores/elastic/os2-service.d.ts +372 -0
- package/dist/cores/elastic/os2-service.js +943 -0
- package/dist/cores/elastic/os2-service.js.map +1 -0
- package/dist/cores/index.d.ts +6 -1
- package/dist/cores/index.js +9 -2
- package/dist/cores/index.js.map +1 -1
- package/dist/cores/lambda/index.js +2 -1
- package/dist/cores/lambda/index.js.map +1 -1
- package/dist/cores/lambda/lambda-cron-handler.d.ts +1 -0
- package/dist/cores/lambda/lambda-cron-handler.js +5 -1
- package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +5 -4
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js +18 -5
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-handler.d.ts +22 -2
- package/dist/cores/lambda/lambda-handler.js +85 -23
- package/dist/cores/lambda/lambda-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sns-handler.d.ts +1 -0
- package/dist/cores/lambda/lambda-sns-handler.js +5 -0
- package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sqs-handler.d.ts +1 -0
- package/dist/cores/lambda/lambda-sqs-handler.js +20 -5
- package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-web-handler.d.ts +10 -0
- package/dist/cores/lambda/lambda-web-handler.js +107 -41
- package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
- package/dist/cores/protocol/aws-lambda-helper.js +58 -11
- package/dist/cores/protocol/aws-lambda-helper.js.map +1 -1
- package/dist/cores/protocol/index.js +3 -0
- package/dist/cores/protocol/index.js.map +1 -1
- package/dist/cores/protocol/protocol-service.d.ts +26 -5
- package/dist/cores/protocol/protocol-service.js +42 -12
- package/dist/cores/protocol/protocol-service.js.map +1 -1
- package/dist/cores/protocol/protocol-sign.d.ts +72 -0
- package/dist/cores/protocol/protocol-sign.js +194 -0
- package/dist/cores/protocol/protocol-sign.js.map +1 -0
- package/dist/cores/storage/index.d.ts +0 -1
- package/dist/cores/storage/index.js +0 -1
- package/dist/cores/storage/index.js.map +1 -1
- package/dist/cores/storage/model-fields.d.ts +7 -0
- package/dist/cores/storage/model-fields.js +21 -0
- package/dist/cores/storage/model-fields.js.map +1 -0
- package/dist/cores/storage/model-manager.d.ts +3 -2
- package/dist/cores/storage/model-manager.js +7 -3
- package/dist/cores/storage/model-manager.js.map +1 -1
- package/dist/engine/builder.js +20 -2
- package/dist/engine/builder.js.map +1 -1
- package/dist/engine/engine.d.ts +2 -2
- package/dist/engine/engine.js +4 -4
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/utilities.d.ts +11 -12
- package/dist/engine/utilities.js +30 -82
- package/dist/engine/utilities.js.map +1 -1
- package/dist/environ.d.ts +0 -6
- package/dist/environ.js +1 -12
- package/dist/environ.js.map +1 -1
- package/dist/esm/index.mjs +140 -0
- package/dist/esm/testing.mjs +12 -0
- package/dist/extended/abstract-service.d.ts +48 -139
- package/dist/extended/abstract-service.js +46 -382
- package/dist/extended/abstract-service.js.map +1 -1
- package/dist/extended/cores/abstract-controllers.d.ts +170 -0
- package/dist/extended/cores/abstract-controllers.js +533 -0
- package/dist/extended/cores/abstract-controllers.js.map +1 -0
- package/dist/extended/cores/abstract-rest-apis.d.ts +142 -0
- package/dist/extended/cores/abstract-rest-apis.js +203 -0
- package/dist/extended/cores/abstract-rest-apis.js.map +1 -0
- package/dist/extended/cores/abstract-services.d.ts +771 -0
- package/dist/extended/cores/abstract-services.js +2042 -0
- package/dist/extended/cores/abstract-services.js.map +1 -0
- package/dist/extended/cores/browser-cache.d.ts +2 -0
- package/dist/extended/cores/browser-cache.js +34 -0
- package/dist/extended/cores/browser-cache.js.map +1 -0
- package/dist/extended/cores/commons.d.ts +20 -0
- package/dist/extended/cores/commons.js +31 -0
- package/dist/extended/cores/commons.js.map +1 -0
- package/dist/extended/cores/index.d.ts +15 -0
- package/dist/extended/cores/index.js +32 -0
- package/dist/extended/cores/index.js.map +1 -0
- package/dist/extended/cores/types.d.ts +14 -0
- package/dist/extended/cores/types.js +31 -0
- package/dist/extended/cores/types.js.map +1 -0
- package/dist/helpers/helpers.d.ts +10 -5
- package/dist/helpers/helpers.js +46 -58
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/helpers/types.d.ts +22 -10
- package/dist/index.d.ts +4 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/http-fetch.d.ts +54 -0
- package/dist/lib/http-fetch.js +133 -0
- package/dist/lib/http-fetch.js.map +1 -0
- package/dist/lib/lazy.d.ts +22 -0
- package/dist/lib/lazy.js +54 -0
- package/dist/lib/lazy.js.map +1 -0
- package/dist/lib/perf.d.ts +35 -0
- package/dist/lib/perf.js +52 -0
- package/dist/lib/perf.js.map +1 -0
- package/dist/tools/tools.d.ts +15 -3
- package/dist/tools/tools.js +21 -4
- package/dist/tools/tools.js.map +1 -1
- package/package.json +96 -39
- package/dist/cores/storage/redis-storage-service.d.ts +0 -183
- package/dist/cores/storage/redis-storage-service.js +0 -377
- package/dist/cores/storage/redis-storage-service.js.map +0 -1
- package/dist/generated/field-registry.d.ts +0 -10
- package/dist/generated/field-registry.js +0 -17
- package/dist/generated/field-registry.js.map +0 -1
package/dist/lib/perf.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `lib/perf.ts`
|
|
4
|
+
* - (internal) performance checkpoint helpers for the `PERF` log lines (v5 B2-c, D40).
|
|
5
|
+
* - not exported by the `lib` barrel.
|
|
6
|
+
* - imports nothing from `engine/`: the caller passes its logger and namespace,
|
|
7
|
+
* so `tools/` and other engine-free files can use it too.
|
|
8
|
+
*
|
|
9
|
+
* line format: `log(ns, '>', label, '<ms> ms')` with one decimal, e.g. `PERF: > lazy-load <package> 12.3 ms`.
|
|
10
|
+
*
|
|
11
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
12
|
+
* @date 2026-10-27 v5 B2-c (D40)
|
|
13
|
+
*
|
|
14
|
+
* @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.measureAsync = exports.measure = exports.nowMs = void 0;
|
|
18
|
+
/**
|
|
19
|
+
* current monotonic time in ms (from `process.hrtime.bigint()`).
|
|
20
|
+
*/
|
|
21
|
+
const nowMs = () => Number(process.hrtime.bigint()) / 1e6;
|
|
22
|
+
exports.nowMs = nowMs;
|
|
23
|
+
// format the elapsed ms with one decimal.
|
|
24
|
+
const asMs = (t0) => `${((0, exports.nowMs)() - t0).toFixed(1)} ms`;
|
|
25
|
+
/**
|
|
26
|
+
* run `fn` and print one line with its elapsed ms; returns the result.
|
|
27
|
+
* - an exception is thrown as is, and no line is printed.
|
|
28
|
+
*
|
|
29
|
+
* @param log logger (e.g. `_inf`)
|
|
30
|
+
* @param ns namespace (e.g. `$U.NS('PERF', 'cyan')`)
|
|
31
|
+
* @param label checkpoint label (no values, no hosts)
|
|
32
|
+
* @param fn the work to measure
|
|
33
|
+
*/
|
|
34
|
+
const measure = (log, ns, label, fn) => {
|
|
35
|
+
const t0 = (0, exports.nowMs)();
|
|
36
|
+
const res = fn();
|
|
37
|
+
log(ns, '>', label, asMs(t0));
|
|
38
|
+
return res;
|
|
39
|
+
};
|
|
40
|
+
exports.measure = measure;
|
|
41
|
+
/**
|
|
42
|
+
* the async version of `measure()`: the line is printed after `fn()` resolves.
|
|
43
|
+
* - a rejection is passed through, and no line is printed.
|
|
44
|
+
*/
|
|
45
|
+
const measureAsync = async (log, ns, label, fn) => {
|
|
46
|
+
const t0 = (0, exports.nowMs)();
|
|
47
|
+
const res = await fn();
|
|
48
|
+
log(ns, '>', label, asMs(t0));
|
|
49
|
+
return res;
|
|
50
|
+
};
|
|
51
|
+
exports.measureAsync = measureAsync;
|
|
52
|
+
//# sourceMappingURL=perf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.js","sourceRoot":"","sources":["../../src/lib/perf.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAKH;;GAEG;AACI,MAAM,KAAK,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC;AAA5D,QAAA,KAAK,SAAuD;AAEzE,0CAA0C;AAC1C,MAAM,IAAI,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,GAAG,CAAC,IAAA,aAAK,GAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAEvE;;;;;;;;GAQG;AACI,MAAM,OAAO,GAAG,CAAI,GAAe,EAAE,EAAU,EAAE,KAAa,EAAE,EAAW,EAAK,EAAE;IACrF,MAAM,EAAE,GAAG,IAAA,aAAK,GAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB;AAEF;;;GAGG;AACI,MAAM,YAAY,GAAG,KAAK,EAAK,GAAe,EAAE,EAAU,EAAE,KAAa,EAAE,EAAoB,EAAc,EAAE;IAClH,MAAM,EAAE,GAAG,IAAA,aAAK,GAAE,CAAC;IACnB,MAAM,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB"}
|
package/dist/tools/tools.d.ts
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { CrendentialForAWS } from '../environ';
|
|
2
|
-
import { RuntimeConfigAwsCredentialIdentityProvider } from '@aws-sdk/types/dist-types/identity/AwsCredentialIdentity';
|
|
3
2
|
import { LemonEngine } from '../engine/types';
|
|
3
|
+
/**
|
|
4
|
+
* type: `AwsCredentialProvider`
|
|
5
|
+
* - the credentials provider (an async function) for the AWS SDK clients.
|
|
6
|
+
* - local structural type (v5 B2-c): no AWS SDK type in the published `.d.ts`.
|
|
7
|
+
* - not exported (no new root name); it shows in `.d.ts` through `AwsConfigParams.credentials`.
|
|
8
|
+
*/
|
|
9
|
+
type AwsCredentialProvider = (props?: Record<string, any>) => Promise<{
|
|
10
|
+
accessKeyId: string;
|
|
11
|
+
secretAccessKey: string;
|
|
12
|
+
sessionToken?: string;
|
|
13
|
+
expiration?: Date;
|
|
14
|
+
}>;
|
|
4
15
|
/**
|
|
5
16
|
* Check if the current environment is AWS Lambda
|
|
6
17
|
* @returns {boolean} - true if running in AWS Lambda environment
|
|
@@ -31,7 +42,7 @@ export interface AwsConfigParams {
|
|
|
31
42
|
/** AWS profile */
|
|
32
43
|
profile?: string;
|
|
33
44
|
/** AWS credentials provider */
|
|
34
|
-
credentials?:
|
|
45
|
+
credentials?: AwsCredentialProvider;
|
|
35
46
|
}
|
|
36
47
|
/**
|
|
37
48
|
* load config for aws sdk
|
|
@@ -48,5 +59,6 @@ export interface AwsConfigParams {
|
|
|
48
59
|
export declare const awsConfig: <T extends AwsConfigParams>($engine: LemonEngine,
|
|
49
60
|
/** params or region */
|
|
50
61
|
params?: T | string | (() => string)) => T & {
|
|
51
|
-
credentials?:
|
|
62
|
+
credentials?: AwsCredentialProvider;
|
|
52
63
|
};
|
|
64
|
+
export {};
|
package/dist/tools/tools.js
CHANGED
|
@@ -23,8 +23,24 @@ exports.awsConfig = exports.asyncCredentials = exports.loadDataYml = exports.loa
|
|
|
23
23
|
*/
|
|
24
24
|
const fs_1 = __importDefault(require("fs"));
|
|
25
25
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
26
|
-
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
27
26
|
const test_helper_1 = require("../common/test-helper");
|
|
27
|
+
const perf_1 = require("../lib/perf");
|
|
28
|
+
/**
|
|
29
|
+
* `@aws-sdk/credential-providers`, required on the first use (not at import; v5 B2-c, K6).
|
|
30
|
+
*/
|
|
31
|
+
let $credentialProviders = null;
|
|
32
|
+
// memoized sync loader; prints `PERF > lazy-load ...` only when an engine logger is given (`awsConfig`).
|
|
33
|
+
const loadCredentialProviders = ($engine) => {
|
|
34
|
+
if (!$credentialProviders) {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
36
|
+
const load = () => require('@aws-sdk/credential-providers');
|
|
37
|
+
$credentialProviders =
|
|
38
|
+
$engine?.inf && $engine?.U
|
|
39
|
+
? (0, perf_1.measure)($engine.inf, $engine.U.NS('PERF', 'cyan'), 'lazy-load @aws-sdk/credential-providers', load)
|
|
40
|
+
: load();
|
|
41
|
+
}
|
|
42
|
+
return $credentialProviders;
|
|
43
|
+
};
|
|
28
44
|
/**
|
|
29
45
|
* Check if the current environment is AWS Lambda
|
|
30
46
|
* @returns {boolean} - true if running in AWS Lambda environment
|
|
@@ -66,7 +82,8 @@ exports.loadDataYml = loadDataYml;
|
|
|
66
82
|
* @returns {Promise<CrendentialForAWS>} - AWS credentials
|
|
67
83
|
*/
|
|
68
84
|
const asyncCredentials = async (profile) => {
|
|
69
|
-
|
|
85
|
+
//* no logger here: `PERF` is printed only when `awsConfig()` loads the package first.
|
|
86
|
+
const provider = loadCredentialProviders().fromIni({ profile });
|
|
70
87
|
const $res = await provider();
|
|
71
88
|
return { ...$res, profile };
|
|
72
89
|
};
|
|
@@ -107,11 +124,11 @@ params) => {
|
|
|
107
124
|
});
|
|
108
125
|
if (typeof $conf.region === 'string' && !$conf.region)
|
|
109
126
|
throw new Error(`.region[${$conf.region}] is invalid (empty) - ${errScope}`);
|
|
110
|
-
//! load the credentials provider(async function).
|
|
127
|
+
//! load the credentials provider(async function); the package is loaded only when a profile is set.
|
|
111
128
|
const credentials = typeof $conf.credentials === 'function'
|
|
112
129
|
? $conf.credentials
|
|
113
130
|
: $conf.profile
|
|
114
|
-
? (
|
|
131
|
+
? loadCredentialProviders($engine).fromIni({ profile: $conf.profile })
|
|
115
132
|
: undefined;
|
|
116
133
|
return (0, test_helper_1.onlyDefined)({ ...$conf, credentials });
|
|
117
134
|
};
|
package/dist/tools/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,4CAAoB;AACpB,sDAA2B;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lemon-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Lemon Serverless Micro-Service Platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/esm/index.mjs",
|
|
11
|
+
"require": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./testing": {
|
|
15
|
+
"types": "./dist/common/test-helper.d.ts",
|
|
16
|
+
"import": "./dist/esm/testing.mjs",
|
|
17
|
+
"require": "./dist/common/test-helper.js",
|
|
18
|
+
"default": "./dist/common/test-helper.js"
|
|
19
|
+
},
|
|
20
|
+
"./dist/environ": {
|
|
21
|
+
"types": "./dist/environ.d.ts",
|
|
22
|
+
"import": "./dist/environ.js",
|
|
23
|
+
"require": "./dist/environ.js",
|
|
24
|
+
"default": "./dist/environ.js"
|
|
25
|
+
},
|
|
26
|
+
"./dist/cores/lambda/lambda-web-handler": {
|
|
27
|
+
"types": "./dist/cores/lambda/lambda-web-handler.d.ts",
|
|
28
|
+
"import": "./dist/cores/lambda/lambda-web-handler.js",
|
|
29
|
+
"require": "./dist/cores/lambda/lambda-web-handler.js",
|
|
30
|
+
"default": "./dist/cores/lambda/lambda-web-handler.js"
|
|
31
|
+
},
|
|
32
|
+
"./dist/extended/cores": {
|
|
33
|
+
"types": "./dist/extended/cores/index.d.ts",
|
|
34
|
+
"import": "./dist/extended/cores/index.js",
|
|
35
|
+
"require": "./dist/extended/cores/index.js",
|
|
36
|
+
"default": "./dist/extended/cores/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./dist/*": {
|
|
39
|
+
"types": "./dist/*.d.ts",
|
|
40
|
+
"import": "./dist/*.js",
|
|
41
|
+
"require": "./dist/*.js",
|
|
42
|
+
"default": "./dist/*.js"
|
|
43
|
+
},
|
|
44
|
+
"./package.json": "./package.json"
|
|
45
|
+
},
|
|
7
46
|
"scripts": {
|
|
8
|
-
"build": "npm run
|
|
47
|
+
"build": "npm run build-ts && node scripts/gen-esm-wrapper.cjs",
|
|
9
48
|
"build-ts": "tsc -v && tsc",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
49
|
+
"!v5": "------- v5 packaging gates -----",
|
|
50
|
+
"esm:smoke": "LS=1 node scripts/esm-smoke.mjs",
|
|
51
|
+
"api:names": "node scripts/api-names.cjs --out -",
|
|
52
|
+
"api:check": "node scripts/api-check.cjs",
|
|
53
|
+
"dup:check": "node scripts/dup-decls.cjs",
|
|
54
|
+
"l1l2:probe": "node scripts/l1l2-probe.cjs",
|
|
14
55
|
"watch-ts": "tsc -w",
|
|
15
|
-
"doc": "npm run doc:html && open dist/docs/index.html",
|
|
16
|
-
"doc:html": "typedoc src/ --exclude **/*.spec.ts --out dist/docs",
|
|
17
|
-
"doc:publish": "npm run doc:html && gh-pages -m \"docs(gh-pages): publish gh-pages via typedoc\" -d dist/docs",
|
|
18
56
|
"lint": "tsc --noEmit && eslint '*/**/*.{js,ts,jsx,tsx}' --fix",
|
|
19
57
|
"format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
|
|
20
58
|
"!test": "------- run self-test with vitest -----",
|
|
@@ -22,7 +60,7 @@
|
|
|
22
60
|
"test.lemon": "ENV=lemon npm run test",
|
|
23
61
|
"test:dev": "LS=1 vitest",
|
|
24
62
|
"!test:watch": "---- custom test with profile -----",
|
|
25
|
-
"test:watch": "
|
|
63
|
+
"test:watch": "LS=1 vitest",
|
|
26
64
|
"test:watch.lemon": "ENV=lemon npm run test:watch",
|
|
27
65
|
"!prepare": "------- run self-test with vitest -----",
|
|
28
66
|
"prepare": "npm run build",
|
|
@@ -52,72 +90,91 @@
|
|
|
52
90
|
"license": "MIT",
|
|
53
91
|
"dependencies": {
|
|
54
92
|
"@aws-sdk/client-dynamodb": "^3.971.0",
|
|
55
|
-
"@aws-sdk/client-dynamodb-streams": "^3.971.0",
|
|
56
|
-
"@aws-sdk/client-iam": "^3.971.0",
|
|
57
|
-
"@aws-sdk/client-kms": "^3.971.0",
|
|
58
|
-
"@aws-sdk/client-lambda": "^3.971.0",
|
|
59
|
-
"@aws-sdk/client-s3": "^3.971.0",
|
|
60
|
-
"@aws-sdk/client-sns": "^3.971.0",
|
|
61
|
-
"@aws-sdk/client-sqs": "^3.971.0",
|
|
62
|
-
"@aws-sdk/client-sts": "^3.971.0",
|
|
63
|
-
"@aws-sdk/credential-providers": "^3.971.0",
|
|
64
93
|
"@aws-sdk/lib-dynamodb": "^3.971.0",
|
|
65
|
-
"@
|
|
94
|
+
"@opensearch-project/opensearch": "^3.9.0",
|
|
66
95
|
"@types/aws-lambda": "^8.10.62",
|
|
67
|
-
"@types/ioredis": "^4.28.10",
|
|
68
96
|
"@types/jsonwebtoken": "^8.5.9",
|
|
69
97
|
"async": "^3.2.4",
|
|
70
98
|
"crypto-js": "^4.2.0",
|
|
71
|
-
"ioredis": "^5.2.3",
|
|
72
99
|
"js-yaml": "^4.1.1",
|
|
73
100
|
"jsonwebtoken": "^9.0.3",
|
|
74
|
-
"lemon-model": "^
|
|
75
|
-
"lodash": "^4.17.21",
|
|
76
|
-
"memcached": "^2.2.2",
|
|
101
|
+
"lemon-model": "^5.0.0",
|
|
77
102
|
"mime-types": "^3.0.2",
|
|
78
103
|
"node-cache": "^5.1.2",
|
|
79
104
|
"qs": "^6.15.1",
|
|
80
105
|
"query-string": "^7.1.3",
|
|
81
|
-
"request": "^2.88.2",
|
|
82
106
|
"source-map-support": "^0.5.21",
|
|
83
107
|
"uuid": "^9.0.1"
|
|
84
108
|
},
|
|
85
109
|
"devDependencies": {
|
|
86
|
-
"@aws-sdk/
|
|
87
|
-
"@
|
|
110
|
+
"@aws-sdk/client-iam": "^3.971.0",
|
|
111
|
+
"@aws-sdk/client-kms": "^3.971.0",
|
|
112
|
+
"@aws-sdk/client-lambda": "^3.971.0",
|
|
113
|
+
"@aws-sdk/client-s3": "^3.971.0",
|
|
114
|
+
"@aws-sdk/client-sns": "^3.971.0",
|
|
115
|
+
"@aws-sdk/client-sqs": "^3.971.0",
|
|
116
|
+
"@aws-sdk/client-sts": "^3.971.0",
|
|
117
|
+
"@aws-sdk/credential-providers": "^3.971.0",
|
|
88
118
|
"@types/async": "^3.2.15",
|
|
89
119
|
"@types/crypto-js": "^4.2.2",
|
|
90
120
|
"@types/js-yaml": "^3.12.5",
|
|
91
|
-
"@types/lodash": "^4.17.16",
|
|
92
|
-
"@types/memcached": "^2.2.6",
|
|
93
121
|
"@types/mime-types": "^2.1.0",
|
|
94
122
|
"@types/node": "^24.12.2",
|
|
95
123
|
"@types/qs": "^6.14.0",
|
|
96
|
-
"@types/request": "^2.48.8",
|
|
97
124
|
"@types/supertest": "^2.0.10",
|
|
98
125
|
"@types/uuid": "^8.3.4",
|
|
99
126
|
"@typescript-eslint/eslint-plugin": "^5.15.0",
|
|
100
127
|
"@typescript-eslint/parser": "^5.15.0",
|
|
101
128
|
"@vitest/coverage-v8": "^4.1.4",
|
|
102
|
-
"codecov": "^3.7.2",
|
|
103
129
|
"concurrently": "^5.3.0",
|
|
104
|
-
"dotenv": "^8.2.0",
|
|
105
130
|
"eslint": "^8.23.1",
|
|
106
131
|
"eslint-config-prettier": "^8.5.0",
|
|
107
132
|
"eslint-plugin-prettier": "^4.0.0",
|
|
108
133
|
"faker": "^4.1.0",
|
|
109
|
-
"
|
|
110
|
-
"husky": "^8.0.3",
|
|
111
|
-
"lemon-devkit": "^0.0.11",
|
|
134
|
+
"lemon-devkit": "^0.2.1",
|
|
112
135
|
"lint-staged": "^13.1.0",
|
|
113
136
|
"prettier": "^2.7.1",
|
|
114
|
-
"
|
|
115
|
-
"supertest": "^4.0.2",
|
|
137
|
+
"supertest": "^7.3.1",
|
|
116
138
|
"ts-node": "^8.10.2",
|
|
117
|
-
"typedoc": "^0.28.19",
|
|
118
139
|
"typescript": "^5.9.3",
|
|
119
140
|
"vitest": "^4.1.4"
|
|
120
141
|
},
|
|
142
|
+
"peerDependencies": {
|
|
143
|
+
"@aws-sdk/client-iam": "^3.971.0",
|
|
144
|
+
"@aws-sdk/client-kms": "^3.971.0",
|
|
145
|
+
"@aws-sdk/client-lambda": "^3.971.0",
|
|
146
|
+
"@aws-sdk/client-s3": "^3.971.0",
|
|
147
|
+
"@aws-sdk/client-sns": "^3.971.0",
|
|
148
|
+
"@aws-sdk/client-sqs": "^3.971.0",
|
|
149
|
+
"@aws-sdk/client-sts": "^3.971.0",
|
|
150
|
+
"@aws-sdk/credential-providers": "^3.971.0"
|
|
151
|
+
},
|
|
152
|
+
"peerDependenciesMeta": {
|
|
153
|
+
"@aws-sdk/client-iam": {
|
|
154
|
+
"optional": true
|
|
155
|
+
},
|
|
156
|
+
"@aws-sdk/client-kms": {
|
|
157
|
+
"optional": true
|
|
158
|
+
},
|
|
159
|
+
"@aws-sdk/client-lambda": {
|
|
160
|
+
"optional": true
|
|
161
|
+
},
|
|
162
|
+
"@aws-sdk/client-s3": {
|
|
163
|
+
"optional": true
|
|
164
|
+
},
|
|
165
|
+
"@aws-sdk/client-sns": {
|
|
166
|
+
"optional": true
|
|
167
|
+
},
|
|
168
|
+
"@aws-sdk/client-sqs": {
|
|
169
|
+
"optional": true
|
|
170
|
+
},
|
|
171
|
+
"@aws-sdk/client-sts": {
|
|
172
|
+
"optional": true
|
|
173
|
+
},
|
|
174
|
+
"@aws-sdk/credential-providers": {
|
|
175
|
+
"optional": true
|
|
176
|
+
}
|
|
177
|
+
},
|
|
121
178
|
"private": false,
|
|
122
179
|
"repository": {
|
|
123
180
|
"type": "git",
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `redis-storage-services.ts`
|
|
3
|
-
* - storage implementation on redis backend
|
|
4
|
-
*
|
|
5
|
-
* @author Tim Hong <tim@lemoncloud.io>
|
|
6
|
-
* @date 2020-12-08 initial version
|
|
7
|
-
*
|
|
8
|
-
* @copyright (C) lemoncloud.io 2020 - All Rights Reserved.
|
|
9
|
-
*/
|
|
10
|
-
import { Redis } from 'ioredis';
|
|
11
|
-
import { StorageService, StorageModel } from './storage-service';
|
|
12
|
-
/** ********************************************************************************************************************
|
|
13
|
-
* Exported Types
|
|
14
|
-
** ********************************************************************************************************************/
|
|
15
|
-
/**
|
|
16
|
-
* type `RedisOptions`
|
|
17
|
-
*/
|
|
18
|
-
export interface RedisOptions {
|
|
19
|
-
/**
|
|
20
|
-
* (optional) cache server endpoint
|
|
21
|
-
*/
|
|
22
|
-
endpoint?: string;
|
|
23
|
-
/**
|
|
24
|
-
* (optional) virtual table name used as key prefix
|
|
25
|
-
*/
|
|
26
|
-
tableName: string | number;
|
|
27
|
-
/**
|
|
28
|
-
* (optional) default time to live of a model in seconds. 0 for unlimited (default: 0)
|
|
29
|
-
*/
|
|
30
|
-
defTimeout?: number;
|
|
31
|
-
}
|
|
32
|
-
/** ********************************************************************************************************************
|
|
33
|
-
* Exported Class
|
|
34
|
-
** ********************************************************************************************************************/
|
|
35
|
-
/**
|
|
36
|
-
* class `RedisStorageService`
|
|
37
|
-
*/
|
|
38
|
-
export declare class RedisStorageService<T extends StorageModel> implements StorageService<T> {
|
|
39
|
-
/**
|
|
40
|
-
* Environment variable name for redis server endpoint
|
|
41
|
-
* @static
|
|
42
|
-
*/
|
|
43
|
-
static readonly ENV_REDIS_ENDPOINT = "MY_REDIS_ENDPOINT";
|
|
44
|
-
/**
|
|
45
|
-
* Maximum retry count of check-and-save behavior
|
|
46
|
-
* @static
|
|
47
|
-
*/
|
|
48
|
-
static readonly CAS_MAX_RETRIES = 5;
|
|
49
|
-
/**
|
|
50
|
-
* ioredis client
|
|
51
|
-
* @protected
|
|
52
|
-
*/
|
|
53
|
-
protected readonly redis: Redis;
|
|
54
|
-
/**
|
|
55
|
-
* Virtual table name
|
|
56
|
-
* @private
|
|
57
|
-
*/
|
|
58
|
-
readonly tableName: string;
|
|
59
|
-
/**
|
|
60
|
-
* Default time to live of a model
|
|
61
|
-
* @private
|
|
62
|
-
*/
|
|
63
|
-
readonly ttl: number;
|
|
64
|
-
/**
|
|
65
|
-
* Public constructor
|
|
66
|
-
*
|
|
67
|
-
* @options redis options
|
|
68
|
-
*/
|
|
69
|
-
constructor(options: RedisOptions);
|
|
70
|
-
/**
|
|
71
|
-
* Say hello
|
|
72
|
-
*/
|
|
73
|
-
hello(): string;
|
|
74
|
-
/**
|
|
75
|
-
* Disconnect from redis
|
|
76
|
-
*/
|
|
77
|
-
quit(): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Read model by id
|
|
80
|
-
*
|
|
81
|
-
* @param id
|
|
82
|
-
*/
|
|
83
|
-
read(id: string): Promise<T>;
|
|
84
|
-
/**
|
|
85
|
-
* Read model or create if id does not exist
|
|
86
|
-
*
|
|
87
|
-
* @param id
|
|
88
|
-
* @param model
|
|
89
|
-
*/
|
|
90
|
-
readOrCreate(id: string, model: T): Promise<T>;
|
|
91
|
-
/**
|
|
92
|
-
* Create model and overwrite if id exists
|
|
93
|
-
*
|
|
94
|
-
* @param id
|
|
95
|
-
* @param model
|
|
96
|
-
*/
|
|
97
|
-
save(id: string, model: T): Promise<T>;
|
|
98
|
-
/**
|
|
99
|
-
* Update existing model and create if id does not exist
|
|
100
|
-
* @param id
|
|
101
|
-
* @param update model to update
|
|
102
|
-
* @param increment (optional) model to increment
|
|
103
|
-
*/
|
|
104
|
-
update(id: string, update: T, increment?: T): Promise<T>;
|
|
105
|
-
/**
|
|
106
|
-
* Increment the integer value of a key
|
|
107
|
-
*
|
|
108
|
-
* @param id
|
|
109
|
-
* @param increment model to increment
|
|
110
|
-
* @param update (optional) model to update
|
|
111
|
-
*/
|
|
112
|
-
increment(id: string, increment: T, update?: T): Promise<T>;
|
|
113
|
-
/**
|
|
114
|
-
* Delete a key
|
|
115
|
-
*
|
|
116
|
-
* @param id
|
|
117
|
-
* @return true on success
|
|
118
|
-
*/
|
|
119
|
-
delete(id: string): Promise<T>;
|
|
120
|
-
/**
|
|
121
|
-
* Get redis key from id
|
|
122
|
-
* @param id
|
|
123
|
-
* @protected
|
|
124
|
-
*/
|
|
125
|
-
asKey(id: string): string;
|
|
126
|
-
/**
|
|
127
|
-
* Serialize model into internal data
|
|
128
|
-
* @param model
|
|
129
|
-
* @protected
|
|
130
|
-
*/
|
|
131
|
-
serialize(model: T): Record<string, string>;
|
|
132
|
-
/**
|
|
133
|
-
* Deserialize internal data into model
|
|
134
|
-
* @param data
|
|
135
|
-
* @protected
|
|
136
|
-
*/
|
|
137
|
-
deserialize(data: Record<string, string>): T;
|
|
138
|
-
/**
|
|
139
|
-
* Update key w/ check-and-save behavior and retries
|
|
140
|
-
* @param id
|
|
141
|
-
* @param update (optional) model to update
|
|
142
|
-
* @param increment (optional) model to increment
|
|
143
|
-
* @private
|
|
144
|
-
*/
|
|
145
|
-
private updateCAS;
|
|
146
|
-
/**
|
|
147
|
-
* Prepare new model - original model + update + increment
|
|
148
|
-
* @param orig
|
|
149
|
-
* @param update
|
|
150
|
-
* @param increment
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
private prepareUpdatedModel;
|
|
154
|
-
/**
|
|
155
|
-
* Check transaction results and throw if error occurred
|
|
156
|
-
* @param results transaction pipeline execution results
|
|
157
|
-
* @private
|
|
158
|
-
*/
|
|
159
|
-
private static throwIfTransactionError;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* class `DummyRedisStorageService`
|
|
163
|
-
* - Use local redis server and non-default logical database
|
|
164
|
-
*/
|
|
165
|
-
export declare class DummyRedisStorageService<T extends StorageModel> extends RedisStorageService<T> {
|
|
166
|
-
/**
|
|
167
|
-
* Database index. Each DummyRedisStorageService uses different logical database.
|
|
168
|
-
* @private
|
|
169
|
-
*/
|
|
170
|
-
private static dbIndex;
|
|
171
|
-
/**
|
|
172
|
-
* Public constructor
|
|
173
|
-
*/
|
|
174
|
-
constructor();
|
|
175
|
-
/**
|
|
176
|
-
* Say hello
|
|
177
|
-
*/
|
|
178
|
-
hello(): string;
|
|
179
|
-
/**
|
|
180
|
-
* Delete all data in database
|
|
181
|
-
*/
|
|
182
|
-
truncate(): Promise<void>;
|
|
183
|
-
}
|