SDK Reference
Utilities

Utilities

Helper functions for common tasks.

String Utilities

sdk.utils.slugify(text)

Convert text to URL-friendly slug.

sdk.utils.slugify('Hello World!');     // 'hello-world'
sdk.utils.slugify('This & That');      // 'this-and-that'
sdk.utils.slugify('Café au Lait');     // 'cafe-au-lait'

sdk.utils.truncate(text, length, suffix)

Truncate text to specified length.

sdk.utils.truncate('This is a long sentence', 10);          // 'This is a...'
sdk.utils.truncate('This is a long sentence', 10, ' →');   // 'This is a →'

sdk.utils.stripTags(html)

Remove HTML tags from string.

sdk.utils.stripTags('<p>Hello <strong>World</strong></p>'); // 'Hello World'

sdk.utils.escapeHtml(text)

Escape HTML entities.

sdk.utils.escapeHtml('<script>alert("XSS")</script>');
// '&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;'

sdk.utils.excerpt(content, length)

Generate excerpt from HTML content.

const html = '<p>First paragraph.</p><p>Second paragraph with more text.</p>';
sdk.utils.excerpt(html, 30); // 'First paragraph. Second...'

Date Utilities

sdk.utils.formatDate(date, format)

Format a date.

const date = new Date('2024-03-15T10:30:00Z');
 
sdk.utils.formatDate(date);                    // 'March 15, 2024'
sdk.utils.formatDate(date, 'short');           // '3/15/24'
sdk.utils.formatDate(date, 'long');            // 'Friday, March 15, 2024'
sdk.utils.formatDate(date, 'iso');             // '2024-03-15'
sdk.utils.formatDate(date, 'YYYY-MM-DD');      // '2024-03-15'
sdk.utils.formatDate(date, 'DD/MM/YYYY');      // '15/03/2024'
sdk.utils.formatDate(date, 'MMM D, YYYY');     // 'Mar 15, 2024'

sdk.utils.timeAgo(date)

Get relative time string.

const now = new Date();
const yesterday = new Date(now - 86400000);
const lastWeek = new Date(now - 604800000);
 
sdk.utils.timeAgo(now);       // 'just now'
sdk.utils.timeAgo(yesterday); // '1 day ago'
sdk.utils.timeAgo(lastWeek);  // '1 week ago'

sdk.utils.parseDate(string)

Parse date string.

sdk.utils.parseDate('2024-03-15');           // Date object
sdk.utils.parseDate('March 15, 2024');       // Date object
sdk.utils.parseDate('15/03/2024', 'DD/MM/YYYY'); // Date object

Number Utilities

sdk.utils.formatNumber(number)

Format number with locale.

sdk.utils.formatNumber(1234567);      // '1,234,567'
sdk.utils.formatNumber(1234.56);      // '1,234.56'

sdk.utils.formatBytes(bytes)

Format bytes to human readable.

sdk.utils.formatBytes(1024);          // '1 KB'
sdk.utils.formatBytes(1048576);       // '1 MB'
sdk.utils.formatBytes(1073741824);    // '1 GB'
sdk.utils.formatBytes(1536);          // '1.5 KB'

sdk.utils.formatCurrency(amount, currency)

Format currency.

sdk.utils.formatCurrency(29.99);           // '$29.99'
sdk.utils.formatCurrency(29.99, 'EUR');    // '€29.99'
sdk.utils.formatCurrency(1000, 'GBP');     // '£1,000.00'

ID Generation

sdk.utils.generateId()

Generate unique ID.

const id = sdk.utils.generateId();  // 'x7k2m9p4q1n8'

sdk.utils.uuid()

Generate UUID v4.

const uuid = sdk.utils.uuid();  // '550e8400-e29b-41d4-a716-446655440000'

URL Utilities

sdk.utils.parseUrl(url)

Parse URL into components.

const parsed = sdk.utils.parseUrl('https://example.com/path?foo=bar#section');
 
// {
//   protocol: 'https',
//   host: 'example.com',
//   path: '/path',
//   query: { foo: 'bar' },
//   hash: 'section'
// }

sdk.utils.buildUrl(base, params)

Build URL with query parameters.

sdk.utils.buildUrl('/search', { q: 'hello', page: 2 });
// '/search?q=hello&page=2'
 
