@kelpie/schemas 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account.d.ts +35 -0
- package/dist/account.d.ts.map +1 -1
- package/dist/account.js +18 -0
- package/dist/account.js.map +1 -1
- package/dist/company.d.ts +11 -0
- package/dist/company.d.ts.map +1 -1
- package/dist/company.js +7 -0
- package/dist/company.js.map +1 -1
- package/dist/consentPurpose.d.ts +49 -0
- package/dist/consentPurpose.d.ts.map +1 -0
- package/dist/consentPurpose.js +40 -0
- package/dist/consentPurpose.js.map +1 -0
- package/dist/customField.d.ts +99 -0
- package/dist/customField.d.ts.map +1 -0
- package/dist/customField.js +133 -0
- package/dist/customField.js.map +1 -0
- package/dist/deal.d.ts +8 -0
- package/dist/deal.d.ts.map +1 -1
- package/dist/deal.js +4 -0
- package/dist/deal.js.map +1 -1
- package/dist/emailDomainLinker.d.ts +16 -0
- package/dist/emailDomainLinker.d.ts.map +1 -0
- package/dist/emailDomainLinker.js +11 -0
- package/dist/emailDomainLinker.js.map +1 -0
- package/dist/enquiry.d.ts +43 -0
- package/dist/enquiry.d.ts.map +1 -0
- package/dist/enquiry.js +47 -0
- package/dist/enquiry.js.map +1 -0
- package/dist/form.d.ts +117 -2
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +102 -1
- package/dist/form.js.map +1 -1
- package/dist/formSubmission.d.ts +29 -0
- package/dist/formSubmission.d.ts.map +1 -1
- package/dist/formSubmission.js +34 -0
- package/dist/formSubmission.js.map +1 -1
- package/dist/importExport.d.ts +28 -4
- package/dist/importExport.d.ts.map +1 -1
- package/dist/importExport.js +25 -2
- package/dist/importExport.js.map +1 -1
- package/dist/index.d.ts +27 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/list.d.ts +44 -0
- package/dist/list.d.ts.map +1 -0
- package/dist/list.js +41 -0
- package/dist/list.js.map +1 -0
- package/dist/listMember.d.ts +24 -0
- package/dist/listMember.d.ts.map +1 -0
- package/dist/listMember.js +27 -0
- package/dist/listMember.js.map +1 -0
- package/dist/listMembership.d.ts +20 -0
- package/dist/listMembership.d.ts.map +1 -0
- package/dist/listMembership.js +23 -0
- package/dist/listMembership.js.map +1 -0
- package/dist/names.d.ts +43 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +35 -0
- package/dist/names.js.map +1 -0
- package/dist/opportunity.d.ts +10 -0
- package/dist/opportunity.d.ts.map +1 -1
- package/dist/opportunity.js +7 -0
- package/dist/opportunity.js.map +1 -1
- package/dist/partnership.d.ts +8 -0
- package/dist/partnership.d.ts.map +1 -1
- package/dist/partnership.js +4 -0
- package/dist/partnership.js.map +1 -1
- package/dist/person.d.ts +42 -1
- package/dist/person.d.ts.map +1 -1
- package/dist/person.js +23 -0
- package/dist/person.js.map +1 -1
- package/dist/personConsent.d.ts +31 -0
- package/dist/personConsent.d.ts.map +1 -0
- package/dist/personConsent.js +27 -0
- package/dist/personConsent.js.map +1 -0
- package/dist/raise.d.ts +8 -0
- package/dist/raise.d.ts.map +1 -1
- package/dist/raise.js +4 -0
- package/dist/raise.js.map +1 -1
- package/dist/sampleData.d.ts +23 -0
- package/dist/sampleData.d.ts.map +1 -0
- package/dist/sampleData.js +31 -0
- package/dist/sampleData.js.map +1 -0
- package/dist/values.d.ts +88 -8
- package/dist/values.d.ts.map +1 -1
- package/dist/values.js +150 -3
- package/dist/values.js.map +1 -1
- package/package.json +1 -1
- package/src/account.ts +56 -0
- package/src/company.ts +19 -0
- package/src/consentPurpose.ts +95 -0
- package/src/customField.ts +211 -0
- package/src/deal.ts +13 -0
- package/src/emailDomainLinker.ts +28 -0
- package/src/enquiry.ts +94 -0
- package/src/form.ts +230 -2
- package/src/formSubmission.ts +63 -0
- package/src/importExport.ts +45 -6
- package/src/index.ts +86 -2
- package/src/list.ts +89 -0
- package/src/listMember.ts +54 -0
- package/src/listMembership.ts +45 -0
- package/src/names.ts +49 -0
- package/src/opportunity.ts +18 -0
- package/src/partnership.ts +13 -0
- package/src/person.ts +69 -1
- package/src/personConsent.ts +60 -0
- package/src/raise.ts +13 -0
- package/src/sampleData.ts +55 -0
- package/src/values.ts +180 -3
package/dist/account.d.ts
CHANGED
|
@@ -53,6 +53,29 @@ export interface ChangePasswordInput {
|
|
|
53
53
|
readonly newPassword: string;
|
|
54
54
|
}
|
|
55
55
|
export declare function changePasswordBody(input: ChangePasswordInput): Record<string, unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* A saved view state for one list page, keyed on a stable view id (`people`,
|
|
58
|
+
* `companies`, `deals`, …).
|
|
59
|
+
*
|
|
60
|
+
* `columns` order is the render order, so the same field carries visibility
|
|
61
|
+
* and position. Every field is optional so an old stored entry that only
|
|
62
|
+
* remembers columns still parses, and a page that adds a new knob later can
|
|
63
|
+
* store it without a migration. A field left unset means "use the page's
|
|
64
|
+
* default", which is why the hook falls back to `defaultVisible` when
|
|
65
|
+
* `columns` is absent rather than showing an empty table.
|
|
66
|
+
*
|
|
67
|
+
* `mode` covers pages that offer both a table and a board. `grouping`,
|
|
68
|
+
* `scope`, and `sort` carry page-defined slugs; the page decides which
|
|
69
|
+
* values it accepts and falls back to a default for anything it does not.
|
|
70
|
+
*/
|
|
71
|
+
export interface ListViewPreference {
|
|
72
|
+
readonly columns?: readonly string[];
|
|
73
|
+
readonly mode?: 'list' | 'columns';
|
|
74
|
+
readonly grouping?: string;
|
|
75
|
+
readonly scope?: string;
|
|
76
|
+
readonly sort?: string;
|
|
77
|
+
}
|
|
78
|
+
export declare const listViewPreferenceSchema: z.ZodType<ListViewPreference, unknown>;
|
|
56
79
|
/**
|
|
57
80
|
* Per-account settings that follow the person between browsers.
|
|
58
81
|
*
|
|
@@ -60,6 +83,10 @@ export declare function changePasswordBody(input: ChangePasswordInput): Record<s
|
|
|
60
83
|
* mailer: Kelpie sends no digest, mention, or product email yet. They record
|
|
61
84
|
* what to do when it does, and the Preferences page says so on screen rather
|
|
62
85
|
* than leaving a reader to infer a capability from a toggle.
|
|
86
|
+
*
|
|
87
|
+
* `listViews` is a map of view id to a column choice. The map is open: any
|
|
88
|
+
* client-defined view id is allowed, and a view id the client no longer
|
|
89
|
+
* recognises is ignored on read rather than raising a schema error.
|
|
63
90
|
*/
|
|
64
91
|
export interface AccountPreferences {
|
|
65
92
|
readonly timezone: string;
|
|
@@ -67,6 +94,7 @@ export interface AccountPreferences {
|
|
|
67
94
|
readonly emailDigest: boolean;
|
|
68
95
|
readonly mentionEmails: boolean;
|
|
69
96
|
readonly productUpdates: boolean;
|
|
97
|
+
readonly listViews: Readonly<Record<string, ListViewPreference>>;
|
|
70
98
|
}
|
|
71
99
|
export declare const accountPreferencesSchema: z.ZodType<AccountPreferences, unknown>;
|
|
72
100
|
export interface UpdateAccountPreferencesInput {
|
|
@@ -75,6 +103,13 @@ export interface UpdateAccountPreferencesInput {
|
|
|
75
103
|
readonly emailDigest?: boolean;
|
|
76
104
|
readonly mentionEmails?: boolean;
|
|
77
105
|
readonly productUpdates?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Replaces the whole `listViews` map. Every top-level preference field
|
|
108
|
+
* follows the same rule: absent leaves the stored value alone, present
|
|
109
|
+
* overwrites it. Callers that only want to touch one view id read the
|
|
110
|
+
* current map first and PATCH the merged result.
|
|
111
|
+
*/
|
|
112
|
+
readonly listViews?: Readonly<Record<string, ListViewPreference>>;
|
|
78
113
|
}
|
|
79
114
|
export declare function updateAccountPreferencesBody(input: UpdateAccountPreferencesInput): Record<string, unknown>;
|
|
80
115
|
//# sourceMappingURL=account.d.ts.map
|
package/dist/account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGlD;;;;;;GAMG;AAEH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAChC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAcnD,CAAA;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMpF;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAgBjE,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
|
package/dist/account.js
CHANGED
|
@@ -47,6 +47,21 @@ export const MINIMUM_PASSWORD_LENGTH = 12;
|
|
|
47
47
|
export function changePasswordBody(input) {
|
|
48
48
|
return { current_password: input.currentPassword, new_password: input.newPassword };
|
|
49
49
|
}
|
|
50
|
+
export const listViewPreferenceSchema = z
|
|
51
|
+
.object({
|
|
52
|
+
columns: z.array(z.string()).optional(),
|
|
53
|
+
mode: z.enum(['list', 'columns']).optional(),
|
|
54
|
+
grouping: z.string().optional(),
|
|
55
|
+
scope: z.string().optional(),
|
|
56
|
+
sort: z.string().optional(),
|
|
57
|
+
})
|
|
58
|
+
.transform((wire) => ({
|
|
59
|
+
...(wire.columns === undefined ? {} : { columns: wire.columns }),
|
|
60
|
+
...(wire.mode === undefined ? {} : { mode: wire.mode }),
|
|
61
|
+
...(wire.grouping === undefined ? {} : { grouping: wire.grouping }),
|
|
62
|
+
...(wire.scope === undefined ? {} : { scope: wire.scope }),
|
|
63
|
+
...(wire.sort === undefined ? {} : { sort: wire.sort }),
|
|
64
|
+
}));
|
|
50
65
|
export const accountPreferencesSchema = z
|
|
51
66
|
.object({
|
|
52
67
|
timezone: z.string(),
|
|
@@ -54,6 +69,7 @@ export const accountPreferencesSchema = z
|
|
|
54
69
|
email_digest: z.boolean(),
|
|
55
70
|
mention_emails: z.boolean(),
|
|
56
71
|
product_updates: z.boolean(),
|
|
72
|
+
list_views: z.record(z.string(), listViewPreferenceSchema).default({}),
|
|
57
73
|
})
|
|
58
74
|
.transform((wire) => ({
|
|
59
75
|
timezone: wire.timezone,
|
|
@@ -61,6 +77,7 @@ export const accountPreferencesSchema = z
|
|
|
61
77
|
emailDigest: wire.email_digest,
|
|
62
78
|
mentionEmails: wire.mention_emails,
|
|
63
79
|
productUpdates: wire.product_updates,
|
|
80
|
+
listViews: wire.list_views,
|
|
64
81
|
}));
|
|
65
82
|
export function updateAccountPreferencesBody(input) {
|
|
66
83
|
return definedFields({
|
|
@@ -69,6 +86,7 @@ export function updateAccountPreferencesBody(input) {
|
|
|
69
86
|
email_digest: input.emailDigest,
|
|
70
87
|
mention_emails: input.mentionEmails,
|
|
71
88
|
product_updates: input.productUpdates,
|
|
89
|
+
list_views: input.listViews,
|
|
72
90
|
});
|
|
73
91
|
}
|
|
74
92
|
//# sourceMappingURL=account.js.map
|
package/dist/account.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAiBpE,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC;KACxD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;CAC5B,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAW,EAAE,CAAC,CAAC;IAClB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,aAAa,EAAE,IAAI,CAAC,cAAc;CACnC,CAAC,CACH,CAAA;AASH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,gBAAgB,EAAE,KAAK,CAAC,eAAe;KACxC,CAAC,CAAA;AACJ,CAAC;AAqBD,MAAM,CAAC,MAAM,oBAAoB,GAAuC,CAAC;KACtE,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,cAAc,EAAE,eAAe;IAC/B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,YAAY,EAAE,IAAI,CAAC,cAAc;IACjC,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CACH,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAOzC,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,CAAA;AACrF,CAAC;
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
|
package/dist/company.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
|
|
2
3
|
import type { AccountType, CompanyStage, IcpFit, SizeBand } from './values.ts';
|
|
3
4
|
import type { RecordTimestamps } from './wire.ts';
|
|
4
5
|
/** Wire and write shapes for `/v1/companies`. */
|
|
@@ -17,6 +18,10 @@ export interface Company extends RecordTimestamps {
|
|
|
17
18
|
readonly techStack: readonly string[];
|
|
18
19
|
readonly summary: string;
|
|
19
20
|
readonly tags: readonly string[];
|
|
21
|
+
/** True when this Company represents the workspace itself ("us"). */
|
|
22
|
+
readonly isOwn: boolean;
|
|
23
|
+
/** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
|
|
24
|
+
readonly customFields: CustomFieldValues;
|
|
20
25
|
}
|
|
21
26
|
export declare const companySchema: z.ZodType<Company, unknown>;
|
|
22
27
|
export interface CompanyInput {
|
|
@@ -33,6 +38,12 @@ export interface CompanyInput {
|
|
|
33
38
|
readonly techStack?: readonly string[];
|
|
34
39
|
readonly summary?: string;
|
|
35
40
|
readonly tags?: readonly string[];
|
|
41
|
+
readonly isOwn?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Partial merge patch: sent keys change, `null` clears a key, absent keys are
|
|
44
|
+
* left alone. Unknown keys are rejected at `422`.
|
|
45
|
+
*/
|
|
46
|
+
readonly customFields?: Readonly<Record<string, CustomFieldValue | null>>;
|
|
36
47
|
}
|
|
37
48
|
export declare function companyBody(input: CompanyInput): Record<string, unknown>;
|
|
38
49
|
//# sourceMappingURL=company.d.ts.map
|
package/dist/company.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAyCnD,CAAA;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBxE"}
|
package/dist/company.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
|
|
2
3
|
import { ACCOUNT_TYPES, COMPANY_STAGES, ICP_FITS, SIZE_BANDS } from './values.js';
|
|
3
4
|
import { definedFields, idSchema, recordTimestamps } from './wire.js';
|
|
4
5
|
export const companySchema = z
|
|
@@ -17,6 +18,8 @@ export const companySchema = z
|
|
|
17
18
|
tech_stack: z.array(z.string()),
|
|
18
19
|
summary: z.string(),
|
|
19
20
|
tags: z.array(z.string()),
|
|
21
|
+
is_own: z.boolean(),
|
|
22
|
+
custom_fields: customFieldValuesSchema,
|
|
20
23
|
...recordTimestamps,
|
|
21
24
|
})
|
|
22
25
|
.transform((wire) => ({
|
|
@@ -34,6 +37,8 @@ export const companySchema = z
|
|
|
34
37
|
techStack: wire.tech_stack,
|
|
35
38
|
summary: wire.summary,
|
|
36
39
|
tags: wire.tags,
|
|
40
|
+
isOwn: wire.is_own,
|
|
41
|
+
customFields: wire.custom_fields,
|
|
37
42
|
createdAt: wire.created_at,
|
|
38
43
|
updatedAt: wire.updated_at,
|
|
39
44
|
}));
|
|
@@ -52,6 +57,8 @@ export function companyBody(input) {
|
|
|
52
57
|
tech_stack: input.techStack,
|
|
53
58
|
summary: input.summary,
|
|
54
59
|
tags: input.tags,
|
|
60
|
+
is_own: input.isOwn,
|
|
61
|
+
custom_fields: input.customFields === undefined ? undefined : customFieldValuesBody(input.customFields),
|
|
55
62
|
});
|
|
56
63
|
}
|
|
57
64
|
//# sourceMappingURL=company.js.map
|
package/dist/company.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"company.js","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"company.js","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ConsentPurposeStatus } from './values.ts';
|
|
3
|
+
import type { RecordTimestamps } from './wire.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Wire and write shapes for `/v1/consent_purposes`.
|
|
6
|
+
*
|
|
7
|
+
* A workspace defines its own purposes (`contact`, `marketing`, …). Every
|
|
8
|
+
* capture site — forms, lists, imports, the manual override on a Person —
|
|
9
|
+
* names one. Modelled on `custom_field_definitions`: `slug` is immutable and
|
|
10
|
+
* behaves as the key, `default_status` is the workspace default a person
|
|
11
|
+
* without an explicit `person_consents` row inherits, and `sort_order` runs
|
|
12
|
+
* 0..N-1 with the service renumbering on reorder and delete.
|
|
13
|
+
*/
|
|
14
|
+
/** A workspace's definition of one consent purpose. */
|
|
15
|
+
export interface ConsentPurpose extends RecordTimestamps {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
/** Immutable after create. Lowercase snake_case, matches `/^[a-z][a-z0-9_]*$/`. */
|
|
18
|
+
readonly slug: string;
|
|
19
|
+
readonly label: string;
|
|
20
|
+
readonly description: string;
|
|
21
|
+
/** The workspace default a person without an explicit row inherits. */
|
|
22
|
+
readonly defaultStatus: ConsentPurposeStatus;
|
|
23
|
+
readonly sortOrder: number;
|
|
24
|
+
}
|
|
25
|
+
export declare const consentPurposeSchema: z.ZodType<ConsentPurpose, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* The body a create takes. `slug` is only written here; a `PATCH` cannot
|
|
28
|
+
* change it — a rename would strand every stored `person_consents` row and
|
|
29
|
+
* every form/list/import that names the purpose.
|
|
30
|
+
*/
|
|
31
|
+
export interface CreateConsentPurposeInput {
|
|
32
|
+
readonly slug: string;
|
|
33
|
+
readonly label: string;
|
|
34
|
+
readonly description?: string;
|
|
35
|
+
readonly defaultStatus?: ConsentPurposeStatus;
|
|
36
|
+
}
|
|
37
|
+
export declare function createConsentPurposeBody(input: CreateConsentPurposeInput): Record<string, unknown>;
|
|
38
|
+
/**
|
|
39
|
+
* What a `PATCH` may change. `slug` is fixed for the purpose's lifetime and
|
|
40
|
+
* the strict body naturally makes it a `422`.
|
|
41
|
+
*/
|
|
42
|
+
export interface ConsentPurposeInput {
|
|
43
|
+
readonly label?: string;
|
|
44
|
+
readonly description?: string;
|
|
45
|
+
readonly defaultStatus?: ConsentPurposeStatus;
|
|
46
|
+
readonly sortOrder?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function consentPurposeBody(input: ConsentPurposeInput): Record<string, unknown>;
|
|
49
|
+
//# sourceMappingURL=consentPurpose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consentPurpose.d.ts","sourceRoot":"","sources":["../src/consentPurpose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD;;;;;;;;;GASG;AAEH,uDAAuD;AACvD,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAqBjE,CAAA;AAEH;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;CAC9C;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,yBAAyB,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOtF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CONSENT_PURPOSE_STATUSES } from './values.js';
|
|
3
|
+
import { definedFields, idSchema, recordTimestamps } from './wire.js';
|
|
4
|
+
export const consentPurposeSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
id: idSchema,
|
|
7
|
+
slug: z.string(),
|
|
8
|
+
label: z.string(),
|
|
9
|
+
description: z.string(),
|
|
10
|
+
default_status: z.enum(CONSENT_PURPOSE_STATUSES),
|
|
11
|
+
sort_order: z.number().int(),
|
|
12
|
+
...recordTimestamps,
|
|
13
|
+
})
|
|
14
|
+
.transform((wire) => ({
|
|
15
|
+
id: wire.id,
|
|
16
|
+
slug: wire.slug,
|
|
17
|
+
label: wire.label,
|
|
18
|
+
description: wire.description,
|
|
19
|
+
defaultStatus: wire.default_status,
|
|
20
|
+
sortOrder: wire.sort_order,
|
|
21
|
+
createdAt: wire.created_at,
|
|
22
|
+
updatedAt: wire.updated_at,
|
|
23
|
+
}));
|
|
24
|
+
export function createConsentPurposeBody(input) {
|
|
25
|
+
return definedFields({
|
|
26
|
+
slug: input.slug,
|
|
27
|
+
label: input.label,
|
|
28
|
+
description: input.description,
|
|
29
|
+
default_status: input.defaultStatus,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function consentPurposeBody(input) {
|
|
33
|
+
return definedFields({
|
|
34
|
+
label: input.label,
|
|
35
|
+
description: input.description,
|
|
36
|
+
default_status: input.defaultStatus,
|
|
37
|
+
sort_order: input.sortOrder,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=consentPurpose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consentPurpose.js","sourceRoot":"","sources":["../src/consentPurpose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AA0BrE,MAAM,CAAC,MAAM,oBAAoB,GAAuC,CAAC;KACtE,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,aAAa,EAAE,IAAI,CAAC,cAAc;IAClC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAcH,MAAM,UAAU,wBAAwB,CACtC,KAAgC;IAEhC,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,aAAa;KACpC,CAAC,CAAA;AACJ,CAAC;AAaD,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,OAAO,aAAa,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { CustomFieldObjectType, CustomFieldType } from './values.ts';
|
|
3
|
+
import type { RecordTimestamps } from './wire.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Wire and write shapes for `/v1/custom_fields`.
|
|
6
|
+
*
|
|
7
|
+
* The definition is workspace-scoped. Every record on the six object types
|
|
8
|
+
* carries a `custom_fields` object keyed by definition key; the values are the
|
|
9
|
+
* shape this file describes. The Zod layer here only checks structure — that a
|
|
10
|
+
* value looks like text / number / boolean / a string list / a money object —
|
|
11
|
+
* because the workspace's definitions are read from the database, not the
|
|
12
|
+
* request. Definition-aware checks (this key exists on this object type, this
|
|
13
|
+
* select value is one of the options) run in the service.
|
|
14
|
+
*
|
|
15
|
+
* Merge semantics on the record's `custom_fields` (documented in `api.md`): a
|
|
16
|
+
* `PATCH` sends the keys that change; `null` clears a key; an unknown key is
|
|
17
|
+
* `422` naming `custom_fields.<key>`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The value union a custom field can carry on the wire. Structural only — the
|
|
21
|
+
* validator in `@kelpie/server` reads the workspace's definitions and refuses a
|
|
22
|
+
* `number` written into a `text` field, an unknown `select` option, and so on.
|
|
23
|
+
*
|
|
24
|
+
* `text`, `long_text`, `url`, `date` and `select` all serialise as strings; a
|
|
25
|
+
* `multi_select` is a `string[]`; a `currency` is a small object; the rest are
|
|
26
|
+
* primitives. Nothing here reads a definition, so the caps below are the
|
|
27
|
+
* absolute ceilings meant to reject a runaway payload before it reaches the
|
|
28
|
+
* database, not the per-type limits (also enforced by the validator).
|
|
29
|
+
*/
|
|
30
|
+
export declare const customFieldWireValue: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
31
|
+
amount_cents: z.ZodNumber;
|
|
32
|
+
currency: z.ZodString;
|
|
33
|
+
}, z.core.$strict>]>;
|
|
34
|
+
export type CustomFieldWireValue = z.infer<typeof customFieldWireValue>;
|
|
35
|
+
/** A value already parsed and rebuilt as the record the UI holds. */
|
|
36
|
+
export type CustomFieldValue = string | number | boolean | readonly string[] | {
|
|
37
|
+
readonly amountCents: number;
|
|
38
|
+
readonly currency: string;
|
|
39
|
+
};
|
|
40
|
+
/** The `custom_fields` object every record on the six object types carries. */
|
|
41
|
+
export type CustomFieldValues = Readonly<Record<string, CustomFieldValue>>;
|
|
42
|
+
/**
|
|
43
|
+
* Parses the wire object into the record shape the UI works with. Currency is
|
|
44
|
+
* the one type that changes shape (`amount_cents` → `amountCents`); everything
|
|
45
|
+
* else is the same value.
|
|
46
|
+
*/
|
|
47
|
+
export declare const customFieldValuesSchema: z.ZodType<CustomFieldValues, unknown>;
|
|
48
|
+
/**
|
|
49
|
+
* The shape a record's `PATCH` accepts for `custom_fields`. A key's value is
|
|
50
|
+
* the wire value, or `null` to clear that key; unknown keys fail at the service
|
|
51
|
+
* layer with `422 custom_fields.<key>`.
|
|
52
|
+
*/
|
|
53
|
+
export declare const customFieldsPatchShape: z.ZodType<Readonly<Record<string, CustomFieldWireValue | null>>, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Turns the UI's record shape back into the wire object for a `PATCH` body.
|
|
56
|
+
* The inverse of `customFieldValuesSchema`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function customFieldValuesBody(values: Readonly<Record<string, CustomFieldValue | null>>): Record<string, CustomFieldWireValue | null>;
|
|
59
|
+
/** A workspace's definition of one custom field, for one object type. */
|
|
60
|
+
export interface CustomFieldDefinition extends RecordTimestamps {
|
|
61
|
+
readonly id: string;
|
|
62
|
+
readonly objectType: CustomFieldObjectType;
|
|
63
|
+
/** Immutable after create. Lowercase snake_case, matches `/^[a-z][a-z0-9_]*$/`. */
|
|
64
|
+
readonly key: string;
|
|
65
|
+
readonly label: string;
|
|
66
|
+
/** Immutable after create. */
|
|
67
|
+
readonly type: CustomFieldType;
|
|
68
|
+
/** Non-empty only for `select` and `multi_select`. */
|
|
69
|
+
readonly options: readonly string[];
|
|
70
|
+
readonly description: string;
|
|
71
|
+
readonly sortOrder: number;
|
|
72
|
+
}
|
|
73
|
+
export declare const customFieldDefinitionSchema: z.ZodType<CustomFieldDefinition, unknown>;
|
|
74
|
+
/**
|
|
75
|
+
* The body a create takes. `object_type`, `key`, and `type` are only written
|
|
76
|
+
* here; a `PATCH` cannot change any of them (see `CustomFieldDefinitionInput`).
|
|
77
|
+
*/
|
|
78
|
+
export interface CreateCustomFieldDefinitionInput {
|
|
79
|
+
readonly objectType: CustomFieldObjectType;
|
|
80
|
+
readonly key: string;
|
|
81
|
+
readonly label: string;
|
|
82
|
+
readonly type: CustomFieldType;
|
|
83
|
+
readonly options?: readonly string[];
|
|
84
|
+
readonly description?: string;
|
|
85
|
+
}
|
|
86
|
+
export declare function createCustomFieldDefinitionBody(input: CreateCustomFieldDefinitionInput): Record<string, unknown>;
|
|
87
|
+
/**
|
|
88
|
+
* What a `PATCH` may change. `key` and `type` are fixed for the definition's
|
|
89
|
+
* lifetime — a change would strand records with the wrong value shape — and
|
|
90
|
+
* the strict body naturally makes either a `422`.
|
|
91
|
+
*/
|
|
92
|
+
export interface CustomFieldDefinitionInput {
|
|
93
|
+
readonly label?: string;
|
|
94
|
+
readonly options?: readonly string[];
|
|
95
|
+
readonly description?: string;
|
|
96
|
+
readonly sortOrder?: number;
|
|
97
|
+
}
|
|
98
|
+
export declare function customFieldDefinitionBody(input: CustomFieldDefinitionInput): Record<string, unknown>;
|
|
99
|
+
//# sourceMappingURL=customField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customField.d.ts","sourceRoot":"","sources":["../src/customField.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CUSTOM_FIELD_OBJECT_TYPES, CUSTOM_FIELD_TYPES, } from './values.js';
|
|
3
|
+
import { definedFields, idSchema, recordTimestamps } from './wire.js';
|
|
4
|
+
/**
|
|
5
|
+
* Wire and write shapes for `/v1/custom_fields`.
|
|
6
|
+
*
|
|
7
|
+
* The definition is workspace-scoped. Every record on the six object types
|
|
8
|
+
* carries a `custom_fields` object keyed by definition key; the values are the
|
|
9
|
+
* shape this file describes. The Zod layer here only checks structure — that a
|
|
10
|
+
* value looks like text / number / boolean / a string list / a money object —
|
|
11
|
+
* because the workspace's definitions are read from the database, not the
|
|
12
|
+
* request. Definition-aware checks (this key exists on this object type, this
|
|
13
|
+
* select value is one of the options) run in the service.
|
|
14
|
+
*
|
|
15
|
+
* Merge semantics on the record's `custom_fields` (documented in `api.md`): a
|
|
16
|
+
* `PATCH` sends the keys that change; `null` clears a key; an unknown key is
|
|
17
|
+
* `422` naming `custom_fields.<key>`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The value union a custom field can carry on the wire. Structural only — the
|
|
21
|
+
* validator in `@kelpie/server` reads the workspace's definitions and refuses a
|
|
22
|
+
* `number` written into a `text` field, an unknown `select` option, and so on.
|
|
23
|
+
*
|
|
24
|
+
* `text`, `long_text`, `url`, `date` and `select` all serialise as strings; a
|
|
25
|
+
* `multi_select` is a `string[]`; a `currency` is a small object; the rest are
|
|
26
|
+
* primitives. Nothing here reads a definition, so the caps below are the
|
|
27
|
+
* absolute ceilings meant to reject a runaway payload before it reaches the
|
|
28
|
+
* database, not the per-type limits (also enforced by the validator).
|
|
29
|
+
*/
|
|
30
|
+
export const customFieldWireValue = z.union([
|
|
31
|
+
z.string().max(65536),
|
|
32
|
+
z.number(),
|
|
33
|
+
z.boolean(),
|
|
34
|
+
z.array(z.string().min(1).max(120)).max(100),
|
|
35
|
+
z.strictObject({
|
|
36
|
+
amount_cents: z.number().int(),
|
|
37
|
+
currency: z.string().regex(/^[A-Z]{3}$/u),
|
|
38
|
+
}),
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Parses the wire object into the record shape the UI works with. Currency is
|
|
42
|
+
* the one type that changes shape (`amount_cents` → `amountCents`); everything
|
|
43
|
+
* else is the same value.
|
|
44
|
+
*/
|
|
45
|
+
export const customFieldValuesSchema = z
|
|
46
|
+
.record(z.string(), customFieldWireValue)
|
|
47
|
+
.transform((wire) => {
|
|
48
|
+
const out = {};
|
|
49
|
+
for (const [key, value] of Object.entries(wire)) {
|
|
50
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
51
|
+
out[key] = { amountCents: value.amount_cents, currency: value.currency };
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
out[key] = value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* The shape a record's `PATCH` accepts for `custom_fields`. A key's value is
|
|
61
|
+
* the wire value, or `null` to clear that key; unknown keys fail at the service
|
|
62
|
+
* layer with `422 custom_fields.<key>`.
|
|
63
|
+
*/
|
|
64
|
+
export const customFieldsPatchShape = z
|
|
65
|
+
.record(z.string().min(1).max(64), customFieldWireValue.nullable())
|
|
66
|
+
.describe('Workspace-defined fields keyed by definition key. List the workspace\'s definitions with the custom_fields_list tool before writing. A key set to null clears the value; an unknown key is refused.');
|
|
67
|
+
/**
|
|
68
|
+
* Turns the UI's record shape back into the wire object for a `PATCH` body.
|
|
69
|
+
* The inverse of `customFieldValuesSchema`.
|
|
70
|
+
*/
|
|
71
|
+
export function customFieldValuesBody(values) {
|
|
72
|
+
const out = {};
|
|
73
|
+
for (const [key, value] of Object.entries(values)) {
|
|
74
|
+
out[key] = wireCustomFieldValue(value);
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
function wireCustomFieldValue(value) {
|
|
79
|
+
if (value === null)
|
|
80
|
+
return null;
|
|
81
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
// Array.isArray does not narrow a `readonly` array literal, so branch on the
|
|
85
|
+
// currency object's shape and treat everything else as the string list.
|
|
86
|
+
if ('amountCents' in value && 'currency' in value) {
|
|
87
|
+
return { amount_cents: value.amountCents, currency: value.currency };
|
|
88
|
+
}
|
|
89
|
+
return [...value];
|
|
90
|
+
}
|
|
91
|
+
export const customFieldDefinitionSchema = z
|
|
92
|
+
.object({
|
|
93
|
+
id: idSchema,
|
|
94
|
+
object_type: z.enum(CUSTOM_FIELD_OBJECT_TYPES),
|
|
95
|
+
key: z.string(),
|
|
96
|
+
label: z.string(),
|
|
97
|
+
type: z.enum(CUSTOM_FIELD_TYPES),
|
|
98
|
+
options: z.array(z.string()),
|
|
99
|
+
description: z.string(),
|
|
100
|
+
sort_order: z.number().int(),
|
|
101
|
+
...recordTimestamps,
|
|
102
|
+
})
|
|
103
|
+
.transform((wire) => ({
|
|
104
|
+
id: wire.id,
|
|
105
|
+
objectType: wire.object_type,
|
|
106
|
+
key: wire.key,
|
|
107
|
+
label: wire.label,
|
|
108
|
+
type: wire.type,
|
|
109
|
+
options: wire.options,
|
|
110
|
+
description: wire.description,
|
|
111
|
+
sortOrder: wire.sort_order,
|
|
112
|
+
createdAt: wire.created_at,
|
|
113
|
+
updatedAt: wire.updated_at,
|
|
114
|
+
}));
|
|
115
|
+
export function createCustomFieldDefinitionBody(input) {
|
|
116
|
+
return definedFields({
|
|
117
|
+
object_type: input.objectType,
|
|
118
|
+
key: input.key,
|
|
119
|
+
label: input.label,
|
|
120
|
+
type: input.type,
|
|
121
|
+
options: input.options,
|
|
122
|
+
description: input.description,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
export function customFieldDefinitionBody(input) {
|
|
126
|
+
return definedFields({
|
|
127
|
+
label: input.label,
|
|
128
|
+
options: input.options,
|
|
129
|
+
description: input.description,
|
|
130
|
+
sort_order: input.sortOrder,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=customField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customField.js","sourceRoot":"","sources":["../src/customField.ts"],"names":[],"mappings":"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"}
|
package/dist/deal.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
|
|
2
3
|
import type { RecordTimestamps } from './wire.ts';
|
|
3
4
|
/** Wire and write shapes for `/v1/deals`. */
|
|
4
5
|
export interface Deal extends RecordTimestamps {
|
|
@@ -18,6 +19,8 @@ export interface Deal extends RecordTimestamps {
|
|
|
18
19
|
readonly summary: string;
|
|
19
20
|
readonly tags: readonly string[];
|
|
20
21
|
readonly externalId: string | null;
|
|
22
|
+
/** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
|
|
23
|
+
readonly customFields: CustomFieldValues;
|
|
21
24
|
}
|
|
22
25
|
export declare const dealSchema: z.ZodType<Deal, unknown>;
|
|
23
26
|
export interface DealInput {
|
|
@@ -35,6 +38,11 @@ export interface DealInput {
|
|
|
35
38
|
readonly summary?: string;
|
|
36
39
|
readonly tags?: readonly string[];
|
|
37
40
|
readonly externalId?: string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Partial merge patch: sent keys change, `null` clears a key, absent keys are
|
|
43
|
+
* left alone. Unknown keys are rejected at `422`.
|
|
44
|
+
*/
|
|
45
|
+
readonly customFields?: Readonly<Record<string, CustomFieldValue | null>>;
|
|
38
46
|
}
|
|
39
47
|
export declare function dealBody(input: DealInput): Record<string, unknown>;
|
|
40
48
|
//# sourceMappingURL=deal.d.ts.map
|
package/dist/deal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAyC7C,CAAA;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBlE"}
|
package/dist/deal.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
|
|
2
3
|
import { definedFields, idSchema, recordTimestamps } from './wire.js';
|
|
3
4
|
export const dealSchema = z
|
|
4
5
|
.object({
|
|
@@ -17,6 +18,7 @@ export const dealSchema = z
|
|
|
17
18
|
summary: z.string(),
|
|
18
19
|
tags: z.array(z.string()),
|
|
19
20
|
external_id: z.string().nullable(),
|
|
21
|
+
custom_fields: customFieldValuesSchema,
|
|
20
22
|
...recordTimestamps,
|
|
21
23
|
})
|
|
22
24
|
.transform((wire) => ({
|
|
@@ -35,6 +37,7 @@ export const dealSchema = z
|
|
|
35
37
|
summary: wire.summary,
|
|
36
38
|
tags: wire.tags,
|
|
37
39
|
externalId: wire.external_id,
|
|
40
|
+
customFields: wire.custom_fields,
|
|
38
41
|
createdAt: wire.created_at,
|
|
39
42
|
updatedAt: wire.updated_at,
|
|
40
43
|
}));
|
|
@@ -54,6 +57,7 @@ export function dealBody(input) {
|
|
|
54
57
|
summary: input.summary,
|
|
55
58
|
tags: input.tags,
|
|
56
59
|
external_id: input.externalId,
|
|
60
|
+
custom_fields: input.customFields === undefined ? undefined : customFieldValuesBody(input.customFields),
|
|
57
61
|
});
|
|
58
62
|
}
|
|
59
63
|
//# sourceMappingURL=deal.js.map
|