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 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.4`. The `v5` branch holds all 5.x work, unreleased changes included; `develop` is the default branch.
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` (merged in the `v5` branch after 5.0.4; see § 13.5) |
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; both are published sub-paths |
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–B13); `$T`/`$U` specs | Updated with the change they describe |
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) | Unreleased 5.x entry (B13), then stops at 1.2.0 (2019); see VERSION INFO |
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
- | unreleased (v5) | 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).
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 `TRACE` line of an entry: `TRACE tid=<tid> hop=<hop> ch=<channel> via=<service|-> src=<path|->`.
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
- exports.RELAY_IDENTITY_FIELDS = ['sid', 'uid', 'gid', 'roles', 'identityId', 'lang'];
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 `TRACE` line of an entry: `TRACE tid=<tid> hop=<hop> ch=<channel> via=<service|-> src=<path|->`.
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
- return [
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
- ].join(' ');
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, AccessPolicy, CanDoOptions } from './abstract-services';
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
- const throwable = options?.throwable ?? (this.confThrowable && !(useSession && proxy.hasAdminRole()));
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 = param ? this.bodyToModel(param, true) : null; // could have all
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
- const scope = useSession ? $prxy.effectivePolicy(this.confPolicy).list : undefined;
265
- const { $page, $param } = $prxy.packSearchParam(param, model, { useSession, scope, errScope });
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
- if (this.confUseSession && !proxy.hasAdminRole())
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) => {