@clerk/vue 2.2.6 → 2.3.0-canary.v20260518200459
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-6RVRNQP3.js +0 -0
- package/dist/chunk-6RVRNQP3.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/ui-components/ConfigureSSO.vue.d.ts +2 -2
- package/dist/errors/errorThrower.d.ts +1 -1
- package/dist/experimental.d.ts +0 -12
- package/dist/experimental.js +1 -32
- package/dist/experimental.js.map +1 -1
- package/dist/index.js +513 -124
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-YZBFZWBU.js +0 -548
- package/dist/chunk-YZBFZWBU.js.map +0 -1
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/composables/useClerkContext.ts","../src/keys.ts","../src/composables/useClerk.ts","../src/composables/useAuth.ts","../src/utils/childrenUtils.ts","../src/utils/toComputedRefs.ts","unplugin-vue:\u0000/plugin-vue/export-helper"],"sourcesContent":["import { inject } from 'vue';\n\nimport { errorThrower } from '../errors/errorThrower';\nimport { ClerkInjectionKey } from '../keys';\n\nexport function useClerkContext(source: string) {\n const ctx = inject(ClerkInjectionKey);\n\n if (!ctx) {\n return errorThrower.throw(\n `${source} can only be used when the Vue plugin is installed. Learn more: https://clerk.com/docs/reference/vue/clerk-plugin`,\n );\n }\n\n return ctx;\n}\n","import type { InjectionKey } from 'vue';\n\nimport type { AddCustomMenuItemParams, AddCustomPagesParams, VueClerkInjectionKeyType } from './types';\n\nexport const ClerkInjectionKey = Symbol('clerk') as InjectionKey<VueClerkInjectionKeyType>;\n\nexport const UserButtonInjectionKey = Symbol('UserButton') as InjectionKey<{\n addCustomMenuItem(params: AddCustomMenuItemParams): void;\n}>;\n\nexport const UserButtonMenuItemsInjectionKey = Symbol('UserButton.MenuItems') as InjectionKey<{\n addCustomMenuItem(params: AddCustomMenuItemParams): void;\n}>;\n\nexport const UserProfileInjectionKey = Symbol('UserProfile') as InjectionKey<{\n addCustomPage(params: AddCustomPagesParams): void;\n}>;\n\nexport const OrganizationProfileInjectionKey = Symbol('OrganizationProfile') as InjectionKey<{\n addCustomPage(params: AddCustomPagesParams): void;\n}>;\n\nexport const PortalInjectionKey = Symbol('Portal') as InjectionKey<{\n getContainer: () => HTMLElement | null;\n}>;\n","import { useClerkContext } from './useClerkContext';\n\n/**\n * Returns the [`Clerk`](https://clerk.com/docs/reference/objects/clerk) instance which provides\n * low-level access to Clerk's functionality, enabling custom authentication UI and flows.\n *\n * @example\n * <script setup>\n * import { useClerk } from '@clerk/vue'\n *\n * const clerk = useClerk()\n *\n * const openSignIn = () => clerk.value.openSignIn()\n * </script>\n *\n * <template>\n * <button @click=\"openSignIn\">Sign in</button>\n * </template>\n */\nexport const useClerk = () => {\n const { clerk } = useClerkContext('useClerk');\n\n return clerk;\n};\n","import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport type { Clerk, GetToken, JwtPayload, PendingSessionOptions, SignOut, UseAuthReturn } from '@clerk/shared/types';\nimport { computed, type ShallowRef, watch } from 'vue';\n\nimport { errorThrower } from '../errors/errorThrower';\nimport { invalidStateError } from '../errors/messages';\nimport type { ToComputedRefs } from '../utils';\nimport { toComputedRefs } from '../utils';\nimport { useClerkContext } from './useClerkContext';\n\n/**\n * @internal\n */\nfunction clerkLoaded(clerk: ShallowRef<Clerk | null>) {\n return new Promise<Clerk>(resolve => {\n let unwatch: (() => void) | undefined;\n // eslint-disable-next-line prefer-const\n unwatch = watch(\n clerk,\n value => {\n if (value?.loaded) {\n resolve(value);\n unwatch?.();\n }\n },\n { immediate: true },\n );\n });\n}\n\n/**\n * @internal\n */\nfunction createGetToken(clerk: ShallowRef<Clerk | null>) {\n return async (options: any) => {\n const loadedClerk = await clerkLoaded(clerk);\n if (!loadedClerk.session) {\n return null;\n }\n\n return loadedClerk.session.getToken(options);\n };\n}\n\n/**\n * @internal\n */\nfunction createSignOut(clerk: ShallowRef<Clerk | null>) {\n return async (...args: any) => {\n const loadedClerk = await clerkLoaded(clerk);\n return loadedClerk.signOut(...args);\n };\n}\n\ntype UseAuth = (options?: PendingSessionOptions) => ToComputedRefs<UseAuthReturn>;\n\n/**\n * Returns the current auth state, the user and session ids and the `getToken`\n * that can be used to retrieve the given template or the default Clerk token.\n *\n * Until Clerk loads, `isLoaded` will be set to `false`.\n * Once Clerk loads, `isLoaded` will be set to `true`, and you can\n * safely access the `userId` and `sessionId` variables.\n *\n * @example\n * <script setup>\n * import { useAuth } from '@clerk/vue'\n *\n * const { isSignedIn, sessionId, userId } = useAuth()\n * </script>\n *\n * <template>\n * <div v-if=\"isSignedIn\">\n * <!-- {{ sessionId }} {{ userId }} -->\n * ...\n * </div>\n * </template>\n */\nexport const useAuth: UseAuth = (options = {}) => {\n const { clerk, authCtx } = useClerkContext('useAuth');\n\n const getToken: GetToken = createGetToken(clerk);\n const signOut: SignOut = createSignOut(clerk);\n\n const result = computed<UseAuthReturn>(() => {\n const { userId, orgId, orgRole, orgPermissions, sessionClaims, factorVerificationAge } = authCtx.value;\n\n const has = createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n });\n\n const payload = resolveAuthState({\n authObject: {\n ...authCtx.value,\n getToken,\n signOut,\n has,\n },\n options: {\n treatPendingAsSignedOut: options.treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n return errorThrower.throw(invalidStateError);\n }\n\n return payload;\n });\n\n return toComputedRefs(result);\n};\n","import { h, Text, type VNode } from 'vue';\n\nimport { errorThrower } from '../errors/errorThrower';\nimport { multipleChildrenInButtonComponent } from '../errors/messages';\n\ntype ButtonName =\n | 'SignInButton'\n | 'SignUpButton'\n | 'SignOutButton'\n | 'SignInWithMetamaskButton'\n | 'SubscriptionDetailsButton'\n | 'CheckoutButton'\n | 'PlanDetailsButton';\n\nexport const normalizeWithDefaultValue = (slotContent: VNode[] | undefined, defaultValue: string) => {\n // Render a button with the default value if no slot content is provided\n if (!slotContent) {\n return h('button', defaultValue);\n }\n\n // Render a button with the slot content if it's a text node\n if (slotContent[0].type === Text) {\n return h('button', slotContent);\n }\n\n // Render the slot content as is\n return slotContent;\n};\n\nexport const assertSingleChild = (slotContent: VNode | VNode[], name: ButtonName) => {\n if (Array.isArray(slotContent)) {\n if (slotContent.length > 1) {\n return errorThrower.throw(multipleChildrenInButtonComponent(name));\n }\n return slotContent[0];\n }\n\n return slotContent;\n};\n","import { computed, type ComputedRef } from 'vue';\n\nexport type ToComputedRefs<T = any> = {\n [K in keyof T]: ComputedRef<T[K]>;\n};\n\n/**\n * Converts a computed ref to an object of computed refs.\n * This will allow the composables to be destructurable and still maintain reactivity.\n */\nexport function toComputedRefs<T extends object>(objectRef: ComputedRef<T>): ToComputedRefs<T> {\n const result = {} as any;\n\n for (const key in objectRef.value) {\n result[key] = computed(() => objectRef.value[key]);\n }\n\n return result;\n}\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n"],"mappings":"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","names":["computed","computed"]}
|
|
@@ -6,6 +6,7 @@ export { default as CreateOrganization } from './ui-components/CreateOrganizatio
|
|
|
6
6
|
export { default as OrganizationList } from './ui-components/OrganizationList.vue';
|
|
7
7
|
export { default as PricingTable } from './ui-components/PricingTable.vue';
|
|
8
8
|
export { default as APIKeys } from './ui-components/APIKeys.vue';
|
|
9
|
+
export { default as ConfigureSSO } from './ui-components/ConfigureSSO.vue';
|
|
9
10
|
export { default as OAuthConsent } from './ui-components/OAuthConsent.vue';
|
|
10
11
|
export { UserProfile } from './ui-components/UserProfile';
|
|
11
12
|
export { OrganizationProfile } from './ui-components/OrganizationProfile';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
1
|
+
import type { ConfigureSSOProps } from '@clerk/shared/types';
|
|
2
|
+
declare const __VLS_export: import("vue").DefineComponent<ConfigureSSOProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ConfigureSSOProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
3
3
|
declare const _default: typeof __VLS_export;
|
|
4
4
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ErrorThrowerOptions } from '@clerk/shared/error';
|
|
2
|
-
declare const errorThrower: import("@clerk/shared/index-
|
|
2
|
+
declare const errorThrower: import("@clerk/shared/index-gxiszcVE").or;
|
|
3
3
|
export { errorThrower };
|
|
4
4
|
/**
|
|
5
5
|
* Overrides options of the internal errorThrower (eg setting packageName prefix).
|
package/dist/experimental.d.ts
CHANGED
|
@@ -16,12 +16,6 @@ export { default as CheckoutButton } from './components/CheckoutButton.vue';
|
|
|
16
16
|
* They are part of Clerk's Billing feature which is available under public beta.
|
|
17
17
|
*/
|
|
18
18
|
export { default as PlanDetailsButton } from './components/PlanDetailsButton.vue';
|
|
19
|
-
/**
|
|
20
|
-
* @experimental
|
|
21
|
-
* These components and their prop types are unstable and may change in future releases.
|
|
22
|
-
* They are part of Clerk's self-serve SSO feature which is not available yet.
|
|
23
|
-
* */
|
|
24
|
-
export { default as ConfigureSSO } from './components/ui-components/ConfigureSSO.vue';
|
|
25
19
|
export type {
|
|
26
20
|
/**
|
|
27
21
|
* @experimental
|
|
@@ -29,12 +23,6 @@ export type {
|
|
|
29
23
|
* They are part of Clerk's Billing feature which is available under public beta.
|
|
30
24
|
*/
|
|
31
25
|
__experimental_CheckoutButtonProps as CheckoutButtonProps,
|
|
32
|
-
/**
|
|
33
|
-
* @experimental
|
|
34
|
-
* These components and their prop types are unstable and may change in future releases.
|
|
35
|
-
* They are part of Clerk's Billing feature which is available under public beta.
|
|
36
|
-
*/
|
|
37
|
-
__experimental_ConfigureSSOProps as ConfigureSSOProps,
|
|
38
26
|
/**
|
|
39
27
|
* @experimental
|
|
40
28
|
* These components and their prop types are unstable and may change in future releases.
|
package/dist/experimental.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ClerkHostRenderer,
|
|
3
2
|
assertSingleChild,
|
|
4
3
|
export_helper_default,
|
|
5
4
|
normalizeWithDefaultValue,
|
|
6
5
|
useAuth,
|
|
7
6
|
useClerk
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6RVRNQP3.js";
|
|
9
8
|
import "./chunk-B47IFXQ7.js";
|
|
10
9
|
|
|
11
10
|
// src/components/SubscriptionDetailsButton.vue
|
|
@@ -192,38 +191,8 @@ function _sfc_render3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
192
191
|
);
|
|
193
192
|
}
|
|
194
193
|
var PlanDetailsButton_default = /* @__PURE__ */ export_helper_default(_sfc_main3, [["render", _sfc_render3], ["__file", "/home/runner/work/javascript/javascript/packages/vue/src/components/PlanDetailsButton.vue"]]);
|
|
195
|
-
|
|
196
|
-
// src/components/ui-components/ConfigureSSO.vue
|
|
197
|
-
import { defineComponent as _defineComponent4 } from "vue";
|
|
198
|
-
import { openBlock as _openBlock4, createBlock as _createBlock4 } from "vue";
|
|
199
|
-
var _sfc_main4 = /* @__PURE__ */ _defineComponent4({
|
|
200
|
-
__name: "ConfigureSSO",
|
|
201
|
-
props: {
|
|
202
|
-
appearance: { type: void 0, required: false }
|
|
203
|
-
},
|
|
204
|
-
setup(__props, { expose: __expose }) {
|
|
205
|
-
__expose();
|
|
206
|
-
const clerk = useClerk();
|
|
207
|
-
const props = __props;
|
|
208
|
-
const __returned__ = { clerk, props, get ClerkHostRenderer() {
|
|
209
|
-
return ClerkHostRenderer;
|
|
210
|
-
} };
|
|
211
|
-
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
212
|
-
return __returned__;
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
function _sfc_render4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
216
|
-
return _openBlock4(), _createBlock4($setup["ClerkHostRenderer"], {
|
|
217
|
-
mount: $setup.clerk?.__experimental_mountConfigureSSO,
|
|
218
|
-
unmount: $setup.clerk?.__experimental_unmountConfigureSSO,
|
|
219
|
-
"update-props": $setup.clerk?.__internal_updateProps,
|
|
220
|
-
props: $setup.props
|
|
221
|
-
}, null, 8, ["mount", "unmount", "update-props", "props"]);
|
|
222
|
-
}
|
|
223
|
-
var ConfigureSSO_default = /* @__PURE__ */ export_helper_default(_sfc_main4, [["render", _sfc_render4], ["__file", "/home/runner/work/javascript/javascript/packages/vue/src/components/ui-components/ConfigureSSO.vue"]]);
|
|
224
194
|
export {
|
|
225
195
|
CheckoutButton_default as CheckoutButton,
|
|
226
|
-
ConfigureSSO_default as ConfigureSSO,
|
|
227
196
|
PlanDetailsButton_default as PlanDetailsButton,
|
|
228
197
|
SubscriptionDetailsButton_default as SubscriptionDetailsButton
|
|
229
198
|
};
|
package/dist/experimental.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/SubscriptionDetailsButton.vue","../src/components/CheckoutButton.vue","../src/components/PlanDetailsButton.vue"
|
|
1
|
+
{"version":3,"sources":["../src/components/SubscriptionDetailsButton.vue","../src/components/CheckoutButton.vue","../src/components/PlanDetailsButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { __experimental_SubscriptionDetailsButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { useAuth } from '../composables/useAuth';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ntype SubscriptionDetailsButtonProps = Omit<__experimental_SubscriptionDetailsButtonProps, 'onSubscriptionCancel'>;\nconst props = defineProps<SubscriptionDetailsButtonProps>();\n\nconst clerk = useClerk();\nconst { userId, orgId } = useAuth();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\n// Authentication checks - similar to React implementation\nif (userId.value === null) {\n throw new Error(\n 'Ensure that `<SubscriptionDetailsButton />` is rendered inside a `<Show when=\"signed-in\" />` component.',\n );\n}\n\nif (orgId.value === null && props.for === 'organization') {\n throw new Error('Wrap `<SubscriptionDetailsButton for=\"organization\" />` with a check for an active organization.');\n}\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Subscription details');\n return assertSingleChild(children, 'SubscriptionDetailsButton');\n}\n\nconst emit = defineEmits<{ (e: 'subscription-cancel'): void }>();\n\nfunction clickHandler() {\n if (!clerk.value) {\n return;\n }\n\n return clerk.value.__internal_openSubscriptionDetails({\n for: props.for,\n ...props.subscriptionDetailsProps,\n onSubscriptionCancel: () => emit('subscription-cancel'),\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { __experimental_CheckoutButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { useAuth } from '../composables/useAuth';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\ntype CheckoutButtonProps = Omit<__experimental_CheckoutButtonProps, 'onSubscriptionComplete'>;\nconst props = defineProps<CheckoutButtonProps>();\n\nconst clerk = useClerk();\nconst { userId, orgId } = useAuth();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\n// Authentication checks - similar to React implementation\nif (userId.value === null) {\n throw new Error('Ensure that `<CheckoutButton />` is rendered inside a `<Show when=\"signed-in\" />` component.');\n}\n\nif (orgId.value === null && props.for === 'organization') {\n throw new Error('Wrap `<CheckoutButton for=\"organization\" />` with a check for an active organization.');\n}\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Checkout');\n return assertSingleChild(children, 'CheckoutButton');\n}\n\nconst emit = defineEmits<{ (e: 'subscription-complete'): void }>();\n\nfunction clickHandler() {\n if (!clerk.value) {\n return;\n }\n\n return clerk.value.__internal_openCheckout({\n planId: props.planId,\n planPeriod: props.planPeriod,\n for: props.for,\n newSubscriptionRedirectUrl: props.newSubscriptionRedirectUrl,\n ...props.checkoutProps,\n onSubscriptionComplete: () => emit('subscription-complete'),\n });\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { useAttrs, useSlots } from 'vue';\nimport type { __experimental_PlanDetailsButtonProps } from '@clerk/shared/types';\nimport { useClerk } from '../composables/useClerk';\nimport { assertSingleChild, normalizeWithDefaultValue } from '../utils';\n\nconst props = defineProps<__experimental_PlanDetailsButtonProps>();\n\nconst clerk = useClerk();\nconst slots = useSlots();\nconst attrs = useAttrs();\n\nfunction getChildComponent() {\n const children = normalizeWithDefaultValue(slots.default?.({}), 'Plan details');\n return assertSingleChild(children, 'PlanDetailsButton');\n}\n\nfunction clickHandler() {\n if (!clerk.value) {\n return;\n }\n\n return clerk.value.__internal_openPlanDetails({\n plan: props.plan,\n planId: props.planId,\n initialPlanPeriod: props.initialPlanPeriod,\n ...props.planDetailsProps,\n } as __experimental_PlanDetailsButtonProps);\n}\n</script>\n\n<template>\n <component\n :is=\"getChildComponent\"\n v-bind=\"attrs\"\n @click=\"clickHandler\"\n >\n <slot />\n </component>\n</template>\n"],"mappings":"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","names":["useAttrs","useSlots","useSlots","useAttrs","_createBlock","_resolveDynamicComponent","_mergeProps","_withCtx","_renderSlot","useAttrs","useSlots","useSlots","useAttrs","_createBlock","_resolveDynamicComponent","_mergeProps","_withCtx","_renderSlot"]}
|