@powerportalspro/core 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -53,6 +53,12 @@ declare const Routes: {
53
53
  * values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
54
54
  */
55
55
  readonly localizationMergedDownload: "/api/localizations/merged/download";
56
+ /**
57
+ * GET — structured list of every key the cache will serve for a culture, its winning
58
+ * value, and the source that supplied it. `culture` is a query-string parameter. Backs
59
+ * the LocalizationAdmin "view merged sources" dialog. SystemAdmin-only.
60
+ */
61
+ readonly localizationMergedEntries: "/api/localizations/merged/entries";
56
62
  /** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
57
63
  readonly localizationTranslationAvailability: "/api/localizations/translation/availability";
58
64
  /** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
@@ -1302,6 +1308,43 @@ interface paths {
1302
1308
  patch?: never;
1303
1309
  trace?: never;
1304
1310
  };
1311
+ "/api/localizations/merged/entries": {
1312
+ parameters: {
1313
+ query?: never;
1314
+ header?: never;
1315
+ path?: never;
1316
+ cookie?: never;
1317
+ };
1318
+ get: {
1319
+ parameters: {
1320
+ query: {
1321
+ culture: string;
1322
+ };
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: never;
1328
+ responses: {
1329
+ /** @description OK */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content: {
1335
+ "application/json": components["schemas"]["MergedLocalizationEntry"][];
1336
+ };
1337
+ };
1338
+ };
1339
+ };
1340
+ put?: never;
1341
+ post?: never;
1342
+ delete?: never;
1343
+ options?: never;
1344
+ head?: never;
1345
+ patch?: never;
1346
+ trace?: never;
1347
+ };
1305
1348
  "/api/localizations/translation/availability": {
1306
1349
  parameters: {
1307
1350
  query?: never;
@@ -4109,16 +4152,7 @@ interface components {
4109
4152
  * don't use role-based authorization.
4110
4153
  */
4111
4154
  roles?: string[];
4112
- /**
4113
- * @description Logical name of the Dataverse table the signed-in user is backed by — typically
4114
- * `"contact"` for a portal user or `"systemuser"` for an internal user.
4115
- * Sourced from the principal's `tablename` claim that PowerPortalsPro's
4116
- * `SignInManager` stamps on every sign-in. `null` for anonymous
4117
- * requests, and also for hosts whose Identity stack doesn't emit the claim
4118
- * (e.g., a generic `IdentityUser` consumer that hasn't wired up a
4119
- * PortalUser-style backing entity).
4120
- */
4121
- tableName?: null | string;
4155
+ portalUserType?: null | components["schemas"]["PortalUserType"];
4122
4156
  /**
4123
4157
  * @description Logical name of the user's sibling Dataverse identity (`"contact"` or
4124
4158
  * `"systemuser"`) when one is registered — set on every principal refresh
@@ -4234,7 +4268,8 @@ interface components {
4234
4268
  */
4235
4269
  success?: boolean;
4236
4270
  };
4237
- EntityRole: number;
4271
+ /** @enum {integer} */
4272
+ EntityRole: 0 | 1;
4238
4273
  /**
4239
4274
  * @description One option presented to the user when a single external sign-in matches
4240
4275
  * both a Dataverse `systemuser` and a `contact`. Used by
@@ -4841,6 +4876,33 @@ interface components {
4841
4876
  /** @description The schema name of the relationship in Dataverse. */
4842
4877
  relationshipName: string;
4843
4878
  };
4879
+ /**
4880
+ * @description One merged localization key for a culture, paired with the source that supplied the
4881
+ * winning value. Backs the `LocalizationAdmin` "view merged sources" dialog — the
4882
+ * same data the merged-download produces, but per-key annotated with its origin so an
4883
+ * admin can see exactly which file / web resource / metadata table a given string came
4884
+ * from. Returned sorted by string MergedLocalizationEntry.Key. Surfaced via
4885
+ * Task<IReadOnlyList<MergedLocalizationEntry>> IPowerPortalsProService.GetMergedLocalizationEntriesAsync(string culture).
4886
+ */
4887
+ MergedLocalizationEntry: {
4888
+ /** @description The flat dot-delimited localization key (lowercased, as stored in the cache). */
4889
+ key: string;
4890
+ /** @description The winning value for this key in the requested culture (post-merge). */
4891
+ value: string;
4892
+ /**
4893
+ * @description Stable identifier of the source that supplied the winning value
4894
+ * (see string LocalizationSourceLoad.SourceId). Empty when no source
4895
+ * contributed a non-empty value for the key.
4896
+ */
4897
+ sourceId: string;
4898
+ /**
4899
+ * @description Human-readable name/location of the winning source — the file path, web-resource
4900
+ * name, or Dataverse-metadata display name. Empty when unattributed.
4901
+ */
4902
+ sourceDisplayName: string;
4903
+ /** @description The kind of the winning source — drives the "Kind" column / grouping in the UI. */
4904
+ sourceKind: components["schemas"]["LocalizationSourceKind"];
4905
+ };
4844
4906
  /** @description Metadata for a Dataverse one-to-many (1:N) relationship between a referenced (parent) table and a referencing (child) table. */
4845
4907
  OneToManyMetadata: {
4846
4908
  /** @description The logical name of the referenced (parent) table — the "one" side of the relationship. */
@@ -5059,13 +5121,25 @@ interface components {
5059
5121
  * @description The total number of records that match the query, when the server returned a count. Null when the count was not requested or could not be computed.
5060
5122
  */
5061
5123
  totalRecordCount?: null | number | string;
5062
- /** @description The opaque paging cookie used by Dataverse to efficiently fetch the next page. Null when there are no further pages. */
5124
+ /**
5125
+ * @description The opaque paging cookie used by Dataverse to efficiently fetch the next page. Dataverse still issues a
5126
+ * cookie on the final populated page (it only comes back null once a page past the end is requested), so this
5127
+ * is not an end-of-data signal — use bool? PagingInfo.MoreRecords for that.
5128
+ */
5063
5129
  pagingCookie?: null | string;
5064
5130
  /**
5065
5131
  * Format: int32
5066
5132
  * @description The 1-based page number of the records in the response.
5067
5133
  */
5068
5134
  pageNumber?: number | string;
5135
+ /**
5136
+ * @description Whether Dataverse reports further pages beyond this one (`EntityCollection.MoreRecords`). This is the
5137
+ * authoritative end-of-data signal for sequential paging: int? PagingInfo.TotalRecordCount is computed by
5138
+ * Dataverse before the portal's per-row permission handlers drop rows, so the rows a caller accumulates can
5139
+ * legitimately total fewer than the count, and string? PagingInfo.PagingCookie is still populated on the last
5140
+ * populated page. Null when the source of the response cannot report it.
5141
+ */
5142
+ moreRecords?: null | boolean;
5069
5143
  };
5070
5144
  /**
5071
5145
  * @description Returned by `GET /api/auth/external-login/pending` when a recent OAuth
@@ -5140,6 +5214,8 @@ interface components {
5140
5214
  [key: string]: string;
5141
5215
  };
5142
5216
  };
5217
+ /** @enum {integer} */
5218
+ PortalUserType: 0 | 1 | 2;
5143
5219
  ProblemDetails: {
5144
5220
  type?: null | string;
5145
5221
  title?: null | string;
@@ -5355,6 +5431,15 @@ interface components {
5355
5431
  * so clients can match this directly against the property key.
5356
5432
  */
5357
5433
  columnName: string;
5434
+ /**
5435
+ * @description Logical name of the table this column actually belongs to. For a primary-entity column
5436
+ * this is the view's main table; for a linked-entity column it is the <em>related</em>
5437
+ * table the column lives on (e.g. `contact` for an account view's primary-contact
5438
+ * email column). Lets a client attribute each column to its owning table without a
5439
+ * separate metadata round-trip — needed to build the column's localization key, which is
5440
+ * keyed by the owning table, not the grid's primary table.
5441
+ */
5442
+ tableName: string;
5358
5443
  /**
5359
5444
  * @description Localized display name, resolved against the user's locale via
5360
5445
  * the framework's localization layer. Falls back through
@@ -5802,7 +5887,8 @@ interface components {
5802
5887
  */
5803
5888
  displayName?: null | string;
5804
5889
  };
5805
- ViewType: number;
5890
+ /** @enum {integer} */
5891
+ ViewType: 0 | 1 | 2 | 4 | 32 | 64 | 2048;
5806
5892
  };
5807
5893
  responses: never;
5808
5894
  parameters: never;
@@ -6180,6 +6266,13 @@ declare const DeletePersonalDataResult: {
6180
6266
  readonly RequireLocalPassword: 2;
6181
6267
  };
6182
6268
  type DeletePersonalDataResult = (typeof DeletePersonalDataResult)[keyof typeof DeletePersonalDataResult];
6269
+ declare const EntityRole: {
6270
+ /** The entity plays the "referenced" (primary) role. */
6271
+ readonly Referenced: 0;
6272
+ /** The entity plays the "referencing" (related) role. */
6273
+ readonly Referencing: 1;
6274
+ };
6275
+ type EntityRole = (typeof EntityRole)[keyof typeof EntityRole];
6183
6276
  /**
6184
6277
  * Which Dataverse table backs an external-login candidate. Members carry
6185
6278
  * explicit integer values so the JSON wire form is a stable contract
@@ -6250,6 +6343,15 @@ declare const LoginResult: {
6250
6343
  readonly LockedOut: 4;
6251
6344
  };
6252
6345
  type LoginResult = (typeof LoginResult)[keyof typeof LoginResult];
6346
+ declare const PortalUserType: {
6347
+ /** A portal contact under the classic (portal-side) security model — no stub systemuser; permission handlers enforce access. */
6348
+ readonly Contact: 0;
6349
+ /** A real internal Dataverse systemuser (e.g. Entra ID staff sign-in). */
6350
+ readonly SystemUser: 1;
6351
+ /** A portal contact whose Dataverse access is enforced through the system-managed (C2) stub systemuser provisioned for it under the Dataverse-native security model. Must never be presented as an internal user. */
6352
+ readonly ContactStubUser: 2;
6353
+ };
6354
+ type PortalUserType = (typeof PortalUserType)[keyof typeof PortalUserType];
6253
6355
  /**
6254
6356
  * Outcome of a RegisterRequest. Members carry explicit integer
6255
6357
  * values so the JSON wire form is a stable contract across reorderings.
@@ -6348,6 +6450,23 @@ declare const TableSecurityPermission: {
6348
6450
  readonly All: 63;
6349
6451
  };
6350
6452
  type TableSecurityPermission = (typeof TableSecurityPermission)[keyof typeof TableSecurityPermission];
6453
+ declare const ViewType: {
6454
+ /** A public view visible to all users. */
6455
+ readonly Public: 0;
6456
+ /** An advanced find view. */
6457
+ readonly AdvancedFind: 1;
6458
+ /** A view used for displaying associated records. */
6459
+ readonly Associated: 2;
6460
+ /** A view used for Quick Find search. */
6461
+ readonly QuickFind: 4;
6462
+ /** A view used for displaying team or queue members. */
6463
+ readonly Members: 32;
6464
+ /** A view used in lookup dialogs. */
6465
+ readonly Lookup: 64;
6466
+ /** A view used for the lookup display format. */
6467
+ readonly LookupDisplay: 2048;
6468
+ };
6469
+ type ViewType = (typeof ViewType)[keyof typeof ViewType];
6351
6470
 
