Skip to content

Commit d786134

Browse files
committed
feat(cloudflare-turnstile): add support for refresh-timeout & feedback-enabled config options
1 parent 7565eaf commit d786134

5 files changed

Lines changed: 22 additions & 10 deletions

File tree

.changeset/sweet-tomatoes-drop.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@svelte-put/cloudflare-turnstile': minor
3+
---
4+
5+
add support for `refresh-timeout`, `feedback-enabled` config options

packages/cloudflare-turnstile/src/turnstile.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,15 @@ export function turnstile(node) {
7575
/** @type {import('./types.public').TurnstileConfig['refresh-expired']} */ (
7676
node.getAttribute('turnstile-refresh-expired')
7777
) ?? undefined,
78+
'refresh-timeout':
79+
/** @type {import('./types.public').TurnstileConfig['refresh-timeout']} */ (
80+
node.getAttribute('turnstile-refresh-timeout')
81+
) ?? undefined,
7882
appearance:
7983
/** @type {import('./types.public').TurnstileConfig['appearance']} */ (
8084
node.getAttribute('turnstile-appearance')
8185
) ?? undefined,
86+
'feedback-enabled': node.hasAttribute('turnstile-feedback-enabled'),
8287

8388
// events
8489
callback: (token) => {

packages/cloudflare-turnstile/src/types.public.d.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ declare global {
1919
export type TurnstileConfig = TurnstileDataConfig & TurnstileEventConfig;
2020

2121
/**
22-
* @package
22+
* @see {@link https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#configurations | Cloudflare Turnstile Docs}
2323
*/
2424
export type TurnstileDataConfig = {
2525
sitekey: string;
@@ -34,12 +34,14 @@ export type TurnstileDataConfig = {
3434
size?: 'normal' | 'compact';
3535
retry?: 'auto' | 'never';
3636
'retry-interval'?: number;
37-
'refresh-expired'?: 'auto' | 'manual' | 'never' | 'auto';
37+
'refresh-expired'?: 'auto' | 'manual' | 'never';
38+
'refresh-timeout'?: 'auto' | 'manual' | 'never';
3839
appearance?: 'always' | 'execute' | 'interaction-only';
40+
'feedback-enabled': boolean;
3941
};
4042

4143
/**
42-
* @package
44+
* @see {@link https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#configurations | Cloudflare Turnstile Docs}
4345
*/
4446
export type TurnstileEventConfig = {
4547
callback?: (token: string) => void;
@@ -51,9 +53,6 @@ export type TurnstileEventConfig = {
5153
'timeout-callback'?: () => void;
5254
};
5355

54-
/**
55-
* @package
56-
*/
5756
export type TurnstileDataAttributes = {
5857
[K in keyof TurnstileDataConfig as K extends string
5958
? `turnstile-${K}`
@@ -66,7 +65,7 @@ export type TurnstileEventDetail<T extends Record<string, any> = Record<string,
6665
} & T;
6766

6867
/**
69-
* @package
68+
* @see {@link https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#configurations}
7069
*/
7170
export type TurnstileEventAttributes = {
7271
onturnstile?: (event: CustomEvent<TurnstileEventDetail<{ token: string }>>) => void;

sites/docs/src/routes/(site)/docs/(package)/cloudflare-turnstile/+page.md.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ PUBLIC_CLOUDFLARE_TURNSTILE_SITE_KEY="1x00000000000000000000AA"
5353

5454
## Configuration Attributes
5555

56-
As seen in [Quick Start], `@svelte-put/cloudflare-turnstile` can be customized by adding `turnstile-*` attributes, where `*` are properties as described in [Cloudflare Turnstile's client configuration][turnstile.client.configurations] documentation, except for `*-callback` properties, which can be specified via Svelte event handler syntax `onturnstile:*` (more in [Events]).
56+
As seen in [Quick Start], `@svelte-put/cloudflare-turnstile` can be customized by adding `turnstile-*` attributes, where `*` are properties as described in [Cloudflare Turnstile's client configuration][turnstile.client.configurations] documentation, except for `*-callback` properties, which can be specified via Svelte event handler syntax `onturnstile*` (more in [Events]).
5757

5858
If you have Typescript language server set up correctly, you should get autocomplete / intellisense for these `turnstile*` attributes.
5959

@@ -81,7 +81,9 @@ The `turnstile-sitekey` is the only mandatory property. In [Quick Start], it is
8181
turnstile-retry="auto"
8282
turnstile-retry-interval="8000"
8383
turnstile-refresh-expired="auto"
84+
turnstile-refresh-timeout="auto"
8485
turnstile-appearance="always"
86+
turnstile-feedback-enabled
8587
></div>
8688
```
8789

sites/docs/src/routes/(site)/docs/(package)/cloudflare-turnstile/_page/examples/quick-start.svelte

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script lang="ts">
22
import { turnstile } from '@svelte-put/cloudflare-turnstile';
33
4+
// assume using SvelteKit and the '$env/static/public' module is available
45
import { PUBLIC_CLOUDFLARE_TURNSTILE_SITE_KEY } from '$env/static/public';
56
67
let token = $state('');
@@ -18,6 +19,6 @@
1819
onturnstile={(e) => (token = e.detail.token)}
1920
></div>
2021
<p>
21-
Captured Token: <span class="bg-success-surface text-success-text px-2">{token ?? 'pending'}</span
22+
Captured Token: <span class="bg-success-bg text-success-fg px-2">{token ?? 'pending'}</span
2223
>
23-
</p>
24+
</p>

0 commit comments

Comments
 (0)