UNPKG

ee-ts-util

Version:

typescript utilities and functions

49 lines 2.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const fetch = require("isomorphic-fetch"); const Option_1 = require("fp-ts/lib/Option"); const common_1 = require("./common"); var ProjectState; (function (ProjectState) { ProjectState["INTERNAL"] = "Internal"; ProjectState["TENTATIVE"] = "Tentative"; ProjectState["CONFIRMED"] = "Confirmed"; })(ProjectState = exports.ProjectState || (exports.ProjectState = {})); exports.UNDEFINED_PROJECT = { id: -1, name: "[#UNDEF]", state: "[#UNDEF]" }; exports.buildFetchProjectInfoAdapter = (baseUrl, token) => (projectId) => fetch(`${baseUrl}/api/v1/projects/${projectId}`, { headers: new Headers({ "content-type": "application/json", "auth": token }), }).then((response) => (response.json().then(toProjectInfo))); exports.buildFetchPhasesAdapter = (baseUrl, token) => (projectId) => __awaiter(this, void 0, void 0, function* () { return common_1.fetchPageData(baseUrl, `/api/v1/projects/${projectId}/phases?fields=budget_items&per_page=${PHASES_FOR_PAGE}`, token, [], toPhaseDto); }); const toProjectInfo = (resp) => ({ id: resp.id, parentId: resp.parent_id, name: resp.name, state: resp.project_state, billable: resp.project_state !== undefined && resp.project_state !== ProjectState.INTERNAL, clientName: resp.client, startDate: resp.starts_at, endDate: resp.ends_at, }); const toPhaseDto = (resp) => ({ id: resp.id, projectName: resp.name, phaseName: resp.phase_name, budgetItems: toBudgetItemsDto(resp.budget_items.data), }); const toBudgetItemsDto = (maybeBudgetItems) => fromEmpty(maybeBudgetItems).fold(() => ({ category: "" }), (budgetItems) => ({ category: budgetItems[0].category })); // This is DUPLICATED in timeEntryAdapter const fromEmpty = (maybeArray) => { return Option_1.fromNullable(maybeArray).fold(() => Option_1.none, (array) => array.length === 0 ? Option_1.none : Option_1.some(array)); }; const PHASES_FOR_PAGE = 50; //# sourceMappingURL=projectAdapter.js.map