@revfleet/hscli 0.8.10 → 0.8.11
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 +43 -0
- package/README.md +28 -2
- package/dist/cli.js +25 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth/index.js +46 -11
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/crm/activities.d.ts +3 -0
- package/dist/commands/crm/activities.js +186 -0
- package/dist/commands/crm/activities.js.map +1 -0
- package/dist/commands/crm/index.js +4 -0
- package/dist/commands/crm/index.js.map +1 -1
- package/dist/commands/crm/migration.d.ts +3 -0
- package/dist/commands/crm/migration.js +155 -0
- package/dist/commands/crm/migration.js.map +1 -0
- package/dist/commands/crm/properties.js +105 -18
- package/dist/commands/crm/properties.js.map +1 -1
- package/dist/commands/crm/property-batch.d.ts +34 -0
- package/dist/commands/crm/property-batch.js +205 -0
- package/dist/commands/crm/property-batch.js.map +1 -0
- package/dist/commands/doctor/index.js +119 -1
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/forms/index.js +47 -6
- package/dist/commands/forms/index.js.map +1 -1
- package/dist/commands/forms/legacy-v2.d.ts +6 -0
- package/dist/commands/forms/legacy-v2.js +350 -0
- package/dist/commands/forms/legacy-v2.js.map +1 -0
- package/dist/commands/forms/property-preflight.d.ts +20 -0
- package/dist/commands/forms/property-preflight.js +99 -0
- package/dist/commands/forms/property-preflight.js.map +1 -0
- package/dist/commands/guide/index.d.ts +3 -0
- package/dist/commands/guide/index.js +231 -0
- package/dist/commands/guide/index.js.map +1 -0
- package/dist/commands/settings/index.js +238 -2
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/core/auth.d.ts +7 -1
- package/dist/core/auth.js +45 -7
- package/dist/core/auth.js.map +1 -1
- package/dist/core/http.d.ts +16 -0
- package/dist/core/http.js +141 -40
- package/dist/core/http.js.map +1 -1
- package/dist/core/output.d.ts +2 -0
- package/dist/core/output.js +1 -1
- package/dist/core/output.js.map +1 -1
- package/dist/core/scopes.d.ts +29 -0
- package/dist/core/scopes.js +415 -0
- package/dist/core/scopes.js.map +1 -0
- package/dist/mcp/ext-tools.d.ts +1 -1
- package/dist/mcp/ext-tools.js +52 -1
- package/dist/mcp/ext-tools.js.map +1 -1
- package/dist/mcp/server.js +90 -22
- package/dist/mcp/server.js.map +1 -1
- package/docs/CAPABILITY_LIBRARY.md +4 -3
- package/docs/COMMAND_TREE.md +21 -5
- package/docs/COOKBOOK.md +96 -0
- package/docs/MARKETING_SETUP.md +8 -2
- package/docs/MCP.md +1 -0
- package/docs/OPERATIONAL_PLAYBOOKS.md +1 -1
- package/docs/PORTAL_SETUP.md +3 -2
- package/docs/SAFETY_MODEL.md +3 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/crm/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/crm/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { createClient } from "../../core/http.js";
|
|
3
|
+
import { printResult } from "../../core/output.js";
|
|
4
|
+
import { encodePathSegment } from "./shared.js";
|
|
5
|
+
const DEFAULT_OBJECTS = ["contacts", "companies", "deals", "tickets"];
|
|
6
|
+
const DEFAULT_PIPELINE_OBJECTS = ["deals", "tickets"];
|
|
7
|
+
const DEFAULT_ASSOCIATION_PAIRS = [
|
|
8
|
+
["contacts", "companies"],
|
|
9
|
+
["companies", "contacts"],
|
|
10
|
+
["contacts", "deals"],
|
|
11
|
+
["deals", "contacts"],
|
|
12
|
+
["companies", "deals"],
|
|
13
|
+
["deals", "companies"],
|
|
14
|
+
["deals", "tickets"],
|
|
15
|
+
["tickets", "deals"],
|
|
16
|
+
];
|
|
17
|
+
function parseCsv(raw, fallback) {
|
|
18
|
+
const source = raw?.trim() ? raw : fallback.join(",");
|
|
19
|
+
return source
|
|
20
|
+
.split(",")
|
|
21
|
+
.map((part) => part.trim())
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
}
|
|
24
|
+
function parsePairs(raw) {
|
|
25
|
+
const source = raw?.trim() ? raw : DEFAULT_ASSOCIATION_PAIRS.map(([from, to]) => `${from}:${to}`).join(",");
|
|
26
|
+
return source
|
|
27
|
+
.split(",")
|
|
28
|
+
.map((part) => part.trim())
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.map((part) => part.split(":").map((segment) => segment.trim()))
|
|
31
|
+
.filter((pair) => pair.length === 2 && pair.every(Boolean));
|
|
32
|
+
}
|
|
33
|
+
function serializeError(err) {
|
|
34
|
+
if (err && typeof err === "object") {
|
|
35
|
+
const record = err;
|
|
36
|
+
return {
|
|
37
|
+
code: typeof record.code === "string" ? record.code : "REQUEST_FAILED",
|
|
38
|
+
message: typeof record.message === "string" ? record.message : String(err),
|
|
39
|
+
...(typeof record.status === "number" ? { status: record.status } : {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return { code: "REQUEST_FAILED", message: String(err) };
|
|
43
|
+
}
|
|
44
|
+
async function capture(client, path) {
|
|
45
|
+
try {
|
|
46
|
+
return { ok: true, data: await client.request(path) };
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return { ok: false, error: serializeError(err) };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function responseResults(value) {
|
|
53
|
+
if (!value.ok || !value.data || typeof value.data !== "object" || Array.isArray(value.data))
|
|
54
|
+
return [];
|
|
55
|
+
const results = value.data.results;
|
|
56
|
+
if (!Array.isArray(results))
|
|
57
|
+
return [];
|
|
58
|
+
return results.filter((item) => item !== null && typeof item === "object" && !Array.isArray(item));
|
|
59
|
+
}
|
|
60
|
+
async function collectPipelineMetadata(client, objectType) {
|
|
61
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
62
|
+
const list = await capture(client, `/crm/v3/pipelines/${objectTypeSegment}`);
|
|
63
|
+
const details = [];
|
|
64
|
+
for (const pipeline of responseResults(list)) {
|
|
65
|
+
if (typeof pipeline.id !== "string" || !pipeline.id.trim())
|
|
66
|
+
continue;
|
|
67
|
+
const pipelineIdSegment = encodePathSegment(pipeline.id, "pipelineId");
|
|
68
|
+
details.push({
|
|
69
|
+
id: pipeline.id,
|
|
70
|
+
pipeline: await capture(client, `/crm/v3/pipelines/${objectTypeSegment}/${pipelineIdSegment}`),
|
|
71
|
+
stages: await capture(client, `/crm/v3/pipelines/${objectTypeSegment}/${pipelineIdSegment}/stages`),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return { list, details };
|
|
75
|
+
}
|
|
76
|
+
export function registerMigration(crm, getCtx) {
|
|
77
|
+
const migration = crm.command("migration").description("Migration planning and metadata export helpers");
|
|
78
|
+
migration
|
|
79
|
+
.command("export-metadata")
|
|
80
|
+
.description("Export schema/pipeline metadata needed before migrating a HubSpot portal")
|
|
81
|
+
.option("--objects <csv>", "Object types for properties + property groups", DEFAULT_OBJECTS.join(","))
|
|
82
|
+
.option("--pipeline-objects <csv>", "Object types for pipelines + stages", DEFAULT_PIPELINE_OBJECTS.join(","))
|
|
83
|
+
.option("--no-owners", "Do not include CRM owners")
|
|
84
|
+
.option("--no-teams", "Do not include settings teams")
|
|
85
|
+
.option("--no-business-units", "Do not include business units")
|
|
86
|
+
.option("--no-currencies", "Do not include currencies")
|
|
87
|
+
.option("--no-custom-schemas", "Do not include custom object schemas")
|
|
88
|
+
.option("--no-association-labels", "Do not include standard association label metadata")
|
|
89
|
+
.option("--association-pairs <csv>", "Association label pairs as from:to,from:to; supports custom object type IDs")
|
|
90
|
+
.option("--out <file>", "Write the manifest to a JSON file")
|
|
91
|
+
.action(async (opts) => {
|
|
92
|
+
const ctx = getCtx();
|
|
93
|
+
const client = createClient(ctx.profile);
|
|
94
|
+
const objects = parseCsv(opts.objects, DEFAULT_OBJECTS);
|
|
95
|
+
const pipelineObjects = parseCsv(opts.pipelineObjects, DEFAULT_PIPELINE_OBJECTS);
|
|
96
|
+
const propertyGroups = {};
|
|
97
|
+
const properties = {};
|
|
98
|
+
for (const objectType of objects) {
|
|
99
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
100
|
+
propertyGroups[objectType] = await capture(client, `/crm/v3/properties/${objectTypeSegment}/groups`);
|
|
101
|
+
properties[objectType] = await capture(client, `/crm/v3/properties/${objectTypeSegment}`);
|
|
102
|
+
}
|
|
103
|
+
const pipelines = {};
|
|
104
|
+
for (const objectType of pipelineObjects) {
|
|
105
|
+
pipelines[objectType] = await collectPipelineMetadata(client, objectType);
|
|
106
|
+
}
|
|
107
|
+
const associationLabels = {};
|
|
108
|
+
if (opts.associationLabels) {
|
|
109
|
+
for (const [from, to] of parsePairs(opts.associationPairs)) {
|
|
110
|
+
associationLabels[`${from}:${to}`] = await capture(client, `/crm/v4/associations/${encodePathSegment(from, "fromObjectType")}/${encodePathSegment(to, "toObjectType")}/labels`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const manifest = {
|
|
114
|
+
manifestVersion: 1,
|
|
115
|
+
generatedAt: new Date().toISOString(),
|
|
116
|
+
profile: ctx.profile,
|
|
117
|
+
intent: "portal-migration-metadata",
|
|
118
|
+
requiredForReplayOrder: [
|
|
119
|
+
"customSchemas",
|
|
120
|
+
"propertyGroups",
|
|
121
|
+
"properties",
|
|
122
|
+
"pipelines",
|
|
123
|
+
"associationLabels",
|
|
124
|
+
"ownersAndTeamsMapping",
|
|
125
|
+
],
|
|
126
|
+
notes: [
|
|
127
|
+
"Property group labels/displayOrder come from the source portal response; do not derive labels from groupName.",
|
|
128
|
+
"Pipeline metadata includes pipeline detail and stage detail so stage IDs, labels, displayOrder, and metadata can be mapped before record migration.",
|
|
129
|
+
"Owners, teams, currencies, and business units are mapping inputs. They are exported for planning, not blindly replayed.",
|
|
130
|
+
],
|
|
131
|
+
objects,
|
|
132
|
+
pipelineObjects,
|
|
133
|
+
propertyGroups,
|
|
134
|
+
properties,
|
|
135
|
+
pipelines,
|
|
136
|
+
customSchemas: opts.customSchemas ? await capture(client, "/crm/v3/schemas") : undefined,
|
|
137
|
+
owners: opts.owners ? await capture(client, "/crm/v3/owners/?limit=500") : undefined,
|
|
138
|
+
teams: opts.teams ? await capture(client, "/settings/v3/users/teams") : undefined,
|
|
139
|
+
businessUnits: opts.businessUnits ? await capture(client, "/settings/v3/business-units/?limit=100") : undefined,
|
|
140
|
+
currencies: opts.currencies ? await capture(client, "/settings/v3/currencies") : undefined,
|
|
141
|
+
associationLabels: opts.associationLabels ? associationLabels : undefined,
|
|
142
|
+
recommendedNextCommands: [
|
|
143
|
+
"hscli --dry-run crm properties batch-create contacts --skip-existing --skip-label-collisions --data @contacts-properties.json",
|
|
144
|
+
"hscli --force crm properties batch-create contacts --skip-existing --skip-label-collisions --data @contacts-properties.json",
|
|
145
|
+
"hscli crm pipelines list deals",
|
|
146
|
+
"hscli crm pipelines get deals <pipelineId>",
|
|
147
|
+
],
|
|
148
|
+
};
|
|
149
|
+
if (opts.out) {
|
|
150
|
+
writeFileSync(String(opts.out), `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
|
|
151
|
+
}
|
|
152
|
+
printResult(ctx, opts.out ? { written: opts.out, ...manifest } : manifest);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/commands/crm/migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtE,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,yBAAyB,GAAG;IAChC,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,SAAS,EAAE,OAAO,CAAC;CACrB,CAAC;AAUF,SAAS,QAAQ,CAAC,GAAuB,EAAE,QAAkB;IAC3D,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,MAAM;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5G,OAAO,MAAM;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/D,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,GAA8D,CAAC;QAC9E,OAAO;YACL,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;YACtE,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1E,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAqB,EAAE,IAAY;IACxD,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAuB;IAC9C,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvG,MAAM,OAAO,GAAI,KAAK,CAAC,IAA8B,CAAC,OAAO,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAmC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACtI,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,MAAqB,EAAE,UAAkB;IAI9E,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,qBAAqB,iBAAiB,EAAE,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,SAAS;QACrE,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,qBAAqB,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;YAC9F,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,qBAAqB,iBAAiB,IAAI,iBAAiB,SAAS,CAAC;SACpG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,MAAwB;IACtE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC;IAEzG,SAAS;SACN,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrG,MAAM,CAAC,0BAA0B,EAAE,qCAAqC,EAAE,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7G,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;SAClD,MAAM,CAAC,YAAY,EAAE,+BAA+B,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,yBAAyB,EAAE,oDAAoD,CAAC;SACvF,MAAM,CAAC,2BAA2B,EAAE,6EAA6E,CAAC;SAClH,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;QAEjF,MAAM,cAAc,GAAqC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAqC,EAAE,CAAC;QACxD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACtE,cAAc,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,sBAAsB,iBAAiB,SAAS,CAAC,CAAC;YACrG,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,sBAAsB,iBAAiB,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,SAAS,GAAwE,EAAE,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzC,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,iBAAiB,GAAqC,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3D,iBAAiB,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAChD,MAAM,EACN,wBAAwB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,SAAS,CACpH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG;YACf,eAAe,EAAE,CAAC;YAClB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,2BAA2B;YACnC,sBAAsB,EAAE;gBACtB,eAAe;gBACf,gBAAgB;gBAChB,YAAY;gBACZ,WAAW;gBACX,mBAAmB;gBACnB,uBAAuB;aACxB;YACD,KAAK,EAAE;gBACL,+GAA+G;gBAC/G,qJAAqJ;gBACrJ,yHAAyH;aAC1H;YACD,OAAO;YACP,eAAe;YACf,cAAc;YACd,UAAU;YACV,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;YACxF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS;YACpF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS;YACjF,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/G,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1F,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;YACzE,uBAAuB,EAAE;gBACvB,+HAA+H;gBAC/H,6HAA6H;gBAC7H,gCAAgC;gBAChC,4CAA4C;aAC7C;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;QACD,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
import { createClient } from "../../core/http.js";
|
|
2
|
-
import { printResult } from "../../core/output.js";
|
|
3
|
-
import {
|
|
2
|
+
import { CliError, printResult } from "../../core/output.js";
|
|
3
|
+
import { chunkInputs, loadExistingPropertyMetadata, normalizePropertyBatch, normalizePropertyLabel, propertyName, readPropertyInputs } from "./property-batch.js";
|
|
4
|
+
import { encodePathSegment, maybeWrite, parseJsonPayload, parseNumberFlag } from "./shared.js";
|
|
5
|
+
function parseEmptyEnumMode(raw) {
|
|
6
|
+
if (raw === undefined || raw === "skip")
|
|
7
|
+
return "skip";
|
|
8
|
+
if (raw === "demote")
|
|
9
|
+
return "demote";
|
|
10
|
+
throw new CliError("INVALID_FLAG", "--empty-enum must be skip or demote");
|
|
11
|
+
}
|
|
4
12
|
export function registerProperties(crm, getCtx) {
|
|
5
13
|
const properties = crm.command("properties").description("Property schema operations");
|
|
6
14
|
properties.command("list").argument("<objectType>").action(async (objectType) => {
|
|
7
15
|
const ctx = getCtx();
|
|
8
16
|
const client = createClient(ctx.profile);
|
|
9
|
-
const
|
|
10
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
17
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
11
18
|
const res = await client.request(`/crm/v3/properties/${objectTypeSegment}`);
|
|
12
19
|
printResult(ctx, res);
|
|
13
20
|
});
|
|
14
21
|
properties.command("get").argument("<objectType>").argument("<propertyName>").action(async (objectType, propertyName) => {
|
|
15
22
|
const ctx = getCtx();
|
|
16
23
|
const client = createClient(ctx.profile);
|
|
17
|
-
const
|
|
18
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
24
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
19
25
|
const propertyNameSegment = encodePathSegment(propertyName, "propertyName");
|
|
20
26
|
const res = await client.request(`/crm/v3/properties/${objectTypeSegment}/${propertyNameSegment}`);
|
|
21
27
|
printResult(ctx, res);
|
|
@@ -23,12 +29,90 @@ export function registerProperties(crm, getCtx) {
|
|
|
23
29
|
properties.command("create").argument("<objectType>").requiredOption("--data <payload>", "Property payload JSON").action(async (objectType, opts) => {
|
|
24
30
|
const ctx = getCtx();
|
|
25
31
|
const client = createClient(ctx.profile);
|
|
26
|
-
const
|
|
27
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
32
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
28
33
|
const payload = parseJsonPayload(opts.data);
|
|
29
34
|
const res = await maybeWrite(ctx, client, "POST", `/crm/v3/properties/${objectTypeSegment}`, payload);
|
|
30
35
|
printResult(ctx, res);
|
|
31
36
|
});
|
|
37
|
+
properties
|
|
38
|
+
.command("batch-create")
|
|
39
|
+
.description("Create properties in batches; accepts arrays, { inputs }, or properties list dumps with { results }")
|
|
40
|
+
.argument("<objectType>")
|
|
41
|
+
.requiredOption("--data <payload>", "Batch payload JSON, @file, array, { inputs }, or { results } dump")
|
|
42
|
+
.option("--chunk-size <n>", "Properties per batch request", "100")
|
|
43
|
+
.option("--skip-existing", "Fetch existing sandbox properties and skip matching names")
|
|
44
|
+
.option("--skip-label-collisions", "Fetch existing sandbox properties and skip labels already used by another property")
|
|
45
|
+
.option("--include-readonly", "Do not skip hubspotDefined/readOnlyDefinition properties")
|
|
46
|
+
.option("--include-reserved", "Do not skip reserved hs_* property names")
|
|
47
|
+
.option("--empty-enum <mode>", "How to handle enumeration properties with no valid options: skip|demote", "skip")
|
|
48
|
+
.action(async (objectType, opts) => {
|
|
49
|
+
const ctx = getCtx();
|
|
50
|
+
const client = createClient(ctx.profile);
|
|
51
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
52
|
+
const path = `/crm/v3/properties/${objectTypeSegment}/batch/create`;
|
|
53
|
+
const chunkSize = parseNumberFlag(opts.chunkSize, "--chunk-size");
|
|
54
|
+
const rawInputs = readPropertyInputs(opts.data);
|
|
55
|
+
const normalized = normalizePropertyBatch(rawInputs, {
|
|
56
|
+
includeReadonly: Boolean(opts.includeReadonly),
|
|
57
|
+
includeReserved: Boolean(opts.includeReserved),
|
|
58
|
+
emptyEnumMode: parseEmptyEnumMode(opts.emptyEnum),
|
|
59
|
+
});
|
|
60
|
+
let inputs = normalized.inputs;
|
|
61
|
+
const skippedExisting = [];
|
|
62
|
+
const skippedLabelCollisions = [];
|
|
63
|
+
if ((opts.skipExisting || opts.skipLabelCollisions) && inputs.length > 0) {
|
|
64
|
+
const existing = await loadExistingPropertyMetadata(client, objectTypeSegment);
|
|
65
|
+
inputs = inputs.filter((input) => {
|
|
66
|
+
const name = propertyName(input, "");
|
|
67
|
+
if (opts.skipExisting && name !== "" && existing.names.has(name)) {
|
|
68
|
+
skippedExisting.push(name);
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const label = normalizePropertyLabel(input.label);
|
|
72
|
+
const existingName = label ? existing.labels.get(label) : undefined;
|
|
73
|
+
if (opts.skipLabelCollisions && label && existingName && existingName !== name) {
|
|
74
|
+
skippedLabelCollisions.push({ name, label: String(input.label), existingName });
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const chunks = chunkInputs(inputs, chunkSize);
|
|
81
|
+
const summary = {
|
|
82
|
+
objectType,
|
|
83
|
+
endpoint: path,
|
|
84
|
+
totalInput: rawInputs.length,
|
|
85
|
+
requested: inputs.length,
|
|
86
|
+
skippedReadonly: normalized.skippedReadonly,
|
|
87
|
+
skippedReserved: normalized.skippedReserved,
|
|
88
|
+
skippedInvalid: normalized.skippedInvalid,
|
|
89
|
+
skippedExisting,
|
|
90
|
+
skippedLabelCollisions,
|
|
91
|
+
cleanedOptions: normalized.cleanedOptions,
|
|
92
|
+
demotedEnums: normalized.demotedEnums,
|
|
93
|
+
chunkSize,
|
|
94
|
+
chunks: chunks.map((chunk, index) => ({
|
|
95
|
+
index: index + 1,
|
|
96
|
+
count: chunk.length,
|
|
97
|
+
names: chunk.slice(0, 10).map((input, inputIndex) => propertyName(input, `<chunk:${index + 1}:${inputIndex}>`)),
|
|
98
|
+
})),
|
|
99
|
+
previewInputs: inputs.slice(0, 3),
|
|
100
|
+
};
|
|
101
|
+
if (ctx.dryRun) {
|
|
102
|
+
printResult(ctx, { dryRun: true, method: "POST", path, ...summary });
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (inputs.length === 0) {
|
|
106
|
+
printResult(ctx, { ...summary, responses: [], noOp: true });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const responses = [];
|
|
110
|
+
for (const [index, chunk] of chunks.entries()) {
|
|
111
|
+
const res = await maybeWrite(ctx, client, "POST", path, { inputs: chunk });
|
|
112
|
+
responses.push({ index: index + 1, count: chunk.length, response: res });
|
|
113
|
+
}
|
|
114
|
+
printResult(ctx, { ...summary, responses });
|
|
115
|
+
});
|
|
32
116
|
properties
|
|
33
117
|
.command("update")
|
|
34
118
|
.argument("<objectType>")
|
|
@@ -37,8 +121,7 @@ export function registerProperties(crm, getCtx) {
|
|
|
37
121
|
.action(async (objectType, propertyName, opts) => {
|
|
38
122
|
const ctx = getCtx();
|
|
39
123
|
const client = createClient(ctx.profile);
|
|
40
|
-
const
|
|
41
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
124
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
42
125
|
const propertyNameSegment = encodePathSegment(propertyName, "propertyName");
|
|
43
126
|
const payload = parseJsonPayload(opts.data);
|
|
44
127
|
const res = await maybeWrite(ctx, client, "PATCH", `/crm/v3/properties/${objectTypeSegment}/${propertyNameSegment}`, payload);
|
|
@@ -47,8 +130,7 @@ export function registerProperties(crm, getCtx) {
|
|
|
47
130
|
properties.command("delete").argument("<objectType>").argument("<propertyName>").action(async (objectType, propertyName) => {
|
|
48
131
|
const ctx = getCtx();
|
|
49
132
|
const client = createClient(ctx.profile);
|
|
50
|
-
const
|
|
51
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
133
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
52
134
|
const propertyNameSegment = encodePathSegment(propertyName, "propertyName");
|
|
53
135
|
const res = await maybeWrite(ctx, client, "DELETE", `/crm/v3/properties/${objectTypeSegment}/${propertyNameSegment}`);
|
|
54
136
|
printResult(ctx, res);
|
|
@@ -62,8 +144,7 @@ export function registerProperties(crm, getCtx) {
|
|
|
62
144
|
.action(async (objectType, opts) => {
|
|
63
145
|
const ctx = getCtx();
|
|
64
146
|
const client = createClient(ctx.profile);
|
|
65
|
-
const
|
|
66
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
147
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
67
148
|
const params = new URLSearchParams();
|
|
68
149
|
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
69
150
|
if (opts.after)
|
|
@@ -78,8 +159,7 @@ export function registerProperties(crm, getCtx) {
|
|
|
78
159
|
.action(async (objectType, opts) => {
|
|
79
160
|
const ctx = getCtx();
|
|
80
161
|
const client = createClient(ctx.profile);
|
|
81
|
-
const
|
|
82
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
162
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
83
163
|
const payload = parseJsonPayload(opts.data);
|
|
84
164
|
const res = await maybeWrite(ctx, client, "POST", `/crm/v3/properties/${objectTypeSegment}/groups`, payload);
|
|
85
165
|
printResult(ctx, res);
|
|
@@ -92,12 +172,19 @@ export function registerProperties(crm, getCtx) {
|
|
|
92
172
|
.action(async (objectType, groupName, opts) => {
|
|
93
173
|
const ctx = getCtx();
|
|
94
174
|
const client = createClient(ctx.profile);
|
|
95
|
-
const
|
|
96
|
-
const objectTypeSegment = encodePathSegment(objectTypeValue, "objectType");
|
|
175
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
97
176
|
const groupNameSegment = encodePathSegment(groupName, "groupName");
|
|
98
177
|
const payload = parseJsonPayload(opts.data);
|
|
99
178
|
const res = await maybeWrite(ctx, client, "PATCH", `/crm/v3/properties/${objectTypeSegment}/groups/${groupNameSegment}`, payload);
|
|
100
179
|
printResult(ctx, res);
|
|
101
180
|
});
|
|
181
|
+
groups.command("delete").argument("<objectType>").argument("<groupName>").action(async (objectType, groupName) => {
|
|
182
|
+
const ctx = getCtx();
|
|
183
|
+
const client = createClient(ctx.profile);
|
|
184
|
+
const objectTypeSegment = encodePathSegment(objectType, "objectType");
|
|
185
|
+
const groupNameSegment = encodePathSegment(groupName, "groupName");
|
|
186
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/crm/v3/properties/${objectTypeSegment}/groups/${groupNameSegment}`);
|
|
187
|
+
printResult(ctx, res);
|
|
188
|
+
});
|
|
102
189
|
}
|
|
103
190
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/commands/crm/properties.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/commands/crm/properties.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AACtL,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/F,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvD,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtC,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY,EAAE,MAAwB;IACvE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAEvF,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QAC9E,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,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,sBAAsB,iBAAiB,EAAE,CAAC,CAAC;QAC5E,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;QACtH,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,mBAAmB,GAAG,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,sBAAsB,iBAAiB,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACnG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;QAClJ,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,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;QACtG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,UAAU;SACP,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,qGAAqG,CAAC;SAClH,QAAQ,CAAC,cAAc,CAAC;SACxB,cAAc,CAAC,kBAAkB,EAAE,mEAAmE,CAAC;SACvG,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,EAAE,KAAK,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,2DAA2D,CAAC;SACtF,MAAM,CAAC,yBAAyB,EAAE,oFAAoF,CAAC;SACvH,MAAM,CAAC,oBAAoB,EAAE,0DAA0D,CAAC;SACxF,MAAM,CAAC,oBAAoB,EAAE,0CAA0C,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,yEAAyE,EAAE,MAAM,CAAC;SAChH,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,IAAI,GAAG,sBAAsB,iBAAiB,eAAe,CAAC;QACpE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,EAAE;YACnD,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;YAC9C,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;YAC9C,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;SAClD,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,sBAAsB,GAAiE,EAAE,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAC/E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK,IAAI,YAAY,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;oBAC/E,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAChF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG;YACd,UAAU;YACV,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,SAAS,CAAC,MAAM;YAC5B,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,eAAe;YACf,sBAAsB;YACtB,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;aAChH,CAAC,CAAC;YACH,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAClC,CAAC;QAEF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3E,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,cAAc,CAAC;SACxB,QAAQ,CAAC,gBAAgB,CAAC;SAC1B,cAAc,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;QAC/C,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,mBAAmB,GAAG,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,iBAAiB,IAAI,mBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9H,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;QACzH,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,mBAAmB,GAAG,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,iBAAiB,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACtH,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAErF,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,cAAc,CAAC;SACxB,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC;SAC3C,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;SAC3C,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,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,sBAAsB,iBAAiB,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,cAAc,CAAC;SACxB,cAAc,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACjE,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,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,iBAAiB,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7G,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,cAAc,CAAC;SACxB,QAAQ,CAAC,aAAa,CAAC;SACvB,cAAc,CAAC,kBAAkB,EAAE,oCAAoC,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC5C,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,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,iBAAiB,WAAW,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAClI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAC/G,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,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,iBAAiB,WAAW,gBAAgB,EAAE,CAAC,CAAC;QAC1H,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { HubSpotClient } from "../../core/http.js";
|
|
2
|
+
export type PropertyInput = Record<string, unknown>;
|
|
3
|
+
export type EmptyEnumMode = "skip" | "demote";
|
|
4
|
+
export interface NormalizePropertyBatchOptions {
|
|
5
|
+
includeReadonly?: boolean;
|
|
6
|
+
includeReserved?: boolean;
|
|
7
|
+
emptyEnumMode?: EmptyEnumMode;
|
|
8
|
+
}
|
|
9
|
+
export interface PropertyBatchIssue {
|
|
10
|
+
code: string;
|
|
11
|
+
name: string;
|
|
12
|
+
message: string;
|
|
13
|
+
}
|
|
14
|
+
export interface NormalizedPropertyBatch {
|
|
15
|
+
rawInputs: PropertyInput[];
|
|
16
|
+
inputs: PropertyInput[];
|
|
17
|
+
skippedReadonly: string[];
|
|
18
|
+
skippedReserved: string[];
|
|
19
|
+
skippedInvalid: PropertyBatchIssue[];
|
|
20
|
+
cleanedOptions: PropertyBatchIssue[];
|
|
21
|
+
demotedEnums: PropertyBatchIssue[];
|
|
22
|
+
}
|
|
23
|
+
export interface ExistingPropertyMetadata {
|
|
24
|
+
names: Set<string>;
|
|
25
|
+
labels: Map<string, string>;
|
|
26
|
+
}
|
|
27
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
28
|
+
export declare function readPropertyInputs(raw: string): PropertyInput[];
|
|
29
|
+
export declare function propertyName(input: PropertyInput, fallback: string): string;
|
|
30
|
+
export declare function normalizePropertyBatch(rawInputs: PropertyInput[], options?: NormalizePropertyBatchOptions): NormalizedPropertyBatch;
|
|
31
|
+
export declare function chunkInputs<T>(inputs: T[], chunkSize: number): T[][];
|
|
32
|
+
export declare function loadExistingPropertyNames(client: HubSpotClient, objectTypeSegment: string): Promise<Set<string>>;
|
|
33
|
+
export declare function normalizePropertyLabel(label: unknown): string;
|
|
34
|
+
export declare function loadExistingPropertyMetadata(client: HubSpotClient, objectTypeSegment: string): Promise<ExistingPropertyMetadata>;
|