@ikatec/digisac-api-sdk 2.1.1 → 2.2.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/apis/contactBlockLists/types.d.ts +2 -1
- package/dist/apis/contactBlockLists/types.d.ts.map +1 -1
- package/dist/apis/contacts/ContactsApi.cjs +8 -0
- package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
- package/dist/apis/contacts/ContactsApi.d.ts +7 -1
- package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
- package/dist/apis/contacts/ContactsApi.mjs +8 -0
- package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
- package/dist/apis/contacts/types.d.ts +16 -0
- package/dist/apis/contacts/types.d.ts.map +1 -1
- package/dist/apis/departments/DepartmentsApi.cjs +2 -2
- package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
- package/dist/apis/departments/DepartmentsApi.d.ts +2 -2
- package/dist/apis/departments/DepartmentsApi.d.ts.map +1 -1
- package/dist/apis/departments/DepartmentsApi.mjs +2 -2
- package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
- package/dist/apis/departments/types.d.ts +1 -0
- package/dist/apis/departments/types.d.ts.map +1 -1
- package/dist/apis/kanbanBoards/types.d.ts +2 -0
- package/dist/apis/kanbanBoards/types.d.ts.map +1 -1
- package/dist/apis/services/ServicesApi.cjs +2 -2
- package/dist/apis/services/ServicesApi.cjs.map +1 -1
- package/dist/apis/services/ServicesApi.d.ts +2 -2
- package/dist/apis/services/ServicesApi.d.ts.map +1 -1
- package/dist/apis/services/ServicesApi.mjs +2 -2
- package/dist/apis/services/ServicesApi.mjs.map +1 -1
- package/dist/apis/services/types.d.ts +1 -0
- package/dist/apis/services/types.d.ts.map +1 -1
- package/dist/apis/tags/types.d.ts +2 -0
- package/dist/apis/tags/types.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs +17 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.cjs.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts +11 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.d.ts.map +1 -1
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs +17 -0
- package/dist/apis/ticketTopics/TicketTopicsApi.mjs.map +1 -1
- package/dist/apis/tickets/TicketsApi.cjs +11 -0
- package/dist/apis/tickets/TicketsApi.cjs.map +1 -1
- package/dist/apis/tickets/TicketsApi.d.ts +10 -1
- package/dist/apis/tickets/TicketsApi.d.ts.map +1 -1
- package/dist/apis/tickets/TicketsApi.mjs +11 -0
- package/dist/apis/tickets/TicketsApi.mjs.map +1 -1
- package/dist/apis/tickets/types.d.ts +18 -0
- package/dist/apis/tickets/types.d.ts.map +1 -1
- package/dist/apis/users/UsersApi.cjs +2 -2
- package/dist/apis/users/UsersApi.cjs.map +1 -1
- package/dist/apis/users/UsersApi.d.ts +2 -2
- package/dist/apis/users/UsersApi.d.ts.map +1 -1
- package/dist/apis/users/UsersApi.mjs +2 -2
- package/dist/apis/users/UsersApi.mjs.map +1 -1
- package/dist/apis/users/types.d.ts +1 -0
- package/dist/apis/users/types.d.ts.map +1 -1
- package/dist/core/ArchivableCrudApi.cjs +39 -0
- package/dist/core/ArchivableCrudApi.cjs.map +1 -0
- package/dist/core/ArchivableCrudApi.d.ts +31 -0
- package/dist/core/ArchivableCrudApi.d.ts.map +1 -0
- package/dist/core/ArchivableCrudApi.mjs +38 -0
- package/dist/core/ArchivableCrudApi.mjs.map +1 -0
- package/dist/core/BaseApiClient.cjs +12 -9
- package/dist/core/BaseApiClient.cjs.map +1 -1
- package/dist/core/BaseApiClient.d.ts.map +1 -1
- package/dist/core/BaseApiClient.mjs +12 -9
- package/dist/core/BaseApiClient.mjs.map +1 -1
- package/dist/core/BaseCrudApi.cjs +13 -0
- package/dist/core/BaseCrudApi.cjs.map +1 -1
- package/dist/core/BaseCrudApi.d.ts +6 -0
- package/dist/core/BaseCrudApi.d.ts.map +1 -1
- package/dist/core/BaseCrudApi.mjs +13 -0
- package/dist/core/BaseCrudApi.mjs.map +1 -1
- package/dist/core/index.cjs +2 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.mjs +2 -1
- package/dist/index.cjs +2 -0
- package/dist/index.mjs +2 -1
- package/package.json +1 -1
- package/src/apis/contactBlockLists/types.ts +2 -1
- package/src/apis/contacts/ContactsApi.test.ts +24 -0
- package/src/apis/contacts/ContactsApi.ts +18 -0
- package/src/apis/contacts/types.ts +17 -0
- package/src/apis/departments/DepartmentsApi.ts +2 -2
- package/src/apis/departments/types.ts +1 -0
- package/src/apis/kanbanBoards/types.ts +2 -0
- package/src/apis/services/ServicesApi.ts +6 -2
- package/src/apis/services/types.ts +1 -0
- package/src/apis/tags/types.ts +2 -0
- package/src/apis/ticketTopics/TicketTopicsApi.test.ts +58 -0
- package/src/apis/ticketTopics/TicketTopicsApi.ts +27 -0
- package/src/apis/tickets/TicketsApi.test.ts +64 -0
- package/src/apis/tickets/TicketsApi.ts +22 -1
- package/src/apis/tickets/types.ts +12 -0
- package/src/apis/users/UsersApi.ts +2 -2
- package/src/apis/users/types.ts +1 -0
- package/src/core/ArchivableCrudApi.test.ts +84 -0
- package/src/core/ArchivableCrudApi.ts +42 -0
- package/src/core/BaseApiClient.test.ts +41 -0
- package/src/core/BaseApiClient.ts +29 -16
- package/src/core/BaseCrudApi.test.ts +31 -0
- package/src/core/BaseCrudApi.ts +14 -0
- package/src/core/index.ts +1 -0
|
@@ -131,6 +131,37 @@ describe('BaseCrudApi', () => {
|
|
|
131
131
|
})
|
|
132
132
|
})
|
|
133
133
|
|
|
134
|
+
// ── getOne ───────────────────────────────────────────────────────
|
|
135
|
+
|
|
136
|
+
describe('getOne', () => {
|
|
137
|
+
it('requests limit 1 (non-paginated) and returns the first item', async () => {
|
|
138
|
+
const item: Item = { id: '1', name: 'Test' }
|
|
139
|
+
vi.mocked(client.get).mockResolvedValue([item])
|
|
140
|
+
|
|
141
|
+
const result = await api.getOne()
|
|
142
|
+
const calledUrl = vi.mocked(client.get).mock.calls.at(0)?.at(0) as string
|
|
143
|
+
expect(calledUrl).toContain('/items?')
|
|
144
|
+
expect(calledUrl).toContain('limit=1')
|
|
145
|
+
expect(calledUrl).toContain('paginate=false')
|
|
146
|
+
expect(result).toEqual(item)
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('returns null when no records match', async () => {
|
|
150
|
+
vi.mocked(client.get).mockResolvedValue([])
|
|
151
|
+
|
|
152
|
+
const result = await api.getOne({ where: { name: 'missing' } })
|
|
153
|
+
expect(result).toBeNull()
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
it('forwards custom headers', async () => {
|
|
157
|
+
vi.mocked(client.get).mockResolvedValue([])
|
|
158
|
+
const headers = { 'X-Custom': 'value' }
|
|
159
|
+
|
|
160
|
+
await api.getOne(undefined, headers)
|
|
161
|
+
expect(vi.mocked(client.get).mock.calls.at(0)?.at(1)).toEqual(headers)
|
|
162
|
+
})
|
|
163
|
+
})
|
|
164
|
+
|
|
134
165
|
// ── getById ──────────────────────────────────────────────────────
|
|
135
166
|
|
|
136
167
|
describe('getById', () => {
|
package/src/core/BaseCrudApi.ts
CHANGED
|
@@ -28,6 +28,7 @@ export class BaseCrudApi<
|
|
|
28
28
|
this.client = client
|
|
29
29
|
this.basePath = basePath.replace(/\/$/, '')
|
|
30
30
|
this.getMany = this.getMany.bind(this)
|
|
31
|
+
this.getOne = this.getOne.bind(this)
|
|
31
32
|
this.getById = this.getById.bind(this)
|
|
32
33
|
this.create = this.create.bind(this)
|
|
33
34
|
this.updateById = this.updateById.bind(this)
|
|
@@ -53,6 +54,19 @@ export class BaseCrudApi<
|
|
|
53
54
|
)
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns the first resource matching the query, or `null` when none match.
|
|
59
|
+
* Convenience over `getMany` with `limit: 1`.
|
|
60
|
+
* @permissions $resourceName.view
|
|
61
|
+
*/
|
|
62
|
+
async getOne(query?: TQuery, headers?: Record<string, string>): Promise<TResponse | null> {
|
|
63
|
+
const results = await this.getMany(
|
|
64
|
+
{ ...query, limit: 1, paginate: false } as TQuery & { paginate: false },
|
|
65
|
+
headers,
|
|
66
|
+
)
|
|
67
|
+
return results[0] ?? null
|
|
68
|
+
}
|
|
69
|
+
|
|
56
70
|
/**
|
|
57
71
|
* Returns a single resource by ID.
|
|
58
72
|
* @permissions $resourceName.view
|
package/src/core/index.ts
CHANGED
|
@@ -2,4 +2,5 @@ export type { ApiClient, HttpMethod } from './ApiClient'
|
|
|
2
2
|
export { BaseApiClient, ApiError } from './BaseApiClient'
|
|
3
3
|
export type { ValidationError } from './BaseApiClient'
|
|
4
4
|
export { BaseCrudApi } from './BaseCrudApi'
|
|
5
|
+
export { ArchivableCrudApi } from './ArchivableCrudApi'
|
|
5
6
|
export type { WhereClause, IncludeItem, ListQuery, GetByIdQuery, Paginated } from './types'
|