@vitus-labs/tools-rolldown 1.15.3 → 1.15.5
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/CHANGELOG.md +18 -0
- package/lib/rolldown/config.js +18 -3
- package/lib/rolldown/config.js.map +1 -1
- package/lib/types/rolldown/config.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/rolldown/config.ts +19 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 1.15.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#98](https://github.com/vitus-labs/tools/pull/98) [`9ec732d`](https://github.com/vitus-labs/tools/commit/9ec732d7899c10e035cce253088eaa10bf63f1af) Thanks [@vitbokisch](https://github.com/vitbokisch)! - Resolve `.tsx`, `.js`, and `.jsx` extensions for DTS subpath export inputs instead of assuming `.ts`
|
|
8
|
+
|
|
9
|
+
- Updated dependencies []:
|
|
10
|
+
- @vitus-labs/tools-core@1.15.5
|
|
11
|
+
|
|
12
|
+
## 1.15.4
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [#85](https://github.com/vitus-labs/tools/pull/85) [`c0b6735`](https://github.com/vitus-labs/tools/commit/c0b6735c3255f0fa275d247b3dee6f95696e0fda) Thanks [@vitbokisch](https://github.com/vitbokisch)! - Pass `emitDtsOnly: true` to rolldown-plugin-dts to prevent JS output chunks in declaration builds
|
|
17
|
+
|
|
18
|
+
- Updated dependencies []:
|
|
19
|
+
- @vitus-labs/tools-core@1.15.4
|
|
20
|
+
|
|
3
21
|
## 1.15.3
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/lib/rolldown/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
1
2
|
import { swapGlobals } from '@vitus-labs/tools-core';
|
|
2
3
|
import { dts } from 'rolldown-plugin-dts';
|
|
3
4
|
import filesize from 'rollup-plugin-filesize';
|
|
@@ -112,7 +113,12 @@ const createDtsConfig = (typesFilePath, inputFile) => {
|
|
|
112
113
|
external: CONFIG.bundleAll
|
|
113
114
|
? []
|
|
114
115
|
: [...PKG.externalDependencies, ...CONFIG.external],
|
|
115
|
-
plugins: [
|
|
116
|
+
plugins: [
|
|
117
|
+
...dts({
|
|
118
|
+
tsconfig: 'tsconfig.json',
|
|
119
|
+
emitDtsOnly: true,
|
|
120
|
+
}),
|
|
121
|
+
],
|
|
116
122
|
output: {
|
|
117
123
|
dir,
|
|
118
124
|
entryFileNames: entryFileName,
|
|
@@ -125,6 +131,14 @@ const createDtsConfig = (typesFilePath, inputFile) => {
|
|
|
125
131
|
};
|
|
126
132
|
/** Check if exports object uses subpath keys */
|
|
127
133
|
const isSubpathExports = (obj) => Object.keys(obj).some((k) => k === '.' || k.startsWith('./'));
|
|
134
|
+
/** Resolve the actual source file extension (.ts, .tsx, etc.) */
|
|
135
|
+
const resolveWithExtension = (path) => {
|
|
136
|
+
for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {
|
|
137
|
+
if (existsSync(`${path}${ext}`))
|
|
138
|
+
return `${path}${ext}`;
|
|
139
|
+
}
|
|
140
|
+
return `${path}.ts`;
|
|
141
|
+
};
|
|
128
142
|
/** Resolve input .ts file from a subpath export key using convention. */
|
|
129
143
|
const resolveSubpathInput = (exportPath) => {
|
|
130
144
|
if (exportPath === '.')
|
|
@@ -161,8 +175,9 @@ const buildAllDts = () => {
|
|
|
161
175
|
if (!typesPath)
|
|
162
176
|
continue;
|
|
163
177
|
const resolved = resolveSubpathInput(exportPath);
|
|
164
|
-
|
|
165
|
-
|
|
178
|
+
const inputFile = resolved.endsWith('.ts') || resolved.endsWith('.tsx')
|
|
179
|
+
? resolved
|
|
180
|
+
: resolveWithExtension(resolved);
|
|
166
181
|
results.push(createDtsConfig(typesPath, inputFile));
|
|
167
182
|
}
|
|
168
183
|
return results;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/rolldown/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport filesize from 'rollup-plugin-filesize'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.js'\n\nconst defineExtensions = (platform: string) => {\n const platformExtensions: string[] = []\n\n if ((PLATFORMS as readonly string[]).includes(platform)) {\n CONFIG.extensions.forEach((item: string) => {\n platformExtensions.push(`.${platform}${item}`)\n })\n }\n\n return platformExtensions.concat(CONFIG.extensions)\n}\n\nconst mapPlatform = (\n platform: string,\n): 'node' | 'browser' | 'neutral' | undefined => {\n if (platform === 'node') return 'node'\n if (platform === 'browser') return 'browser'\n return 'neutral'\n}\n\nconst loadPlugins = ({ file }: { file: string }) => {\n const plugins: RolldownPlugin[] = []\n\n // generate visualised graphs in dist folder\n if (CONFIG.visualise) {\n const filePath = file.split('/')\n const fileName = filePath.pop()\n\n const visualiserOptions = {\n title: `${PKG.name} - ${fileName}`,\n filename: `${filePath.join('/')}/${\n CONFIG.visualise.outputDir\n }/${fileName}.html`,\n template: CONFIG.visualise.template,\n gzipSize: CONFIG.visualise.gzipSize,\n }\n\n plugins.push(visualizer(visualiserOptions) as RolldownPlugin)\n }\n\n if (CONFIG.filesize) {\n plugins.push(filesize() as RolldownPlugin)\n }\n\n return plugins\n}\n\nconst buildDefineOptions = (env: string, platform: string) => {\n if (!CONFIG.replaceGlobals) return undefined\n\n const defineOptions: Record<string, string> = {\n __VERSION__: JSON.stringify(PKG.version),\n __NODE__: JSON.stringify(platform === 'node'),\n __WEB__: JSON.stringify(\n ['node', 'browser', 'universal'].includes(platform),\n ),\n __BROWSER__: JSON.stringify(platform === 'browser'),\n __NATIVE__: JSON.stringify(platform === 'native'),\n __CLIENT__: JSON.stringify(['native', 'browser'].includes(platform)),\n }\n\n if (env === 'production') {\n defineOptions['process.env.NODE_ENV'] = JSON.stringify(env)\n }\n\n return defineOptions\n}\n\nconst rolldownConfig = ({\n file,\n format,\n env,\n platform,\n input: entryInput,\n}: Record<string, any>) => {\n const extensions = defineExtensions(platform)\n const builtinPlugins = loadPlugins({ file })\n const userPlugins = (CONFIG.plugins || []) as RolldownPlugin[]\n const define = buildDefineOptions(env, platform)\n\n const lastSlash = file.lastIndexOf('/')\n const dir = lastSlash >= 0 ? file.substring(0, lastSlash) : '.'\n const entryFileName = lastSlash >= 0 ? file.substring(lastSlash + 1) : file\n\n const external = CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external]\n\n const buildOutput = {\n input: entryInput || CONFIG.sourceDir,\n platform: mapPlatform(platform),\n tsconfig: CONFIG.typescript ? 'tsconfig.json' : undefined,\n resolve: {\n extensions,\n alias: CONFIG.alias || undefined,\n },\n transform: define ? { define } : undefined,\n output: {\n dir,\n entryFileNames: entryFileName,\n format,\n globals: swapGlobals(CONFIG.globals),\n sourcemap: true,\n sourcemapIgnoreList: (relativeSourcePath: string) =>\n relativeSourcePath.includes('node_modules'),\n exports: ['cjs', 'umd', 'iife'].includes(format)\n ? ('named' as const)\n : undefined,\n name: ['umd', 'iife'].includes(format) ? PKG.bundleName : undefined,\n esModule: true,\n minify: env === 'production',\n banner: CONFIG.banner || undefined,\n footer: CONFIG.footer || undefined,\n },\n external,\n treeshake: {\n moduleSideEffects: false,\n },\n plugins: [...builtinPlugins, ...userPlugins],\n }\n\n return buildOutput\n}\n\nconst createDtsConfig = (typesFilePath: string, inputFile: string) => {\n const lastSlash = typesFilePath.lastIndexOf('/')\n const dir = lastSlash >= 0 ? typesFilePath.substring(0, lastSlash) : '.'\n const entryFileName =\n lastSlash >= 0 ? typesFilePath.substring(lastSlash + 1) : typesFilePath\n\n return {\n file: typesFilePath,\n input: inputFile,\n tsconfig: 'tsconfig.json',\n resolve: {\n extensions: CONFIG.extensions,\n },\n external: CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external],\n plugins: [...(dts({ tsconfig: 'tsconfig.json' }) as RolldownPlugin[])],\n output: {\n dir,\n entryFileNames: entryFileName,\n chunkFileNames: '[name].d.ts',\n format: 'es' as const,\n sourcemap: false,\n esModule: true,\n },\n }\n}\n\n/** Check if exports object uses subpath keys */\nconst isSubpathExports = (obj: Record<string, any>): boolean =>\n Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))\n\n/** Resolve input .ts file from a subpath export key using convention. */\nconst resolveSubpathInput = (exportPath: string): string => {\n if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`\n const subpath = exportPath.slice(2)\n return `${CONFIG.sourceDir}/${subpath}`\n}\n\nconst buildDts = (): ReturnType<typeof createDtsConfig> | null => {\n if (!CONFIG.typescript) return null\n\n // Simple case: no subpath exports\n const typesFilePath = PKG?.exports?.types || PKG.types || PKG.typings\n if (typesFilePath) {\n return createDtsConfig(typesFilePath, `${CONFIG.sourceDir}/index.ts`)\n }\n\n return null\n}\n\n/** Build DTS configs for all subpath exports that have a `types` field */\nconst buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {\n if (!CONFIG.typescript) return []\n\n const exportsOptions = PKG.exports\n if (\n !exportsOptions ||\n typeof exportsOptions !== 'object' ||\n !isSubpathExports(exportsOptions)\n ) {\n const single = buildDts()\n return single ? [single] : []\n }\n\n const results: ReturnType<typeof createDtsConfig>[] = []\n for (const [exportPath, exportConfig] of Object.entries(exportsOptions)) {\n if (!exportConfig || typeof exportConfig !== 'object') continue\n const typesPath = (exportConfig as Record<string, string>).types\n if (!typesPath) continue\n const resolved = resolveSubpathInput(exportPath)\n // Ensure .ts extension — bun condition already has it, convention needs it\n const inputFile = resolved.endsWith('.ts') ? resolved : `${resolved}.ts`\n results.push(createDtsConfig(typesPath, inputFile))\n }\n\n return results\n}\n\nexport default rolldownConfig\nexport { buildAllDts, buildDts }\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/rolldown/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs'\nimport { swapGlobals } from '@vitus-labs/tools-core'\nimport type { RolldownPlugin } from 'rolldown'\nimport { dts } from 'rolldown-plugin-dts'\nimport filesize from 'rollup-plugin-filesize'\nimport { visualizer } from 'rollup-plugin-visualizer'\nimport { CONFIG, PKG, PLATFORMS } from '../config/index.js'\n\nconst defineExtensions = (platform: string) => {\n const platformExtensions: string[] = []\n\n if ((PLATFORMS as readonly string[]).includes(platform)) {\n CONFIG.extensions.forEach((item: string) => {\n platformExtensions.push(`.${platform}${item}`)\n })\n }\n\n return platformExtensions.concat(CONFIG.extensions)\n}\n\nconst mapPlatform = (\n platform: string,\n): 'node' | 'browser' | 'neutral' | undefined => {\n if (platform === 'node') return 'node'\n if (platform === 'browser') return 'browser'\n return 'neutral'\n}\n\nconst loadPlugins = ({ file }: { file: string }) => {\n const plugins: RolldownPlugin[] = []\n\n // generate visualised graphs in dist folder\n if (CONFIG.visualise) {\n const filePath = file.split('/')\n const fileName = filePath.pop()\n\n const visualiserOptions = {\n title: `${PKG.name} - ${fileName}`,\n filename: `${filePath.join('/')}/${\n CONFIG.visualise.outputDir\n }/${fileName}.html`,\n template: CONFIG.visualise.template,\n gzipSize: CONFIG.visualise.gzipSize,\n }\n\n plugins.push(visualizer(visualiserOptions) as RolldownPlugin)\n }\n\n if (CONFIG.filesize) {\n plugins.push(filesize() as RolldownPlugin)\n }\n\n return plugins\n}\n\nconst buildDefineOptions = (env: string, platform: string) => {\n if (!CONFIG.replaceGlobals) return undefined\n\n const defineOptions: Record<string, string> = {\n __VERSION__: JSON.stringify(PKG.version),\n __NODE__: JSON.stringify(platform === 'node'),\n __WEB__: JSON.stringify(\n ['node', 'browser', 'universal'].includes(platform),\n ),\n __BROWSER__: JSON.stringify(platform === 'browser'),\n __NATIVE__: JSON.stringify(platform === 'native'),\n __CLIENT__: JSON.stringify(['native', 'browser'].includes(platform)),\n }\n\n if (env === 'production') {\n defineOptions['process.env.NODE_ENV'] = JSON.stringify(env)\n }\n\n return defineOptions\n}\n\nconst rolldownConfig = ({\n file,\n format,\n env,\n platform,\n input: entryInput,\n}: Record<string, any>) => {\n const extensions = defineExtensions(platform)\n const builtinPlugins = loadPlugins({ file })\n const userPlugins = (CONFIG.plugins || []) as RolldownPlugin[]\n const define = buildDefineOptions(env, platform)\n\n const lastSlash = file.lastIndexOf('/')\n const dir = lastSlash >= 0 ? file.substring(0, lastSlash) : '.'\n const entryFileName = lastSlash >= 0 ? file.substring(lastSlash + 1) : file\n\n const external = CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external]\n\n const buildOutput = {\n input: entryInput || CONFIG.sourceDir,\n platform: mapPlatform(platform),\n tsconfig: CONFIG.typescript ? 'tsconfig.json' : undefined,\n resolve: {\n extensions,\n alias: CONFIG.alias || undefined,\n },\n transform: define ? { define } : undefined,\n output: {\n dir,\n entryFileNames: entryFileName,\n format,\n globals: swapGlobals(CONFIG.globals),\n sourcemap: true,\n sourcemapIgnoreList: (relativeSourcePath: string) =>\n relativeSourcePath.includes('node_modules'),\n exports: ['cjs', 'umd', 'iife'].includes(format)\n ? ('named' as const)\n : undefined,\n name: ['umd', 'iife'].includes(format) ? PKG.bundleName : undefined,\n esModule: true,\n minify: env === 'production',\n banner: CONFIG.banner || undefined,\n footer: CONFIG.footer || undefined,\n },\n external,\n treeshake: {\n moduleSideEffects: false,\n },\n plugins: [...builtinPlugins, ...userPlugins],\n }\n\n return buildOutput\n}\n\nconst createDtsConfig = (typesFilePath: string, inputFile: string) => {\n const lastSlash = typesFilePath.lastIndexOf('/')\n const dir = lastSlash >= 0 ? typesFilePath.substring(0, lastSlash) : '.'\n const entryFileName =\n lastSlash >= 0 ? typesFilePath.substring(lastSlash + 1) : typesFilePath\n\n return {\n file: typesFilePath,\n input: inputFile,\n tsconfig: 'tsconfig.json',\n resolve: {\n extensions: CONFIG.extensions,\n },\n external: CONFIG.bundleAll\n ? []\n : [...PKG.externalDependencies, ...CONFIG.external],\n plugins: [\n ...(dts({\n tsconfig: 'tsconfig.json',\n emitDtsOnly: true,\n }) as RolldownPlugin[]),\n ],\n output: {\n dir,\n entryFileNames: entryFileName,\n chunkFileNames: '[name].d.ts',\n format: 'es' as const,\n sourcemap: false,\n esModule: true,\n },\n }\n}\n\n/** Check if exports object uses subpath keys */\nconst isSubpathExports = (obj: Record<string, any>): boolean =>\n Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))\n\n/** Resolve the actual source file extension (.ts, .tsx, etc.) */\nconst resolveWithExtension = (path: string): string => {\n for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {\n if (existsSync(`${path}${ext}`)) return `${path}${ext}`\n }\n return `${path}.ts`\n}\n\n/** Resolve input .ts file from a subpath export key using convention. */\nconst resolveSubpathInput = (exportPath: string): string => {\n if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`\n const subpath = exportPath.slice(2)\n return `${CONFIG.sourceDir}/${subpath}`\n}\n\nconst buildDts = (): ReturnType<typeof createDtsConfig> | null => {\n if (!CONFIG.typescript) return null\n\n // Simple case: no subpath exports\n const typesFilePath = PKG?.exports?.types || PKG.types || PKG.typings\n if (typesFilePath) {\n return createDtsConfig(typesFilePath, `${CONFIG.sourceDir}/index.ts`)\n }\n\n return null\n}\n\n/** Build DTS configs for all subpath exports that have a `types` field */\nconst buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {\n if (!CONFIG.typescript) return []\n\n const exportsOptions = PKG.exports\n if (\n !exportsOptions ||\n typeof exportsOptions !== 'object' ||\n !isSubpathExports(exportsOptions)\n ) {\n const single = buildDts()\n return single ? [single] : []\n }\n\n const results: ReturnType<typeof createDtsConfig>[] = []\n for (const [exportPath, exportConfig] of Object.entries(exportsOptions)) {\n if (!exportConfig || typeof exportConfig !== 'object') continue\n const typesPath = (exportConfig as Record<string, string>).types\n if (!typesPath) continue\n const resolved = resolveSubpathInput(exportPath)\n const inputFile =\n resolved.endsWith('.ts') || resolved.endsWith('.tsx')\n ? resolved\n : resolveWithExtension(resolved)\n results.push(createDtsConfig(typesPath, inputFile))\n }\n\n return results\n}\n\nexport default rolldownConfig\nexport { buildAllDts, buildDts }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/rolldown/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/rolldown/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AA0E9C,QAAA,MAAM,cAAc,GAAI,qDAMrB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;kDA6B0B,MAAM;;;;;;;;;;;;;CAmBrD,CAAA;AAED,QAAA,MAAM,eAAe,GAAI,eAAe,MAAM,EAAE,WAAW,MAAM;;;;;;;;;;;;;;;;;CA+BhE,CAAA;AAqBD,QAAA,MAAM,QAAQ,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAUzD,CAAA;AAED,0EAA0E;AAC1E,QAAA,MAAM,WAAW,QAAO,UAAU,CAAC,OAAO,eAAe,CAAC,EA2BzD,CAAA;AAED,eAAe,cAAc,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA"}
|
package/package.json
CHANGED
package/src/rolldown/config.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
1
2
|
import { swapGlobals } from '@vitus-labs/tools-core'
|
|
2
3
|
import type { RolldownPlugin } from 'rolldown'
|
|
3
4
|
import { dts } from 'rolldown-plugin-dts'
|
|
@@ -145,7 +146,12 @@ const createDtsConfig = (typesFilePath: string, inputFile: string) => {
|
|
|
145
146
|
external: CONFIG.bundleAll
|
|
146
147
|
? []
|
|
147
148
|
: [...PKG.externalDependencies, ...CONFIG.external],
|
|
148
|
-
plugins: [
|
|
149
|
+
plugins: [
|
|
150
|
+
...(dts({
|
|
151
|
+
tsconfig: 'tsconfig.json',
|
|
152
|
+
emitDtsOnly: true,
|
|
153
|
+
}) as RolldownPlugin[]),
|
|
154
|
+
],
|
|
149
155
|
output: {
|
|
150
156
|
dir,
|
|
151
157
|
entryFileNames: entryFileName,
|
|
@@ -161,6 +167,14 @@ const createDtsConfig = (typesFilePath: string, inputFile: string) => {
|
|
|
161
167
|
const isSubpathExports = (obj: Record<string, any>): boolean =>
|
|
162
168
|
Object.keys(obj).some((k) => k === '.' || k.startsWith('./'))
|
|
163
169
|
|
|
170
|
+
/** Resolve the actual source file extension (.ts, .tsx, etc.) */
|
|
171
|
+
const resolveWithExtension = (path: string): string => {
|
|
172
|
+
for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {
|
|
173
|
+
if (existsSync(`${path}${ext}`)) return `${path}${ext}`
|
|
174
|
+
}
|
|
175
|
+
return `${path}.ts`
|
|
176
|
+
}
|
|
177
|
+
|
|
164
178
|
/** Resolve input .ts file from a subpath export key using convention. */
|
|
165
179
|
const resolveSubpathInput = (exportPath: string): string => {
|
|
166
180
|
if (exportPath === '.') return `${CONFIG.sourceDir}/index.ts`
|
|
@@ -200,8 +214,10 @@ const buildAllDts = (): ReturnType<typeof createDtsConfig>[] => {
|
|
|
200
214
|
const typesPath = (exportConfig as Record<string, string>).types
|
|
201
215
|
if (!typesPath) continue
|
|
202
216
|
const resolved = resolveSubpathInput(exportPath)
|
|
203
|
-
|
|
204
|
-
|
|
217
|
+
const inputFile =
|
|
218
|
+
resolved.endsWith('.ts') || resolved.endsWith('.tsx')
|
|
219
|
+
? resolved
|
|
220
|
+
: resolveWithExtension(resolved)
|
|
205
221
|
results.push(createDtsConfig(typesPath, inputFile))
|
|
206
222
|
}
|
|
207
223
|
|