6352
6471
  type Schemas = components['schemas'];
6353
6472
  type TableRecord$1 = Schemas['TableRecord'];
@@ -6413,6 +6532,7 @@ type LocalizationPipelineConfiguration = Schemas['LocalizationPipelineConfigurat
6413
6532
  type LocalizationSourceLoad = Schemas['LocalizationSourceLoad'];
6414
6533
  type LocalizationSourceKind = Schemas['LocalizationSourceKind'];
6415
6534
  type LocalizationSourceStatus = Schemas['LocalizationSourceStatus'];
6535
+ type MergedLocalizationEntry = Schemas['MergedLocalizationEntry'];
6416
6536
  /**
6417
6537
  * A localization file pulled from the per-source or merged download endpoint:
6418
6538
  * the UTF-8 JSON bytes plus the server-suggested filename (parsed from the
@@ -6495,6 +6615,13 @@ declare class PowerPortalsProClient {
6495
6615
  * Returns `null` when the culture has no entries (404). SystemAdmin-gated.
6496
6616
  */
6497
6617
  downloadMergedLocalizationsAsync(culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
6618
+ /**
6619
+ * Reads the merged localization keys for a culture as a structured list — every key the
6620
+ * cache will serve, its winning value, and which source supplied it. Same data as
6621
+ * {@link downloadMergedLocalizationsAsync} but per-key annotated with provenance, for the
6622
+ * `<LocalizationAdmin />` "view merged sources" dialog. Sorted by key. SystemAdmin-gated.
6623
+ */
6624
+ getMergedLocalizationEntriesAsync(culture: string, signal?: AbortSignal): Promise<readonly MergedLocalizationEntry[]>;
6498
6625
  /**
6499
6626
  * Shared binary-download path for the two localization download endpoints. Reads
6500
6627
  * the raw bytes via `response.arrayBuffer()` and derives the filename from the
@@ -6772,4 +6899,4 @@ declare function getRecordReferenceId(record: Pick<TableRecord, 'id' | '_idForCr
6772
6899
 
6773
6900
  declare const VERSION = "0.1.0";
6774
6901
 
6775
- export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthOptionsResponse, type AuthenticatorSetupResponse, type BaseDataPoint, type CacheClearResult, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type Currency, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest, ExternalLoginCandidateKind, type ExternalLoginProviderInfo, type ExternalLoginsResponse, FileArchiveResponseFormat, type FileInfo, type Forget2faResponse, type GridDataRequest, type GridDataResponse, type GridFilterBase, InvalidOperationError, JoinOperator, type LocalizationFileDownload, type LocalizationOverview, type LocalizationPipelineConfiguration, type LocalizationSourceKind, type LocalizationSourceLoad, type LocalizationSourceStatus, type LoginRequest, type LoginResponse, LoginResult, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PowerPortalsProClient, PowerPortalsProError, type PowerPortalsProErrorInit, type ProblemDetails, type ProfileResponse, type RecoveryCodesResponse, type RegisterRequest, type RegisterResponse, RegisterResult, type RelationshipFilter, RelationshipFilterMode, type RemoveExternalLoginRequest, type RemoveExternalLoginResponse, type RequestOptions, type RequestPasswordResetRequest, RequiredLevel, type ResendEmailConfirmationRequest, type ResetAuthenticatorResponse, type ResetPasswordRequest, type ResetPasswordResponse, ResetPasswordResult, type ResolvedColumn, type RetrieveRecordsResponse, Routes, type SelectExternalLoginRequest, type SendEmailConfirmationResponse, type SetPasswordRequest, type SetPasswordResponse, type SwitchIdentityResponse, SwitchIdentityResult, type TableMetadata, type TableRecord$1 as TableRecord, type TableRecordReference, TableSecurityPermission, type TranslatedFile, type TranslationAvailability, type TranslationLanguageOption, type TranslationRequest, type TranslationResult, Transport, type TransportOptions, type TwoFactorStatusResponse, UnauthorizedAccessError, type UpdateProfileRequest, type UpdateRequest, type UpdateResponse, VERSION, type VerifyAuthenticatorRequest, type VerifyAuthenticatorResponse, type VerifyTwoFactorRequest, type VerifyTwoFactorResponse, type ViewMetadata, type components, getRecordReferenceId, mapProblemDetails, type paths };
6902
+ export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthOptionsResponse, type AuthenticatorSetupResponse, type BaseDataPoint, type CacheClearResult, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type Currency, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest, EntityRole, ExternalLoginCandidateKind, type ExternalLoginProviderInfo, type ExternalLoginsResponse, FileArchiveResponseFormat, type FileInfo, type Forget2faResponse, type GridDataRequest, type GridDataResponse, type GridFilterBase, InvalidOperationError, JoinOperator, type LocalizationFileDownload, type LocalizationOverview, type LocalizationPipelineConfiguration, type LocalizationSourceKind, type LocalizationSourceLoad, type LocalizationSourceStatus, type LoginRequest, type LoginResponse, LoginResult, type MergedLocalizationEntry, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PortalUserType, PowerPortalsProClient, PowerPortalsProError, type PowerPortalsProErrorInit, type ProblemDetails, type ProfileResponse, type RecoveryCodesResponse, type RegisterRequest, type RegisterResponse, RegisterResult, type RelationshipFilter, RelationshipFilterMode, type RemoveExternalLoginRequest, type RemoveExternalLoginResponse, type RequestOptions, type RequestPasswordResetRequest, RequiredLevel, type ResendEmailConfirmationRequest, type ResetAuthenticatorResponse, type ResetPasswordRequest, type ResetPasswordResponse, ResetPasswordResult, type ResolvedColumn, type RetrieveRecordsResponse, Routes, type SelectExternalLoginRequest, type SendEmailConfirmationResponse, type SetPasswordRequest, type SetPasswordResponse, type SwitchIdentityResponse, SwitchIdentityResult, type TableMetadata, type TableRecord$1 as TableRecord, type TableRecordReference, TableSecurityPermission, type TranslatedFile, type TranslationAvailability, type TranslationLanguageOption, type TranslationRequest, type TranslationResult, Transport, type TransportOptions, type TwoFactorStatusResponse, UnauthorizedAccessError, type UpdateProfileRequest, type UpdateRequest, type UpdateResponse, VERSION, type VerifyAuthenticatorRequest, type VerifyAuthenticatorResponse, type VerifyTwoFactorRequest, type VerifyTwoFactorResponse, type ViewMetadata, ViewType, type components, getRecordReferenceId, mapProblemDetails, type paths };
package/dist/index.d.ts CHANGED
@@ -53,6 +53,12 @@ declare const Routes: {
53
53
  * values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
54
54
  */
55
55
  readonly localizationMergedDownload: "/api/localizations/merged/download";
56
+ /**
57
+ * GET — structured list of every key the cache will serve for a culture, its winning
58
+ * value, and the source that supplied it. `culture` is a query-string parameter. Backs
59
+ * the LocalizationAdmin "view merged sources" dialog. SystemAdmin-only.
60
+ */
61
+ readonly localizationMergedEntries: "/api/localizations/merged/entries";
56
62
  /** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
57
63
  readonly localizationTranslationAvailability: "/api/localizations/translation/availability";
58
64
  /** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
@@ -1302,6 +1308,43 @@ interface paths {
1302
1308
  patch?: never;
1303
1309
  trace?: never;
1304
1310
  };
1311
+ "/api/localizations/merged/entries": {
1312
+ parameters: {
1313
+ query?: never;
1314
+ header?: never;
1315
+ path?: never;
1316
+ cookie?: never;
1317
+ };
1318
+ get: {
1319
+ parameters: {
1320
+ query: {
1321
+ culture: string;
1322
+ };
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: never;
1328
+ responses: {
1329
+ /** @description OK */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content: {
1335
+ "application/json": components["schemas"]["MergedLocalizationEntry"][];
1336
+ };
1337
+ };
1338
+ };
1339
+ };
1340
+ put?: never;
1341
+ post?: never;
1342
+ delete?: never;
1343
+ options?: never;
1344
+ head?: never;
1345
+ patch?: never;
1346
+ trace?: never;
1347
+ };
1305
1348
  "/api/localizations/translation/availability": {
1306
1349
  parameters: {
1307
1350
  query?: never;
@@ -4109,16 +4152,7 @@ interface components {
4109
4152
  * don't use role-based authorization.
4110
4153
  */
4111
4154
  roles?: string[];
4112
- /**
4113
- * @description Logical name of the Dataverse table the signed-in user is backed by — typically
4114
- * `"contact"` for a portal user or `"systemuser"` for an internal user.
4115
- * Sourced from the principal's `tablename` claim that PowerPortalsPro's
4116
- * `SignInManager` stamps on every sign-in. `null` for anonymous
4117
- * requests, and also for hosts whose Identity stack doesn't emit the claim
4118
- * (e.g., a generic `IdentityUser` consumer that hasn't wired up a
4119
- * PortalUser-style backing entity).
4120
- */
4121
- tableName?: null | string;
4155
+ portalUserType?: null | components["schemas"]["PortalUserType"];
4122
4156
  /**
4123
4157
  * @description Logical name of the user's sibling Dataverse identity (`"contact"` or
4124
4158
  * `"systemuser"`) when one is registered — set on every principal refresh
@@ -4234,7 +4268,8 @@ interface components {
4234
4268
  */
4235
4269
  success?: boolean;
4236
4270
  };
4237
- EntityRole: number;
4271
+ /** @enum {integer} */
4272
+ EntityRole: 0 | 1;
4238
4273
  /**
4239
4274
  * @description One option presented to the user when a single external sign-in matches
4240
4275
  * both a Dataverse `systemuser` and a `contact`. Used by
@@ -4841,6 +4876,33 @@ interface components {
4841
4876
  /** @description The schema name of the relationship in Dataverse. */
4842
4877
  relationshipName: string;
4843
4878
  };
4879
+ /**
4880
+ * @description One merged localization key for a culture, paired with the source that supplied the
4881
+ * winning value. Backs the `LocalizationAdmin` "view merged sources" dialog — the
4882
+ * same data the merged-download produces, but per-key annotated with its origin so an
4883
+ * admin can see exactly which file / web resource / metadata table a given string came
4884
+ * from. Returned sorted by string MergedLocalizationEntry.Key. Surfaced via
4885
+ * Task&lt;IReadOnlyList&lt;MergedLocalizationEntry&gt;&gt; IPowerPortalsProService.GetMergedLocalizationEntriesAsync(string culture).
4886
+ */
4887
+ MergedLocalizationEntry: {
4888
+ /** @description The flat dot-delimited localization key (lowercased, as stored in the cache). */
4889
+ key: string;
4890
+ /** @description The winning value for this key in the requested culture (post-merge). */
4891
+ value: string;
4892
+ /**
4893
+ * @description Stable identifier of the source that supplied the winning value
4894
+ * (see string LocalizationSourceLoad.SourceId). Empty when no source
4895
+ * contributed a non-empty value for the key.
4896
+ */
4897
+ sourceId: string;
4898
+ /**
4899
+ * @description Human-readable name/location of the winning source — the file path, web-resource
4900
+ * name, or Dataverse-metadata display name. Empty when unattributed.
4901
+ */
4902
+ sourceDisplayName: string;
4903
+ /** @description The kind of the winning source — drives the "Kind" column / grouping in the UI. */
4904
+ sourceKind: components["schemas"]["LocalizationSourceKind"];
4905
+ };
4844
4906
  /** @description Metadata for a Dataverse one-to-many (1:N) relationship between a referenced (parent) table and a referencing (child) table. */
4845
4907
  OneToManyMetadata: {
4846
4908
  /** @description The logical name of the referenced (parent) table — the "one" side of the relationship. */
@@ -5059,13 +5121,25 @@ interface components {
5059
5121
  * @description The total number of records that match the query, when the server returned a count. Null when the count was not requested or could not be computed.
5060
5122
  */
5061
5123
  totalRecordCount?: null | number | string;
5062
- /** @description The opaque paging cookie used by Dataverse to efficiently fetch the next page. Null when there are no further pages. */
5124
+ /**
5125
+ * @description The opaque paging cookie used by Dataverse to efficiently fetch the next page. Dataverse still issues a
5126
+ * cookie on the final populated page (it only comes back null once a page past the end is requested), so this
5127
+ * is not an end-of-data signal — use bool? PagingInfo.MoreRecords for that.
5128
+ */
5063
5129
  pagingCookie?: null | string;
5064
5130
  /**
5065
5131
  * Format: int32
5066
5132
  * @description The 1-based page number of the records in the response.
5067
5133
  */
5068
5134
  pageNumber?: number | string;
5135
+ /**
5136
+ * @description Whether Dataverse reports further pages beyond this one (`EntityCollection.MoreRecords`). This is the
5137
+ * authoritative end-of-data signal for sequential paging: int? PagingInfo.TotalRecordCount is computed by
5138
+ * Dataverse before the portal's per-row permission handlers drop rows, so the rows a caller accumulates can
5139
+ * legitimately total fewer than the count, and string? PagingInfo.PagingCookie is still populated on the last
5140
+ * populated page. Null when the source of the response cannot report it.
5141
+ */
5142
+ moreRecords?: null | boolean;
5069
5143
  };
5070
5144
  /**
5071
5145
  * @description Returned by `GET /api/auth/external-login/pending` when a recent OAuth
@@ -5140,6 +5214,8 @@ interface components {
5140
5214
  [key: string]: string;
5141
5215
  };
5142
5216
  };
5217
+ /** @enum {integer} */
5218
+ PortalUserType: 0 | 1 | 2;
5143
5219
  ProblemDetails: {
5144
5220
  type?: null | string;
5145
5221
  title?: null | string;
@@ -5355,6 +5431,15 @@ interface components {
5355
5431
  * so clients can match this directly against the property key.
5356
5432
  */
5357
5433
  columnName: string;
5434
+ /**
5435
+ * @description Logical name of the table this column actually belongs to. For a primary-entity column
5436
+ * this is the view's main table; for a linked-entity column it is the <em>related</em>
5437
+ * table the column lives on (e.g. `contact` for an account view's primary-contact
5438
+ * email column). Lets a client attribute each column to its owning table without a
5439
+ * separate metadata round-trip — needed to build the column's localization key, which is
5440
+ * keyed by the owning table, not the grid's primary table.
5441
+ */
5442
+ tableName: string;
5358
5443
  /**
5359
5444
  * @description Localized display name, resolved against the user's locale via
5360
5445
  * the framework's localization layer. Falls back through
@@ -5802,7 +5887,8 @@ interface components {
5802
5887
  */
5803
5888
  displayName?: null | string;
5804
5889
  };
5805
- ViewType: number;
5890
+ /** @enum {integer} */
5891
+ ViewType: 0 | 1 | 2 | 4 | 32 | 64 | 2048;
5806
5892
  };
5807
5893
  responses: never;
5808
5894
  parameters: never;
@@ -6180,6 +6266,13 @@ declare const DeletePersonalDataResult: {
6180
6266
  readonly RequireLocalPassword: 2;
6181
6267
  };
6182
6268
  type DeletePersonalDataResult = (typeof DeletePersonalDataResult)[keyof typeof DeletePersonalDataResult];
6269
+ declare const EntityRole: {
6270
+ /** The entity plays the "referenced" (primary) role. */
6271
+ readonly Referenced: 0;
6272
+ /** The entity plays the "referencing" (related) role. */
6273
+ readonly Referencing: 1;
6274
+ };
6275
+ type EntityRole = (typeof EntityRole)[keyof typeof EntityRole];
6183
6276
  /**
6184
6277
  * Which Dataverse table backs an external-login candidate. Members carry
6185
6278
  * explicit integer values so the JSON wire form is a stable contract
@@ -6250,6 +6343,15 @@ declare const LoginResult: {
6250
6343
  readonly LockedOut: 4;
6251
6344
  };
6252
6345
  type LoginResult = (typeof LoginResult)[keyof typeof LoginResult];
6346
+ declare const PortalUserType: {
6347
+ /** A portal contact under the classic (portal-side) security model — no stub systemuser; permission handlers enforce access. */
6348
+ readonly Contact: 0;
6349
+ /** A real internal Dataverse systemuser (e.g. Entra ID staff sign-in). */
6350
+ readonly SystemUser: 1;
6351
+ /** A portal contact whose Dataverse access is enforced through the system-managed (C2) stub systemuser provisioned for it under the Dataverse-native security model. Must never be presented as an internal user. */
6352
+ readonly ContactStubUser: 2;
6353
+ };
6354
+ type PortalUserType = (typeof PortalUserType)[keyof typeof PortalUserType];
6253
6355
  /**
6254
6356
  * Outcome of a RegisterRequest. Members carry explicit integer
6255
6357
  * values so the JSON wire form is a stable contract across reorderings.
@@ -6348,6 +6450,23 @@ declare const TableSecurityPermission: {
6348
6450
  readonly All: 63;
6349
6451
  };
6350
6452
  type TableSecurityPermission = (typeof TableSecurityPermission)[keyof typeof TableSecurityPermission];
6453
+ declare const ViewType: {
6454
+ /** A public view visible to all users. */
6455
+ readonly Public: 0;
6456
+ /** An advanced find view. */
6457
+ readonly AdvancedFind: 1;
6458
+ /** A view used for displaying associated records. */
6459
+ readonly Associated: 2;
6460
+ /** A view used for Quick Find search. */
6461
+ readonly QuickFind: 4;
6462
+ /** A view used for displaying team or queue members. */
6463
+ readonly Members: 32;
6464
+ /** A view used in lookup dialogs. */
6465
+ readonly Lookup: 64;
6466
+ /** A view used for the lookup display format. */
6467
+ readonly LookupDisplay: 2048;
6468
+ };
6469
+ type ViewType = (typeof ViewType)[keyof typeof ViewType];
6351
6470
 
