Skip to content

Commit

Permalink
chore: Remove nuxt Plugin in favor of composable
Browse files Browse the repository at this point in the history
  • Loading branch information
lucacicada committed Dec 1, 2023
1 parent f04a1cd commit 17a0065
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 89 deletions.
10 changes: 5 additions & 5 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { ChildProcess } from 'node:child_process'
import { spawn } from 'node:child_process'

import type { StripeConstructorOptions } from '@stripe/stripe-js'
import { addImports, addPlugin, addTemplate, createResolver, defineNuxtModule, findPath, useLogger } from '@nuxt/kit'
import { addImports, addTemplate, createResolver, defineNuxtModule, findPath, useLogger } from '@nuxt/kit'
import { normalize, relative } from 'pathe'
import { joinURL } from 'ufo'
import defu from 'defu'
Expand Down Expand Up @@ -68,8 +68,6 @@ export default defineNuxtModule<Partial<ModuleOptions>>({

const resolver = createResolver(import.meta.url)

addPlugin(resolver.resolve('./runtime/plugin'))

addImports([
{
name: 'useStripe',
Expand All @@ -93,9 +91,11 @@ declare module '#stripe' {

// Inline module runtime in Nitro bundle
nitroConfig.externals = defu(
typeof nitroConfig.externals === 'object' ? nitroConfig.externals : {}, {
typeof nitroConfig.externals === 'object' ? nitroConfig.externals : {},
{
inline: [resolver.resolve('./runtime')],
})
},
)

nitroConfig.alias['#stripe'] = serverRuntime
})
Expand Down
44 changes: 42 additions & 2 deletions src/runtime/composables.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
import { useNuxtApp } from '#app'
import type { Stripe, StripeConstructorOptions } from '@stripe/stripe-js'
import { loadScript } from '@fixers/stripe-js'

import type { ModulePublicRuntimeConfig } from '../module'
import { useRuntimeConfig } from '#imports'

export interface CreateStripeOptions extends StripeConstructorOptions {
/**
* Override the runtime configured publishable key.
*/
publishableKey?: string

/**
* Set it to `false` to [disable advanced fraud detection](https://stripe.com/docs/disputes/prevention/advanced-fraud-detection#disabling-advanced-fraud-detection)
*
* @default true
*/
advancedFraudSignals?: boolean
}

/**
* Use Stripe.
Expand All @@ -14,4 +32,26 @@ import { useNuxtApp } from '#app'
* })
* ```
*/
export const useStripe = () => useNuxtApp().$stripe
export function useStripe() {
return {
createClient: async (options?: CreateStripeOptions): Promise<Stripe> => {
const stripeRuntimeConfig = useRuntimeConfig().public.stripe as ModulePublicRuntimeConfig | undefined

const { publishableKey, advancedFraudSignals, ...stripeOptions } = options || {}

const stripeConstructor = await loadScript({
advancedFraudSignals: advancedFraudSignals ?? true,
})

if (stripeConstructor) {
return stripeConstructor(publishableKey ?? stripeRuntimeConfig?.publishableKey ?? '', {
...stripeRuntimeConfig?.client,
...stripeOptions,
})
}

// Stripe is null in SSR
return null!
},
}
}
82 changes: 0 additions & 82 deletions src/runtime/plugin.ts

This file was deleted.

0 comments on commit 17a0065

Please sign in to comment.