@mcp-consultant-tools/powerplatform-customization 30.0.0-beta.4 → 30.0.0-beta.6

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.
Files changed (32) hide show
  1. package/build/PowerPlatformService.d.ts +138 -1
  2. package/build/PowerPlatformService.d.ts.map +1 -1
  3. package/build/PowerPlatformService.js +316 -3
  4. package/build/PowerPlatformService.js.map +1 -1
  5. package/build/cli/commands/field-security-commands.d.ts +7 -0
  6. package/build/cli/commands/field-security-commands.d.ts.map +1 -0
  7. package/build/cli/commands/field-security-commands.js +232 -0
  8. package/build/cli/commands/field-security-commands.js.map +1 -0
  9. package/build/cli/commands/form-commands.d.ts.map +1 -1
  10. package/build/cli/commands/form-commands.js +61 -0
  11. package/build/cli/commands/form-commands.js.map +1 -1
  12. package/build/cli/commands/index.d.ts +1 -0
  13. package/build/cli/commands/index.d.ts.map +1 -1
  14. package/build/cli/commands/index.js +3 -0
  15. package/build/cli/commands/index.js.map +1 -1
  16. package/build/tool-examples.d.ts +12 -0
  17. package/build/tool-examples.d.ts.map +1 -1
  18. package/build/tool-examples.js +17 -0
  19. package/build/tool-examples.js.map +1 -1
  20. package/build/tools/field-security-tools.d.ts +3 -0
  21. package/build/tools/field-security-tools.d.ts.map +1 -0
  22. package/build/tools/field-security-tools.js +322 -0
  23. package/build/tools/field-security-tools.js.map +1 -0
  24. package/build/tools/form-file-tools.d.ts +3 -0
  25. package/build/tools/form-file-tools.d.ts.map +1 -0
  26. package/build/tools/form-file-tools.js +110 -0
  27. package/build/tools/form-file-tools.js.map +1 -0
  28. package/build/tools/index.d.ts +2 -0
  29. package/build/tools/index.d.ts.map +1 -1
  30. package/build/tools/index.js +10 -3
  31. package/build/tools/index.js.map +1 -1
  32. package/package.json +2 -2
@@ -7,8 +7,50 @@
7
7
  * For read-only operations, use @mcp-consultant-tools/powerplatform.
8
8
  * For data CRUD operations, use @mcp-consultant-tools/powerplatform-data.
9
9
  */
10
- import { type PowerPlatformConfig, type ApiCollectionResponse, type FlowRunFilterOptions, type FlowRunsResult, type RegisterPluginStepOptions, type RegisterPluginImageOptions, type CreateServiceEndpointOptions, type UpdateServiceEndpointOptions, type ServiceEndpointCreateResult, type RegisterWebhookOptions, type RegisterWebhookResult, type AuthProvider } from '@mcp-consultant-tools/powerplatform-core';
10
+ import { type PowerPlatformConfig, type ApiCollectionResponse, type FlowRunFilterOptions, type FlowRunsResult, type FieldPermissionValue, type FieldSecurityProfileSummary, type FieldSecurityProfileDetail, type FieldPermissionRecord, type SecuredColumnInfo, type RegisterPluginStepOptions, type RegisterPluginImageOptions, type CreateServiceEndpointOptions, type UpdateServiceEndpointOptions, type ServiceEndpointCreateResult, type RegisterWebhookOptions, type RegisterWebhookResult, type AuthProvider } from '@mcp-consultant-tools/powerplatform-core';
11
11
  export type { PowerPlatformConfig, ApiCollectionResponse };