6352
6471
  type Schemas = components['schemas'];
6353
6472
  type TableRecord$1 = Schemas['TableRecord'];
@@ -6413,6 +6532,7 @@ type LocalizationPipelineConfiguration = Schemas['LocalizationPipelineConfigurat
6413
6532
  type LocalizationSourceLoad = Schemas['LocalizationSourceLoad'];
6414
6533
  type LocalizationSourceKind = Schemas['LocalizationSourceKind'];
6415
6534
  type LocalizationSourceStatus = Schemas['LocalizationSourceStatus'];
6535
+ type MergedLocalizationEntry = Schemas['MergedLocalizationEntry'];
6416
6536
  /**
6417
6537
  * A localization file pulled from the per-source or merged download endpoint:
6418
6538
  * the UTF-8 JSON bytes plus the server-suggested filename (parsed from the
@@ -6495,6 +6615,13 @@ declare class PowerPortalsProClient {
6495
6615
  * Returns `null` when the culture has no entries (404). SystemAdmin-gated.
6496
6616
  */
6497
6617
  downloadMergedLocalizationsAsync(culture: string, signal?: AbortSignal): Promise<LocalizationFileDownload | null>;
6618
+ /**
6619
+ * Reads the merged localization keys for a culture as a structured list — every key the
6620
+ * cache will serve, its winning value, and which source supplied it. Same data as
6621
+ * {@link downloadMergedLocalizationsAsync} but per-key annotated with provenance, for the
6622
+ * `<LocalizationAdmin />` "view merged sources" dialog. Sorted by key. SystemAdmin-gated.
6623
+ */
6624
+ getMergedLocalizationEntriesAsync(culture: string, signal?: AbortSignal): Promise<readonly MergedLocalizationEntry[]>;
6498
6625
  /**
6499
6626
  * Shared binary-download path for the two localization download endpoints. Reads
6500
6627
  * the raw bytes via `response.arrayBuffer()` and derives the filename from the
@@ -6772,4 +6899,4 @@ declare function getRecordReferenceId(record: Pick<TableRecord, 'id' | '_idForCr
6772
6899
 
6773
6900
  declare const VERSION = "0.1.0";
6774
6901
 
6775
- export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthOptionsResponse, type AuthenticatorSetupResponse, type BaseDataPoint, type CacheClearResult, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type Currency, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest, ExternalLoginCandidateKind, type ExternalLoginProviderInfo, type ExternalLoginsResponse, FileArchiveResponseFormat, type FileInfo, type Forget2faResponse, type GridDataRequest, type GridDataResponse, type GridFilterBase, InvalidOperationError, JoinOperator, type LocalizationFileDownload, type LocalizationOverview, type LocalizationPipelineConfiguration, type LocalizationSourceKind, type LocalizationSourceLoad, type LocalizationSourceStatus, type LoginRequest, type LoginResponse, LoginResult, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PowerPortalsProClient, PowerPortalsProError, type PowerPortalsProErrorInit, type ProblemDetails, type ProfileResponse, type RecoveryCodesResponse, type RegisterRequest, type RegisterResponse, RegisterResult, type RelationshipFilter, RelationshipFilterMode, type RemoveExternalLoginRequest, type RemoveExternalLoginResponse, type RequestOptions, type RequestPasswordResetRequest, RequiredLevel, type ResendEmailConfirmationRequest, type ResetAuthenticatorResponse, type ResetPasswordRequest, type ResetPasswordResponse, ResetPasswordResult, type ResolvedColumn, type RetrieveRecordsResponse, Routes, type SelectExternalLoginRequest, type SendEmailConfirmationResponse, type SetPasswordRequest, type SetPasswordResponse, type SwitchIdentityResponse, SwitchIdentityResult, type TableMetadata, type TableRecord$1 as TableRecord, type TableRecordReference, TableSecurityPermission, type TranslatedFile, type TranslationAvailability, type TranslationLanguageOption, type TranslationRequest, type TranslationResult, Transport, type TransportOptions, type TwoFactorStatusResponse, UnauthorizedAccessError, type UpdateProfileRequest, type UpdateRequest, type UpdateResponse, VERSION, type VerifyAuthenticatorRequest, type VerifyAuthenticatorResponse, type VerifyTwoFactorRequest, type VerifyTwoFactorResponse, type ViewMetadata, type components, getRecordReferenceId, mapProblemDetails, type paths };
6902
+ export { type AggregateChartConfig, AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, type AssociateRequest, AuthClient, type AuthOptionsResponse, type AuthenticatorSetupResponse, type BaseDataPoint, type CacheClearResult, type ChangeEmailRequest, type ChangeEmailResponse, ChangeEmailResult, type ChangePasswordRequest, type ChangePasswordResponse, ChangePasswordResult, type ChartAggregation, type ChartData, type ChartDataRequest, type ChartDataResponse, type ChartDataset, ChartDateGrouping, type ChartGrouping, type ChartLinkedEntity, type ColumnSort, ColumnType, type ConfirmEmailRequest, type ConfirmEmailResponse, type ConfirmExternalLoginRequest, type ConfirmExternalLoginResponse, ConfirmExternalLoginResult, type CreateRequest, type CreateResponse, type Currency, type CurrentLoginInfo, type CurrentUserInfo, type DataPoint, type DataverseDataPoint, DateTimeBehavior, type DeletePersonalDataRequest, type DeletePersonalDataResponse, DeletePersonalDataResult, type DeleteRequest, type DeleteResponse, type Disable2faResponse, type DisassociateRequest, EntityRole, ExternalLoginCandidateKind, type ExternalLoginProviderInfo, type ExternalLoginsResponse, FileArchiveResponseFormat, type FileInfo, type Forget2faResponse, type GridDataRequest, type GridDataResponse, type GridFilterBase, InvalidOperationError, JoinOperator, type LocalizationFileDownload, type LocalizationOverview, type LocalizationPipelineConfiguration, type LocalizationSourceKind, type LocalizationSourceLoad, type LocalizationSourceStatus, type LoginRequest, type LoginResponse, LoginResult, type MergedLocalizationEntry, type OrganizationRequest, type OrganizationResponse, type OrganizationSettings, type PendingExternalLoginResponse, type PersonalDataResponse, PortalUserType, PowerPortalsProClient, PowerPortalsProError, type PowerPortalsProErrorInit, type ProblemDetails, type ProfileResponse, type RecoveryCodesResponse, type RegisterRequest, type RegisterResponse, RegisterResult, type RelationshipFilter, RelationshipFilterMode, type RemoveExternalLoginRequest, type RemoveExternalLoginResponse, type RequestOptions, type RequestPasswordResetRequest, RequiredLevel, type ResendEmailConfirmationRequest, type ResetAuthenticatorResponse, type ResetPasswordRequest, type ResetPasswordResponse, ResetPasswordResult, type ResolvedColumn, type RetrieveRecordsResponse, Routes, type SelectExternalLoginRequest, type SendEmailConfirmationResponse, type SetPasswordRequest, type SetPasswordResponse, type SwitchIdentityResponse, SwitchIdentityResult, type TableMetadata, type TableRecord$1 as TableRecord, type TableRecordReference, TableSecurityPermission, type TranslatedFile, type TranslationAvailability, type TranslationLanguageOption, type TranslationRequest, type TranslationResult, Transport, type TransportOptions, type TwoFactorStatusResponse, UnauthorizedAccessError, type UpdateProfileRequest, type UpdateRequest, type UpdateResponse, VERSION, type VerifyAuthenticatorRequest, type VerifyAuthenticatorResponse, type VerifyTwoFactorRequest, type VerifyTwoFactorResponse, type ViewMetadata, ViewType, type components, getRecordReferenceId, mapProblemDetails, type paths };
package/dist/index.js CHANGED
@@ -158,6 +158,12 @@ var api = {
158
158
  * values across all sources). `culture` is a query-string parameter. SystemAdmin-only.
159
159
  */
160
160
  localizationMergedDownload: `${apiRoot}/localizations/merged/download`,
161
+ /**
162
+ * GET — structured list of every key the cache will serve for a culture, its winning
163
+ * value, and the source that supplied it. `culture` is a query-string parameter. Backs
164
+ * the LocalizationAdmin "view merged sources" dialog. SystemAdmin-only.
165
+ */
166
+ localizationMergedEntries: `${apiRoot}/localizations/merged/entries`,
161
167
  /** GET — whether translation is configured, the managed solution is installed, and the candidate target languages. SystemAdmin-only. */
162
168
  localizationTranslationAvailability: `${apiRoot}/localizations/translation/availability`,
163
169
  /** POST — translate an uploaded localization file into one or more target languages. SystemAdmin-only. */
@@ -793,6 +799,20 @@ var PowerPortalsProClient = class {
793
799
  signal
794
800
  );
795
801
  }
