@davidovicstefan/swimlane-api-client
v1.1.0
Published
Swimlane API client with caching to prevent duplicate API calls across widgets
Maintainers
Readme
Swimlane API Client
A centralized API client for Swimlane with intelligent caching to prevent duplicate API calls across multiple widgets.
Features
- 🚀 Caching: Prevents duplicate API calls across widgets
- 🔄 Instance Support: Works with Swimlane, Turbine, and Shared Cloud
- 🛠️ Helper Functions: Utilities for processing API responses
- 📦 Lightweight: Only essential API functions, no UI logic
- 🎯 TypeScript: Full TypeScript support
Installation
npm install @davidovicstefan/swimlane-api-clientUsage
Basic API Client
import { SwimlaneApi } from '@davidovicstefan/swimlane-api-client';
const apiClient = new SwimlaneApi(contextData);
// GET request with caching
const response = await apiClient.GET('application', 'app123');
// POST request
const result = await apiClient.POST('search', searchParams);Search Functions
import { performReferenceSearch, getSearchCount } from '@davidovicstefan/swimlane-api-client';
// Search with automatic caching
const searchResults = await performReferenceSearch(contextData, {
referencedAppId: 'app123',
filters: [
{ fieldId: 'title', filterType: 'contains', value: 'test' }
],
offset: 0,
pageSize: 20,
columns: ['title', 'status']
});
// Get count with caching
const totalCount = await getSearchCount(contextData, {
referencedAppId: 'app123',
filters: [
{ fieldId: 'title', filterType: 'contains', value: 'test' }
],
columns: ['title', 'status']
});Helper Functions
import {
constructKeyIdMap,
convertRecordValues,
stringifyVal
} from '@davidovicstefan/swimlane-api-client';
// Convert field mapping
const fieldMap = constructKeyIdMap(applicationDefinition);
// Convert API response
const records = convertRecordValues(apiResponse, fieldMap);
// Stringify values
const displayValue = stringifyVal(complexValue);Cache Management
import { apiCache } from '@davidovicstefan/swimlane-api-client';
// Clear all cache
apiCache.clear();
// Clear cache for specific context
apiCache.clearContext(contextData);
// Get cache stats
const stats = apiCache.getStats();API Reference
SwimlaneApi
Main API client class with caching support.
Constructor
new SwimlaneApi(contextData)Methods
GET(resource, objectId?, orchestrationVersion?, useCache?)- GET requestPOST(resource, jsonObject, objectId?, orchestrationVersion?, useCache?)- POST requestPUT(resource, jsonObject, objectId?, orchestrationVersion?)- PUT requestDELETE(resource, objectId?, orchestrationVersion?)- DELETE requestgetReferenceData(recordId, targetAppId, referenceIds)- Get reference dataorchestrationRql(version, resource, payload?, useCache?)- Orchestration RQL
Search Functions
performReferenceSearch(contextData, searchParams)- Search with cachinggetSearchCount(contextData, searchParams)- Get count with cachinggetApplicationDefinition(contextData, appId)- Get app definition with caching
Helper Functions
constructKeyIdMap(applicationDefinition)- Create field mappingconvertRecordValues(records, fieldIds)- Convert API responsegetFieldMetadata(fieldId, applicationFields)- Get field metadatastringifyVal(value)- Convert value to stringprocessSearchTerms(searchTerms, applicationFields)- Process search terms
Caching Strategy
The client uses intelligent caching to prevent duplicate API calls:
- Cache Key: Generated from context + endpoint + parameters
- TTL: 5 minutes default (configurable)
- Scope: Per context (account + tenant)
- Automatic: GET requests are cached by default
- Manual: POST requests can be cached with
useCache: true
Context Data
const contextData = {
origin: 'https://your-swimlane-instance.com',
accountId: 'account123',
tenantId: 'tenant456',
token: 'bearer-token',
tenantPath: 'optional-for-shared-cloud',
application: {
id: 'app789',
fields: [...]
}
};License
MIT
