Skip to content

Commit 09f8555

Browse files
authored
Merge pull request #92 from mdapi-issues/feat/esm
feat: ESM
2 parents b0e1961 + 6f95340 commit 09f8555

12 files changed

+114
-108
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
node_modules/
88
/.sfdx/
99
/.sf/
10+
tsconfig.tsbuildinfo

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
"version": "0.0.0-development",
55
"author": "Matthias Rolke @amtrack",
66
"bugs": "https://github.com/mdapi-issues/listmetadata-standardvalueset/issues",
7+
"type": "module",
78
"dependencies": {
8-
"tslib": "2.8.0"
9+
"tslib": "2.8.1"
910
},
1011
"devDependencies": {
1112
"@salesforce/core": "8.7.0",
@@ -22,7 +23,7 @@
2223
"MWE"
2324
],
2425
"license": "MIT",
25-
"main": "./lib/workaround.js",
26+
"exports": "./lib/workaround.js",
2627
"publishConfig": {
2728
"access": "public"
2829
},
@@ -31,13 +32,17 @@
3132
"main"
3233
]
3334
},
35+
"mocha": {
36+
"loader": "ts-node/esm",
37+
"no-warnings": "ExperimentalWarning"
38+
},
3439
"repository": "mdapi-issues/listmetadata-standardvalueset",
3540
"scripts": {
3641
"build": "rm -rf lib && tsc -b",
3742
"develop": "bash scripts/develop.sh",
3843
"prepack": "npm run build",
3944
"prepare": "npm run build",
40-
"test": "mocha --require ts-node/register \"test/**/*.test.ts\"",
41-
"test:e2e": "mocha --require ts-node/register \"test/**/*.e2e-spec.ts\""
45+
"test": "mocha \"test/**/*.test.ts\"",
46+
"test:e2e": "mocha \"test/**/*.e2e-spec.ts\""
4247
}
4348
}

scripts/crawl-standardvalueset-names.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
#!/usr/bin/env ts-node
22

3-
import * as fetch from 'node-fetch';
4-
const releaseVersion = '228.0';
3+
const releaseVersion = "228.0";
54

