@marcoappio/marco-config 2.0.576 → 2.0.578

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.
@@ -0,0 +1,147 @@
1
+ import * as v from 'valibot';
2
+ import { id } from '../schemas/id';
3
+ import { string } from '../schemas/string';
4
+ import { appwrite } from './appwrite';
5
+ import { appwriteCommands } from './commands';
6
+ const accountStates = ['AWAITING_CONNECTION', 'CONNECTED', 'DISCONNECTED', 'ERROR'];
7
+ const functionErrorCodes = [
8
+ 'AUTHENTICATION_FAILED',
9
+ 'AUTHORIZATION_FAILED',
10
+ 'CONFLICT',
11
+ 'INVALID_REQUEST',
12
+ 'NOT_FOUND',
13
+ 'PROVIDER_REJECTED',
14
+ 'TRANSIENT_FAILURE',
15
+ 'INTERNAL_ERROR',
16
+ ];
17
+ const socketTypes = ['SSL', 'STARTTLS'];
18
+ const functionErrorSchema = v.strictObject({
19
+ code: v.picklist(functionErrorCodes),
20
+ retryable: v.boolean(),
21
+ });
22
+ const portSchema = v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(65_535));
23
+ const providerCredentialSchema = v.strictObject({
24
+ host: string.required(4096),
25
+ password: string.required(4096),
26
+ port: portSchema,
27
+ socketType: v.picklist(socketTypes),
28
+ user: string.required(4096),
29
+ });
30
+ const connectionSchema = v.variant('kind', [
31
+ v.strictObject({
32
+ kind: v.literal('OAUTH'),
33
+ provider: v.picklist(['GMAIL', 'OUTLOOK']),
34
+ redirectUri: v.pipe(v.string(), v.url()),
35
+ }),
36
+ v.strictObject({
37
+ imap: providerCredentialSchema,
38
+ kind: v.literal('IMAP'),
39
+ smtp: providerCredentialSchema,
40
+ }),
41
+ ]);
42
+ const connectionResultSchema = v.strictObject({
43
+ accountId: id.accountId.required(),
44
+ authorizationUrl: v.optional(v.pipe(v.string(), v.url())),
45
+ state: v.picklist(accountStates),
46
+ });
47
+ const completedSchema = v.strictObject({ state: v.literal('COMPLETED') });
48
+ const emptySchema = v.strictObject({});
49
+ const createRoute = (route) => ({
50
+ ...route,
51
+ errorSchema: functionErrorSchema,
52
+ });
53
+ const apiRoutes = {
54
+ accountConnection: createRoute({
55
+ context: 'authenticated',
56
+ method: 'PUT',
57
+ path: '/accounts/connection',
58
+ requestSchema: v.strictObject({
59
+ accountId: id.accountId.required(),
60
+ connection: connectionSchema,
61
+ }),
62
+ responseSchema: connectionResultSchema,
63
+ }),
64
+ accountDelete: createRoute({
65
+ context: 'authenticated',
66
+ method: 'DELETE',
67
+ path: '/account/delete',
68
+ requestSchema: emptySchema,
69
+ responseSchema: v.strictObject({ state: v.literal('ACCEPTED') }),
70
+ }),
71
+ accountsConnect: createRoute({
72
+ context: 'authenticated',
73
+ method: 'POST',
74
+ path: '/accounts/connect',
75
+ requestSchema: v.strictObject({ connection: connectionSchema }),
76
+ responseSchema: connectionResultSchema,
77
+ }),
78
+ commands: createRoute({
79
+ context: 'authenticated',
80
+ method: 'POST',
81
+ path: '/commands',
82
+ requestSchema: appwriteCommands.requestSchema,
83
+ responseSchema: appwriteCommands.responseSchema,
84
+ }),
85
+ oauthWebhook: createRoute({
86
+ context: 'webhook',
87
+ method: 'GET',
88
+ path: '/webhooks/oauth',
89
+ requestSchema: v.strictObject({
90
+ code: string.required(4096),
91
+ state: string.required(4096),
92
+ }),
93
+ responseSchema: completedSchema,
94
+ }),
95
+ profileEnsure: createRoute({
96
+ context: 'authenticated',
97
+ method: 'POST',
98
+ path: '/profile/ensure',
99
+ requestSchema: emptySchema,
100
+ responseSchema: v.strictObject({ created: v.boolean() }),
101
+ }),
102
+ pushTokens: createRoute({
103
+ context: 'authenticated',
104
+ method: 'POST',
105
+ path: '/push-tokens',
106
+ requestSchema: v.strictObject({
107
+ operation: v.picklist(['REGISTER', 'REMOVE']),
108
+ token: string.required(4096),
109
+ }),
110
+ responseSchema: v.strictObject({ registered: v.boolean() }),
111
+ }),
112
+ };
113
+ const workerRoutes = {
114
+ jobsRun: createRoute({
115
+ context: 'internal',
116
+ method: 'POST',
117
+ path: '/jobs/run',
118
+ requestSchema: emptySchema,
119
+ responseSchema: completedSchema,
120
+ }),
121
+ supervisor: createRoute({
122
+ context: 'internal',
123
+ method: 'POST',
124
+ path: '/',
125
+ requestSchema: emptySchema,
126
+ responseSchema: completedSchema,
127
+ }),
128
+ watchersRun: createRoute({
129
+ context: 'internal',
130
+ method: 'POST',
131
+ path: '/watchers/run',
132
+ requestSchema: v.strictObject({ shardId: string.required() }),
133
+ responseSchema: completedSchema,
134
+ }),
135
+ };
136
+ export const appwriteFunctions = {
137
+ api: {
138
+ id: appwrite.ids.functions.api,
139
+ routes: apiRoutes,
140
+ },
141
+ errorCodes: functionErrorCodes,
142
+ errorSchema: functionErrorSchema,
143
+ worker: {
144
+ id: appwrite.ids.functions.worker,
145
+ routes: workerRoutes,
146
+ },
147
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=functions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.test.d.ts","sourceRoot":"","sources":["../../src/appwrite/functions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+ import * as v from 'valibot';
3
+ import { appwriteFunctions } from './functions';
4
+ const command = {
5
+ accountId: null,
6
+ id: '0197f3d4-1b22-7abc-8def-123456789abc',
7
+ kind: 'profile.settings.set',
8
+ payload: { name: 'Isaac' },
9
+ submittedAt: '2026-07-15T00:00:00.000Z',
10
+ version: 1,
11
+ };
12
+ const routeFixtures = [
13
+ {
14
+ name: 'profile ensure',
15
+ request: {},
16
+ response: { created: true },
17
+ route: () => appwriteFunctions.api.routes.profileEnsure,
18
+ },
19
+ {
20
+ name: 'commands',
21
+ request: command,
22
+ response: { canonicalRevision: null, error: null, id: command.id, state: 'ACCEPTED' },
23
+ route: () => appwriteFunctions.api.routes.commands,
24
+ },
25
+ {
26
+ name: 'account connection',
27
+ request: {
28
+ accountId: 'account_1',
29
+ connection: {
30
+ imap: {
31
+ host: 'imap.example.com',
32
+ password: 'password',
33
+ port: 993,
34
+ socketType: 'SSL',
35
+ user: 'marco@example.com',
36
+ },
37
+ kind: 'IMAP',
38
+ smtp: {
39
+ host: 'smtp.example.com',
40
+ password: 'password',
41
+ port: 465,
42
+ socketType: 'SSL',
43
+ user: 'marco@example.com',
44
+ },
45
+ },
46
+ },
47
+ response: { accountId: 'account_1', state: 'CONNECTED' },
48
+ route: () => appwriteFunctions.api.routes.accountConnection,
49
+ },
50
+ {
51
+ name: 'account connect',
52
+ request: { connection: { kind: 'OAUTH', provider: 'GMAIL', redirectUri: 'https://marco.app/oauth' } },
53
+ response: {
54
+ accountId: 'account_1',
55
+ authorizationUrl: 'https://accounts.google.com/o/oauth2/auth',
56
+ state: 'AWAITING_CONNECTION',
57
+ },
58
+ route: () => appwriteFunctions.api.routes.accountsConnect,
59
+ },
60
+ {
61
+ name: 'push tokens',
62
+ request: { operation: 'REGISTER', token: 'ExponentPushToken[example]' },
63
+ response: { registered: true },
64
+ route: () => appwriteFunctions.api.routes.pushTokens,
65
+ },
66
+ {
67
+ name: 'account deletion',
68
+ request: {},
69
+ response: { state: 'ACCEPTED' },
70
+ route: () => appwriteFunctions.api.routes.accountDelete,
71
+ },
72
+ {
73
+ name: 'OAuth webhook',
74
+ request: { code: 'authorisation-code', state: 'state' },
75
+ response: { state: 'COMPLETED' },
76
+ route: () => appwriteFunctions.api.routes.oauthWebhook,
77
+ },
78
+ {
79
+ name: 'worker supervisor',
80
+ request: {},
81
+ response: { state: 'COMPLETED' },
82
+ route: () => appwriteFunctions.worker.routes.supervisor,
83
+ },
84
+ {
85
+ name: 'job runner',
86
+ request: {},
87
+ response: { state: 'COMPLETED' },
88
+ route: () => appwriteFunctions.worker.routes.jobsRun,
89
+ },
90
+ {
91
+ name: 'watcher runner',
92
+ request: { shardId: 'watcher-shard_1' },
93
+ response: { state: 'COMPLETED' },
94
+ route: () => appwriteFunctions.worker.routes.watchersRun,
95
+ },
96
+ ];
97
+ describe('appwriteFunctions', () => {
98
+ it('publishes the complete Appwrite Function route manifest', () => {
99
+ expect([
100
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.profileEnsure },
101
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.commands },
102
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.accountsConnect },
103
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.accountConnection },
104
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.pushTokens },
105
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.accountDelete },
106
+ { functionId: appwriteFunctions.api.id, route: appwriteFunctions.api.routes.oauthWebhook },
107
+ { functionId: appwriteFunctions.worker.id, route: appwriteFunctions.worker.routes.supervisor },
108
+ { functionId: appwriteFunctions.worker.id, route: appwriteFunctions.worker.routes.jobsRun },
109
+ { functionId: appwriteFunctions.worker.id, route: appwriteFunctions.worker.routes.watchersRun },
110
+ ].map(({ functionId, route }) => ({
111
+ context: route.context,
112
+ functionId,
113
+ method: route.method,
114
+ path: route.path,
115
+ }))).toEqual([
116
+ { context: 'authenticated', functionId: 'marco-api', method: 'POST', path: '/profile/ensure' },
117
+ { context: 'authenticated', functionId: 'marco-api', method: 'POST', path: '/commands' },
118
+ { context: 'authenticated', functionId: 'marco-api', method: 'POST', path: '/accounts/connect' },
119
+ { context: 'authenticated', functionId: 'marco-api', method: 'PUT', path: '/accounts/connection' },
120
+ { context: 'authenticated', functionId: 'marco-api', method: 'POST', path: '/push-tokens' },
121
+ { context: 'authenticated', functionId: 'marco-api', method: 'DELETE', path: '/account/delete' },
122
+ { context: 'webhook', functionId: 'marco-api', method: 'GET', path: '/webhooks/oauth' },
123
+ { context: 'internal', functionId: 'marco-worker', method: 'POST', path: '/' },
124
+ { context: 'internal', functionId: 'marco-worker', method: 'POST', path: '/jobs/run' },
125
+ { context: 'internal', functionId: 'marco-worker', method: 'POST', path: '/watchers/run' },
126
+ ]);
127
+ });
128
+ for (const { name, request, response, route } of routeFixtures) {
129
+ it(`accepts the ${name} request and response`, () => {
130
+ expect(v.safeParse(route().requestSchema, request).success).toBe(true);
131
+ expect(v.safeParse(route().responseSchema, response).success).toBe(true);
132
+ });
133
+ it(`rejects caller ownership in the ${name} request and response`, () => {
134
+ expect(v.safeParse(route().requestSchema, { ...request, userId: 'another-user' }).success).toBe(false);
135
+ expect(v.safeParse(route().responseSchema, { ...response, userId: 'another-user' }).success).toBe(false);
136
+ });
137
+ }
138
+ it('redacts credentials from connection responses and compact errors', () => {
139
+ expect(v.safeParse(appwriteFunctions.api.routes.accountsConnect.responseSchema, {
140
+ accountId: 'account_1',
141
+ credentials: { password: 'secret' },
142
+ state: 'CONNECTED',
143
+ }).success).toBe(false);
144
+ expect(v.safeParse(appwriteFunctions.errorSchema, {
145
+ code: 'AUTHENTICATION_FAILED',
146
+ retryable: false,
147
+ }).success).toBe(true);
148
+ expect(v.safeParse(appwriteFunctions.errorSchema, {
149
+ code: 'AUTHENTICATION_FAILED',
150
+ credentials: 'secret',
151
+ retryable: false,
152
+ }).success).toBe(false);
153
+ });
154
+ });
@@ -1,2 +1,4 @@
1
1
  export { type AppwriteRow, type AppwriteRowTable, appwrite } from './appwrite';
