lemon-core 5.0.7 → 5.0.9
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 +16 -8
- package/dist/cores/protocol/protocol-relay.d.ts +13 -2
- package/dist/cores/protocol/protocol-relay.js +23 -5
- package/dist/cores/protocol/protocol-relay.js.map +1 -1
- package/dist/esm/model.mjs +61 -0
- package/dist/extended/cores/abstract-controllers.d.ts +30 -1
- package/dist/extended/cores/abstract-controllers.js +78 -5
- package/dist/extended/cores/abstract-controllers.js.map +1 -1
- package/dist/extended/cores/abstract-services.d.ts +55 -2
- package/dist/extended/cores/abstract-services.js +84 -4
- package/dist/extended/cores/abstract-services.js.map +1 -1
- package/dist/model.d.ts +18 -0
- package/dist/model.js +36 -0
- package/dist/model.js.map +1 -0
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Bootloader for serverless micro-services on AWS Lambda: one function, several event sources, an engine with modules, a protocol service.
|
|
8
8
|
This README is the entry point for people and AI agents; every path and command below is in this repo. `§` refers to `HOW_TO_UPGRADE_V5.md`.
|
|
9
|
-
v5 status: npm `latest` is `5.0.
|
|
9
|
+
v5 status: npm `latest` is `5.0.8` (2026-10-30; B15 + lemon-model 5.0.2). The `v5` branch holds all 5.x work; `develop` is the default branch.
|
|
10
10
|
`CONTRIBUTING.md` describes the `develop` flow; 5.x changes are merged into `v5` until it lands on `develop`.
|
|
11
11
|
|
|
12
12
|
## At a glance
|
|
@@ -16,10 +16,10 @@ v5 status: npm `latest` is `5.0.4`. The `v5` branch holds all 5.x work, unreleas
|
|
|
16
16
|
| Runtime | Node `>=24.0.0` (`engines.node`), `.nvmrc` `24.15.0` |
|
|
17
17
|
| Build | TypeScript `^5.9.3`. `npm run build` = `build-ts` (`tsc`) + `scripts/gen-esm-wrapper.cjs` |
|
|
18
18
|
| Tests | vitest `^4.1.4`: `src/**/*.spec.ts`, `bin/**/*.spec.mjs` (`vitest.config.ts`) |
|
|
19
|
-
| Formats | CJS `dist/` + ESM `dist/esm/*.mjs`. `exports`: `.`, `./testing`, `./dist/environ`, `./dist/cores/lambda/lambda-web-handler`, `./dist/extended/cores`, `./dist/*` (until v6), `./package.json` |
|
|
19
|
+
| Formats | CJS `dist/` + ESM `dist/esm/*.mjs`. `exports`: `.`, `./testing`, `./model` (unreleased, B16), `./dist/environ`, `./dist/cores/lambda/lambda-web-handler`, `./dist/extended/cores`, `./dist/*` (until v6), `./package.json` |
|
|
20
20
|
| Dependencies | `@aws-sdk/client-dynamodb, @aws-sdk/lib-dynamodb, @opensearch-project/opensearch, @smithy/signature-v4, @types/aws-lambda, @types/jsonwebtoken, async, crypto-js, js-yaml, jsonwebtoken, lemon-model, mime-types, node-cache, qs, source-map-support` |
|
|
21
21
|
| Optional peers | 8 AWS SDK packages `^3.1159.0`, loaded on first use. `typescript` `>=4.7` (CLI) |
|
|
22
|
-
| Published | `files`: `dist/**/*`, `bin/lemon-fields-types.mjs`, `bin/lib/fields-types.mjs`. CLI `lemon-fields-types` (
|
|
22
|
+
| Published | `files`: `dist/**/*`, `bin/lemon-fields-types.mjs`, `bin/lib/fields-types.mjs`. CLI `lemon-fields-types` (since 5.0.5; see § 13.5) |
|
|
23
23
|
| Branches | `develop` is the default branch (its `version` is 4.3.0). `v5` holds the 5.x work. `master` was last updated in 2024 (3.2.9). |
|
|
24
24
|
| Version | The `version` field of `package.json`. |
|
|
25
25
|
|
|
@@ -33,12 +33,12 @@ v5 status: npm `latest` is `5.0.4`. The `v5` branch holds all 5.x work, unreleas
|
|
|
33
33
|
| `src/extended/` | `CoreService`, `ManagerProxy`; `cores/`: template layer (`MyCoreService`, `checkFieldsAdmin()`) | Developer |
|
|
34
34
|
| `src/controllers/`, `tools/`, `helpers/` | Controllers, `express`, `$T`, `$protocol()` | Developer |
|
|
35
35
|
| `src/lib/` | Internal: `safe-json`, `log-mask`, `qs-compat`, `http-fetch`, `lazy`, `perf`. `lib` barrel: `dynamodb-value` only | Developer. Internal; never re-exported from a barrel |
|
|
36
|
-
| `src/common/test-helper.ts`, `src/environ.ts` | Sub-paths `lemon-core/testing`, `lemon-core/dist/environ` | Rarely;
|
|
36
|
+
| `src/common/test-helper.ts`, `src/environ.ts`, `src/model.ts` | Sub-paths `lemon-core/testing`, `lemon-core/dist/environ`, `lemon-core/model` (B16) | Rarely; all are published sub-paths |
|
|
37
37
|
| `bin/` | `lemon-fields-types` CLI, `lib/` logic, spec, fixtures | Developer |
|
|
38
38
|
| `scripts/` | Build and API gates, lazy-load probes | Developer |
|
|
39
39
|
| `etc/api-names.v4.txt`, `etc/api-names.allow.txt` | v4 public-name baseline; allowed `+Name`/`-Name` | The baseline stays; add lines to the allow list only |
|
|
40
40
|
| `env/` | Configuration profiles | **Agents do not open it** |
|
|
41
|
-
| `docs/v5/`, `docs/specs/` | v5 design record (B0–
|
|
41
|
+
| `docs/v5/`, `docs/specs/` | v5 design record (B0–B14); `$T`/`$U` specs | Updated with the change they describe |
|
|
42
42
|
| `dist/`, `coverage/` | Build and test output, ignored by git | **Never edited by hand** |
|
|
43
43
|
| `.github/workflows/` | `docgen.yaml`: typedoc on push to `develop`. No test job | A person |
|
|
44
44
|
|
|
@@ -85,6 +85,7 @@ await $lemon.engine.initialize(); // resolves once every module's initModule() s
|
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
ESM `import` gives the same instances (§ 2). Specs use `lemon-core/testing` (§ 4).
|
|
88
|
+
Since 5.0.9, lemon-model names that are not on the root come from `import { field, fieldsOf } from 'lemon-core/model';` — do not declare `lemon-model` yourself (§ 16).
|
|
88
89
|
|
|
89
90
|
### 3. Engine module registration — the "3-piece set"
|
|
90
91
|
|
|
@@ -171,7 +172,7 @@ npm audit --omit=dev # found 0 vulnerabilities
|
|
|
171
172
|
|
|
172
173
|
| Document | Content |
|
|
173
174
|
|---|---|
|
|
174
|
-
| [HOW_TO_UPGRADE_V5.md](HOW_TO_UPGRADE_V5.md) | § 1 Node 24 · § 2 ESM · § 3 `exports` · § 4 testing · § 5 modules · § 6 deps · § 7 OpenSearch · § 8 AWS SDK · § 9 L1/L2 · § 10 `@field()` · § 11 trust · § 12 `src/cores/` · § 13 B10 · § 14 audit |
|
|
175
|
+
| [HOW_TO_UPGRADE_V5.md](HOW_TO_UPGRADE_V5.md) | § 1 Node 24 · § 2 ESM · § 3 `exports` · § 4 testing · § 5 modules · § 6 deps · § 7 OpenSearch · § 8 AWS SDK · § 9 L1/L2 · § 10 `@field()` · § 11 trust · § 12 `src/cores/` · § 13 B10 · § 14 audit · § 15 channel/relay (B14) · § 16 `lemon-core/model` (B16) |
|
|
175
176
|
| [HOW_TO_UPGRADE_V4.md](HOW_TO_UPGRADE_V4.md) | v3 → v4 (historical) |
|
|
176
177
|
| [baseline.md](docs/v5/baseline.md) | B0-a baseline: link state, boot, run modes, test counts, public names |
|
|
177
178
|
| [B0-local-harness.md](docs/v5/B0-local-harness.md) | B0 local harness: the local run path as the verification gate |
|
|
@@ -199,10 +200,14 @@ npm audit --omit=dev # found 0 vulnerabilities
|
|
|
199
200
|
| [B10-verify-enforce.md](docs/v5/B10-verify-enforce.md) | B10: runbook for switching to `PROTOCOL_VERIFY=enforce` (Korean) |
|
|
200
201
|
| [B11-deps-audit.md](docs/v5/B11-deps-audit.md) | B11: `npm audit --omit=dev` 0, `query-string` → `qs`, `uuid` removed (Korean) |
|
|
201
202
|
| [B13-access-policy.md](docs/v5/B13-access-policy.md) | B13: default data-access policy of `AbstractCRUDController` (`AccessPolicy`, `canDo` scopes) |
|
|
203
|
+
| [B14-relay-context.md](docs/v5/B14-relay-context.md) | B14 plan: `context.channel`, the signed relay `x-lemon-relay`, trace, `x-protocol-context` deprecation (Korean) |
|
|
204
|
+
| [B14-relay-context-impl.md](docs/v5/B14-relay-context-impl.md) | B14 implementation record (WP1–WP3): lemon-model `channel`/`trace`, `protocol-relay.ts`, entry changes (Korean) |
|
|
205
|
+
| [B15-security.md](docs/v5/B15-security.md) | B15: cross-cloud `cid`, list `view`, internal admin, policy keys `internal`/`cross` |
|
|
206
|
+
| [B16-model-subpath.md](docs/v5/B16-model-subpath.md) | B16: sub-path `lemon-core/model` (all of lemon-model), exact lemon-model pin, consumer rule |
|
|
202
207
|
| [docs/specs/](docs/specs/) | `$T`, `$U` characterization specs |
|
|
203
208
|
| [docs/header-identity-token.md](docs/header-identity-token.md) | Identity token header |
|
|
204
209
|
| [CONTRIBUTING](CONTRIBUTING.md), [SECURITY](SECURITY.md), [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) | PR process; supported versions; conduct |
|
|
205
|
-
| [CHANGELOG.md](CHANGELOG.md) |
|
|
210
|
+
| [CHANGELOG.md](CHANGELOG.md) | 5.0.5–5.0.8 entries (B10, B13, B14, B15), then stops at 1.2.0 (2019); see VERSION INFO |
|
|
206
211
|
|
|
207
212
|
## Contribution
|
|
208
213
|
|
|
@@ -220,7 +225,10 @@ See [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md)
|
|
|
220
225
|
|
|
221
226
|
| Version | Description
|
|
222
227
|
|-- |--
|
|
223
|
-
|
|
|
228
|
+
| 5.0.8 | B15 security follow-up (§ 11.7, § 15.2); lemon-model `^5.0.2`.
|
|
229
|
+
| 5.0.7 | Re-publish of 5.0.6 (same source).
|
|
230
|
+
| 5.0.6 | B13 default data-access policy of `AbstractCRUDController` (§ 11.7); B14 `context.channel`, signed relay `x-lemon-relay`, `TRACE` line, `x-protocol-context` deprecated (§ 15); README rewritten as the v5 entry point; lemon-model `^5.0.1`.
|
|
231
|
+
| 5.0.5 | B10: `getHelloArn()` account (§ 13.1), circular-safe reports (§ 13.2), masked header logs (§ 13.3), enforce runbook + masked config log (§ 13.4), `lemon-fields-types` (§ 13.5); `LOCAL_TRANSPORT=mock` opt-in (§ 11.3.1).
|
|
224
232
|
| 5.0.4 | `context.source` carries the first request path; `npm audit --omit=dev` 0 (`qs`, `randomUUID()`, AWS SDK `^3.1159.0`).
|
|
225
233
|
| 5.0.3 | KMS `Decrypt` via SigV4 + Node `https`, without `@aws-sdk/client-kms` on the boot path.
|
|
226
234
|
| 5.0.2 | per-request `PERF` lines (`request`, `handle`).
|
|
@@ -9,7 +9,7 @@ export declare const RELAY_PREFIX = "r1.";
|
|
|
9
9
|
/** max bytes of a relay value (the receiver rejects a larger one) */
|
|
10
10
|
export declare const RELAY_MAX_BYTES = 4096;
|
|
11
11
|
/** identity fields that cross a hop (whitelist). nothing else of `NextIdentity` is relayed */
|
|
12
|
-
export declare const RELAY_IDENTITY_FIELDS: readonly ["sid", "uid", "gid", "roles", "identityId", "lang"];
|
|
12
|
+
export declare const RELAY_IDENTITY_FIELDS: readonly ["sid", "uid", "gid", "roles", "identityId", "lang", "cid", "aid"];
|
|
13
13
|
/** env name of the send mode of the legacy context (`off` | `send`) */
|
|
14
14
|
export declare const PROTOCOL_LEGACY_CONTEXT = "PROTOCOL_LEGACY_CONTEXT";
|
|
15
15
|
/** env name of the receive mode of the legacy context (`accept` | `warn` | `reject`) */
|
|
@@ -34,6 +34,10 @@ export interface RelayIdentity {
|
|
|
34
34
|
roles?: string[];
|
|
35
35
|
identityId?: string;
|
|
36
36
|
lang?: string;
|
|
37
|
+
/** (optional) v5 B15: cloud-id (= the caller's account number); empty = the same cloud */
|
|
38
|
+
cid?: string;
|
|
39
|
+
/** (optional) v5 B15: auth-id (= id in `AuthModel`), as `IdentityToken.aid` */
|
|
40
|
+
aid?: string;
|
|
37
41
|
}
|
|
38
42
|
/** the relay JSON (`r1.` payload) */
|
|
39
43
|
export interface ProtocolRelay {
|
|
@@ -113,8 +117,15 @@ export declare const acceptLegacy: (transport: string, legacy?: NextContext) =>
|
|
|
113
117
|
/** one `PROTOCOL deprecated json identity (<transport>)` line (not in `accept`). the behaviour is unchanged */
|
|
114
118
|
export declare const warnJsonIdentity: (transport: string) => void;
|
|
115
119
|
/**
|
|
116
|
-
* the
|
|
120
|
+
* v5 B15: true if the identity of the context comes from another cloud (SPEC § 15.1).
|
|
121
|
+
* - `identity.cid` (the caller's cloud-id) and `context.accountId` (the receiver's own account, B14) are both
|
|
122
|
+
* non-empty and differ. a `cid` that starts with `#` is empty (`IdentityToken.cid`). compared, never logged.
|
|
123
|
+
*/
|
|
124
|
+
export declare const isCrossCloud: (context?: NextContext) => boolean;
|
|
125
|
+
/**
|
|
126
|
+
* the `TRACE` line of an entry: `TRACE tid=<tid> hop=<hop> ch=<channel> via=<service|-> src=<path|->[ cross=1]`.
|
|
117
127
|
* - no identity value, no account (the via host and the src path only).
|
|
128
|
+
* - v5 B15: ` cross=1` when the identity is cross-cloud (the flag only, never the account numbers).
|
|
118
129
|
*/
|
|
119
130
|
export declare const traceLine: (context: NextContext) => string;
|
|
120
131
|
/** print the `TRACE` line of an entry (one per web entry and per protocol receive) */
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.accountOfArn = exports.logTrace = exports.traceLine = exports.warnJsonIdentity = exports.acceptLegacy = exports.nextHopContext = exports.entryTrace = exports.entryChannel = exports.asRelayContext = exports.decodeRelay = exports.encodeRelay = exports.buildRelay = exports.relayIdentityOf = exports.assertHop = exports.readMaxHop = exports.readLegacyAccept = exports.readLegacySend = exports.traceIdOf = exports.SAFE_TRACE_ID = exports.DEFAULT_MAX_HOP = exports.PROTOCOL_MAX_HOP = exports.PROTOCOL_LEGACY_ACCEPT = exports.PROTOCOL_LEGACY_CONTEXT = exports.RELAY_IDENTITY_FIELDS = exports.RELAY_MAX_BYTES = exports.RELAY_PREFIX = exports.RELAY_PARAM = exports.HEADER_LEMON_RELAY = void 0;
|
|
6
|
+
exports.accountOfArn = exports.logTrace = exports.traceLine = exports.isCrossCloud = exports.warnJsonIdentity = exports.acceptLegacy = exports.nextHopContext = exports.entryTrace = exports.entryChannel = exports.asRelayContext = exports.decodeRelay = exports.encodeRelay = exports.buildRelay = exports.relayIdentityOf = exports.assertHop = exports.readMaxHop = exports.readLegacyAccept = exports.readLegacySend = exports.traceIdOf = exports.SAFE_TRACE_ID = exports.DEFAULT_MAX_HOP = exports.PROTOCOL_MAX_HOP = exports.PROTOCOL_LEGACY_ACCEPT = exports.PROTOCOL_LEGACY_CONTEXT = exports.RELAY_IDENTITY_FIELDS = exports.RELAY_MAX_BYTES = exports.RELAY_PREFIX = exports.RELAY_PARAM = exports.HEADER_LEMON_RELAY = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* `cores/protocol/protocol-relay.ts`
|
|
9
9
|
* - v5 B14: the relay envelope of an internal hop — a whitelisted identity and the trace, nothing else.
|
|
@@ -18,6 +18,7 @@ exports.accountOfArn = exports.logTrace = exports.traceLine = exports.warnJsonId
|
|
|
18
18
|
* @author Steve Jung <steve@lemoncloud.io>
|
|
19
19
|
* @date 2026-10-30 initial version (v5 B14)
|
|
20
20
|
* @date 2026-10-30 a safe trace id (`SAFE_TRACE_ID`), and `nextHopContext()` for an in-process (same-service) callback.
|
|
21
|
+
* @date 2026-10-30 v5 B15: `cid` (cloud-id) and `aid` (auth-id) cross a hop; `isCrossCloud()`; `TRACE … cross=1`.
|
|
21
22
|
*
|
|
22
23
|
* @copyright (C) lemoncloud.io 2026 - All Rights Reserved.
|
|
23
24
|
*/
|
|
@@ -34,7 +35,8 @@ exports.RELAY_PREFIX = 'r1.';
|
|
|
34
35
|
/** max bytes of a relay value (the receiver rejects a larger one) */
|
|
35
36
|
exports.RELAY_MAX_BYTES = 4096;
|
|
36
37
|
/** identity fields that cross a hop (whitelist). nothing else of `NextIdentity` is relayed */
|
|
37
|
-
|
|
38
|
+
//* v5 B15: + `cid` (cloud-id = the caller's account, for the cross-cloud check) and `aid` (auth-id, DoU `$sess.aid`).
|
|
39
|
+
exports.RELAY_IDENTITY_FIELDS = ['sid', 'uid', 'gid', 'roles', 'identityId', 'lang', 'cid', 'aid'];
|
|
38
40
|
/** env name of the send mode of the legacy context (`off` | `send`) */
|
|
39
41
|
exports.PROTOCOL_LEGACY_CONTEXT = 'PROTOCOL_LEGACY_CONTEXT';
|
|
40
42
|
/** env name of the receive mode of the legacy context (`accept` | `warn` | `reject`) */
|
|
@@ -310,19 +312,35 @@ const pathOf = (uri) => {
|
|
|
310
312
|
}
|
|
311
313
|
};
|
|
312
314
|
/**
|
|
313
|
-
* the
|
|
315
|
+
* v5 B15: true if the identity of the context comes from another cloud (SPEC § 15.1).
|
|
316
|
+
* - `identity.cid` (the caller's cloud-id) and `context.accountId` (the receiver's own account, B14) are both
|
|
317
|
+
* non-empty and differ. a `cid` that starts with `#` is empty (`IdentityToken.cid`). compared, never logged.
|
|
318
|
+
*/
|
|
319
|
+
const isCrossCloud = (context) => {
|
|
320
|
+
const cid0 = context?.identity?.cid;
|
|
321
|
+
const cid = typeof cid0 === 'string' && !cid0.startsWith('#') ? cid0.trim() : '';
|
|
322
|
+
const own = `${context?.accountId ?? ''}`.trim();
|
|
323
|
+
return !!cid && !!own && cid !== own;
|
|
324
|
+
};
|
|
325
|
+
exports.isCrossCloud = isCrossCloud;
|
|
326
|
+
/**
|
|
327
|
+
* the `TRACE` line of an entry: `TRACE tid=<tid> hop=<hop> ch=<channel> via=<service|-> src=<path|->[ cross=1]`.
|
|
314
328
|
* - no identity value, no account (the via host and the src path only).
|
|
329
|
+
* - v5 B15: ` cross=1` when the identity is cross-cloud (the flag only, never the account numbers).
|
|
315
330
|
*/
|
|
316
331
|
const traceLine = (context) => {
|
|
317
332
|
const trace = context?.trace;
|
|
318
333
|
const src = trace?.src ?? context?.source;
|
|
319
|
-
|
|
334
|
+
const line = [
|
|
320
335
|
`TRACE tid=${token(trace?.tid)}`,
|
|
321
336
|
`hop=${token(trace?.hop)}`,
|
|
322
337
|
`ch=${token(context?.channel)}`,
|
|
323
338
|
`via=${hostOf(trace?.via)}`,
|
|
324
339
|
`src=${pathOf(src)}`,
|
|
325
|
-
]
|
|
340
|
+
];
|
|
341
|
+
if ((0, exports.isCrossCloud)(context))
|
|
342
|
+
line.push('cross=1'); //* v5 B15
|
|
343
|
+
return line.join(' ');
|
|
326
344
|
};
|
|
327
345
|
exports.traceLine = traceLine;
|
|
328
346
|
/** print the `TRACE` line of an entry (one per web entry and per protocol receive) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-relay.js","sourceRoot":"","sources":["../../../src/cores/protocol/protocol-relay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol-relay.js","sourceRoot":"","sources":["../../../src/cores/protocol/protocol-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// generated by scripts/gen-esm-wrapper.cjs from dist/model.d.ts. do not edit.
|
|
2
|
+
import cjs from '../model.js';
|
|
3
|
+
export const $gemini = cjs.$gemini;
|
|
4
|
+
export const AbstractTransformer = cjs.AbstractTransformer;
|
|
5
|
+
export const BrowserWebSocketNetwork = cjs.BrowserWebSocketNetwork;
|
|
6
|
+
export const CORE_FIELDS = cjs.CORE_FIELDS;
|
|
7
|
+
export const CoreModel = cjs.CoreModel;
|
|
8
|
+
export const DEFAULT_MAX_PACKET_BYTES = cjs.DEFAULT_MAX_PACKET_BYTES;
|
|
9
|
+
export const FIELDS_KEY = cjs.FIELDS_KEY;
|
|
10
|
+
export const GenAIStreamBuffer = cjs.GenAIStreamBuffer;
|
|
11
|
+
export const HttpAbstractGenAI = cjs.HttpAbstractGenAI;
|
|
12
|
+
export const JSONProxyTransportReceiver = cjs.JSONProxyTransportReceiver;
|
|
13
|
+
export const JSONTransport = cjs.JSONTransport;
|
|
14
|
+
export const JSONTransportReliableError = cjs.JSONTransportReliableError;
|
|
15
|
+
export const JSON_RELIABLE_SCOPE = cjs.JSON_RELIABLE_SCOPE;
|
|
16
|
+
export const MULTI_NETWORK_SCOPE = cjs.MULTI_NETWORK_SCOPE;
|
|
17
|
+
export const OwnedWebSocketNetwork = cjs.OwnedWebSocketNetwork;
|
|
18
|
+
export const TokenBuffer = cjs.TokenBuffer;
|
|
19
|
+
export const WEBSOCKET_NETWORK_SCOPE = cjs.WEBSOCKET_NETWORK_SCOPE;
|
|
20
|
+
export const asGenAIStreamNetworkTransportOptions = cjs.asGenAIStreamNetworkTransportOptions;
|
|
21
|
+
export const asLegacyTokenConsumer = cjs.asLegacyTokenConsumer;
|
|
22
|
+
export const asStreamConsumer = cjs.asStreamConsumer;
|
|
23
|
+
export const assembleJSON = cjs.assembleJSON;
|
|
24
|
+
export const browserWebSocketDumpTest = cjs.browserWebSocketDumpTest;
|
|
25
|
+
export const calculateJSONTransportChunkBytes = cjs.calculateJSONTransportChunkBytes;
|
|
26
|
+
export const compactStreamEvent = cjs.compactStreamEvent;
|
|
27
|
+
export const createBufferProgressGauge = cjs.createBufferProgressGauge;
|
|
28
|
+
export const createFilteredNetwork = cjs.createFilteredNetwork;
|
|
29
|
+
export const createGenAIStreamNetworkConsumer = cjs.createGenAIStreamNetworkConsumer;
|
|
30
|
+
export const createGenAIStreamNetworkReceiver = cjs.createGenAIStreamNetworkReceiver;
|
|
31
|
+
export const createJSONTransport = cjs.createJSONTransport;
|
|
32
|
+
export const createLogTraceConsumer = cjs.createLogTraceConsumer;
|
|
33
|
+
export const createLogTraceReporter = cjs.createLogTraceReporter;
|
|
34
|
+
export const createMultiSocketNetwork = cjs.createMultiSocketNetwork;
|
|
35
|
+
export const createOwnedWebSocketNetwork = cjs.createOwnedWebSocketNetwork;
|
|
36
|
+
export const createProgressConsumer = cjs.createProgressConsumer;
|
|
37
|
+
export const createProgressReporter = cjs.createProgressReporter;
|
|
38
|
+
export const createProxyTransportReceiver = cjs.createProxyTransportReceiver;
|
|
39
|
+
export const createReconnectingNetwork = cjs.createReconnectingNetwork;
|
|
40
|
+
export const createSocketClient = cjs.createSocketClient;
|
|
41
|
+
export const createSocketClientIdentityProvider = cjs.createSocketClientIdentityProvider;
|
|
42
|
+
export const createSyncMachine = cjs.createSyncMachine;
|
|
43
|
+
export const createSyncTicker = cjs.createSyncTicker;
|
|
44
|
+
export const createTimeProgressGauge = cjs.createTimeProgressGauge;
|
|
45
|
+
export const createTranslatedNetwork = cjs.createTranslatedNetwork;
|
|
46
|
+
export const defaultJSONTransportIdentityProvider = cjs.defaultJSONTransportIdentityProvider;
|
|
47
|
+
export const defaultReliableJSONTransportIdentityProvider = cjs.defaultReliableJSONTransportIdentityProvider;
|
|
48
|
+
export const estimateGenAIStreamSize = cjs.estimateGenAIStreamSize;
|
|
49
|
+
export const extractWebSocketConnectionId = cjs.extractWebSocketConnectionId;
|
|
50
|
+
export const field = cjs.field;
|
|
51
|
+
export const fieldsOf = cjs.fieldsOf;
|
|
52
|
+
export const isJSONReliableScope = cjs.isJSONReliableScope;
|
|
53
|
+
export const mockGenAIStream = cjs.mockGenAIStream;
|
|
54
|
+
export const onGenAIStreamNetworkError = cjs.onGenAIStreamNetworkError;
|
|
55
|
+
export const onReliableError = cjs.onReliableError;
|
|
56
|
+
export const restoreStreamEvent = cjs.restoreStreamEvent;
|
|
57
|
+
export const runMockGenAIStream = cjs.runMockGenAIStream;
|
|
58
|
+
export const specsOf = cjs.specsOf;
|
|
59
|
+
export const splitJSON = cjs.splitJSON;
|
|
60
|
+
export const summarizeJSONTransportSize = cjs.summarizeJSONTransportSize;
|
|
61
|
+
export const waitWebSocketConnectionId = cjs.waitWebSocketConnectionId;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { GeneralWEBController } from '../../controllers/';
|
|
2
2
|
import { CoreModel, AbstractTransformer, View, Body, NextContext, NextHandler, SimpleSet } from 'lemon-model';
|
|
3
3
|
import { BulkBody, ListResult, PaginatedListResult, PaginateParam } from './types';
|
|
4
|
-
import { MyCoreManager, MyCoreService, MyCoreProxy,
|
|
4
|
+
import { MyCoreManager, MyCoreService, MyCoreProxy, MyManagerProxy } from './abstract-services';
|
|
5
|
+
import { AccessPolicy, AccessScope, CanDoOptions } from './abstract-services';
|
|
5
6
|
export { CoreModel, AbstractTransformer, GeneralWEBController };
|
|
6
7
|
/**
|
|
7
8
|
* type: `CRUDCreationOptions`
|
|
@@ -25,6 +26,7 @@ interface CRUDCreationOptions {
|
|
|
25
26
|
/**
|
|
26
27
|
* (optional) v5 B13: access scopes for the 7 CRUD handlers of this controller (session on only).
|
|
27
28
|
* - merged over the manager-proxy `accessPolicy()`; ex: `{ read: 'site' }` restores the v5 § 6.4 read rule.
|
|
29
|
+
* - v5 B15: also `internal` (`'admin'` | `'identity'`) and `cross` (`'accept'` | `'identity'` | `'deny'`).
|
|
28
30
|
*
|
|
29
31
|
* @see MyManagerProxy.canDo()
|
|
30
32
|
*/
|
|
@@ -82,6 +84,22 @@ export declare abstract class AbstractCRUDController<ModelType extends string, M
|
|
|
82
84
|
* v5 B13: the `canDo()` options of the CRUD handlers - session switch and policy of this controller.
|
|
83
85
|
*/
|
|
84
86
|
protected canDoOptions(errScope: string, options?: CanDoOptions): CanDoOptions;
|
|
87
|
+
/**
|
|
88
|
+
* v5 B15: true if the caller is admin for the CRUD defaults (`hasAdminRole` or the internal admin of this policy).
|
|
89
|
+
* - the same rule as `MyManagerProxy.isAdminLike()` (used by `canDo` and `packSearchParam`).
|
|
90
|
+
*/
|
|
91
|
+
protected isAdminLike(proxy: MyCoreProxy<ModelType, any>): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* v5 B15: the list view of `GET /<type>?view=<view>` (session on only) → a list scope, or `'admin'` (no pin).
|
|
94
|
+
* - default: `mine` → `owner`, `group`, `site`, `admin`; anything else → `400 INVALID - view[…] is invalid`.
|
|
95
|
+
* - override to add views (ex: DoU `public`); the caller check (`canDo('list')`), the `admin` gate and the
|
|
96
|
+
* `policy.list` ceiling still apply to the returned value.
|
|
97
|
+
*
|
|
98
|
+
* @param view the non-empty `?view=` value
|
|
99
|
+
* @param $ctx the request context
|
|
100
|
+
* @returns a list scope, or `'admin'`
|
|
101
|
+
*/
|
|
102
|
+
protected resolveListView(view: string, $ctx: NextContext): AccessScope | 'admin';
|
|
85
103
|
/**
|
|
86
104
|
* model transformer from model to view
|
|
87
105
|
*/
|
|
@@ -126,6 +144,17 @@ export declare abstract class AbstractCRUDController<ModelType extends string, M
|
|
|
126
144
|
* $ http ':8888/<typeName>'
|
|
127
145
|
*/
|
|
128
146
|
doList: NextHandler<PaginateParam & SimpleSet, PaginatedListResult<MyView>>;
|
|
147
|
+
/**
|
|
148
|
+
* v5 B15: the list scope of `doList` from `?view=` (SPEC § 15.2, session on only).
|
|
149
|
+
* - no view → `admin` for an admin-like caller, else `owner` (= `mine`). else `resolveListView()`.
|
|
150
|
+
* - `admin` by a non-admin → 403. a scope wider than `policy.list` (owner < group < site < any) by a non-admin → 403.
|
|
151
|
+
*
|
|
152
|
+
* @returns `{ scope, asAdmin }` for `packSearchParam()`
|
|
153
|
+
*/
|
|
154
|
+
protected listScopeOf($prxy: MyManagerProxy<MyModel, any, any>, view: string, $ctx: NextContext, errScope: string): {
|
|
155
|
+
scope: AccessScope;
|
|
156
|
+
asAdmin: boolean;
|
|
157
|
+
};
|
|
129
158
|
/**
|
|
130
159
|
* list types by id
|
|
131
160
|
* - id means the search(query) id to use.
|
|
@@ -34,6 +34,7 @@ exports.AbstractCRUDController = exports.GeneralWEBController = exports.Abstract
|
|
|
34
34
|
* @date 2026-10-30 v5 B14: the `fields/admin` gate reads `context.channel` (not `domain`).
|
|
35
35
|
* @date 2026-10-28 v5 B4: `fields/admin` self-check uses the shared `checkFieldsAdmin()`.
|
|
36
36
|
* @date 2026-10-30 v5 B13: handlers pass `{ useSession, policy }` to `canDo`, `doList` checks `list`, bulk in 2 phases.
|
|
37
|
+
* @date 2026-10-30 v5 B15: `doList` reads `?view=` (`resolveListView()`, ceiling `policy.list`), internal admin.
|
|
37
38
|
*
|
|
38
39
|
* @copyright (C) 2022 LemonCloud Co Ltd. - All Rights Reserved.
|
|
39
40
|
* @origin `@lemoncloud/lemon-templates-api/cores`
|
|
@@ -53,6 +54,8 @@ Object.defineProperty(exports, "CoreModel", { enumerable: true, get: function ()
|
|
|
53
54
|
Object.defineProperty(exports, "AbstractTransformer", { enumerable: true, get: function () { return lemon_model_1.AbstractTransformer; } });
|
|
54
55
|
const lemon_model_2 = require("lemon-model"); //* v5 B4: L2 core fields, re-derived (the services' `CORE_FIELDS` is module-local).
|
|
55
56
|
const fields_admin_1 = require("./fields-admin");
|
|
57
|
+
//* v5 B15: the list scopes from the narrowest to the widest (`view` ceiling = `policy.list`).
|
|
58
|
+
const LIST_SCOPES = ['owner', 'group', 'site', 'any'];
|
|
56
59
|
/**
|
|
57
60
|
* convert as id string.
|
|
58
61
|
*/
|
|
@@ -148,6 +151,37 @@ class AbstractCRUDController extends controllers_1.GeneralWEBController {
|
|
|
148
151
|
canDoOptions(errScope, options) {
|
|
149
152
|
return { errScope, useSession: this.confUseSession, policy: this.confPolicy, ...options };
|
|
150
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* v5 B15: true if the caller is admin for the CRUD defaults (`hasAdminRole` or the internal admin of this policy).
|
|
156
|
+
* - the same rule as `MyManagerProxy.isAdminLike()` (used by `canDo` and `packSearchParam`).
|
|
157
|
+
*/
|
|
158
|
+
isAdminLike(proxy) {
|
|
159
|
+
const $prxy = proxy.getManagerProxy(this.modelType);
|
|
160
|
+
return $prxy ? $prxy.isAdminLike({ policy: this.confPolicy }) : proxy.hasAdminRole();
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* v5 B15: the list view of `GET /<type>?view=<view>` (session on only) → a list scope, or `'admin'` (no pin).
|
|
164
|
+
* - default: `mine` → `owner`, `group`, `site`, `admin`; anything else → `400 INVALID - view[…] is invalid`.
|
|
165
|
+
* - override to add views (ex: DoU `public`); the caller check (`canDo('list')`), the `admin` gate and the
|
|
166
|
+
* `policy.list` ceiling still apply to the returned value.
|
|
167
|
+
*
|
|
168
|
+
* @param view the non-empty `?view=` value
|
|
169
|
+
* @param $ctx the request context
|
|
170
|
+
* @returns a list scope, or `'admin'`
|
|
171
|
+
*/
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
173
|
+
resolveListView(view, $ctx) {
|
|
174
|
+
switch (view) {
|
|
175
|
+
case 'mine':
|
|
176
|
+
return 'owner';
|
|
177
|
+
case 'group':
|
|
178
|
+
case 'site':
|
|
179
|
+
case 'admin':
|
|
180
|
+
return view;
|
|
181
|
+
default:
|
|
182
|
+
throw new Error(`400 INVALID - view[${view}] is invalid @resolveListView(${this.type()})`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
151
185
|
/**
|
|
152
186
|
* model transformer from model to view
|
|
153
187
|
*/
|
|
@@ -174,7 +208,8 @@ class AbstractCRUDController extends controllers_1.GeneralWEBController {
|
|
|
174
208
|
const parent = options?.parent ?? null;
|
|
175
209
|
const useSession = options?.useSession ?? this.confUseSession;
|
|
176
210
|
//* v5 B13: an admin without a session (IAM SigV4, `roles: ['admin']` claim) creates without `403 IDENTITY-TOKEN`.
|
|
177
|
-
|
|
211
|
+
//* v5 B15: the internal admin too (a protocol call may carry no identity).
|
|
212
|
+
const throwable = options?.throwable ?? (this.confThrowable && !(useSession && this.isAdminLike(proxy)));
|
|
178
213
|
const $model = (0, test_helper_1.onlyDefined)({
|
|
179
214
|
type: this.manager.type,
|
|
180
215
|
});
|
|
@@ -252,17 +287,31 @@ class AbstractCRUDController extends controllers_1.GeneralWEBController {
|
|
|
252
287
|
body && (0, engine_1._log)(this.logNS, `> body =`, engine_1.$U.json(body));
|
|
253
288
|
// request search
|
|
254
289
|
return this.service.guardProxy($ctx, async (proxy) => {
|
|
290
|
+
//* v5 B15: `?view=` is reserved (never a filter, session on or off) - split it off the query.
|
|
291
|
+
const { view: view0, ...query } = (param ?? {});
|
|
292
|
+
const view = typeof view0 === 'string' ? view0.trim() : view0 === undefined || view0 === null ? '' : `${view0}`;
|
|
293
|
+
const $query = param ? query : param;
|
|
255
294
|
//WARN - has no internal properties like `sid`, `uid`
|
|
256
295
|
//TODO - `stereo` 같은 경우가 모델 생성시 필수값일때, 쿼리와 겹침. (not-exists) 개선필요함 @230926
|
|
257
|
-
const model =
|
|
296
|
+
const model = $query ? this.bodyToModel($query, true) : null; // could have all
|
|
258
297
|
const useSession = this.confUseSession;
|
|
259
298
|
const $prxy = proxy.getManagerProxy(this.modelType);
|
|
260
299
|
//* v5 B13: the caller may list at all (guest, no session, empty `sid`/`uid` → 403), session on only.
|
|
261
300
|
if (useSession && !$prxy.canDo('list', undefined, this.canDoOptions(errScope)))
|
|
262
301
|
throw new Error(`403 NOT ALLOWED - action[list] is invalid @${errScope}`);
|
|
263
302
|
//* v5 B13: pin the rows per the effective `list` scope (the same merge as `canDo`).
|
|
264
|
-
|
|
265
|
-
const {
|
|
303
|
+
//* v5 B15: the scope comes from the view (default `mine`, `admin` for admin-like); `policy.list` is the ceiling.
|
|
304
|
+
const { scope, asAdmin } = useSession
|
|
305
|
+
? this.listScopeOf($prxy, view, $ctx, errScope)
|
|
306
|
+
: { scope: undefined, asAdmin: undefined };
|
|
307
|
+
const policy = this.confPolicy;
|
|
308
|
+
const { $page, $param } = $prxy.packSearchParam($query, model, {
|
|
309
|
+
useSession,
|
|
310
|
+
scope,
|
|
311
|
+
errScope,
|
|
312
|
+
policy,
|
|
313
|
+
asAdmin,
|
|
314
|
+
});
|
|
266
315
|
(0, engine_1._log)(this.logNS, `>> $param =`, engine_1.$U.json($param));
|
|
267
316
|
//* search from manager.
|
|
268
317
|
const $res = await this.manager.list($page, $param);
|
|
@@ -273,6 +322,29 @@ class AbstractCRUDController extends controllers_1.GeneralWEBController {
|
|
|
273
322
|
return { total, limit: $page.limit, page: $page.page, list };
|
|
274
323
|
});
|
|
275
324
|
};
|
|
325
|
+
/**
|
|
326
|
+
* v5 B15: the list scope of `doList` from `?view=` (SPEC § 15.2, session on only).
|
|
327
|
+
* - no view → `admin` for an admin-like caller, else `owner` (= `mine`). else `resolveListView()`.
|
|
328
|
+
* - `admin` by a non-admin → 403. a scope wider than `policy.list` (owner < group < site < any) by a non-admin → 403.
|
|
329
|
+
*
|
|
330
|
+
* @returns `{ scope, asAdmin }` for `packSearchParam()`
|
|
331
|
+
*/
|
|
332
|
+
listScopeOf($prxy, view, $ctx, errScope) {
|
|
333
|
+
const policy = $prxy.effectivePolicy(this.confPolicy);
|
|
334
|
+
const adminLike = $prxy.isAdminLike({ policy: this.confPolicy });
|
|
335
|
+
const resolved = view ? this.resolveListView(view, $ctx) : adminLike ? 'admin' : 'owner';
|
|
336
|
+
//* `admin`: no pin, admin-like callers only.
|
|
337
|
+
if (resolved === 'admin') {
|
|
338
|
+
if (!adminLike)
|
|
339
|
+
throw new Error(`403 NOT ALLOWED - view[${view || resolved}] needs admin @${errScope}`);
|
|
340
|
+
return { scope: policy.list, asAdmin: true };
|
|
341
|
+
}
|
|
342
|
+
//* a scope: a non-admin may not go wider than `policy.list` (an unknown scope never passes).
|
|
343
|
+
const rank = (S) => LIST_SCOPES.includes(S) ? LIST_SCOPES.indexOf(S) : NaN;
|
|
344
|
+
if (!adminLike && !(rank(resolved) <= rank(policy.list)))
|
|
345
|
+
throw new Error(`403 NOT ALLOWED - view[${view || resolved}] is over list[${policy.list}] @${errScope}`);
|
|
346
|
+
return { scope: resolved, asAdmin: false };
|
|
347
|
+
}
|
|
276
348
|
/**
|
|
277
349
|
* list types by id
|
|
278
350
|
* - id means the search(query) id to use.
|
|
@@ -563,7 +635,8 @@ class AbstractCRUDController extends controllers_1.GeneralWEBController {
|
|
|
563
635
|
if (!$prxy)
|
|
564
636
|
throw new Error(`.model-type[${this.modelType}] is required - ${errScope}`);
|
|
565
637
|
//* v5 B13: a session-less non-admin caller keeps the `403 IDENTITY-TOKEN` message (as the single handlers).
|
|
566
|
-
|
|
638
|
+
//* v5 B15: the internal admin is admin here too.
|
|
639
|
+
if (this.confUseSession && !this.isAdminLike(proxy))
|
|
567
640
|
proxy.getCurrentSession({ throwable: this.confThrowable });
|
|
568
641
|
//* v5 B13 phase 1: load every stored row (404 first, current messages) and check it, no write.
|
|
569
642
|
const _can = async (N, i) => {
|