@analink/shared-functions
v2.1.0
Published
A comprehensive utility library for Angular applications providing base components, form utilities, date transformations, and more.
Readme
@analink/shared-functions
A comprehensive utility library for Angular applications providing base components, form utilities, date transformations, and more.
🚀 Features
- Base Components: Unified base class for Angular components with automatic cleanup
- Form Utilities: Comprehensive form manipulation and validation helpers
- Date Utilities: Date formatting and validation functions
- String Utilities: String manipulation and generation utilities
- Port Utilities: Port data processing and grouping functions
- RxJS Utilities: Observable subscription management
- Mappers: Data transformation utilities
📦 Installation
npm install @analink/shared-functions🔧 Usage
Base Components
The unified BaseComponent provides automatic cleanup for subscriptions and effects:
import { BaseComponent } from '@analink/shared-functions';
@Component({...})
export class MyComponent extends BaseComponent implements OnInit {
ngOnInit() {
// Reactive form subscriptions
this.someObservable$
.pipe(takeUntil(this.destroy$))
.subscribe(value => {
// handle value...
});
// Signal effects
const effectRef = effect(() => {
// effect logic
});
this.registerEffect(effectRef);
}
}Form Utilities
import { FormUtils } from '@analink/shared-functions';
// Format field values
const formatted = FormUtils.formatField('test', 10); // "test "
// Concatenate form fields
const result = FormUtils.concatenateFormFields(form, [
{ key: 'field1', length: 10 },
{ key: 'field2', length: 20, transform: (value) => value.toUpperCase() },
]);
// Create address form group
const addressGroup = FormUtils.createAddressGroup({
addressLine1: '123 Main St',
city: 'New York',
});Date Utilities
import { DateUtils } from '@analink/shared-functions';
// Transform date format
const transformed = DateUtils.transformDate('2024-01-15'); // "01152024"
// Format to DDMMM
const formatted = DateUtils.formatDateToDDMMM(new Date()); // "15JAN"
// Validate MMDDYYYY format
const isValid = DateUtils.isValidMmddyyyyDate('01152024'); // trueString Utilities
import { StringUtils } from '@analink/shared-functions';
// Generate random number
const random = StringUtils.generateRandomNumber(12); // "123456789012"
// Slice into chunks
const chunks = StringUtils.sliceIntoChunks('ABCDEFGHI', 3); // ["ABC", "DEF", "GHI"]
// Slice PGA flags
const flags = StringUtils.slicePgaFlags('ABC123DEF'); // ["ABC", "123", "DEF"]Port Utilities
import { groupPortsByCategory, sortPortsByName } from '@analink/shared-functions';
// Group ports by category
const grouped = groupPortsByCategory(ports);
// Sort ports by name
const sorted = sortPortsByName(ports);RxJS Utilities
import { subscribeWithCleanup } from '@analink/shared-functions';
// Subscribe with automatic cleanup
subscribeWithCleanup(this.someObservable$, this.destroy$, (data) => console.log('Received:', data));🔄 Migration Guide
From Legacy Base Components
Before:
export class MyComponent extends BaseReactiveFormComponent {
// ...
}After:
export class MyComponent extends BaseComponent {
// Same functionality, unified interface
}From Individual Utility Functions
Before:
import { formatField, padFormControlValue } from '@analink/shared-functions';After:
import { FormUtils } from '@analink/shared-functions';
// Use FormUtils.formatField() and FormUtils.padFormControlValue()📋 API Reference
BaseComponent
destroy$: Subject<void>- Subject for takeUntil patternsregisterEffect(ref: EffectRef): void- Register effect for cleanupngOnDestroy(): void- Automatic cleanup implementation
FormUtils
formatField(fieldValue: unknown, maxLength: number): stringpadFormControlValue(control: AbstractControl, maxLength: number): voidconcatenateFormFields(form: FormGroup, fields: FieldConfig[], maxLength?: number): stringpopulatePartiesFromTemplate(form: FormGroup, formGroupName: string, parties: Record<string, unknown>, availablePartyKeys: string[]): voidcreateAddressGroup(address?: Record<string, unknown>): FormGroup
DateUtils
transformDate(date: string): stringformatDateToDDMMM(date: Date): stringisValidMmddyyyyDate(value: string): boolean
StringUtils
generateRandomNumber(digits: number): stringsliceIntoChunks(flags: string, chunkSize?: number): string[]slicePgaFlags(flags: string): string[]
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
📄 License
This project is licensed under the MIT License.