2
+ export { type AppwriteCommandError, type AppwriteCommandKind, type AppwriteCommandPayload, type AppwriteCommandRequest, type AppwriteCommandResponse, type AppwriteCommandState, appwriteCommands, } from './commands';
3
+ export { type AppwriteFunctionContext, type AppwriteFunctionError, type AppwriteFunctionName, type AppwriteFunctionRequest, type AppwriteFunctionResponse, type AppwriteFunctionRoute, type AppwriteFunctionRouteName, appwriteFunctions, } from './functions';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appwrite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appwrite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,iBAAiB,GAClB,MAAM,aAAa,CAAA"}
@@ -1 +1,3 @@
1
1
  export { appwrite } from './appwrite';
2
+ export { appwriteCommands, } from './commands';
3
+ export { appwriteFunctions, } from './functions';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { type AppwriteRow, type AppwriteRowTable, appwrite } from './appwrite';
1
+ export { type AppwriteCommandError, type AppwriteCommandKind, type AppwriteCommandPayload, type AppwriteCommandRequest, type AppwriteCommandResponse, type AppwriteCommandState, type AppwriteFunctionContext, type AppwriteFunctionError, type AppwriteFunctionName, type AppwriteFunctionRequest, type AppwriteFunctionResponse, type AppwriteFunctionRoute, type AppwriteFunctionRouteName, type AppwriteRow, type AppwriteRowTable, appwrite, appwriteCommands, appwriteFunctions, } from './appwrite';
2
2
  export { marcoConstants } from './constants';
