@happyvertical/smrt-core 0.43.2 → 0.43.4
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/agents/collection-reads.md +30 -0
- package/agents/generators.md +18 -0
- package/dist/__typechecks__/custom-action-metadata.d.ts +2 -0
- package/dist/__typechecks__/custom-action-metadata.d.ts.map +1 -0
- package/dist/browser.js +2 -2
- package/dist/collection.d.ts +56 -3
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +61 -56
- package/dist/collection.js.map +1 -1
- package/dist/generators/custom-action.d.ts +11 -2
- package/dist/generators/custom-action.d.ts.map +1 -1
- package/dist/generators/custom-action.js +18 -1
- package/dist/generators/custom-action.js.map +1 -1
- package/dist/generators/index.d.ts +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +3 -2
- package/dist/generators/rest.js.map +1 -1
- package/dist/generators/tool-schema.d.ts +8 -2
- package/dist/generators/tool-schema.d.ts.map +1 -1
- package/dist/generators/tool-schema.js +46 -8
- package/dist/generators/tool-schema.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/manifest/static-manifest.js +3 -3
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +3 -3
- package/dist/prebuild/index.d.ts.map +1 -1
- package/dist/prebuild/index.js +17 -0
- package/dist/prebuild/index.js.map +1 -1
- package/dist/registry/types.d.ts +13 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +9 -9
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +23 -1
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/web-collections.d.ts +49 -1
- package/dist/vite-plugin/web-collections.d.ts.map +1 -1
- package/dist/vite-plugin/web-collections.js +185 -19
- package/dist/vite-plugin/web-collections.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,6 +12,36 @@ returns plain rows without hydrating objects. It composes with `where`,
|
|
|
12
12
|
`orderBy`, `limit`, and `offset`, runs normal `beforeList`/tenant interceptors,
|
|
13
13
|
and is limited to column-backed fields; it cannot combine with `include`.
|
|
14
14
|
|
|
15
|
+
## Bounded STI discriminator scopes
|
|
16
|
+
|
|
17
|
+
An STI child collection remains scoped to its own qualified `_meta_type` by
|
|
18
|
+
default. A migration that must read registered sibling types may opt into an
|
|
19
|
+
explicit allowlist:
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
await impressionEvents.list({
|
|
23
|
+
stiScope: {
|
|
24
|
+
types: [
|
|
25
|
+
'@anytown/advertising:AdImpression',
|
|
26
|
+
'@anytown/advertising:LegacyAdImpression',
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
orderBy: 'created_at ASC',
|
|
30
|
+
limit: 100,
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`stiScope.types` accepts 1–50 unique, qualified, registered types, all sharing
|
|
35
|
+
the child collection's STI root. Empty, simple-name, unknown, duplicate,
|
|
36
|
+
unrelated, and non-child scopes fail at the collection boundary. The option is
|
|
37
|
+
supported by `list()`, `count()`, `counts()`, `facets()`, and
|
|
38
|
+
`listWithLatestRelated()`. These methods retain their normal field validation,
|
|
39
|
+
projection or polymorphic hydration, pagination and cache-key construction;
|
|
40
|
+
normal read and tenant interceptors still run and are ANDed with the allowlist.
|
|
41
|
+
Point reads through `get()` remain child-only; use a bounded
|
|
42
|
+
`list({ where, limit: 1, stiScope })` migration read when sibling hydration is
|
|
43
|
+
required.
|
|
44
|
+
|
|
15
45
|
For one child per parent, use
|
|
16
46
|
[`latest-related.md`](latest-related.md). It uses a portable ranked CTE,
|
|
17
47
|
declared primary keys, adapter-specific offset-only syntax, explicit aliases,
|
package/agents/generators.md
CHANGED
|
@@ -13,6 +13,14 @@ invariants, and the traps that apply before editing anything live in
|
|
|
13
13
|
| MCP Server | `src/generators/mcp.ts` | Model Context Protocol tools |
|
|
14
14
|
| Web collections | `src/vite-plugin/web-collections.ts` (selectors) + `generateWebModule` | `@happyvertical/smrt-virt-web` — one typed collection definition per API-exposed REST collection (#1761), consumed by `@happyvertical/smrt-web` |
|
|
15
15
|
|
|
16
|
+
The same web virtual module exports `webMcpToolDefinitions` (#2518), a
|
|
17
|
+
canonical per-tool array selected independently of list materialization. Every
|
|
18
|
+
non-empty canonical API action set contributes tools, so get-only and
|
|
19
|
+
custom-action-only models are discoverable; custom actions declared on a
|
|
20
|
+
`SmrtCollection` merge into the owning row collection. Each definition carries
|
|
21
|
+
complete route and invalidation metadata. `collectionDefinitions` and its
|
|
22
|
+
embedded descriptor copy remain unchanged for existing cache-backed consumers.
|
|
23
|
+
|
|
16
24
|
Generated API clients share `selectApiClientEntries()` across the runtime Vite
|
|
17
25
|
module, its ambient declaration, and physical prebuild declarations. When a
|
|
18
26
|
collection class and its populated model share an endpoint, the model owns the
|
|
@@ -25,6 +33,9 @@ fallback so duplicate class names across packages cannot reintroduce ordering.
|
|
|
25
33
|
|
|
26
34
|
The web module also emits a build-time **`manifestHash`** constant (#1764): `computeWebManifestHash(manifest)` is a deterministic, replica-stable digest of the emitted web-collection SHAPE (name/className/endpoint/idField/actions/fields/relationships), canonicalized (recursive key sort) before `sha256 → base64url`, truncated to 16 chars — so the same schema always hashes the same, and a field add/remove/type-change/edge-change changes it. A change means old persisted client rows may mis-hydrate, so smrt-web keys its durable persistence namespace on it and its `updateAvailable` contract signal compares against it. Four co-managed emission sites must not drift: the runtime value (`generateWebModule`), the `@happyvertical/smrt-virt-web` ambient d.ts (`vite-plugin/index.ts`), the physical `@smrt/web` d.ts (`prebuild/index.ts`), and the hand-written type mirror in `@happyvertical/smrt-web` (`packages/smrt-web/src/index.ts` — dependency-free, so textual sync only).
|
|
27
35
|
|
|
36
|
+
`webMcpToolDefinitions` is deliberately outside that digest: tool-only route,
|
|
37
|
+
identifier, or annotation changes cannot alter persisted row hydration.
|
|
38
|
+
|
|
28
39
|
Per-field web emission (#2046): `buildWebFieldDefinitions` carries `description` (from `@field({ description })`) and sanitized `ui` hints (from `@field({ ui: { basic, group, order, locked } })`, read off the manifest `_meta.ui` bag through per-key type guards) into each emitted field definition, and `buildWebToolDescriptors` threads the same `description` into browser MCP tool schemas. `sensitive`/`transient` fields are excluded from emission entirely, so their descriptions never ship. Both keys are conditional, so hint-less schemas emit byte-identical definitions (and hashes) as before; adding a description/ui hint changes the manifest hash — deliberate over-invalidation, harmless per the #1764 contract.
|
|
29
40
|
|
|
30
41
|
## Generated MCP server output language
|
|
@@ -81,4 +92,11 @@ returns `isError: true` and `_meta['io.happyvertical/smrt']`. Opaque successful
|
|
|
81
92
|
objects (including `{ code, message }`) remain untouched; thrown exceptions are
|
|
82
93
|
not reclassified as domain failures.
|
|
83
94
|
|
|
95
|
+
Custom route metadata also classifies browser-tool effects. Set `effect` to
|
|
96
|
+
`read`, `write`, or `destructive`, with truthful `idempotent` and `openWorld`
|
|
97
|
+
flags. CRUD classification is fixed: list/get are read, create/update are write,
|
|
98
|
+
and delete is destructive. An undeclared custom action deliberately defaults to
|
|
99
|
+
destructive, non-idempotent, and open-world so a browser capability policy never
|
|
100
|
+
fails open.
|
|
101
|
+
|
|
84
102
|
Generated reads (`list`/`get`) on the REST and SvelteKit generators support conditional GET (helpers in `src/generators/conditional-get.ts`). ETag v2 (#1765): the validator is the table's change-feed version (`getTableVersion`) keyed by the request representation, so a **concrete** `If-None-Match` short-circuits into a 304 with an empty body **before** the collection query runs — an unchanged table revalidates with zero table scan. A wildcard `If-None-Match: *` is deferred until the payload builds (existence confirmed), so a missing item still returns 404, not a false 304. Tenant-scoped reads fold the active tenant into the representation (`resolveTenantEtagDiscriminator`) so one tenant's cached validator never satisfies another's read of the same URL. Routes whose GET renders via a **custom serializer** (which can load related tables the base-table version can't observe) keep the v1 body-hash ETag (`#1757`, query-first but correct); the default `toPublicJSON` path — all REST reads and non-serializer SvelteKit reads — uses v2. v2 is weakly consistent by design (the cost of not reading the data): a revalidation in the sub-statement window between a committed write and its feed append can return a stale 304 that self-heals on the next revalidation. The other v2 window — a deploy that changes the response shape WITHOUT a table write — is closed by the **#1764 ETag salt**: `computeTableVersionEtag(version, representation, manifestHash?)` folds the build's web-collection shape digest into the digest, so a shape-only redeploy busts every read validator (`undefined` reproduces the pre-#1764 unsalted value byte-for-byte for direct helper callers). The generated SvelteKit route bakes the digest in as a `MANIFEST_HASH` constant (via `generateConditionalGetRouteHelper`'s `manifestHash` option, sourced from `computeWebManifestHash(manifest)`) — automatic for the SvelteKit transport. The runtime `APIGenerator` auto-populates the same salt from the runtime registry with `computeRuntimeWebManifestHash()` when `APIConfig.manifestHash` is omitted; explicit `APIConfig.manifestHash` still wins for custom setups. The digest scope is get-OR-list (`selectWebEtagSaltEntries`), so **get-only** routes are salted too. Strong consistency still requires the v1 body-hash path. Cache-Control policy (unchanged from #1757): `private, no-cache` by default; public models may opt into shared caching via `@smrt({ api: { public: true | 'read', cache: { sMaxage } } })` → `public, max-age=0, s-maxage=<n>`; non-public models never emit shared-cache headers. Tenant-scoped models (any mode) never emit them either — bodies vary with session-cookie tenant context that URL-keyed shared caches cannot see; `sMaxage` is neutralized to `private, no-cache` with a one-time warning.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-action-metadata.d.ts","sourceRoot":"","sources":["../../src/__typechecks__/custom-action-metadata.ts"],"names":[],"mappings":""}
|
package/dist/browser.js
CHANGED
|
@@ -16,7 +16,7 @@ import { executeToolCall, executeToolCalls, formatToolResults, validateToolCall
|
|
|
16
16
|
import { SmrtObject } from "./object.js";
|
|
17
17
|
import { SMRT_COLLECTION_BASE_NAMES, isSmrtCollectionExtendsName } from "./registry/collection-resolution.js";
|
|
18
18
|
import { ObjectRegistry, smrt } from "./registry.js";
|
|
19
|
-
import { DEFAULT_FACET_LIMIT, MAX_FACET_FIELDS, MAX_FACET_LIMIT, SmrtCollection } from "./collection.js";
|
|
19
|
+
import { DEFAULT_FACET_LIMIT, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_STI_READ_SCOPE_TYPES, SmrtCollection } from "./collection.js";
|
|
20
20
|
import { SmrtHierarchical } from "./hierarchical.js";
|
|
21
21
|
import { SmrtJunction } from "./junction.js";
|
|
22
22
|
import { SmrtPolymorphicAssociation } from "./polymorphic-association.js";
|
|
@@ -24,4 +24,4 @@ import "./signals/index.js";
|
|
|
24
24
|
import { DEFAULT_RETENTION_POLICY, clearRetentionTasks, getRetentionTasks, pruneAiUsage, pruneExpiredContexts, registerRetentionTask, runRetentionSweep, unregisterRetentionTask } from "./system/retention.js";
|
|
25
25
|
import "./system/index.js";
|
|
26
26
|
import "./tools/index.js";
|
|
27
|
-
export { AIError, AiUsageCollector, AiUsagePersistenceHandler, ConfigurationError, DEFAULT_AI_COST_RATES, DEFAULT_FACET_LIMIT, DEFAULT_RETENTION_POLICY, DatabaseError, ErrorUtils, FilesystemError, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MetricsAdapter, NetworkError, ObjectRegistry, PubSubAdapter, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtObject, SmrtPolymorphicAssociation, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, assertPostgresSystemTimestampsCurrent, classifyDatabaseError, classifyDialectMessage, clearRetentionTasks, config, convertTypeToJsonSchema, ensureBootstrapSystemTableCompatibility, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, executeToolCall, executeToolCalls, formatToolResults, generateToolFromMethod, generateToolManifest, getDatabaseEngine, getRetentionTasks, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isSmrtCollectionExtendsName, isTransientDatabaseError, isUniqueViolationError, migratePostgresSystemTimestamps, planPostgresSystemTimestampMigrations, pruneAiUsage, pruneExpiredContexts, registerRetentionTask, runRetentionSweep, shouldIncludeMethod, smrt, smrt as smrtRegistry, tableExists, unregisterRetentionTask, validateToolCall };
|
|
27
|
+
export { AIError, AiUsageCollector, AiUsagePersistenceHandler, ConfigurationError, DEFAULT_AI_COST_RATES, DEFAULT_FACET_LIMIT, DEFAULT_RETENTION_POLICY, DatabaseError, ErrorUtils, FilesystemError, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_STI_READ_SCOPE_TYPES, MetricsAdapter, NetworkError, ObjectRegistry, PubSubAdapter, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtObject, SmrtPolymorphicAssociation, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, assertPostgresSystemTimestampsCurrent, classifyDatabaseError, classifyDialectMessage, clearRetentionTasks, config, convertTypeToJsonSchema, ensureBootstrapSystemTableCompatibility, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, executeToolCall, executeToolCalls, formatToolResults, generateToolFromMethod, generateToolManifest, getDatabaseEngine, getRetentionTasks, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isSmrtCollectionExtendsName, isTransientDatabaseError, isUniqueViolationError, migratePostgresSystemTimestamps, planPostgresSystemTimestampMigrations, pruneAiUsage, pruneExpiredContexts, registerRetentionTask, runRetentionSweep, shouldIncludeMethod, smrt, smrt as smrtRegistry, tableExists, unregisterRetentionTask, validateToolCall };
|
package/dist/collection.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export declare const MAX_FACET_FIELDS = 20;
|
|
|
7
7
|
export declare const DEFAULT_FACET_LIMIT = 50;
|
|
8
8
|
/** Hard ceiling for distinct values returned for one facet field. */
|
|
9
9
|
export declare const MAX_FACET_LIMIT = 1000;
|
|
10
|
+
/** Maximum number of qualified STI discriminators accepted by one read. */
|
|
11
|
+
export declare const MAX_STI_READ_SCOPE_TYPES = 50;
|
|
10
12
|
/**
|
|
11
13
|
* Keys from SmrtObject and SmrtClass that should not appear as user-facing
|
|
12
14
|
* create/update input fields. These are framework-internal properties.
|
|
@@ -120,12 +122,22 @@ export interface SmrtFacetOptions<T extends SmrtObject> {
|
|
|
120
122
|
fields: readonly (SmrtSelectField<T> | SmrtFacetRequest<T>)[];
|
|
121
123
|
/** The same SMRT WHERE syntax accepted by {@link SmrtCollection.list}. */
|
|
122
124
|
where?: SmrtListWhereClause<T>;
|
|
125
|
+
/** Explicit sibling discriminator scope for an STI child collection. */
|
|
126
|
+
stiScope?: SmrtStiReadScope;
|
|
123
127
|
}
|
|
124
128
|
/** Exact unfiltered and filtered row counts for a list scope. */
|
|
125
129
|
export interface SmrtCollectionCounts {
|
|
126
130
|
total: number;
|
|
127
131
|
filtered: number;
|
|
128
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Explicit, bounded discriminator scope for reads through an STI child
|
|
135
|
+
* collection. Every entry must be a registered qualified type in the same STI
|
|
136
|
+
* hierarchy as the collection item.
|
|
137
|
+
*/
|
|
138
|
+
export interface SmrtStiReadScope {
|
|
139
|
+
types: readonly string[];
|
|
140
|
+
}
|
|
129
141
|
export interface SmrtListOptions<ModelType extends SmrtObject> {
|
|
130
142
|
where?: SmrtListWhereClause<ModelType>;
|
|
131
143
|
offset?: number;
|
|
@@ -144,6 +156,11 @@ export interface SmrtListOptions<ModelType extends SmrtObject> {
|
|
|
144
156
|
* Opt-in read-through cache for this call (issue #1498).
|
|
145
157
|
*/
|
|
146
158
|
cache?: CollectionCacheConfig | false;
|
|
159
|
+
/**
|
|
160
|
+
* Opt in to reading an allowlist of sibling types through an STI child
|
|
161
|
+
* collection. Omit to retain the child-only discriminator scope.
|
|
162
|
+
*/
|
|
163
|
+
stiScope?: SmrtStiReadScope;
|
|
147
164
|
}
|
|
148
165
|
/**
|
|
149
166
|
* Declarative latest-row configuration for a declared `@oneToMany` relation.
|
|
@@ -275,6 +292,8 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
275
292
|
private getRegisteredItemClass;
|
|
276
293
|
private getResolvedItemClassName;
|
|
277
294
|
private getResolvedItemQualifiedName;
|
|
295
|
+
/** Apply and validate this collection's owned STI discriminator predicate. */
|
|
296
|
+
private applyStiReadScope;
|
|
278
297
|
/**
|
|
279
298
|
* Resolve the identifier whitelist and the sensitive-column blocklist that
|
|
280
299
|
* every caller-supplied identifier on this collection is checked against.
|
|
@@ -405,7 +424,13 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
405
424
|
* console.log(page[0].parent, page[0].latestRelated?.score);
|
|
406
425
|
* ```
|
|
407
426
|
*/
|
|
408
|
-
listWithLatestRelated(options: SmrtLatestRelatedListOptions<ModelType>
|
|
427
|
+
listWithLatestRelated(options: Omit<SmrtLatestRelatedListOptions<ModelType>, 'stiScope'> & {
|
|
428
|
+
stiScope: SmrtStiReadScope;
|
|
429
|
+
}): Promise<SmrtLatestRelatedRow<SmrtObject>[]>;
|
|
430
|
+
listWithLatestRelated(options: Omit<SmrtLatestRelatedListOptions<ModelType>, 'stiScope'> & {
|
|
431
|
+
stiScope?: undefined;
|
|
432
|
+
}): Promise<SmrtLatestRelatedRow<ModelType>[]>;
|
|
433
|
+
listWithLatestRelated(options: SmrtLatestRelatedListOptions<ModelType>): Promise<SmrtLatestRelatedRow<SmrtObject>[]>;
|
|
409
434
|
private formatProjectionRow;
|
|
410
435
|
/**
|
|
411
436
|
* Gets the class constructor for items in this collection
|
|
@@ -668,12 +693,32 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
668
693
|
*
|
|
669
694
|
* @returns Promise resolving to an array of model instances, or plain selected rows when `select` is present
|
|
670
695
|
*/
|
|
671
|
-
list<const Select extends readonly SmrtSelectField<ModelType>[]>(options: SmrtListOptions<ModelType> & {
|
|
696
|
+
list<const Select extends readonly SmrtSelectField<ModelType>[]>(options: Omit<SmrtListOptions<ModelType>, 'select' | 'stiScope'> & {
|
|
697
|
+
select: Select;
|
|
698
|
+
include?: never;
|
|
699
|
+
stiScope: SmrtStiReadScope;
|
|
700
|
+
}): Promise<Record<string, unknown>[]>;
|
|
701
|
+
list<const Select extends readonly SmrtSelectField<ModelType>[]>(options: Omit<SmrtListOptions<ModelType>, 'select' | 'stiScope'> & {
|
|
672
702
|
select: Select;
|
|
673
703
|
include?: never;
|
|
704
|
+
stiScope?: undefined;
|
|
674
705
|
}): Promise<SmrtSelectedRow<ModelType, Select>[]>;
|
|
675
|
-
list(options
|
|
706
|
+
list(options: Omit<SmrtListOptions<ModelType>, 'select' | 'stiScope'> & {
|
|
676
707
|
select?: undefined;
|
|
708
|
+
stiScope: SmrtStiReadScope;
|
|
709
|
+
}): Promise<SmrtObject[]>;
|
|
710
|
+
list(options?: undefined): Promise<ModelType[]>;
|
|
711
|
+
list(options: Omit<SmrtListOptions<ModelType>, 'select' | 'stiScope'> & {
|
|
712
|
+
select?: undefined;
|
|
713
|
+
stiScope?: undefined;
|
|
714
|
+
}): Promise<ModelType[]>;
|
|
715
|
+
list(options: (Omit<SmrtListOptions<ModelType>, 'select'> & {
|
|
716
|
+
select?: undefined;
|
|
717
|
+
}) | undefined): Promise<SmrtObject[]>;
|
|
718
|
+
list(options: SmrtListOptions<ModelType> | undefined): Promise<SmrtObject[] | Record<string, unknown>[]>;
|
|
719
|
+
list(options: Omit<SmrtListOptions<ModelType>, 'select' | 'stiScope'> & {
|
|
720
|
+
select?: undefined;
|
|
721
|
+
stiScope?: undefined;
|
|
677
722
|
}): Promise<ModelType[]>;
|
|
678
723
|
/**
|
|
679
724
|
* Eagerly load relationships for a collection of instances
|
|
@@ -895,6 +940,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
895
940
|
*/
|
|
896
941
|
count(options?: {
|
|
897
942
|
where?: SmrtListWhereClause<ModelType>;
|
|
943
|
+
stiScope?: SmrtStiReadScope;
|
|
898
944
|
}): Promise<number>;
|
|
899
945
|
/**
|
|
900
946
|
* Return database-backed distinct values and row counts for one or more
|
|
@@ -939,6 +985,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
939
985
|
*/
|
|
940
986
|
counts(options?: {
|
|
941
987
|
where?: SmrtListWhereClause<ModelType>;
|
|
988
|
+
stiScope?: SmrtStiReadScope;
|
|
942
989
|
}): Promise<SmrtCollectionCounts>;
|
|
943
990
|
/**
|
|
944
991
|
* Resolve this collection's STI child discriminator — the qualified item
|
|
@@ -997,6 +1044,12 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
997
1044
|
allowRawOnTenantScoped?: boolean;
|
|
998
1045
|
}): Promise<ModelType[]>;
|
|
999
1046
|
private hydrateResultRow;
|
|
1047
|
+
/**
|
|
1048
|
+
* Resolve inherited field metadata for an STI row's concrete discriminator.
|
|
1049
|
+
* The caller-provided collection fields remain the safe fallback for
|
|
1050
|
+
* non-polymorphic, malformed, or not-yet-registered rows.
|
|
1051
|
+
*/
|
|
1052
|
+
private resolveHydrationFields;
|
|
1000
1053
|
/**
|
|
1001
1054
|
* Hydrate rows in result order.
|
|
1002
1055
|
*
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAEL,KAAK,qBAAqB,EAQ3B,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA+B3C,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,KAAqB,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,eAAe,OAAiB,CAAC;AAE9C,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AA4H3C;;;GAGG;AACH,KAAK,gBAAgB,GACjB,MAAM,SAAS,GACf,YAAY,GACZ,sBAAsB,GACtB,KAAK,GACL,OAAO,GACP,UAAU,GACV,KAAK,GACL,KAAK,GACL,KAAK,GACL,YAAY,GACZ,SAAS,GACT,WAAW,GACX,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,eAAe,CAAC;AAEpB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CACzD,IAAI,CACF;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GACvD,KAAK,GACL,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACb,EACD,gBAAgB,CACjB,CACF,GAAG;IACF,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,UAAU,IAChD,eAAe,CAAC,CAAC,CAAC,GAClB,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAE3B,KAAK,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,IAAI,CAC7C;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GACvD,KAAK,GACL,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACb,EACD,gBAAgB,CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAC5C,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GACvC,IAAI,GACJ,MAAM,GACN,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,KAAK,yBAAyB,GAAG;IAC/B,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,UAAU,EACpB,MAAM,SAAS,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,IAC1C;KACD,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,MAAM,yBAAyB,GACpE,yBAAyB,CAAC,KAAK,CAAC,GAChC,KAAK,SAAS,MAAM,aAAa,CAAC,CAAC,CAAC,GAClC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GACvB,OAAO;CACd,CAAC;AAEF,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU;IACpD,+DAA+D;IAC/D,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU;IACpD;;;OAGG;IACH,MAAM,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,0EAA0E;IAC1E,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,UAAU;IAC3D,KAAK,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,8GAA8G;IAC9G,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,wEAAwE;AACxE,MAAM,MAAM,4BAA4B,CAAC,SAAS,SAAS,UAAU,IAAI,IAAI,CAC3E,eAAe,CAAC,SAAS,CAAC,EAC1B,QAAQ,GAAG,SAAS,GAAG,OAAO,CAC/B,GAAG;IACF,aAAa,EAAE,wBAAwB,CAAC;CACzC,CAAC;AAEF,iFAAiF;AACjF,MAAM,WAAW,oBAAoB,CAAC,SAAS,SAAS,UAAU;IAChE,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED;;;;;;;;GAQG;AACH,UAAU,yBAAyB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,MAAM,MAAM,uBAAuB,CAAC,SAAS,SAAS,UAAU,IAAI,CAAC,KAEnE,OAAO,EAAE,GAAG,KACT,SAAS,CAAC,GAAG;IAEhB,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACtD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,cAAc,CAAC,SAAS,SAAS,UAAU,CAAE,SAAQ,SAAS;IACzE;;;;OAIG;IACH,OAAO,CAAC,aAAa,CACd;IAEP;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAE1C,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,4BAA4B;IAOpC,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB;IA4EzB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,0BAA0B;IAkHlC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,eAAe;IAmKvB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,sBAAsB;IAqR9B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,6BAA6B;IAkBrC,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,gCAAgC;IAYxC,OAAO,CAAC,0BAA0B;IAsBlC;;;;;;;;OAQG;IACH,OAAO,CAAC,+BAA+B;IAmBvC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,oCAAoC;IAY5C,OAAO,CAAC,uBAAuB;IAoH/B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,6BAA6B;IAkBrC,OAAO,CAAC,iCAAiC;IAsCzC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,qBAAqB,CAChC,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;QACnE,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GACA,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,qBAAqB,CAChC,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;QACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;IAChC,qBAAqB,CAChC,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC/C,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;IA6W9C,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,SAAS,KAAK,UAAU,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAoB7D;IAED;;OAEG;IACI,YAAY,IAAI,uBAAuB,CAAC,SAAS,CAAC;IAIzD;;;;;;;;OAQG;IAEH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IAEhC;;;OAGG;IACH,MAAM,CAAC,QAAQ,IAAI,IAAI;IAiCvB;;OAEG;IACI,UAAU,EAAG,MAAM,CAAC;IAE3B;;;;;OAKG;gBACS,OAAO,GAAE,qBAA0B;IAiC/C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;WAOU,MAAM,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,EAC/C,IAAI,EAAE,KACJ,OAAO,CAAC,EAAE,qBAAqB,KAC5B,CAAC,EAKN,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,CAAC,CAAC;IAyFb;;;;;;;;;;;OAWG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxC;;;;OAIG;IACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhD;;;;;;;;;;;OAWG;IACU,OAAO,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI7B;;;;;;;;;;;;;;;OAeG;IACU,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI5D;;;;;;;;;;;OAWG;IACU,OAAO,CAClB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACf,GACL,OAAO,CAAC,SAAS,EAAE,CAAC;IAIvB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyB3D;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;;;OAOG;YACW,kBAAkB;IA4ChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,GAAG,CACd,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,EAC3C,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAA;KAAO,GACtD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAoF5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACU,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,eAAe,CAAC,SAAS,CAAC,EAAE,EAC1E,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACjE,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,eAAe,CAAC,SAAS,CAAC,EAAE,EAC1E,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACjE,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;IACnC,IAAI,CACf,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACjE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;IACX,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/C,IAAI,CACf,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACjE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,SAAS,EAAE,CAAC;IACV,IAAI,CACf,OAAO,EACH,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG;QAC5C,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,CAAC,GACF,SAAS,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC;IACX,IAAI,CACf,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,GAC9C,OAAO,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACvC,IAAI,CACf,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QACjE,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,GACA,OAAO,CAAC,SAAS,EAAE,CAAC;IA+HvB;;;;;;;;OAQG;YACW,sBAAsB;IA0CpC;;;;;;;OAOG;YACW,oBAAoB;IA4DlC;;;;;;;OAOG;YACW,kBAAkB;IAsGhC;;;;;;;;;;;OAWG;YACW,mBAAmB;IA6HjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACU,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC;IAwEvD;;;;;;;OAOG;YACW,iBAAiB;IAuE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACU,WAAW,CACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAqCxC;;;;;;OAMG;IACG,OAAO,CACX,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAI1C,OAAO,CAAC,WAAW;IA8BnB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAUrE;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;;;;;;;OASG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAiB1D;;;;;;OAMG;IACG,cAAc;IAMpB;;OAEG;IACH,IAAI,SAAS,WAsCZ;IAED;;;;OAIG;IACH,iBAAiB;IAejB;;;;;;;;;;;;;;;;OAgBG;IACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BjD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,KAAK,CAChB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACvC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KACxB;IA2CR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,MAAM,CACjB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GACnC,OAAO,CAAC,eAAe,EAAE,CAAC;IAkI7B;;;;;;;OAOG;IACU,MAAM,CACjB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACvC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KACxB,GACL,OAAO,CAAC,oBAAoB,CAAC;IAMhC;;;;;;;;;;;;;;;;;OAiBG;IACI,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAS3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACU,KAAK,CAChB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,OAAO,EAAO,EACtB,OAAO,GAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAO,GACjD,OAAO,CAAC,SAAS,EAAE,CAAC;YAuDT,gBAAgB;IAwD9B;;;;OAIG;YACW,sBAAsB;IA+BpC;;;;;;;;OAQG;YACW,iBAAiB;IAkB/B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,8BAA8B;IAgBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACU,QAAQ,CAAC,OAAO,EAAE;QAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCjB;;;;;;;;;;;;;;;;OAgBG;IACU,MAAM,CAAC,OAAO,EAAE;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwEpB;;;;;;;;;;;;;;;OAeG;IACU,SAAS,CACpB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;KACnB,GACL,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAqDhC;;;;;;;;;;;;;;;OAeG;IACU,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3E;;;;;;;;;;;;;;;OAeG;IACU,WAAW,CAAC,OAAO,EAAE;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACU,cAAc,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;KAC/B,GACL,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAqDtD;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,WAAW,CACtB,MAAM,EAAE,SAAS,GAAG,MAAM,EAC1B,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;KAClB,GACL,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAoEtD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,sBAAsB,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;KAC/B,GACL,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAmItD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,yBAAyB,CACpC,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;KAClE,GACL,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CA4DnD"}
|
package/dist/collection.js
CHANGED
|
@@ -29,6 +29,8 @@ var MAX_FACET_FIELDS = 20;
|
|
|
29
29
|
var DEFAULT_FACET_LIMIT = 50;
|
|
30
30
|
/** Hard ceiling for distinct values returned for one facet field. */
|
|
31
31
|
var MAX_FACET_LIMIT = MAX_LIST_LIMIT;
|
|
32
|
+
/** Maximum number of qualified STI discriminators accepted by one read. */
|
|
33
|
+
var MAX_STI_READ_SCOPE_TYPES = 50;
|
|
32
34
|
/**
|
|
33
35
|
* Validate an optional collection-level list bound (#2367).
|
|
34
36
|
*
|
|
@@ -168,6 +170,28 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
168
170
|
const registered = this.getRegisteredItemClass();
|
|
169
171
|
return registered?.qualifiedName || registered?.name || this._itemClass.name;
|
|
170
172
|
}
|
|
173
|
+
/** Apply and validate this collection's owned STI discriminator predicate. */
|
|
174
|
+
applyStiReadScope(where, stiScope) {
|
|
175
|
+
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
176
|
+
const stiBase = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti" ? ObjectRegistry.getSTIBase(itemQualifiedName) : null;
|
|
177
|
+
const isChild = stiBase !== null && stiBase !== itemQualifiedName;
|
|
178
|
+
if (stiScope === void 0) return isChild ? andWhereCondition(where, { _meta_type: itemQualifiedName }) : where;
|
|
179
|
+
if (!stiScope || typeof stiScope !== "object" || Array.isArray(stiScope) || Object.keys(stiScope).some((key) => key !== "types") || !Array.isArray(stiScope.types)) throw new Error("Invalid stiScope: expected { types: readonly qualified STI type[] }.");
|
|
180
|
+
if (!isChild) throw new Error("Invalid stiScope: explicit discriminator scopes require an STI child collection.");
|
|
181
|
+
if (stiScope.types.length === 0) throw new Error("Invalid stiScope: types must not be empty.");
|
|
182
|
+
if (stiScope.types.length > 50) throw new Error(`Invalid stiScope: at most 50 types are allowed.`);
|
|
183
|
+
const seen = /* @__PURE__ */ new Set();
|
|
184
|
+
for (const type of stiScope.types) {
|
|
185
|
+
if (typeof type !== "string" || !/^@[a-z0-9][a-z0-9._-]*(?:\/[a-z0-9][a-z0-9._-]*)?:[A-Za-z_$][A-Za-z0-9_$]*$/.test(type)) throw new Error(`Invalid stiScope type: '${String(type)}' must be a qualified SMRT type.`);
|
|
186
|
+
if (seen.has(type)) throw new Error(`Invalid stiScope: duplicate type '${type}'.`);
|
|
187
|
+
seen.add(type);
|
|
188
|
+
const registered = ObjectRegistry.getClass(type);
|
|
189
|
+
if (!registered || registered.qualifiedName !== type) throw new Error(`Invalid stiScope: unknown type '${type}'.`);
|
|
190
|
+
const typeBase = ObjectRegistry.getSTIBase(type);
|
|
191
|
+
if (ObjectRegistry.getTableStrategy(type) !== "sti" || typeBase !== stiBase) throw new Error(`Invalid stiScope: type '${type}' does not share STI root '${stiBase}'.`);
|
|
192
|
+
}
|
|
193
|
+
return andWhereCondition(where, { "_meta_type in": [...stiScope.types] });
|
|
194
|
+
}
|
|
171
195
|
/**
|
|
172
196
|
* Resolve the identifier whitelist and the sensitive-column blocklist that
|
|
173
197
|
* every caller-supplied identifier on this collection is checked against.
|
|
@@ -517,48 +541,16 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
517
541
|
if (!inverseForeignKey) throw new Error(`Could not find inverse foreignKey on ${relationship.targetClass} for oneToMany relationship ${relationship.fieldName}`);
|
|
518
542
|
return inverseForeignKey;
|
|
519
543
|
}
|
|
520
|
-
/**
|
|
521
|
-
* Load a page of hydrated parents with one selected latest row from a
|
|
522
|
-
* declared `@oneToMany` relation. The parent page is sliced only after the
|
|
523
|
-
* latest-row join and optional related sort are applied, so unrelated rows
|
|
524
|
-
* are never hydrated in application code.
|
|
525
|
-
*
|
|
526
|
-
* Missing related rows return `latestRelated: null`. Related order and sort
|
|
527
|
-
* fields place null values after non-null values consistently on all
|
|
528
|
-
* supported adapters. The related row is a plain projection and is never a
|
|
529
|
-
* full `SmrtObject` hydration.
|
|
530
|
-
*
|
|
531
|
-
* @example
|
|
532
|
-
* ```typescript
|
|
533
|
-
* const page = await opportunities.listWithLatestRelated({
|
|
534
|
-
* latestRelated: {
|
|
535
|
-
* relation: 'evaluations',
|
|
536
|
-
* orderBy: 'evaluatedAt DESC',
|
|
537
|
-
* select: ['score', 'evaluatedAt'],
|
|
538
|
-
* sortBy: 'score DESC',
|
|
539
|
-
* },
|
|
540
|
-
* limit: 25,
|
|
541
|
-
* offset: 0,
|
|
542
|
-
* });
|
|
543
|
-
* console.log(page[0].parent, page[0].latestRelated?.score);
|
|
544
|
-
* ```
|
|
545
|
-
*/
|
|
546
544
|
async listWithLatestRelated(options) {
|
|
547
545
|
await this.ensureStorageReady();
|
|
548
546
|
const itemClassName = this.getResolvedItemClassName();
|
|
549
547
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
550
548
|
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
551
549
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options;
|
|
552
|
-
let { where, offset, limit, orderBy } = interceptedOptions;
|
|
550
|
+
let { where, offset, limit, orderBy, stiScope } = interceptedOptions;
|
|
553
551
|
const latestOptions = interceptedOptions.latestRelated ?? options.latestRelated;
|
|
554
552
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
555
|
-
|
|
556
|
-
const stiBase = ObjectRegistry.getSTIBase(itemQualifiedName);
|
|
557
|
-
if (stiBase && stiBase !== itemQualifiedName) where = {
|
|
558
|
-
_meta_type: itemQualifiedName,
|
|
559
|
-
...where || {}
|
|
560
|
-
};
|
|
561
|
-
}
|
|
553
|
+
where = this.applyStiReadScope(where, stiScope);
|
|
562
554
|
where = resolveMetaTypeInWhere(where);
|
|
563
555
|
const relationship = ObjectRegistry.getRelationships(this._itemClass.name).find((candidate) => candidate.fieldName === latestOptions.relation && candidate.type === "oneToMany");
|
|
564
556
|
if (!relationship) throw new Error(`latestRelated.relation '${latestOptions.relation}' is not a declared oneToMany relationship on ${itemClassName}.`);
|
|
@@ -658,9 +650,10 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
658
650
|
const rows = await this.db.query(sql, ...relatedWhereValues, ...parentWhereValues, ...limitOffsetValues);
|
|
659
651
|
const instances = [];
|
|
660
652
|
const relatedAliasNames = new Set(relatedFieldAliases.values());
|
|
653
|
+
const polymorphicFields = /* @__PURE__ */ new Map();
|
|
661
654
|
for (const row of rows.rows) {
|
|
662
655
|
const parentRow = Object.fromEntries(Object.entries(row).filter(([key]) => !relatedAliasNames.has(key)));
|
|
663
|
-
instances.push(await this.hydrateResultRow(parentRow, parentFields, isSTI));
|
|
656
|
+
instances.push(await this.hydrateResultRow(parentRow, parentFields, isSTI, polymorphicFields));
|
|
664
657
|
}
|
|
665
658
|
const relatedByParentId = /* @__PURE__ */ new Map();
|
|
666
659
|
for (const row of rows.rows) {
|
|
@@ -1025,12 +1018,9 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1025
1018
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1026
1019
|
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
1027
1020
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1028
|
-
let { where, offset, limit, orderBy, select } = interceptedOptions;
|
|
1021
|
+
let { where, offset, limit, orderBy, select, stiScope } = interceptedOptions;
|
|
1029
1022
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
1030
|
-
|
|
1031
|
-
const stiBase = ObjectRegistry.getSTIBase(itemQualifiedName);
|
|
1032
|
-
if (stiBase && stiBase !== itemQualifiedName) where = andWhereCondition(where, { _meta_type: itemQualifiedName });
|
|
1033
|
-
}
|
|
1023
|
+
where = this.applyStiReadScope(where, stiScope);
|
|
1034
1024
|
where = resolveMetaTypeInWhere(where);
|
|
1035
1025
|
const { sql: whereSql, values: whereValues } = buildWhere(this.convertWhereKeys(where || {}));
|
|
1036
1026
|
const fields = this.getFieldsSync();
|
|
@@ -1592,14 +1582,10 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1592
1582
|
*/
|
|
1593
1583
|
async count(options = {}) {
|
|
1594
1584
|
await this.ensureStorageReady();
|
|
1595
|
-
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1596
1585
|
const itemClassName = this.getResolvedItemClassName();
|
|
1597
1586
|
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
1598
|
-
let { where } = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1599
|
-
|
|
1600
|
-
const stiBase = ObjectRegistry.getSTIBase(itemQualifiedName);
|
|
1601
|
-
if (stiBase && stiBase !== itemQualifiedName) where = andWhereCondition(where, { _meta_type: itemQualifiedName });
|
|
1602
|
-
}
|
|
1587
|
+
let { where, stiScope } = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1588
|
+
where = this.applyStiReadScope(where, stiScope);
|
|
1603
1589
|
where = resolveMetaTypeInWhere(where);
|
|
1604
1590
|
const { sql: whereSql, values: whereValues } = buildWhere(this.convertWhereKeys(where || {}));
|
|
1605
1591
|
return toSafeInteger((await this.db.query(`SELECT COUNT(*) as count FROM ${this.tableName} ${whereSql}`, ...whereValues)).rows[0].count, "Collection count");
|
|
@@ -1645,12 +1631,9 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1645
1631
|
const itemQualifiedName = this.getResolvedItemQualifiedName();
|
|
1646
1632
|
const interceptorContext = createInterceptorContext(itemClassName, "list", this.constructor.name);
|
|
1647
1633
|
const interceptedOptions = await GlobalInterceptors.executeBeforeList(itemClassName, options, interceptorContext) ?? options ?? {};
|
|
1648
|
-
let { where } = interceptedOptions;
|
|
1634
|
+
let { where, stiScope } = interceptedOptions;
|
|
1649
1635
|
const isSTI = ObjectRegistry.getTableStrategy(itemQualifiedName) === "sti";
|
|
1650
|
-
|
|
1651
|
-
const stiBase = ObjectRegistry.getSTIBase(itemQualifiedName);
|
|
1652
|
-
if (stiBase && stiBase !== itemQualifiedName) where = andWhereCondition(where, { _meta_type: itemQualifiedName });
|
|
1653
|
-
}
|
|
1636
|
+
where = this.applyStiReadScope(where, stiScope);
|
|
1654
1637
|
where = resolveMetaTypeInWhere(where);
|
|
1655
1638
|
const { sql: whereSql, values: whereValues } = buildWhere(this.convertWhereKeys(where || {}));
|
|
1656
1639
|
const fields = this.getFieldsSync();
|
|
@@ -1700,7 +1683,7 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1700
1683
|
*/
|
|
1701
1684
|
async counts(options = {}) {
|
|
1702
1685
|
return {
|
|
1703
|
-
total: await this.count(),
|
|
1686
|
+
total: await this.count({ stiScope: options.stiScope }),
|
|
1704
1687
|
filtered: await this.count(options)
|
|
1705
1688
|
};
|
|
1706
1689
|
}
|
|
@@ -1777,8 +1760,9 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1777
1760
|
const instances = await this.hydrateResultRows(result.rows, fields, isSTI);
|
|
1778
1761
|
return await GlobalInterceptors.executeAfterQuery(this._itemClass.name, instances, interceptorContext);
|
|
1779
1762
|
}
|
|
1780
|
-
async hydrateResultRow(row, fields, isSTI) {
|
|
1781
|
-
const
|
|
1763
|
+
async hydrateResultRow(row, fields, isSTI, polymorphicFields = /* @__PURE__ */ new Map()) {
|
|
1764
|
+
const hydrationFields = await this.resolveHydrationFields(row, fields, isSTI, polymorphicFields);
|
|
1765
|
+
const formattedData = this.withHydratedCoreFields(formatDataJs(row, hydrationFields));
|
|
1782
1766
|
const metaType = formattedData._meta_type;
|
|
1783
1767
|
if (isSTI && metaType) return await this.createPolymorphic(typeof metaType === "string" ? metaType : String(metaType), formattedData, { hydrateOnly: true });
|
|
1784
1768
|
const instanceParams = {
|
|
@@ -1796,6 +1780,26 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1796
1780
|
return instance;
|
|
1797
1781
|
}
|
|
1798
1782
|
/**
|
|
1783
|
+
* Resolve inherited field metadata for an STI row's concrete discriminator.
|
|
1784
|
+
* The caller-provided collection fields remain the safe fallback for
|
|
1785
|
+
* non-polymorphic, malformed, or not-yet-registered rows.
|
|
1786
|
+
*/
|
|
1787
|
+
async resolveHydrationFields(row, fallbackFields, isSTI, polymorphicFields) {
|
|
1788
|
+
if (!isSTI) return fallbackFields;
|
|
1789
|
+
const rawMetaType = row._meta_type ?? row._metaType;
|
|
1790
|
+
if (rawMetaType === null || rawMetaType === void 0) return fallbackFields;
|
|
1791
|
+
const metaType = String(rawMetaType);
|
|
1792
|
+
const cached = polymorphicFields.get(metaType);
|
|
1793
|
+
if (cached) return cached;
|
|
1794
|
+
if (!ObjectRegistry.getClass(metaType)) await ObjectRegistry.ensureManifestLoaded(metaType);
|
|
1795
|
+
const registeredFields = await ObjectRegistry.getAllFields(metaType);
|
|
1796
|
+
if (registeredFields.size === 0) return fallbackFields;
|
|
1797
|
+
const concreteFields = {};
|
|
1798
|
+
for (const [fieldName, field] of registeredFields) concreteFields[fieldName] = { type: field.type };
|
|
1799
|
+
polymorphicFields.set(metaType, concreteFields);
|
|
1800
|
+
return concreteFields;
|
|
1801
|
+
}
|
|
1802
|
+
/**
|
|
1799
1803
|
* Hydrate rows in result order.
|
|
1800
1804
|
*
|
|
1801
1805
|
* A model's initialize() hook may query through the collection database.
|
|
@@ -1806,7 +1810,8 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
1806
1810
|
*/
|
|
1807
1811
|
async hydrateResultRows(rows, fields, isSTI) {
|
|
1808
1812
|
const instances = [];
|
|
1809
|
-
|
|
1813
|
+
const polymorphicFields = /* @__PURE__ */ new Map();
|
|
1814
|
+
for (const row of rows) instances.push(await this.hydrateResultRow(row, fields, isSTI, polymorphicFields));
|
|
1810
1815
|
return instances;
|
|
1811
1816
|
}
|
|
1812
1817
|
/**
|
|
@@ -2306,6 +2311,6 @@ var SmrtCollection = class SmrtCollection extends SmrtClass {
|
|
|
2306
2311
|
}
|
|
2307
2312
|
};
|
|
2308
2313
|
//#endregion
|
|
2309
|
-
export { DEFAULT_FACET_LIMIT, MAX_FACET_FIELDS, MAX_FACET_LIMIT, SmrtCollection };
|
|
2314
|
+
export { DEFAULT_FACET_LIMIT, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_STI_READ_SCOPE_TYPES, SmrtCollection };
|
|
2310
2315
|
|
|
2311
2316
|
//# sourceMappingURL=collection.js.map
|