@owlrelay/api-sdk 0.0.1 → 0.0.2

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/index.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const ofetch = require('ofetch');
4
4
 
5
- const version = "0.0.1";
5
+ const version = "0.0.2";
6
6
 
7
7
  function createApiClient({ apiKey, baseApiUrl }) {
8
8
  const apiClient = ofetch.ofetch.create({
@@ -24,6 +24,15 @@ function coerceDate(obj) {
24
24
  updatedAt: new Date(obj.updatedAt)
25
25
  };
26
26
  }
27
+ function getEmailIdentifier(args) {
28
+ if ("emailId" in args) {
29
+ return { emailIdentifier: args.emailId };
30
+ }
31
+ if ("emailAddress" in args) {
32
+ return { emailIdentifier: args.emailAddress };
33
+ }
34
+ return { emailIdentifier: `${args.username}@${args.domain}` };
35
+ }
27
36
 
28
37
  const OWLRELAY_API_BASE_URL = "https://api.owlrelay.email";
29
38
  function createClient({
@@ -59,10 +68,9 @@ function createClient({
59
68
  });
60
69
  return coerceDate(emailCallback);
61
70
  },
62
- deleteEmail: async ({ emailId }) => {
63
- return await apiClient(`/api/email-callbacks/${emailId}`, {
64
- method: "DELETE"
65
- });
71
+ deleteEmail: async (args) => {
72
+ const { emailIdentifier } = getEmailIdentifier(args);
73
+ await apiClient(`/api/email-callbacks/${emailIdentifier}`, { method: "DELETE" });
66
74
  },
67
75
  getEmail: async ({ emailId }) => {
68
76
  const { emailCallback } = await apiClient(`/api/email-callbacks/${emailId}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/api.ts","../src/api.models.ts","../src/index.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { version } from '../package.json';\n\nexport function createApiClient({ apiKey, baseApiUrl }: { apiKey: string; baseApiUrl: string }) {\n const apiClient = ofetch.create({\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'X-OwlRelay-Source': `owlrelay-api-sdk-javascript/${version}`,\n },\n baseURL: baseApiUrl,\n });\n\n return {\n apiClient,\n };\n}\n","export function coerceDate<T extends { createdAt: string; updatedAt: string }>(\n obj: T,\n): T & { createdAt: Date; updatedAt: Date } {\n return {\n ...obj,\n createdAt: new Date(obj.createdAt),\n updatedAt: new Date(obj.updatedAt),\n } as T & { createdAt: Date; updatedAt: Date };\n}\n","import { createApiClient } from './api';\nimport { coerceDate } from './api.models';\n\nexport const OWLRELAY_API_BASE_URL = 'https://api.owlrelay.email';\n\n type AsDto<T> = {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n };\n\nexport type OwlRelayEmail = {\n id: string;\n domain: string;\n username: string;\n webhookUrl: string;\n webhookSecret: string;\n isEnabled: boolean;\n allowedOrigins: string[];\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type OwlRelayEmailProcessing = {\n id: string;\n emailId: string;\n status: string;\n error?: string;\n fromAddress: string;\n subject: string;\n webhookUrl?: string;\n webhookResponseStatusCode?: number;\n\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport function createClient({\n apiKey,\n baseApiUrl = OWLRELAY_API_BASE_URL,\n}: {\n apiKey: string;\n baseApiUrl?: string;\n}) {\n const { apiClient } = createApiClient({ apiKey, baseApiUrl });\n\n const updateEmail = async ({ emailId, ...body }: { emailId: string } & Partial<Omit<OwlRelayEmail, 'id' | 'createdAt' | 'updatedAt'>>): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'PUT',\n body,\n });\n\n return coerceDate(emailCallback);\n };\n\n return {\n updateEmail,\n\n enableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: true });\n },\n\n disableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: false });\n },\n\n getEmails: async (): Promise<OwlRelayEmail[]> => {\n const { emailCallbacks } = await apiClient<{ emailCallbacks: AsDto<OwlRelayEmail>[] }>('/api/email-callbacks', {\n method: 'GET',\n });\n\n return emailCallbacks.map(coerceDate);\n },\n\n createEmail: async (body: {\n domain?: string;\n username: string;\n webhookUrl: string;\n webhookSecret?: string;\n allowedOrigins?: string[];\n }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>('/api/email-callbacks', {\n method: 'POST',\n body,\n });\n\n return coerceDate(emailCallback);\n },\n\n deleteEmail: async ({ emailId }: { emailId: string }) => {\n return await apiClient<void>(`/api/email-callbacks/${emailId}`, {\n method: 'DELETE',\n });\n },\n\n getEmail: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'GET',\n });\n\n return coerceDate(emailCallback);\n },\n\n getEmailProcessings: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmailProcessing[]> => {\n const { processings } = await apiClient<{ processings: AsDto<OwlRelayEmailProcessing>[] }>(`/api/email-callbacks/${emailId}/processings`, {\n method: 'GET',\n });\n\n return processings.map(coerceDate);\n },\n };\n}\n"],"names":["ofetch"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/api.ts","../src/api.models.ts","../src/index.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { version } from '../package.json';\n\nexport function createApiClient({ apiKey, baseApiUrl }: { apiKey: string; baseApiUrl: string }) {\n const apiClient = ofetch.create({\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'X-OwlRelay-Source': `owlrelay-api-sdk-javascript/${version}`,\n },\n baseURL: baseApiUrl,\n });\n\n return {\n apiClient,\n };\n}\n","export function coerceDate<T extends { createdAt: string; updatedAt: string }>(\n obj: T,\n): T & { createdAt: Date; updatedAt: Date } {\n return {\n ...obj,\n createdAt: new Date(obj.createdAt),\n updatedAt: new Date(obj.updatedAt),\n } as T & { createdAt: Date; updatedAt: Date };\n}\n\nexport function getEmailIdentifier(args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) {\n if ('emailId' in args) {\n return { emailIdentifier: args.emailId };\n }\n\n if ('emailAddress' in args) {\n return { emailIdentifier: args.emailAddress };\n }\n\n return { emailIdentifier: `${args.username}@${args.domain}` };\n}\n","import { createApiClient } from './api';\nimport { coerceDate, getEmailIdentifier } from './api.models';\n\nexport const OWLRELAY_API_BASE_URL = 'https://api.owlrelay.email';\n\n type AsDto<T> = {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n };\n\nexport type OwlRelayEmail = {\n id: string;\n domain: string;\n username: string;\n webhookUrl: string;\n webhookSecret: string;\n isEnabled: boolean;\n allowedOrigins: string[];\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type OwlRelayEmailProcessing = {\n id: string;\n emailId: string;\n status: string;\n error?: string;\n fromAddress: string;\n subject: string;\n webhookUrl?: string;\n webhookResponseStatusCode?: number;\n\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport function createClient({\n apiKey,\n baseApiUrl = OWLRELAY_API_BASE_URL,\n}: {\n apiKey: string;\n baseApiUrl?: string;\n}) {\n const { apiClient } = createApiClient({ apiKey, baseApiUrl });\n\n const updateEmail = async ({ emailId, ...body }: { emailId: string } & Partial<Omit<OwlRelayEmail, 'id' | 'createdAt' | 'updatedAt'>>): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'PUT',\n body,\n });\n\n return coerceDate(emailCallback);\n };\n\n return {\n updateEmail,\n\n enableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: true });\n },\n\n disableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: false });\n },\n\n getEmails: async (): Promise<OwlRelayEmail[]> => {\n const { emailCallbacks } = await apiClient<{ emailCallbacks: AsDto<OwlRelayEmail>[] }>('/api/email-callbacks', {\n method: 'GET',\n });\n\n return emailCallbacks.map(coerceDate);\n },\n\n createEmail: async (body: {\n domain?: string;\n username: string;\n webhookUrl: string;\n webhookSecret?: string;\n allowedOrigins?: string[];\n }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>('/api/email-callbacks', {\n method: 'POST',\n body,\n });\n\n return coerceDate(emailCallback);\n },\n\n deleteEmail: async (args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) => {\n const { emailIdentifier } = getEmailIdentifier(args);\n\n await apiClient(`/api/email-callbacks/${emailIdentifier}`, { method: 'DELETE' });\n },\n\n getEmail: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'GET',\n });\n\n return coerceDate(emailCallback);\n },\n\n getEmailProcessings: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmailProcessing[]> => {\n const { processings } = await apiClient<{ processings: AsDto<OwlRelayEmailProcessing>[] }>(`/api/email-callbacks/${emailId}/processings`, {\n method: 'GET',\n });\n\n return processings.map(coerceDate);\n },\n };\n}\n"],"names":["ofetch"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -43,9 +43,14 @@ declare function createClient({ apiKey, baseApiUrl, }: {
43
43
  webhookSecret?: string;
44
44
  allowedOrigins?: string[];
45
45
  }) => Promise<OwlRelayEmail>;
46
- deleteEmail: ({ emailId }: {
46
+ deleteEmail: (args: {
47
47
  emailId: string;
48
- }) => Promise<any>;
48
+ } | {
49
+ emailAddress: string;
50
+ } | {
51
+ username: string;
52
+ domain: string;
53
+ }) => Promise<void>;
49
54
  getEmail: ({ emailId }: {
50
55
  emailId: string;
51
56
  }) => Promise<OwlRelayEmail>;
package/dist/index.d.mts CHANGED
@@ -43,9 +43,14 @@ declare function createClient({ apiKey, baseApiUrl, }: {
43
43
  webhookSecret?: string;
44
44
  allowedOrigins?: string[];
45
45
  }) => Promise<OwlRelayEmail>;
46
- deleteEmail: ({ emailId }: {
46
+ deleteEmail: (args: {
47
47
  emailId: string;
48
- }) => Promise<any>;
48
+ } | {
49
+ emailAddress: string;
50
+ } | {
51
+ username: string;
52
+ domain: string;
53
+ }) => Promise<void>;
49
54
  getEmail: ({ emailId }: {
50
55
  emailId: string;
51
56
  }) => Promise<OwlRelayEmail>;
package/dist/index.d.ts CHANGED
@@ -43,9 +43,14 @@ declare function createClient({ apiKey, baseApiUrl, }: {
43
43
  webhookSecret?: string;
44
44
  allowedOrigins?: string[];
45
45
  }) => Promise<OwlRelayEmail>;
46
- deleteEmail: ({ emailId }: {
46
+ deleteEmail: (args: {
47
47
  emailId: string;
48
- }) => Promise<any>;
48
+ } | {
49
+ emailAddress: string;
50
+ } | {
51
+ username: string;
52
+ domain: string;
53
+ }) => Promise<void>;
49
54
  getEmail: ({ emailId }: {
50
55
  emailId: string;
51
56
  }) => Promise<OwlRelayEmail>;
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ofetch } from 'ofetch';
2
2
 
3
- const version = "0.0.1";
3
+ const version = "0.0.2";
4
4
 
5
5
  function createApiClient({ apiKey, baseApiUrl }) {
6
6
  const apiClient = ofetch.create({
@@ -22,6 +22,15 @@ function coerceDate(obj) {
22
22
  updatedAt: new Date(obj.updatedAt)
23
23
  };
24
24
  }
25
+ function getEmailIdentifier(args) {
26
+ if ("emailId" in args) {
27
+ return { emailIdentifier: args.emailId };
28
+ }
29
+ if ("emailAddress" in args) {
30
+ return { emailIdentifier: args.emailAddress };
31
+ }
32
+ return { emailIdentifier: `${args.username}@${args.domain}` };
33
+ }
25
34
 
26
35
  const OWLRELAY_API_BASE_URL = "https://api.owlrelay.email";
27
36
  function createClient({
@@ -57,10 +66,9 @@ function createClient({
57
66
  });
58
67
  return coerceDate(emailCallback);
59
68
  },
60
- deleteEmail: async ({ emailId }) => {
61
- return await apiClient(`/api/email-callbacks/${emailId}`, {
62
- method: "DELETE"
63
- });
69
+ deleteEmail: async (args) => {
70
+ const { emailIdentifier } = getEmailIdentifier(args);
71
+ await apiClient(`/api/email-callbacks/${emailIdentifier}`, { method: "DELETE" });
64
72
  },
65
73
  getEmail: async ({ emailId }) => {
66
74
  const { emailCallback } = await apiClient(`/api/email-callbacks/${emailId}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/api.ts","../src/api.models.ts","../src/index.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { version } from '../package.json';\n\nexport function createApiClient({ apiKey, baseApiUrl }: { apiKey: string; baseApiUrl: string }) {\n const apiClient = ofetch.create({\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'X-OwlRelay-Source': `owlrelay-api-sdk-javascript/${version}`,\n },\n baseURL: baseApiUrl,\n });\n\n return {\n apiClient,\n };\n}\n","export function coerceDate<T extends { createdAt: string; updatedAt: string }>(\n obj: T,\n): T & { createdAt: Date; updatedAt: Date } {\n return {\n ...obj,\n createdAt: new Date(obj.createdAt),\n updatedAt: new Date(obj.updatedAt),\n } as T & { createdAt: Date; updatedAt: Date };\n}\n","import { createApiClient } from './api';\nimport { coerceDate } from './api.models';\n\nexport const OWLRELAY_API_BASE_URL = 'https://api.owlrelay.email';\n\n type AsDto<T> = {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n };\n\nexport type OwlRelayEmail = {\n id: string;\n domain: string;\n username: string;\n webhookUrl: string;\n webhookSecret: string;\n isEnabled: boolean;\n allowedOrigins: string[];\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type OwlRelayEmailProcessing = {\n id: string;\n emailId: string;\n status: string;\n error?: string;\n fromAddress: string;\n subject: string;\n webhookUrl?: string;\n webhookResponseStatusCode?: number;\n\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport function createClient({\n apiKey,\n baseApiUrl = OWLRELAY_API_BASE_URL,\n}: {\n apiKey: string;\n baseApiUrl?: string;\n}) {\n const { apiClient } = createApiClient({ apiKey, baseApiUrl });\n\n const updateEmail = async ({ emailId, ...body }: { emailId: string } & Partial<Omit<OwlRelayEmail, 'id' | 'createdAt' | 'updatedAt'>>): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'PUT',\n body,\n });\n\n return coerceDate(emailCallback);\n };\n\n return {\n updateEmail,\n\n enableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: true });\n },\n\n disableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: false });\n },\n\n getEmails: async (): Promise<OwlRelayEmail[]> => {\n const { emailCallbacks } = await apiClient<{ emailCallbacks: AsDto<OwlRelayEmail>[] }>('/api/email-callbacks', {\n method: 'GET',\n });\n\n return emailCallbacks.map(coerceDate);\n },\n\n createEmail: async (body: {\n domain?: string;\n username: string;\n webhookUrl: string;\n webhookSecret?: string;\n allowedOrigins?: string[];\n }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>('/api/email-callbacks', {\n method: 'POST',\n body,\n });\n\n return coerceDate(emailCallback);\n },\n\n deleteEmail: async ({ emailId }: { emailId: string }) => {\n return await apiClient<void>(`/api/email-callbacks/${emailId}`, {\n method: 'DELETE',\n });\n },\n\n getEmail: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'GET',\n });\n\n return coerceDate(emailCallback);\n },\n\n getEmailProcessings: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmailProcessing[]> => {\n const { processings } = await apiClient<{ processings: AsDto<OwlRelayEmailProcessing>[] }>(`/api/email-callbacks/${emailId}/processings`, {\n method: 'GET',\n });\n\n return processings.map(coerceDate);\n },\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/api.ts","../src/api.models.ts","../src/index.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { version } from '../package.json';\n\nexport function createApiClient({ apiKey, baseApiUrl }: { apiKey: string; baseApiUrl: string }) {\n const apiClient = ofetch.create({\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'X-OwlRelay-Source': `owlrelay-api-sdk-javascript/${version}`,\n },\n baseURL: baseApiUrl,\n });\n\n return {\n apiClient,\n };\n}\n","export function coerceDate<T extends { createdAt: string; updatedAt: string }>(\n obj: T,\n): T & { createdAt: Date; updatedAt: Date } {\n return {\n ...obj,\n createdAt: new Date(obj.createdAt),\n updatedAt: new Date(obj.updatedAt),\n } as T & { createdAt: Date; updatedAt: Date };\n}\n\nexport function getEmailIdentifier(args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) {\n if ('emailId' in args) {\n return { emailIdentifier: args.emailId };\n }\n\n if ('emailAddress' in args) {\n return { emailIdentifier: args.emailAddress };\n }\n\n return { emailIdentifier: `${args.username}@${args.domain}` };\n}\n","import { createApiClient } from './api';\nimport { coerceDate, getEmailIdentifier } from './api.models';\n\nexport const OWLRELAY_API_BASE_URL = 'https://api.owlrelay.email';\n\n type AsDto<T> = {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n };\n\nexport type OwlRelayEmail = {\n id: string;\n domain: string;\n username: string;\n webhookUrl: string;\n webhookSecret: string;\n isEnabled: boolean;\n allowedOrigins: string[];\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type OwlRelayEmailProcessing = {\n id: string;\n emailId: string;\n status: string;\n error?: string;\n fromAddress: string;\n subject: string;\n webhookUrl?: string;\n webhookResponseStatusCode?: number;\n\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport function createClient({\n apiKey,\n baseApiUrl = OWLRELAY_API_BASE_URL,\n}: {\n apiKey: string;\n baseApiUrl?: string;\n}) {\n const { apiClient } = createApiClient({ apiKey, baseApiUrl });\n\n const updateEmail = async ({ emailId, ...body }: { emailId: string } & Partial<Omit<OwlRelayEmail, 'id' | 'createdAt' | 'updatedAt'>>): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'PUT',\n body,\n });\n\n return coerceDate(emailCallback);\n };\n\n return {\n updateEmail,\n\n enableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: true });\n },\n\n disableEmail: async ({ emailId }: { emailId: string }) => {\n return updateEmail({ emailId, isEnabled: false });\n },\n\n getEmails: async (): Promise<OwlRelayEmail[]> => {\n const { emailCallbacks } = await apiClient<{ emailCallbacks: AsDto<OwlRelayEmail>[] }>('/api/email-callbacks', {\n method: 'GET',\n });\n\n return emailCallbacks.map(coerceDate);\n },\n\n createEmail: async (body: {\n domain?: string;\n username: string;\n webhookUrl: string;\n webhookSecret?: string;\n allowedOrigins?: string[];\n }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>('/api/email-callbacks', {\n method: 'POST',\n body,\n });\n\n return coerceDate(emailCallback);\n },\n\n deleteEmail: async (args: { emailId: string } | { emailAddress: string } | { username: string; domain: string }) => {\n const { emailIdentifier } = getEmailIdentifier(args);\n\n await apiClient(`/api/email-callbacks/${emailIdentifier}`, { method: 'DELETE' });\n },\n\n getEmail: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmail> => {\n const { emailCallback } = await apiClient<{ emailCallback: AsDto<OwlRelayEmail> }>(`/api/email-callbacks/${emailId}`, {\n method: 'GET',\n });\n\n return coerceDate(emailCallback);\n },\n\n getEmailProcessings: async ({ emailId }: { emailId: string }): Promise<OwlRelayEmailProcessing[]> => {\n const { processings } = await apiClient<{ processings: AsDto<OwlRelayEmailProcessing>[] }>(`/api/email-callbacks/${emailId}/processings`, {\n method: 'GET',\n });\n\n return processings.map(coerceDate);\n },\n };\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@owlrelay/api-sdk",
3
3
  "type": "module",
4
- "version": "0.0.1",
4
+ "version": "0.0.2",
5
5
  "description": "OwlRelay API SDK for JavaScript and TypeScript",
6
6
  "author": "OwlRelay <hello@owlrelay.email> (https://owlrelay.email)",
7
7
  "license": "AGPL-3.0",
@@ -57,6 +57,6 @@
57
57
  "test:unit": "vitest run",
58
58
  "test:unit:watch": "vitest watch",
59
59
  "typecheck": "tsc --noEmit",
60
- "release": "bumpp --commit --tag --push"
60
+ "release": "bumpp --commit=\"chore(api-sdk): release v%s\" --tag=\"@owlrelay/api-sdk@%s\" --push"
61
61
  }
62
62
  }