3
3
  export { MARCO_ENV, MarcoEnvironment, marcoPublicConfig } from './marcoPublicConfig';
4
4
  export { type Account, type AccountAlias, type AccountId, type AccountLabel, type AliasId, type AttachmentId, type Contact, type ContactId, type Draft, type DraftAttachment, type DraftBody, type DraftId, type LabelId, type MessageId, marcoSchemas, type PushNotificationTokenId, type RecipientId, type Thread, type ThreadId, type ThreadMessage, type ThreadMessageAttachment, type ThreadMessageRecipient, type User, type UserId, type UserPushNotificationToken, type UserView, type ViewId, } from './schemas';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,MAAM,GACZ,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,YAAY,EACZ,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,MAAM,GACZ,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { appwrite } from './appwrite';
1
+ export { appwrite, appwriteCommands, appwriteFunctions, } from './appwrite';
2
2
  export { marcoConstants } from './constants';
3
3
  export { MARCO_ENV, marcoPublicConfig } from './marcoPublicConfig';
4
4
  export { marcoSchemas, } from './schemas';
@@ -601,7 +601,7 @@ export declare const marcoSchemas: {
601
601
  bcc: string[];
602
602
  cc: string[];
603
603
  to: string[];
604
- }, import("valibot").StringIssue | import("valibot").ArrayIssue | import("valibot").ObjectIssue | import("valibot").NonEmptyIssue<string> | import("valibot").MaxLengthIssue<string, number> | import("valibot").NonOptionalIssue | import("valibot").RfcEmailIssue<string>>;
604
+ }, import("valibot").StringIssue | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string> | import("valibot").MaxLengthIssue<string, number> | import("valibot").NonOptionalIssue | import("valibot").RfcEmailIssue<string> | import("valibot").ObjectIssue>;
605
605
  readonly '~types'?: {
606
606
  readonly input: {
607
607
  subject: string | null;
@@ -615,7 +615,7 @@ export declare const marcoSchemas: {
615
615
  cc: string[];
616
616
  to: string[];
617
617
  };
618
- readonly issue: import("valibot").StringIssue | import("valibot").ArrayIssue | import("valibot").ObjectIssue | import("valibot").NonEmptyIssue<string> | import("valibot").MaxLengthIssue<string, number> | import("valibot").NonOptionalIssue | import("valibot").RfcEmailIssue<string>;
618
+ readonly issue: import("valibot").StringIssue | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string> | import("valibot").MaxLengthIssue<string, number> | import("valibot").NonOptionalIssue | import("valibot").RfcEmailIssue<string> | import("valibot").ObjectIssue;
619
619
  } | undefined;
620
620
  };
