UNPKG

@lineai/gov-deals

Version:

Explore Federal contracts for government building renovations, city hall renovations, courthouse updates, library modernizations, federal building improvement contracts, base housing and facilities upgrades.

237 lines 13.1 kB
/** * Configuration constants for the gov-deals package * These values can be updated as the SAM.gov API evolves */ import { z } from 'zod'; /** * SAM.gov Opportunity Type Codes * Source: SAM.gov API Documentation * Last verified: 2024 */ export const OPPORTUNITY_TYPES = { PRESOLICITATION: 'p', SOLICITATION: 'o', AWARD_NOTICE: 'a', INTENT_TO_BUNDLE: 'i', JUSTIFICATION: 'u', SOURCES_SOUGHT: 'r', SPECIAL_NOTICE: 's', COMBINED_SYNOPSIS: 'k', SALE_OF_SURPLUS: 'g', }; // Zod schema for runtime validation export const OpportunityTypeSchema = z.enum([ OPPORTUNITY_TYPES.PRESOLICITATION, OPPORTUNITY_TYPES.SOLICITATION, OPPORTUNITY_TYPES.AWARD_NOTICE, OPPORTUNITY_TYPES.INTENT_TO_BUNDLE, OPPORTUNITY_TYPES.JUSTIFICATION, OPPORTUNITY_TYPES.SOURCES_SOUGHT, OPPORTUNITY_TYPES.SPECIAL_NOTICE, OPPORTUNITY_TYPES.COMBINED_SYNOPSIS, OPPORTUNITY_TYPES.SALE_OF_SURPLUS, ]); /** * Federal Set-Aside Type Codes * Source: Federal Acquisition Regulation (FAR) */ export const SET_ASIDE_TYPES = { SMALL_BUSINESS: 'SBA', SMALL_BUSINESS_SET_ASIDE: 'SBP', EIGHT_A: '8A', EIGHT_A_SOLE_SOURCE: '8AN', EIGHT_A_COMPETITIVE: '8AC', HUB_ZONE: 'HZC', HUB_ZONE_SOLE_SOURCE: 'HZS', SDVOSB: 'SDVOSBC', SDVOSB_SOLE_SOURCE: 'SDVOSBS', WOMEN_OWNED: 'WOSB', EDWOSB: 'EDWOSB', LOCAL_AREA: 'LAS', INDIAN_ECONOMIC: 'IEE', INDIAN_SMALL_BUSINESS: 'ISBEE', BUY_INDIAN: 'BICiv', VETERAN_OWNED: 'VSA', VETERAN_OWNED_SOLE_SOURCE: 'VSS', NONE: 'NONE', }; // Renamed to match actual API field name export const TypeOfSetAsideSchema = z.enum([ SET_ASIDE_TYPES.SMALL_BUSINESS, SET_ASIDE_TYPES.SMALL_BUSINESS_SET_ASIDE, SET_ASIDE_TYPES.EIGHT_A, SET_ASIDE_TYPES.EIGHT_A_SOLE_SOURCE, SET_ASIDE_TYPES.EIGHT_A_COMPETITIVE, SET_ASIDE_TYPES.HUB_ZONE, SET_ASIDE_TYPES.HUB_ZONE_SOLE_SOURCE, SET_ASIDE_TYPES.SDVOSB, SET_ASIDE_TYPES.SDVOSB_SOLE_SOURCE, SET_ASIDE_TYPES.WOMEN_OWNED, SET_ASIDE_TYPES.EDWOSB, SET_ASIDE_TYPES.LOCAL_AREA, SET_ASIDE_TYPES.INDIAN_ECONOMIC, SET_ASIDE_TYPES.INDIAN_SMALL_BUSINESS, SET_ASIDE_TYPES.BUY_INDIAN, SET_ASIDE_TYPES.VETERAN_OWNED, SET_ASIDE_TYPES.VETERAN_OWNED_SOLE_SOURCE, SET_ASIDE_TYPES.NONE, ]); // Keep the old name for backward compatibility export const SetAsideTypeSchema = TypeOfSetAsideSchema; /** * Construction-related NAICS Codes * Source: North American Industry Classification System */ export const CONSTRUCTION_NAICS_CODES = { COMMERCIAL_BUILDING: '236220', INDUSTRIAL_BUILDING: '236210', RESIDENTIAL_REMODELING: '236118', ELECTRICAL_CONTRACTORS: '238210', PLUMBING_HVAC: '238220', DRYWALL_INSULATION: '238310', PAINTING: '238320', SITE_PREPARATION: '238910', ROOFING: '238160', CONCRETE: '238110', }; // Create an array of values for the schema const constructionNAICSValues = Object.values(CONSTRUCTION_NAICS_CODES); export const ConstructionNAICSSchema = z.enum(constructionNAICSValues); /** * Contract Pricing Types * Source: Federal Acquisition Regulation (FAR) Part 16 */ export const CONTRACT_PRICING_TYPES = { FIRM_FIXED_PRICE: 'FFP', FIXED_PRICE_EPA: 'FPE', FIXED_PRICE_INCENTIVE: 'FPI', FIXED_PRICE_REDETERMINATION: 'FPR', COST_PLUS_FIXED_FEE: 'CPFF', COST_PLUS_INCENTIVE_FEE: 'CPIF', COST_PLUS_AWARD_FEE: 'CPAF', COST_SHARING: 'CS', COST_REIMBURSEMENT: 'CR', TIME_AND_MATERIALS: 'TM', LABOR_HOURS: 'LH', OTHER: 'OT', }; const contractPricingValues = Object.values(CONTRACT_PRICING_TYPES); export const ContractPricingTypeSchema = z.enum(contractPricingValues); /** * API Configuration */ export const API_CONFIG = { SAM_GOV: { BASE_URL: 'https://api.sam.gov/prod', OPPORTUNITIES_ENDPOINT: '/opportunities/v2/search', ENTITIES_ENDPOINT: '/entity-information/v3/entities', HIERARCHY_ENDPOINT: '/federalorganizations/v2/hierarchy', DESCRIPTION_ENDPOINT: '/opportunities/v1/noticedesc', DEFAULT_PAGE_SIZE: 100, MAX_PAGE_SIZE: 1000, }, RETRY: { MAX_ATTEMPTS: 3, INITIAL_DELAY_MS: 1000, MAX_DELAY_MS: 10000, }, CACHE: { DEFAULT_TTL_SECONDS: 300, MAX_CACHE_SIZE: 100, }, }; /** * US State Codes */ export const US_STATES = { ALABAMA: 'AL', ALASKA: 'AK', ARIZONA: 'AZ', ARKANSAS: 'AR', CALIFORNIA: 'CA', COLORADO: 'CO', CONNECTICUT: 'CT', DELAWARE: 'DE', FLORIDA: 'FL', GEORGIA: 'GA', HAWAII: 'HI', IDAHO: 'ID', ILLINOIS: 'IL', INDIANA: 'IN', IOWA: 'IA', KANSAS: 'KS', KENTUCKY: 'KY', LOUISIANA: 'LA', MAINE: 'ME', MARYLAND: 'MD', MASSACHUSETTS: 'MA', MICHIGAN: 'MI', MINNESOTA: 'MN', MISSISSIPPI: 'MS', MISSOURI: 'MO', MONTANA: 'MT', NEBRASKA: 'NE', NEVADA: 'NV', NEW_HAMPSHIRE: 'NH', NEW_JERSEY: 'NJ', NEW_MEXICO: 'NM', NEW_YORK: 'NY', NORTH_CAROLINA: 'NC', NORTH_DAKOTA: 'ND', OHIO: 'OH', OKLAHOMA: 'OK', OREGON: 'OR', PENNSYLVANIA: 'PA', RHODE_ISLAND: 'RI', SOUTH_CAROLINA: 'SC', SOUTH_DAKOTA: 'SD', TENNESSEE: 'TN', TEXAS: 'TX', UTAH: 'UT', VERMONT: 'VT', VIRGINIA: 'VA', WASHINGTON: 'WA', WEST_VIRGINIA: 'WV', WISCONSIN: 'WI', WYOMING: 'WY', DISTRICT_OF_COLUMBIA: 'DC', PUERTO_RICO: 'PR', US_VIRGIN_ISLANDS: 'VI', GUAM: 'GU', AMERICAN_SAMOA: 'AS', NORTHERN_MARIANA_ISLANDS: 'MP', }; const stateValues = Object.values(US_STATES); export const StateCodeSchema = z.enum(stateValues); /** * Helper function to get state code from name */ export function getStateCode(stateName) { return US_STATES[stateName]; } /** * Helper function to validate if a string is a valid state code */ export function isValidStateCode(code) { return StateCodeSchema.safeParse(code).success; } /** * Competition Strategy */ export const COMPETITION_STRATEGIES = { FULL_AND_OPEN: 'fullAndOpen', SET_ASIDE: 'setAside', SOLE_SOURCE: 'soleSource', LIMITED_SOURCES: 'limitedSources', }; const competitionValues = Object.values(COMPETITION_STRATEGIES); export const CompetitionStrategySchema = z.enum(competitionValues); /** * Active Status for opportunities (as returned by API) */ export const ACTIVE_STATUS = { YES: 'Yes', NO: 'No', }; export const ActiveStatusSchema = z.enum([ACTIVE_STATUS.YES, ACTIVE_STATUS.NO]); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsZUFBZSxFQUFFLEdBQUc7SUFDcEIsWUFBWSxFQUFFLEdBQUc7SUFDakIsWUFBWSxFQUFFLEdBQUc7SUFDakIsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixhQUFhLEVBQUUsR0FBRztJQUNsQixjQUFjLEVBQUUsR0FBRztJQUNuQixjQUFjLEVBQUUsR0FBRztJQUNuQixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGVBQWUsRUFBRSxHQUFHO0NBQ1osQ0FBQztBQU1YLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFDLGlCQUFpQixDQUFDLGVBQWU7SUFDakMsaUJBQWlCLENBQUMsWUFBWTtJQUM5QixpQkFBaUIsQ0FBQyxZQUFZO0lBQzlCLGlCQUFpQixDQUFDLGdCQUFnQjtJQUNsQyxpQkFBaUIsQ0FBQyxhQUFhO0lBQy9CLGlCQUFpQixDQUFDLGNBQWM7SUFDaEMsaUJBQWlCLENBQUMsY0FBYztJQUNoQyxpQkFBaUIsQ0FBQyxpQkFBaUI7SUFDbkMsaUJBQWlCLENBQUMsZUFBZTtDQUNsQyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsd0JBQXdCLEVBQUUsS0FBSztJQUMvQixPQUFPLEVBQUUsSUFBSTtJQUNiLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixRQUFRLEVBQUUsS0FBSztJQUNmLG9CQUFvQixF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