@typecall/admin-sdk 0.1.3 → 0.2.1
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.md +33 -0
- package/dist/fabric/common/call.cjs +4 -0
- package/dist/fabric/common/call.cjs.map +1 -0
- package/dist/fabric/common/call.d.cts +12 -0
- package/dist/fabric/common/call.d.ts +12 -0
- package/dist/fabric/common/call.js +3 -0
- package/dist/fabric/common/call.js.map +1 -0
- package/dist/fabric/common/conversation.cjs +4 -0
- package/dist/fabric/common/conversation.cjs.map +1 -0
- package/dist/fabric/common/conversation.d.cts +13 -0
- package/dist/fabric/common/conversation.d.ts +13 -0
- package/dist/fabric/common/conversation.js +3 -0
- package/dist/fabric/common/conversation.js.map +1 -0
- package/dist/fabric/common/country.cjs +4 -0
- package/dist/fabric/common/country.cjs.map +1 -0
- package/dist/fabric/common/country.d.cts +3 -0
- package/dist/fabric/common/country.d.ts +3 -0
- package/dist/fabric/common/country.js +3 -0
- package/dist/fabric/common/country.js.map +1 -0
- package/dist/fabric/common/date.cjs +4 -0
- package/dist/fabric/common/date.cjs.map +1 -0
- package/dist/fabric/common/date.d.cts +4 -0
- package/dist/fabric/common/date.d.ts +4 -0
- package/dist/fabric/common/date.js +3 -0
- package/dist/fabric/common/date.js.map +1 -0
- package/dist/fabric/common/entity.cjs +4 -0
- package/dist/fabric/common/entity.cjs.map +1 -0
- package/dist/fabric/common/entity.d.cts +9 -0
- package/dist/fabric/common/entity.d.ts +9 -0
- package/dist/fabric/common/entity.js +3 -0
- package/dist/fabric/common/entity.js.map +1 -0
- package/dist/fabric/common/field.cjs +4 -0
- package/dist/fabric/common/field.cjs.map +1 -0
- package/dist/fabric/common/field.d.cts +8 -0
- package/dist/fabric/common/field.d.ts +8 -0
- package/dist/fabric/common/field.js +3 -0
- package/dist/fabric/common/field.js.map +1 -0
- package/dist/fabric/common/handle.cjs +18 -0
- package/dist/fabric/common/handle.cjs.map +1 -0
- package/dist/fabric/common/handle.d.cts +20 -0
- package/dist/fabric/common/handle.d.ts +20 -0
- package/dist/fabric/common/handle.js +11 -0
- package/dist/fabric/common/handle.js.map +1 -0
- package/dist/fabric/common/language.cjs +4 -0
- package/dist/fabric/common/language.cjs.map +1 -0
- package/dist/fabric/common/language.d.cts +3 -0
- package/dist/fabric/common/language.d.ts +3 -0
- package/dist/fabric/common/language.js +3 -0
- package/dist/fabric/common/language.js.map +1 -0
- package/dist/fabric/common/money.cjs +4 -0
- package/dist/fabric/common/money.cjs.map +1 -0
- package/dist/fabric/common/money.d.cts +7 -0
- package/dist/fabric/common/money.d.ts +7 -0
- package/dist/fabric/common/money.js +3 -0
- package/dist/fabric/common/money.js.map +1 -0
- package/dist/fabric/common/note.cjs +4 -0
- package/dist/fabric/common/note.cjs.map +1 -0
- package/dist/fabric/common/note.d.cts +10 -0
- package/dist/fabric/common/note.d.ts +10 -0
- package/dist/fabric/common/note.js +3 -0
- package/dist/fabric/common/note.js.map +1 -0
- package/dist/fabric/common/region.cjs +4 -0
- package/dist/fabric/common/region.cjs.map +1 -0
- package/dist/fabric/common/region.d.cts +3 -0
- package/dist/fabric/common/region.d.ts +3 -0
- package/dist/fabric/common/region.js +3 -0
- package/dist/fabric/common/region.js.map +1 -0
- package/dist/fabric/common/user.cjs +4 -0
- package/dist/fabric/common/user.cjs.map +1 -0
- package/dist/fabric/common/user.d.cts +4 -0
- package/dist/fabric/common/user.d.ts +4 -0
- package/dist/fabric/common/user.js +3 -0
- package/dist/fabric/common/user.js.map +1 -0
- package/dist/fabric/domains/account/account.cjs +4 -0
- package/dist/fabric/domains/account/account.cjs.map +1 -0
- package/dist/fabric/domains/account/account.d.cts +58 -0
- package/dist/fabric/domains/account/account.d.ts +58 -0
- package/dist/fabric/domains/account/account.js +3 -0
- package/dist/fabric/domains/account/account.js.map +1 -0
- package/dist/fabric/domains/account/device.cjs +4 -0
- package/dist/fabric/domains/account/device.cjs.map +1 -0
- package/dist/fabric/domains/account/device.d.cts +29 -0
- package/dist/fabric/domains/account/device.d.ts +29 -0
- package/dist/fabric/domains/account/device.js +3 -0
- package/dist/fabric/domains/account/device.js.map +1 -0
- package/dist/fabric/domains/account/token.cjs +4 -0
- package/dist/fabric/domains/account/token.cjs.map +1 -0
- package/dist/fabric/domains/account/token.d.cts +7 -0
- package/dist/fabric/domains/account/token.d.ts +7 -0
- package/dist/fabric/domains/account/token.js +3 -0
- package/dist/fabric/domains/account/token.js.map +1 -0
- package/dist/fabric/domains/analytics/call.cjs +4 -0
- package/dist/fabric/domains/analytics/call.cjs.map +1 -0
- package/dist/fabric/domains/analytics/call.d.cts +288 -0
- package/dist/fabric/domains/analytics/call.d.ts +288 -0
- package/dist/fabric/domains/analytics/call.js +3 -0
- package/dist/fabric/domains/analytics/call.js.map +1 -0
- package/dist/fabric/domains/analytics/charge.cjs +4 -0
- package/dist/fabric/domains/analytics/charge.cjs.map +1 -0
- package/dist/fabric/domains/analytics/charge.d.cts +14 -0
- package/dist/fabric/domains/analytics/charge.d.ts +14 -0
- package/dist/fabric/domains/analytics/charge.js +3 -0
- package/dist/fabric/domains/analytics/charge.js.map +1 -0
- package/dist/fabric/domains/analytics/utterance.cjs +4 -0
- package/dist/fabric/domains/analytics/utterance.cjs.map +1 -0
- package/dist/fabric/domains/analytics/utterance.d.cts +39 -0
- package/dist/fabric/domains/analytics/utterance.d.ts +39 -0
- package/dist/fabric/domains/analytics/utterance.js +3 -0
- package/dist/fabric/domains/analytics/utterance.js.map +1 -0
- package/dist/fabric/domains/phone/call.cjs +4 -0
- package/dist/fabric/domains/phone/call.cjs.map +1 -0
- package/dist/fabric/domains/phone/call.d.cts +7 -0
- package/dist/fabric/domains/phone/call.d.ts +7 -0
- package/dist/fabric/domains/phone/call.js +3 -0
- package/dist/fabric/domains/phone/call.js.map +1 -0
- package/dist/fabric/domains/phone/command.cjs +4 -0
- package/dist/fabric/domains/phone/command.cjs.map +1 -0
- package/dist/fabric/domains/phone/command.d.cts +142 -0
- package/dist/fabric/domains/phone/command.d.ts +142 -0
- package/dist/fabric/domains/phone/command.js +3 -0
- package/dist/fabric/domains/phone/command.js.map +1 -0
- package/dist/fabric/domains/phone/endpoint.cjs +4 -0
- package/dist/fabric/domains/phone/endpoint.cjs.map +1 -0
- package/dist/fabric/domains/phone/endpoint.d.cts +37 -0
- package/dist/fabric/domains/phone/endpoint.d.ts +37 -0
- package/dist/fabric/domains/phone/endpoint.js +3 -0
- package/dist/fabric/domains/phone/endpoint.js.map +1 -0
- package/dist/fabric/domains/phone/state.cjs +4 -0
- package/dist/fabric/domains/phone/state.cjs.map +1 -0
- package/dist/fabric/domains/phone/state.d.cts +42 -0
- package/dist/fabric/domains/phone/state.d.ts +42 -0
- package/dist/fabric/domains/phone/state.js +3 -0
- package/dist/fabric/domains/phone/state.js.map +1 -0
- package/dist/fabric/domains/workspace/business_hours.cjs +4 -0
- package/dist/fabric/domains/workspace/business_hours.cjs.map +1 -0
- package/dist/fabric/domains/workspace/business_hours.d.cts +65 -0
- package/dist/fabric/domains/workspace/business_hours.d.ts +65 -0
- package/dist/fabric/domains/workspace/business_hours.js +3 -0
- package/dist/fabric/domains/workspace/business_hours.js.map +1 -0
- package/dist/fabric/domains/workspace/channel.cjs +4 -0
- package/dist/fabric/domains/workspace/channel.cjs.map +1 -0
- package/dist/fabric/domains/workspace/channel.d.cts +103 -0
- package/dist/fabric/domains/workspace/channel.d.ts +103 -0
- package/dist/fabric/domains/workspace/channel.js +3 -0
- package/dist/fabric/domains/workspace/channel.js.map +1 -0
- package/dist/fabric/domains/workspace/channel_number.cjs +4 -0
- package/dist/fabric/domains/workspace/channel_number.cjs.map +1 -0
- package/dist/fabric/domains/workspace/channel_number.d.cts +53 -0
- package/dist/fabric/domains/workspace/channel_number.d.ts +53 -0
- package/dist/fabric/domains/workspace/channel_number.js +3 -0
- package/dist/fabric/domains/workspace/channel_number.js.map +1 -0
- package/dist/fabric/domains/workspace/channel_user.cjs +4 -0
- package/dist/fabric/domains/workspace/channel_user.cjs.map +1 -0
- package/dist/fabric/domains/workspace/channel_user.d.cts +23 -0
- package/dist/fabric/domains/workspace/channel_user.d.ts +23 -0
- package/dist/fabric/domains/workspace/channel_user.js +3 -0
- package/dist/fabric/domains/workspace/channel_user.js.map +1 -0
- package/dist/fabric/domains/workspace/chat.cjs +4 -0
- package/dist/fabric/domains/workspace/chat.cjs.map +1 -0
- package/dist/fabric/domains/workspace/chat.d.cts +43 -0
- package/dist/fabric/domains/workspace/chat.d.ts +43 -0
- package/dist/fabric/domains/workspace/chat.js +3 -0
- package/dist/fabric/domains/workspace/chat.js.map +1 -0
- package/dist/fabric/domains/workspace/chat_user.cjs +4 -0
- package/dist/fabric/domains/workspace/chat_user.cjs.map +1 -0
- package/dist/fabric/domains/workspace/chat_user.d.cts +23 -0
- package/dist/fabric/domains/workspace/chat_user.d.ts +23 -0
- package/dist/fabric/domains/workspace/chat_user.js +3 -0
- package/dist/fabric/domains/workspace/chat_user.js.map +1 -0
- package/dist/fabric/domains/workspace/communication.cjs +4 -0
- package/dist/fabric/domains/workspace/communication.cjs.map +1 -0
- package/dist/fabric/domains/workspace/communication.d.cts +112 -0
- package/dist/fabric/domains/workspace/communication.d.ts +112 -0
- package/dist/fabric/domains/workspace/communication.js +3 -0
- package/dist/fabric/domains/workspace/communication.js.map +1 -0
- package/dist/fabric/domains/workspace/company.cjs +4 -0
- package/dist/fabric/domains/workspace/company.cjs.map +1 -0
- package/dist/fabric/domains/workspace/company.d.cts +22 -0
- package/dist/fabric/domains/workspace/company.d.ts +22 -0
- package/dist/fabric/domains/workspace/company.js +3 -0
- package/dist/fabric/domains/workspace/company.js.map +1 -0
- package/dist/fabric/domains/workspace/contact.cjs +4 -0
- package/dist/fabric/domains/workspace/contact.cjs.map +1 -0
- package/dist/fabric/domains/workspace/contact.d.cts +50 -0
- package/dist/fabric/domains/workspace/contact.d.ts +50 -0
- package/dist/fabric/domains/workspace/contact.js +3 -0
- package/dist/fabric/domains/workspace/contact.js.map +1 -0
- package/dist/fabric/domains/workspace/contact_channel.cjs +4 -0
- package/dist/fabric/domains/workspace/contact_channel.cjs.map +1 -0
- package/dist/fabric/domains/workspace/contact_channel.d.cts +23 -0
- package/dist/fabric/domains/workspace/contact_channel.d.ts +23 -0
- package/dist/fabric/domains/workspace/contact_channel.js +3 -0
- package/dist/fabric/domains/workspace/contact_channel.js.map +1 -0
- package/dist/fabric/domains/workspace/contact_company.cjs +4 -0
- package/dist/fabric/domains/workspace/contact_company.cjs.map +1 -0
- package/dist/fabric/domains/workspace/contact_company.d.cts +22 -0
- package/dist/fabric/domains/workspace/contact_company.d.ts +22 -0
- package/dist/fabric/domains/workspace/contact_company.js +3 -0
- package/dist/fabric/domains/workspace/contact_company.js.map +1 -0
- package/dist/fabric/domains/workspace/domain.cjs +4 -0
- package/dist/fabric/domains/workspace/domain.cjs.map +1 -0
- package/dist/fabric/domains/workspace/domain.d.cts +21 -0
- package/dist/fabric/domains/workspace/domain.d.ts +21 -0
- package/dist/fabric/domains/workspace/domain.js +3 -0
- package/dist/fabric/domains/workspace/domain.js.map +1 -0
- package/dist/fabric/domains/workspace/file.cjs +4 -0
- package/dist/fabric/domains/workspace/file.cjs.map +1 -0
- package/dist/fabric/domains/workspace/file.d.cts +25 -0
- package/dist/fabric/domains/workspace/file.d.ts +25 -0
- package/dist/fabric/domains/workspace/file.js +3 -0
- package/dist/fabric/domains/workspace/file.js.map +1 -0
- package/dist/fabric/domains/workspace/integration.cjs +4 -0
- package/dist/fabric/domains/workspace/integration.cjs.map +1 -0
- package/dist/fabric/domains/workspace/integration.d.cts +36 -0
- package/dist/fabric/domains/workspace/integration.d.ts +36 -0
- package/dist/fabric/domains/workspace/integration.js +3 -0
- package/dist/fabric/domains/workspace/integration.js.map +1 -0
- package/dist/fabric/domains/workspace/integration_channel.cjs +4 -0
- package/dist/fabric/domains/workspace/integration_channel.cjs.map +1 -0
- package/dist/fabric/domains/workspace/integration_channel.d.cts +23 -0
- package/dist/fabric/domains/workspace/integration_channel.d.ts +23 -0
- package/dist/fabric/domains/workspace/integration_channel.js +3 -0
- package/dist/fabric/domains/workspace/integration_channel.js.map +1 -0
- package/dist/fabric/domains/workspace/invoice.cjs +4 -0
- package/dist/fabric/domains/workspace/invoice.cjs.map +1 -0
- package/dist/fabric/domains/workspace/invoice.d.cts +30 -0
- package/dist/fabric/domains/workspace/invoice.d.ts +30 -0
- package/dist/fabric/domains/workspace/invoice.js +3 -0
- package/dist/fabric/domains/workspace/invoice.js.map +1 -0
- package/dist/fabric/domains/workspace/payment_method.cjs +4 -0
- package/dist/fabric/domains/workspace/payment_method.cjs.map +1 -0
- package/dist/fabric/domains/workspace/payment_method.d.cts +26 -0
- package/dist/fabric/domains/workspace/payment_method.d.ts +26 -0
- package/dist/fabric/domains/workspace/payment_method.js +3 -0
- package/dist/fabric/domains/workspace/payment_method.js.map +1 -0
- package/dist/fabric/domains/workspace/phone.cjs +4 -0
- package/dist/fabric/domains/workspace/phone.cjs.map +1 -0
- package/dist/fabric/domains/workspace/phone.d.cts +36 -0
- package/dist/fabric/domains/workspace/phone.d.ts +36 -0
- package/dist/fabric/domains/workspace/phone.js +3 -0
- package/dist/fabric/domains/workspace/phone.js.map +1 -0
- package/dist/fabric/domains/workspace/phone_number.cjs +4 -0
- package/dist/fabric/domains/workspace/phone_number.cjs.map +1 -0
- package/dist/fabric/domains/workspace/phone_number.d.cts +178 -0
- package/dist/fabric/domains/workspace/phone_number.d.ts +178 -0
- package/dist/fabric/domains/workspace/phone_number.js +3 -0
- package/dist/fabric/domains/workspace/phone_number.js.map +1 -0
- package/dist/fabric/domains/workspace/prompt.cjs +4 -0
- package/dist/fabric/domains/workspace/prompt.cjs.map +1 -0
- package/dist/fabric/domains/workspace/prompt.d.cts +38 -0
- package/dist/fabric/domains/workspace/prompt.d.ts +38 -0
- package/dist/fabric/domains/workspace/prompt.js +3 -0
- package/dist/fabric/domains/workspace/prompt.js.map +1 -0
- package/dist/fabric/domains/workspace/sip_trunk.cjs +4 -0
- package/dist/fabric/domains/workspace/sip_trunk.cjs.map +1 -0
- package/dist/fabric/domains/workspace/sip_trunk.d.cts +31 -0
- package/dist/fabric/domains/workspace/sip_trunk.d.ts +31 -0
- package/dist/fabric/domains/workspace/sip_trunk.js +3 -0
- package/dist/fabric/domains/workspace/sip_trunk.js.map +1 -0
- package/dist/fabric/domains/workspace/subscription.cjs +4 -0
- package/dist/fabric/domains/workspace/subscription.cjs.map +1 -0
- package/dist/fabric/domains/workspace/subscription.d.cts +57 -0
- package/dist/fabric/domains/workspace/subscription.d.ts +57 -0
- package/dist/fabric/domains/workspace/subscription.js +3 -0
- package/dist/fabric/domains/workspace/subscription.js.map +1 -0
- package/dist/fabric/domains/workspace/tag.cjs +4 -0
- package/dist/fabric/domains/workspace/tag.cjs.map +1 -0
- package/dist/fabric/domains/workspace/tag.d.cts +23 -0
- package/dist/fabric/domains/workspace/tag.d.ts +23 -0
- package/dist/fabric/domains/workspace/tag.js +3 -0
- package/dist/fabric/domains/workspace/tag.js.map +1 -0
- package/dist/fabric/domains/workspace/thread.cjs +4 -0
- package/dist/fabric/domains/workspace/thread.cjs.map +1 -0
- package/dist/fabric/domains/workspace/thread.d.cts +45 -0
- package/dist/fabric/domains/workspace/thread.d.ts +45 -0
- package/dist/fabric/domains/workspace/thread.js +3 -0
- package/dist/fabric/domains/workspace/thread.js.map +1 -0
- package/dist/fabric/domains/workspace/user.cjs +4 -0
- package/dist/fabric/domains/workspace/user.cjs.map +1 -0
- package/dist/fabric/domains/workspace/user.d.cts +61 -0
- package/dist/fabric/domains/workspace/user.d.ts +61 -0
- package/dist/fabric/domains/workspace/user.js +3 -0
- package/dist/fabric/domains/workspace/user.js.map +1 -0
- package/dist/fabric/domains/workspace/voice.cjs +4 -0
- package/dist/fabric/domains/workspace/voice.cjs.map +1 -0
- package/dist/fabric/domains/workspace/voice.d.cts +43 -0
- package/dist/fabric/domains/workspace/voice.d.ts +43 -0
- package/dist/fabric/domains/workspace/voice.js +3 -0
- package/dist/fabric/domains/workspace/voice.js.map +1 -0
- package/dist/fabric/domains/workspace/workspace.cjs +4 -0
- package/dist/fabric/domains/workspace/workspace.cjs.map +1 -0
- package/dist/fabric/domains/workspace/workspace.d.cts +37 -0
- package/dist/fabric/domains/workspace/workspace.d.ts +37 -0
- package/dist/fabric/domains/workspace/workspace.js +3 -0
- package/dist/fabric/domains/workspace/workspace.js.map +1 -0
- package/dist/fabric/services/account/account.cjs +4 -0
- package/dist/fabric/services/account/account.cjs.map +1 -0
- package/dist/fabric/services/account/account.d.cts +24 -0
- package/dist/fabric/services/account/account.d.ts +24 -0
- package/dist/fabric/services/account/account.js +3 -0
- package/dist/fabric/services/account/account.js.map +1 -0
- package/dist/fabric/services/account/client.cjs +106 -0
- package/dist/fabric/services/account/client.cjs.map +1 -0
- package/dist/fabric/services/account/client.d.cts +28 -0
- package/dist/fabric/services/account/client.d.ts +28 -0
- package/dist/fabric/services/account/client.js +104 -0
- package/dist/fabric/services/account/client.js.map +1 -0
- package/dist/fabric/services/rest/client/analytics.cjs +212 -0
- package/dist/fabric/services/rest/client/analytics.cjs.map +1 -0
- package/dist/fabric/services/rest/client/analytics.d.cts +37 -0
- package/dist/fabric/services/rest/client/analytics.d.ts +37 -0
- package/dist/fabric/services/rest/client/analytics.js +206 -0
- package/dist/fabric/services/rest/client/analytics.js.map +1 -0
- package/dist/fabric/services/rest/client/base.cjs +135 -0
- package/dist/fabric/services/rest/client/base.cjs.map +1 -0
- package/dist/fabric/services/rest/client/base.d.cts +66 -0
- package/dist/fabric/services/rest/client/base.d.ts +66 -0
- package/dist/fabric/services/rest/client/base.js +129 -0
- package/dist/fabric/services/rest/client/base.js.map +1 -0
- package/dist/fabric/services/rest/client/business_hours.cjs +196 -0
- package/dist/fabric/services/rest/client/business_hours.cjs.map +1 -0
- package/dist/fabric/services/rest/client/business_hours.d.cts +20 -0
- package/dist/fabric/services/rest/client/business_hours.d.ts +20 -0
- package/dist/fabric/services/rest/client/business_hours.js +190 -0
- package/dist/fabric/services/rest/client/business_hours.js.map +1 -0
- package/dist/fabric/services/rest/client/channel_numbers.cjs +198 -0
- package/dist/fabric/services/rest/client/channel_numbers.cjs.map +1 -0
- package/dist/fabric/services/rest/client/channel_numbers.d.cts +20 -0
- package/dist/fabric/services/rest/client/channel_numbers.d.ts +20 -0
- package/dist/fabric/services/rest/client/channel_numbers.js +192 -0
- package/dist/fabric/services/rest/client/channel_numbers.js.map +1 -0
- package/dist/fabric/services/rest/client/channels.cjs +196 -0
- package/dist/fabric/services/rest/client/channels.cjs.map +1 -0
- package/dist/fabric/services/rest/client/channels.d.cts +26 -0
- package/dist/fabric/services/rest/client/channels.d.ts +26 -0
- package/dist/fabric/services/rest/client/channels.js +190 -0
- package/dist/fabric/services/rest/client/channels.js.map +1 -0
- package/dist/fabric/services/rest/client/domains.cjs +186 -0
- package/dist/fabric/services/rest/client/domains.cjs.map +1 -0
- package/dist/fabric/services/rest/client/domains.d.cts +19 -0
- package/dist/fabric/services/rest/client/domains.d.ts +19 -0
- package/dist/fabric/services/rest/client/domains.js +180 -0
- package/dist/fabric/services/rest/client/domains.js.map +1 -0
- package/dist/fabric/services/rest/client/files.cjs +183 -0
- package/dist/fabric/services/rest/client/files.cjs.map +1 -0
- package/dist/fabric/services/rest/client/files.d.cts +19 -0
- package/dist/fabric/services/rest/client/files.d.ts +19 -0
- package/dist/fabric/services/rest/client/files.js +177 -0
- package/dist/fabric/services/rest/client/files.js.map +1 -0
- package/dist/fabric/services/rest/client/invoices.cjs +171 -0
- package/dist/fabric/services/rest/client/invoices.cjs.map +1 -0
- package/dist/fabric/services/rest/client/invoices.d.cts +18 -0
- package/dist/fabric/services/rest/client/invoices.d.ts +18 -0
- package/dist/fabric/services/rest/client/invoices.js +165 -0
- package/dist/fabric/services/rest/client/invoices.js.map +1 -0
- package/dist/fabric/services/rest/client/payment_methods.cjs +206 -0
- package/dist/fabric/services/rest/client/payment_methods.cjs.map +1 -0
- package/dist/fabric/services/rest/client/payment_methods.d.cts +20 -0
- package/dist/fabric/services/rest/client/payment_methods.d.ts +20 -0
- package/dist/fabric/services/rest/client/payment_methods.js +200 -0
- package/dist/fabric/services/rest/client/payment_methods.js.map +1 -0
- package/dist/fabric/services/rest/client/phone_numbers.cjs +181 -0
- package/dist/fabric/services/rest/client/phone_numbers.cjs.map +1 -0
- package/dist/fabric/services/rest/client/phone_numbers.d.cts +20 -0
- package/dist/fabric/services/rest/client/phone_numbers.d.ts +20 -0
- package/dist/fabric/services/rest/client/phone_numbers.js +175 -0
- package/dist/fabric/services/rest/client/phone_numbers.js.map +1 -0
- package/dist/fabric/services/rest/client/phones.cjs +191 -0
- package/dist/fabric/services/rest/client/phones.cjs.map +1 -0
- package/dist/fabric/services/rest/client/phones.d.cts +21 -0
- package/dist/fabric/services/rest/client/phones.d.ts +21 -0
- package/dist/fabric/services/rest/client/phones.js +185 -0
- package/dist/fabric/services/rest/client/phones.js.map +1 -0
- package/dist/fabric/services/rest/client/prompts.cjs +189 -0
- package/dist/fabric/services/rest/client/prompts.cjs.map +1 -0
- package/dist/fabric/services/rest/client/prompts.d.cts +21 -0
- package/dist/fabric/services/rest/client/prompts.d.ts +21 -0
- package/dist/fabric/services/rest/client/prompts.js +183 -0
- package/dist/fabric/services/rest/client/prompts.js.map +1 -0
- package/dist/fabric/services/rest/client/subscriptions.cjs +159 -0
- package/dist/fabric/services/rest/client/subscriptions.cjs.map +1 -0
- package/dist/fabric/services/rest/client/subscriptions.d.cts +16 -0
- package/dist/fabric/services/rest/client/subscriptions.d.ts +16 -0
- package/dist/fabric/services/rest/client/subscriptions.js +153 -0
- package/dist/fabric/services/rest/client/subscriptions.js.map +1 -0
- package/dist/fabric/services/rest/client/tags.cjs +186 -0
- package/dist/fabric/services/rest/client/tags.cjs.map +1 -0
- package/dist/fabric/services/rest/client/tags.d.cts +19 -0
- package/dist/fabric/services/rest/client/tags.d.ts +19 -0
- package/dist/fabric/services/rest/client/tags.js +180 -0
- package/dist/fabric/services/rest/client/tags.js.map +1 -0
- package/dist/fabric/services/rest/client/users.cjs +186 -0
- package/dist/fabric/services/rest/client/users.cjs.map +1 -0
- package/dist/fabric/services/rest/client/users.d.cts +21 -0
- package/dist/fabric/services/rest/client/users.d.ts +21 -0
- package/dist/fabric/services/rest/client/users.js +180 -0
- package/dist/fabric/services/rest/client/users.js.map +1 -0
- package/dist/fabric/services/rest/client/voices.cjs +174 -0
- package/dist/fabric/services/rest/client/voices.cjs.map +1 -0
- package/dist/fabric/services/rest/client/voices.d.cts +17 -0
- package/dist/fabric/services/rest/client/voices.d.ts +17 -0
- package/dist/fabric/services/rest/client/voices.js +168 -0
- package/dist/fabric/services/rest/client/voices.js.map +1 -0
- package/dist/fabric/services/rest/client/workspace.cjs +171 -0
- package/dist/fabric/services/rest/client/workspace.cjs.map +1 -0
- package/dist/fabric/services/rest/client/workspace.d.cts +16 -0
- package/dist/fabric/services/rest/client/workspace.d.ts +16 -0
- package/dist/fabric/services/rest/client/workspace.js +165 -0
- package/dist/fabric/services/rest/client/workspace.js.map +1 -0
- package/dist/fabric/services/rest/client.cjs +1096 -0
- package/dist/fabric/services/rest/client.cjs.map +1 -0
- package/dist/fabric/services/rest/client.d.cts +105 -0
- package/dist/fabric/services/rest/client.d.ts +105 -0
- package/dist/fabric/services/rest/client.js +1087 -0
- package/dist/fabric/services/rest/client.js.map +1 -0
- package/dist/fabric/services/rest/dto/analytics.cjs +4 -0
- package/dist/fabric/services/rest/dto/analytics.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/analytics.d.cts +11 -0
- package/dist/fabric/services/rest/dto/analytics.d.ts +11 -0
- package/dist/fabric/services/rest/dto/analytics.js +3 -0
- package/dist/fabric/services/rest/dto/analytics.js.map +1 -0
- package/dist/fabric/services/rest/dto/billing.cjs +13 -0
- package/dist/fabric/services/rest/dto/billing.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/billing.d.cts +3 -0
- package/dist/fabric/services/rest/dto/billing.d.ts +3 -0
- package/dist/fabric/services/rest/dto/billing.js +11 -0
- package/dist/fabric/services/rest/dto/billing.js.map +1 -0
- package/dist/fabric/services/rest/dto/business_hours.cjs +91 -0
- package/dist/fabric/services/rest/dto/business_hours.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/business_hours.d.cts +410 -0
- package/dist/fabric/services/rest/dto/business_hours.d.ts +410 -0
- package/dist/fabric/services/rest/dto/business_hours.js +81 -0
- package/dist/fabric/services/rest/dto/business_hours.js.map +1 -0
- package/dist/fabric/services/rest/dto/channel.cjs +76 -0
- package/dist/fabric/services/rest/dto/channel.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/channel.d.cts +171 -0
- package/dist/fabric/services/rest/dto/channel.d.ts +171 -0
- package/dist/fabric/services/rest/dto/channel.js +65 -0
- package/dist/fabric/services/rest/dto/channel.js.map +1 -0
- package/dist/fabric/services/rest/dto/channel_number.cjs +20 -0
- package/dist/fabric/services/rest/dto/channel_number.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/channel_number.d.cts +24 -0
- package/dist/fabric/services/rest/dto/channel_number.d.ts +24 -0
- package/dist/fabric/services/rest/dto/channel_number.js +17 -0
- package/dist/fabric/services/rest/dto/channel_number.js.map +1 -0
- package/dist/fabric/services/rest/dto/domain.cjs +14 -0
- package/dist/fabric/services/rest/dto/domain.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/domain.d.cts +12 -0
- package/dist/fabric/services/rest/dto/domain.d.ts +12 -0
- package/dist/fabric/services/rest/dto/domain.js +11 -0
- package/dist/fabric/services/rest/dto/domain.js.map +1 -0
- package/dist/fabric/services/rest/dto/file.cjs +4 -0
- package/dist/fabric/services/rest/dto/file.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/file.d.cts +9 -0
- package/dist/fabric/services/rest/dto/file.d.ts +9 -0
- package/dist/fabric/services/rest/dto/file.js +3 -0
- package/dist/fabric/services/rest/dto/file.js.map +1 -0
- package/dist/fabric/services/rest/dto/invoice.cjs +4 -0
- package/dist/fabric/services/rest/dto/invoice.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/invoice.d.cts +5 -0
- package/dist/fabric/services/rest/dto/invoice.d.ts +5 -0
- package/dist/fabric/services/rest/dto/invoice.js +3 -0
- package/dist/fabric/services/rest/dto/invoice.js.map +1 -0
- package/dist/fabric/services/rest/dto/payment-method.cjs +13 -0
- package/dist/fabric/services/rest/dto/payment-method.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/payment-method.d.cts +2 -0
- package/dist/fabric/services/rest/dto/payment-method.d.ts +2 -0
- package/dist/fabric/services/rest/dto/payment-method.js +11 -0
- package/dist/fabric/services/rest/dto/payment-method.js.map +1 -0
- package/dist/fabric/services/rest/dto/payment_method.cjs +13 -0
- package/dist/fabric/services/rest/dto/payment_method.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/payment_method.d.cts +12 -0
- package/dist/fabric/services/rest/dto/payment_method.d.ts +12 -0
- package/dist/fabric/services/rest/dto/payment_method.js +11 -0
- package/dist/fabric/services/rest/dto/payment_method.js.map +1 -0
- package/dist/fabric/services/rest/dto/phone.cjs +37 -0
- package/dist/fabric/services/rest/dto/phone.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/phone.d.cts +69 -0
- package/dist/fabric/services/rest/dto/phone.d.ts +69 -0
- package/dist/fabric/services/rest/dto/phone.js +32 -0
- package/dist/fabric/services/rest/dto/phone.js.map +1 -0
- package/dist/fabric/services/rest/dto/phone_number.cjs +15 -0
- package/dist/fabric/services/rest/dto/phone_number.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/phone_number.d.cts +11 -0
- package/dist/fabric/services/rest/dto/phone_number.d.ts +11 -0
- package/dist/fabric/services/rest/dto/phone_number.js +12 -0
- package/dist/fabric/services/rest/dto/phone_number.js.map +1 -0
- package/dist/fabric/services/rest/dto/prompt.cjs +34 -0
- package/dist/fabric/services/rest/dto/prompt.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/prompt.d.cts +62 -0
- package/dist/fabric/services/rest/dto/prompt.d.ts +62 -0
- package/dist/fabric/services/rest/dto/prompt.js +30 -0
- package/dist/fabric/services/rest/dto/prompt.js.map +1 -0
- package/dist/fabric/services/rest/dto/tag.cjs +25 -0
- package/dist/fabric/services/rest/dto/tag.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/tag.d.cts +38 -0
- package/dist/fabric/services/rest/dto/tag.d.ts +38 -0
- package/dist/fabric/services/rest/dto/tag.js +21 -0
- package/dist/fabric/services/rest/dto/tag.js.map +1 -0
- package/dist/fabric/services/rest/dto/user.cjs +36 -0
- package/dist/fabric/services/rest/dto/user.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/user.d.cts +76 -0
- package/dist/fabric/services/rest/dto/user.d.ts +76 -0
- package/dist/fabric/services/rest/dto/user.js +31 -0
- package/dist/fabric/services/rest/dto/user.js.map +1 -0
- package/dist/fabric/services/rest/dto/workspace.cjs +25 -0
- package/dist/fabric/services/rest/dto/workspace.cjs.map +1 -0
- package/dist/fabric/services/rest/dto/workspace.d.cts +50 -0
- package/dist/fabric/services/rest/dto/workspace.d.ts +50 -0
- package/dist/fabric/services/rest/dto/workspace.js +22 -0
- package/dist/fabric/services/rest/dto/workspace.js.map +1 -0
- package/dist/fabric/services/rest/errors.cjs +41 -0
- package/dist/fabric/services/rest/errors.cjs.map +1 -0
- package/dist/fabric/services/rest/errors.d.cts +12 -0
- package/dist/fabric/services/rest/errors.d.ts +12 -0
- package/dist/fabric/services/rest/errors.js +37 -0
- package/dist/fabric/services/rest/errors.js.map +1 -0
- package/dist/index.cjs +1353 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -6
- package/dist/index.d.ts +137 -6
- package/dist/index.js +1349 -14
- package/dist/index.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var MiniSearch = require('minisearch');
|
|
4
|
+
var nanostores = require('nanostores');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var MiniSearch__default = /*#__PURE__*/_interopDefault(MiniSearch);
|
|
9
|
+
|
|
10
|
+
// src/fabric/services/rest/client/base.ts
|
|
11
|
+
var BaseResourceClient = class {
|
|
12
|
+
constructor(transport) {
|
|
13
|
+
this.transport = transport;
|
|
14
|
+
}
|
|
15
|
+
transport;
|
|
16
|
+
items = /* @__PURE__ */ new Map();
|
|
17
|
+
isLoaded = false;
|
|
18
|
+
searchIndex;
|
|
19
|
+
_version = nanostores.atom(1);
|
|
20
|
+
$version = this._version;
|
|
21
|
+
get version() {
|
|
22
|
+
return this._version.get();
|
|
23
|
+
}
|
|
24
|
+
get loaded() {
|
|
25
|
+
return this.isLoaded;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns all items currently stored in cache.
|
|
29
|
+
*/
|
|
30
|
+
all() {
|
|
31
|
+
return Array.from(this.items.values());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Synchronously finds an item in cache by ID.
|
|
35
|
+
*/
|
|
36
|
+
find(id) {
|
|
37
|
+
return this.items.get(id);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Synchronously finds multiple items in cache by ID.
|
|
41
|
+
*/
|
|
42
|
+
getMany(...ids) {
|
|
43
|
+
const results = [];
|
|
44
|
+
for (const id of ids) {
|
|
45
|
+
const item = this.items.get(id);
|
|
46
|
+
if (item) results.push(item);
|
|
47
|
+
}
|
|
48
|
+
return results;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Searches cached items by search term using MiniSearch prefix matching.
|
|
52
|
+
* If search term is empty, returns all items.
|
|
53
|
+
*/
|
|
54
|
+
search(term) {
|
|
55
|
+
const trimmed = term.trim();
|
|
56
|
+
if (!trimmed || !this.searchIndex) {
|
|
57
|
+
return this.all();
|
|
58
|
+
}
|
|
59
|
+
const results = this.searchIndex.search(trimmed, { prefix: true });
|
|
60
|
+
const matched = [];
|
|
61
|
+
for (const r of results) {
|
|
62
|
+
const item = this.items.get(r.id);
|
|
63
|
+
if (item) matched.push(item);
|
|
64
|
+
}
|
|
65
|
+
return matched;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hook for subclasses to define what fields get indexed for search.
|
|
69
|
+
*/
|
|
70
|
+
extractSearchTerms(item) {
|
|
71
|
+
return Object.values(item).filter((v) => typeof v === "string" || typeof v === "number").join(" ").toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Adds or replaces an item in the search index.
|
|
75
|
+
*/
|
|
76
|
+
indexItem(item) {
|
|
77
|
+
if (!this.searchIndex) {
|
|
78
|
+
this.searchIndex = new MiniSearch__default.default({
|
|
79
|
+
fields: ["terms"],
|
|
80
|
+
storeFields: ["id"]
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const doc = { id: item.id, terms: this.extractSearchTerms(item) };
|
|
84
|
+
if (this.searchIndex.has(item.id)) {
|
|
85
|
+
this.searchIndex.replace(doc);
|
|
86
|
+
} else {
|
|
87
|
+
this.searchIndex.add(doc);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Sets or updates a single item in cache and search index.
|
|
92
|
+
*/
|
|
93
|
+
setItem(item) {
|
|
94
|
+
this.items.set(item.id, item);
|
|
95
|
+
this.indexItem(item);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Removes a single item from cache and search index.
|
|
99
|
+
*/
|
|
100
|
+
removeItem(id) {
|
|
101
|
+
this.items.delete(id);
|
|
102
|
+
if (this.searchIndex?.has(id)) {
|
|
103
|
+
this.searchIndex.discard(id);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Populates cache and search index with all items, marking the client as loaded.
|
|
108
|
+
*/
|
|
109
|
+
setAll(items) {
|
|
110
|
+
this.items.clear();
|
|
111
|
+
this.searchIndex?.removeAll();
|
|
112
|
+
for (const item of items) {
|
|
113
|
+
this.items.set(item.id, item);
|
|
114
|
+
this.indexItem(item);
|
|
115
|
+
}
|
|
116
|
+
this.isLoaded = true;
|
|
117
|
+
this.bump();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clears the in-memory cache and search index.
|
|
121
|
+
*/
|
|
122
|
+
clearCache() {
|
|
123
|
+
this.items.clear();
|
|
124
|
+
this.searchIndex?.removeAll();
|
|
125
|
+
this.isLoaded = false;
|
|
126
|
+
this.bump();
|
|
127
|
+
}
|
|
128
|
+
bump() {
|
|
129
|
+
this._version.set(this._version.get() + 1);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// src/fabric/services/rest/client/domains.ts
|
|
134
|
+
var DomainsClient = class extends BaseResourceClient {
|
|
135
|
+
extractSearchTerms(item) {
|
|
136
|
+
return item.domain.toLowerCase();
|
|
137
|
+
}
|
|
138
|
+
async listAll(force = false) {
|
|
139
|
+
if (this.isLoaded && !force) {
|
|
140
|
+
return this.all();
|
|
141
|
+
}
|
|
142
|
+
const items = await this.transport.requestData("/domains");
|
|
143
|
+
this.setAll(items);
|
|
144
|
+
return items;
|
|
145
|
+
}
|
|
146
|
+
async load(force = false) {
|
|
147
|
+
return this.listAll(force);
|
|
148
|
+
}
|
|
149
|
+
async get(id, force = false) {
|
|
150
|
+
if (!force) {
|
|
151
|
+
const cached = this.find(id);
|
|
152
|
+
if (cached) return cached;
|
|
153
|
+
}
|
|
154
|
+
const item = await this.transport.requestData(`/domains/${id}`);
|
|
155
|
+
this.setItem(item);
|
|
156
|
+
this.bump();
|
|
157
|
+
return item;
|
|
158
|
+
}
|
|
159
|
+
async create(data) {
|
|
160
|
+
const domain = await this.transport.requestData("/domains", {
|
|
161
|
+
method: "POST",
|
|
162
|
+
body: JSON.stringify(data)
|
|
163
|
+
});
|
|
164
|
+
this.setItem(domain);
|
|
165
|
+
this.bump();
|
|
166
|
+
return domain;
|
|
167
|
+
}
|
|
168
|
+
async update(id, data) {
|
|
169
|
+
const domain = await this.transport.requestData(`/domains/${id}`, {
|
|
170
|
+
method: "PATCH",
|
|
171
|
+
body: JSON.stringify(data)
|
|
172
|
+
});
|
|
173
|
+
this.setItem(domain);
|
|
174
|
+
this.bump();
|
|
175
|
+
return domain;
|
|
176
|
+
}
|
|
177
|
+
async delete(id) {
|
|
178
|
+
await this.transport.request(`/domains/${id}`, { method: "DELETE" });
|
|
179
|
+
this.removeItem(id);
|
|
180
|
+
this.bump();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
exports.DomainsClient = DomainsClient;
|
|
185
|
+
//# sourceMappingURL=domains.cjs.map
|
|
186
|
+
//# sourceMappingURL=domains.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fabric/services/rest/client/base.ts","../../../../../src/fabric/services/rest/client/domains.ts"],"names":["atom","MiniSearch"],"mappings":"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","file":"domains.cjs","sourcesContent":["import MiniSearch from \"minisearch\";\nimport { atom, type ReadableAtom, type WritableAtom } from \"nanostores\";\n\nexport type { ReadableAtom };\n\nexport interface RestTransport {\n request<T>(path: string, init?: RequestInit): Promise<T>;\n requestData<T>(path: string, init?: RequestInit): Promise<T>;\n requestBlob(path: string, init?: RequestInit): Promise<Blob>;\n}\n\nexport abstract class BaseResourceClient<T extends { id: string } = any> {\n protected readonly items = new Map<string, T>();\n protected isLoaded = false;\n protected searchIndex?: MiniSearch;\n\n private readonly _version: WritableAtom<number> = atom(1);\n\n readonly $version: ReadableAtom<number> = this._version;\n\n get version(): number {\n return this._version.get();\n }\n\n get loaded(): boolean {\n return this.isLoaded;\n }\n\n constructor(protected readonly transport: RestTransport) {}\n\n /**\n * Returns all items currently stored in cache.\n */\n all(): T[] {\n return Array.from(this.items.values());\n }\n\n /**\n * Synchronously finds an item in cache by ID.\n */\n find(id: string): T | undefined {\n return this.items.get(id);\n }\n\n /**\n * Synchronously finds multiple items in cache by ID.\n */\n getMany(...ids: string[]): T[] {\n const results: T[] = [];\n for (const id of ids) {\n const item = this.items.get(id);\n if (item) results.push(item);\n }\n return results;\n }\n\n /**\n * Searches cached items by search term using MiniSearch prefix matching.\n * If search term is empty, returns all items.\n */\n search(term: string): T[] {\n const trimmed = term.trim();\n if (!trimmed || !this.searchIndex) {\n return this.all();\n }\n const results = this.searchIndex.search(trimmed, { prefix: true });\n const matched: T[] = [];\n for (const r of results) {\n const item = this.items.get(r.id);\n if (item) matched.push(item);\n }\n return matched;\n }\n\n /**\n * Hook for subclasses to define what fields get indexed for search.\n */\n protected extractSearchTerms(item: T): string {\n return Object.values(item as Record<string, unknown>)\n .filter((v) => typeof v === \"string\" || typeof v === \"number\")\n .join(\" \")\n .toLowerCase();\n }\n\n /**\n * Adds or replaces an item in the search index.\n */\n protected indexItem(item: T): void {\n if (!this.searchIndex) {\n this.searchIndex = new MiniSearch({\n fields: [\"terms\"],\n storeFields: [\"id\"],\n });\n }\n const doc = { id: item.id, terms: this.extractSearchTerms(item) };\n if (this.searchIndex.has(item.id)) {\n this.searchIndex.replace(doc);\n } else {\n this.searchIndex.add(doc);\n }\n }\n\n /**\n * Sets or updates a single item in cache and search index.\n */\n protected setItem(item: T): void {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n\n /**\n * Removes a single item from cache and search index.\n */\n protected removeItem(id: string): void {\n this.items.delete(id);\n if (this.searchIndex?.has(id)) {\n this.searchIndex.discard(id);\n }\n }\n\n /**\n * Populates cache and search index with all items, marking the client as loaded.\n */\n protected setAll(items: T[]): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n for (const item of items) {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n this.isLoaded = true;\n this.bump();\n }\n\n /**\n * Clears the in-memory cache and search index.\n */\n clearCache(): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n this.isLoaded = false;\n this.bump();\n }\n\n bump(): void {\n this._version.set(this._version.get() + 1);\n }\n}\n","import type { Domain } from \"../../../domains/workspace/domain.js\";\nimport type {\n CreateDomainRequest,\n UpdateDomainRequest,\n} from \"../dto/domain.js\";\nimport { BaseResourceClient } from \"./base.js\";\n\nexport class DomainsClient extends BaseResourceClient<Domain> {\n protected override extractSearchTerms(item: Domain): string {\n return item.domain.toLowerCase();\n }\n\n async listAll(force = false): Promise<Domain[]> {\n if (this.isLoaded && !force) {\n return this.all();\n }\n const items = await this.transport.requestData<Domain[]>(\"/domains\");\n this.setAll(items);\n return items;\n }\n\n async load(force = false): Promise<Domain[]> {\n return this.listAll(force);\n }\n\n async get(id: string, force = false): Promise<Domain> {\n if (!force) {\n const cached = this.find(id);\n if (cached) return cached;\n }\n const item = await this.transport.requestData<Domain>(`/domains/${id}`);\n this.setItem(item);\n this.bump();\n return item;\n }\n\n async create(data: CreateDomainRequest): Promise<Domain> {\n const domain = await this.transport.requestData<Domain>(\"/domains\", {\n method: \"POST\",\n body: JSON.stringify(data),\n });\n this.setItem(domain);\n this.bump();\n return domain;\n }\n\n async update(id: string, data: UpdateDomainRequest): Promise<Domain> {\n const domain = await this.transport.requestData<Domain>(`/domains/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(data),\n });\n this.setItem(domain);\n this.bump();\n return domain;\n }\n\n async delete(id: string): Promise<void> {\n await this.transport.request<void>(`/domains/${id}`, { method: \"DELETE\" });\n this.removeItem(id);\n this.bump();\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Domain } from '../../../domains/workspace/domain.cjs';
|
|
2
|
+
import { CreateDomainRequest, UpdateDomainRequest } from '../dto/domain.cjs';
|
|
3
|
+
import { BaseResourceClient } from './base.cjs';
|
|
4
|
+
import '../../../common/entity.cjs';
|
|
5
|
+
import 'zod';
|
|
6
|
+
import 'minisearch';
|
|
7
|
+
import 'nanostores';
|
|
8
|
+
|
|
9
|
+
declare class DomainsClient extends BaseResourceClient<Domain> {
|
|
10
|
+
protected extractSearchTerms(item: Domain): string;
|
|
11
|
+
listAll(force?: boolean): Promise<Domain[]>;
|
|
12
|
+
load(force?: boolean): Promise<Domain[]>;
|
|
13
|
+
get(id: string, force?: boolean): Promise<Domain>;
|
|
14
|
+
create(data: CreateDomainRequest): Promise<Domain>;
|
|
15
|
+
update(id: string, data: UpdateDomainRequest): Promise<Domain>;
|
|
16
|
+
delete(id: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { DomainsClient };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Domain } from '../../../domains/workspace/domain.js';
|
|
2
|
+
import { CreateDomainRequest, UpdateDomainRequest } from '../dto/domain.js';
|
|
3
|
+
import { BaseResourceClient } from './base.js';
|
|
4
|
+
import '../../../common/entity.js';
|
|
5
|
+
import 'zod';
|
|
6
|
+
import 'minisearch';
|
|
7
|
+
import 'nanostores';
|
|
8
|
+
|
|
9
|
+
declare class DomainsClient extends BaseResourceClient<Domain> {
|
|
10
|
+
protected extractSearchTerms(item: Domain): string;
|
|
11
|
+
listAll(force?: boolean): Promise<Domain[]>;
|
|
12
|
+
load(force?: boolean): Promise<Domain[]>;
|
|
13
|
+
get(id: string, force?: boolean): Promise<Domain>;
|
|
14
|
+
create(data: CreateDomainRequest): Promise<Domain>;
|
|
15
|
+
update(id: string, data: UpdateDomainRequest): Promise<Domain>;
|
|
16
|
+
delete(id: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { DomainsClient };
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import MiniSearch from 'minisearch';
|
|
2
|
+
import { atom } from 'nanostores';
|
|
3
|
+
|
|
4
|
+
// src/fabric/services/rest/client/base.ts
|
|
5
|
+
var BaseResourceClient = class {
|
|
6
|
+
constructor(transport) {
|
|
7
|
+
this.transport = transport;
|
|
8
|
+
}
|
|
9
|
+
transport;
|
|
10
|
+
items = /* @__PURE__ */ new Map();
|
|
11
|
+
isLoaded = false;
|
|
12
|
+
searchIndex;
|
|
13
|
+
_version = atom(1);
|
|
14
|
+
$version = this._version;
|
|
15
|
+
get version() {
|
|
16
|
+
return this._version.get();
|
|
17
|
+
}
|
|
18
|
+
get loaded() {
|
|
19
|
+
return this.isLoaded;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns all items currently stored in cache.
|
|
23
|
+
*/
|
|
24
|
+
all() {
|
|
25
|
+
return Array.from(this.items.values());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Synchronously finds an item in cache by ID.
|
|
29
|
+
*/
|
|
30
|
+
find(id) {
|
|
31
|
+
return this.items.get(id);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Synchronously finds multiple items in cache by ID.
|
|
35
|
+
*/
|
|
36
|
+
getMany(...ids) {
|
|
37
|
+
const results = [];
|
|
38
|
+
for (const id of ids) {
|
|
39
|
+
const item = this.items.get(id);
|
|
40
|
+
if (item) results.push(item);
|
|
41
|
+
}
|
|
42
|
+
return results;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Searches cached items by search term using MiniSearch prefix matching.
|
|
46
|
+
* If search term is empty, returns all items.
|
|
47
|
+
*/
|
|
48
|
+
search(term) {
|
|
49
|
+
const trimmed = term.trim();
|
|
50
|
+
if (!trimmed || !this.searchIndex) {
|
|
51
|
+
return this.all();
|
|
52
|
+
}
|
|
53
|
+
const results = this.searchIndex.search(trimmed, { prefix: true });
|
|
54
|
+
const matched = [];
|
|
55
|
+
for (const r of results) {
|
|
56
|
+
const item = this.items.get(r.id);
|
|
57
|
+
if (item) matched.push(item);
|
|
58
|
+
}
|
|
59
|
+
return matched;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Hook for subclasses to define what fields get indexed for search.
|
|
63
|
+
*/
|
|
64
|
+
extractSearchTerms(item) {
|
|
65
|
+
return Object.values(item).filter((v) => typeof v === "string" || typeof v === "number").join(" ").toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Adds or replaces an item in the search index.
|
|
69
|
+
*/
|
|
70
|
+
indexItem(item) {
|
|
71
|
+
if (!this.searchIndex) {
|
|
72
|
+
this.searchIndex = new MiniSearch({
|
|
73
|
+
fields: ["terms"],
|
|
74
|
+
storeFields: ["id"]
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const doc = { id: item.id, terms: this.extractSearchTerms(item) };
|
|
78
|
+
if (this.searchIndex.has(item.id)) {
|
|
79
|
+
this.searchIndex.replace(doc);
|
|
80
|
+
} else {
|
|
81
|
+
this.searchIndex.add(doc);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sets or updates a single item in cache and search index.
|
|
86
|
+
*/
|
|
87
|
+
setItem(item) {
|
|
88
|
+
this.items.set(item.id, item);
|
|
89
|
+
this.indexItem(item);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Removes a single item from cache and search index.
|
|
93
|
+
*/
|
|
94
|
+
removeItem(id) {
|
|
95
|
+
this.items.delete(id);
|
|
96
|
+
if (this.searchIndex?.has(id)) {
|
|
97
|
+
this.searchIndex.discard(id);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Populates cache and search index with all items, marking the client as loaded.
|
|
102
|
+
*/
|
|
103
|
+
setAll(items) {
|
|
104
|
+
this.items.clear();
|
|
105
|
+
this.searchIndex?.removeAll();
|
|
106
|
+
for (const item of items) {
|
|
107
|
+
this.items.set(item.id, item);
|
|
108
|
+
this.indexItem(item);
|
|
109
|
+
}
|
|
110
|
+
this.isLoaded = true;
|
|
111
|
+
this.bump();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Clears the in-memory cache and search index.
|
|
115
|
+
*/
|
|
116
|
+
clearCache() {
|
|
117
|
+
this.items.clear();
|
|
118
|
+
this.searchIndex?.removeAll();
|
|
119
|
+
this.isLoaded = false;
|
|
120
|
+
this.bump();
|
|
121
|
+
}
|
|
122
|
+
bump() {
|
|
123
|
+
this._version.set(this._version.get() + 1);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/fabric/services/rest/client/domains.ts
|
|
128
|
+
var DomainsClient = class extends BaseResourceClient {
|
|
129
|
+
extractSearchTerms(item) {
|
|
130
|
+
return item.domain.toLowerCase();
|
|
131
|
+
}
|
|
132
|
+
async listAll(force = false) {
|
|
133
|
+
if (this.isLoaded && !force) {
|
|
134
|
+
return this.all();
|
|
135
|
+
}
|
|
136
|
+
const items = await this.transport.requestData("/domains");
|
|
137
|
+
this.setAll(items);
|
|
138
|
+
return items;
|
|
139
|
+
}
|
|
140
|
+
async load(force = false) {
|
|
141
|
+
return this.listAll(force);
|
|
142
|
+
}
|
|
143
|
+
async get(id, force = false) {
|
|
144
|
+
if (!force) {
|
|
145
|
+
const cached = this.find(id);
|
|
146
|
+
if (cached) return cached;
|
|
147
|
+
}
|
|
148
|
+
const item = await this.transport.requestData(`/domains/${id}`);
|
|
149
|
+
this.setItem(item);
|
|
150
|
+
this.bump();
|
|
151
|
+
return item;
|
|
152
|
+
}
|
|
153
|
+
async create(data) {
|
|
154
|
+
const domain = await this.transport.requestData("/domains", {
|
|
155
|
+
method: "POST",
|
|
156
|
+
body: JSON.stringify(data)
|
|
157
|
+
});
|
|
158
|
+
this.setItem(domain);
|
|
159
|
+
this.bump();
|
|
160
|
+
return domain;
|
|
161
|
+
}
|
|
162
|
+
async update(id, data) {
|
|
163
|
+
const domain = await this.transport.requestData(`/domains/${id}`, {
|
|
164
|
+
method: "PATCH",
|
|
165
|
+
body: JSON.stringify(data)
|
|
166
|
+
});
|
|
167
|
+
this.setItem(domain);
|
|
168
|
+
this.bump();
|
|
169
|
+
return domain;
|
|
170
|
+
}
|
|
171
|
+
async delete(id) {
|
|
172
|
+
await this.transport.request(`/domains/${id}`, { method: "DELETE" });
|
|
173
|
+
this.removeItem(id);
|
|
174
|
+
this.bump();
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export { DomainsClient };
|
|
179
|
+
//# sourceMappingURL=domains.js.map
|
|
180
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fabric/services/rest/client/base.ts","../../../../../src/fabric/services/rest/client/domains.ts"],"names":[],"mappings":"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","file":"domains.js","sourcesContent":["import MiniSearch from \"minisearch\";\nimport { atom, type ReadableAtom, type WritableAtom } from \"nanostores\";\n\nexport type { ReadableAtom };\n\nexport interface RestTransport {\n request<T>(path: string, init?: RequestInit): Promise<T>;\n requestData<T>(path: string, init?: RequestInit): Promise<T>;\n requestBlob(path: string, init?: RequestInit): Promise<Blob>;\n}\n\nexport abstract class BaseResourceClient<T extends { id: string } = any> {\n protected readonly items = new Map<string, T>();\n protected isLoaded = false;\n protected searchIndex?: MiniSearch;\n\n private readonly _version: WritableAtom<number> = atom(1);\n\n readonly $version: ReadableAtom<number> = this._version;\n\n get version(): number {\n return this._version.get();\n }\n\n get loaded(): boolean {\n return this.isLoaded;\n }\n\n constructor(protected readonly transport: RestTransport) {}\n\n /**\n * Returns all items currently stored in cache.\n */\n all(): T[] {\n return Array.from(this.items.values());\n }\n\n /**\n * Synchronously finds an item in cache by ID.\n */\n find(id: string): T | undefined {\n return this.items.get(id);\n }\n\n /**\n * Synchronously finds multiple items in cache by ID.\n */\n getMany(...ids: string[]): T[] {\n const results: T[] = [];\n for (const id of ids) {\n const item = this.items.get(id);\n if (item) results.push(item);\n }\n return results;\n }\n\n /**\n * Searches cached items by search term using MiniSearch prefix matching.\n * If search term is empty, returns all items.\n */\n search(term: string): T[] {\n const trimmed = term.trim();\n if (!trimmed || !this.searchIndex) {\n return this.all();\n }\n const results = this.searchIndex.search(trimmed, { prefix: true });\n const matched: T[] = [];\n for (const r of results) {\n const item = this.items.get(r.id);\n if (item) matched.push(item);\n }\n return matched;\n }\n\n /**\n * Hook for subclasses to define what fields get indexed for search.\n */\n protected extractSearchTerms(item: T): string {\n return Object.values(item as Record<string, unknown>)\n .filter((v) => typeof v === \"string\" || typeof v === \"number\")\n .join(\" \")\n .toLowerCase();\n }\n\n /**\n * Adds or replaces an item in the search index.\n */\n protected indexItem(item: T): void {\n if (!this.searchIndex) {\n this.searchIndex = new MiniSearch({\n fields: [\"terms\"],\n storeFields: [\"id\"],\n });\n }\n const doc = { id: item.id, terms: this.extractSearchTerms(item) };\n if (this.searchIndex.has(item.id)) {\n this.searchIndex.replace(doc);\n } else {\n this.searchIndex.add(doc);\n }\n }\n\n /**\n * Sets or updates a single item in cache and search index.\n */\n protected setItem(item: T): void {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n\n /**\n * Removes a single item from cache and search index.\n */\n protected removeItem(id: string): void {\n this.items.delete(id);\n if (this.searchIndex?.has(id)) {\n this.searchIndex.discard(id);\n }\n }\n\n /**\n * Populates cache and search index with all items, marking the client as loaded.\n */\n protected setAll(items: T[]): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n for (const item of items) {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n this.isLoaded = true;\n this.bump();\n }\n\n /**\n * Clears the in-memory cache and search index.\n */\n clearCache(): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n this.isLoaded = false;\n this.bump();\n }\n\n bump(): void {\n this._version.set(this._version.get() + 1);\n }\n}\n","import type { Domain } from \"../../../domains/workspace/domain.js\";\nimport type {\n CreateDomainRequest,\n UpdateDomainRequest,\n} from \"../dto/domain.js\";\nimport { BaseResourceClient } from \"./base.js\";\n\nexport class DomainsClient extends BaseResourceClient<Domain> {\n protected override extractSearchTerms(item: Domain): string {\n return item.domain.toLowerCase();\n }\n\n async listAll(force = false): Promise<Domain[]> {\n if (this.isLoaded && !force) {\n return this.all();\n }\n const items = await this.transport.requestData<Domain[]>(\"/domains\");\n this.setAll(items);\n return items;\n }\n\n async load(force = false): Promise<Domain[]> {\n return this.listAll(force);\n }\n\n async get(id: string, force = false): Promise<Domain> {\n if (!force) {\n const cached = this.find(id);\n if (cached) return cached;\n }\n const item = await this.transport.requestData<Domain>(`/domains/${id}`);\n this.setItem(item);\n this.bump();\n return item;\n }\n\n async create(data: CreateDomainRequest): Promise<Domain> {\n const domain = await this.transport.requestData<Domain>(\"/domains\", {\n method: \"POST\",\n body: JSON.stringify(data),\n });\n this.setItem(domain);\n this.bump();\n return domain;\n }\n\n async update(id: string, data: UpdateDomainRequest): Promise<Domain> {\n const domain = await this.transport.requestData<Domain>(`/domains/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(data),\n });\n this.setItem(domain);\n this.bump();\n return domain;\n }\n\n async delete(id: string): Promise<void> {\n await this.transport.request<void>(`/domains/${id}`, { method: \"DELETE\" });\n this.removeItem(id);\n this.bump();\n }\n}\n"]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var MiniSearch = require('minisearch');
|
|
4
|
+
var nanostores = require('nanostores');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var MiniSearch__default = /*#__PURE__*/_interopDefault(MiniSearch);
|
|
9
|
+
|
|
10
|
+
// src/fabric/services/rest/client/base.ts
|
|
11
|
+
var BaseResourceClient = class {
|
|
12
|
+
constructor(transport) {
|
|
13
|
+
this.transport = transport;
|
|
14
|
+
}
|
|
15
|
+
transport;
|
|
16
|
+
items = /* @__PURE__ */ new Map();
|
|
17
|
+
isLoaded = false;
|
|
18
|
+
searchIndex;
|
|
19
|
+
_version = nanostores.atom(1);
|
|
20
|
+
$version = this._version;
|
|
21
|
+
get version() {
|
|
22
|
+
return this._version.get();
|
|
23
|
+
}
|
|
24
|
+
get loaded() {
|
|
25
|
+
return this.isLoaded;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns all items currently stored in cache.
|
|
29
|
+
*/
|
|
30
|
+
all() {
|
|
31
|
+
return Array.from(this.items.values());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Synchronously finds an item in cache by ID.
|
|
35
|
+
*/
|
|
36
|
+
find(id) {
|
|
37
|
+
return this.items.get(id);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Synchronously finds multiple items in cache by ID.
|
|
41
|
+
*/
|
|
42
|
+
getMany(...ids) {
|
|
43
|
+
const results = [];
|
|
44
|
+
for (const id of ids) {
|
|
45
|
+
const item = this.items.get(id);
|
|
46
|
+
if (item) results.push(item);
|
|
47
|
+
}
|
|
48
|
+
return results;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Searches cached items by search term using MiniSearch prefix matching.
|
|
52
|
+
* If search term is empty, returns all items.
|
|
53
|
+
*/
|
|
54
|
+
search(term) {
|
|
55
|
+
const trimmed = term.trim();
|
|
56
|
+
if (!trimmed || !this.searchIndex) {
|
|
57
|
+
return this.all();
|
|
58
|
+
}
|
|
59
|
+
const results = this.searchIndex.search(trimmed, { prefix: true });
|
|
60
|
+
const matched = [];
|
|
61
|
+
for (const r of results) {
|
|
62
|
+
const item = this.items.get(r.id);
|
|
63
|
+
if (item) matched.push(item);
|
|
64
|
+
}
|
|
65
|
+
return matched;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hook for subclasses to define what fields get indexed for search.
|
|
69
|
+
*/
|
|
70
|
+
extractSearchTerms(item) {
|
|
71
|
+
return Object.values(item).filter((v) => typeof v === "string" || typeof v === "number").join(" ").toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Adds or replaces an item in the search index.
|
|
75
|
+
*/
|
|
76
|
+
indexItem(item) {
|
|
77
|
+
if (!this.searchIndex) {
|
|
78
|
+
this.searchIndex = new MiniSearch__default.default({
|
|
79
|
+
fields: ["terms"],
|
|
80
|
+
storeFields: ["id"]
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const doc = { id: item.id, terms: this.extractSearchTerms(item) };
|
|
84
|
+
if (this.searchIndex.has(item.id)) {
|
|
85
|
+
this.searchIndex.replace(doc);
|
|
86
|
+
} else {
|
|
87
|
+
this.searchIndex.add(doc);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Sets or updates a single item in cache and search index.
|
|
92
|
+
*/
|
|
93
|
+
setItem(item) {
|
|
94
|
+
this.items.set(item.id, item);
|
|
95
|
+
this.indexItem(item);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Removes a single item from cache and search index.
|
|
99
|
+
*/
|
|
100
|
+
removeItem(id) {
|
|
101
|
+
this.items.delete(id);
|
|
102
|
+
if (this.searchIndex?.has(id)) {
|
|
103
|
+
this.searchIndex.discard(id);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Populates cache and search index with all items, marking the client as loaded.
|
|
108
|
+
*/
|
|
109
|
+
setAll(items) {
|
|
110
|
+
this.items.clear();
|
|
111
|
+
this.searchIndex?.removeAll();
|
|
112
|
+
for (const item of items) {
|
|
113
|
+
this.items.set(item.id, item);
|
|
114
|
+
this.indexItem(item);
|
|
115
|
+
}
|
|
116
|
+
this.isLoaded = true;
|
|
117
|
+
this.bump();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clears the in-memory cache and search index.
|
|
121
|
+
*/
|
|
122
|
+
clearCache() {
|
|
123
|
+
this.items.clear();
|
|
124
|
+
this.searchIndex?.removeAll();
|
|
125
|
+
this.isLoaded = false;
|
|
126
|
+
this.bump();
|
|
127
|
+
}
|
|
128
|
+
bump() {
|
|
129
|
+
this._version.set(this._version.get() + 1);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// src/fabric/services/rest/client/files.ts
|
|
134
|
+
var FilesClient = class extends BaseResourceClient {
|
|
135
|
+
getDownloadLink(path) {
|
|
136
|
+
return this.transport.requestData(
|
|
137
|
+
"/files/link/download",
|
|
138
|
+
{
|
|
139
|
+
headers: { "X-File-Path": path }
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
getUploadLink(category, entityId, extension) {
|
|
144
|
+
const params = new URLSearchParams({ category });
|
|
145
|
+
if (entityId) params.append("entity_id", entityId);
|
|
146
|
+
if (extension) params.append("extension", extension);
|
|
147
|
+
return this.transport.requestData(
|
|
148
|
+
`/files/link/upload?${params.toString()}`
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
async uploadToS3(data, url) {
|
|
152
|
+
const response = await fetch(url, {
|
|
153
|
+
method: "PUT",
|
|
154
|
+
body: data
|
|
155
|
+
});
|
|
156
|
+
if (!response.ok) {
|
|
157
|
+
throw new Error(`S3 Upload failed: ${response.statusText}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async uploadBlob(blob, entityId, category = "track", extension = "wav") {
|
|
161
|
+
const { url, path } = await this.getUploadLink(
|
|
162
|
+
category,
|
|
163
|
+
entityId,
|
|
164
|
+
extension
|
|
165
|
+
);
|
|
166
|
+
await this.uploadToS3(blob, url);
|
|
167
|
+
return path;
|
|
168
|
+
}
|
|
169
|
+
async uploadTrack(file, entityId) {
|
|
170
|
+
const extension = file.name.split(".").pop()?.toLowerCase() || "wav";
|
|
171
|
+
const { url, path } = await this.getUploadLink(
|
|
172
|
+
"track",
|
|
173
|
+
entityId,
|
|
174
|
+
extension
|
|
175
|
+
);
|
|
176
|
+
await this.uploadToS3(file, url);
|
|
177
|
+
return { path, name: file.name };
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
exports.FilesClient = FilesClient;
|
|
182
|
+
//# sourceMappingURL=files.cjs.map
|
|
183
|
+
//# sourceMappingURL=files.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fabric/services/rest/client/base.ts","../../../../../src/fabric/services/rest/client/files.ts"],"names":["atom","MiniSearch"],"mappings":"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","file":"files.cjs","sourcesContent":["import MiniSearch from \"minisearch\";\nimport { atom, type ReadableAtom, type WritableAtom } from \"nanostores\";\n\nexport type { ReadableAtom };\n\nexport interface RestTransport {\n request<T>(path: string, init?: RequestInit): Promise<T>;\n requestData<T>(path: string, init?: RequestInit): Promise<T>;\n requestBlob(path: string, init?: RequestInit): Promise<Blob>;\n}\n\nexport abstract class BaseResourceClient<T extends { id: string } = any> {\n protected readonly items = new Map<string, T>();\n protected isLoaded = false;\n protected searchIndex?: MiniSearch;\n\n private readonly _version: WritableAtom<number> = atom(1);\n\n readonly $version: ReadableAtom<number> = this._version;\n\n get version(): number {\n return this._version.get();\n }\n\n get loaded(): boolean {\n return this.isLoaded;\n }\n\n constructor(protected readonly transport: RestTransport) {}\n\n /**\n * Returns all items currently stored in cache.\n */\n all(): T[] {\n return Array.from(this.items.values());\n }\n\n /**\n * Synchronously finds an item in cache by ID.\n */\n find(id: string): T | undefined {\n return this.items.get(id);\n }\n\n /**\n * Synchronously finds multiple items in cache by ID.\n */\n getMany(...ids: string[]): T[] {\n const results: T[] = [];\n for (const id of ids) {\n const item = this.items.get(id);\n if (item) results.push(item);\n }\n return results;\n }\n\n /**\n * Searches cached items by search term using MiniSearch prefix matching.\n * If search term is empty, returns all items.\n */\n search(term: string): T[] {\n const trimmed = term.trim();\n if (!trimmed || !this.searchIndex) {\n return this.all();\n }\n const results = this.searchIndex.search(trimmed, { prefix: true });\n const matched: T[] = [];\n for (const r of results) {\n const item = this.items.get(r.id);\n if (item) matched.push(item);\n }\n return matched;\n }\n\n /**\n * Hook for subclasses to define what fields get indexed for search.\n */\n protected extractSearchTerms(item: T): string {\n return Object.values(item as Record<string, unknown>)\n .filter((v) => typeof v === \"string\" || typeof v === \"number\")\n .join(\" \")\n .toLowerCase();\n }\n\n /**\n * Adds or replaces an item in the search index.\n */\n protected indexItem(item: T): void {\n if (!this.searchIndex) {\n this.searchIndex = new MiniSearch({\n fields: [\"terms\"],\n storeFields: [\"id\"],\n });\n }\n const doc = { id: item.id, terms: this.extractSearchTerms(item) };\n if (this.searchIndex.has(item.id)) {\n this.searchIndex.replace(doc);\n } else {\n this.searchIndex.add(doc);\n }\n }\n\n /**\n * Sets or updates a single item in cache and search index.\n */\n protected setItem(item: T): void {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n\n /**\n * Removes a single item from cache and search index.\n */\n protected removeItem(id: string): void {\n this.items.delete(id);\n if (this.searchIndex?.has(id)) {\n this.searchIndex.discard(id);\n }\n }\n\n /**\n * Populates cache and search index with all items, marking the client as loaded.\n */\n protected setAll(items: T[]): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n for (const item of items) {\n this.items.set(item.id, item);\n this.indexItem(item);\n }\n this.isLoaded = true;\n this.bump();\n }\n\n /**\n * Clears the in-memory cache and search index.\n */\n clearCache(): void {\n this.items.clear();\n this.searchIndex?.removeAll();\n this.isLoaded = false;\n this.bump();\n }\n\n bump(): void {\n this._version.set(this._version.get() + 1);\n }\n}\n","import type { FileDownloadLink, FileUploadLink } from \"../dto/file.js\";\nimport { BaseResourceClient } from \"./base.js\";\n\nexport class FilesClient extends BaseResourceClient {\n getDownloadLink(path: string): Promise<FileDownloadLink> {\n return this.transport.requestData<FileDownloadLink>(\n \"/files/link/download\",\n {\n headers: { \"X-File-Path\": path },\n },\n );\n }\n\n getUploadLink(\n category: string,\n entityId?: string,\n extension?: string,\n ): Promise<FileUploadLink> {\n const params = new URLSearchParams({ category });\n if (entityId) params.append(\"entity_id\", entityId);\n if (extension) params.append(\"extension\", extension);\n return this.transport.requestData<FileUploadLink>(\n `/files/link/upload?${params.toString()}`,\n );\n }\n\n async uploadToS3(data: Blob | ArrayBuffer, url: string): Promise<void> {\n const response = await fetch(url, {\n method: \"PUT\",\n body: data,\n });\n if (!response.ok) {\n throw new Error(`S3 Upload failed: ${response.statusText}`);\n }\n }\n\n async uploadBlob(\n blob: Blob,\n entityId?: string,\n category = \"track\",\n extension = \"wav\",\n ): Promise<string> {\n const { url, path } = await this.getUploadLink(\n category,\n entityId,\n extension,\n );\n await this.uploadToS3(blob, url);\n return path;\n }\n\n async uploadTrack(\n file: { name: string } & Blob,\n entityId?: string,\n ): Promise<{ path: string; name: string }> {\n const extension = file.name.split(\".\").pop()?.toLowerCase() || \"wav\";\n const { url, path } = await this.getUploadLink(\n \"track\",\n entityId,\n extension,\n );\n await this.uploadToS3(file, url);\n return { path, name: file.name };\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FileDownloadLink, FileUploadLink } from '../dto/file.cjs';
|
|
2
|
+
import { BaseResourceClient } from './base.cjs';
|
|
3
|
+
import 'minisearch';
|
|
4
|
+
import 'nanostores';
|
|
5
|
+
|
|
6
|
+
declare class FilesClient extends BaseResourceClient {
|
|
7
|
+
getDownloadLink(path: string): Promise<FileDownloadLink>;
|
|
8
|
+
getUploadLink(category: string, entityId?: string, extension?: string): Promise<FileUploadLink>;
|
|
9
|
+
uploadToS3(data: Blob | ArrayBuffer, url: string): Promise<void>;
|
|
10
|
+
uploadBlob(blob: Blob, entityId?: string, category?: string, extension?: string): Promise<string>;
|
|
11
|
+
uploadTrack(file: {
|
|
12
|
+
name: string;
|
|
13
|
+
} & Blob, entityId?: string): Promise<{
|
|
14
|
+
path: string;
|
|
15
|
+
name: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { FilesClient };
|