621
621
  readonly id: import("valibot").NonOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").NonEmptyAction<string, undefined>, import("valibot").MaxLengthAction<string, number, undefined>, import("valibot").BrandAction<string, "DraftId">]>, undefined>;
@@ -176,7 +176,7 @@ export declare const mutatorSchemas: {
176
176
  bcc: string[];
177
177
  cc: string[];
178
178
  to: string[];
179
- }, v.StringIssue | v.ArrayIssue | v.ObjectIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string>>;
179
+ }, v.StringIssue | v.ArrayIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string> | v.ObjectIssue>;
180
180
  readonly '~types'?: {
181
181
  readonly input: {
182
182
  subject: string | null;
@@ -190,7 +190,7 @@ export declare const mutatorSchemas: {
190
190
  cc: string[];
191
191
  to: string[];
192
192
  };
193
- readonly issue: v.StringIssue | v.ArrayIssue | v.ObjectIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string>;
193
+ readonly issue: v.StringIssue | v.ArrayIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string> | v.ObjectIssue;
194
194
  } | undefined;
195
195
  };
196
196
  readonly id: v.NonOptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.NonEmptyAction<string, undefined>, v.MaxLengthAction<string, number, undefined>, v.BrandAction<string, "DraftId">]>, undefined>;
@@ -30,7 +30,7 @@ export declare const setEnvelope: import("../../../../..").EndpointConfig<"/v1/p
30
30
  bcc: string[];
