├── Procfile ├── examples ├── .env.example ├── chat-presence │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── chat-ui-app │ └── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ ├── styles │ │ │ └── styles.css │ │ ├── env.d.ts │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── auth-generate-jwt │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── vite.config.ts │ │ ├── src │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── package.json │ │ └── tailwind.config.ts │ ├── javascript │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── server │ │ └── package.json ├── auth-request-token │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── vite.config.ts │ │ ├── src │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── package.json │ │ └── tailwind.config.ts │ ├── javascript │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── server │ │ └── package.json ├── chat-room-history │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── chat-ui-sidebar │ └── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ ├── styles │ │ │ └── styles.css │ │ ├── env.d.ts │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── pub-sub-history │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── pub-sub-occupancy │ ├── react │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── pub-sub-presence │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── chat-room-reactions │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── chat-typing-indicator │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── chat-ui-chat-window │ └── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ ├── styles │ │ │ └── styles.css │ │ ├── env.d.ts │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── pub-sub-channel-state │ ├── react │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── spaces-avatar-stack │ ├── react │ │ ├── .eslintrc.json │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── environment.d.ts │ │ │ └── main.tsx │ │ ├── vite.config.ts │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── spaces-live-cursors │ ├── react │ │ ├── .eslintrc.json │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── spaces-member-location │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── tailwind.config.ts │ │ └── package.json │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── pub-sub-channel-messages │ ├── react │ │ ├── tsconfig.json │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── tailwind.config.ts │ │ └── package.json │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── pub-sub-connection-state │ ├── react │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── tailwind.config.ts │ │ └── package.json │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── pub-sub-message-encryption │ ├── react │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── tailwind.config.ts │ │ └── package.json │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── spaces-component-locking │ ├── react │ │ ├── .eslintrc.json │ │ ├── tsconfig.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── tailwind.config.ts │ │ └── package.json │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── pub-sub-rewind │ ├── react │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ └── env.d.ts │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── chat-room-messages │ ├── react │ │ ├── .eslintrc.json │ │ ├── src │ │ │ ├── config.ts │ │ │ ├── env.d.ts │ │ │ └── index.tsx │ │ ├── vite.config.ts │ │ ├── package.json │ │ └── tailwind.config.ts │ └── javascript │ │ ├── src │ │ └── config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── package.json │ │ └── tailwind.config.ts ├── README.md ├── liveobjects-live-map │ └── javascript │ │ ├── src │ │ ├── config.ts │ │ └── ably.config.d.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── liveobjects-live-counter │ └── javascript │ │ ├── src │ │ ├── config.ts │ │ └── ably.config.d.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tailwind.config.ts │ │ └── package.json ├── pub-sub-message-annotations │ └── javascript │ │ ├── vite.config.ts │ │ ├── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── package.json └── postcss.config.mts ├── src ├── globals.d.ts ├── components │ ├── Redoc │ │ └── index.ts │ ├── Layout │ │ └── index.ts │ ├── Notification │ │ └── index.ts │ ├── common │ │ └── index.ts │ ├── blocks │ │ ├── block-component-maps │ │ │ └── index.ts │ │ ├── typography │ │ │ └── index.ts │ │ ├── software │ │ │ ├── Code │ │ │ │ ├── ApiKeyMenu.module.css │ │ │ │ ├── prismjs-overwrite.css │ │ │ │ └── InlineCodeElement.tsx │ │ │ ├── styles.css │ │ │ ├── Kbd.tsx │ │ │ ├── Samp.tsx │ │ │ ├── Var.tsx │ │ │ ├── Output.tsx │ │ │ └── index.ts │ │ ├── styles │ │ │ ├── index.js │ │ │ └── semantic │ │ │ │ ├── em.js │ │ │ │ ├── sub.js │ │ │ │ ├── sup.js │ │ │ │ ├── small.js │ │ │ │ ├── strong.js │ │ │ │ └── index.js │ │ ├── external-references │ │ │ ├── Img.module.css │ │ │ ├── Audio.tsx │ │ │ ├── Quote.tsx │ │ │ ├── Video.tsx │ │ │ ├── AElementHelpers │ │ │ │ └── check-link-is-internal.ts │ │ │ ├── Iframe.tsx │ │ │ ├── Address.tsx │ │ │ └── Blockquote.tsx │ │ ├── headings │ │ │ ├── H6.tsx │ │ │ ├── Header.tsx │ │ │ └── index.ts │ │ ├── table │ │ │ ├── Col.ts │ │ │ ├── Tfoot.ts │ │ │ ├── Thead.ts │ │ │ ├── Caption.ts │ │ │ ├── Colgroup.ts │ │ │ ├── Table.module.css │ │ │ ├── Th.module.css │ │ │ └── Td.tsx │ │ ├── dividers │ │ │ ├── Div.tsx │ │ │ ├── Main.tsx │ │ │ ├── Span.tsx │ │ │ ├── Article.tsx │ │ │ ├── Section.tsx │ │ │ └── index.ts │ │ ├── semantic-enhancements │ │ │ ├── Dfn.tsx │ │ │ ├── Abbr.tsx │ │ │ ├── Time.tsx │ │ │ ├── Details.tsx │ │ │ ├── Summary.tsx │ │ │ └── index.ts │ │ ├── complex-functionality │ │ │ ├── Meter.tsx │ │ │ ├── Select.tsx │ │ │ ├── Noscript.tsx │ │ │ ├── Progress.tsx │ │ │ ├── Textarea.tsx │ │ │ └── styles.css │ │ ├── non-semantic │ │ │ ├── Br.tsx │ │ │ └── Wbr.tsx │ │ ├── list │ │ │ ├── Ol.tsx │ │ │ ├── index.ts │ │ │ ├── Dd.tsx │ │ │ ├── Ul.tsx │ │ │ ├── Dt.tsx │ │ │ ├── Dl │ │ │ │ └── DefinitionListRow.tsx │ │ │ └── Li.tsx │ │ └── Html │ │ │ └── GenericHtmlBlock.js │ ├── CodeEditor │ │ ├── index.ts │ │ └── CodeEditor.css │ ├── LanguageButton │ │ └── index.ts │ ├── Markdown │ │ └── index.ts │ ├── ButtonWithTooltip │ │ └── index.ts │ ├── SDKInterfacePanel │ │ └── index.ts │ ├── Select │ │ ├── index.ts │ │ └── types.ts │ ├── HorizontalMenu │ │ ├── index.ts │ │ └── HorizontalMenu.module.css │ ├── SDKsPage │ │ ├── images │ │ │ └── sdk-hero.png │ │ └── sdks.module.css │ ├── Examples │ │ └── images │ │ │ ├── mobile-grid.png │ │ │ └── pattern-grid.png │ ├── Menu │ │ ├── Label │ │ │ └── Label.module.css │ │ ├── LanguageNavigation │ │ │ └── index.ts │ │ └── MenuItemButton │ │ │ └── MenuItemButton.module.css │ ├── Container │ │ └── Container.module.css │ ├── index.ts │ ├── attribs.ts │ ├── Article │ │ └── index.tsx │ ├── PageTitle.test.tsx │ └── PageTitle.tsx ├── types │ └── non-javascript-assets │ │ ├── css.d.ts │ │ └── svg-loading.d.ts ├── images │ ├── favicon.png │ ├── homepage │ │ ├── chat.png │ │ ├── pub-sub.png │ │ ├── sdks@2x.png │ │ ├── spaces.png │ │ ├── livesync.png │ │ ├── platform.png │ │ ├── liveobjects.png │ │ ├── asset-tracking.png │ │ ├── examples_grid.png │ │ └── examples_image.png │ ├── examples │ │ ├── chat-ui-app.png │ │ ├── chat-presence.png │ │ ├── chat-ui-sidebar.png │ │ ├── pub-sub-history.png │ │ ├── pub-sub-rewind.png │ │ ├── auth-generate-jwt.png │ │ ├── chat-room-history.png │ │ ├── pub-sub-occupancy.png │ │ ├── pub-sub-presence.png │ │ ├── auth-request-token.png │ │ ├── chat-room-messages.png │ │ ├── chat-room-reactions.png │ │ ├── chat-ui-chat-window.png │ │ ├── liveobjects-live-map.png │ │ ├── spaces-avatar-stack.png │ │ ├── spaces-live-cursors.png │ │ ├── chat-typing-indicator.png │ │ ├── pub-sub-channel-state.png │ │ ├── spaces-member-location.png │ │ ├── liveobjects-live-counter.png │ │ ├── pub-sub-channel-messages.png │ │ ├── pub-sub-connection-state.png │ │ ├── spaces-component-locking.png │ │ ├── pub-sub-message-annotations.png │ │ └── pub-sub-message-encryption.png │ └── content │ │ ├── chat │ │ ├── ui-component-app.png │ │ ├── ui-component-avatar.png │ │ ├── ui-component-sidebar.png │ │ ├── ui-component-chat-message.png │ │ ├── ui-component-chat-window.png │ │ ├── ui-component-message-input.png │ │ ├── ui-component-chat-message-list.png │ │ ├── ui-component-chat-window-simple.png │ │ ├── ui-component-participant-list.png │ │ ├── ui-component-typing-indicators.png │ │ ├── ui-component-chat-window-with-header.png │ │ ├── ui-component-chat-window-with-sidebar.png │ │ └── ui-component-chat-window-with-header-and-footer.png │ │ ├── diagrams │ │ ├── Ably-Reactor.gif │ │ ├── Ably-API-Auth1.png │ │ ├── How-ably-works.gif │ │ ├── ably-jwt-auth.png │ │ ├── ably-overview.png │ │ ├── push-lifecycle.png │ │ ├── Ably-token-auth-1.png │ │ ├── Ablys-redundancy.gif │ │ ├── Channels-Presence.gif │ │ ├── Reactor-Firehose.png │ │ ├── history-default.png │ │ ├── webhooks-overview.png │ │ ├── what-is-livesync.png │ │ ├── Ably-Auth-Overview1.png │ │ ├── Ably-Auth-Overview2.png │ │ ├── Ably-Auth-Overview3.png │ │ ├── ably-queues-overview.png │ │ ├── architecture-overview.png │ │ ├── push-direct-activation.png │ │ ├── push-process-overview.png │ │ ├── Ably-Global-Message-Routing.gif │ │ ├── ably-connector-for-mongodb.png │ │ ├── ably-connector-for-postgres.png │ │ ├── before-publish-moderation.png │ │ ├── livesync-models-components.png │ │ ├── ably-kafka-connector-overview.png │ │ ├── history-persist-all-messages.png │ │ ├── history-persist-last-message.png │ │ ├── livesync_livecomments_example.gif │ │ ├── models-SDK-optimistic-update.png │ │ ├── push-direct-activation-web-push.png │ │ ├── livesync-models-components-usecase.png │ │ ├── push-process-activate-highlighted.png │ │ ├── push-process-configure-highlighted.png │ │ ├── push-server-side-activation-device.png │ │ ├── push-server-side-activation-web-push.png │ │ ├── push-process-activate-highlighted-web-push.png │ │ ├── push-process-publish-subscribe-highlighted.png │ │ └── push-process-configure-highlighted-web-push.png │ │ ├── screenshots │ │ ├── new-queue.png │ │ ├── queue-stats.png │ │ ├── dash │ │ │ ├── account.png │ │ │ ├── dash-tabs.png │ │ │ ├── your-apps.png │ │ │ ├── create-app.png │ │ │ ├── stats-chart.png │ │ │ └── stats-table.png │ │ ├── iam │ │ │ ├── copy-arn.png │ │ │ ├── test-rule.png │ │ │ ├── create-role.png │ │ │ ├── assume-arn-role.png │ │ │ ├── create-policy.png │ │ │ ├── select-policy.png │ │ │ ├── review-and-create-role.png │ │ │ ├── review-and-create-policy.png │ │ │ └── select-type-of-trusted-entity.png │ │ ├── ids-keys │ │ │ ├── api-key.png │ │ │ ├── app-id.png │ │ │ ├── account-id.png │ │ │ ├── api-keys.png │ │ │ ├── app-settings.png │ │ │ └── account-settings.png │ │ ├── queue-dashboard.png │ │ ├── token-revocation.png │ │ ├── choose-ably-queue.png │ │ ├── developer-console.png │ │ ├── provision-a-queue.png │ │ ├── sqs-rule │ │ │ ├── choose-sqs.png │ │ │ ├── integrations-tab.png │ │ │ ├── sqs-rule-settings-sqs.png │ │ │ └── sqs-rule-settings-general.png │ │ ├── amqp-rule │ │ │ ├── choose-amqp.png │ │ │ ├── integrations-tab.png │ │ │ ├── amqp-rule-settings-amqp.png │ │ │ ├── amqp-rule-settings-general.png │ │ │ └── amqp-rule-settings-auth-and-header.png │ │ ├── new-integration-rule.png │ │ ├── asset-tracking │ │ │ ├── overview.png │ │ │ ├── android │ │ │ │ ├── select-app.png │ │ │ │ ├── location-source.png │ │ │ │ ├── publishing-app.png │ │ │ │ ├── sdk-build-tools.png │ │ │ │ ├── extended-controls.png │ │ │ │ └── example-apps-running.png │ │ │ ├── swift │ │ │ │ ├── publisher-running.png │ │ │ │ ├── publisher-enter-tracking-id.png │ │ │ │ └── publisher-and-subscriber-apps-running.png │ │ │ ├── default-resolution-policy.png │ │ │ └── javascript │ │ │ │ ├── example-app-running.png │ │ │ │ ├── example-app-select-trackable.png │ │ │ │ └── example-app-select-map-provider.png │ │ ├── control-api │ │ │ ├── account-id.png │ │ │ ├── bearer-token.png │ │ │ ├── postman-link.png │ │ │ ├── send-request.png │ │ │ ├── app-list-request.png │ │ │ ├── my-access-tokens.png │ │ │ ├── new-access-token.png │ │ │ ├── imported-collection.png │ │ │ ├── list-apps-response.png │ │ │ ├── provision-and-test.png │ │ │ ├── application-settings.png │ │ │ ├── postman-import-default.png │ │ │ ├── postman-import-dialog.png │ │ │ ├── account-settings-menu-item.png │ │ │ └── my-access-tokens-menu-item.png │ │ ├── kafka-rule │ │ │ ├── choose-kafka.png │ │ │ ├── integrations-tab.png │ │ │ ├── kafka-rule-settings-kafka.png │ │ │ └── kafka-rule-settings-general.png │ │ ├── developer-console-channels.png │ │ ├── developer-console-rest-api.png │ │ ├── pulsar-rule │ │ │ ├── choose-pulsar.png │ │ │ ├── integrations-tab.png │ │ │ ├── pulsar-rule-settings-pulsar.png │ │ │ └── pulsar-rule-settings-general.png │ │ ├── kinesis-rule │ │ │ ├── choose-kinesis.png │ │ │ ├── integrations-tab.png │ │ │ ├── kinesis-rule-settings-aws.png │ │ │ ├── kinesis-rule-settings-general.png │ │ │ └── kinesis-rule-settings-kinesis.png │ │ ├── getting-started │ │ │ ├── laravel-echo-example.png │ │ │ ├── chat-kotlin-getting-started-guide.png │ │ │ ├── chat-react-getting-started-guide.png │ │ │ ├── chat-swift-getting-started-guide.png │ │ │ ├── pub-sub-react-getting-started-guide.png │ │ │ ├── pub-sub-flutter-getting-started-guide.png │ │ │ ├── pub-sub-laravel-getting-started-guide.png │ │ │ ├── chat-react-native-getting-started-guide.png │ │ │ └── pub-sub-react-native-getting-started-guide.png │ │ └── hive-dashboard-rule │ │ │ └── hive-dashboard-action-setup.png │ │ └── realtime │ │ ├── delta-messages.png │ │ └── message-interactions.png ├── contexts │ ├── index.ts │ ├── pathname-context.ts │ ├── highlighted-menu-context.ts │ └── article-type-context.ts ├── utilities │ ├── language │ │ └── constants.ts │ ├── index.ts │ ├── browser │ │ └── is-mac.ts │ └── debug │ │ └── log-return.ts ├── redux │ ├── api-key │ │ └── index.ts │ └── select-data.ts ├── fonts │ └── jetbrains-mono │ │ ├── 400 │ │ └── webfont.woff2 │ │ ├── 500 │ │ └── webfont.woff2 │ │ └── 700 │ │ └── webfont.woff2 ├── hooks │ └── index.ts ├── external-scripts │ └── headway.css └── styles │ └── index.js ├── static └── robots.txt ├── .githooks ├── post-checkout └── pre-commit ├── .tool-versions ├── COPYRIGHT ├── __mocks__ ├── file-mock.js └── gatsby.js ├── config ├── .htpasswd └── website-redirects.conf ├── loadershim.js ├── MAINTAINERS.md ├── data ├── transform │ ├── string-transformation.d.ts │ ├── StringContentOrderedList.d.ts │ ├── pre-parser │ │ ├── textile-js-workarounds │ │ │ ├── fix-textile-definition-lists │ │ │ │ ├── fix-indented-definition-lists.ts │ │ │ │ ├── fix-h1-6-after-definition-lists.ts │ │ │ │ └── fix-newlines-in-definition-lists.ts │ │ │ ├── add-hyphen-list-support.ts │ │ │ ├── fix-inline-code.ts │ │ │ ├── make-implicit-ordered-list-explicit.ts │ │ │ ├── fix-html-tags-with-newlines.ts │ │ │ ├── add-bold-text.ts │ │ │ └── add-italicised-text.ts │ │ ├── semantic │ │ │ └── index.js │ │ └── erbjs │ │ │ └── index.js │ ├── constants.ts │ ├── parser-enhancements │ │ ├── add-dates.js │ │ └── spec-anchor-links.js │ └── retrieve-partials │ │ └── applyIndent.ts ├── textile.d.ts ├── html-parser │ └── add-info-to-codeblocks │ │ ├── codeblock-api-key-info.ts │ │ └── codeblock-random-channel-name.ts └── createPages │ └── safeFileExists.ts ├── .prettierrc ├── how-tos └── pub-sub │ ├── postcss.config.js │ ├── src │ ├── vite-env.d.ts │ ├── App.tsx │ ├── utils.ts │ └── index.tsx │ ├── vite.config.ts │ ├── tsconfig.node.json │ └── index.html ├── .slugignore ├── postcss.config.js ├── jest-preprocess.js ├── mocks └── server.js ├── content └── partials │ ├── general │ └── events │ │ ├── _events_examples_intro.textile │ │ ├── _batched_event_headers.textile │ │ └── _enveloped_event_headers.textile │ └── types │ └── _message_annotations.textile ├── test-generators.js ├── alphanumeric.js └── README.md ├── .editorconfig ├── .prettierignore └── babel.config.js /Procfile: -------------------------------------------------------------------------------- 1 | web: bin/start-nginx-solo 2 | -------------------------------------------------------------------------------- /examples/.env.example: -------------------------------------------------------------------------------- 1 | VITE_ABLY_KEY= 2 | -------------------------------------------------------------------------------- /src/globals.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png'; 2 | -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / 3 | -------------------------------------------------------------------------------- /.githooks/post-checkout: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | yarn 4 | 5 | exit 0 -------------------------------------------------------------------------------- /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | yarn lint-staged 4 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | ruby 3.4.5 2 | nodejs 22.19.0 3 | yarn 1.22.19 -------------------------------------------------------------------------------- /COPYRIGHT: -------------------------------------------------------------------------------- 1 | Copyright 2015-2022 Ably Real-time Ltd (ably.com) 2 | -------------------------------------------------------------------------------- /__mocks__/file-mock.js: -------------------------------------------------------------------------------- 1 | module.exports = "test-file-stub"; 2 | -------------------------------------------------------------------------------- /src/components/Redoc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Loader'; 2 | -------------------------------------------------------------------------------- /config/.htpasswd: -------------------------------------------------------------------------------- 1 | preview:$apr1$IHsSHCLH$qJMp.hhrLSPDB/.f/yJUn/ 2 | -------------------------------------------------------------------------------- /loadershim.js: -------------------------------------------------------------------------------- 1 | global.___loader = { 2 | enqueue: jest.fn(), 3 | }; 4 | -------------------------------------------------------------------------------- /src/components/Layout/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './Layout'; 2 | -------------------------------------------------------------------------------- /src/components/Notification/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Notification'; 2 | -------------------------------------------------------------------------------- /src/components/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './language-defaults'; 2 | -------------------------------------------------------------------------------- /src/types/non-javascript-assets/css.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.module.css'; 2 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | This repository is owned by the Ably Developer Education team. 2 | -------------------------------------------------------------------------------- /src/components/blocks/block-component-maps/index.ts: -------------------------------------------------------------------------------- 1 | export * from './component-map'; 2 | -------------------------------------------------------------------------------- /examples/chat-presence/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/blocks/typography/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Paragraph } from './P'; 2 | -------------------------------------------------------------------------------- /src/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/favicon.png -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /src/contexts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pathname-context'; 2 | export * from './user-context'; 3 | -------------------------------------------------------------------------------- /data/transform/string-transformation.d.ts: -------------------------------------------------------------------------------- 1 | type StringTransformation = (content: string) => string; 2 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/blocks/software/Code/ApiKeyMenu.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 230px; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/blocks/styles/index.js: -------------------------------------------------------------------------------- 1 | export { Em, Small, Strong, Sub, Sup } from './semantic'; 2 | -------------------------------------------------------------------------------- /src/images/homepage/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/chat.png -------------------------------------------------------------------------------- /src/utilities/language/constants.ts: -------------------------------------------------------------------------------- 1 | export const PREFERRED_LANGUAGE_KEY = 'preferred_language'; 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "singleQuote": true, 4 | "printWidth": 120 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/CodeEditor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CodeEditor'; 2 | export * from './SandpackTheme'; 3 | -------------------------------------------------------------------------------- /src/components/LanguageButton/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LanguageButton } from './LanguageButton'; 2 | -------------------------------------------------------------------------------- /src/components/Markdown/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MarkdownProvider'; 2 | export * from './CodeBlock'; 3 | -------------------------------------------------------------------------------- /src/images/homepage/pub-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/pub-sub.png -------------------------------------------------------------------------------- /src/images/homepage/sdks@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/sdks@2x.png -------------------------------------------------------------------------------- /src/images/homepage/spaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/spaces.png -------------------------------------------------------------------------------- /src/redux/api-key/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api-key-reducer'; 2 | export * from './remote-api-key-data'; 3 | -------------------------------------------------------------------------------- /how-tos/pub-sub/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /src/components/ButtonWithTooltip/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ButtonWithTooltip } from './ButtonWithTooltip'; 2 | -------------------------------------------------------------------------------- /src/components/SDKInterfacePanel/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SDKInterfacePanel } from './SDKInterfacePanel'; 2 | -------------------------------------------------------------------------------- /src/components/Select/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Select } from './Select'; 2 | export * from './types'; 3 | -------------------------------------------------------------------------------- /src/images/homepage/livesync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/livesync.png -------------------------------------------------------------------------------- /src/images/homepage/platform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/platform.png -------------------------------------------------------------------------------- /examples/chat-presence/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /src/images/examples/chat-ui-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-ui-app.png -------------------------------------------------------------------------------- /src/images/homepage/liveobjects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/liveobjects.png -------------------------------------------------------------------------------- /.slugignore: -------------------------------------------------------------------------------- 1 | /__mocks__ 2 | /.circleci 3 | /.github 4 | /app 5 | /environment-management 6 | /layouts 7 | /lib 8 | /spec 9 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/src/styles/styles.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/src/styles/styles.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /src/images/examples/chat-presence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-presence.png -------------------------------------------------------------------------------- /src/images/examples/chat-ui-sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-ui-sidebar.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-history.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-rewind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-rewind.png -------------------------------------------------------------------------------- /src/images/homepage/asset-tracking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/asset-tracking.png -------------------------------------------------------------------------------- /src/images/homepage/examples_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/examples_grid.png -------------------------------------------------------------------------------- /src/images/homepage/examples_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/homepage/examples_image.png -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/src/styles/styles.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /src/components/HorizontalMenu/index.ts: -------------------------------------------------------------------------------- 1 | export { default as HorizontalMenu, HorizontalMenuVariant } from './HorizontalMenu'; 2 | -------------------------------------------------------------------------------- /src/images/examples/auth-generate-jwt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/auth-generate-jwt.png -------------------------------------------------------------------------------- /src/images/examples/chat-room-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-room-history.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-occupancy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-occupancy.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-presence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-presence.png -------------------------------------------------------------------------------- /src/components/SDKsPage/images/sdk-hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/components/SDKsPage/images/sdk-hero.png -------------------------------------------------------------------------------- /src/fonts/jetbrains-mono/400/webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/fonts/jetbrains-mono/400/webfont.woff2 -------------------------------------------------------------------------------- /src/fonts/jetbrains-mono/500/webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/fonts/jetbrains-mono/500/webfont.woff2 -------------------------------------------------------------------------------- /src/fonts/jetbrains-mono/700/webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/fonts/jetbrains-mono/700/webfont.woff2 -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-app.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-Reactor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-Reactor.gif -------------------------------------------------------------------------------- /src/images/content/screenshots/new-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/new-queue.png -------------------------------------------------------------------------------- /src/images/examples/auth-request-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/auth-request-token.png -------------------------------------------------------------------------------- /src/images/examples/chat-room-messages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-room-messages.png -------------------------------------------------------------------------------- /src/images/examples/chat-room-reactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-room-reactions.png -------------------------------------------------------------------------------- /src/images/examples/chat-ui-chat-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-ui-chat-window.png -------------------------------------------------------------------------------- /src/images/examples/liveobjects-live-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/liveobjects-live-map.png -------------------------------------------------------------------------------- /src/images/examples/spaces-avatar-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/spaces-avatar-stack.png -------------------------------------------------------------------------------- /src/images/examples/spaces-live-cursors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/spaces-live-cursors.png -------------------------------------------------------------------------------- /src/components/Examples/images/mobile-grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/components/Examples/images/mobile-grid.png -------------------------------------------------------------------------------- /src/components/blocks/external-references/Img.module.css: -------------------------------------------------------------------------------- 1 | .classDialog button[data-rmiz-btn-unzoom=''] { 2 | @apply hidden; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/blocks/software/styles.css: -------------------------------------------------------------------------------- 1 | .docs-api-key-label { 2 | @apply ui-text-label3 cursor-help; 3 | color: white; 4 | } 5 | -------------------------------------------------------------------------------- /src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './use-key-press'; 2 | export * from './use-on-click-outside'; 3 | export * from './use-url-params'; 4 | -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-API-Auth1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-API-Auth1.png -------------------------------------------------------------------------------- /src/images/content/diagrams/How-ably-works.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/How-ably-works.gif -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-jwt-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-jwt-auth.png -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-overview.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-lifecycle.png -------------------------------------------------------------------------------- /src/images/content/realtime/delta-messages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/realtime/delta-messages.png -------------------------------------------------------------------------------- /src/images/content/screenshots/queue-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/queue-stats.png -------------------------------------------------------------------------------- /src/images/examples/chat-typing-indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/chat-typing-indicator.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-channel-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-channel-state.png -------------------------------------------------------------------------------- /src/images/examples/spaces-member-location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/spaces-member-location.png -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # Live examples 2 | 3 | This directory contains all of the examples we offer in our documentation with code sandbox. 4 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | }; -------------------------------------------------------------------------------- /src/components/Examples/images/pattern-grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/components/Examples/images/pattern-grid.png -------------------------------------------------------------------------------- /src/contexts/pathname-context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const PathnameContext = createContext(''); 4 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-avatar.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-sidebar.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-token-auth-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-token-auth-1.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ablys-redundancy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ablys-redundancy.gif -------------------------------------------------------------------------------- /src/images/content/diagrams/Channels-Presence.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Channels-Presence.gif -------------------------------------------------------------------------------- /src/images/content/diagrams/Reactor-Firehose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Reactor-Firehose.png -------------------------------------------------------------------------------- /src/images/content/diagrams/history-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/history-default.png -------------------------------------------------------------------------------- /src/images/content/diagrams/webhooks-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/webhooks-overview.png -------------------------------------------------------------------------------- /src/images/content/diagrams/what-is-livesync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/what-is-livesync.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/account.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/dash-tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/dash-tabs.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/your-apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/your-apps.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/copy-arn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/copy-arn.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/test-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/test-rule.png -------------------------------------------------------------------------------- /src/images/examples/liveobjects-live-counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/liveobjects-live-counter.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-channel-messages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-channel-messages.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-connection-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-connection-state.png -------------------------------------------------------------------------------- /src/images/examples/spaces-component-locking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/spaces-component-locking.png -------------------------------------------------------------------------------- /src/types/non-javascript-assets/svg-loading.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: string; 3 | export default content; 4 | } 5 | -------------------------------------------------------------------------------- /src/external-scripts/headway.css: -------------------------------------------------------------------------------- 1 | #headway-widget-target .HW_badge_cont { 2 | position: absolute; 3 | right: -30px; 4 | top: 21px; 5 | } 6 | -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-Auth-Overview1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-Auth-Overview1.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-Auth-Overview2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-Auth-Overview2.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-Auth-Overview3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-Auth-Overview3.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/create-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/create-app.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/stats-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/stats-chart.png -------------------------------------------------------------------------------- /src/images/content/screenshots/dash/stats-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/dash/stats-table.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/create-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/create-role.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/api-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/api-key.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/app-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/app-id.png -------------------------------------------------------------------------------- /src/images/content/screenshots/queue-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/queue-dashboard.png -------------------------------------------------------------------------------- /src/images/content/screenshots/token-revocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/token-revocation.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-message-annotations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-message-annotations.png -------------------------------------------------------------------------------- /src/images/examples/pub-sub-message-encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/examples/pub-sub-message-encryption.png -------------------------------------------------------------------------------- /src/utilities/index.ts: -------------------------------------------------------------------------------- 1 | export * from './browser/safe-window'; 2 | export * from './browser/is-mac'; 3 | export * from './language/constants'; 4 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | }; 4 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-message.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-window.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-message-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-message-input.png -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-queues-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-queues-overview.png -------------------------------------------------------------------------------- /src/images/content/diagrams/architecture-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/architecture-overview.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-direct-activation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-direct-activation.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-overview.png -------------------------------------------------------------------------------- /src/images/content/realtime/message-interactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/realtime/message-interactions.png -------------------------------------------------------------------------------- /src/images/content/screenshots/choose-ably-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/choose-ably-queue.png -------------------------------------------------------------------------------- /src/images/content/screenshots/developer-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/developer-console.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/assume-arn-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/assume-arn-role.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/create-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/create-policy.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/select-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/select-policy.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/account-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/account-id.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/api-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/api-keys.png -------------------------------------------------------------------------------- /src/images/content/screenshots/provision-a-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/provision-a-queue.png -------------------------------------------------------------------------------- /src/images/content/screenshots/sqs-rule/choose-sqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/sqs-rule/choose-sqs.png -------------------------------------------------------------------------------- /how-tos/pub-sub/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | 'postcss-import': {}, 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/components/Menu/Label/Label.module.css: -------------------------------------------------------------------------------- 1 | .smallMenuLabel { 2 | @apply font-medium font-sans mr-1; 3 | font-size: 14px; 4 | flex-shrink: 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/images/content/screenshots/amqp-rule/choose-amqp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/amqp-rule/choose-amqp.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/app-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/app-settings.png -------------------------------------------------------------------------------- /src/images/content/screenshots/new-integration-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/new-integration-rule.png -------------------------------------------------------------------------------- /src/components/Menu/LanguageNavigation/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LanguageNavigation } from './LanguageNavigation'; 2 | export * from './LanguageNavigation'; 3 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-message-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-message-list.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-window-simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-window-simple.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-participant-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-participant-list.png -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-typing-indicators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-typing-indicators.png -------------------------------------------------------------------------------- /src/images/content/diagrams/Ably-Global-Message-Routing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/Ably-Global-Message-Routing.gif -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-connector-for-mongodb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-connector-for-mongodb.png -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-connector-for-postgres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-connector-for-postgres.png -------------------------------------------------------------------------------- /src/images/content/diagrams/before-publish-moderation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/before-publish-moderation.png -------------------------------------------------------------------------------- /src/images/content/diagrams/livesync-models-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/livesync-models-components.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/overview.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/account-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/account-id.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/bearer-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/bearer-token.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/postman-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/postman-link.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/send-request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/send-request.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kafka-rule/choose-kafka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kafka-rule/choose-kafka.png -------------------------------------------------------------------------------- /src/contexts/highlighted-menu-context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const HighlightedMenuContext = createContext(null); 4 | -------------------------------------------------------------------------------- /src/images/content/diagrams/ably-kafka-connector-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/ably-kafka-connector-overview.png -------------------------------------------------------------------------------- /src/images/content/diagrams/history-persist-all-messages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/history-persist-all-messages.png -------------------------------------------------------------------------------- /src/images/content/diagrams/history-persist-last-message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/history-persist-last-message.png -------------------------------------------------------------------------------- /src/images/content/diagrams/livesync_livecomments_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/livesync_livecomments_example.gif -------------------------------------------------------------------------------- /src/images/content/diagrams/models-SDK-optimistic-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/models-SDK-optimistic-update.png -------------------------------------------------------------------------------- /src/images/content/screenshots/amqp-rule/integrations-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/amqp-rule/integrations-tab.png -------------------------------------------------------------------------------- /src/images/content/screenshots/developer-console-channels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/developer-console-channels.png -------------------------------------------------------------------------------- /src/images/content/screenshots/developer-console-rest-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/developer-console-rest-api.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/review-and-create-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/review-and-create-role.png -------------------------------------------------------------------------------- /src/images/content/screenshots/ids-keys/account-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/ids-keys/account-settings.png -------------------------------------------------------------------------------- /src/images/content/screenshots/pulsar-rule/choose-pulsar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/pulsar-rule/choose-pulsar.png -------------------------------------------------------------------------------- /src/images/content/screenshots/sqs-rule/integrations-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/sqs-rule/integrations-tab.png -------------------------------------------------------------------------------- /src/components/blocks/headings/H6.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const H6 = GenericHtmlBlock('h6'); 4 | 5 | export default H6; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Col.ts: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Col = GenericHtmlBlock('col'); 4 | 5 | export default Col; 6 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-window-with-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-window-with-header.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-direct-activation-web-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-direct-activation-web-push.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/app-list-request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/app-list-request.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/my-access-tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/my-access-tokens.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/new-access-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/new-access-token.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/review-and-create-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/review-and-create-policy.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kafka-rule/integrations-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kafka-rule/integrations-tab.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kinesis-rule/choose-kinesis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kinesis-rule/choose-kinesis.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kinesis-rule/integrations-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kinesis-rule/integrations-tab.png -------------------------------------------------------------------------------- /src/images/content/screenshots/pulsar-rule/integrations-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/pulsar-rule/integrations-tab.png -------------------------------------------------------------------------------- /src/components/blocks/dividers/Div.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Div = GenericHtmlBlock('div'); 4 | 5 | export default Div; 6 | -------------------------------------------------------------------------------- /src/components/blocks/dividers/Main.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Main = GenericHtmlBlock('main'); 4 | 5 | export default Main; 6 | -------------------------------------------------------------------------------- /src/components/blocks/dividers/Span.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Span = GenericHtmlBlock('span'); 4 | 5 | export default Span; 6 | -------------------------------------------------------------------------------- /src/components/blocks/software/Kbd.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Kbd = GenericHtmlBlock('kbd'); 4 | 5 | export default Kbd; 6 | -------------------------------------------------------------------------------- /src/components/blocks/software/Samp.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Samp = GenericHtmlBlock('samp'); 4 | 5 | export default Samp; 6 | -------------------------------------------------------------------------------- /src/components/blocks/software/Var.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Var = GenericHtmlBlock('var'); 4 | 5 | export default Var; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Tfoot.ts: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Tfoot = GenericHtmlBlock('tfoot'); 4 | 5 | export default Tfoot; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Thead.ts: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Thead = GenericHtmlBlock('thead'); 4 | 5 | export default Thead; 6 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-window-with-sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-window-with-sidebar.png -------------------------------------------------------------------------------- /src/images/content/diagrams/livesync-models-components-usecase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/livesync-models-components-usecase.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-activate-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-activate-highlighted.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-configure-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-configure-highlighted.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-server-side-activation-device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-server-side-activation-device.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/imported-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/imported-collection.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/list-apps-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/list-apps-response.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/provision-and-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/provision-and-test.png -------------------------------------------------------------------------------- /src/images/content/screenshots/sqs-rule/sqs-rule-settings-sqs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/sqs-rule/sqs-rule-settings-sqs.png -------------------------------------------------------------------------------- /src/utilities/browser/is-mac.ts: -------------------------------------------------------------------------------- 1 | import { safeWindow } from './safe-window'; 2 | 3 | export const isMac = safeWindow.navigator.platform.toUpperCase().indexOf('MAC') >= 0; 4 | -------------------------------------------------------------------------------- /data/textile.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'textile-js' { 2 | type TextileFunction = (input: string) => string; 3 | const textile: TextileFunction; 4 | export default textile; 5 | } 6 | -------------------------------------------------------------------------------- /data/transform/StringContentOrderedList.d.ts: -------------------------------------------------------------------------------- 1 | export type StringContent = { 2 | data: string; 3 | type: string; 4 | }; 5 | 6 | export type StringContentList = StringContent[]; 7 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/em.js: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | 3 | const Em = GenericHtmlBlock('em'); 4 | 5 | export default Em; 6 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/sub.js: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | 3 | const Sub = GenericHtmlBlock('sub'); 4 | 5 | export default Sub; 6 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/sup.js: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | 3 | const Sup = GenericHtmlBlock('sup'); 4 | 5 | export default Sup; 6 | -------------------------------------------------------------------------------- /src/images/content/diagrams/push-server-side-activation-web-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-server-side-activation-web-push.png -------------------------------------------------------------------------------- /src/images/content/screenshots/amqp-rule/amqp-rule-settings-amqp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/amqp-rule/amqp-rule-settings-amqp.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/select-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/select-app.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/application-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/application-settings.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/postman-import-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/postman-import-default.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/postman-import-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/postman-import-dialog.png -------------------------------------------------------------------------------- /src/images/content/screenshots/iam/select-type-of-trusted-entity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/iam/select-type-of-trusted-entity.png -------------------------------------------------------------------------------- /src/images/content/screenshots/sqs-rule/sqs-rule-settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/sqs-rule/sqs-rule-settings-general.png -------------------------------------------------------------------------------- /examples/chat-presence/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /src/components/blocks/headings/Header.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Header = GenericHtmlBlock('header'); 4 | 5 | export default Header; 6 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/Dfn.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Dfn = GenericHtmlBlock('dfn'); 4 | 5 | export default Dfn; 6 | -------------------------------------------------------------------------------- /src/components/blocks/software/Output.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Output = GenericHtmlBlock('output'); 4 | 5 | export default Output; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Caption.ts: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Caption = GenericHtmlBlock('caption'); 4 | 5 | export default Caption; 6 | -------------------------------------------------------------------------------- /src/images/content/screenshots/amqp-rule/amqp-rule-settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/amqp-rule/amqp-rule-settings-general.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/laravel-echo-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/laravel-echo-example.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kafka-rule/kafka-rule-settings-kafka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kafka-rule/kafka-rule-settings-kafka.png -------------------------------------------------------------------------------- /examples/chat-presence/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /src/components/blocks/dividers/Article.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Article = GenericHtmlBlock('article'); 4 | 5 | export default Article; 6 | -------------------------------------------------------------------------------- /src/components/blocks/dividers/Section.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Section = GenericHtmlBlock('section'); 4 | 5 | export default Section; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Audio.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Audio = GenericHtmlBlock('audio'); 4 | 5 | export default Audio; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Quote.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Quote = GenericHtmlBlock('q'); 4 | 5 | export default Quote; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Video.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Video = GenericHtmlBlock('video'); 4 | 5 | export default Video; 6 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/Abbr.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Abbr = GenericHtmlBlock('abbr'); 4 | 5 | export default Abbr; 6 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/Time.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Time = GenericHtmlBlock('time'); 4 | 5 | export default Time; 6 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/small.js: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | 3 | const Small = GenericHtmlBlock('small'); 4 | 5 | export default Small; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Colgroup.ts: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Colgroup = GenericHtmlBlock('colgroup'); 4 | 5 | export default Colgroup; 6 | -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-activate-highlighted-web-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-activate-highlighted-web-push.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-publish-subscribe-highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-publish-subscribe-highlighted.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/location-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/location-source.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/publishing-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/publishing-app.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/sdk-build-tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/sdk-build-tools.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/swift/publisher-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/swift/publisher-running.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/account-settings-menu-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/account-settings-menu-item.png -------------------------------------------------------------------------------- /src/images/content/screenshots/control-api/my-access-tokens-menu-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/control-api/my-access-tokens-menu-item.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kafka-rule/kafka-rule-settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kafka-rule/kafka-rule-settings-general.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-aws.png -------------------------------------------------------------------------------- /src/images/content/screenshots/pulsar-rule/pulsar-rule-settings-pulsar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/pulsar-rule/pulsar-rule-settings-pulsar.png -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/Meter.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Meter = GenericHtmlBlock('meter'); 4 | 5 | export default Meter; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/AElementHelpers/check-link-is-internal.ts: -------------------------------------------------------------------------------- 1 | // DEPRECATED, please use the file below 2 | export { checkLinkIsInternal } from 'src/utilities/link-checks'; 3 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Iframe.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Iframe = GenericHtmlBlock('iframe'); 4 | 5 | export default Iframe; 6 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/strong.js: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | 3 | const Strong = GenericHtmlBlock('strong'); 4 | 5 | export default Strong; 6 | -------------------------------------------------------------------------------- /src/components/blocks/table/Table.module.css: -------------------------------------------------------------------------------- 1 | .table { 2 | line-height: 23px; 3 | } 4 | 5 | .tableContainer { 6 | @apply mb-8; 7 | overflow: auto; 8 | font-size: 16px; 9 | } 10 | -------------------------------------------------------------------------------- /src/images/content/chat/ui-component-chat-window-with-header-and-footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/chat/ui-component-chat-window-with-header-and-footer.png -------------------------------------------------------------------------------- /src/images/content/diagrams/push-process-configure-highlighted-web-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/diagrams/push-process-configure-highlighted-web-push.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/extended-controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/extended-controls.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/default-resolution-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/default-resolution-policy.png -------------------------------------------------------------------------------- /src/images/content/screenshots/pulsar-rule/pulsar-rule-settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/pulsar-rule/pulsar-rule-settings-general.png -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | ROOM_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /src/components/Container/Container.module.css: -------------------------------------------------------------------------------- 1 | .navStyles, 2 | .mainStyles { 3 | margin-left: auto; 4 | margin-right: auto; 5 | } 6 | 7 | .navStyles { 8 | max-width: 1360px; 9 | } 10 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/Select.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Select = GenericHtmlBlock('select'); 4 | 5 | export default Select; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Address.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Address = GenericHtmlBlock('address'); 4 | 5 | export default Address; 6 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/Details.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Details = GenericHtmlBlock('details'); 4 | 5 | export default Details; 6 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/Summary.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Summary = GenericHtmlBlock('summary'); 4 | 5 | export default Summary; 6 | -------------------------------------------------------------------------------- /src/images/content/screenshots/amqp-rule/amqp-rule-settings-auth-and-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/amqp-rule/amqp-rule-settings-auth-and-header.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/android/example-apps-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/android/example-apps-running.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-general.png -------------------------------------------------------------------------------- /src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-kinesis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/kinesis-rule/kinesis-rule-settings-kinesis.png -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | SPACE_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /jest-preprocess.js: -------------------------------------------------------------------------------- 1 | const babelOptions = { 2 | presets: ['babel-preset-gatsby', '@babel/preset-typescript'], 3 | }; 4 | module.exports = require('babel-jest').default.createTransformer(babelOptions); 5 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/Noscript.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Noscript = GenericHtmlBlock('noscript'); 4 | 5 | export default Noscript; 6 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/Progress.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Progress = GenericHtmlBlock('progress'); 4 | 5 | export default Progress; 6 | -------------------------------------------------------------------------------- /src/components/blocks/software/Code/prismjs-overwrite.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | :not(pre) > code[class*='language-'], 3 | pre[class*='language-'] { 4 | @apply bg-cool-black my-0; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/javascript/example-app-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/javascript/example-app-running.png -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | ABLY_KEY: import.meta.env.VITE_ABLY_KEY as string, 3 | CHANNEL_NAME: import.meta.env.VITE_NAME as string, 4 | }; 5 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/Textarea.tsx: -------------------------------------------------------------------------------- 1 | import EditableHtmlBlock from '../Html/EditableHtmlBlock'; 2 | 3 | const Textarea = EditableHtmlBlock('textarea'); 4 | 5 | export default Textarea; 6 | -------------------------------------------------------------------------------- /src/components/blocks/external-references/Blockquote.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | 3 | const Blockquote = GenericHtmlBlock('blockquote'); 4 | 5 | export default Blockquote; 6 | -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/swift/publisher-enter-tracking-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/swift/publisher-enter-tracking-id.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/chat-kotlin-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/chat-kotlin-getting-started-guide.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/chat-react-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/chat-react-getting-started-guide.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/chat-swift-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/chat-swift-getting-started-guide.png -------------------------------------------------------------------------------- /src/images/content/screenshots/hive-dashboard-rule/hive-dashboard-action-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/hive-dashboard-rule/hive-dashboard-action-setup.png -------------------------------------------------------------------------------- /mocks/server.js: -------------------------------------------------------------------------------- 1 | import { http } from 'msw'; 2 | import { setupServer } from 'msw/node'; 3 | import { handlers } from './handlers'; 4 | 5 | const server = setupServer(...handlers); 6 | 7 | export { server, http }; 8 | -------------------------------------------------------------------------------- /src/components/CodeEditor/CodeEditor.css: -------------------------------------------------------------------------------- 1 | /* we need to override one of our default styles */ 2 | .remove-btn-focus button { 3 | outline: none; 4 | } 5 | 6 | div.remove-border-radius { 7 | border-radius: 0; 8 | } -------------------------------------------------------------------------------- /src/components/blocks/table/Th.module.css: -------------------------------------------------------------------------------- 1 | .theader:before { 2 | @apply bg-mid-grey; 3 | content: ''; 4 | top: 0; 5 | left: 0; 6 | width: 100%; 7 | height: 4px; 8 | position: absolute; 9 | } 10 | -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/pub-sub-react-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/pub-sub-react-getting-started-guide.png -------------------------------------------------------------------------------- /config/website-redirects.conf: -------------------------------------------------------------------------------- 1 | # Redirect pages that used to be available in the nanoc toolchain, back 2 | # to the website where people should be accessing them 3 | 4 | ~^/tutorials(.*)$ https://ably.com/tutorials$1; 5 | -------------------------------------------------------------------------------- /examples/chat-presence/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /how-tos/pub-sub/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/javascript/example-app-select-trackable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/javascript/example-app-select-trackable.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/pub-sub-flutter-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/pub-sub-flutter-getting-started-guide.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/pub-sub-laravel-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/pub-sub-laravel-getting-started-guide.png -------------------------------------------------------------------------------- /examples/auth-generate-jwt/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/auth-request-token/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-presence/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /how-tos/pub-sub/src/App.tsx: -------------------------------------------------------------------------------- 1 | import Scoreboard from './components/Scoreboard'; 2 | 3 | function App() { 4 | return ( 5 | <> 6 | 7 | 8 | ) 9 | } 10 | 11 | export default App 12 | -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/chat-react-native-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/chat-react-native-getting-started-guide.png -------------------------------------------------------------------------------- /__mocks__/gatsby.js: -------------------------------------------------------------------------------- 1 | const gatsby = jest.requireActual('gatsby'); 2 | module.exports = { 3 | ...gatsby, 4 | graphql: jest.fn(), 5 | StaticQuery: jest.fn(), 6 | useStaticQuery: jest.fn(), 7 | navigate: jest.fn(), 8 | }; 9 | -------------------------------------------------------------------------------- /content/partials/general/events/_events_examples_intro.textile: -------------------------------------------------------------------------------- 1 | Given the various potential combinations of @enveloped@, @batched@ and message sources, it can be good to know what to expect given certain combinations of rules. 2 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-presence/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"] 5 | } 6 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /src/components/Menu/MenuItemButton/MenuItemButton.module.css: -------------------------------------------------------------------------------- 1 | .button { 2 | @apply hidden md:block text-white border-b border-transparent px-4 focus:outline-none; 3 | } 4 | 5 | .isActive { 6 | @apply border-neutral-100; 7 | } 8 | -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/javascript/example-app-select-map-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/javascript/example-app-select-map-provider.png -------------------------------------------------------------------------------- /src/images/content/screenshots/asset-tracking/swift/publisher-and-subscriber-apps-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/asset-tracking/swift/publisher-and-subscriber-apps-running.png -------------------------------------------------------------------------------- /src/images/content/screenshots/getting-started/pub-sub-react-native-getting-started-guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ably/docs/HEAD/src/images/content/screenshots/getting-started/pub-sub-react-native-getting-started-guide.png -------------------------------------------------------------------------------- /examples/auth-request-token/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /src/components/Select/types.ts: -------------------------------------------------------------------------------- 1 | export type ReactSelectOption = { 2 | label: string; 3 | value: string; 4 | }; 5 | 6 | export type ReactSelectOptGroup = { 7 | label: string; 8 | options: ReactSelectOption[]; 9 | }; 10 | -------------------------------------------------------------------------------- /src/components/blocks/non-semantic/Br.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // Keeping this for consistency. We could render the string but prefer to keep just the one method. 4 | const Br = () =>
; 5 | 6 | export default Br; 7 | -------------------------------------------------------------------------------- /test-generators.js/alphanumeric.js: -------------------------------------------------------------------------------- 1 | import * as fc from 'fast-check'; 2 | 3 | const alphaNumericString = fc.asciiString({ minLength: 1 }).map((str) => str.replace(/[^a-zA-Z0-9]/g, 'a')); 4 | 5 | export default alphaNumericString; 6 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-message-annotations/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import baseConfig from '../../vite.config'; 3 | 4 | export default defineConfig({ 5 | ...baseConfig, 6 | envDir: '../../', 7 | }); 8 | -------------------------------------------------------------------------------- /src/components/blocks/non-semantic/Wbr.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // Keeping this for consistency. We could render the string but prefer to keep just the one method. 4 | const Wbr = () => ; 5 | 6 | export default Wbr; 7 | -------------------------------------------------------------------------------- /src/redux/select-data.ts: -------------------------------------------------------------------------------- 1 | export const selectData = 2 | (key: string) => 3 | (store: Store): Record => { 4 | const result = store.getState()[key]; 5 | return result && result.data ? result.data : {}; 6 | }; 7 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/fix-textile-definition-lists/fix-indented-definition-lists.ts: -------------------------------------------------------------------------------- 1 | export const fixIndentedDefinitionLists: StringTransformation = (content) => 2 | content.replace(/^[^\S\n]+(-.*?:=.*)$/gm, '$1'); 3 | -------------------------------------------------------------------------------- /examples/chat-presence/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /how-tos/pub-sub/src/utils.ts: -------------------------------------------------------------------------------- 1 | export const shouldRunPublisher = () => { 2 | const url = new URL(window.location.href); 3 | const publisherInParams = url.searchParams.get("publisher"); 4 | 5 | return publisherInParams !== 'false'; 6 | } 7 | -------------------------------------------------------------------------------- /src/styles/index.js: -------------------------------------------------------------------------------- 1 | import * as colors from './colors'; 2 | import * as mq from './mq'; 3 | 4 | export { colors, mq }; 5 | export { default as fonts, weights as fontWeights } from './fonts'; 6 | export { default as spacing } from './spacing'; 7 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/chat-presence/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/auth-request-token/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/fix-textile-definition-lists/fix-h1-6-after-definition-lists.ts: -------------------------------------------------------------------------------- 1 | export const fixH1To6AFterDefinitionLists: StringTransformation = (content) => 2 | content.replace(/(\n-(.*?):=(.*?)\n)(h[1-6])/g, '$1\n$2'); 3 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/src/environment.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_ABLY_KEY: string; 5 | } 6 | 7 | interface ImportMeta { 8 | readonly env: ImportMetaEnv; 9 | } 10 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /examples/pub-sub-message-annotations/javascript/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | interface ImportMetaEnv { 2 | readonly VITE_ABLY_KEY: string; 3 | // Add other environment variables here if needed 4 | } 5 | 6 | interface ImportMeta { 7 | readonly env: ImportMetaEnv; 8 | } 9 | -------------------------------------------------------------------------------- /data/transform/constants.ts: -------------------------------------------------------------------------------- 1 | export const LATEST_ABLY_API_VERSION = 1.2; 2 | export const LATEST_ABLY_API_VERSION_STRING = `${LATEST_ABLY_API_VERSION}`; 3 | export const ARTICLE_TYPES = { 4 | document: 'document', 5 | apiReference: 'apiReference', 6 | } as const; 7 | -------------------------------------------------------------------------------- /src/components/SDKsPage/sdks.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | max-width: 960px; 3 | margin: 0 auto; 4 | } 5 | 6 | @media (max-width: 959px) { 7 | .container { 8 | padding: 0 1.5rem; 9 | } 10 | } 11 | 12 | .btn_sdks { 13 | padding: 8px 0; 14 | } 15 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/add-hyphen-list-support.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Textile JS does not support hyphen-led unordered lists 3 | */ 4 | export const addHyphenListSupport: StringTransformation = (content) => content.replace(/^- (?!.*:=)(.*)$/gm, '* $1'); 5 | -------------------------------------------------------------------------------- /src/components/blocks/styles/semantic/index.js: -------------------------------------------------------------------------------- 1 | export { default as Em } from './em'; 2 | export { default as Small } from './small'; 3 | export { default as Strong } from './strong'; 4 | export { default as Sub } from './sub'; 5 | export { default as Sup } from './sup'; 6 | -------------------------------------------------------------------------------- /src/components/blocks/list/Ol.tsx: -------------------------------------------------------------------------------- 1 | import React, { FC } from 'react'; 2 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 3 | 4 | const Ol: FC = (props) =>
    ; 5 | 6 | export default GenericHtmlBlock(Ol); 7 | -------------------------------------------------------------------------------- /src/components/blocks/list/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Dd } from './Dd'; 2 | export { default as Dl } from './Dl'; 3 | export { default as Dt } from './Dt'; 4 | export { default as Li } from './Li'; 5 | export { default as Ol } from './Ol'; 6 | export { default as Ul } from './Ul'; 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://EditorConfig.org 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | indent_style = space 10 | indent_size = 2 11 | charset = utf-8 -------------------------------------------------------------------------------- /data/html-parser/add-info-to-codeblocks/codeblock-api-key-info.ts: -------------------------------------------------------------------------------- 1 | import { addInfoToCodeBlock } from './add-info-to-codeblocks'; 2 | 3 | export const API_KEY_DATA_ATTRIBUTE = 'key'; 4 | 5 | export const addAPIKeyInfoToCodeBlock = addInfoToCodeBlock('API_KEY', API_KEY_DATA_ATTRIBUTE); 6 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-ui-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/blocks/semantic-enhancements/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Abbr } from './Abbr'; 2 | export { default as Details } from './Details'; 3 | export { default as Dfn } from './Dfn'; 4 | export { default as Summary } from './Summary'; 5 | export { default as Time } from './Time'; 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore all mdx files in src/pages - we need to be able to render components on one line for inlining 2 | src/pages/**/*.mdx 3 | src/pages/**/*.md 4 | 5 | examples/**/README.md 6 | 7 | # Fixture files should not be formatted by Prettier 8 | data/onPostBuild/__fixtures__/*.mdx -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/fix-textile-definition-lists/fix-newlines-in-definition-lists.ts: -------------------------------------------------------------------------------- 1 | const NEWLINE_DL_REGEX = /(-.*?:=.*?)[\n\r]{2,}(-.*?:=.*?)/g; 2 | 3 | export const fixNewlinesInDefinitionLists = (content: string) => content.replace(NEWLINE_DL_REGEX, '$1\n$2'); 4 | -------------------------------------------------------------------------------- /how-tos/pub-sub/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ButtonWithTooltip'; 2 | export * from './LanguageButton'; 3 | export * from './HorizontalMenu'; 4 | export * from './Select'; 5 | export * from './common'; 6 | export * from './Container'; 7 | 8 | export { type HamburgerMenuProps } from './Header'; 9 | -------------------------------------------------------------------------------- /examples/chat-presence/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-presence-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-presence/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-ui-sidebar", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/postcss.config.mts: -------------------------------------------------------------------------------- 1 | const baseConfig = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | 'franken-ui/postcss/combine-duplicated-selectors': { 6 | removeDuplicatedProperties: true, 7 | }, 8 | }, 9 | }; 10 | 11 | export default baseConfig; 12 | -------------------------------------------------------------------------------- /examples/pub-sub-message-annotations/javascript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["./src/**/*.ts", "./src/**/*.tsx"], 4 | "exclude": ["../../node_modules", "../../dist", "../../lib"], 5 | "compilerOptions": { 6 | "types": ["vite/client"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/HorizontalMenu/HorizontalMenu.module.css: -------------------------------------------------------------------------------- 1 | .end, 2 | .light { 3 | @apply relative w-full; 4 | } 5 | 6 | .end { 7 | @apply flex justify-end pl-0; 8 | } 9 | 10 | .light { 11 | @apply grid gap-6 overflow-visible m-0 pl-0 justify-between md:grid-cols-header-layout; 12 | } 13 | -------------------------------------------------------------------------------- /src/components/attribs.ts: -------------------------------------------------------------------------------- 1 | import { Component, FunctionComponent, JSXElementConstructor } from 'react'; 2 | 3 | export type Attribs< 4 | T extends keyof JSX.IntrinsicElements | JSXElementConstructor, 5 | > = { 6 | attribs: React.ComponentProps; 7 | }; 8 | -------------------------------------------------------------------------------- /src/components/blocks/list/Dd.tsx: -------------------------------------------------------------------------------- 1 | import cn from '@ably/ui/core/utils/cn'; 2 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 3 | 4 | const Dd: React.FC<{ className?: string }> = (props) =>
    ; 5 | 6 | export default GenericHtmlBlock(Dd); 7 | -------------------------------------------------------------------------------- /src/components/blocks/list/Ul.tsx: -------------------------------------------------------------------------------- 1 | import React, { FC } from 'react'; 2 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 3 | 4 | const Ul: FC<{ className: string }> = (props) =>
      ; 5 | 6 | export default GenericHtmlBlock(Ul); 7 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App.tsx'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-ui-app/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-ui-chat-window", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/src/ably.config.d.ts: -------------------------------------------------------------------------------- 1 | import { LiveMap } from 'ably'; 2 | 3 | export type Tasks = LiveMap<{ [key: string]: string }>; 4 | 5 | declare global { 6 | export interface AblyObjectsTypes { 7 | root: { 8 | tasks: Tasks; 9 | }; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-history-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-presence-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-rewind-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/contexts/article-type-context.ts: -------------------------------------------------------------------------------- 1 | import { ARTICLE_TYPES } from '../../data/transform/constants'; 2 | import { createContext } from 'react'; 3 | 4 | export type ArticleType = keyof typeof ARTICLE_TYPES; 5 | 6 | export const ArticleTypeContext = createContext(ARTICLE_TYPES.document); 7 | -------------------------------------------------------------------------------- /content/partials/general/events/_batched_event_headers.textile: -------------------------------------------------------------------------------- 1 | Batched events will have the following headers: 2 | 3 | - content-type := the type of the payload. This will be @application/json@ or @application/x-msgpack@ 4 | - x-ably-version := the version of the Webhook. At present this should be @1.2@ 5 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-generate-jwt-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-request-token-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-presence/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-presence-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-presence/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-room-history-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-room-history/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-room-messages-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App.tsx'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App.tsx'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-history/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-occupancy-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-rewind-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /src/components/Article/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent as FC } from 'react'; 2 | 3 | const Article: FC<{ children: React.ReactNode }> = ({ children }) => ( 4 |
      {children}
      5 | ); 6 | 7 | export default Article; 8 | -------------------------------------------------------------------------------- /src/components/blocks/software/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Code } from './Code'; 2 | export { default as Kbd } from './Kbd'; 3 | export { default as Output } from './Output'; 4 | export { default as Pre } from './Pre'; 5 | export { default as Samp } from './Samp'; 6 | export { default as Var } from './Var'; 7 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-generate-jwt-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/auth-generate-jwt/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-generate-jwt-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "node src/server.ts", 8 | "build": "tsc", 9 | "start": "node dist/server.js" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/auth-request-token/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/auth-request-token/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-request-token-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "node src/server.ts", 8 | "build": "tsc", 9 | "start": "node dist/server.js" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-presence/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-room-history-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-room-history/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-messages/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-typing-indicator-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-ui-chat-window/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-ui-sidebar/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-channel-state-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-history-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-history/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-occupancy-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-occupancy/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-presence-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-presence/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-rewind/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root')!).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-live-cursors-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /data/transform/parser-enhancements/add-dates.js: -------------------------------------------------------------------------------- 1 | const addDates = (content, attributes) => { 2 | if (attributes.published_date) { 3 | return content.replace(/(\{\{PUBLISHED_DATE\}\})/gi, attributes.published_date); 4 | } 5 | return content; 6 | }; 7 | 8 | module.exports = { 9 | addDates, 10 | }; 11 | -------------------------------------------------------------------------------- /data/transform/pre-parser/semantic/index.js: -------------------------------------------------------------------------------- 1 | const { addMinimizeForHeadings, addMinimizedIndent } = require('./minimize'); 2 | 3 | const stripComments = content => content.replace(/\s*/g, ''); 4 | 5 | module.exports = { 6 | stripComments, 7 | addMinimizedIndent, 8 | addMinimizeForHeadings 9 | } -------------------------------------------------------------------------------- /examples/auth-request-token/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-request-token-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/auth-request-token/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-room-messages-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-room-messages/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-room-reactions-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/chat-room-reactions/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-avatar-stack-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-live-cursors-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-live-cursors/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-member-location/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-member-location-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/fix-inline-code.ts: -------------------------------------------------------------------------------- 1 | // textile-js, unlike RedCloth, does not interpret @...@ sections as elements 2 | // if they are preceded by a non-space character 3 | export const fixInlineCode: StringTransformation = (content) => content.replace(/@(.+?)@/gm, '$1'); 4 | -------------------------------------------------------------------------------- /data/transform/retrieve-partials/applyIndent.ts: -------------------------------------------------------------------------------- 1 | import { indent } from '../shared-utilities'; 2 | import { StringContent } from '../StringContentOrderedList'; 3 | 4 | export const applyIndent = (indentation: number) => (content: StringContent) => ({ 5 | ...content, 6 | data: indent(content.data, indentation), 7 | }); 8 | -------------------------------------------------------------------------------- /examples/chat-typing-indicator/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-typing-indicator-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/liveobjects-live-map/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liveobjects-live-map-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-channel-messages-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-state/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-channel-state-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-connection-state-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-message-encryption-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import baseConfig from '../../tailwind.config'; 2 | import type { Config } from 'tailwindcss'; 3 | 4 | const config: Config = { 5 | ...baseConfig, 6 | content: ['./src/**/*.{js,ts,tsx}', './index.html'], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/react/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-component-locking-react", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview", 9 | "lint": "next lint" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-member-location/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-member-location-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/blocks/dividers/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Article } from './Article'; 2 | export { default as Aside } from './Aside'; 3 | export { default as Div } from './Div'; 4 | export { default as Main } from './Main'; 5 | export { default as Section } from './Section'; 6 | export { default as Span } from './Span'; 7 | -------------------------------------------------------------------------------- /data/createPages/safeFileExists.ts: -------------------------------------------------------------------------------- 1 | import { existsSync } from 'fs'; 2 | 3 | export const safeFileExists = (path: string): boolean => { 4 | try { 5 | return existsSync(path); 6 | } catch (err) { 7 | console.error(`Error checking if script file exists for slug`, err); 8 | return false; 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liveobjects-live-counter-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-channel-messages/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-channel-messages-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-connection-state/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-connection-state-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/spaces-component-locking/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spaces-component-locking-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/blocks/software/Code/InlineCodeElement.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const InlineCodeElement = ({ children, ...props }: { children: React.ReactNode }) => ( 4 | 5 | {children} 6 | 7 | ); 8 | 9 | export default InlineCodeElement; 10 | -------------------------------------------------------------------------------- /examples/pub-sub-message-annotations/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-message-annotations-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /examples/pub-sub-message-encryption/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pub-sub-message-encryption-javascript", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test-generators.js/README.md: -------------------------------------------------------------------------------- 1 | # Test Generators 2 | 3 | Test generators are intended for usage with property-based testing libraries such as fast-check. 4 | 5 | 'Generators' was chosen as a name rather than the more specific 'Arbitraries' because anything test-generator-related should be placed in here (e.g., quickcheck or js-verify). -------------------------------------------------------------------------------- /examples/spaces-avatar-stack/react/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | import './styles/styles.css'; 5 | 6 | ReactDOM.createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ); 11 | -------------------------------------------------------------------------------- /src/components/PageTitle.test.tsx: -------------------------------------------------------------------------------- 1 | import { expectAccessibility } from 'src/utilities/test/expect-accessibility'; 2 | import PageTitle from './PageTitle'; 3 | 4 | describe('Basic accessibility test for PageTitle', () => { 5 | it('is accessible', () => { 6 | expectAccessibility(Lorem Ipsum); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /src/components/blocks/headings/index.ts: -------------------------------------------------------------------------------- 1 | export { default as H1 } from './H1'; 2 | export { default as H2 } from './H2'; 3 | export { default as H3 } from './H3'; 4 | export { default as H4 } from './H4'; 5 | export { default as H5 } from './H5'; 6 | export { default as H6 } from './H6'; 7 | export { default as Header } from './Header'; 8 | -------------------------------------------------------------------------------- /content/partials/general/events/_enveloped_event_headers.textile: -------------------------------------------------------------------------------- 1 | Enveloped events will have the following headers: 2 | 3 | - x-ably-version := the version of the Webhook. At present this should be @1.2@ 4 | - content-type := the type of the payload. This will be @application/json@ or @application/x-msgpack@ for "enveloped":#envelope messages 5 | -------------------------------------------------------------------------------- /data/transform/parser-enhancements/spec-anchor-links.js: -------------------------------------------------------------------------------- 1 | const addSpecAnchorLinks = (content, attributes) => { 2 | if (attributes.anchor_specs) { 3 | return content.replace(/\* @\((\w+)\)@/, "* @($1)@"); 4 | } 5 | return content; 6 | }; 7 | 8 | module.exports = { 9 | addSpecAnchorLinks, 10 | }; 11 | -------------------------------------------------------------------------------- /src/components/blocks/list/Dt.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 2 | import { listDt } from './list.module.css'; 3 | 4 | const Dt: React.FC<{ className?: string }> = (props) => ( 5 |
      6 | ); 7 | 8 | export default GenericHtmlBlock(Dt); 9 | -------------------------------------------------------------------------------- /content/partials/types/_message_annotations.textile: -------------------------------------------------------------------------------- 1 | h4. 2 | default: Properties 3 | java: Members 4 | ruby: Attributes 5 | python: Attributes 6 | 7 | - summary := An object whose keys are annotation types, and the values are aggregated summaries for that annotation type
      __Type: @Record@__ 8 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/make-implicit-ordered-list-explicit.ts: -------------------------------------------------------------------------------- 1 | // Not supporting implicit OLs at different indentation levels because the 2 | // chance of causing unexpected behaviour is too high. 3 | export const makeImplicitOrderedListExplicit: StringTransformation = (content) => 4 | content.replace(/^\d+\.(.+)$/gm, '# $1'); 5 | -------------------------------------------------------------------------------- /src/components/PageTitle.tsx: -------------------------------------------------------------------------------- 1 | import { FC, ReactNode } from 'react'; 2 | 3 | interface PageTitleProps { 4 | children: ReactNode; 5 | } 6 | 7 | const PageTitle: FC = ({ children }) => ( 8 |

      9 | {children} 10 |

      11 | ); 12 | 13 | export default PageTitle; 14 | -------------------------------------------------------------------------------- /src/components/blocks/complex-functionality/styles.css: -------------------------------------------------------------------------------- 1 | input[type='text'].input-field { 2 | @apply border border-mid-grey bg-light-grey w-1/2 h-12 rounded; 3 | font-weight: 400; 4 | padding: 12px; 5 | } 6 | input[type='text'].input-field::placeholder { 7 | color: var(--color-dark-grey); 8 | font-weight: 200; 9 | font-size: 16px; 10 | } 11 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/fix-html-tags-with-newlines.ts: -------------------------------------------------------------------------------- 1 | // Restrict this for img tags for now; we do not know what the implications of a larger-scale replacement would be. 2 | export const fixImgTagsWithNewlines: StringTransformation = (content) => 3 | content.replace(/]*\n+[^>]*>/g, (match) => match.replace(/\s{2,}/gm, ' ')); 4 | -------------------------------------------------------------------------------- /data/html-parser/add-info-to-codeblocks/codeblock-random-channel-name.ts: -------------------------------------------------------------------------------- 1 | import { addInfoToCodeBlock } from './add-info-to-codeblocks'; 2 | 3 | export const RANDOM_CHANNEL_NAME_DATA_ATTRIBUTE = 'random-channel'; 4 | 5 | export const addRandomChannelInfoToCodeBlock = addInfoToCodeBlock( 6 | 'RANDOM_CHANNEL_NAME', 7 | RANDOM_CHANNEL_NAME_DATA_ATTRIBUTE, 8 | ); 9 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/add-bold-text.ts: -------------------------------------------------------------------------------- 1 | // textile-js has difficulty adding bolded text in certain circumstances, particularly near (but not wrapped in!) elements. 2 | // NB: this is not just a textile workaround. 3 | export const addBoldText = (content: string): string => content.replace(/\*\*(.*?)\*\*/gm, '$1'); 4 | -------------------------------------------------------------------------------- /examples/liveobjects-live-counter/javascript/src/ably.config.d.ts: -------------------------------------------------------------------------------- 1 | import { LiveCounter } from 'ably'; 2 | import { Color } from './script'; 3 | 4 | declare global { 5 | export interface AblyObjectsTypes { 6 | root: { 7 | [Color.red]: LiveCounter; 8 | [Color.green]: LiveCounter; 9 | [Color.blue]: LiveCounter; 10 | }; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/components/blocks/Html/GenericHtmlBlock.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Html from '.'; 3 | 4 | const GenericHtmlBlock = (Type) => { 5 | const InnerBlock = ({ data, attribs = {} }) => ( 6 | 7 | 8 | 9 | ); 10 | return InnerBlock; 11 | }; 12 | 13 | export default GenericHtmlBlock; 14 | -------------------------------------------------------------------------------- /src/components/blocks/list/Dl/DefinitionListRow.tsx: -------------------------------------------------------------------------------- 1 | import GenericHtmlBlock from '../../Html/GenericHtmlBlock'; 2 | import { definitionListRowStyles } from '../list.module.css'; 3 | 4 | const DefinitionListRow = GenericHtmlBlock('div')({ 5 | data: null, 6 | attribs: { className: definitionListRowStyles }, 7 | }); 8 | 9 | export default DefinitionListRow; 10 | -------------------------------------------------------------------------------- /src/components/blocks/table/Td.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { HtmlComponentProps } from 'src/components/html-component-props'; 3 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 4 | 5 | const Td = (props: HtmlComponentProps<'td'>) => { 6 | return ; 7 | }; 8 | 9 | export default GenericHtmlBlock(Td); 10 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | 'babel-preset-gatsby', 4 | '@babel/preset-typescript', 5 | [ 6 | '@babel/preset-react', 7 | { 8 | runtime: 'automatic', 9 | }, 10 | ], 11 | ], 12 | env: { 13 | production: { 14 | plugins: ['transform-react-remove-prop-types'], 15 | }, 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /src/utilities/debug/log-return.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This is just an identity function that can be used to quickly wrap and monitor values in FRP code. 3 | * Useful with pipe, compose, streams, observables, and content embedded in React elements. 4 | */ 5 | export const logReturn = (x: T): T => { 6 | console.log(x); 7 | return x; 8 | }; 9 | export const lr = logReturn; 10 | -------------------------------------------------------------------------------- /src/components/blocks/list/Li.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import GenericHtmlBlock from '../Html/GenericHtmlBlock'; 3 | 4 | const StyledLi: FC<{ children: React.ReactNode }> = ({ children, ...props }) => ( 5 |
    • 6 | {children} 7 |
    • 8 | ); 9 | 10 | const Li = GenericHtmlBlock(StyledLi); 11 | 12 | export default Li; 13 | -------------------------------------------------------------------------------- /how-tos/pub-sub/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ably Pub-Sub How To 7 | 8 | 9 |
      10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /how-tos/pub-sub/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | import './basketballPublisher.js' 7 | import './footballPublisher.js' 8 | 9 | ReactDOM.createRoot(document.getElementById('root')!).render( 10 | 11 | 12 | , 13 | ) 14 | -------------------------------------------------------------------------------- /data/transform/pre-parser/erbjs/index.js: -------------------------------------------------------------------------------- 1 | const { compose } = require('lodash/fp'); 2 | const { emojiReplacer } = require('./emojis'); 3 | const { itemReplacer } = require('./item-select'); 4 | const { languageReplacer } = require('./language-map'); 5 | 6 | const replaceERB = compose(emojiReplacer, languageReplacer, itemReplacer); 7 | 8 | module.exports = { 9 | replaceERB, 10 | }; 11 | -------------------------------------------------------------------------------- /data/transform/pre-parser/textile-js-workarounds/add-italicised-text.ts: -------------------------------------------------------------------------------- 1 | // textile-js has difficulty adding italicised text in certain circumstances, particularly near (but not wrapped in!) elements. 2 | // NB: this is not just a textile workaround. 3 | export const addItalicisedText: StringTransformation = (content) => 4 | content.replace(/__(.*?)__/gm, '$1'); 5 | --------------------------------------------------------------------------------