Skip to content

Commit

Permalink
feat(NOJIRA-123): Patch type improvements (#118)
Browse files Browse the repository at this point in the history
* feat(types): tighten definition for PATCH operations

* fix(types): forms.update type for patch operations
  • Loading branch information
gurpreetatwal authored Feb 19, 2024
1 parent efc8e11 commit 2a92dc5
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 12 deletions.
20 changes: 16 additions & 4 deletions src/forms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,23 @@ export class Forms {
return request(page, pageSize)
}

public update(args: {
public update<T extends boolean>(args: {
uid: string
override?: boolean
data: Typeform.Form
}): Promise<Typeform.Form> {
override?: T
data: T extends true
? Typeform.Form
: Typeform.API.PATCH<
| '/settings/facebook_pixel'
| '/settings/google_analytics'
| '/settings/google_tag_manager'
| '/settings/is_public'
| '/settings/meta'
| '/cui_settings'
| '/theme'
| '/title'
| '/workspace'
>[]
}): Promise<T extends true ? Typeform.Form : null> {
const { uid, override, data } = args
const methodType = override ? 'put' : 'patch'

Expand Down
6 changes: 3 additions & 3 deletions src/typeform-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ export namespace Typeform {
items: Workspace[]
}
}
export interface PATCH {
op: string
path: string
export interface PATCH<T extends string> {
op: 'add' | 'remove' | 'replace'
path: T
value: any
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { Typeform } from './typeform-types'

export const createMemberPatchQuery = (
members: string[],
operation: string
): Typeform.API.PATCH[] => {
operation: Typeform.API.PATCH<'/members'>['op']
): Typeform.API.PATCH<'/members'>[] => {
return members.map((member) => ({
op: operation,
path: '/members',
Expand Down
6 changes: 3 additions & 3 deletions src/workspaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ export class Workspaces {

public update(args: {
id: string
data: Typeform.API.PATCH[]
data: Typeform.API.PATCH<'/name' | '/members'>[]
}): Promise<null> {
const { id, data } = args

Expand All @@ -109,9 +109,9 @@ export class Workspaces {
}

const addOrRemoveMembers = (
operation: string,
operation: Typeform.API.PATCH<'/members'>['op'],
members: string | string[]
): Typeform.API.PATCH[] => {
): Typeform.API.PATCH<'/members'>[] => {
if (!isMemberPropValid(members)) {
throw new Error(`No member(s) provided`)
}
Expand Down

0 comments on commit 2a92dc5

Please sign in to comment.