@hitch42/applet 0.1.1-beta.21 → 0.1.1-beta.22
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/_internal/server.d.ts +1 -1
- package/dist/applet.js +4 -4
- package/dist/{batch-CiLZ177G.js → batch-DwyWmiaE.js} +1 -1
- package/dist/client/hitch/client.d.ts +1 -1
- package/dist/client/hitch/client.js +1 -1
- package/dist/client/hitch.d.ts +1 -1
- package/dist/client/hitch.js +1 -1
- package/dist/client/react/markdown-editor.d.ts +1 -1
- package/dist/client/react/markdown.d.ts +1 -1
- package/dist/client/react.d.ts +2 -2
- package/dist/{email-protocol-CEqzASSx.d.ts → email-protocol-BWja_v7c.d.ts} +16 -10
- package/dist/generate-DG9vVkBO.js +1 -0
- package/dist/{generate-48pqFh5M.js → generate-DNgO44RO.js} +7 -6
- package/dist/{hitch-client-Dph_kzDd.js → hitch-client-CNN-dU6d.js} +2 -2
- package/dist/{hitch-client-D33JOEOi.d.ts → hitch-client-k7_jIjPw.d.ts} +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +12 -12
- package/dist/{init-Bb6WT8UB.js → init-BD5mC_9L.js} +1 -1
- package/dist/{markdown-BXt65dDo.d.ts → markdown-CnB35mjc.d.ts} +1 -1
- package/dist/{markdown-editor-CB_nWLzj.d.ts → markdown-editor-xF3uATBp.d.ts} +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/{upload-DtMavo8Q.js → upload-D1mzpsSk.js} +2 -2
- package/dist/{upload-DXZyjZSS.d.ts → upload-wp-Ilsv6.d.ts} +3 -3
- package/dist/vite.js +1 -1
- package/package.json +1 -1
- package/scaffold/.agents/skills/hitch-applets/references/email-tracking.md +4 -4
- package/scaffold/.agents/skills/hitch-applets/references/files.md +2 -2
- package/scaffold/.agents/skills/hitch-applets/references/performance.md +2 -2
- package/scaffold/.agents/skills/hitch-applets/references/records.md +7 -7
- package/scaffold/.agents/skills/hitch-cli/SKILL.md +21 -21
- package/dist/generate-BYK4aNud.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as AnyWorkflowDefinition } from "../workflow-BnBrJIzu.js";
|
|
2
|
-
import { d as ListEmailTrackersInput, n as TelephonyMessageReceivedEvent, r as CreateEmailPixelInput, t as EmailMessageReceivedEvent } from "../email-protocol-
|
|
2
|
+
import { d as ListEmailTrackersInput, n as TelephonyMessageReceivedEvent, r as CreateEmailPixelInput, t as EmailMessageReceivedEvent } from "../email-protocol-BWja_v7c.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
declare function createWorkerEntry(server: {
|
|
5
5
|
router: object;
|
package/dist/applet.js
CHANGED
|
@@ -130,14 +130,14 @@ async function main() {
|
|
|
130
130
|
const noLogFlags = values.run === void 0 && values.filter === void 0 && values.level === void 0 && values.limit === void 0 && values.live === void 0 && values.search === void 0 && values.since === void 0;
|
|
131
131
|
const noModeFlags = values["client-only"] === void 0 && values["server-only"] === void 0;
|
|
132
132
|
if (positionals.length === 1 && positionals[0] === "bootstrap" && noModeFlags && noGitFlags && noVariableFlags && noLogFlags && values.dist === void 0) {
|
|
133
|
-
await (await import("./init-
|
|
133
|
+
await (await import("./init-BD5mC_9L.js")).runBootstrap({
|
|
134
134
|
message: values.message,
|
|
135
135
|
install: values["no-install"] !== true
|
|
136
136
|
});
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
139
|
if (positionals.length === 1 && positionals[0] === "generate" && values["no-install"] === void 0 && noModeFlags && noGitFlags && noVariableFlags && noLogFlags && values.message === void 0 && values.dist === void 0) {
|
|
140
|
-
await (await import("./generate-
|
|
140
|
+
await (await import("./generate-DG9vVkBO.js")).runGenerate();
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
143
|
if (positionals.length === 1 && positionals[0] === "build" && values["no-install"] === void 0 && noModeFlags && noGitFlags && noVariableFlags && noLogFlags && values.message === void 0 && values.dist === void 0) {
|
|
@@ -156,7 +156,7 @@ async function main() {
|
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
if (positionals.length === 2 && positionals[0] === "init" && noModeFlags && noVariableFlags && noLogFlags) {
|
|
159
|
-
await (await import("./init-
|
|
159
|
+
await (await import("./init-BD5mC_9L.js")).runInit(positionals[1], {
|
|
160
160
|
commit: values["no-commit"] !== true,
|
|
161
161
|
git: values["no-git"] !== true,
|
|
162
162
|
install: values["no-install"] !== true
|
|
@@ -164,7 +164,7 @@ async function main() {
|
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
if (positionals.length === 2 && positionals[0] === "new" && noGitFlags && noVariableFlags && noLogFlags) {
|
|
167
|
-
await (await import("./init-
|
|
167
|
+
await (await import("./init-BD5mC_9L.js")).runNew({
|
|
168
168
|
code: positionals[1],
|
|
169
169
|
message: values.message,
|
|
170
170
|
clientOnly: values["client-only"],
|
|
@@ -23,7 +23,7 @@ function withBatchRecorder(target, contract) {
|
|
|
23
23
|
const tx = Object.fromEntries(Object.entries(records).map(([code, procedures]) => [code, Object.fromEntries(BATCH_VERBS.filter((verb) => typeof procedures === "object" && procedures !== null && isContractProcedure(Reflect.get(procedures, verb))).map((verb) => [verb, (procedureInput) => {
|
|
24
24
|
if (!active) throw new Error("The batch was already sent.");
|
|
25
25
|
const body = Reflect.get(procedureInput, "body");
|
|
26
|
-
const record = verb === "update" || verb === "delete" ? Reflect.get(Reflect.get(procedureInput, "params"), "
|
|
26
|
+
const record = verb === "update" || verb === "delete" ? Reflect.get(Reflect.get(procedureInput, "params"), "recordId") : void 0;
|
|
27
27
|
requests.push({
|
|
28
28
|
method: verb === "create" || verb === "updateWhere" ? "POST" : verb === "update" ? "PATCH" : "DELETE",
|
|
29
29
|
path: verb === "create" ? `/v1/${code}` : verb === "updateWhere" ? `/v1/${code}/bulk-update` : `/v1/${code}/${String(record)}`,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as hitch } from "../../hitch-client-
|
|
1
|
+
import { t as hitch } from "../../hitch-client-k7_jIjPw.js";
|
|
2
2
|
export { hitch };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as hitch } from "../../hitch-client-
|
|
1
|
+
export { t as hitch } from "../../hitch-client-CNN-dU6d.js";
|
package/dist/client/hitch.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as hitch } from "../hitch-client-
|
|
1
|
+
import { t as hitch } from "../hitch-client-k7_jIjPw.js";
|
|
2
2
|
import { i as createPhone, n as Phone, r as PhoneState, t as usePhone } from "../use-phone-DBAkasPq.js";
|
|
3
3
|
export { type Phone, type PhoneState, createPhone, hitch, usePhone };
|
package/dist/client/hitch.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as MarkdownEditorProps, r as MarkdownEditorFiles, t as MarkdownEditor } from "../../markdown-editor-
|
|
1
|
+
import { n as MarkdownEditorProps, r as MarkdownEditorFiles, t as MarkdownEditor } from "../../markdown-editor-xF3uATBp.js";
|
|
2
2
|
export { MarkdownEditor, type MarkdownEditorFiles, MarkdownEditorProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as MarkdownFiles, r as MarkdownProps, t as Markdown } from "../../markdown-
|
|
1
|
+
import { n as MarkdownFiles, r as MarkdownProps, t as Markdown } from "../../markdown-CnB35mjc.js";
|
|
2
2
|
export { Markdown, MarkdownFiles, MarkdownProps };
|
package/dist/client/react.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as MarkdownFiles, r as MarkdownProps, t as Markdown } from "../markdown-
|
|
2
|
-
import { n as MarkdownEditorProps, r as MarkdownEditorFiles, t as MarkdownEditor } from "../markdown-editor-
|
|
1
|
+
import { n as MarkdownFiles, r as MarkdownProps, t as Markdown } from "../markdown-CnB35mjc.js";
|
|
2
|
+
import { n as MarkdownEditorProps, r as MarkdownEditorFiles, t as MarkdownEditor } from "../markdown-editor-xF3uATBp.js";
|
|
3
3
|
export { Markdown, MarkdownEditor, type MarkdownEditorFiles, type MarkdownEditorProps, type MarkdownFiles, type MarkdownProps };
|
|
@@ -9,10 +9,10 @@ type CreateEmailPixelOutput = {
|
|
|
9
9
|
url: string;
|
|
10
10
|
};
|
|
11
11
|
type GetEmailTrackerInput = {
|
|
12
|
-
|
|
12
|
+
trackerId: string;
|
|
13
13
|
};
|
|
14
14
|
type MarkEmailTrackerSentInput = {
|
|
15
|
-
|
|
15
|
+
trackerId: string;
|
|
16
16
|
sentAt?: string;
|
|
17
17
|
};
|
|
18
18
|
type EmailTracker = {
|
|
@@ -43,17 +43,17 @@ type EmailContract = {
|
|
|
43
43
|
};
|
|
44
44
|
threads: {
|
|
45
45
|
list: ContractProcedure<Schema<ListHitchEmailThreadsInput, ListHitchEmailThreadsInput>, Schema<HitchEmailThreadsOutput, HitchEmailThreadsOutput>, Record<never, never>, Meta>;
|
|
46
|
-
get: ContractProcedure<Schema<
|
|
46
|
+
get: ContractProcedure<Schema<HitchEmailThreadInput, HitchEmailThreadInput>, Schema<HitchEmailThread, HitchEmailThread>, Record<never, never>, Meta>;
|
|
47
47
|
};
|
|
48
48
|
messages: {
|
|
49
49
|
/** Newest first. Pass threadId to page through one thread. */
|
|
50
50
|
list: ContractProcedure<Schema<ListHitchEmailMessagesInput, ListHitchEmailMessagesInput>, Schema<HitchEmailMessagesOutput, HitchEmailMessagesOutput>, Record<never, never>, Meta>;
|
|
51
|
-
get: ContractProcedure<Schema<
|
|
51
|
+
get: ContractProcedure<Schema<HitchEmailMessageInput, HitchEmailMessageInput>, Schema<HitchEmailMessage, HitchEmailMessage>, Record<never, never>, Meta>;
|
|
52
52
|
send: ContractProcedure<Schema<SendHitchEmailInput, SendHitchEmailInput>, Schema<HitchEmailMessage, HitchEmailMessage>, Record<never, never>, Meta>;
|
|
53
|
-
raw: ContractProcedure<Schema<
|
|
53
|
+
raw: ContractProcedure<Schema<HitchEmailMessageInput, HitchEmailMessageInput>, Schema<HitchEmailRawOutput, HitchEmailRawOutput>, Record<never, never>, Meta>;
|
|
54
54
|
};
|
|
55
55
|
attachments: {
|
|
56
|
-
get: ContractProcedure<Schema<
|
|
56
|
+
get: ContractProcedure<Schema<HitchEmailAttachmentInput, HitchEmailAttachmentInput>, Schema<HitchEmailAttachmentOutput, HitchEmailAttachmentOutput>, Record<never, never>, Meta>;
|
|
57
57
|
};
|
|
58
58
|
tracking: {
|
|
59
59
|
createPixel: ContractProcedure<Schema<CreateEmailPixelInput | undefined, CreateEmailPixelInput | undefined>, Schema<CreateEmailPixelOutput, CreateEmailPixelOutput>, Record<never, never>, Meta>;
|
|
@@ -151,8 +151,14 @@ type SendHitchEmailInput = {
|
|
|
151
151
|
attachmentFileIds?: string[];
|
|
152
152
|
requestId?: string;
|
|
153
153
|
};
|
|
154
|
-
type
|
|
155
|
-
|
|
154
|
+
type HitchEmailThreadInput = {
|
|
155
|
+
threadId: string;
|
|
156
|
+
};
|
|
157
|
+
type HitchEmailMessageInput = {
|
|
158
|
+
messageId: string;
|
|
159
|
+
};
|
|
160
|
+
type HitchEmailAttachmentInput = {
|
|
161
|
+
attachmentId: string;
|
|
156
162
|
};
|
|
157
163
|
type HitchEmailMailboxesOutput = {
|
|
158
164
|
data: HitchMailbox[];
|
|
@@ -175,7 +181,7 @@ type HitchEmailAttachmentOutput = {
|
|
|
175
181
|
sizeBytes: number;
|
|
176
182
|
};
|
|
177
183
|
/** Handle events at least once and without order. Use eventId for idempotency.
|
|
178
|
-
* Read the message with hitch.telephony.messages.get({
|
|
184
|
+
* Read the message with hitch.telephony.messages.get({ messageId }). */
|
|
179
185
|
type TelephonyMessageReceivedEvent = {
|
|
180
186
|
eventId: string;
|
|
181
187
|
type: "message.received";
|
|
@@ -184,7 +190,7 @@ type TelephonyMessageReceivedEvent = {
|
|
|
184
190
|
occurredAt: string;
|
|
185
191
|
};
|
|
186
192
|
/** Handle events at least once and without order. Use eventId for idempotency.
|
|
187
|
-
* Read the message with hitch.email.messages.get({
|
|
193
|
+
* Read the message with hitch.email.messages.get({ messageId }). */
|
|
188
194
|
type EmailMessageReceivedEvent = {
|
|
189
195
|
eventId: string;
|
|
190
196
|
type: "message.received";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { r as runGenerate } from "./generate-DNgO44RO.js";
|
|
@@ -72,7 +72,7 @@ function singleCreateSchema(value) {
|
|
|
72
72
|
return isComponentRef(single) && isObject$3(array) && array.type === "array" && isComponentRef(array.items) && array.items.$ref === single.$ref ? single : void 0;
|
|
73
73
|
}
|
|
74
74
|
// src/typegen/operations.ts
|
|
75
|
-
const RECORD_ROUTE = /^\/v1\/([^/]+)(?:\/(\{
|
|
75
|
+
const RECORD_ROUTE = /^\/v1\/([^/]+)(?:\/(\{recordId\}(?:\/history)?|query|bulk-update|aggregate))?$/;
|
|
76
76
|
const COMPONENT_REF_PREFIX$1 = "#/components/schemas/";
|
|
77
77
|
const BATCH_PATH = "/v1/batch/run";
|
|
78
78
|
const BATCH_ITEM_PATH = "paths./v1/batch/run.post.requestBody.content.application/json.schema.properties.requests.items";
|
|
@@ -80,10 +80,10 @@ const BATCH_ID_PATH = /^\^\/v1\/([^/]+)\/\[0-9a-fA-F-\]\{36\}\$$/;
|
|
|
80
80
|
const VERBS = {
|
|
81
81
|
"get:": "list",
|
|
82
82
|
"post:": "create",
|
|
83
|
-
"get:{
|
|
84
|
-
"get:{
|
|
85
|
-
"patch:{
|
|
86
|
-
"delete:{
|
|
83
|
+
"get:{recordId}": "get",
|
|
84
|
+
"get:{recordId}/history": "history",
|
|
85
|
+
"patch:{recordId}": "update",
|
|
86
|
+
"delete:{recordId}": "delete",
|
|
87
87
|
"post:query": "query",
|
|
88
88
|
"post:bulk-update": "updateWhere",
|
|
89
89
|
"post:aggregate": "aggregate"
|
|
@@ -193,6 +193,7 @@ function prepareRecordSpec(spec, manifest) {
|
|
|
193
193
|
return operation === void 0 ? [] : [[path, { post: operation }]];
|
|
194
194
|
}
|
|
195
195
|
const objectCode = recordObjectCode(path);
|
|
196
|
+
if (objectCode === void 0 && /^\/v1\/(?!objects\/)[^/]+\/\{/.test(path)) throw new Error(`paths.${path} is a record route that this SDK cannot read. Use the @hitch42/applet version that matches the Hitch server.`);
|
|
196
197
|
if (!isObject$2(pathItem)) {
|
|
197
198
|
if (objectCode === void 0) return [];
|
|
198
199
|
throw new Error(`object "${objectCode}": paths.${path} expected an object, found ${describeValue$1(pathItem)}`);
|
|
@@ -224,7 +225,7 @@ function prepareRecordSpec(spec, manifest) {
|
|
|
224
225
|
}));
|
|
225
226
|
manifest?.objects.forEach(({ code, optionalAttributes }) => {
|
|
226
227
|
if (optionalAttributes === void 0 || optionalAttributes.length === 0) return;
|
|
227
|
-
const responsePath = `/v1/${code}/{
|
|
228
|
+
const responsePath = `/v1/${code}/{recordId}`;
|
|
228
229
|
const response = prepared.paths[responsePath]?.get?.responses;
|
|
229
230
|
const schema = isObject$2(response) && isObject$2(response["200"]) ? response["200"].content : void 0;
|
|
230
231
|
const mediaType = isObject$2(schema) && isObject$2(schema["application/json"]) ? schema["application/json"] : void 0;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as withFilesUpload, r as getRegisteredHitchContract } from "./upload-
|
|
2
|
-
import { t as withBatchRecorder } from "./batch-
|
|
1
|
+
import { n as withFilesUpload, r as getRegisteredHitchContract } from "./upload-D1mzpsSk.js";
|
|
2
|
+
import { t as withBatchRecorder } from "./batch-DwyWmiaE.js";
|
|
3
3
|
import { t as createLazyClientProxy } from "./lazy-client--QCL0wiu.js";
|
|
4
4
|
import { createORPCClient } from "@orpc/client";
|
|
5
5
|
import { OpenAPILink } from "@orpc/openapi-client/fetch";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { l as RegisteredContract, u as RegisteredManifest } from "./manifest-CpghlaJc.js";
|
|
2
2
|
import { t as NarrowContract } from "./contract-CUc0B2rl.js";
|
|
3
3
|
import { i as WithBatchRecorder, n as WithRecordCreates, r as WithSingleRecordCreates, t as WithRecordCreateCalls } from "./create-BJqLT8Uq.js";
|
|
4
|
-
import { o as WithFilesUpload } from "./upload-
|
|
4
|
+
import { o as WithFilesUpload } from "./upload-wp-Ilsv6.js";
|
|
5
5
|
import { t as ExactRouterUtils } from "./query-utils-okxIoKM3.js";
|
|
6
6
|
import { ContractRouterClient } from "@orpc/contract";
|
|
7
7
|
type AuthorContract = NarrowContract<RegisteredContract, RegisteredManifest>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as AppletSourceDefinition, c as RegisteredCatalog, d as RegisteredRouter, f as RegisteredVariableKeys, h as registerHitchContract, i as AppletPackages, l as RegisteredContract, m as RegisteredWorkflows, n as AppletManifest, o as RegisteredAppletSourceDefinition, p as RegisteredVariables, r as AppletManifestObject, s as HitchRegister, t as AppletDefinition, u as RegisteredManifest } from "./manifest-CpghlaJc.js";
|
|
2
2
|
import { n as pruneContract, t as NarrowContract } from "./contract-CUc0B2rl.js";
|
|
3
|
-
import { a as UploadedHitchFile, c as filesContract, i as UploadProgress, n as FilesUpload, r as UploadFileOptions, s as uploadFile, t as FilesClient } from "./upload-
|
|
4
|
-
import { a as EmailTracker, c as HitchEmailMessage, f as ListEmailTrackersOutput, g as emailContract, h as SendHitchEmailInput, i as EmailContract, l as HitchEmailThread, m as ListHitchEmailThreadsInput, n as TelephonyMessageReceivedEvent, o as HitchEmailAddress, p as ListHitchEmailMessagesInput, s as HitchEmailAttachment, t as EmailMessageReceivedEvent, u as HitchMailbox } from "./email-protocol-
|
|
3
|
+
import { a as UploadedHitchFile, c as filesContract, i as UploadProgress, n as FilesUpload, r as UploadFileOptions, s as uploadFile, t as FilesClient } from "./upload-wp-Ilsv6.js";
|
|
4
|
+
import { a as EmailTracker, c as HitchEmailMessage, f as ListEmailTrackersOutput, g as emailContract, h as SendHitchEmailInput, i as EmailContract, l as HitchEmailThread, m as ListHitchEmailThreadsInput, n as TelephonyMessageReceivedEvent, o as HitchEmailAddress, p as ListHitchEmailMessagesInput, s as HitchEmailAttachment, t as EmailMessageReceivedEvent, u as HitchMailbox } from "./email-protocol-BWja_v7c.js";
|
|
5
5
|
import { ContractProcedure, Meta, Schema } from "@orpc/contract";
|
|
6
6
|
interface HitchConfig {
|
|
7
7
|
sdk: string;
|
|
@@ -109,7 +109,10 @@ type SendHitchMessageInput = {
|
|
|
109
109
|
requestId?: string;
|
|
110
110
|
};
|
|
111
111
|
type MessageIdInput = {
|
|
112
|
-
|
|
112
|
+
messageId: string;
|
|
113
|
+
};
|
|
114
|
+
type CallIdInput = {
|
|
115
|
+
callId: string;
|
|
113
116
|
};
|
|
114
117
|
type NumbersOutput = {
|
|
115
118
|
data: HitchPhoneNumber[];
|
|
@@ -124,7 +127,7 @@ type CallsOutput = {
|
|
|
124
127
|
};
|
|
125
128
|
type TelephonyContract = {
|
|
126
129
|
calls: {
|
|
127
|
-
get: ContractProcedure<Schema<
|
|
130
|
+
get: ContractProcedure<Schema<CallIdInput, CallIdInput>, Schema<HitchCall, HitchCall>, Record<never, never>, Meta>;
|
|
128
131
|
list: ContractProcedure<Schema<ListHitchCallsInput, ListHitchCallsInput>, Schema<CallsOutput, CallsOutput>, Record<never, never>, Meta>;
|
|
129
132
|
};
|
|
130
133
|
numbers: {
|
|
@@ -150,7 +153,7 @@ type HitchTeamMember = {
|
|
|
150
153
|
};
|
|
151
154
|
type TeamInput = {
|
|
152
155
|
params: {
|
|
153
|
-
|
|
156
|
+
teamCode: string;
|
|
154
157
|
};
|
|
155
158
|
};
|
|
156
159
|
type TeamsOutput = {
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as registerHitchContract, t as uploadFile } from "./upload-
|
|
1
|
+
import { i as registerHitchContract, t as uploadFile } from "./upload-D1mzpsSk.js";
|
|
2
2
|
import { t as pruneContract } from "./contract-D9LCNGjD.js";
|
|
3
3
|
import { oc, type } from "@orpc/contract";
|
|
4
4
|
// src/hitch/email.ts
|
|
@@ -16,7 +16,7 @@ function emailContract(appletCode) {
|
|
|
16
16
|
}).input(type()).output(type()),
|
|
17
17
|
get: oc.route({
|
|
18
18
|
method: "GET",
|
|
19
|
-
path: "/resource/v1/email/threads/{
|
|
19
|
+
path: "/resource/v1/email/threads/{threadId}"
|
|
20
20
|
}).input(type()).output(type())
|
|
21
21
|
},
|
|
22
22
|
messages: {
|
|
@@ -26,7 +26,7 @@ function emailContract(appletCode) {
|
|
|
26
26
|
}).input(type()).output(type()),
|
|
27
27
|
get: oc.route({
|
|
28
28
|
method: "GET",
|
|
29
|
-
path: "/resource/v1/email/messages/{
|
|
29
|
+
path: "/resource/v1/email/messages/{messageId}"
|
|
30
30
|
}).input(type()).output(type()),
|
|
31
31
|
send: oc.route({
|
|
32
32
|
method: "POST",
|
|
@@ -35,12 +35,12 @@ function emailContract(appletCode) {
|
|
|
35
35
|
}).input(type()).output(type()),
|
|
36
36
|
raw: oc.route({
|
|
37
37
|
method: "GET",
|
|
38
|
-
path: "/resource/v1/email/messages/{
|
|
38
|
+
path: "/resource/v1/email/messages/{messageId}/raw"
|
|
39
39
|
}).input(type()).output(type())
|
|
40
40
|
},
|
|
41
41
|
attachments: { get: oc.route({
|
|
42
42
|
method: "GET",
|
|
43
|
-
path: "/resource/v1/email/attachments/{
|
|
43
|
+
path: "/resource/v1/email/attachments/{attachmentId}"
|
|
44
44
|
}).input(type()).output(type()) },
|
|
45
45
|
tracking: {
|
|
46
46
|
createPixel: oc.route({
|
|
@@ -50,11 +50,11 @@ function emailContract(appletCode) {
|
|
|
50
50
|
}).input(type()).output(type()),
|
|
51
51
|
markSent: oc.route({
|
|
52
52
|
method: "PATCH",
|
|
53
|
-
path: `${path}/{
|
|
53
|
+
path: `${path}/{trackerId}`
|
|
54
54
|
}).input(type()).output(type()),
|
|
55
55
|
get: oc.route({
|
|
56
56
|
method: "GET",
|
|
57
|
-
path: `${path}/{
|
|
57
|
+
path: `${path}/{trackerId}`
|
|
58
58
|
}).input(type()).output(type()),
|
|
59
59
|
list: oc.route({
|
|
60
60
|
method: "POST",
|
|
@@ -73,13 +73,13 @@ const filesContract = {
|
|
|
73
73
|
}).input(type()).output(type()),
|
|
74
74
|
confirm: oc.route({
|
|
75
75
|
method: "POST",
|
|
76
|
-
path: "/resource/v1/files/{
|
|
76
|
+
path: "/resource/v1/files/{fileId}/confirm",
|
|
77
77
|
successStatus: 200,
|
|
78
78
|
inputStructure: "detailed"
|
|
79
79
|
}).input(type()).output(type()),
|
|
80
80
|
get: oc.route({
|
|
81
81
|
method: "GET",
|
|
82
|
-
path: "/resource/v1/files/{
|
|
82
|
+
path: "/resource/v1/files/{fileId}",
|
|
83
83
|
inputStructure: "detailed"
|
|
84
84
|
}).input(type()).output(type())
|
|
85
85
|
};
|
|
@@ -93,7 +93,7 @@ const telephonyContract = {
|
|
|
93
93
|
calls: {
|
|
94
94
|
get: oc.route({
|
|
95
95
|
method: "GET",
|
|
96
|
-
path: "/resource/v1/telephony/calls/{
|
|
96
|
+
path: "/resource/v1/telephony/calls/{callId}"
|
|
97
97
|
}).input(type()).output(type()),
|
|
98
98
|
list: oc.route({
|
|
99
99
|
method: "GET",
|
|
@@ -107,7 +107,7 @@ const telephonyContract = {
|
|
|
107
107
|
messages: {
|
|
108
108
|
get: oc.route({
|
|
109
109
|
method: "GET",
|
|
110
|
-
path: "/resource/v1/telephony/messages/{
|
|
110
|
+
path: "/resource/v1/telephony/messages/{messageId}"
|
|
111
111
|
}).input(type()).output(type()),
|
|
112
112
|
list: oc.route({
|
|
113
113
|
method: "GET",
|
|
@@ -128,7 +128,7 @@ const teamsContract = {
|
|
|
128
128
|
}).input(type()).output(type()),
|
|
129
129
|
members: { list: oc.route({
|
|
130
130
|
method: "GET",
|
|
131
|
-
path: "/resource/v1/teams/{
|
|
131
|
+
path: "/resource/v1/teams/{teamCode}/members",
|
|
132
132
|
inputStructure: "detailed"
|
|
133
133
|
}).input(type()).output(type()) }
|
|
134
134
|
};
|
|
@@ -3,7 +3,7 @@ import { f as resolveAuth, m as resolveInstanceUrl, p as resolveAuthForOrg } fro
|
|
|
3
3
|
import { a as findWorkspaceRoot, i as findWorkspaceConfig, o as isRootLayout, r as findParentRoot, s as readWorkspaceConfig } from "./workspace-CtIKSgMD.js";
|
|
4
4
|
import { r as orgUsesHitchGit, t as canCheckHitchGit } from "./auth-DuMRqSGe.js";
|
|
5
5
|
import { n as loadAppletSourceDefinition } from "./load-config-Cffvj-aM.js";
|
|
6
|
-
import { r as runGenerate } from "./generate-
|
|
6
|
+
import { r as runGenerate } from "./generate-DNgO44RO.js";
|
|
7
7
|
import { n as ORG_CODE_PATTERN, t as APPLET_CODE_PATTERN } from "./manifest-patterns-BfxqImlp.js";
|
|
8
8
|
import { l as writeRootSupport, n as loadCliManifest, r as loadPackageManifest, s as writeAppletSupport, t as assertWorkspaceCli, u as writeWorkspaceSupport } from "./project-DZGk765E.js";
|
|
9
9
|
import { n as childApplets } from "./parent-Zx8Eg1Ki.js";
|
package/dist/server.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { a as createWorkflow, i as WorkflowStep, n as WorkflowDefinition, r as W
|
|
|
2
2
|
import { l as RegisteredContract, m as RegisteredWorkflows, p as RegisteredVariables, u as RegisteredManifest } from "./manifest-CpghlaJc.js";
|
|
3
3
|
import { t as NarrowContract } from "./contract-CUc0B2rl.js";
|
|
4
4
|
import { i as WithBatchRecorder, n as WithRecordCreates } from "./create-BJqLT8Uq.js";
|
|
5
|
-
import { o as WithFilesUpload } from "./upload-
|
|
5
|
+
import { o as WithFilesUpload } from "./upload-wp-Ilsv6.js";
|
|
6
6
|
import { ContractRouterClient } from "@orpc/contract";
|
|
7
7
|
type WorkflowRunStatus<Result> = {
|
|
8
8
|
id: string;
|
package/dist/server.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as withFilesUpload, r as getRegisteredHitchContract } from "./upload-
|
|
1
|
+
import { n as withFilesUpload, r as getRegisteredHitchContract } from "./upload-D1mzpsSk.js";
|
|
2
2
|
import { t as HITCH_APPLET_CODE_HEADER } from "./headers-BcEMIVCo.js";
|
|
3
3
|
import { a as getRequestContext, i as getIdentityBearer, n as createWorkflow, s as tryGetRequestContext } from "./workflow-l2SlVePB.js";
|
|
4
4
|
import { s as publishNote, t as APP_CONTEXT_CHANNEL } from "./log-context-BepwdjrR.js";
|
|
5
|
-
import { t as withBatchRecorder } from "./batch-
|
|
5
|
+
import { t as withBatchRecorder } from "./batch-DwyWmiaE.js";
|
|
6
6
|
import { t as createLazyClientProxy } from "./lazy-client--QCL0wiu.js";
|
|
7
7
|
import { createORPCClient } from "@orpc/client";
|
|
8
8
|
import { OpenAPILink } from "@orpc/openapi-client/fetch";
|
|
@@ -79,7 +79,7 @@ async function uploadFile(files, file, options = {}) {
|
|
|
79
79
|
} }, { signal: options.signal });
|
|
80
80
|
const status = await putFile(file, created.uploadUrl, created.data.contentType, options);
|
|
81
81
|
if (status < 200 || status >= 300) throw new Error(`Upload of "${file.name}" failed with status ${status}.`);
|
|
82
|
-
const confirmed = await files.confirm({ params: {
|
|
82
|
+
const confirmed = await files.confirm({ params: { fileId: created.data.id } }, { signal: options.signal });
|
|
83
83
|
return {
|
|
84
84
|
...confirmed.data,
|
|
85
85
|
downloadUrl: confirmed.downloadUrl
|
|
@@ -94,7 +94,7 @@ function withFilesUpload(target, files) {
|
|
|
94
94
|
const proxy = new Proxy(value, { get: (filesInner, filesProperty, filesReceiver) => {
|
|
95
95
|
if (filesProperty === "upload") return (file, options) => uploadFile(files(), file, options);
|
|
96
96
|
if (filesProperty === "download") return async (id, options) => {
|
|
97
|
-
const result = await files().get({ params: {
|
|
97
|
+
const result = await files().get({ params: { fileId: id } }, options);
|
|
98
98
|
return {
|
|
99
99
|
...result.data,
|
|
100
100
|
downloadUrl: result.downloadUrl
|
|
@@ -27,7 +27,7 @@ type CreateFileOutput = {
|
|
|
27
27
|
};
|
|
28
28
|
type FileInput = {
|
|
29
29
|
params: {
|
|
30
|
-
|
|
30
|
+
fileId: string;
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
33
|
type FileOutput = {
|
|
@@ -57,7 +57,7 @@ type FilesClient = {
|
|
|
57
57
|
}>;
|
|
58
58
|
confirm(input: {
|
|
59
59
|
params: {
|
|
60
|
-
|
|
60
|
+
fileId: string;
|
|
61
61
|
};
|
|
62
62
|
}, options?: {
|
|
63
63
|
signal?: AbortSignal;
|
|
@@ -67,7 +67,7 @@ type FilesClient = {
|
|
|
67
67
|
}>;
|
|
68
68
|
get(input: {
|
|
69
69
|
params: {
|
|
70
|
-
|
|
70
|
+
fileId: string;
|
|
71
71
|
};
|
|
72
72
|
}, options?: {
|
|
73
73
|
signal?: AbortSignal;
|
package/dist/vite.js
CHANGED
|
@@ -6,7 +6,7 @@ import { r as writeGeneratedAgents } from "./generated-agents-BUnJ0FQA.js";
|
|
|
6
6
|
import { d as rejectEnvironmentKey, i as bearerToken, l as organizationInstanceUrl, m as resolveInstanceUrl, p as resolveAuthForOrg } from "./store-E5NhITHl.js";
|
|
7
7
|
import { c as validateRootManifest, o as isRootLayout } from "./workspace-CtIKSgMD.js";
|
|
8
8
|
import { a as appletSourceDefinitionSchema, i as appletReleaseManifest, o as resolveWorkspaceOrg, r as appletMountPath } from "./load-config-Cffvj-aM.js";
|
|
9
|
-
import { a as writeRegisterDeclaration, c as writeAppletRoot, d as writeServerEntry, i as syncContract, l as writeClientEntry, n as routesModuleSource, u as writeManifestGen } from "./generate-
|
|
9
|
+
import { a as writeRegisterDeclaration, c as writeAppletRoot, d as writeServerEntry, i as syncContract, l as writeClientEntry, n as routesModuleSource, u as writeManifestGen } from "./generate-DNgO44RO.js";
|
|
10
10
|
import { t as APPLET_CODE_PATTERN } from "./manifest-patterns-BfxqImlp.js";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { randomUUID } from "node:crypto";
|
package/package.json
CHANGED
|
@@ -9,15 +9,15 @@ const { id, url } = await hitch.email.tracking.createPixel({
|
|
|
9
9
|
});
|
|
10
10
|
const html = `<p>Hello</p><img src="${url}" width="1" height="1" alt="">`;
|
|
11
11
|
// Send the email with the applet's email provider.
|
|
12
|
-
await hitch.email.tracking.markSent({ id });
|
|
12
|
+
await hitch.email.tracking.markSent({ trackerId: id });
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`markSent({
|
|
16
|
-
`get({
|
|
15
|
+
`markSent({ trackerId, sentAt })` accepts an ISO time. A later call replaces the sent time.
|
|
16
|
+
`get({ trackerId })` returns one tracker. `list()` returns up to 100 trackers by default.
|
|
17
17
|
Use `filter`, `sentAt`, `cursor`, and `limit` to select a page.
|
|
18
18
|
|
|
19
19
|
```ts
|
|
20
|
-
const tracker = await hitch.email.tracking.get({ id });
|
|
20
|
+
const tracker = await hitch.email.tracking.get({ trackerId: id });
|
|
21
21
|
const query = {
|
|
22
22
|
filter: { buyerId: "acme" },
|
|
23
23
|
sentAt: { $gte: "2026-10-01T00:00:00Z" },
|
|
@@ -77,7 +77,7 @@ Use the `get` query utilities when React needs file metadata as query state.
|
|
|
77
77
|
```ts
|
|
78
78
|
const fileQuery = useQuery(
|
|
79
79
|
hitch.files.get.queryOptions({
|
|
80
|
-
input: { params: {
|
|
80
|
+
input: { params: { fileId: id } },
|
|
81
81
|
}),
|
|
82
82
|
);
|
|
83
83
|
|
|
@@ -100,7 +100,7 @@ Store `uploaded.id` as the value of an attachment attribute. A multi-value attac
|
|
|
100
100
|
const uploaded = await hitch.files.upload(file);
|
|
101
101
|
|
|
102
102
|
await hitch.records.claims.update.call({
|
|
103
|
-
params: {
|
|
103
|
+
params: { recordId: claimId },
|
|
104
104
|
body: { receipt_id: uploaded.id }, // multi-value: [uploaded.id]
|
|
105
105
|
});
|
|
106
106
|
```
|
|
@@ -50,8 +50,8 @@ await hitch.batch(
|
|
|
50
50
|
(tx) => {
|
|
51
51
|
tx.companies.create({ body: { id: companyId, name: "Acme" } });
|
|
52
52
|
tx.deals.create({ body: { name: "Acme renewal", company_id: companyId } });
|
|
53
|
-
tx.deals.update({ params: {
|
|
54
|
-
tx.deals.delete({ params: {
|
|
53
|
+
tx.deals.update({ params: { recordId: dealId }, body: { stage: "won" } });
|
|
54
|
+
tx.deals.delete({ params: { recordId: staleDealId } });
|
|
55
55
|
tx.deals.updateWhere({ body: { filter: { stage: "open" }, set: { stage: "lost" } } });
|
|
56
56
|
},
|
|
57
57
|
{ idempotencyKey: `import-${runId}-${chunkIndex}` },
|
|
@@ -15,15 +15,15 @@ Use the generated Hitch contract as the typed data plane.
|
|
|
15
15
|
|
|
16
16
|
- `list` sends `GET /v1/<objectCode>` and lists records with query parameters.
|
|
17
17
|
- `create` sends `POST /v1/<objectCode>` and creates one record or an array of records.
|
|
18
|
-
- `get` sends `GET /v1/<objectCode>/{
|
|
19
|
-
- `history` sends `GET /v1/<objectCode>/{
|
|
20
|
-
- `update` sends `PATCH /v1/<objectCode>/{
|
|
21
|
-
- `delete` sends `DELETE /v1/<objectCode>/{
|
|
18
|
+
- `get` sends `GET /v1/<objectCode>/{recordId}` and gets one record.
|
|
19
|
+
- `history` sends `GET /v1/<objectCode>/{recordId}/history` and gets record changes.
|
|
20
|
+
- `update` sends `PATCH /v1/<objectCode>/{recordId}` and updates one record.
|
|
21
|
+
- `delete` sends `DELETE /v1/<objectCode>/{recordId}` and deletes one record.
|
|
22
22
|
- `query` sends `POST /v1/<objectCode>/query` and lists records with a structured body.
|
|
23
23
|
- `updateWhere` sends `POST /v1/<objectCode>/bulk-update` and updates matching records.
|
|
24
24
|
- `aggregate` sends `POST /v1/<objectCode>/aggregate` and calculates aggregate values.
|
|
25
25
|
|
|
26
|
-
- Pass a record ID in `params.
|
|
26
|
+
- Pass a record ID in `params.recordId` for `get`, `history`, `update`, and `delete`.
|
|
27
27
|
- Pass record fields in `body` for `create` and `update`.
|
|
28
28
|
- Pass structured query data in `body` for `query`.
|
|
29
29
|
|
|
@@ -67,7 +67,7 @@ const deals = await hitch.records.deals.query({
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
const deal = await hitch.records.deals.get({
|
|
70
|
-
params: {
|
|
70
|
+
params: { recordId: dealId },
|
|
71
71
|
});
|
|
72
72
|
```
|
|
73
73
|
|
|
@@ -93,7 +93,7 @@ The first record has index 0. An empty array returns an empty array and requires
|
|
|
93
93
|
|
|
94
94
|
```ts
|
|
95
95
|
const page = await hitch.records.deals.history({
|
|
96
|
-
params: {
|
|
96
|
+
params: { recordId: id },
|
|
97
97
|
query: { limit: 25, cursor },
|
|
98
98
|
});
|
|
99
99
|
|
|
@@ -44,7 +44,7 @@ Every generated command comes from an API route. The words of the command are th
|
|
|
44
44
|
- `hitch manage ...` changes the organization: objects and attributes, changesets, grants, teams, members, invitations, capabilities, API keys, applets, and the theme. Each command needs a capability.
|
|
45
45
|
- `hitch me get` shows who you are. `hitch me teams list` and `hitch me applets list` show your teams and the applets that you can open.
|
|
46
46
|
- The verb comes from the HTTP method: `list` or `get` for GET, `create` for POST, `update` for PATCH, `set` for PUT, `delete` for DELETE. A POST to an action uses the action as the verb: `hitch manage changesets apply`.
|
|
47
|
-
- Every path, query, and body field becomes a flag in kebab case. A path field names its thing: `--object`, `--record`, `--team`, `--
|
|
47
|
+
- Every path, query, and body field becomes a flag in kebab case. A path field names its thing: `--object-code`, `--record-id`, `--team-code`, `--changeset-id`. An object field takes JSON: `--filter '{"stage":"won"}'`. An array field takes one JSON value per item: `--aggregates '{"op":"sum","attribute":"amount","as":"total"}' '{"op":"count","as":"n"}'`.
|
|
48
48
|
- A required field is a required flag. The CLI does not prompt for a missing value. It prints the usage error.
|
|
49
49
|
- Run `hitch <command> --help` to see its flags. The flags of a data command follow that organization's schema.
|
|
50
50
|
- Every `delete` command asks for confirmation. Pass `--yes` to skip it. A script without a terminal must pass `--yes`.
|
|
@@ -57,16 +57,16 @@ Examples use an object called `deals` with attributes `amount`, `stage`, and `ow
|
|
|
57
57
|
|
|
58
58
|
```sh
|
|
59
59
|
hitch deals list --limit 20 --include owner
|
|
60
|
-
hitch deals get --record 0192f1a2-3b4c-7d5e-8f60-123456789abc --include owner
|
|
60
|
+
hitch deals get --record-id 0192f1a2-3b4c-7d5e-8f60-123456789abc --include owner
|
|
61
61
|
hitch deals create --name "Acme renewal" --amount 5000 --stage open
|
|
62
|
-
hitch deals update --record 0192f1a2-3b4c-7d5e-8f60-123456789abc --stage won
|
|
63
|
-
hitch deals delete --record 0192f1a2-3b4c-7d5e-8f60-123456789abc --yes
|
|
64
|
-
hitch deals history get --record 0192f1a2-3b4c-7d5e-8f60-123456789abc
|
|
62
|
+
hitch deals update --record-id 0192f1a2-3b4c-7d5e-8f60-123456789abc --stage won
|
|
63
|
+
hitch deals delete --record-id 0192f1a2-3b4c-7d5e-8f60-123456789abc --yes
|
|
64
|
+
hitch deals history get --record-id 0192f1a2-3b4c-7d5e-8f60-123456789abc
|
|
65
65
|
hitch deals query --filter '{"stage":{"$in":["open","won"]}}' --sort '{"attribute":"createdAt","direction":"desc"}' --limit 50
|
|
66
66
|
hitch deals bulk-update --filter '{"stage":"open"}' --set '{"stage":"lost"}' --expect 3
|
|
67
67
|
hitch deals aggregate --aggregates '{"op":"sum","attribute":"amount","as":"total"}' --group-by '[{"attribute":"stage"}]'
|
|
68
68
|
hitch batch run --requests '{"method":"POST","path":"/v1/deals","body":{"name":"A","stage":"open"}}'
|
|
69
|
-
hitch objects schema get --object deals
|
|
69
|
+
hitch objects schema get --object-code deals
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
- The filter, sort, include, aggregate, and batch bodies use the same shapes as the SDK. Read the `hitch-data` skill for the rules and limits.
|
|
@@ -80,21 +80,21 @@ hitch objects schema get --object deals
|
|
|
80
80
|
```sh
|
|
81
81
|
hitch resource teams list
|
|
82
82
|
hitch manage teams create --name Sales
|
|
83
|
-
hitch manage teams members set --team sales --member james@acme.com
|
|
83
|
+
hitch manage teams members set --team-code sales --member-email james@acme.com
|
|
84
84
|
hitch manage invitations create --email bob@acme.com
|
|
85
85
|
hitch manage capabilities list
|
|
86
|
-
hitch manage capabilities grants set --capability objects:manage --
|
|
87
|
-
hitch manage objects access get --object deals
|
|
88
|
-
hitch manage objects grants set --object deals --
|
|
89
|
-
hitch manage objects grants set --object deals --
|
|
90
|
-
hitch manage objects grants delete --object deals --
|
|
91
|
-
hitch manage applets access get --applet sales_portal
|
|
92
|
-
hitch manage applets grants set --applet sales_portal --
|
|
86
|
+
hitch manage capabilities grants set --capability-name objects:manage --team-code sales
|
|
87
|
+
hitch manage objects access get --object-code deals
|
|
88
|
+
hitch manage objects grants set --object-code deals --team-code sales --can-create --can-read --can-update --conditions '{"path":["owner"],"operator":"equals","operand":"current_user"}'
|
|
89
|
+
hitch manage objects grants set --object-code deals --team-code default --can-read
|
|
90
|
+
hitch manage objects grants delete --object-code deals --team-code sales --yes
|
|
91
|
+
hitch manage applets access get --applet-code sales_portal
|
|
92
|
+
hitch manage applets grants set --applet-code sales_portal --team-code sales
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
- Paths name things by key, not by id. `--team`
|
|
95
|
+
- Paths name things by key, not by id. `--team-code` takes a team code. `--member-email` and `--invitation-email` take an email. `--api-key-name` takes the key name, for example `CI_DEPLOY`. `--object-code` and `--attribute-code` take a code. `--mailbox-email` takes the mailbox address.
|
|
96
96
|
- A team code is the team name folded to ASCII and lower case, with each run of other characters as one `_`. `Sales Team` has the code `sales_team`. A rename changes the code.
|
|
97
|
-
- `manage objects grants set` sets the whole object grant of one grantee: a verb that you leave out is off, and the conditions and attribute rules that you pass replace the saved ones. `--
|
|
97
|
+
- `manage objects grants set` sets the whole object grant of one grantee: a verb that you leave out is off, and the conditions and attribute rules that you pass replace the saved ones. `--team-code` is a team code, or `default` for the grant that every member holds.
|
|
98
98
|
- Pass each condition and each attribute rule as one JSON value, for example `--attributes '{"attribute":"owner","canUpdate":true}'`. Name attributes by code.
|
|
99
99
|
- Add `--delegate '"company"'` to delegate through a reference attribute. The value is the attribute code as a JSON string.
|
|
100
100
|
- `manage objects access get` shows each object grant in the shape that `manage objects grants set` takes. `manage applets access get` shows which grantees cannot use what an applet reads.
|
|
@@ -106,11 +106,11 @@ Schema changes go through a changeset.
|
|
|
106
106
|
```sh
|
|
107
107
|
hitch manage changesets create
|
|
108
108
|
hitch manage objects create --name Deals --changeset-id <changesetId>
|
|
109
|
-
hitch manage objects attributes create --object deals --name Amount --type currency --changeset-id <changesetId>
|
|
110
|
-
hitch manage changesets check --changeset <changesetId>
|
|
111
|
-
hitch manage changesets apply --changeset <changesetId>
|
|
112
|
-
hitch manage changesets merge --changeset <changesetId> --from <otherChangesetId>
|
|
113
|
-
hitch manage changesets abandon --changeset <changesetId>
|
|
109
|
+
hitch manage objects attributes create --object-code deals --name Amount --type currency --changeset-id <changesetId>
|
|
110
|
+
hitch manage changesets check --changeset-id <changesetId>
|
|
111
|
+
hitch manage changesets apply --changeset-id <changesetId>
|
|
112
|
+
hitch manage changesets merge --changeset-id <changesetId> --from <otherChangesetId>
|
|
113
|
+
hitch manage changesets abandon --changeset-id <changesetId>
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
- A schema command without `--changeset-id` applies at once when it has no blockers. With a blocker, Hitch stages it in a new pending changeset and names it in the error.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { r as runGenerate } from "./generate-48pqFh5M.js";
|