@actschurch/ccms-sdk 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.html +46 -46
- package/README.md +46 -46
- package/dist/auth/AuthManager.d.ts +1 -0
- package/dist/auth/AuthManager.d.ts.map +1 -1
- package/dist/auth/AuthManager.js +11 -11
- package/dist/auth/AuthManager.js.map +1 -1
- package/dist/auth/adapters/context.d.ts.map +1 -1
- package/dist/auth/adapters/context.js +43 -21
- package/dist/auth/adapters/context.js.map +1 -1
- package/dist/realtime/presence/PresenceProvider.d.ts.map +1 -1
- package/dist/realtime/presence/PresenceProvider.js +6 -1
- package/dist/realtime/presence/PresenceProvider.js.map +1 -1
- package/dist/realtime/shared/BaseSignalRClient.d.ts.map +1 -1
- package/dist/realtime/shared/BaseSignalRClient.js +8 -3
- package/dist/realtime/shared/BaseSignalRClient.js.map +1 -1
- package/dist/services/base/BaseService.d.ts.map +1 -1
- package/dist/services/base/BaseService.js +3 -1
- package/dist/services/base/BaseService.js.map +1 -1
- package/dist/services/file/FileService.d.ts.map +1 -1
- package/dist/services/file/FileService.js +1 -1
- package/dist/services/file/FileService.js.map +1 -1
- package/dist/services/file/MultipartUploadService.d.ts.map +1 -1
- package/dist/services/file/MultipartUploadService.js +1 -1
- package/dist/services/file/MultipartUploadService.js.map +1 -1
- package/dist/services/payments/BillingAgreementService.d.ts.map +1 -1
- package/dist/services/payments/BillingAgreementService.js +1 -1
- package/dist/services/payments/BillingAgreementService.js.map +1 -1
- package/dist/services/payments/PayFastWebhookService.d.ts.map +1 -1
- package/dist/services/payments/PayFastWebhookService.js +1 -1
- package/dist/services/payments/PayFastWebhookService.js.map +1 -1
- package/dist/services/payments/PayerService.d.ts.map +1 -1
- package/dist/services/payments/PayerService.js +1 -1
- package/dist/services/payments/PayerService.js.map +1 -1
- package/dist/services/payments/PaymentIpnEventService.d.ts.map +1 -1
- package/dist/services/payments/PaymentIpnEventService.js +1 -1
- package/dist/services/payments/PaymentIpnEventService.js.map +1 -1
- package/dist/services/payments/PaymentMethodService.d.ts.map +1 -1
- package/dist/services/payments/PaymentMethodService.js +1 -1
- package/dist/services/payments/PaymentMethodService.js.map +1 -1
- package/dist/services/payments/PaymentNotificationQueueService.d.ts.map +1 -1
- package/dist/services/payments/PaymentNotificationQueueService.js +1 -1
- package/dist/services/payments/PaymentNotificationQueueService.js.map +1 -1
- package/dist/services/payments/PaymentTransactionService.d.ts.map +1 -1
- package/dist/services/payments/PaymentTransactionService.js +1 -1
- package/dist/services/payments/PaymentTransactionService.js.map +1 -1
- package/dist/services/payments/RecurringTransactionService.d.ts.map +1 -1
- package/dist/services/payments/RecurringTransactionService.js +1 -1
- package/dist/services/payments/RecurringTransactionService.js.map +1 -1
- package/dist/services/payments/RefundStatusService.d.ts.map +1 -1
- package/dist/services/payments/RefundStatusService.js +1 -1
- package/dist/services/payments/RefundStatusService.js.map +1 -1
- package/dist/services/payments/SettlementLineService.d.ts.map +1 -1
- package/dist/services/payments/SettlementLineService.js +1 -1
- package/dist/services/payments/SettlementLineService.js.map +1 -1
- package/dist/services/payments/SettlementService.d.ts.map +1 -1
- package/dist/services/payments/SettlementService.js +1 -1
- package/dist/services/payments/SettlementService.js.map +1 -1
- package/dist/services/payments/TransactionCategoryService.d.ts.map +1 -1
- package/dist/services/payments/TransactionCategoryService.js +1 -1
- package/dist/services/payments/TransactionCategoryService.js.map +1 -1
- package/dist/services/payments/TransactionRefundService.d.ts.map +1 -1
- package/dist/services/payments/TransactionRefundService.js +1 -1
- package/dist/services/payments/TransactionRefundService.js.map +1 -1
- package/dist/services/payments/TransactionStatusService.d.ts.map +1 -1
- package/dist/services/payments/TransactionStatusService.js +1 -1
- package/dist/services/payments/TransactionStatusService.js.map +1 -1
- package/dist/services/projects/BudgetLineItemService.d.ts.map +1 -1
- package/dist/services/projects/BudgetLineItemService.js +1 -1
- package/dist/services/projects/BudgetLineItemService.js.map +1 -1
- package/dist/services/projects/PlannedBudgetItemService.d.ts.map +1 -1
- package/dist/services/projects/PlannedBudgetItemService.js +1 -1
- package/dist/services/projects/PlannedBudgetItemService.js.map +1 -1
- package/dist/services/projects/ProjectAuditLogService.d.ts.map +1 -1
- package/dist/services/projects/ProjectAuditLogService.js +1 -1
- package/dist/services/projects/ProjectAuditLogService.js.map +1 -1
- package/dist/services/projects/ProjectDocumentService.d.ts.map +1 -1
- package/dist/services/projects/ProjectDocumentService.js +1 -1
- package/dist/services/projects/ProjectDocumentService.js.map +1 -1
- package/dist/services/projects/ProjectMessageService.d.ts.map +1 -1
- package/dist/services/projects/ProjectMessageService.js +1 -1
- package/dist/services/projects/ProjectMessageService.js.map +1 -1
- package/dist/services/projects/ProjectMilestoneService.d.ts.map +1 -1
- package/dist/services/projects/ProjectMilestoneService.js +1 -1
- package/dist/services/projects/ProjectMilestoneService.js.map +1 -1
- package/dist/services/projects/ProjectMilestoneTaskService.d.ts.map +1 -1
- package/dist/services/projects/ProjectMilestoneTaskService.js +1 -1
- package/dist/services/projects/ProjectMilestoneTaskService.js.map +1 -1
- package/dist/services/projects/ProjectResourceService.d.ts.map +1 -1
- package/dist/services/projects/ProjectResourceService.js +1 -1
- package/dist/services/projects/ProjectResourceService.js.map +1 -1
- package/dist/services/projects/ProjectRiskService.d.ts.map +1 -1
- package/dist/services/projects/ProjectRiskService.js +1 -1
- package/dist/services/projects/ProjectRiskService.js.map +1 -1
- package/dist/services/projects/ProjectRoleService.d.ts.map +1 -1
- package/dist/services/projects/ProjectRoleService.js +1 -1
- package/dist/services/projects/ProjectRoleService.js.map +1 -1
- package/dist/services/projects/ProjectService.d.ts.map +1 -1
- package/dist/services/projects/ProjectService.js +1 -1
- package/dist/services/projects/ProjectService.js.map +1 -1
- package/dist/services/projects/ProjectStatusService.d.ts.map +1 -1
- package/dist/services/projects/ProjectStatusService.js +1 -1
- package/dist/services/projects/ProjectStatusService.js.map +1 -1
- package/dist/services/projects/ProjectTeamMemberService.d.ts.map +1 -1
- package/dist/services/projects/ProjectTeamMemberService.js +1 -1
- package/dist/services/projects/ProjectTeamMemberService.js.map +1 -1
- package/dist/services/projects/ProjectTypeService.d.ts.map +1 -1
- package/dist/services/projects/ProjectTypeService.js +1 -1
- package/dist/services/projects/ProjectTypeService.js.map +1 -1
- package/dist/services/projects/ResourceTypeService.d.ts.map +1 -1
- package/dist/services/projects/ResourceTypeService.js +1 -1
- package/dist/services/projects/ResourceTypeService.js.map +1 -1
- package/dist/services/projects/TaskDependencyService.d.ts.map +1 -1
- package/dist/services/projects/TaskDependencyService.js +1 -1
- package/dist/services/projects/TaskDependencyService.js.map +1 -1
- package/dist/services/projects/TaskTimeLogService.d.ts.map +1 -1
- package/dist/services/projects/TaskTimeLogService.js +1 -1
- package/dist/services/projects/TaskTimeLogService.js.map +1 -1
- package/dist/services/users/AuditService.d.ts.map +1 -1
- package/dist/services/users/AuditService.js +1 -1
- package/dist/services/users/AuditService.js.map +1 -1
- package/dist/services/users/AuthService.d.ts.map +1 -1
- package/dist/services/users/AuthService.js +5 -2
- package/dist/services/users/AuthService.js.map +1 -1
- package/dist/services/users/RightService.d.ts.map +1 -1
- package/dist/services/users/RightService.js +1 -1
- package/dist/services/users/RightService.js.map +1 -1
- package/dist/services/users/RoleService.d.ts.map +1 -1
- package/dist/services/users/RoleService.js +1 -1
- package/dist/services/users/RoleService.js.map +1 -1
- package/dist/services/users/UserPreferencesService.d.ts.map +1 -1
- package/dist/services/users/UserPreferencesService.js +1 -1
- package/dist/services/users/UserPreferencesService.js.map +1 -1
- package/dist/services/users/UserPushDeviceService.d.ts.map +1 -1
- package/dist/services/users/UserPushDeviceService.js +1 -1
- package/dist/services/users/UserPushDeviceService.js.map +1 -1
- package/dist/services/users/UserService.d.ts.map +1 -1
- package/dist/services/users/UserService.js +1 -1
- package/dist/services/users/UserService.js.map +1 -1
- package/package.json +7 -7
package/README.html
CHANGED
|
@@ -218,11 +218,11 @@ strong {
|
|
|
218
218
|
|
|
219
219
|
<h2>Installation</h2>
|
|
220
220
|
|
|
221
|
-
<pre><code class="language-bash">npm install @ccms
|
|
221
|
+
<pre><code class="language-bash">npm install @actschurch/ccms-sdk
|
|
222
222
|
<h1>or</h1>
|
|
223
|
-
<p>yarn add @ccms
|
|
223
|
+
<p>yarn add @actschurch/ccms-sdk</p>
|
|
224
224
|
<h1>or</h1>
|
|
225
|
-
<p>pnpm add @ccms
|
|
225
|
+
<p>pnpm add @actschurch/ccms-sdk</code></pre></p>
|
|
226
226
|
|
|
227
227
|
<h3>Peer Dependencies</h3>
|
|
228
228
|
|
|
@@ -235,7 +235,7 @@ strong {
|
|
|
235
235
|
|
|
236
236
|
<h3>Basic Setup (Vanilla JavaScript/TypeScript)</h3>
|
|
237
237
|
|
|
238
|
-
<pre><code class="language-typescript">import { HttpClient, AuthManager, LocalStorageAdapter } from '@ccms
|
|
238
|
+
<pre><code class="language-typescript">import { HttpClient, AuthManager, LocalStorageAdapter } from '@actschurch/ccms-sdk';
|
|
239
239
|
|
|
240
240
|
<p>// Create HTTP client
|
|
241
241
|
const http = new HttpClient({
|
|
@@ -262,7 +262,7 @@ const response = await http.get('/api/members');</code></pre></p>
|
|
|
262
262
|
|
|
263
263
|
<h3>React Setup</h3>
|
|
264
264
|
|
|
265
|
-
<pre><code class="language-tsx">import { CCMSProvider, useCCMS, useAuth } from '@ccms
|
|
265
|
+
<pre><code class="language-tsx">import { CCMSProvider, useCCMS, useAuth } from '@actschurch/ccms-sdk';
|
|
266
266
|
|
|
267
267
|
<p>// Wrap your app with CCMSProvider
|
|
268
268
|
function App() {
|
|
@@ -303,7 +303,7 @@ function Dashboard() {
|
|
|
303
303
|
|
|
304
304
|
<p>The <code>HttpClient</code> is the foundation for all API communication. It handles request/response interceptors, authentication headers, and error handling.</p>
|
|
305
305
|
|
|
306
|
-
<pre><code class="language-typescript">import { HttpClient } from '@ccms
|
|
306
|
+
<pre><code class="language-typescript">import { HttpClient } from '@actschurch/ccms-sdk';
|
|
307
307
|
|
|
308
308
|
<p>const http = new HttpClient({
|
|
309
309
|
baseUrl: 'https://api.yourccms.com',
|
|
@@ -369,7 +369,7 @@ http.interceptors.response.use(
|
|
|
369
369
|
|
|
370
370
|
<p>The <code>AuthManager</code> handles the complete authentication flow including login, logout, token refresh, and session persistence.</p>
|
|
371
371
|
|
|
372
|
-
<pre><code class="language-typescript">import { AuthManager, LocalStorageAdapter, MemoryStorageAdapter } from '@ccms
|
|
372
|
+
<pre><code class="language-typescript">import { AuthManager, LocalStorageAdapter, MemoryStorageAdapter } from '@actschurch/ccms-sdk';
|
|
373
373
|
|
|
374
374
|
<p>// Create auth manager
|
|
375
375
|
const authManager = new AuthManager(http, {
|
|
@@ -441,7 +441,7 @@ authManager.destroy();</code></pre></p>
|
|
|
441
441
|
SecureStorageAdapter, // React Native - secure storage
|
|
442
442
|
CookieStorageAdapter, // SSR/universal apps
|
|
443
443
|
GenericStorageAuthAdapter, // Custom storage
|
|
444
|
-
} from '@ccms
|
|
444
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
445
445
|
|
|
446
446
|
<p>// React Native with AsyncStorage
|
|
447
447
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
@@ -460,7 +460,7 @@ const storage = new LocalStorageAdapter('my<em>app</em>auth');</code><
|
|
|
460
460
|
|
|
461
461
|
<p>The <code>PermissionManager</code> handles feature-based access control using roles and permissions.</p>
|
|
462
462
|
|
|
463
|
-
<pre><code class="language-typescript">import { PermissionManager, defineFeature, requires } from '@ccms
|
|
463
|
+
<pre><code class="language-typescript">import { PermissionManager, defineFeature, requires } from '@actschurch/ccms-sdk';
|
|
464
464
|
|
|
465
465
|
<p>// Create permission manager
|
|
466
466
|
const permissions = new PermissionManager({
|
|
@@ -557,7 +557,7 @@ permissions.onDenied((event) => {
|
|
|
557
557
|
|
|
558
558
|
<p><strong>Available Statuses:</strong> <code>Online</code>, <code>Away</code>, <code>Busy</code>, <code>Offline</code></p>
|
|
559
559
|
|
|
560
|
-
<pre><code class="language-tsx">import { PresenceProvider, usePresence, useUserPresence, useOnlineUsers, usePresenceStatus, PresenceStatus } from '@ccms
|
|
560
|
+
<pre><code class="language-tsx">import { PresenceProvider, usePresence, useUserPresence, useOnlineUsers, usePresenceStatus, PresenceStatus } from '@actschurch/ccms-sdk/realtime/presence';
|
|
561
561
|
|
|
562
562
|
<p>// Setup in your app root with auto-connection management
|
|
563
563
|
function App() {
|
|
@@ -645,7 +645,7 @@ function OnlineUsersList() {
|
|
|
645
645
|
useApiLogs,
|
|
646
646
|
useQueryLogs,
|
|
647
647
|
useDashboard,
|
|
648
|
-
} from '@ccms
|
|
648
|
+
} from '@actschurch/ccms-sdk/realtime/logs';</p>
|
|
649
649
|
|
|
650
650
|
<p>// Application logs with filtering and event handling
|
|
651
651
|
function LogsViewer() {
|
|
@@ -840,12 +840,12 @@ function PerformanceDashboard() {
|
|
|
840
840
|
<p>The old <code>RealtimeClient</code> is deprecated. Migrate to the new SignalR-based modules:</p>
|
|
841
841
|
|
|
842
842
|
<pre><code class="language-typescript">// Old (deprecated)
|
|
843
|
-
<p>import { RealtimeClient } from '@ccms
|
|
843
|
+
<p>import { RealtimeClient } from '@actschurch/ccms-sdk';
|
|
844
844
|
const realtime = new RealtimeClient(config);
|
|
845
845
|
realtime.updatePresence('Online');</p>
|
|
846
846
|
|
|
847
847
|
<p>// New (recommended)
|
|
848
|
-
import { usePresence } from '@ccms
|
|
848
|
+
import { usePresence } from '@actschurch/ccms-sdk/realtime/presence';
|
|
849
849
|
const { updateStatus } = usePresence();
|
|
850
850
|
updateStatus(PresenceStatus.Online);</code></pre></p>
|
|
851
851
|
|
|
@@ -855,7 +855,7 @@ updateStatus(PresenceStatus.Online);</code></pre></p>
|
|
|
855
855
|
|
|
856
856
|
<p>The SDK provides comprehensive error handling utilities.</p>
|
|
857
857
|
|
|
858
|
-
<pre><code class="language-typescript">import { ErrorHandler, CCMSError } from '@ccms
|
|
858
|
+
<pre><code class="language-typescript">import { ErrorHandler, CCMSError } from '@actschurch/ccms-sdk';
|
|
859
859
|
|
|
860
860
|
<p>// Create error handler
|
|
861
861
|
const errorHandler = new ErrorHandler({
|
|
@@ -888,7 +888,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
888
888
|
|
|
889
889
|
<p>Wrap your application with <code>CCMSProvider</code>:</p>
|
|
890
890
|
|
|
891
|
-
<pre><code class="language-tsx">import { CCMSProvider } from '@ccms
|
|
891
|
+
<pre><code class="language-tsx">import { CCMSProvider } from '@actschurch/ccms-sdk';
|
|
892
892
|
|
|
893
893
|
<p>function App() {
|
|
894
894
|
return (
|
|
@@ -918,7 +918,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
918
918
|
useHttpClient,
|
|
919
919
|
useRealtime,
|
|
920
920
|
usePermissions,
|
|
921
|
-
} from '@ccms
|
|
921
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
922
922
|
|
|
923
923
|
<p>function MyComponent() {
|
|
924
924
|
// Access full SDK context
|
|
@@ -932,7 +932,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
932
932
|
|
|
933
933
|
<h4>Authentication Hooks</h4>
|
|
934
934
|
|
|
935
|
-
<pre><code class="language-tsx">import { useAuth, useIsAuthenticated, useUser, useHasRole, useHasRight } from '@ccms
|
|
935
|
+
<pre><code class="language-tsx">import { useAuth, useIsAuthenticated, useUser, useHasRole, useHasRight } from '@actschurch/ccms-sdk';
|
|
936
936
|
|
|
937
937
|
<p>function Profile() {
|
|
938
938
|
const { user, isAuthenticated, isLoading, login, logout } = useAuth();</p>
|
|
@@ -957,7 +957,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
957
957
|
|
|
958
958
|
<h4>API Hooks</h4>
|
|
959
959
|
|
|
960
|
-
<pre><code class="language-tsx">import { useQuery, useMutation, useInfiniteQuery, usePrefetch } from '@ccms
|
|
960
|
+
<pre><code class="language-tsx">import { useQuery, useMutation, useInfiniteQuery, usePrefetch } from '@actschurch/ccms-sdk';
|
|
961
961
|
|
|
962
962
|
<p>function MemberList() {
|
|
963
963
|
// Fetch data
|
|
@@ -1011,7 +1011,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1011
1011
|
usePresenceStatus,
|
|
1012
1012
|
useOnlineUsers,
|
|
1013
1013
|
useUserPresence,
|
|
1014
|
-
} from '@ccms
|
|
1014
|
+
} from '@actschurch/ccms-sdk/realtime/presence';</p>
|
|
1015
1015
|
|
|
1016
1016
|
<p>function ChatRoom() {
|
|
1017
1017
|
// Main presence hook
|
|
@@ -1047,7 +1047,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1047
1047
|
useApiLogs,
|
|
1048
1048
|
useQueryLogs,
|
|
1049
1049
|
useDashboard,
|
|
1050
|
-
} from '@ccms
|
|
1050
|
+
} from '@actschurch/ccms-sdk/realtime/logs';</p>
|
|
1051
1051
|
|
|
1052
1052
|
<p>function LogMonitor() {
|
|
1053
1053
|
// Application logs
|
|
@@ -1087,7 +1087,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1087
1087
|
<pre><code class="language-tsx">// ⚠️ DEPRECATED: These hooks are deprecated and will be removed in v2.0.0
|
|
1088
1088
|
<p>// Use the new hooks above instead</p>
|
|
1089
1089
|
|
|
1090
|
-
<p>import { useRealtimeEvent, useConnectionState } from '@ccms
|
|
1090
|
+
<p>import { useRealtimeEvent, useConnectionState } from '@actschurch/ccms-sdk';</p>
|
|
1091
1091
|
|
|
1092
1092
|
<p>function OldComponent() {
|
|
1093
1093
|
const connectionState = useConnectionState(); // Use usePresence() instead
|
|
@@ -1112,7 +1112,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1112
1112
|
useClipboard,
|
|
1113
1113
|
useClickOutside,
|
|
1114
1114
|
useKeyPress,
|
|
1115
|
-
} from '@ccms
|
|
1115
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1116
1116
|
|
|
1117
1117
|
<p>function SearchComponent() {
|
|
1118
1118
|
const [search, setSearch] = useState('');
|
|
@@ -1150,7 +1150,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1150
1150
|
|
|
1151
1151
|
<h4>Permission Components</h4>
|
|
1152
1152
|
|
|
1153
|
-
<pre><code class="language-tsx">import { Can, RequireAuth, RequireRole, RequireRight } from '@ccms
|
|
1153
|
+
<pre><code class="language-tsx">import { Can, RequireAuth, RequireRole, RequireRight } from '@actschurch/ccms-sdk';
|
|
1154
1154
|
|
|
1155
1155
|
<p>function App() {
|
|
1156
1156
|
return (
|
|
@@ -1188,7 +1188,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1188
1188
|
|
|
1189
1189
|
<h4>Error Boundary</h4>
|
|
1190
1190
|
|
|
1191
|
-
<pre><code class="language-tsx">import { ErrorBoundary } from '@ccms
|
|
1191
|
+
<pre><code class="language-tsx">import { ErrorBoundary } from '@actschurch/ccms-sdk';
|
|
1192
1192
|
|
|
1193
1193
|
<p>function App() {
|
|
1194
1194
|
return (
|
|
@@ -1215,7 +1215,7 @@ throw new CCMSError('Something went wrong', {
|
|
|
1215
1215
|
<pre><code class="language-typescript">// In your app entry point (App.tsx or index.js)
|
|
1216
1216
|
<p>import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
1217
1217
|
import NetInfo from '@react-native-community/netinfo';
|
|
1218
|
-
import { setGlobalStorage, setGlobalNetworkStatus } from '@ccms
|
|
1218
|
+
import { setGlobalStorage, setGlobalNetworkStatus } from '@actschurch/ccms-sdk';</p>
|
|
1219
1219
|
|
|
1220
1220
|
<p>// Configure storage (do this before using any SDK features)
|
|
1221
1221
|
setGlobalStorage(AsyncStorage);</p>
|
|
@@ -1236,7 +1236,7 @@ setGlobalNetworkStatus({
|
|
|
1236
1236
|
<h3>Use with Expo SecureStore</h3>
|
|
1237
1237
|
|
|
1238
1238
|
<pre><code class="language-typescript">import * as SecureStore from 'expo-secure-store';
|
|
1239
|
-
<p>import { SecureStorageAdapter, AuthManager } from '@ccms
|
|
1239
|
+
<p>import { SecureStorageAdapter, AuthManager } from '@actschurch/ccms-sdk';</p>
|
|
1240
1240
|
|
|
1241
1241
|
<p>const authManager = new AuthManager(http, {
|
|
1242
1242
|
storage: new SecureStorageAdapter(SecureStore),
|
|
@@ -1359,7 +1359,7 @@ setGlobalNetworkStatus({
|
|
|
1359
1359
|
|
|
1360
1360
|
<h3>Using Services</h3>
|
|
1361
1361
|
|
|
1362
|
-
<pre><code class="language-typescript">import { MemberService, TaskService } from '@ccms
|
|
1362
|
+
<pre><code class="language-typescript">import { MemberService, TaskService } from '@actschurch/ccms-sdk';
|
|
1363
1363
|
|
|
1364
1364
|
<p>// Initialize services with HTTP client
|
|
1365
1365
|
const memberService = new MemberService(http);
|
|
@@ -1419,7 +1419,7 @@ await taskService.addComment('task-789', 'Completed the follow-up
|
|
|
1419
1419
|
useFeedbackServices,
|
|
1420
1420
|
useSystemServices,
|
|
1421
1421
|
useGeneratorsServices,
|
|
1422
|
-
} from '@ccms
|
|
1422
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1423
1423
|
|
|
1424
1424
|
<p>function TaskList() {
|
|
1425
1425
|
const { task, taskStatus, taskPriority } = useTaskServices();
|
|
@@ -1469,7 +1469,7 @@ function MeetingScheduler() {
|
|
|
1469
1469
|
|
|
1470
1470
|
<p>You can create custom services by extending the base service class:</p>
|
|
1471
1471
|
|
|
1472
|
-
<pre><code class="language-typescript">import { BaseService } from '@ccms
|
|
1472
|
+
<pre><code class="language-typescript">import { BaseService } from '@actschurch/ccms-sdk';
|
|
1473
1473
|
|
|
1474
1474
|
<p>class CustomService extends BaseService {
|
|
1475
1475
|
constructor(http: HttpClient) {
|
|
@@ -1567,7 +1567,7 @@ await memberService.deleteMany(['member-3', 'member-4']);</c
|
|
|
1567
1567
|
getInitials,
|
|
1568
1568
|
pluralize,
|
|
1569
1569
|
similarity,
|
|
1570
|
-
} from '@ccms
|
|
1570
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1571
1571
|
|
|
1572
1572
|
<p>capitalize('hello world'); // "Hello world"
|
|
1573
1573
|
toCamelCase('hello-world'); // "helloWorld"
|
|
@@ -1591,7 +1591,7 @@ similarity('hello', 'hallo'); // 0.8</code></pre></p>
|
|
|
1591
1591
|
toOrdinal,
|
|
1592
1592
|
formatFileSize,
|
|
1593
1593
|
formatDurationFromSeconds,
|
|
1594
|
-
} from '@ccms
|
|
1594
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1595
1595
|
|
|
1596
1596
|
<p>formatCurrency(1234.56, 'USD'); // "$1,234.56"
|
|
1597
1597
|
formatNumber(1234567); // "1,234,567"
|
|
@@ -1618,7 +1618,7 @@ formatDurationFromSeconds(3661); // "1:01:01"</code></pre></p>
|
|
|
1618
1618
|
fromNow,
|
|
1619
1619
|
toUnix,
|
|
1620
1620
|
fromUnix,
|
|
1621
|
-
} from '@ccms
|
|
1621
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1622
1622
|
|
|
1623
1623
|
<p>formatDate(new Date(), 'YYYY-MM-DD'); // "2024-01-15"
|
|
1624
1624
|
addDays(new Date(), 7); // Date 7 days from now
|
|
@@ -1642,7 +1642,7 @@ isWeekend(new Date()); // true/false</code></pre></p>
|
|
|
1642
1642
|
union,
|
|
1643
1643
|
flatten,
|
|
1644
1644
|
moveItem,
|
|
1645
|
-
} from '@ccms
|
|
1645
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1646
1646
|
|
|
1647
1647
|
<p>unique([1, 2, 2, 3]); // [1, 2, 3]
|
|
1648
1648
|
uniqueBy(users, 'email'); // Remove duplicates by email
|
|
@@ -1669,7 +1669,7 @@ sample(items, 3); // Random 3 items</code></pre></p>
|
|
|
1669
1669
|
isEmpty,
|
|
1670
1670
|
mapValues,
|
|
1671
1671
|
filterObject,
|
|
1672
|
-
} from '@ccms
|
|
1672
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1673
1673
|
|
|
1674
1674
|
<p>deepClone(complexObject);
|
|
1675
1675
|
deepMerge(defaults, userConfig);
|
|
@@ -1698,7 +1698,7 @@ diff(original, modified); // { changed: 'fields' }</code></pre></p>
|
|
|
1698
1698
|
validatePassword,
|
|
1699
1699
|
validateUsername,
|
|
1700
1700
|
validateAll,
|
|
1701
|
-
} from '@ccms
|
|
1701
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1702
1702
|
|
|
1703
1703
|
<p>isEmail('test@example.com'); // true
|
|
1704
1704
|
isPhoneNumber('+1-555-123-4567'); // true
|
|
@@ -1730,7 +1730,7 @@ validateAll([
|
|
|
1730
1730
|
isLightColor,
|
|
1731
1731
|
mix,
|
|
1732
1732
|
generatePalette,
|
|
1733
|
-
} from '@ccms
|
|
1733
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1734
1734
|
|
|
1735
1735
|
<p>hexToRgb('#ff5500'); // { r: 255, g: 85, b: 0 }
|
|
1736
1736
|
rgbToHex(255, 85, 0); // "#ff5500"
|
|
@@ -1754,7 +1754,7 @@ generatePalette('#ff5500', 5); // { light: [...], dark: [...] }</code>
|
|
|
1754
1754
|
isIOS,
|
|
1755
1755
|
isAndroid,
|
|
1756
1756
|
getBrowserInfo,
|
|
1757
|
-
} from '@ccms
|
|
1757
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1758
1758
|
|
|
1759
1759
|
<p>if (isProduction()) {
|
|
1760
1760
|
// Production-only code
|
|
@@ -1788,7 +1788,7 @@ generatePalette('#ff5500', 5); // { light: [...], dark: [...] }</code>
|
|
|
1788
1788
|
getCurrentBreakpoint,
|
|
1789
1789
|
isAtLeast,
|
|
1790
1790
|
isAtMost,
|
|
1791
|
-
} from '@ccms
|
|
1791
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1792
1792
|
|
|
1793
1793
|
<p>const screen = getScreenInfo(); // { width, height, pixelRatio, orientation }
|
|
1794
1794
|
const device = getDeviceType(); // 'phone' | 'tablet' | 'desktop'
|
|
@@ -1819,7 +1819,7 @@ if (isAtLeast('md')) {
|
|
|
1819
1819
|
fetchWithRetry,
|
|
1820
1820
|
createQueryString,
|
|
1821
1821
|
buildUrl,
|
|
1822
|
-
} from '@ccms
|
|
1822
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1823
1823
|
|
|
1824
1824
|
<p>// Create responses
|
|
1825
1825
|
const success = createSuccessResponse(data, 'Operation successful');
|
|
@@ -1862,7 +1862,7 @@ const url = buildUrl('https://api.example.com', '/users', {
|
|
|
1862
1862
|
ValidationError,
|
|
1863
1863
|
NetworkError,
|
|
1864
1864
|
TimeoutError,
|
|
1865
|
-
} from '@ccms
|
|
1865
|
+
} from '@actschurch/ccms-sdk';</p>
|
|
1866
1866
|
|
|
1867
1867
|
<p>// Safe execution with fallback
|
|
1868
1868
|
const result = safeTry(() => JSON.parse(input), {});</p>
|
|
@@ -1926,7 +1926,7 @@ const message = formatErrorForUser(error);
|
|
|
1926
1926
|
Address,</p>
|
|
1927
1927
|
|
|
1928
1928
|
<p> // And many more...
|
|
1929
|
-
} from '@ccms
|
|
1929
|
+
} from '@actschurch/ccms-sdk';</code></pre></p>
|
|
1930
1930
|
|
|
1931
1931
|
<hr>
|
|
1932
1932
|
|
|
@@ -1942,7 +1942,7 @@ const message = formatErrorForUser(error);
|
|
|
1942
1942
|
createMockUser,
|
|
1943
1943
|
createMockPagedResult,
|
|
1944
1944
|
TestProvider,
|
|
1945
|
-
} from '@ccms
|
|
1945
|
+
} from '@actschurch/ccms-sdk/testing';</p>
|
|
1946
1946
|
|
|
1947
1947
|
<p>// In your tests
|
|
1948
1948
|
describe('MyComponent', () => {
|
|
@@ -2424,22 +2424,22 @@ const mockUser = createMockUser({
|
|
|
2424
2424
|
<tr>
|
|
2425
2425
|
<td><code>RealtimeClient</code></td>
|
|
2426
2426
|
<td><code>PresenceClient</code>, <code>ApplicationLogsClient</code>, etc.</td>
|
|
2427
|
-
<td><code>@ccms
|
|
2427
|
+
<td><code>@actschurch/ccms-sdk/realtime/*</code></td>
|
|
2428
2428
|
</tr>
|
|
2429
2429
|
<tr>
|
|
2430
2430
|
<td><code>useConnectionState()</code></td>
|
|
2431
2431
|
<td><code>usePresence().state</code></td>
|
|
2432
|
-
<td><code>@ccms
|
|
2432
|
+
<td><code>@actschurch/ccms-sdk/realtime/presence</code></td>
|
|
2433
2433
|
</tr>
|
|
2434
2434
|
<tr>
|
|
2435
2435
|
<td><code>usePresence()</code></td>
|
|
2436
2436
|
<td><code>usePresence()</code> (new API)</td>
|
|
2437
|
-
<td><code>@ccms
|
|
2437
|
+
<td><code>@actschurch/ccms-sdk/realtime/presence</code></td>
|
|
2438
2438
|
</tr>
|
|
2439
2439
|
<tr>
|
|
2440
2440
|
<td><code>useRealtimeEvent()</code></td>
|
|
2441
2441
|
<td><code>useApplicationLogs()</code>, <code>useApiLogs()</code>, etc.</td>
|
|
2442
|
-
<td><code>@ccms
|
|
2442
|
+
<td><code>@actschurch/ccms-sdk/realtime/logs</code></td>
|
|
2443
2443
|
</tr>
|
|
2444
2444
|
</tbody>
|
|
2445
2445
|
</table>For detailed migration instructions, see the <a href="src/realtime/README.md#migration-guide">Realtime Module Documentation</a>.</p>
|