@junobuild/config-loader 0.4.5 → 0.4.6
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/node/index.mjs +1 -1
- package/dist/node/index.mjs.map +4 -4
- package/dist/types/configs/_config.d.ts +8 -0
- package/dist/types/configs/console.config.d.ts +6 -0
- package/dist/types/configs/juno.config.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/config.utils.d.ts +4 -0
- package/package.json +1 -1
package/dist/node/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as topLevelCreateRequire } from 'module';
|
|
2
2
|
const require = topLevelCreateRequire(import.meta.url);
|
|
3
|
-
var
|
|
3
|
+
var s=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(n,e)=>(typeof require<"u"?require:n)[e]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});import{existsSync as c}from"node:fs";import{readFile as h}from"node:fs/promises";import{extname as w,join as u}from"node:path";import{join as a}from"node:path";var f=o=>a(process.cwd(),`${o}.ts`),d=o=>a(process.cwd(),`${o}.js`),g=o=>a(process.cwd(),`${o}.mjs`);import{transformFileSync as O}from"@babel/core";import*as C from"@babel/plugin-transform-modules-commonjs";import*as l from"@babel/preset-typescript";import{defineConfig as J,defineConsoleConfig as T}from"@junobuild/config";var j=({id:o,extension:n})=>{delete s.cache[o];let e=s("module"),t=e._load;try{return s.extensions[n]=(i,r)=>{let x=O(r,{presets:[l.default],plugins:[C.default]}).code;i._compile(x,r)},e._load=function(i){return i==="@junobuild/config"?{defineConfig:r=>J(r),defineConsoleConfig:r=>T(r)}:t.apply(this,arguments)},s(o)}finally{s.extensions[n]=void 0,e._load=t}};var m=({filename:o})=>{let n=f(o);if(c(n))return{configPath:n,configType:"ts"};let e=d(o);if(c(e))return{configPath:e,configType:"js"};let t=g(o);if(c(t))return{configPath:t,configType:"js"};let i=u(process.cwd(),`${o}.cjs`);if(c(i))return{configPath:i,configType:"js"};let r=u(process.cwd(),`${o.replace(".config","")}.json`);return c(r)?{configPath:r,configType:"json"}:{configPath:u(process.cwd(),`${o}.json`),configType:"json"}},p=async({config:o,...n})=>{let{configPath:e,configType:t}=m({...n});switch(t){case"ts":case"js":{let{default:i}=j({id:e,extension:w(e)});return o(i)}default:{let i=await h(e);return JSON.parse(i.toString("utf-8"))}}};var G=async o=>await p(o);import{existsSync as y,readFileSync as P}from"node:fs";import{access as b,lstat as S}from"node:fs/promises";import{join as F}from"node:path";var X=async o=>{try{let{configPath:n}=k(o);return await b(n),(await S(n)).isFile()}catch(n){if(n instanceof Error&&"code"in n&&n.code==="ENOENT")return!1;throw n}},k=m,Y=({filename:o})=>{let n=F(process.cwd(),"tsconfig.json");if(y(n))return{configPath:f(o),configType:"ts"};try{let e=F(process.cwd(),"package.json");if(y(e)){let t=JSON.parse(P(e,"utf8"));if("typescript"in(t.dependencies??{})||"typescript"in(t.devDependencies??{}))return{configPath:f(o),configType:"ts"};if(t.type==="module")return{configPath:g(o),configType:"js"}}}catch{}},Z=async o=>await p(o);export{Y as detectJunoConfigType,X as junoConfigExist,k as junoConfigFile,G as readConsoleConfig,Z as readJunoConfig};
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/configs/
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;
|
|
6
|
-
"names": ["existsSync", "
|
|
3
|
+
"sources": ["../../src/configs/_config.ts", "../../src/utils/config.utils.ts", "../../src/utils/node.utils.ts", "../../src/configs/console.config.ts", "../../src/configs/juno.config.ts"],
|
|
4
|
+
"sourcesContent": ["import {existsSync} from 'node:fs';\nimport {readFile} from 'node:fs/promises';\nimport {extname, join} from 'node:path';\nimport type {ConfigFile, ConfigFilename} from '../types/config';\nimport {js, mjs, ts} from '../utils/config.utils';\nimport {nodeRequire} from '../utils/node.utils';\n\nexport const configFile = ({filename}: {filename: ConfigFilename}): ConfigFile => {\n const junoTs = ts(filename);\n\n if (existsSync(junoTs)) {\n return {\n configPath: junoTs,\n configType: 'ts'\n };\n }\n\n const junoJs = js(filename);\n\n if (existsSync(junoJs)) {\n return {\n configPath: junoJs,\n configType: 'js'\n };\n }\n\n const junoMjs = mjs(filename);\n\n if (existsSync(junoMjs)) {\n return {\n configPath: junoMjs,\n configType: 'js'\n };\n }\n\n const junoCjs = join(process.cwd(), `${filename}.cjs`);\n\n if (existsSync(junoCjs)) {\n return {\n configPath: junoCjs,\n configType: 'js'\n };\n }\n\n // Support for original juno.json or juno.dev.json file\n // juno.config || juno.dev.config => juno.json || juno.dev.json\n const junoJsonDeprecated = join(process.cwd(), `${filename.replace('.config', '')}.json`);\n\n if (existsSync(junoJsonDeprecated)) {\n return {\n configPath: junoJsonDeprecated,\n configType: 'json'\n };\n }\n\n return {\n configPath: join(process.cwd(), `${filename}.json`),\n configType: 'json'\n };\n};\n\nexport const readConfig = async <ConfigFnOrObject, Config>({\n config,\n ...rest\n}: {\n filename: ConfigFilename;\n config: (userConfig: ConfigFnOrObject) => Config;\n}): Promise<Config> => {\n const {configPath, configType} = configFile({...rest});\n\n switch (configType) {\n case 'ts':\n case 'js': {\n const {default: userConfig} = nodeRequire<ConfigFnOrObject>({\n id: configPath,\n extension: extname(configPath)\n });\n return config(userConfig);\n }\n default: {\n const buffer = await readFile(configPath);\n return JSON.parse(buffer.toString('utf-8'));\n }\n }\n};\n", "import {join} from 'node:path';\nimport type {ConfigFilename} from '../types/config';\n\nexport const ts = (filename: ConfigFilename): string => join(process.cwd(), `${filename}.ts`);\nexport const js = (filename: ConfigFilename): string => join(process.cwd(), `${filename}.js`);\nexport const mjs = (filename: ConfigFilename): string => join(process.cwd(), `${filename}.mjs`);\n", "import {transformFileSync} from '@babel/core';\nimport * as mod from '@babel/plugin-transform-modules-commonjs';\nimport * as ts from '@babel/preset-typescript';\nimport {\n defineConfig,\n defineConsoleConfig,\n type JunoConfig,\n type JunoConsoleConfig\n} from '@junobuild/config';\n\n/**\n * Adapted source from Stencil (https://github.com/ionic-team/stencil/blob/main/src/compiler/sys/node-require.ts)\n */\nexport const nodeRequire = <T>({id, extension}: {id: string; extension: string}): {default: T} => {\n // ensure we cleared out node's internal require() cache for this file\n delete require.cache[id];\n\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const Module = require('module');\n const originalLoad = Module._load;\n\n try {\n // let's override node's require for a second\n // don't worry, we'll revert this when we're done\n // eslint-disable-next-line local-rules/prefer-object-params\n require.extensions[extension] = (module: NodeJS.Module, fileName: string) => {\n // let's transpile with Babel regardless if TS or JS\n const sourceText = transformFileSync(fileName, {\n presets: [ts.default],\n plugins: [mod.default]\n }).code;\n\n interface NodeModuleWithCompile extends NodeModule {\n _compile(code: string, filename: string): T;\n }\n\n // we need to coerce because of the requirements for the arguments to\n // this function.\n (module as NodeModuleWithCompile)._compile(sourceText, fileName);\n };\n\n // We override defineConfig because the library is unknown in the module we are trying to load.\n // This need to be a function and not an arrow function because of the \"arguments\"\n Module._load = function (request: string): unknown {\n if (request === '@junobuild/config') {\n return {\n defineConfig: (config: JunoConfig) => defineConfig(config),\n defineConsoleConfig: (config: JunoConsoleConfig) => defineConsoleConfig(config)\n };\n }\n\n // eslint-disable-next-line prefer-rest-params\n return originalLoad.apply(this, arguments);\n };\n\n // let's do this!\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(id);\n } finally {\n // all set, let's go ahead and reset the require back to the default\n require.extensions[extension] = undefined;\n\n // Redo our hack\n Module._load = originalLoad;\n }\n};\n", "import type {JunoConsoleConfig, JunoConsoleConfigFnOrObject} from '@junobuild/config';\nimport type {ConfigFilename} from '../types/config';\nimport {readConfig} from './_config';\n\nexport const readConsoleConfig = async <\n ConfigFnOrObject extends JunoConsoleConfigFnOrObject,\n Config extends JunoConsoleConfig\n>(params: {\n filename: ConfigFilename;\n config: (userConfig: ConfigFnOrObject) => Config;\n}): Promise<Config> => await readConfig(params);\n", "import type {JunoConfig, JunoConfigFnOrObject} from '@junobuild/config';\nimport {existsSync, readFileSync} from 'node:fs';\nimport {access, lstat} from 'node:fs/promises';\nimport {join} from 'node:path';\nimport type {ConfigFile, ConfigFilename} from '../types/config';\nimport {mjs, ts} from '../utils/config.utils';\nimport {configFile, readConfig} from './_config';\n\nexport const junoConfigExist = async (params: {filename: ConfigFilename}): Promise<boolean> => {\n try {\n const {configPath} = junoConfigFile(params);\n\n // We can access the file - i.e. it exists.\n await access(configPath);\n\n // We also double check it's a file and not a directory.\n // Note: A directory can be created by and on Docker start when the referenced config file in the docker-compose.yml file does not point to an existing file.\n return (await lstat(configPath)).isFile();\n } catch (err: unknown) {\n if (err instanceof Error && 'code' in err && (err as NodeJS.ErrnoException).code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n};\n\nexport const junoConfigFile = configFile;\n\nexport const detectJunoConfigType = ({\n filename\n}: {\n filename: ConfigFilename;\n}): ConfigFile | undefined => {\n const tsconfig = join(process.cwd(), 'tsconfig.json');\n\n if (existsSync(tsconfig)) {\n const junoTs = ts(filename);\n\n return {\n configPath: junoTs,\n configType: 'ts'\n };\n }\n\n try {\n const packageJsonPath = join(process.cwd(), 'package.json');\n\n if (existsSync(packageJsonPath)) {\n interface PackageJson {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n type?: string;\n }\n\n const packageJson: PackageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));\n\n if (\n 'typescript' in (packageJson.dependencies ?? {}) ||\n 'typescript' in (packageJson.devDependencies ?? {})\n ) {\n const junoTs = ts(filename);\n\n return {\n configPath: junoTs,\n configType: 'ts'\n };\n }\n\n if (packageJson.type === 'module') {\n const junoMjs = mjs(filename);\n\n return {\n configPath: junoMjs,\n configType: 'js'\n };\n }\n }\n } catch (_error: unknown) {\n // We ignore the error as returning undefined will lead the CLI to ask the user what type of configuration type should be used.\n }\n\n return undefined;\n};\n\nexport const readJunoConfig = async <\n ConfigFnOrObject extends JunoConfigFnOrObject,\n Config extends JunoConfig\n>(params: {\n filename: ConfigFilename;\n config: (userConfig: ConfigFnOrObject) => Config;\n}): Promise<Config> => await readConfig(params);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["existsSync", "readFile", "extname", "join", "join", "ts", "filename", "js", "mjs", "transformFileSync", "mod", "ts", "defineConfig", "defineConsoleConfig", "nodeRequire", "id", "extension", "__require", "Module", "originalLoad", "module", "fileName", "sourceText", "transformFileSync", "request", "config", "defineConfig", "defineConsoleConfig", "configFile", "filename", "junoTs", "ts", "existsSync", "junoJs", "js", "junoMjs", "mjs", "junoCjs", "join", "junoJsonDeprecated", "readConfig", "config", "rest", "configPath", "configType", "userConfig", "nodeRequire", "extname", "buffer", "readFile", "readConsoleConfig", "params", "readConfig", "existsSync", "readFileSync", "access", "lstat", "join", "junoConfigExist", "params", "configPath", "junoConfigFile", "access", "lstat", "err", "configFile", "detectJunoConfigType", "filename", "tsconfig", "join", "existsSync", "ts", "packageJsonPath", "packageJson", "readFileSync", "mjs", "readJunoConfig", "readConfig"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ConfigFile, ConfigFilename } from '../types/config';
|
|
2
|
+
export declare const configFile: ({ filename }: {
|
|
3
|
+
filename: ConfigFilename;
|
|
4
|
+
}) => ConfigFile;
|
|
5
|
+
export declare const readConfig: <ConfigFnOrObject, Config>({ config, ...rest }: {
|
|
6
|
+
filename: ConfigFilename;
|
|
7
|
+
config: (userConfig: ConfigFnOrObject) => Config;
|
|
8
|
+
}) => Promise<Config>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JunoConsoleConfig, JunoConsoleConfigFnOrObject } from '@junobuild/config';
|
|
2
|
+
import type { ConfigFilename } from '../types/config';
|
|
3
|
+
export declare const readConsoleConfig: <ConfigFnOrObject extends JunoConsoleConfigFnOrObject, Config extends JunoConsoleConfig>(params: {
|
|
4
|
+
filename: ConfigFilename;
|
|
5
|
+
config: (userConfig: ConfigFnOrObject) => Config;
|
|
6
|
+
}) => Promise<Config>;
|
|
@@ -9,7 +9,7 @@ export declare const junoConfigFile: ({ filename }: {
|
|
|
9
9
|
export declare const detectJunoConfigType: ({ filename }: {
|
|
10
10
|
filename: ConfigFilename;
|
|
11
11
|
}) => ConfigFile | undefined;
|
|
12
|
-
export declare const readJunoConfig: <ConfigFnOrObject extends JunoConfigFnOrObject, Config extends JunoConfig>(
|
|
12
|
+
export declare const readJunoConfig: <ConfigFnOrObject extends JunoConfigFnOrObject, Config extends JunoConfig>(params: {
|
|
13
13
|
filename: ConfigFilename;
|
|
14
14
|
config: (userConfig: ConfigFnOrObject) => Config;
|
|
15
15
|
}) => Promise<Config>;
|
package/dist/types/index.d.ts
CHANGED