Skip to content
This repository was archived by the owner on Dec 10, 2024. It is now read-only.

refactor: modules folder #117

Merged
merged 31 commits into from
Jan 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2c8fc00
refactor: modules folder
productdevbook Jan 25, 2024
d71f754
Add globby dependency
productdevbook Jan 25, 2024
14d1eb0
version(nuxt): release 0.7.26
productdevbook Jan 25, 2024
ccb13b0
Update package dependencies and build configurations
productdevbook Jan 25, 2024
6c29651
chore: move runtime folder
productdevbook Jan 26, 2024
1f1b8ca
chore update build.config.ts and package.json
productdevbook Jan 26, 2024
8d65db7
version(nuxt): release 0.7.27
productdevbook Jan 26, 2024
cedf31f
Fix database connection and event handling
productdevbook Jan 26, 2024
8156fbc
version(nuxt): release 0.7.28
productdevbook Jan 26, 2024
b9b56fe
Add server imports, plugins, and composables
productdevbook Jan 26, 2024
2a0fa68
Remove unused function addServerPlugin
productdevbook Jan 26, 2024
5aa1461
version(nuxt): release 0.7.29
productdevbook Jan 26, 2024
1eb250e
Add Pergel global context import
productdevbook Jan 26, 2024
401eb05
version(nuxt): release 0.7.30
productdevbook Jan 26, 2024
6c7c40e
Add Pergel state imports and aliases
productdevbook Jan 26, 2024
b52926a
version(nuxt): release 0.7.31
productdevbook Jan 26, 2024
36e3a62
Update import statement for Pergel global context
productdevbook Jan 26, 2024
61b0cb9
Add pergel-usePergelState to external dependencies
productdevbook Jan 26, 2024
de6b378
version(nuxt): release 0.7.32
productdevbook Jan 26, 2024
df10d82
Refactor Nitro config and remove unused function
productdevbook Jan 26, 2024
4c4c159
version(nuxt): release 0.7.33
productdevbook Jan 26, 2024
759bb2d
Refactor module imports and remove unused code
productdevbook Jan 26, 2024
60aecf6
version(nuxt): release 0.7.34
productdevbook Jan 26, 2024
6e43979
Update getPergelContext function calls
productdevbook Jan 26, 2024
d7b9754
Refactor project name camel casing in setupModules and generatePergel…
productdevbook Jan 26, 2024
8f975de
Add h3 package and update event context
productdevbook Jan 26, 2024
2ce6419
Update external dependencies in build.config.ts
productdevbook Jan 26, 2024
59f1cfb
Add @aws-sdk/client-ses as an external dependency
productdevbook Jan 26, 2024
71334f5
version(nuxt): release 0.7.35
productdevbook Jan 26, 2024
a0987f1
Refactor getPergelContext and usePergelContext functions
productdevbook Jan 26, 2024
ae7edf8
version(nuxt): release 0.7.36
productdevbook Jan 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,9 @@
"vite": "5.0.11",
"vitest": "^1.1.1"
},
"pnpm": {
"overrides": {
"rollup": "^4.2.0"
}
},
"resolutions": {
"@pergel/nuxt": "link:./packages/nuxt"
"@pergel/nuxt": "link:./packages/nuxt",
"unbuild": "3.0.0-rc.1"
},
"simple-git-hooks": {
"pre-commit": "pnpm lint-staged"
Expand Down
35 changes: 25 additions & 10 deletions packages/nuxt/build.config.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
import { join } from 'node:path'
import { readFileSync } from 'node:fs'
import { defineBuildConfig } from 'unbuild'

import pkgBox from '../box/package.json'
import graphql from '../graphql/package.json'
import s3 from '../s3/package.json'

const externalBox = Object.keys(pkgBox.dependencies)
const version = JSON.parse(
readFileSync(join(__dirname, 'package.json'), 'utf-8'),
).version

export const external = [
'consola',
Expand All @@ -25,30 +31,39 @@ export const external = [
'lucia',
'@lucia-auth/adapter-drizzle',
'@lucia-auth/adapter-postgresql',
'chokidar',
'@nuxt/kit',
'@nuxt/schema',
'globby',
'fsevents',
'node:path',
'node:fs',
'@pergel/cli/types',
'defu',
'pathe',
'node:http',
'node:child_process',
'node:stream',
'node:url',
'slugify',
'c12',
'ioredis',
'#pergel-useGlobalContext',
'#pergel-usePergelState',
'@pergel/module-box',
...externalBox,
'@aws-sdk/client-ses',
...Object.keys(pkgBox.dependencies),
...Object.keys(graphql.dependencies),
...Object.keys(s3.dependencies),
]
export default defineBuildConfig([
// Auto preset
{
externals: [
...external,
],
rollup: {
inlineDependencies: true,
output: {
preserveModules: true,
strict: true,
preserveModulesRoot: 'src',
},
replace: {
__VERSION__: JSON.stringify(version),
},
failOnWarn: false,
},
])
36 changes: 19 additions & 17 deletions packages/nuxt/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@pergel/nuxt",
"type": "module",
"version": "0.7.25",
"version": "0.7.36",
"description": "Nuxt Full Stack modules. Start your next nuxt project fast and strong.",
"author": "Mehmet @productdevbook",
"license": "MIT",
Expand Down Expand Up @@ -61,43 +61,45 @@
"dependencies": {
"@nuxt/devtools": "^1.0.8",
"@nuxt/devtools-kit": "^1.0.8",
"@nuxt/kit": "^3.9.1",
"@vueuse/core": "^10.7.1",
"@nuxt/kit": "^3.9.3",
"@vueuse/core": "^10.7.2",
"defu": "^6.1.4",
"globby": "^14.0.0",
"local-pkg": "^0.5.0",
"minimatch": "^9.0.3",
"pathe": "^1.1.1",
"pathe": "^1.1.2",
"sirv": "^2.0.4",
"yaml": "^2.3.4"
},
"devDependencies": {
"@aws-sdk/client-ses": "^3.485.0",
"@aws-sdk/client-ses": "^3.499.0",
"@faker-js/faker": "^8.3.1",
"@iconify-json/carbon": "^1.1.27",
"@iconify-json/ph": "^1.1.9",
"@json2csv/node": "^7.0.4",
"@iconify-json/carbon": "^1.1.28",
"@iconify-json/ph": "^1.1.10",
"@json2csv/node": "^7.0.5",
"@lucia-auth/adapter-drizzle": "1.0.0-beta.6",
"@lucia-auth/adapter-postgresql": "3.0.0-beta.9",
"@nuxt/devtools-ui-kit": "^1.0.8",
"@nuxt/module-builder": "^0.5.5",
"@nuxt/schema": "^3.9.1",
"@nuxt/test-utils": "^3.9.0",
"@pergel/cli": "^0.6.1",
"@nuxt/schema": "^3.9.3",
"@nuxt/test-utils": "^3.10.0",
"@pergel/cli": "^0.6.2",
"@pergel/graphql": "workspace:^",
"@pergel/module-box": "workspace:^",
"@pergel/module-s3": "workspace:^",
"@types/node": "^20.10.7",
"@types/node": "^20.11.6",
"@types/node-cron": "^3.0.11",
"bullmq": "^5.1.1",
"bullmq": "^5.1.5",
"esbuild-plugin-file-path-extensions": "^2.0.0",
"json-schema-to-typescript": "^13.1.1",
"h3": "^1.10.1",
"json-schema-to-typescript": "^13.1.2",
"lucia": "3.0.0-beta.14",
"node-cron": "^3.0.3",
"nuxt": "^3.9.1",
"oslo": "^0.27.0",
"nuxt": "^3.9.3",
"oslo": "^0.27.1",
"p-timeout": "^6.1.2",
"typescript": "^5.3.3",
"vitest": "^1.1.3"
"vitest": "^1.2.1"
},
"publishConfig": {
"access": "public"
Expand Down
80 changes: 75 additions & 5 deletions packages/nuxt/src/module.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import { join, relative } from 'node:path'
import { writeFileSync } from 'node:fs'
import {
addImportsDir,
addPlugin,
addServerHandler,
addServerImportsDir,
addTemplate,
createResolver,
defineNuxtModule,
logger,
} from '@nuxt/kit'
import YAML from 'yaml'
import { globbySync } from 'globby'

import defu from 'defu'
import type { NuxtConfigLayer } from '@nuxt/schema'
Expand All @@ -16,10 +20,12 @@ import { version } from '../package.json'
import { setupDevToolsUI } from './devtools'
import { DEVTOOLS_MODULE_KEY, DEVTOOLS_MODULE_NAME } from './constants'
import { useNitroImports, useNuxtImports } from './runtime/core/utils/useImports'

import { setupPergel } from './runtime/core/setupPergel'
import { generateReadmeJson } from './runtime/core/utils/generateYaml'
import { setupModules } from './runtime/core/setupModules'
import type { PergelOptions, ResolvedPergelOptions } from './runtime/core/types/nuxtModule'
import type { PergelModuleNames, PergelOptions, ResolvedPergelOptions } from './runtime/core/types/nuxtModule'
import type { PergelH3ContextItem } from './runtime/modules'

export interface ModulePublicRuntimeConfig {
slugify: {
Expand All @@ -34,6 +40,14 @@ declare module '@nuxt/schema' {
interface PublicRuntimeConfig extends ModulePublicRuntimeConfig { }
}

declare module 'h3' {
interface H3EventContext {
pergelContext: {
[key: string]: PergelH3ContextItem
}
}
}

export default defineNuxtModule<PergelOptions>({
meta: {
name: DEVTOOLS_MODULE_NAME,
Expand Down Expand Up @@ -81,13 +95,67 @@ export default defineNuxtModule<PergelOptions>({
}

const _resolver = createResolver(import.meta.url)

addServerImportsDir(_resolver.resolve('./runtime/composables'))

// Nitro auto imports
nuxt.hook('nitro:config', (config) => {
if (config.imports) {
config.imports.imports = config.imports.imports || []

config.imports.imports.push({
name: 'usePergelContext',
from: _resolver.resolve('./runtime/server/utils/usePergelContext'),
})

config.imports.imports.push({
name: 'getPergelContext',
from: _resolver.resolve('./runtime/server/utils/getPergelContext'),
})

config.alias = config.alias || {}

config.alias['#pergel/usePergelContext'] = _resolver.resolve(
'./runtime/server/utils/usePergelContext',
)
}
})

addImportsDir(_resolver.resolve('./runtime/composables'))
addPlugin(_resolver.resolve('./runtime/plugin'))

await setupPergel({
options: pergelOptions,
nuxt,
resolver: _resolver,
version,
})

async function moduleSetup() {
const modules = globbySync('./runtime/modules/**/index.@(ts|mjs)', {
cwd: _resolver.resolve('./'),
onlyFiles: true,
deep: 2,
})

const modulesResolve: {
name: PergelModuleNames
path: string
}[] = []

for await (const module of modules) {
const moduleName = module.replace('./runtime/modules/', '').replace('/index.ts', '').replace('/index.mjs', '')
modulesResolve.push({
name: moduleName as PergelModuleNames,
path: _resolver.resolve(module),
})
}

nuxt._pergel.resolveModules = modulesResolve
}

await moduleSetup()

const { saveNitroImports } = useNitroImports(nuxt)
const { saveNuxtImports } = useNuxtImports(nuxt)

Expand All @@ -110,18 +178,20 @@ export default defineNuxtModule<PergelOptions>({

await setupModules({
nuxt,
resolver: _resolver,
})

addServerImportsDir(_resolver.resolve('./runtime/composables'))

saveNitroImports()
saveNuxtImports()

generateReadmeJson({
nuxt,
})

addServerHandler({
handler: _resolver.resolve('./runtime/serverContext'),
middleware: true,
})

nuxt._pergel.devServerHandler.forEach(({ fn }) => fn())

for (const project of Object.keys(nuxt._pergel.dts)) {
Expand All @@ -132,7 +202,7 @@ export default defineNuxtModule<PergelOptions>({
write: true,
getContents: () => /* ts */`
${contents}

${declareModules}
`.trim(),
})
Expand Down
86 changes: 0 additions & 86 deletions packages/nuxt/src/runtime/composables/useClient.ts

This file was deleted.

Loading
Loading