sdk.utils.buildUrl('https://api.example.com/items', { 
  filter: 'active',
  sort: 'name'
});
// 'https://api.example.com/items?filter=active&sort=name'

sdk.utils.isAbsoluteUrl(url)

Check if URL is absolute.

sdk.utils.isAbsoluteUrl('https://example.com');  // true
sdk.utils.isAbsoluteUrl('/about');                // false
sdk.utils.isAbsoluteUrl('about.html');           // false

Array Utilities

sdk.utils.chunk(array, size)

Split array into chunks.

sdk.utils.chunk([1, 2, 3, 4, 5], 2);  // [[1, 2], [3, 4], [5]]

sdk.utils.unique(array)

Remove duplicates.

sdk.utils.unique([1, 2, 2, 3, 3, 3]);  // [1, 2, 3]

sdk.utils.shuffle(array)

Randomly shuffle array.

sdk.utils.shuffle([1, 2, 3, 4, 5]);  // [3, 1, 5, 2, 4] (random order)

sdk.utils.groupBy(array, key)

Group array by key.

const items = [
  { type: 'fruit', name: 'apple' },
  { type: 'fruit', name: 'banana' },
  { type: 'vegetable', name: 'carrot' }
];
 
sdk.utils.groupBy(items, 'type');
// {
//   fruit: [{ type: 'fruit', name: 'apple' }, { type: 'fruit', name: 'banana' }],
//   vegetable: [{ type: 'vegetable', name: 'carrot' }]
// }

Object Utilities

sdk.utils.pick(object, keys)

Pick specific keys from object.

const user = { id: 1, name: 'John', email: '[email protected]', password: 'secret' };
sdk.utils.pick(user, ['id', 'name', 'email']);
// { id: 1, name: 'John', email: '[email protected]' }

sdk.utils.omit(object, keys)

Omit specific keys from object.

sdk.utils.omit(user, ['password']);
// { id: 1, name: 'John', email: '[email protected]' }

sdk.utils.deepClone(object)

Deep clone an object.

const original = { a: { b: { c: 1 } } };
const clone = sdk.utils.deepClone(original);
clone.a.b.c = 2;
console.log(original.a.b.c);  // Still 1

sdk.utils.merge(target, ...sources)

Deep merge objects.

const defaults = { a: 1, b: { c: 2 } };
const overrides = { b: { d: 3 } };
sdk.utils.merge(defaults, overrides);
// { a: 1, b: { c: 2, d: 3 } }

Validation Utilities

sdk.utils.isEmail(string)

Validate email format.

sdk.utils.isEmail('[email protected]');  // true
sdk.utils.isEmail('invalid-email');      // false

sdk.utils.isUrl(string)

Validate URL format.

sdk.utils.isUrl('https://example.com');  // true
sdk.utils.isUrl('not a url');            // false

sdk.utils.isEmpty(value)

Check if value is empty.

sdk.utils.isEmpty('');        // true
sdk.utils.isEmpty([]);        // true
sdk.utils.isEmpty({});        // true
sdk.utils.isEmpty(null);      // true
sdk.utils.isEmpty(undefined); // true
sdk.utils.isEmpty('hello');   // false
sdk.utils.isEmpty([1, 2]);    // false

Async Utilities

sdk.utils.sleep(ms)

Pause execution.

await sdk.utils.sleep(1000);  // Wait 1 second

sdk.utils.retry(fn, options)

Retry a function on failure.

const result = await sdk.utils.retry(
  async () => {
    const response = await fetch('https://api.example.com/data');
    if (!response.ok) throw new Error('Failed');
    return response.json();
  },
  {
    retries: 3,
    delay: 1000,
    backoff: 2  // Exponential backoff multiplier
  }
);

sdk.utils.debounce(fn, delay)

Debounce a function.

const debouncedSearch = sdk.utils.debounce(async (query) => {
  const results = await search(query);
  displayResults(results);
}, 300);
 
// Only executes after 300ms of no calls
input.addEventListener('input', (e) => debouncedSearch(e.target.value));

sdk.utils.throttle(fn, limit)

Throttle a function.

const throttledScroll = sdk.utils.throttle(() => {
  updateScrollPosition();
}, 100);
 
// Executes at most once per 100ms
window.addEventListener('scroll', throttledScroll);