{"version":3,"sources":["jsdelivr-header.js","/npm/@rbaileysr/asana-managed-api@1.0.9/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCkBS,mBAAsB,4BACtB,cAAiB,uBACjB,iBAAoB,0BACpB,cAAiB,uBACjB,eAAkB,wBAClB,aAAgB,sBAChB,iBAAoB,0BACpB,oBAAuB,6BACvB,qBAAwB,8BACxB,cAAiB,uBACjB,iBAAoB,0BACpB,eAAkB,wBAClB,kBAAqB,6BAK9B,MAAM,qBACF,WAAA,CAAY,GACR,KAAK,QAAU,wBACf,KAAK,YAAc,KACnB,KAAK,YAAc,EACnB,KAAK,WAAa,CACtB,CACA,cAAM,GACF,MAAM,EAAM,KAAK,MAEjB,GAAI,KAAK,aAAe,KAAK,YAAc,EACvC,OAAO,KAAK,YAGhB,MAAM,EAAU,IAAI,cACd,QAAkB,EAAQ,SAAS,KAAK,YAC9C,IAAK,IAAc,EAAU,aACzB,MAAM,IAAI,MAAM,mDAAmD,KAAK,cAK5E,OAFA,KAAK,YAAc,EAAU,aAC7B,KAAK,YAAc,EAAU,YAAc,EAAM,KAC1C,KAAK,WAChB,CACA,WAAM,CAAM,EAAM,GACd,MAAM,QAAc,KAAK,WACnB,EAAU,IAAI,QAAQ,GAAS,SACrC,EAAQ,IAAI,gBAAiB,UAAU,KACvC,EAAQ,IAAI,eAAgB,oBAC5B,MAAM,QAAiB,MAAM,GAAG,KAAK,UAAU,IAAQ,IAChD,EACH,YAGJ,MAAO,CACH,GAAI,EAAS,GACb,OAAQ,EAAS,OACjB,WAAY,EAAS,WACrB,KAAM,IAAM,EAAS,OACrB,QAAS,CACL,IAAM,GAAS,EAAS,QAAQ,IAAI,IAGhD,CACA,gBAAI,GACA,MAAO,SAAS,KAAK,YACzB,EAMJ,MAAM,SACF,WAAA,CAAY,GACR,KAAK,MAAQ,EAAc,MAAM,KAAK,GACtC,KAAK,aAAe,EAAc,aAElC,KAAK,UAAY,IAAI,eAAe,GACpC,KAAK,KAAO,IAAI,UAAU,GAC1B,KAAK,QAAU,IAAI,aAAa,GAChC,KAAK,KAAO,IAAI,UAAU,GAC1B,KAAK,MAAQ,IAAI,WAAW,GAC5B,KAAK,IAAM,IAAI,SAAS,GACxB,KAAK,QAAU,IAAI,aAAa,GAChC,KAAK,WAAa,IAAI,gBAAgB,GACtC,KAAK,YAAc,IAAI,iBAAiB,GACxC,KAAK,KAAO,IAAI,UAAU,GAC1B,KAAK,QAAU,IAAI,aAAa,GAChC,KAAK,MAAQ,IAAI,WAAW,EAChC,SAGG,SAAS,eAAe,GAC3B,IAAI,EASJ,OANI,EAFqC,iBAA9B,EAES,IAAI,qBAAqB,GAIzB,EAEb,IAAI,SAAS,EACxB,OAES,KAAK","file":"/npm/@rbaileysr/asana-managed-api@1.0.9/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@rbaileysr/asana-managed-api@1.0.9/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Asana Managed API\n *\n * A comprehensive Managed API wrapper for Asana REST API v1.0\n * Provides type-safe, hierarchical access to all Asana API endpoints\n *\n * Usage with Connector:\n * ```typescript\n * import { createAsanaApi } from '@rbaileysr/asana-managed-api';\n * import AsanaApiConnection from '../api/asana';\n *\n * const Asana = createAsanaApi(AsanaApiConnection);\n * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' });\n * ```\n *\n * Usage with OAuth Token:\n * ```typescript\n * import { createAsanaApi } from '@rbaileysr/asana-managed-api';\n *\n * // OAuth token stored in Record Storage at key 'asana-oauth-token'\n * const Asana = createAsanaApi('asana-oauth-token');\n * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' });\n * ```\n */\nimport { WorkspaceGroup } from './groups/Workspace';\nimport { UserGroup } from './groups/User';\nimport { ProjectGroup } from './groups/Project';\nimport { TaskGroup } from './groups/Task';\nimport { StoryGroup } from './groups/Story';\nimport { TagGroup } from './groups/Tag';\nimport { SectionGroup } from './groups/Section';\nimport { AttachmentGroup } from './groups/Attachment';\nimport { CustomFieldGroup } from './groups/CustomField';\nimport { TeamGroup } from './groups/Team';\nimport { WebhookGroup } from './groups/Webhook';\nimport { EventGroup } from './groups/Event';\nimport { RecordStorage } from '@sr-connect/record-storage';\n/**\n * OAuth-based API connection implementation\n * Retrieves OAuth token from Record Storage and adds it to requests\n */\nclass OAuthAsanaConnection {\n    constructor(storageKey) {\n        this.baseUrl = 'https://app.asana.com';\n        this.cachedToken = null;\n        this.tokenExpiry = 0;\n        this.storageKey = storageKey;\n    }\n    async getToken() {\n        const now = Date.now();\n        // Return cached token if still valid\n        if (this.cachedToken && this.tokenExpiry > now) {\n            return this.cachedToken;\n        }\n        // Retrieve token from Record Storage\n        const storage = new RecordStorage();\n        const tokenData = await storage.getValue(this.storageKey);\n        if (!tokenData || !tokenData.access_token) {\n            throw new Error(`OAuth token not found in Record Storage at key: ${this.storageKey}`);\n        }\n        // Cache token\n        this.cachedToken = tokenData.access_token;\n        this.tokenExpiry = tokenData.expires_at || now + 3600000; // Default 1 hour\n        return this.cachedToken;\n    }\n    async fetch(path, options) {\n        const token = await this.getToken();\n        const headers = new Headers(options?.headers);\n        headers.set('Authorization', `Bearer ${token}`);\n        headers.set('Content-Type', 'application/json');\n        const response = await fetch(`${this.baseUrl}${path}`, {\n            ...options,\n            headers,\n        });\n        // Return structural type compatible with AsanaApiConnection\n        return {\n            ok: response.ok,\n            status: response.status,\n            statusText: response.statusText,\n            json: () => response.json(),\n            headers: {\n                get: (name) => response.headers.get(name),\n            },\n        };\n    }\n    get connectionId() {\n        return `oauth-${this.storageKey}`;\n    }\n}\n/**\n * Main Asana API class\n * Provides hierarchical access to all Asana API groups\n */\nclass AsanaApi {\n    constructor(apiConnection) {\n        this.fetch = apiConnection.fetch.bind(apiConnection);\n        this.connectionId = apiConnection.connectionId;\n        // Initialize all API groups\n        this.Workspace = new WorkspaceGroup(apiConnection);\n        this.User = new UserGroup(apiConnection);\n        this.Project = new ProjectGroup(apiConnection);\n        this.Task = new TaskGroup(apiConnection);\n        this.Story = new StoryGroup(apiConnection);\n        this.Tag = new TagGroup(apiConnection);\n        this.Section = new SectionGroup(apiConnection);\n        this.Attachment = new AttachmentGroup(apiConnection);\n        this.CustomField = new CustomFieldGroup(apiConnection);\n        this.Team = new TeamGroup(apiConnection);\n        this.Webhook = new WebhookGroup(apiConnection);\n        this.Event = new EventGroup(apiConnection);\n    }\n}\n// Implementation\nexport function createAsanaApi(apiConnectionOrStorageKey) {\n    let apiConnection;\n    if (typeof apiConnectionOrStorageKey === 'string') {\n        // OAuth mode - create OAuth connection\n        apiConnection = new OAuthAsanaConnection(apiConnectionOrStorageKey);\n    }\n    else {\n        // Connector mode - use provided connection\n        apiConnection = apiConnectionOrStorageKey;\n    }\n    return new AsanaApi(apiConnection);\n}\n// Export types for use in scripts\nexport * from './types';\n"]}