65
const url = `https://developer.salesforce.com/docs/get_document_content/api_meta/standardvalueset_names.htm/en-us/${releaseVersion}`;
76
(async () => {
87
const res = await fetch(url);
98
const data = await res.json();
10-
const singleLineContent = data.content.replace(/(\r\n|\n|\r)/gm, ' ');
9+
const singleLineContent = data.content.replace(/(\r\n|\n|\r)/gm, " ");
1110
const entries = singleLineContent.match(
1211
/(?<=<td class="entry"[^>]*>)(.*?)(?=<\/td>)/gm
1312
);
1413
const cleanedEntries = entries.map((entry) => {
1514
return entry
16-
.replace('<sup class="ph sup">1</sup>', '')
17-
.replace('<sup class="ph sup">2</sup>', '')
18-
.replace(/<p class="p">/g, ',')
19-
.replace(/<\/p>/g, '')
20-
.replace(/\s/g, '')
21-
.replace(/^,/, '')
15+
.replace('<sup class="ph sup">1</sup>', "")
16+
.replace('<sup class="ph sup">2</sup>', "")
17+
.replace(/<p class="p">/g, ",")
18+
.replace(/<\/p>/g, "")
19+
.replace(/\s/g, "")
20+
.replace(/^,/, "")
2221
.trim();
2322
});
2423
console.log(cleanedEntries);

src/mapping.ts

Lines changed: 69 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,74 @@
11
// https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/standardvalueset_names.htm
22
export default {
3-
'AccountContactRelation.Roles': 'AccountContactMultiRoles',
4-
'AccountContactRole.Role': 'AccountContactRole',
5-
'Account.Ownership': 'AccountOwnership',
6-
'Account.Rating': 'AccountRating',
7-
'Lead.Rating': 'AccountRating',
8-
'Account.Type': 'AccountType',
9-
'Asset.Status': 'AssetStatus',
10-
'CampaignMember.Status': 'CampaignMemberStatus',
11-
'Campaign.Status': 'CampaignStatus',
12-
'Campaign.Type': 'CampaignType',
13-
'CareItem.Status': 'CareItemStatus2', // Part of Salesforce Health Cloud.
14-
'CaseContactRole.Role': 'CaseContactRole',
15-
'Case.Origin': 'CaseOrigin',
16-
'Case.Priority': 'CasePriority',
17-
'Case.Reason': 'CaseReason',
18-
'Case.Status': 'CaseStatus',
19-
'Case.Type': 'CaseType',
20-
'OpportunityContactRole.Role': 'ContactRole',
21-
'ContractContactRole.Role': 'ContractContactRole',
22-
'Contract.Status': 'ContractStatus',
23-
'Entitlement.Type': 'EntitlementType',
24-
'Event.Subject': 'EventSubject',
25-
'Event.Type': 'EventType',
26-
'Period.PeriodLabel': 'FiscalYearPeriodName',
27-
'FiscalYearSettings.PeriodPrefix': 'FiscalYearPeriodPrefix',
28-
'Period.QuarterLabel': 'FiscalYearQuarterName',
29-
'FiscalYearSettings.QuarterPrefix': 'FiscalYearQuarterPrefix',
3+
"AccountContactRelation.Roles": "AccountContactMultiRoles",
4+
"AccountContactRole.Role": "AccountContactRole",
5+
"Account.Ownership": "AccountOwnership",
6+
"Account.Rating": "AccountRating",
7+
"Lead.Rating": "AccountRating",
8+
"Account.Type": "AccountType",
9+
"Asset.Status": "AssetStatus",
10+
"CampaignMember.Status": "CampaignMemberStatus",
11+
"Campaign.Status": "CampaignStatus",
12+
"Campaign.Type": "CampaignType",
13+
"CareItem.Status": "CareItemStatus2", // Part of Salesforce Health Cloud.
14+
"CaseContactRole.Role": "CaseContactRole",
15+
"Case.Origin": "CaseOrigin",
16+
"Case.Priority": "CasePriority",
17+
"Case.Reason": "CaseReason",
18+
"Case.Status": "CaseStatus",
19+
"Case.Type": "CaseType",
20+
"OpportunityContactRole.Role": "ContactRole",
21+
"ContractContactRole.Role": "ContractContactRole",
22+
"Contract.Status": "ContractStatus",
23+
"Entitlement.Type": "EntitlementType",
24+
"Event.Subject": "EventSubject",
25+
"Event.Type": "EventType",
26+
"Period.PeriodLabel": "FiscalYearPeriodName",
27+
"FiscalYearSettings.PeriodPrefix": "FiscalYearPeriodPrefix",
28+
"Period.QuarterLabel": "FiscalYearQuarterName",
29+
"FiscalYearSettings.QuarterPrefix": "FiscalYearQuarterPrefix",
3030
// 'IdeaTheme.Categories': 'IdeaCategory', // You can’t read or update this standard value set or picklist field.
31-
'Idea.Categories': 'IdeaMultiCategory',
32-
'Idea.Status': 'IdeaStatus',
33-
'IdeaTheme.Status': 'IdeaThemeStatus',
34-
'Account.Industry': 'Industry',
35-
'Lead.Industry': 'Industry',
36-
'Account.AccountSource': 'LeadSource',
37-
'Lead.AccountSource': 'LeadSource',
38-
'Opportunity.Source': 'LeadSource',
39-
'Lead.Status': 'LeadStatus',
40-
'Opportunity.Competitors': 'OpportunityCompetitor',
41-
'Opportunity.StageName': 'OpportunityStage',
42-
'Opportunity.Type': 'OpportunityType',
43-
'Order.Type': 'OrderType',
44-
'Account.PartnerRole': 'PartnerRole',
45-
'Product2.Family': 'Product2Family',
31+
"Idea.Categories": "IdeaMultiCategory",
32+
"Idea.Status": "IdeaStatus",
33+
"IdeaTheme.Status": "IdeaThemeStatus",
34+
"Account.Industry": "Industry",
35+
"Lead.Industry": "Industry",
36+
"Account.AccountSource": "LeadSource",
37+
"Lead.AccountSource": "LeadSource",
38+
"Opportunity.Source": "LeadSource",
39+
"Lead.Status": "LeadStatus",
40+
"Opportunity.Competitors": "OpportunityCompetitor",
41+
"Opportunity.StageName": "OpportunityStage",
42+
"Opportunity.Type": "OpportunityType",
43+
"Order.Type": "OrderType",
44+
"Account.PartnerRole": "PartnerRole",
45+
"Product2.Family": "Product2Family",
4646
// 'Question.Origin': 'QuestionOrigin', // You can’t read or update this standard value set or picklist field.
47-
'QuickText.Category': 'QuickTextCategory',
48-
'QuickText.Channel': 'QuickTextChannel',
49-
'Quote.Status': 'QuoteStatus',
50-
'UserTerritory2Association.RoleInTerritory2': 'RoleInTerritory2',
51-
'ResourceAbsence.Type': 'ResourceAbsenceType',
52-
'OpportunityTeamMember.TeamMemberRole': 'SalesTeamRole',
53-
'UserAccountTeamMember.TeamMemberRole': 'SalesTeamRole',
54-
'UserTeamMember.TeamMemberRole': 'SalesTeamRole',
55-
'AccountTeamMember.TeamMemberRole': 'SalesTeamRole',
56-
'Contact.Salutation': 'Salutation',
57-
'Lead.Salutation': 'Salutation',
58-
'ServiceAppointment.Status': 'ServiceAppointmentStatus',
59-
'ServiceContract.ApprovalStatus': 'ServiceContractApprovalStatus',
60-
'ServiceTerritoryMember.Role': 'ServTerrMemRoleType',
61-
'SocialPost.Classification': 'SocialPostClassification',
62-
'SocialPost.EngagementLevel': 'SocialPostEngagementLevel',
63-
'SocialPost.ReviewedStatus': 'SocialPostReviewedStatus',
64-
'Solution.Status': 'SolutionStatus',
65-
'Task.Priority': 'TaskPriority',
66-
'Task.Status': 'TaskStatus',
67-
'Task.Subject': 'TaskSubject',
68-
'Task.Type': 'TaskType',
69-
'WorkOrderLineItem.Status': 'WorkOrderLineItemStatus',
70-
'WorkOrder.Priority': 'WorkOrderPriority',
71-
'WorkOrder.Status': 'WorkOrderStatus',
72-
'ServiceAppointment.AppointmentType': 'WorkTypeDefApptType',
73-
'WorkTypeGroup.AdditionalInformation': 'WorkTypeGroupAddInfo'
47+
"QuickText.Category": "QuickTextCategory",
48+
"QuickText.Channel": "QuickTextChannel",
49+
"Quote.Status": "QuoteStatus",
50+
"UserTerritory2Association.RoleInTerritory2": "RoleInTerritory2",
51+
"ResourceAbsence.Type": "ResourceAbsenceType",
52+
"OpportunityTeamMember.TeamMemberRole": "SalesTeamRole",
53+
"UserAccountTeamMember.TeamMemberRole": "SalesTeamRole",
54+
"UserTeamMember.TeamMemberRole": "SalesTeamRole",
55+
"AccountTeamMember.TeamMemberRole": "SalesTeamRole",
56+
"Contact.Salutation": "Salutation",
57+
"Lead.Salutation": "Salutation",
58+
"ServiceAppointment.Status": "ServiceAppointmentStatus",
59+
"ServiceContract.ApprovalStatus": "ServiceContractApprovalStatus",
60+
"ServiceTerritoryMember.Role": "ServTerrMemRoleType",
61+
"SocialPost.Classification": "SocialPostClassification",
62+
"SocialPost.EngagementLevel": "SocialPostEngagementLevel",
63+
"SocialPost.ReviewedStatus": "SocialPostReviewedStatus",
64+
"Solution.Status": "SolutionStatus",
65+
"Task.Priority": "TaskPriority",
66+
"Task.Status": "TaskStatus",
67+
"Task.Subject": "TaskSubject",
68+
"Task.Type": "TaskType",
69+
"WorkOrderLineItem.Status": "WorkOrderLineItemStatus",
70+
"WorkOrder.Priority": "WorkOrderPriority",
71+
"WorkOrder.Status": "WorkOrderStatus",
72+
"ServiceAppointment.AppointmentType": "WorkTypeDefApptType",
73+
"WorkTypeGroup.AdditionalInformation": "WorkTypeGroupAddInfo",
7474
};

src/workaround.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { FileProperties } from "@jsforce/jsforce-node/lib/api/metadata.js";
22
import type { Connection } from "@salesforce/core";
3-
import MAPPING from "./mapping";
3+
import MAPPING from "./mapping.js";
44

55
export async function listStandardValueSets(
66
conn: Connection

test/fake.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { expect } from 'chai';
1+
import { expect } from "chai";
22

3-
describe('fake', function () {
4-
it('passes', async () => {
3+
describe("fake", function () {
4+
it("passes", async () => {
55
expect(true).to.deep.equal(true);
66
});
77
});

test/issue.e2e-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Org } from "@salesforce/core";
22
import { expect } from "chai";
3-
import { listStandardValueSets } from "./issue";
3+
import { listStandardValueSets } from "./issue.js";
44

55
describe("listMetadata", function () {
66
this.slow(5000);

test/issue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import type { Connection } from "@salesforce/core";
44
export async function listStandardValueSets(
55
conn: Connection
66
): Promise<Array<FileProperties>> {
7-
const fileProperties = await conn.metadata.list({ type: 'StandardValueSet' });
7+
const fileProperties = await conn.metadata.list({ type: "StandardValueSet" });
88
return fileProperties;
99
}

test/tsconfig.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "@salesforce/dev-config/tsconfig-test-esm.json",
3+
"include": ["./**/*.ts"],
4+
"compilerOptions": {
5+
"skipLibCheck": true
6+
}
7+
}

test/workaround.e2e-spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { Org } from '@salesforce/core';
2-
import { expect } from 'chai';
3-
import { listStandardValueSets } from '../src/workaround';
1+
import { Org } from "@salesforce/core";
2+
import { expect } from "chai";
3+
import { listStandardValueSets } from "../src/workaround.js";
44

5-
describe('workaround', function () {
5+
describe("workaround", function () {
66
this.slow(5000);
77
this.timeout(20000);
8-
it('adds all available StandardValueSets', async () => {
8+
it("adds all available StandardValueSets", async () => {
99
const org = await Org.create({});
1010
const conn = org.getConnection();
1111
const fileProperties = await listStandardValueSets(conn);
12-
expect(fileProperties.find((item) => item.fullName === 'CaseOrigin'));
13-
expect(fileProperties.find((item) => item.fullName === 'CareItemStatus2'))
12+
expect(fileProperties.find((item) => item.fullName === "CaseOrigin"));
13+
expect(fileProperties.find((item) => item.fullName === "CareItemStatus2"))
1414
.to.be.undefined;
1515
});
1616
});

tsconfig.json

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
{
2+
"extends": "@salesforce/dev-config/tsconfig-esm.json",
23
"compilerOptions": {
34
"outDir": "lib",
4-
"module": "commonjs",
5-
"target": "es2020",
6-
"lib": ["es2020"],
7-
"sourceMap": true,
8-
"declaration": true,
9-
"moduleResolution": "node",
10-
"esModuleInterop": true,
11-
"alwaysStrict": true,
12-
"noUnusedLocals": true
5+
"rootDir": "src",
6+
"skipLibCheck": true
137
},
148
"include": ["./src/**/*.ts"]
159
}

0 commit comments

Comments
 (0)