@revfleet/hscli 0.8.12 → 0.9.1
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/CHANGELOG.md +197 -1
- package/README.md +243 -10
- package/dist/cli.js +27 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent/contracts.d.ts +3 -0
- package/dist/commands/agent/contracts.js +139 -0
- package/dist/commands/agent/contracts.js.map +1 -0
- package/dist/commands/agent/evidence.d.ts +68 -0
- package/dist/commands/agent/evidence.js +358 -0
- package/dist/commands/agent/evidence.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.js +223 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/recipes.d.ts +13 -0
- package/dist/commands/agent/recipes.js +108 -0
- package/dist/commands/agent/recipes.js.map +1 -0
- package/dist/commands/agent/runner.d.ts +16 -0
- package/dist/commands/agent/runner.js +165 -0
- package/dist/commands/agent/runner.js.map +1 -0
- package/dist/commands/audit/index.js +4 -0
- package/dist/commands/audit/index.js.map +1 -1
- package/dist/commands/auth/index.js +64 -7
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/automation/index.js +30 -0
- package/dist/commands/automation/index.js.map +1 -1
- package/dist/commands/backup/index.d.ts +12 -0
- package/dist/commands/backup/index.js +459 -0
- package/dist/commands/backup/index.js.map +1 -0
- package/dist/commands/cms/content-ops.js +1 -1
- package/dist/commands/cms/content-ops.js.map +1 -1
- package/dist/commands/communication-preferences/index.js +207 -7
- package/dist/commands/communication-preferences/index.js.map +1 -1
- package/dist/commands/content-permissions/index.d.ts +22 -0
- package/dist/commands/content-permissions/index.js +141 -0
- package/dist/commands/content-permissions/index.js.map +1 -0
- package/dist/commands/context/index.d.ts +3 -0
- package/dist/commands/context/index.js +182 -0
- package/dist/commands/context/index.js.map +1 -0
- package/dist/commands/crm/associations.js +38 -0
- package/dist/commands/crm/associations.js.map +1 -1
- package/dist/commands/crm/custom-objects.js +39 -2
- package/dist/commands/crm/custom-objects.js.map +1 -1
- package/dist/commands/crm/dated.js +3 -3
- package/dist/commands/crm/dated.js.map +1 -1
- package/dist/commands/crm/migration.js +210 -2
- package/dist/commands/crm/migration.js.map +1 -1
- package/dist/commands/crm/properties.js +2 -1
- package/dist/commands/crm/properties.js.map +1 -1
- package/dist/commands/crm/property-batch.d.ts +1 -0
- package/dist/commands/crm/property-batch.js +44 -5
- package/dist/commands/crm/property-batch.js.map +1 -1
- package/dist/commands/crm/shared.js +21 -2
- package/dist/commands/crm/shared.js.map +1 -1
- package/dist/commands/crm/sync.js +1 -1
- package/dist/commands/crm/sync.js.map +1 -1
- package/dist/commands/doctor/index.js +193 -0
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/email-tracking/index.d.ts +16 -0
- package/dist/commands/email-tracking/index.js +314 -0
- package/dist/commands/email-tracking/index.js.map +1 -0
- package/dist/commands/extensions/index.js +1 -1
- package/dist/commands/extensions/index.js.map +1 -1
- package/dist/commands/forms/index.js +15 -2
- package/dist/commands/forms/index.js.map +1 -1
- package/dist/commands/forms/legacy-v2.d.ts +7 -2
- package/dist/commands/forms/legacy-v2.js +103 -7
- package/dist/commands/forms/legacy-v2.js.map +1 -1
- package/dist/commands/guide/index.d.ts +1 -1
- package/dist/commands/guide/index.js +37 -4
- package/dist/commands/guide/index.js.map +1 -1
- package/dist/commands/internal/catalog.d.ts +1 -0
- package/dist/commands/internal/catalog.js +2 -0
- package/dist/commands/internal/catalog.js.map +1 -0
- package/dist/commands/internal/index.d.ts +26 -0
- package/dist/commands/internal/index.js +823 -0
- package/dist/commands/internal/index.js.map +1 -0
- package/dist/commands/internal-session.d.ts +15 -0
- package/dist/commands/internal-session.js +152 -0
- package/dist/commands/internal-session.js.map +1 -0
- package/dist/commands/lists/index.js +1 -1
- package/dist/commands/lists/index.js.map +1 -1
- package/dist/commands/marketing/email-audit.d.ts +32 -0
- package/dist/commands/marketing/email-audit.js +121 -0
- package/dist/commands/marketing/email-audit.js.map +1 -0
- package/dist/commands/marketing/index.js +2 -0
- package/dist/commands/marketing/index.js.map +1 -1
- package/dist/commands/mcp.js +5 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/playbooks/index.d.ts +3 -0
- package/dist/commands/playbooks/index.js +228 -0
- package/dist/commands/playbooks/index.js.map +1 -0
- package/dist/commands/portals/index.d.ts +3 -0
- package/dist/commands/portals/index.js +132 -0
- package/dist/commands/portals/index.js.map +1 -0
- package/dist/commands/reports/index.d.ts +3 -0
- package/dist/commands/reports/index.js +479 -0
- package/dist/commands/reports/index.js.map +1 -0
- package/dist/commands/sales-content/index.d.ts +13 -0
- package/dist/commands/sales-content/index.js +59 -0
- package/dist/commands/sales-content/index.js.map +1 -0
- package/dist/commands/sales-templates/index.d.ts +3 -0
- package/dist/commands/sales-templates/index.js +88 -0
- package/dist/commands/sales-templates/index.js.map +1 -0
- package/dist/commands/seed/cms.js +28 -45
- package/dist/commands/seed/cms.js.map +1 -1
- package/dist/commands/sequences/index.d.ts +18 -0
- package/dist/commands/sequences/index.js +263 -0
- package/dist/commands/sequences/index.js.map +1 -0
- package/dist/commands/settings/index.js +450 -102
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/commands/settings/site-settings.d.ts +3 -0
- package/dist/commands/settings/site-settings.js +106 -0
- package/dist/commands/settings/site-settings.js.map +1 -0
- package/dist/commands/ui/index.js +14 -4
- package/dist/commands/ui/index.js.map +1 -1
- package/dist/commands/workflows/index.js +2 -0
- package/dist/commands/workflows/index.js.map +1 -1
- package/dist/commands/workflows/preflight.d.ts +23 -0
- package/dist/commands/workflows/preflight.js +295 -0
- package/dist/commands/workflows/preflight.js.map +1 -0
- package/dist/core/action-contract.d.ts +43 -0
- package/dist/core/action-contract.js +207 -0
- package/dist/core/action-contract.js.map +1 -0
- package/dist/core/auth.d.ts +6 -0
- package/dist/core/auth.js +85 -0
- package/dist/core/auth.js.map +1 -1
- package/dist/core/http.d.ts +8 -0
- package/dist/core/http.js +37 -5
- package/dist/core/http.js.map +1 -1
- package/dist/core/id-maps.d.ts +27 -0
- package/dist/core/id-maps.js +204 -0
- package/dist/core/id-maps.js.map +1 -0
- package/dist/core/output.d.ts +2 -1
- package/dist/core/output.js +34 -0
- package/dist/core/output.js.map +1 -1
- package/dist/mcp/profiles.d.ts +14 -0
- package/dist/mcp/profiles.js +68 -0
- package/dist/mcp/profiles.js.map +1 -0
- package/dist/mcp/server.d.ts +5 -3
- package/dist/mcp/server.js +22 -5
- package/dist/mcp/server.js.map +1 -1
- package/docs/CAPABILITY_LIBRARY.md +29 -8
- package/docs/COMMAND_TREE.md +99 -17
- package/docs/COMPARISON.md +8 -5
- package/docs/COOKBOOK.md +124 -5
- package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +813 -0
- package/docs/INTERNAL-ENDPOINTS.md +371 -0
- package/docs/INTERNAL_ENDPOINTS.md +243 -0
- package/docs/MARKETING_SETUP.md +21 -1
- package/docs/MCP.md +28 -89
- package/docs/MCP_TOOL_CATALOG.md +192 -0
- package/docs/MIGRATION_ADAPTERS.md +115 -0
- package/docs/PORTAL_BACKUP.md +212 -0
- package/docs/PUBLISHING.md +1 -1
- package/docs/SALES_CONTENT_INTERNAL_PUNCH_LIST.md +504 -0
- package/docs/TUTORIALS/secure-agent-writes.md +49 -0
- package/docs/WHY_HOW_WHAT.md +10 -4
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/crm/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/crm/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASjE,SAAS,SAAS,CAAC,QAAgB;IACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAc,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAgB;IACpD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,MAAwB;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE3E,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,cAAc,CAAC;SACxB,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;SACpD,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,iBAAiB,OAAO,CAAC;QACvG,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAEnC,mCAAmC;QACnC,MAAM,WAAW,GAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAEpE,8DAA8D;QAC9D,oFAAoF;QACpF,IAAI,KAAyB,CAAC;QAC9B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,kFAAkF;YAClF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC7D,yEAAyE;gBACzE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC/B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,CAAC;QAED,qDAAqD;QACrD,MAAM,aAAa,GAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAEtE,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;YACxB,8DAA8D;YAC9D,IAAI,QAAa,CAAC;YAClB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,kCAAkC,CAAC,CAAC;gBAC/E,CAAC;gBACD,MAAM,IAAI,GAA4B;oBACpC,KAAK;oBACL,YAAY,EAAE,CAAC;4BACb,OAAO,EAAE,CAAC;oCACR,YAAY,EAAE,qBAAqB;oCACnC,QAAQ,EAAE,KAAK;oCACf,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;iCACnC,CAAC;yBACH,CAAC;oBACF,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;iBACzE,CAAC;gBACF,IAAI,KAAK;oBAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAC7B,mBAAmB,iBAAiB,SAAS,EAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CACjD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,IAAI,KAAK;oBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACtC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,IAAI,CAAC,KAAK;gBAAE,MAAM;QACpB,CAAC;QAED,MAAM,MAAM,GAAG;YACb,UAAU;YACV,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,SAAS,EAAE,KAAK,IAAI,IAAI;YACxB,OAAO;SACR,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QACtF,CAAC;QAED,0EAA0E;QAC1E,UAAU,CAAC,SAAS,EAAE;YACpB,KAAK;YACL,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;SAC7D,CAAC,CAAC;QAEH,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -107,6 +107,127 @@ function extractTokenInfoScopes(value) {
|
|
|
107
107
|
? record.scope
|
|
108
108
|
: undefined);
|
|
109
109
|
}
|
|
110
|
+
const PARITY_SURFACES = [
|
|
111
|
+
{
|
|
112
|
+
id: "crm-records",
|
|
113
|
+
label: "CRM records",
|
|
114
|
+
status: "public-api",
|
|
115
|
+
commands: ["crm <object> list|get|create|update|delete", "crm <object> batch-*", "reports pull object-fill-rate"],
|
|
116
|
+
notes: "Contacts, companies, deals, tickets, commerce objects, custom objects, and engagement records are public-API first.",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: "crm-schemas-properties-pipelines-associations",
|
|
120
|
+
label: "CRM schemas, properties, pipelines, and association labels",
|
|
121
|
+
status: "public-api",
|
|
122
|
+
commands: ["crm properties *", "crm properties groups *", "crm pipelines *", "crm associations *"],
|
|
123
|
+
notes: "Use public v3/v4 APIs first; internal adapters only for UI metadata that public APIs omit.",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "owners-users-teams",
|
|
127
|
+
label: "Owners, users, and teams",
|
|
128
|
+
status: "hybrid",
|
|
129
|
+
commands: ["crm owners list", "settings users *", "settings teams *"],
|
|
130
|
+
notes: "Public APIs cover common reads/writes; internal user detail can confirm direct roleNames and permission-set assignments.",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "permission-sets",
|
|
134
|
+
label: "Permission sets",
|
|
135
|
+
status: "internal-adapter",
|
|
136
|
+
commands: [
|
|
137
|
+
"settings permission-sets list|get|create|update|delete|clone",
|
|
138
|
+
"settings permission-sets users list|get|batch-read|assign",
|
|
139
|
+
"settings permission-sets assignments list",
|
|
140
|
+
"settings permission-sets roles list|get",
|
|
141
|
+
"settings permission-sets audit assignment-history|role-change-history|user-access",
|
|
142
|
+
"settings permission-sets role-categories|scopes|seats",
|
|
143
|
+
"settings permission-sets seat-assignments list|update",
|
|
144
|
+
"settings permission-sets templates list|get|create",
|
|
145
|
+
"settings flp list|object|property|access-state|blocklist|bypass-users",
|
|
146
|
+
],
|
|
147
|
+
notes: "HubSpot exposes permission sets, atomic roles, scopes, seats, templates, and assignments through app-users browser-session endpoints, not bearer-token public APIs.",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "business-units",
|
|
151
|
+
label: "Business units",
|
|
152
|
+
status: "internal-adapter",
|
|
153
|
+
commands: ["settings business-units capture"],
|
|
154
|
+
notes: "The read surface is internal; replay should be explicit and id-map driven.",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
id: "lists-forms-files-cms",
|
|
158
|
+
label: "Lists, forms, files, and CMS content",
|
|
159
|
+
status: "public-api",
|
|
160
|
+
commands: ["lists *", "forms *", "files *", "cms *"],
|
|
161
|
+
notes: "Most definitions and assets are public-API reachable, with CMS template bodies requiring source-code/file endpoints.",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
id: "workflows",
|
|
165
|
+
label: "Workflows",
|
|
166
|
+
status: "hybrid",
|
|
167
|
+
commands: ["workflows flows *", "workflows v3 *"],
|
|
168
|
+
notes: "Public APIs cover inventory and partial definitions; full UI action fidelity uses internal workflow detail endpoints.",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
id: "marketing-emails",
|
|
172
|
+
label: "Marketing emails",
|
|
173
|
+
status: "hybrid",
|
|
174
|
+
commands: ["marketing-emails-v1 *", "marketing email *", "reports pull email-recipients"],
|
|
175
|
+
notes: "Public APIs cover analytics and metadata; drag-and-drop body fidelity requires an internal email read adapter.",
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: "reports-dashboards-datasets",
|
|
179
|
+
label: "Reports, dashboards, and datasets",
|
|
180
|
+
status: "hybrid",
|
|
181
|
+
commands: ["reports *", "reports-v2 *", "backup plan --include-internal"],
|
|
182
|
+
notes: "Some public reporting APIs exist, but dashboard/report definitions and Data Studio datasets are mainly internal.",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
id: "sales-content",
|
|
186
|
+
label: "Sales content",
|
|
187
|
+
status: "internal-adapter",
|
|
188
|
+
commands: ["sales-content search", "sequences *", "sales-templates *", "playbooks *", "content-permissions set"],
|
|
189
|
+
notes: "Sequences, templates, playbooks, and sales-content permissions use allowlisted browser-session adapters.",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: "subscriptions-consent",
|
|
193
|
+
label: "Communication preferences and subscription types",
|
|
194
|
+
status: "hybrid",
|
|
195
|
+
commands: ["communication-preferences *", "settings business-units capture"],
|
|
196
|
+
notes: "Public communication-preference APIs cover status; full subscription-type/BU fidelity can need internal adapters.",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: "brand-kits-ctas-design-manager",
|
|
200
|
+
label: "Brand kits, CTAs, and Design Manager",
|
|
201
|
+
status: "internal-adapter",
|
|
202
|
+
commands: ["backup plan --include-internal"],
|
|
203
|
+
notes: "Capture is possible through known browser-session endpoints; write replay should stay adapter-specific.",
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
id: "cms-domain-tls",
|
|
207
|
+
label: "CMS domain TLS/certificate settings",
|
|
208
|
+
status: "ui-only",
|
|
209
|
+
commands: [],
|
|
210
|
+
notes: "HubSpot keeps TLS/certificate operations in UI-controlled flows; capture/document rather than replay automatically.",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
id: "portal-copy-job",
|
|
214
|
+
label: "HubSpot portal-copy job",
|
|
215
|
+
status: "ui-only",
|
|
216
|
+
commands: [],
|
|
217
|
+
notes: "HubSpot's native portal-copy flow is not exposed as a safe API operation for hscli.",
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
function summarizeParity() {
|
|
221
|
+
return PARITY_SURFACES.reduce((acc, surface) => {
|
|
222
|
+
acc[surface.status] += 1;
|
|
223
|
+
return acc;
|
|
224
|
+
}, {
|
|
225
|
+
"public-api": 0,
|
|
226
|
+
"internal-adapter": 0,
|
|
227
|
+
hybrid: 0,
|
|
228
|
+
"ui-only": 0,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
110
231
|
export function registerDoctor(program, getCtx) {
|
|
111
232
|
const doctor = program.command("doctor").description("Diagnostics and capability checks");
|
|
112
233
|
doctor
|
|
@@ -127,6 +248,26 @@ export function registerDoctor(program, getCtx) {
|
|
|
127
248
|
});
|
|
128
249
|
printResult(ctx, result);
|
|
129
250
|
});
|
|
251
|
+
doctor
|
|
252
|
+
.command("parity")
|
|
253
|
+
.description("Summarize hscli coverage across public APIs, internal adapters, hybrid surfaces, and UI-only gaps")
|
|
254
|
+
.action(() => {
|
|
255
|
+
const ctx = getCtx();
|
|
256
|
+
const byStatus = summarizeParity();
|
|
257
|
+
printResult(ctx, {
|
|
258
|
+
summary: {
|
|
259
|
+
total: PARITY_SURFACES.length,
|
|
260
|
+
byStatus,
|
|
261
|
+
},
|
|
262
|
+
surfaces: PARITY_SURFACES,
|
|
263
|
+
guardrails: [
|
|
264
|
+
"Prefer public API commands first; use internal adapters only when HubSpot exposes no public equivalent.",
|
|
265
|
+
"Internal adapters are allowlisted commands, not generic endpoint passthroughs.",
|
|
266
|
+
"Writes still require --force and should be paired with trace/audit and a change ticket on governed portals.",
|
|
267
|
+
"UI-only surfaces should be documented with manual evidence rather than automated writes.",
|
|
268
|
+
],
|
|
269
|
+
});
|
|
270
|
+
});
|
|
130
271
|
const scopes = doctor.command("scopes").description("Inspect HubSpot OAuth/private-app scope catalog and compare required presets");
|
|
131
272
|
scopes
|
|
132
273
|
.command("list")
|
|
@@ -346,5 +487,57 @@ export function registerDoctor(program, getCtx) {
|
|
|
346
487
|
checks,
|
|
347
488
|
});
|
|
348
489
|
});
|
|
490
|
+
doctor
|
|
491
|
+
.command("internal-adapters")
|
|
492
|
+
.description("List allowlisted browser-session/internal migration adapters")
|
|
493
|
+
.action(() => {
|
|
494
|
+
const ctx = getCtx();
|
|
495
|
+
printResult(ctx, {
|
|
496
|
+
warning: "Internal adapters are explicit migration/setup commands, not a generic internal API passthrough. They require browser-session auth and normal hscli dry-run/force guardrails for writes.",
|
|
497
|
+
adapters: [
|
|
498
|
+
{
|
|
499
|
+
kind: "setup",
|
|
500
|
+
command: "settings business-units capture",
|
|
501
|
+
endpoint: "/api/business-units/v1/business-units",
|
|
502
|
+
auth: "browser-session",
|
|
503
|
+
access: "read",
|
|
504
|
+
status: "supported",
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
kind: "setup",
|
|
508
|
+
command: "settings permission-sets list|get|create|update|delete",
|
|
509
|
+
endpoint: "/api/app-users/v1/permission-sets",
|
|
510
|
+
auth: "browser-session",
|
|
511
|
+
access: "read/write",
|
|
512
|
+
status: "supported",
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
kind: "migration",
|
|
516
|
+
command: "communication-preferences definitions create-internal",
|
|
517
|
+
endpoint: "/api/subscriptions/v1/definitions",
|
|
518
|
+
auth: "browser-session",
|
|
519
|
+
access: "write",
|
|
520
|
+
status: "supported",
|
|
521
|
+
notes: "Email > Subscription Types creation; use composite idempotency and business-unit remapping.",
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
kind: "migration",
|
|
525
|
+
command: "reports capture --session",
|
|
526
|
+
endpoint: "/reports/v2/reports",
|
|
527
|
+
auth: "browser-session",
|
|
528
|
+
access: "read",
|
|
529
|
+
status: "planned",
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
kind: "migration",
|
|
533
|
+
command: "dashboards capture --session",
|
|
534
|
+
endpoint: "/dashboard/v2",
|
|
535
|
+
auth: "browser-session",
|
|
536
|
+
access: "read",
|
|
537
|
+
status: "planned",
|
|
538
|
+
},
|
|
539
|
+
],
|
|
540
|
+
});
|
|
541
|
+
});
|
|
349
542
|
}
|
|
350
543
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CliContext } from "../../core/output.js";
|
|
3
|
+
export declare function registerEmailTracking(program: Command, getCtx: () => CliContext): void;
|
|
4
|
+
interface ResolvedLink {
|
|
5
|
+
input: string;
|
|
6
|
+
destination: string | null;
|
|
7
|
+
utm: Record<string, string>;
|
|
8
|
+
hsTracking: Record<string, string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Follow a HubSpot `hubspotlinks.com/Ctc/...` link to its destination. The
|
|
12
|
+
* first hop returns an HTML bounce page whose `_jss=0` fallback URL 307-redirects
|
|
13
|
+
* to the real destination (with whatever UTM tags the send applied).
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveTrackingLink(rawUrl: string): Promise<ResolvedLink>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { CliError, printResult } from "../../core/output.js";
|
|
3
|
+
import { addBrowserSessionOptions, resolveBrowserSession } from "../internal-session.js";
|
|
4
|
+
function emailPath(id, portalId) {
|
|
5
|
+
return `/content/api/v4/emails/${id}?portalId=${encodeURIComponent(portalId)}`;
|
|
6
|
+
}
|
|
7
|
+
function bufferPath(id, portalId) {
|
|
8
|
+
return `/api/cosemail-edit-publish/v1/emails/${id}/buffer?portalId=${encodeURIComponent(portalId)}`;
|
|
9
|
+
}
|
|
10
|
+
function pushLivePath(id, portalId) {
|
|
11
|
+
return `/api/cosemail-edit-publish/v1/emails/${id}/push-buffer-live?portalId=${encodeURIComponent(portalId)}`;
|
|
12
|
+
}
|
|
13
|
+
async function readState(client, portalId, id) {
|
|
14
|
+
const res = await client.request(emailPath(id, portalId), { permissionMode: "read" });
|
|
15
|
+
if (!res || typeof res !== "object" || Array.isArray(res)) {
|
|
16
|
+
throw new CliError("EMAIL_NOT_FOUND", `Email ${id} did not return an object (check the ID and portal).`);
|
|
17
|
+
}
|
|
18
|
+
const r = res;
|
|
19
|
+
if (r.id === undefined && r.status === "error") {
|
|
20
|
+
throw new CliError("EMAIL_NOT_FOUND", `Email ${id}: ${typeof r.message === "string" ? r.message : "not found"}.`);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
id,
|
|
24
|
+
name: typeof r.name === "string" ? r.name : "",
|
|
25
|
+
state: typeof r.currentState === "string" ? r.currentState : "",
|
|
26
|
+
isPublished: r.isPublished === true,
|
|
27
|
+
disableAllTracking: r.disableAllTracking === true,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function siteSettingsPath(portalId) {
|
|
31
|
+
return `/api/content-settings/v1/site-settings/by-portal-id/${encodeURIComponent(portalId)}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read the portal site-settings that gate the in-app per-email tracking toggle.
|
|
35
|
+
* The toggle is greyed out in the UI unless ALL of these hold (decoded from the
|
|
36
|
+
* email editor's `getAreAllTrackingSettingsEnabled` selector). This command
|
|
37
|
+
* doesn't need the gate — it explains why the UI does.
|
|
38
|
+
*/
|
|
39
|
+
async function readGate(client, portalId) {
|
|
40
|
+
const res = await client.request(siteSettingsPath(portalId), { permissionMode: "read" });
|
|
41
|
+
if (!res || typeof res !== "object" || Array.isArray(res)) {
|
|
42
|
+
throw new CliError("SITE_SETTINGS_UNAVAILABLE", "Site settings endpoint did not return an object.");
|
|
43
|
+
}
|
|
44
|
+
const r = res;
|
|
45
|
+
const conditions = {
|
|
46
|
+
emailOpenTrackingAnonymizationDisabled: r.emailOpenTrackingAnonymizationEnabled !== true,
|
|
47
|
+
sourceTrackingRewriteAll: r.utmSourceTracking === "REWRITE_ALL",
|
|
48
|
+
clickTrackingHtml: r.utmAutomaticTracking === true,
|
|
49
|
+
clickTrackingPlainText: r.utmAutomaticPlainTextTracking === true,
|
|
50
|
+
identityTracking: r.utmIdentityTracking === true,
|
|
51
|
+
};
|
|
52
|
+
const uiToggleAvailable = Object.values(conditions).every(Boolean);
|
|
53
|
+
const failing = Object.entries(conditions).filter(([, ok]) => !ok).map(([k]) => k);
|
|
54
|
+
return {
|
|
55
|
+
utmSourceTracking: r.utmSourceTracking,
|
|
56
|
+
uiToggleAvailable,
|
|
57
|
+
failingConditions: failing,
|
|
58
|
+
conditions,
|
|
59
|
+
note: uiToggleAvailable
|
|
60
|
+
? "The in-app per-email toggle is editable."
|
|
61
|
+
: "The in-app toggle is locked, but `email-tracking disable/enable` still works (server ignores this gate).",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** Stage disableAllTracking into the edit buffer, then commit it live. */
|
|
65
|
+
async function applyTracking(client, portalId, id, disable) {
|
|
66
|
+
await client.request(bufferPath(id, portalId), {
|
|
67
|
+
method: "PUT",
|
|
68
|
+
body: { disableAllTracking: disable },
|
|
69
|
+
permissionMode: "write",
|
|
70
|
+
});
|
|
71
|
+
await client.request(pushLivePath(id, portalId), {
|
|
72
|
+
method: "POST",
|
|
73
|
+
body: {},
|
|
74
|
+
permissionMode: "write",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export function registerEmailTracking(program, getCtx) {
|
|
78
|
+
const et = program
|
|
79
|
+
.command("email-tracking")
|
|
80
|
+
.description("Marketing email tracking operations: toggle per-email open+click tracking (disableAllTracking) via the internal " +
|
|
81
|
+
"edit-publish buffer (bypasses the client-side REWRITE_ALL gate), send test emails, and resolve tracked links.");
|
|
82
|
+
for (const action of ["disable", "enable"]) {
|
|
83
|
+
const disable = action === "disable";
|
|
84
|
+
addBrowserSessionOptions(et
|
|
85
|
+
.command(action)
|
|
86
|
+
.description(`${disable ? "Turn OFF" : "Turn ON"} open+click tracking for one or more marketing emails ` +
|
|
87
|
+
"(republishes already-published emails; no re-send).")
|
|
88
|
+
.option("--ids <ids>", "Comma-separated marketing email IDs")
|
|
89
|
+
.option("--ids-file <path>", "File with email IDs (comma- or newline-separated; # comments allowed)")).action(async (opts) => {
|
|
90
|
+
const ctx = getCtx();
|
|
91
|
+
const session = resolveBrowserSession(ctx, opts, `Email tracking ${action}`, true);
|
|
92
|
+
const portalId = session.portalId;
|
|
93
|
+
const ids = resolveIds(opts);
|
|
94
|
+
const results = [];
|
|
95
|
+
for (const id of ids) {
|
|
96
|
+
try {
|
|
97
|
+
const before = await readState(session.client, portalId, id);
|
|
98
|
+
const wouldChange = before.disableAllTracking !== disable;
|
|
99
|
+
if (ctx.dryRun) {
|
|
100
|
+
results.push({
|
|
101
|
+
id,
|
|
102
|
+
name: before.name,
|
|
103
|
+
state: before.state,
|
|
104
|
+
ok: true,
|
|
105
|
+
dryRun: true,
|
|
106
|
+
before: before.disableAllTracking,
|
|
107
|
+
target: disable,
|
|
108
|
+
wouldChange,
|
|
109
|
+
republished: before.isPublished,
|
|
110
|
+
});
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!ctx.force) {
|
|
114
|
+
throw new CliError("WRITE_CONFIRMATION_REQUIRED", "Write blocked. Re-run with --dry-run to preview, then add --force to execute.");
|
|
115
|
+
}
|
|
116
|
+
if (!wouldChange) {
|
|
117
|
+
results.push({ id, name: before.name, state: before.state, ok: true, skipped: true, before: before.disableAllTracking, after: before.disableAllTracking });
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
await applyTracking(session.client, portalId, id, disable);
|
|
121
|
+
const after = await readState(session.client, portalId, id);
|
|
122
|
+
results.push({
|
|
123
|
+
id,
|
|
124
|
+
name: after.name,
|
|
125
|
+
state: after.state,
|
|
126
|
+
ok: after.disableAllTracking === disable,
|
|
127
|
+
before: before.disableAllTracking,
|
|
128
|
+
after: after.disableAllTracking,
|
|
129
|
+
republished: before.isPublished,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
if (err instanceof CliError && err.code === "WRITE_CONFIRMATION_REQUIRED")
|
|
134
|
+
throw err;
|
|
135
|
+
results.push({ id, name: "", state: "", ok: false, error: err instanceof Error ? err.message : String(err) });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const changed = results.filter((r) => r.ok && !r.skipped && !r.dryRun).length;
|
|
139
|
+
const failed = results.filter((r) => !r.ok).length;
|
|
140
|
+
printResult(ctx, {
|
|
141
|
+
action,
|
|
142
|
+
target: { disableAllTracking: disable },
|
|
143
|
+
portalId,
|
|
144
|
+
total: ids.length,
|
|
145
|
+
changed,
|
|
146
|
+
skipped: results.filter((r) => r.skipped).length,
|
|
147
|
+
failed,
|
|
148
|
+
dryRun: ctx.dryRun || undefined,
|
|
149
|
+
results,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
addBrowserSessionOptions(et
|
|
154
|
+
.command("gate")
|
|
155
|
+
.description("Explain the portal site-settings that gate the in-app per-email tracking toggle (read-only)")).action(async (opts) => {
|
|
156
|
+
const ctx = getCtx();
|
|
157
|
+
const session = resolveBrowserSession(ctx, opts, "Email tracking gate", true);
|
|
158
|
+
const gate = await readGate(session.client, session.portalId);
|
|
159
|
+
printResult(ctx, { portalId: session.portalId, ...gate });
|
|
160
|
+
});
|
|
161
|
+
addBrowserSessionOptions(et
|
|
162
|
+
.command("status")
|
|
163
|
+
.description("Read current disableAllTracking + publish state for one or more marketing emails")
|
|
164
|
+
.option("--ids <ids>", "Comma-separated marketing email IDs")
|
|
165
|
+
.option("--ids-file <path>", "File with email IDs (comma- or newline-separated; # comments allowed)")).action(async (opts) => {
|
|
166
|
+
const ctx = getCtx();
|
|
167
|
+
const session = resolveBrowserSession(ctx, opts, "Email tracking status", true);
|
|
168
|
+
const portalId = session.portalId;
|
|
169
|
+
const ids = resolveIds(opts);
|
|
170
|
+
const results = [];
|
|
171
|
+
for (const id of ids) {
|
|
172
|
+
try {
|
|
173
|
+
const s = await readState(session.client, portalId, id);
|
|
174
|
+
results.push({ id, name: s.name, state: s.state, ok: true, after: s.disableAllTracking, republished: s.isPublished });
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
results.push({ id, name: "", state: "", ok: false, error: err instanceof Error ? err.message : String(err) });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
printResult(ctx, { portalId, total: ids.length, results });
|
|
181
|
+
});
|
|
182
|
+
addBrowserSessionOptions(et
|
|
183
|
+
.command("test-send")
|
|
184
|
+
.description("Send a test copy of a marketing email to an address (does NOT enroll contacts / trigger workflows)")
|
|
185
|
+
.requiredOption("--id <emailId>", "Marketing email ID")
|
|
186
|
+
.requiredOption("--to <address>", "Recipient email address")
|
|
187
|
+
.option("--plain-text", "Send the plain-text version instead of HTML")).action(async (opts) => {
|
|
188
|
+
const ctx = getCtx();
|
|
189
|
+
const session = resolveBrowserSession(ctx, opts, "Email test-send", true);
|
|
190
|
+
const portalId = session.portalId;
|
|
191
|
+
const contentId = parseId(opts.id, "--id");
|
|
192
|
+
const toAddress = opts.to.trim();
|
|
193
|
+
if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(toAddress)) {
|
|
194
|
+
throw new CliError("INVALID_FLAG", `--to is not a valid email address: ${opts.to}`);
|
|
195
|
+
}
|
|
196
|
+
const body = { toAddress, plainText: Boolean(opts.plainText), contentId };
|
|
197
|
+
if (ctx.dryRun) {
|
|
198
|
+
printResult(ctx, { dryRun: true, action: "test-send", portalId, ...body });
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (!ctx.force) {
|
|
202
|
+
throw new CliError("WRITE_CONFIRMATION_REQUIRED", "Test send blocked. Re-run with --dry-run to preview, then add --force to send.");
|
|
203
|
+
}
|
|
204
|
+
const res = await session.client.request(`/api/email/sending/v1/test-sends/?portalId=${encodeURIComponent(portalId)}`, {
|
|
205
|
+
method: "POST",
|
|
206
|
+
body,
|
|
207
|
+
permissionMode: "write",
|
|
208
|
+
});
|
|
209
|
+
printResult(ctx, { action: "test-send", portalId, ...body, response: res });
|
|
210
|
+
});
|
|
211
|
+
et
|
|
212
|
+
.command("resolve-link")
|
|
213
|
+
.argument("<url>", "A HubSpot click-tracking link (hubspotlinks.com/Ctc/...)")
|
|
214
|
+
.description("Resolve a HubSpot tracked link to its final destination URL + UTM params. NOTE: registers a click — use on test emails.")
|
|
215
|
+
.action(async (url) => {
|
|
216
|
+
const ctx = getCtx();
|
|
217
|
+
const resolved = await resolveTrackingLink(url);
|
|
218
|
+
printResult(ctx, resolved);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
function parseId(raw, flag) {
|
|
222
|
+
const n = Number(raw?.trim());
|
|
223
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
224
|
+
throw new CliError("INVALID_FLAG", `${flag} must be a positive integer (got: ${raw}).`);
|
|
225
|
+
}
|
|
226
|
+
return n;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Follow a HubSpot `hubspotlinks.com/Ctc/...` link to its destination. The
|
|
230
|
+
* first hop returns an HTML bounce page whose `_jss=0` fallback URL 307-redirects
|
|
231
|
+
* to the real destination (with whatever UTM tags the send applied).
|
|
232
|
+
*/
|
|
233
|
+
export async function resolveTrackingLink(rawUrl) {
|
|
234
|
+
let parsed;
|
|
235
|
+
try {
|
|
236
|
+
parsed = new URL(rawUrl);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
throw new CliError("INVALID_FLAG", "Provide a full https URL.");
|
|
240
|
+
}
|
|
241
|
+
if (parsed.protocol !== "https:") {
|
|
242
|
+
throw new CliError("INVALID_FLAG", "Tracking link must be https.");
|
|
243
|
+
}
|
|
244
|
+
if (!/(^|\.)hubspotlinks\.com$/i.test(parsed.hostname)) {
|
|
245
|
+
throw new CliError("INVALID_FLAG", "Only *.hubspotlinks.com tracking links are supported.");
|
|
246
|
+
}
|
|
247
|
+
const ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)";
|
|
248
|
+
const page = await fetch(rawUrl, { headers: { "User-Agent": ua }, redirect: "follow" });
|
|
249
|
+
const html = await page.text();
|
|
250
|
+
const fallback = html.match(/https:\/\/[^"']*events\/public\/v1\/encoded\/track\/tc[^"']*_jss=0/);
|
|
251
|
+
if (!fallback) {
|
|
252
|
+
return { input: rawUrl, destination: null, utm: {}, hsTracking: {} };
|
|
253
|
+
}
|
|
254
|
+
const hop = await fetch(fallback[0], { headers: { "User-Agent": ua }, redirect: "manual" });
|
|
255
|
+
const destination = hop.headers.get("location");
|
|
256
|
+
if (!destination) {
|
|
257
|
+
return { input: rawUrl, destination: null, utm: {}, hsTracking: {} };
|
|
258
|
+
}
|
|
259
|
+
const utm = {};
|
|
260
|
+
const hsTracking = {};
|
|
261
|
+
try {
|
|
262
|
+
const params = new URL(destination).searchParams;
|
|
263
|
+
for (const [k, v] of params) {
|
|
264
|
+
if (k.toLowerCase().startsWith("utm_"))
|
|
265
|
+
utm[k] = v;
|
|
266
|
+
else if (k.startsWith("_hs"))
|
|
267
|
+
hsTracking[k] = v;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
/* destination not a parseable URL — leave params empty */
|
|
272
|
+
}
|
|
273
|
+
return { input: rawUrl, destination, utm, hsTracking };
|
|
274
|
+
}
|
|
275
|
+
function resolveIds(opts) {
|
|
276
|
+
const raw = [];
|
|
277
|
+
if (opts.ids)
|
|
278
|
+
raw.push(opts.ids);
|
|
279
|
+
if (opts.idsFile) {
|
|
280
|
+
let contents;
|
|
281
|
+
try {
|
|
282
|
+
contents = readFileSync(opts.idsFile, "utf8");
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
throw new CliError("INVALID_FLAG", `--ids-file cannot read ${opts.idsFile}: ${err instanceof Error ? err.message : String(err)}`);
|
|
286
|
+
}
|
|
287
|
+
raw.push(contents);
|
|
288
|
+
}
|
|
289
|
+
if (raw.length === 0) {
|
|
290
|
+
throw new CliError("INVALID_FLAG", "Provide --ids or --ids-file.");
|
|
291
|
+
}
|
|
292
|
+
const tokens = raw
|
|
293
|
+
.join(",")
|
|
294
|
+
.split(/[\s,]+/)
|
|
295
|
+
.map((s) => s.trim())
|
|
296
|
+
.filter((s) => s && !s.startsWith("#"));
|
|
297
|
+
if (tokens.length === 0) {
|
|
298
|
+
throw new CliError("INVALID_FLAG", "No email IDs found in --ids / --ids-file.");
|
|
299
|
+
}
|
|
300
|
+
const seen = new Set();
|
|
301
|
+
const ids = [];
|
|
302
|
+
for (const token of tokens) {
|
|
303
|
+
const n = Number(token);
|
|
304
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
305
|
+
throw new CliError("INVALID_FLAG", `Email IDs must be positive integers (got: ${token}).`);
|
|
306
|
+
}
|
|
307
|
+
if (!seen.has(n)) {
|
|
308
|
+
seen.add(n);
|
|
309
|
+
ids.push(n);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return ids;
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=index.js.map
|