Skip to content

Commit 308b987

Browse files
committed
refactor: simplify structure
inline small runtime utils to the same file
1 parent 5dde2d1 commit 308b987

File tree

8 files changed

+39
-35
lines changed

8 files changed

+39
-35
lines changed

src/index.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import { Manifest } from './manifest'
2-
31
export { normalizeViteManifest } from './vite'
42
export { normalizeWebpackManifest } from './webpack'
5-
export type { Manifest, ResourceMeta } from './manifest'
63

7-
export function defineManifest (manifest: Manifest): Manifest {
8-
return manifest
9-
}
4+
export * from './types'

src/runtime.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { withLeadingSlash } from 'ufo'
2-
import type { Manifest, ResourceMeta } from './manifest'
3-
import { LinkAttributes, renderLinkToHeader, renderLinkToString, renderScriptToString } from './runtime/utils'
2+
import type { Manifest, ResourceMeta } from './types'
43

54
export interface ModuleDependencies {
65
scripts: Record<string, ResourceMeta>
@@ -267,3 +266,26 @@ export function createRenderer (createApp: any, renderOptions: RenderOptions & {
267266
}
268267
}
269268
}
269+
270+
// --- Internal ---
271+
272+
interface LinkAttributes {
273+
rel: string | null
274+
href: string
275+
as?: string | null
276+
type?: string | null
277+
crossorigin?: '' | null
278+
}
279+
280+
// Utilities to render script and link tags, and link headers
281+
function renderScriptToString (attrs: Record<string, string | null>) {
282+
return `<script${Object.entries(attrs).map(([key, value]) => value === null ? '' : value ? ` ${key}="${value}"` : ' ' + key).join('')}></script>`
283+
}
284+
285+
function renderLinkToString (attrs: LinkAttributes) {
286+
return `<link${Object.entries(attrs).map(([key, value]) => value === null ? '' : value ? ` ${key}="${value}"` : ' ' + key).join('')}>`
287+
}
288+
289+
function renderLinkToHeader (attrs: LinkAttributes) {
290+
return `<${attrs.href}>${Object.entries(attrs).map(([key, value]) => key === 'href' || value === null ? '' : value ? `; ${key}="${value}"` : `; ${key}`).join('')}`
291+
}

src/runtime/utils.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/manifest.ts renamed to src/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@ export interface ResourceMeta {
1818
export interface Manifest {
1919
[key: string]: ResourceMeta
2020
}
21+
22+
export function defineManifest (manifest: Manifest): Manifest {
23+
return manifest
24+
}

src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ResourceMeta } from './manifest'
1+
import type { ResourceMeta } from './types'
22

33
const IS_JS_RE = /\.[cm]?js(\?[^.]+)?$/
44
const HAS_EXT_RE = /[^./]+\.[^./]+$/

src/vite.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Manifest as ViteManifest } from 'vite'
2-
import type { Manifest } from './manifest'
2+
import type { Manifest } from './types'
33
import { parseResource } from './utils'
44

55
export function normalizeViteManifest (manifest: ViteManifest | Manifest): Manifest {

src/webpack.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Manifest } from './manifest'
1+
import type { Manifest } from './types'
22
import { isJS, isCSS, parseResource } from './utils'
33

44
// Comment out in dev mode for better type support
@@ -17,12 +17,6 @@ export interface WebpackClientManifest {
1717
hasNoCssVersion?: { [file: string]: boolean }
1818
}
1919

20-
function getIdentifier (output: OutputPath): Identifier
21-
function getIdentifier (output?: undefined): null
22-
function getIdentifier (output?: OutputPath): null | Identifier {
23-
return output ? `_${output}` as Identifier : null
24-
}
25-
2620
export function normalizeWebpackManifest (manifest: WebpackClientManifest): Manifest {
2721
// Upgrade webpack manifest
2822
// https://github.com/nuxt-contrib/vue-bundle-renderer/issues/12
@@ -111,3 +105,9 @@ export function normalizeWebpackManifest (manifest: WebpackClientManifest): Mani
111105

112106
return clientManifest
113107
}
108+
109+
function getIdentifier (output: OutputPath): Identifier
110+
function getIdentifier (output?: undefined): null
111+
function getIdentifier (output?: OutputPath): null | Identifier {
112+
return output ? `_${output}` as Identifier : null
113+
}

test/types.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expectTypeOf } from 'expect-type'
22
import { describe, it } from 'vitest'
33

44
import type { Manifest as ViteManifest } from 'vite'
5-
import type { Manifest, ResourceMeta } from '../src/manifest'
5+
import type { Manifest, ResourceMeta } from '../src/types'
66

77
describe('manifest', () => {
88
it('matches vite types', () => {

0 commit comments

Comments
 (0)