@pliancy/timelyapp-sdk 6.1.0 → 6.1.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.
@@ -1,13 +1,18 @@
1
1
  import { AxiosInstance } from 'axios';
2
- import { AddTimelyProject, TimelyAppConfig, TimelyProject } from '../types';
2
+ import { AddTimelyProject, TimelyAppConfig, TimelyProject, TimelyProjectSummary } from '../types';
3
3
  export declare class Projects {
4
4
  private readonly http;
5
5
  private readonly config;
6
6
  constructor(http: AxiosInstance, config: TimelyAppConfig);
7
- getAll(filter?: 'active' | 'all' | 'mine' | 'archived'): Promise<TimelyProject[]>;
8
- getArchived(): Promise<TimelyProject[]>;
7
+ getAll(state?: 'active' | 'all' | 'mine', includeTotals?: true): Promise<TimelyProject[]>;
8
+ getAll(state: 'active' | 'all' | 'mine' | undefined, includeTotals: false): Promise<TimelyProjectSummary[]>;
9
+ getArchived(includeTotals?: false): Promise<TimelyProjectSummary[]>;
10
+ getArchived(includeTotals: true): Promise<TimelyProject[]>;
9
11
  getById(projectId: number): Promise<TimelyProject>;
10
- getByExternalId(externalId: string): Promise<TimelyProject[]>;
12
+ getByExternalId(externalId: string, includeTotals?: true): Promise<TimelyProject[]>;
13
+ getByExternalId(externalId: string, includeTotals: false): Promise<TimelyProjectSummary[]>;
14
+ getByProjectIds(projectIds: number[], includeTotals?: true): Promise<TimelyProject[]>;
15
+ getByProjectIds(projectIds: number[], includeTotals: false): Promise<TimelyProjectSummary[]>;
11
16
  add(project: AddTimelyProject): Promise<TimelyProject>;
12
17
  remove(projectId: number): Promise<{}>;
13
18
  update(projectId: number, project: Partial<TimelyProject>): Promise<TimelyProject>;
@@ -6,23 +6,25 @@ class Projects {
6
6
  this.http = http;
7
7
  this.config = config;
8
8
  }
9
- async getAll(filter) {
10
- const { data } = await this.http.get(`/${this.config.accountId}/projects?filter=${filter !== null && filter !== void 0 ? filter : 'active'} `);
9
+ async getAll(state, includeTotals = true) {
10
+ const { data } = await this.http.get(`/${this.config.accountId}/projects?state=${state !== null && state !== void 0 ? state : 'active'}&totals=${includeTotals}`);
11
11
  return data;
12
12
  }
13
- async getArchived() {
14
- const { data } = await this.http.get(`/${this.config.accountId}/projects?filter=archived`);
13
+ async getArchived(includeTotals = false) {
14
+ const { data } = await this.http.get(`/${this.config.accountId}/projects?state=archived&totals=${includeTotals}`);
15
15
  return data;
16
16
  }
17
17
  async getById(projectId) {
18
18
  const { data } = await this.http.get(`/${this.config.accountId}/projects/${projectId}`);
19
19
  return data;
20
20
  }
21
- async getByExternalId(externalId) {
22
- const projects = await this.getAll();
23
- if (!(projects && projects.length))
24
- return [];
25
- return projects.filter((e) => (e === null || e === void 0 ? void 0 : e.external_id) === externalId);
21
+ async getByExternalId(externalId, includeTotals = true) {
22
+ const { data: projects } = await this.http.get(`/${this.config.accountId}/projects?state=active&external_ids=${externalId}&totals=${includeTotals}`);
23
+ return projects;
24
+ }
25
+ async getByProjectIds(projectIds, includeTotals = true) {
26
+ const { data: projects } = await this.http.get(`/${this.config.accountId}/projects?state=active&ids=${projectIds.join(',')}&totals=${includeTotals}`);
27
+ return projects;
26
28
  }
27
29
  async add(project) {
28
30
  const { data } = await this.http.post(`/${this.config.accountId}/projects`, { project });
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/lib/projects/projects.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IACjB,YACqB,IAAmB,EACnB,MAAuB;QADvB,SAAI,GAAJ,IAAI,CAAe;QACnB,WAAM,GAAN,MAAM,CAAiB;IACzC,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,MAA+C;QACxD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAChC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,oBAAoB,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,QAAQ,GAAG,CACrE,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,2BAA2B,CAAC,CAAA;QAC1F,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACpC,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,WAAW,MAAK,UAAU,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAyB;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QACxF,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,CAAC,CAAA;QAC1F,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAA+B;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,EAAE;YACpF,OAAO;SACV,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AA7CD,4BA6CC"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/lib/projects/projects.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IACjB,YACqB,IAAmB,EACnB,MAAuB;QADvB,SAAI,GAAJ,IAAI,CAAe;QACnB,WAAM,GAAN,MAAM,CAAiB;IACzC,CAAC;IAkBJ,KAAK,CAAC,MAAM,CACR,KAAiC,EACjC,gBAAyB,IAAI;QAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAChC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,mBAAmB,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,QAAQ,WAAW,aAAa,EAAE,CAC1F,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAUD,KAAK,CAAC,WAAW,CACb,gBAAyB,KAAK;QAE9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAChC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,mCAAmC,aAAa,EAAE,CAC9E,CAAA;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACf,CAAC;IAUD,KAAK,CAAC,eAAe,CACjB,UAAkB,EAClB,gBAAyB,IAAI;QAE7B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,uCAAuC,UAAU,WAAW,aAAa,EAAE,CACvG,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAaD,KAAK,CAAC,eAAe,CACjB,UAAoB,EACpB,gBAAyB,IAAI;QAE7B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,8BAA8B,UAAU,CAAC,IAAI,CAClE,GAAG,CACN,WAAW,aAAa,EAAE,CAC9B,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAyB;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QACxF,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,CAAC,CAAA;QAC1F,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAA+B;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,SAAS,EAAE,EAAE;YACpF,OAAO;SACV,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AA/GD,4BA+GC"}
package/lib/types.d.ts CHANGED
@@ -128,7 +128,7 @@ export interface TimelyLabel {
128
128
  active: boolean;
129
129
  children: TimelyLabel[];
130
130
  }
131
- export interface TimelyProject {
131
+ export interface TimelyProjectBase {
132
132
  id: number;
133
133
  active: boolean;
134
134
  account_id: number;
@@ -149,12 +149,14 @@ export interface TimelyProject {
149
149
  budget_type: string;
150
150
  hour_rate: number;
151
151
  hour_rate_in_cents: number;
152
- budget_progress: number;
153
- budget_percent: number;
154
152
  users: TimelyProjectUser[];
155
153
  labels: TimelyProjectLabel[];
156
154
  label_ids: number[];
157
155
  required_label_ids: number[];
156
+ }
157
+ export interface TimelyProject extends TimelyProjectBase {
158
+ budget_progress: number;
159
+ budget_percent: number;
158
160
  cost: TimelyProjectCost;
159
161
  estimated_cost: TimelyProjectCost;
160
162
  duration: TimelyProjectDuration;
@@ -164,6 +166,7 @@ export interface TimelyProject {
164
166
  unbilled_cost: TimelyProjectCost;
165
167
  unbilled_duration: TimelyProjectDuration;
166
168
  }
169
+ export type TimelyProjectSummary = TimelyProjectBase;
167
170
  export interface TimelyProjectDuration {
168
171
  hours: number;
169
172
  minutes: number;
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "npm-run-all2": "5.0.0",
26
26
  "pinst": "3.0.0",
27
27
  "rimraf": "5.0.5",
28
- "semantic-release": "23.0.2",
28
+ "semantic-release": "25.0.5",
29
29
  "ts-jest": "29.1.2",
30
30
  "ts-node": "10.9.2",
31
31
  "typescript": "5.4.2"
@@ -54,7 +54,7 @@
54
54
  "tsc": "tsc -p tsconfig.build.json"
55
55
  },
56
56
  "types": "index.d.ts",
57
- "version": "6.1.0",
57
+ "version": "6.1.2",
58
58
  "volta": {
59
59
  "node": "24.16.0",
60
60
  "yarn": "1.22.21"