12
+ export type FormTypeName = 'Main' | 'QuickCreate' | 'QuickView' | 'Card';
13
+ export interface FormFileSidecarMeta {
14
+ formId: string;
15
+ entityLogicalName: string;
16
+ formType: FormTypeName;
17
+ name: string;
18
+ versionNumber: string;
19
+ downloadedAt: string;
20
+ lastUploaded?: {
21
+ at: string;
22
+ previousVersionNumber: string;
23
+ versionNumber: string;
24
+ };
25
+ }
26
+ export interface DownloadFormResult {
27
+ filePath: string;
28
+ metaPath: string;
29
+ historyPath: string;
30
+ formId: string;
31
+ entityLogicalName: string;
32
+ formType: FormTypeName;
33
+ name: string;
34
+ versionNumber: string;
35
+ byteCount: number;
36
+ }
37
+ export interface DeployFormResult {
38
+ filePath: string;
39
+ formId: string;
40
+ action: 'updated';
41
+ previousVersionNumber: string;
42
+ newVersionNumber: string;
43
+ byteCount: number;
44
+ historyPath: string;
45
+ }
46
+ export interface DiffFormResult {
47
+ formId: string;
48
+ identical: boolean;
49
+ localSize: number;
50
+ remoteSize: number;
51
+ localVersion?: string;
52
+ remoteVersion: string;
53
+ }
12
54
  export declare class PowerPlatformService {
13
55
  private client;
14
56
  private metadata;
@@ -32,6 +74,7 @@ export declare class PowerPlatformService {
32
74
  private appManagement;
33
75
  private workflowManagement;
34
76
  private serviceEndpoint;
77
+ private fieldSecurity;
35
78
  constructor(config: PowerPlatformConfig, authProvider?: AuthProvider);
36
79
  getAuthMode(): 'service-principal' | 'interactive';
37
80
  getUserInfo(): Promise<{
@@ -132,6 +175,45 @@ export declare class PowerPlatformService {
132
175
  deleteForm(formId: string): Promise<void>;
133
176
  activateForm(formId: string): Promise<void>;
134
177
  deactivateForm(formId: string): Promise<void>;
178
+ /**
179
+ * Fetch a single systemform by id (returns formid, objecttypecode, name, type, formxml, versionnumber).
180
+ */
181
+ private fetchSystemFormById;
182
+ /**
183
+ * Resolve a form by (entity + name + formType) to a single systemform record.
184
+ * Throws if zero or multiple matches.
185
+ */
186
+ private resolveFormByName;
187
+ private getFormTypeName;
188
+ /**
189
+ * Download a form's XML to a local file, writing a sidecar .meta.json and a history snapshot.
190
+ * Overwrites the target file — Dataverse is the source of truth.
191
+ *
192
+ * Resolution: provide either `formId`, or (`entityLogicalName` + `formName` + optional `formType`),
193
+ * or (`entityLogicalName` + `formType`) when exactly one form of that type exists on the entity.
194
+ */
195
+ downloadFormToFile(filePath: string, options: {
196
+ formId?: string;
197
+ entityLogicalName?: string;
198
+ formName?: string;
199
+ formType?: FormTypeName;
200
+ }): Promise<DownloadFormResult>;
201
+ /**
202
+ * Read a local form XML file and PATCH it to Dataverse. Preserves bytes verbatim — never re-parses.
203
+ * Resolves the target formId from the sidecar .meta.json unless overridden.
204
+ */
205
+ deployFormFromFile(filePath: string, options: {
206
+ formId?: string;
207
+ expectedVersionNumber?: string;
208
+ solutionUniqueName?: string;
209
+ }): Promise<DeployFormResult>;
210
+ /**
211
+ * Compare a local form file to the current remote form. Returns whether they're identical
212
+ * and basic metrics — does NOT modify anything.
213
+ */
214
+ diffFormWithFile(filePath: string, options: {
215
+ formId?: string;
216
+ }): Promise<DiffFormResult>;
135
217
  getViews(entityLogicalName: string): Promise<unknown>;
136
218
  getViewFetchXml(viewId: string): Promise<unknown>;
137
219
  createView(name: string, entityLogicalName: string, fetchXml: string, layoutXml: string, options?: {
@@ -285,5 +367,60 @@ export declare class PowerPlatformService {
285
367
  updateServiceEndpoint(options: UpdateServiceEndpointOptions): Promise<void>;
286
368
  deleteServiceEndpoint(serviceEndpointId: string): Promise<void>;
287
369
  registerWebhook(options: RegisterWebhookOptions): Promise<RegisterWebhookResult>;
370
+ /**
371
+ * Set the IsSecured flag on a column. Reuses AttributeService.updateAttribute
372
+ * (which fetches the current attribute to recover the correct @odata.type)
373
+ * and PublishingService.publishEntity for the post-update publish.
374
+ */
375
+ setColumnSecured(entityLogicalName: string, attributeLogicalName: string, isSecured: boolean, publishAfter?: boolean): Promise<{
376
+ entityLogicalName: string;
377
+ attributeLogicalName: string;
378
+ isSecured: boolean;
379
+ previousValue: boolean;
380
+ }>;
381
+ /**
382
+ * Batch wrapper — secure or unsecure multiple columns on the same entity in
383
+ * one logical operation, with a single publish at the end.
384
+ */
385
+ setColumnsSecured(entityLogicalName: string, attributeLogicalNames: string[], isSecured: boolean, publishAfter?: boolean): Promise<Array<{
386
+ attributeLogicalName: string;
387
+ isSecured: boolean;
388
+ previousValue: boolean;
389
+ changed: boolean;
390
+ }>>;
391
+ createFieldSecurityProfile(name: string, description?: string, solutionUniqueName?: string): Promise<FieldSecurityProfileSummary>;
392
+ updateFieldSecurityProfile(fieldSecurityProfileId: string, updates: {
393
+ name?: string;
394
+ description?: string;
395
+ }): Promise<void>;
396
+ deleteFieldSecurityProfile(fieldSecurityProfileId: string): Promise<void>;
397
+ listFieldSecurityProfiles(namePattern?: string): Promise<FieldSecurityProfileSummary[]>;
398
+ getFieldSecurityProfile(fieldSecurityProfileId: string): Promise<FieldSecurityProfileDetail>;
399
+ addFieldPermission(options: {
400
+ fieldSecurityProfileId: string;
401
+ entityLogicalName: string;
402
+ attributeLogicalName: string;
403
+ canCreate: FieldPermissionValue;
404
+ canRead: FieldPermissionValue;
405
+ canUpdate: FieldPermissionValue;
406
+ upsert?: boolean;
407
+ }): Promise<FieldPermissionRecord>;
408
+ addFieldPermissions(fieldSecurityProfileId: string, permissions: Array<{
409
+ entityLogicalName: string;
410
+ attributeLogicalName: string;
411
+ canCreate: FieldPermissionValue;
412
+ canRead: FieldPermissionValue;
413
+ canUpdate: FieldPermissionValue;
414
+ }>, upsert?: boolean): Promise<FieldPermissionRecord[]>;
415
+ removeFieldPermission(fieldPermissionId: string): Promise<void>;
416
+ assignFspToTeam(fieldSecurityProfileId: string, teamId: string): Promise<{
417
+ alreadyAssigned: boolean;
418
+ }>;
419
+ unassignFspFromTeam(fieldSecurityProfileId: string, teamId: string): Promise<void>;
420
+ assignFspToUser(fieldSecurityProfileId: string, systemUserId: string): Promise<{
421
+ alreadyAssigned: boolean;
422
+ }>;
423
+ unassignFspFromUser(fieldSecurityProfileId: string, systemUserId: string): Promise<void>;
424
+ getSecuredColumns(entityLogicalName: string): Promise<SecuredColumnInfo[]>;
288
425
  }
289
426
  //# sourceMappingURL=PowerPlatformService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PowerPlatformService.d.ts","sourceRoot":"","sources":["../src/PowerPlatformService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PowerPlatformService.d.ts","sourceRoot":"","sources":["../src/PowerPlatformService.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@ PowerPlatformClient,
13
13
  // Read-only services (needed for inspecting before customizing)
14
14
  MetadataService, PluginService, FlowService, WorkflowService, BusinessRuleService, AppService, ValidationService,
15
15
  // Customization services
16
- EntityService, AttributeService, RelationshipService, OptionSetService, FormService, ViewService, WebResourceService, SolutionService, PublishingService, DependencyService, PluginDeploymentService, AppManagementService, WorkflowManagementService, ServiceEndpointService, createAuthProvider, } from '@mcp-consultant-tools/powerplatform-core';
17
- import { readFile } from 'node:fs/promises';
18
- import { resolve, basename, extname } from 'node:path';
16
+ EntityService, AttributeService, RelationshipService, OptionSetService, FormService, ViewService, WebResourceService, SolutionService, PublishingService, DependencyService, PluginDeploymentService, AppManagementService, WorkflowManagementService, ServiceEndpointService, FieldSecurityService, createAuthProvider, } from '@mcp-consultant-tools/powerplatform-core';
17
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
18
+ import { resolve, basename, extname, dirname, join } from 'node:path';
19
19
  export class PowerPlatformService {
20
20
  client;
21
21
  // Read-only services
@@ -41,6 +41,7 @@ export class PowerPlatformService {
41
41
  appManagement;
42
42
  workflowManagement;
43
43
  serviceEndpoint;
44
+ fieldSecurity;
44
45
  constructor(config, authProvider) {
45
46
  const auth = authProvider ||
46
47
  createAuthProvider({
@@ -74,6 +75,7 @@ export class PowerPlatformService {
74
75
  this.appManagement = new AppManagementService(this.client, async (appId) => this.app.getAppSitemap(appId));
75
76
  this.workflowManagement = new WorkflowManagementService(this.client);
76
77
  this.serviceEndpoint = new ServiceEndpointService(this.client, (solutionUniqueName, componentId, componentType) => this.solution.addComponentToSolution(solutionUniqueName, componentId, componentType), (messageName, entityName) => this.pluginDeployment.resolveSdkMessageAndFilter(messageName, entityName));
78
+ this.fieldSecurity = new FieldSecurityService(this.client);
77
79
  }
78
80
  // =====================================================
79
81
  // AUTH METHODS
@@ -312,6 +314,230 @@ export class PowerPlatformService {
312
314
  return this.form.deactivateForm(formId);
313
315
  }
314
316
  // =====================================================
317
+ // FORM FILE WORKFLOW METHODS (download / deploy / diff)
318
+ // =====================================================
319
+ /**
320
+ * Fetch a single systemform by id (returns formid, objecttypecode, name, type, formxml, versionnumber).
321
+ */
322
+ async fetchSystemFormById(formId) {
323
+ return this.client.makeRequest(`api/data/v9.2/systemforms(${formId})?$select=formid,objecttypecode,name,type,formxml,versionnumber,description`);
324
+ }
325
+ /**
326
+ * Resolve a form by (entity + name + formType) to a single systemform record.
327
+ * Throws if zero or multiple matches.
328
+ */
329
+ async resolveFormByName(entityLogicalName, formName, formType) {
330
+ const filters = [`objecttypecode eq '${entityLogicalName}'`];
331
+ if (formName) {
332
+ filters.push(`name eq '${formName.replace(/'/g, "''")}'`);
333
+ }
334
+ if (formType) {
335
+ filters.push(`type eq ${this.getFormTypeCode(formType)}`);
336
+ }
337
+ const url = `api/data/v9.2/systemforms?$filter=${encodeURIComponent(filters.join(' and '))}&$select=formid,objecttypecode,name,type,formxml,versionnumber,description`;
338
+ const response = await this.client.makeRequest(url);
339
+ const matches = response.value || [];
340
+ if (matches.length === 0) {
341
+ const criteria = `entity='${entityLogicalName}'${formName ? `, name='${formName}'` : ''}${formType ? `, type='${formType}'` : ''}`;
342
+ throw new Error(`No form found for ${criteria}. Verify entity, name, and type (Main/QuickCreate/QuickView/Card).`);
343
+ }
344
+ if (matches.length > 1) {
345
+ const listed = matches
346
+ .map((m) => ` - ${m.name} (${this.getFormTypeName(m.type)}, id=${m.formid})`)
347
+ .join('\n');
348
+ throw new Error(`Multiple forms match the criteria. Provide formId or narrow by formType/formName:\n${listed}`);
349
+ }
350
+ return matches[0];
351
+ }
352
+ getFormTypeName(typeCode) {
353
+ const map = { 2: 'Main', 7: 'QuickCreate', 6: 'QuickView', 11: 'Card' };
354
+ return map[typeCode] || 'Main';
355
+ }
356
+ /**
357
+ * Download a form's XML to a local file, writing a sidecar .meta.json and a history snapshot.
358
+ * Overwrites the target file — Dataverse is the source of truth.
359
+ *
360
+ * Resolution: provide either `formId`, or (`entityLogicalName` + `formName` + optional `formType`),
361
+ * or (`entityLogicalName` + `formType`) when exactly one form of that type exists on the entity.
362
+ */
363
+ async downloadFormToFile(filePath, options) {
364
+ const resolvedPath = resolve(filePath.replace(/\\/g, '/'));
365
+ let form;
366
+ if (options.formId) {
367
+ form = await this.fetchSystemFormById(options.formId);
368
+ }
369
+ else {
370
+ if (!options.entityLogicalName) {
371
+ throw new Error("Provide 'formId', or 'entityLogicalName' with 'formName' and/or 'formType'.");
372
+ }
373
+ form = await this.resolveFormByName(options.entityLogicalName, options.formName, options.formType);
374
+ }
375
+ const formXml = form.formxml ?? '';
376
+ if (!formXml) {
377
+ throw new Error(`Form '${form.formid}' has empty formxml — nothing to download.`);
378
+ }
379
+ const byteCount = Buffer.byteLength(formXml, 'utf8');
380
+ const formTypeName = this.getFormTypeName(form.type);
381
+ const entityLogicalName = form.objecttypecode;
382
+ const formName = form.name;
383
+ const formId = form.formid;
384
+ const versionNumber = String(form.versionnumber ?? '');
385
+ // Ensure target directory exists
386
+ await mkdir(dirname(resolvedPath), { recursive: true });
387
+ // Write formxml verbatim — NEVER re-serialize
388
+ await writeFile(resolvedPath, formXml, { encoding: 'utf8' });
389
+ // Sidecar meta
390
+ const metaPath = `${resolvedPath}.meta.json`;
391
+ const downloadedAt = new Date().toISOString();
392
+ const meta = {
393
+ formId,
394
+ entityLogicalName,
395
+ formType: formTypeName,
396
+ name: formName,
397
+ versionNumber,
398
+ downloadedAt,
399
+ };
400
+ await writeFile(metaPath, JSON.stringify(meta, null, 2) + '\n', { encoding: 'utf8' });
401
+ // History snapshot
402
+ const historyDir = `${resolvedPath}.history`;
403
+ await mkdir(historyDir, { recursive: true });
404
+ const stamp = downloadedAt.replace(/[:.]/g, '-');
405
+ const historyXmlPath = join(historyDir, `${stamp}-download.xml`);
406
+ const historyMetaPath = join(historyDir, `${stamp}-download.meta.json`);
407
+ await writeFile(historyXmlPath, formXml, { encoding: 'utf8' });
408
+ await writeFile(historyMetaPath, JSON.stringify(meta, null, 2) + '\n', { encoding: 'utf8' });
409
+ return {
410
+ filePath: resolvedPath,
411
+ metaPath,
412
+ historyPath: historyXmlPath,
413
+ formId,
414
+ entityLogicalName,
415
+ formType: formTypeName,
416
+ name: formName,
417
+ versionNumber,
418
+ byteCount,
419
+ };
420
+ }
421
+ /**
422
+ * Read a local form XML file and PATCH it to Dataverse. Preserves bytes verbatim — never re-parses.
423
+ * Resolves the target formId from the sidecar .meta.json unless overridden.
424
+ */
425
+ async deployFormFromFile(filePath, options) {
426
+ const resolvedPath = resolve(filePath.replace(/\\/g, '/'));
427
+ const metaPath = `${resolvedPath}.meta.json`;
428
+ // Read file bytes
429
+ let fileContent;
430
+ try {
431
+ fileContent = await readFile(resolvedPath, { encoding: 'utf8' });
432
+ }
433
+ catch (error) {
434
+ if (error.code === 'ENOENT') {
435
+ throw new Error(`File not found: '${resolvedPath}'`);
436
+ }
437
+ throw new Error(`Failed to read file '${resolvedPath}': ${error.message}`);
438
+ }
439
+ if (!fileContent || fileContent.trim().length === 0) {
440
+ throw new Error(`File is empty: '${resolvedPath}'`);
441
+ }
442
+ // Minimal sanity check — must contain a <form> element. Deep well-formedness
443
+ // is enforced by Dataverse on PATCH; local check keeps changes observable.
444
+ if (!/<form(\s|>)/.test(fileContent)) {
445
+ throw new Error(`File '${resolvedPath}' does not appear to contain a <form> element. Aborting before upload.`);
446
+ }
447
+ // Load sidecar meta (if any)
448
+ let sidecarMeta;
449
+ try {
450
+ const metaRaw = await readFile(metaPath, { encoding: 'utf8' });
451
+ sidecarMeta = JSON.parse(metaRaw);
452
+ }
453
+ catch (error) {
454
+ if (error.code !== 'ENOENT') {
455
+ throw new Error(`Failed to read sidecar '${metaPath}': ${error.message}`);
456
+ }
457
+ }
458
+ const targetFormId = options.formId || sidecarMeta?.formId;
459
+ if (!targetFormId) {
460
+ throw new Error(`No formId provided and no sidecar at '${metaPath}'. Run download-form-to-file first, or pass --form-id.`);
461
+ }
462
+ // Fetch current remote form to capture the pre-upload version
463
+ const remoteBefore = await this.fetchSystemFormById(targetFormId);
464
+ const remoteVersionBefore = String(remoteBefore.versionnumber ?? '');
465
+ // Optimistic concurrency check
466
+ if (options.expectedVersionNumber && remoteVersionBefore !== options.expectedVersionNumber) {
467
+ throw new Error(`Remote form has moved since expected version. expected=${options.expectedVersionNumber}, actual=${remoteVersionBefore}. Re-download before deploying.`);
468
+ }
469
+ // PATCH formxml
470
+ await this.form.updateForm(targetFormId, { formxml: fileContent }, options.solutionUniqueName);
471
+ // Fetch again to capture the new version
472
+ const remoteAfter = await this.fetchSystemFormById(targetFormId);
473
+ const remoteVersionAfter = String(remoteAfter.versionnumber ?? '');
474
+ // Update sidecar
475
+ const uploadedAt = new Date().toISOString();
476
+ const newMeta = {
477
+ formId: targetFormId,
478
+ entityLogicalName: remoteAfter.objecttypecode ?? sidecarMeta?.entityLogicalName ?? '',
479
+ formType: this.getFormTypeName(remoteAfter.type),
480
+ name: remoteAfter.name ?? sidecarMeta?.name ?? '',
481
+ versionNumber: remoteVersionAfter,
482
+ downloadedAt: sidecarMeta?.downloadedAt ?? uploadedAt,
483
+ lastUploaded: {
484
+ at: uploadedAt,
485
+ previousVersionNumber: remoteVersionBefore,
486
+ versionNumber: remoteVersionAfter,
487
+ },
488
+ };
489
+ await writeFile(metaPath, JSON.stringify(newMeta, null, 2) + '\n', { encoding: 'utf8' });
490
+ // History snapshot of what was uploaded
491
+ const historyDir = `${resolvedPath}.history`;
492
+ await mkdir(historyDir, { recursive: true });
493
+ const stamp = uploadedAt.replace(/[:.]/g, '-');
494
+ const historyXmlPath = join(historyDir, `${stamp}-upload.xml`);
495
+ const historyMetaPath = join(historyDir, `${stamp}-upload.meta.json`);
496
+ await writeFile(historyXmlPath, fileContent, { encoding: 'utf8' });
497
+ await writeFile(historyMetaPath, JSON.stringify(newMeta, null, 2) + '\n', { encoding: 'utf8' });
498
+ return {
499
+ filePath: resolvedPath,
500
+ formId: targetFormId,
501
+ action: 'updated',
502
+ previousVersionNumber: remoteVersionBefore,
503
+ newVersionNumber: remoteVersionAfter,
504
+ byteCount: Buffer.byteLength(fileContent, 'utf8'),
505
+ historyPath: historyXmlPath,
506
+ };
507
+ }
508
+ /**
509
+ * Compare a local form file to the current remote form. Returns whether they're identical
510
+ * and basic metrics — does NOT modify anything.
511
+ */
512
+ async diffFormWithFile(filePath, options) {
513
+ const resolvedPath = resolve(filePath.replace(/\\/g, '/'));
514
+ const metaPath = `${resolvedPath}.meta.json`;
515
+ const localContent = await readFile(resolvedPath, { encoding: 'utf8' });
516
+ let sidecarMeta;
517
+ try {
518
+ const metaRaw = await readFile(metaPath, { encoding: 'utf8' });
519
+ sidecarMeta = JSON.parse(metaRaw);
520
+ }
521
+ catch (error) {
522
+ if (error.code !== 'ENOENT')
523
+ throw error;
524
+ }
525
+ const targetFormId = options.formId || sidecarMeta?.formId;
526
+ if (!targetFormId) {
527
+ throw new Error(`No formId provided and no sidecar at '${metaPath}'.`);
528
+ }
529
+ const remote = await this.fetchSystemFormById(targetFormId);
530
+ const remoteXml = remote.formxml ?? '';
531
+ return {
532
+ formId: targetFormId,
533
+ identical: localContent === remoteXml,
534
+ localSize: Buffer.byteLength(localContent, 'utf8'),
535
+ remoteSize: Buffer.byteLength(remoteXml, 'utf8'),
536
+ localVersion: sidecarMeta?.versionNumber,
537
+ remoteVersion: String(remote.versionnumber ?? ''),
538
+ };
539
+ }
540
+ // =====================================================
315
541
  // VIEW CUSTOMIZATION METHODS
316
542
  // =====================================================
317
543
  async getViews(entityLogicalName) {
@@ -698,5 +924,92 @@ export class PowerPlatformService {
698
924
  async registerWebhook(options) {
699
925
  return this.serviceEndpoint.registerWebhook(options);
700
926
  }
927
+ // =====================================================
928
+ // FIELD SECURITY METHODS
929
+ // =====================================================
930
+ /**
931
+ * Set the IsSecured flag on a column. Reuses AttributeService.updateAttribute
932
+ * (which fetches the current attribute to recover the correct @odata.type)
933
+ * and PublishingService.publishEntity for the post-update publish.
934
+ */
935
+ async setColumnSecured(entityLogicalName, attributeLogicalName, isSecured, publishAfter = true) {
936
+ const existing = (await this.metadata.getEntityAttribute(entityLogicalName, attributeLogicalName));
937
+ const previousValue = Boolean(existing.IsSecured);
938
+ if (previousValue === isSecured) {
939
+ return { entityLogicalName, attributeLogicalName, isSecured, previousValue };
940
+ }
941
+ await this.attribute.updateAttribute(entityLogicalName, attributeLogicalName, { IsSecured: isSecured }, (entityName, attrName) => this.metadata.getEntityAttribute(entityName, attrName));
942
+ if (publishAfter) {
943
+ await this.publishing.publishEntity(entityLogicalName);
944
+ }
945
+ return { entityLogicalName, attributeLogicalName, isSecured, previousValue };
946
+ }
947
+ /**
948
+ * Batch wrapper — secure or unsecure multiple columns on the same entity in
949
+ * one logical operation, with a single publish at the end.
950
+ */
951
+ async setColumnsSecured(entityLogicalName, attributeLogicalNames, isSecured, publishAfter = true) {
952
+ const results = [];
953
+ for (const attr of attributeLogicalNames) {
954
+ const r = await this.setColumnSecured(entityLogicalName, attr, isSecured, false);
955
+ results.push({
956
+ attributeLogicalName: attr,
957
+ isSecured: r.isSecured,
958
+ previousValue: r.previousValue,
959
+ changed: r.previousValue !== r.isSecured,
960
+ });
961
+ }
962
+ if (publishAfter && results.some((r) => r.changed)) {
963
+ await this.publishing.publishEntity(entityLogicalName);
964
+ }
965
+ return results;
966
+ }
967
+ async createFieldSecurityProfile(name, description, solutionUniqueName) {
968
+ return this.fieldSecurity.createFieldSecurityProfile(name, description, solutionUniqueName);
969
+ }
970
+ async updateFieldSecurityProfile(fieldSecurityProfileId, updates) {
971
+ return this.fieldSecurity.updateFieldSecurityProfile(fieldSecurityProfileId, updates);
972
+ }
973
+ async deleteFieldSecurityProfile(fieldSecurityProfileId) {
974
+ return this.fieldSecurity.deleteFieldSecurityProfile(fieldSecurityProfileId);
975
+ }
976
+ async listFieldSecurityProfiles(namePattern) {
977
+ return this.fieldSecurity.listFieldSecurityProfiles(namePattern);
978
+ }
979
+ async getFieldSecurityProfile(fieldSecurityProfileId) {
980
+ return this.fieldSecurity.getFieldSecurityProfile(fieldSecurityProfileId);
981
+ }
982
+ async addFieldPermission(options) {
983
+ return this.fieldSecurity.addFieldPermission(options);
984
+ }
985
+ async addFieldPermissions(fieldSecurityProfileId, permissions, upsert = true) {
986
+ const results = [];
987
+ for (const p of permissions) {
988
+ results.push(await this.fieldSecurity.addFieldPermission({
989
+ fieldSecurityProfileId,
990
+ ...p,
991
+ upsert,
992
+ }));
993
+ }
994
+ return results;
995
+ }
996
+ async removeFieldPermission(fieldPermissionId) {
997
+ return this.fieldSecurity.removeFieldPermission(fieldPermissionId);
998
+ }
999
+ async assignFspToTeam(fieldSecurityProfileId, teamId) {
1000
+ return this.fieldSecurity.assignProfileToTeam(fieldSecurityProfileId, teamId);
1001
+ }
1002
+ async unassignFspFromTeam(fieldSecurityProfileId, teamId) {
1003
+ return this.fieldSecurity.unassignProfileFromTeam(fieldSecurityProfileId, teamId);
1004
+ }
1005
+ async assignFspToUser(fieldSecurityProfileId, systemUserId) {
1006
+ return this.fieldSecurity.assignProfileToUser(fieldSecurityProfileId, systemUserId);
1007
+ }
1008
+ async unassignFspFromUser(fieldSecurityProfileId, systemUserId) {
1009
+ return this.fieldSecurity.unassignProfileFromUser(fieldSecurityProfileId, systemUserId);
1010
+ }
1011
+ async getSecuredColumns(entityLogicalName) {
1012
+ return this.fieldSecurity.getSecuredColumns(entityLogicalName);
1013
+ }
701
1014
  }
702
1015
  //# sourceMappingURL=PowerPlatformService.js.map