31
31
  cc: string[];
32
32
  to: string[];
33
- }, v.StringIssue | v.ArrayIssue | v.ObjectIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string>>;
33
+ }, v.StringIssue | v.ArrayIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string> | v.ObjectIssue>;
34
34
  readonly '~types'?: {
35
35
  readonly input: {
36
36
  subject: string | null;
@@ -44,7 +44,7 @@ export declare const setEnvelope: import("../../../../..").EndpointConfig<"/v1/p
44
44
  cc: string[];
45
45
  to: string[];
46
46
  };
47
- readonly issue: v.StringIssue | v.ArrayIssue | v.ObjectIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string>;
47
+ readonly issue: v.StringIssue | v.ArrayIssue | v.NonEmptyIssue<string> | v.MaxLengthIssue<string, number> | v.NonOptionalIssue | v.RfcEmailIssue<string> | v.ObjectIssue;
48
48
  } | undefined;
49
49
  };
50
50
  readonly id: v.NonOptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.NonEmptyAction<string, undefined>, v.MaxLengthAction<string, number, undefined>, v.BrandAction<string, "DraftId">]>, undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marcoappio/marco-config",
3
- "version": "2.0.576",
3
+ "version": "2.0.578",
4
4
  "author": "team@marcoapp.io",
5
5
  "main": "dist/index.js",
6
6
  "repository": "git@github.com:marcoappio/marco-config.git",