802
+ /**
803
+ * Reads the merged localization keys for a culture as a structured list — every key the
804
+ * cache will serve, its winning value, and which source supplied it. Same data as
805
+ * {@link downloadMergedLocalizationsAsync} but per-key annotated with provenance, for the
806
+ * `<LocalizationAdmin />` "view merged sources" dialog. Sorted by key. SystemAdmin-gated.
807
+ */
808
+ getMergedLocalizationEntriesAsync(culture, signal) {
809
+ const query = new URLSearchParams({ culture }).toString();
810
+ return this.transport.sendJson(
811
+ "GET",
812
+ `${Routes.api.localizationMergedEntries}?${query}`,
813
+ signal ? { signal } : {}
814
+ );
815
+ }
796
816
  /**
797
817
  * Shared binary-download path for the two localization download endpoints. Reads
798
818
  * the raw bytes via `response.arrayBuffer()` and derives the filename from the
@@ -1385,6 +1405,12 @@ var DeletePersonalDataResult = {
1385
1405
  /** The user has a local password set but the request body's password field was empty. The client should prompt for the password and resubmit. Distinct from IncorrectPassword so the UI can choose between "please enter your password" and "that password is wrong." */
1386
1406
  RequireLocalPassword: 2
1387
1407
  };
1408
+ var EntityRole = {
1409
+ /** The entity plays the "referenced" (primary) role. */
1410
+ Referenced: 0,
1411
+ /** The entity plays the "referencing" (related) role. */
1412
+ Referencing: 1
1413
+ };
1388
1414
  var ExternalLoginCandidateKind = {
1389
1415
  /** The candidate is a Dataverse contact record. */
1390
1416
  Contact: 0,
@@ -1447,6 +1473,14 @@ var LoginResult = {
1447
1473
  /** The account is locked out (too many failed attempts, manual lockout, etc.). The client should show the lockout page. */
1448
1474
  LockedOut: 4
1449
1475
  };
1476
+ var PortalUserType = {
1477
+ /** A portal contact under the classic (portal-side) security model — no stub systemuser; permission handlers enforce access. */
1478
+ Contact: 0,
1479
+ /** A real internal Dataverse systemuser (e.g. Entra ID staff sign-in). */
1480
+ SystemUser: 1,
1481
+ /** A portal contact whose Dataverse access is enforced through the system-managed (C2) stub systemuser provisioned for it under the Dataverse-native security model. Must never be presented as an internal user. */
1482
+ ContactStubUser: 2
1483
+ };
1450
1484
  var RegisterResult = {
1451
1485
  /** The account was created and a confirmation email has been sent. The user is NOT signed in yet — they must click the confirmation link first. */
1452
1486
  ConfirmationEmailSent: 0,
@@ -1507,6 +1541,22 @@ var TableSecurityPermission = {
1507
1541
  /** All permissions except Create. */
1508
1542
  All: 63
1509
1543
  };
1544
+ var ViewType = {
1545
+ /** A public view visible to all users. */
1546
+ Public: 0,
1547
+ /** An advanced find view. */
1548
+ AdvancedFind: 1,
1549
+ /** A view used for displaying associated records. */
1550
+ Associated: 2,
1551
+ /** A view used for Quick Find search. */
1552
+ QuickFind: 4,
1553
+ /** A view used for displaying team or queue members. */
1554
+ Members: 32,
1555
+ /** A view used in lookup dialogs. */
1556
+ Lookup: 64,
1557
+ /** A view used for the lookup display format. */
1558
+ LookupDisplay: 2048
1559
+ };
1510
1560
 
1511
1561
  // src/record-id.ts
1512
1562
  var EMPTY_GUID = "00000000-0000-0000-0000-000000000000";
@@ -1519,6 +1569,6 @@ function getRecordReferenceId(record) {
1519
1569
  // src/index.ts
1520
1570
  var VERSION = "0.1.0";
1521
1571
 
1522
- export { AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, AuthClient, ChangeEmailResult, ChangePasswordResult, ChartDateGrouping, ColumnType, ConfirmExternalLoginResult, DateTimeBehavior, DeletePersonalDataResult, ExternalLoginCandidateKind, FileArchiveResponseFormat, InvalidOperationError, JoinOperator, LocalizationSourceKind, LocalizationSourceStatus, LoginResult, PowerPortalsProClient, PowerPortalsProError, RegisterResult, RelationshipFilterMode, RequiredLevel, ResetPasswordResult, Routes, SwitchIdentityResult, TableSecurityPermission, Transport, UnauthorizedAccessError, VERSION, getRecordReferenceId, mapProblemDetails };
1572
+ export { AggregateType, ArchiveFormat, ArgumentError, ArgumentNullError, AuthClient, ChangeEmailResult, ChangePasswordResult, ChartDateGrouping, ColumnType, ConfirmExternalLoginResult, DateTimeBehavior, DeletePersonalDataResult, EntityRole, ExternalLoginCandidateKind, FileArchiveResponseFormat, InvalidOperationError, JoinOperator, LocalizationSourceKind, LocalizationSourceStatus, LoginResult, PortalUserType, PowerPortalsProClient, PowerPortalsProError, RegisterResult, RelationshipFilterMode, RequiredLevel, ResetPasswordResult, Routes, SwitchIdentityResult, TableSecurityPermission, Transport, UnauthorizedAccessError, VERSION, ViewType, getRecordReferenceId, mapProblemDetails };
1523
1573
  //# sourceMappingURL=index.js.map
1524
1574
  //# sourceMappingURL=index.js.map