@magidoc/plugin-starter-variables
Advanced tools
Comparing version 1.1.3 to 2.0.0
import templates from './variables/templates'; | ||
import magidoc from './variables/magidoc'; | ||
import type { Variable, ViteVariable } from './variables/variable'; | ||
import { toVariablesFile, UnsupportedVariablesError } from './env/envFileContent'; | ||
import type { Variable } from './variables/variable'; | ||
import type { Page } from './variables/templates'; | ||
export { templates }; | ||
export { magidoc }; | ||
export type { Variable, ViteVariable, Page }; | ||
export type { Variable, Page }; | ||
export { toVariablesFile, UnsupportedVariablesError }; |
export { default as templates } from './variables/templates.js'; | ||
export { default as magidoc } from './variables/magidoc.js'; | ||
export { UnsupportedVariablesError, toVariablesFile } from './env/envFileContent.js'; | ||
//# sourceMappingURL=index.js.map |
import type { ZodType, ZodTypeDef } from 'zod'; | ||
/** | ||
* Copy of the ViteJS import meta interface | ||
*/ | ||
interface MetaEnv { | ||
@@ -10,5 +7,7 @@ [key: string]: unknown; | ||
name: string; | ||
key: string; | ||
asEnv: (value: T) => Record<string, string>; | ||
get: (env: MetaEnv) => T | null; | ||
getOrDefault: (env: MetaEnv, def: T) => T; | ||
zod: ZodVariable<T>; | ||
vite: ViteVariable<T>; | ||
}; | ||
@@ -24,8 +23,3 @@ export declare type ZodTypeProvider<T> = (zod: typeof import('zod')) => ZodType<T | undefined, ZodTypeDef, T | undefined>; | ||
}; | ||
export declare type ViteVariable<T> = { | ||
key: string; | ||
get: (env: MetaEnv) => T | null; | ||
getOrDefault: (env: MetaEnv, def: T) => T; | ||
}; | ||
export declare function createVariable<T>(key: string, converter: Converter<T>): Variable<T>; | ||
export {}; |
function createVariable(key, converter) { | ||
const viteKey = `VITE_${key.toUpperCase()}`; | ||
const viteGet = (env) => converter.convert(env[viteKey]); | ||
const get = (env) => converter.convert(env[key]); | ||
return { | ||
name: toCamelCase(key), | ||
asEnv: (value) => ({ [viteKey]: converter.asString(value) }), | ||
key: key, | ||
asEnv: (value) => ({ [key]: converter.asString(value) }), | ||
zod: { | ||
type: converter.type, | ||
}, | ||
vite: { | ||
key: viteKey, | ||
get: viteGet, | ||
getOrDefault: (env, def) => viteGet(env) ?? def, | ||
}, | ||
get: get, | ||
getOrDefault: (env, def) => get(env) ?? def, | ||
}; | ||
@@ -16,0 +13,0 @@ } |
@@ -5,3 +5,3 @@ { | ||
"private": false, | ||
"version": "1.1.3", | ||
"version": "2.0.0", | ||
"type": "module", | ||
@@ -23,8 +23,11 @@ "license": "MIT", | ||
"@rollup/plugin-typescript": "^8.3.2", | ||
"@types/jest": "^27.5.1", | ||
"@types/jest": "^28.1.1", | ||
"@types/lodash": "^4.14.182", | ||
"@types/node": "^17.0.40", | ||
"jest": "^28.1.0", | ||
"rollup": "^2.75.3", | ||
"ts-jest": "^28.0.3", | ||
"lodash": "^4.17.21", | ||
"rollup": "^2.75.5", | ||
"ts-jest": "^28.0.4", | ||
"tslib": "^2.4.0", | ||
"typescript": "^4.7.2" | ||
"typescript": "^4.7.3" | ||
}, | ||
@@ -31,0 +34,0 @@ "optionalDependencies": { |
import templates from './variables/templates' | ||
import magidoc from './variables/magidoc' | ||
import type { Variable, ViteVariable } from './variables/variable' | ||
import { | ||
toVariablesFile, | ||
UnsupportedVariablesError, | ||
} from './env/envFileContent' | ||
import type { Variable } from './variables/variable' | ||
import type { Page } from './variables/templates' | ||
@@ -8,2 +12,3 @@ | ||
export { magidoc } | ||
export type { Variable, ViteVariable, Page } | ||
export type { Variable, Page } | ||
export { toVariablesFile, UnsupportedVariablesError } |
import type { ZodType, ZodTypeDef } from 'zod' | ||
/** | ||
* Copy of the ViteJS import meta interface | ||
*/ | ||
interface MetaEnv { | ||
@@ -12,5 +9,7 @@ [key: string]: unknown | ||
name: string | ||
key: string | ||
asEnv: (value: T) => Record<string, string> | ||
get: (env: MetaEnv) => T | null | ||
getOrDefault: (env: MetaEnv, def: T) => T | ||
zod: ZodVariable<T> | ||
vite: ViteVariable<T> | ||
} | ||
@@ -32,8 +31,2 @@ | ||
export type ViteVariable<T> = { | ||
key: string | ||
get: (env: MetaEnv) => T | null | ||
getOrDefault: (env: MetaEnv, def: T) => T | ||
} | ||
export function createVariable<T>( | ||
@@ -43,16 +36,13 @@ key: string, | ||
): Variable<T> { | ||
const viteKey = `VITE_${key.toUpperCase()}` | ||
const viteGet = (env: MetaEnv) => converter.convert(env[viteKey]) | ||
const get = (env: MetaEnv) => converter.convert(env[key]) | ||
return { | ||
name: toCamelCase(key), | ||
asEnv: (value: T) => ({ [viteKey]: converter.asString(value) }), | ||
key: key, | ||
asEnv: (value: T) => ({ [key]: converter.asString(value) }), | ||
zod: { | ||
type: converter.type, | ||
}, | ||
vite: { | ||
key: viteKey, | ||
get: viteGet, | ||
getOrDefault: (env, def) => viteGet(env) ?? def, | ||
}, | ||
get: get, | ||
getOrDefault: (env, def) => get(env) ?? def, | ||
} | ||
@@ -59,0 +49,0 @@ } |
@@ -9,3 +9,8 @@ import type { ZodType } from 'zod' | ||
it('contains the right number of export keys', () => { | ||
expect(Object.keys(variables)).toEqual(['templates', 'magidoc']) | ||
expect(Object.keys(variables)).toEqual([ | ||
'templates', | ||
'magidoc', | ||
'toVariablesFile', | ||
'UnsupportedVariablesError', | ||
]) | ||
}) | ||
@@ -29,3 +34,3 @@ | ||
variables.templates.APP_TITLE, | ||
'VITE_APP_TITLE', | ||
'APP_TITLE', | ||
z.string().optional(), | ||
@@ -38,3 +43,3 @@ ) | ||
variables.templates.APP_LOGO, | ||
'VITE_APP_LOGO', | ||
'APP_LOGO', | ||
z.string().optional(), | ||
@@ -47,3 +52,3 @@ ) | ||
variables.templates.APP_FAVICON, | ||
'VITE_APP_FAVICON', | ||
'APP_FAVICON', | ||
z.string().optional(), | ||
@@ -56,3 +61,3 @@ ) | ||
variables.templates.SITE_ROOT, | ||
'VITE_SITE_ROOT', | ||
'SITE_ROOT', | ||
z.string().optional(), | ||
@@ -65,3 +70,3 @@ ) | ||
variables.templates.SITE_META, | ||
'VITE_SITE_META', | ||
'SITE_META', | ||
z.record(z.string().optional()).optional(), | ||
@@ -74,3 +79,3 @@ ) | ||
variables.templates.QUERY_GENERATION_FACTORIES, | ||
'VITE_QUERY_GENERATION_FACTORIES', | ||
'QUERY_GENERATION_FACTORIES', | ||
z | ||
@@ -102,3 +107,3 @@ .record( | ||
variables.templates.PAGES, | ||
'VITE_PAGES', | ||
'PAGES', | ||
z.array(pagesType).optional(), | ||
@@ -117,3 +122,3 @@ ) | ||
variables.magidoc.MAGIDOC_GENERATE, | ||
'VITE_MAGIDOC_GENERATE', | ||
'MAGIDOC_GENERATE', | ||
z.boolean().optional(), | ||
@@ -127,20 +132,16 @@ ) | ||
target: Variable<string>, | ||
viteKey: string, | ||
key: string, | ||
expectedZod: ZodType<any>, | ||
) { | ||
expect(target.vite.key).toEqual(viteKey) | ||
expect(target.key).toEqual(key) | ||
expect(target.vite.get({ [viteKey]: 'Potato' })).toBe('Potato') | ||
expect(target.vite.get({ [viteKey]: false })).toBe('false') | ||
expect(target.vite.get({})).toBeNull() | ||
expect(target.get({ [key]: 'Potato' })).toBe('Potato') | ||
expect(target.get({ [key]: false })).toBe('false') | ||
expect(target.get({})).toBeNull() | ||
expect(target.vite.getOrDefault({ [viteKey]: 'Potato' }, 'Default')).toBe( | ||
'Potato', | ||
) | ||
expect(target.vite.getOrDefault({ [viteKey]: false }, 'Default')).toBe( | ||
'false', | ||
) | ||
expect(target.vite.getOrDefault({}, 'Default')).toBe('Default') | ||
expect(target.getOrDefault({ [key]: 'Potato' }, 'Default')).toBe('Potato') | ||
expect(target.getOrDefault({ [key]: false }, 'Default')).toBe('false') | ||
expect(target.getOrDefault({}, 'Default')).toBe('Default') | ||
expect(target.asEnv('Potato')).toEqual({ [viteKey]: 'Potato' }) | ||
expect(target.asEnv('Potato')).toEqual({ [key]: 'Potato' }) | ||
@@ -155,23 +156,23 @@ ensureZodTypeEqual(target, expectedZod) | ||
) { | ||
expect(target.vite.key).toEqual(viteKey) | ||
expect(target.key).toEqual(viteKey) | ||
expect(target.vite.get({ [viteKey]: true })).toBe(true) | ||
expect(target.vite.get({ [viteKey]: 'true' })).toBe(true) | ||
expect(target.vite.get({ [viteKey]: 't' })).toBe(true) | ||
expect(target.vite.get({ [viteKey]: '1' })).toBe(true) | ||
expect(target.vite.get({ [viteKey]: 12 })).toBe(true) | ||
expect(target.get({ [viteKey]: true })).toBe(true) | ||
expect(target.get({ [viteKey]: 'true' })).toBe(true) | ||
expect(target.get({ [viteKey]: 't' })).toBe(true) | ||
expect(target.get({ [viteKey]: '1' })).toBe(true) | ||
expect(target.get({ [viteKey]: 12 })).toBe(true) | ||
expect(target.vite.get({ [viteKey]: false })).toBe(false) | ||
expect(target.vite.get({ [viteKey]: 'false' })).toBe(false) | ||
expect(target.vite.get({ [viteKey]: 'wow' })).toBe(false) | ||
expect(target.vite.get({ [viteKey]: 0 })).toBe(false) | ||
expect(target.get({ [viteKey]: false })).toBe(false) | ||
expect(target.get({ [viteKey]: 'false' })).toBe(false) | ||
expect(target.get({ [viteKey]: 'wow' })).toBe(false) | ||
expect(target.get({ [viteKey]: 0 })).toBe(false) | ||
expect(target.vite.get({ [viteKey]: {} })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: null })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: undefined })).toBeNull() | ||
expect(target.vite.get({})).toBeNull() | ||
expect(target.get({ [viteKey]: {} })).toBeNull() | ||
expect(target.get({ [viteKey]: null })).toBeNull() | ||
expect(target.get({ [viteKey]: undefined })).toBeNull() | ||
expect(target.get({})).toBeNull() | ||
expect(target.vite.getOrDefault({ [viteKey]: false }, true)).toBe(false) | ||
expect(target.vite.getOrDefault({ [viteKey]: {} }, true)).toBe(true) | ||
expect(target.vite.getOrDefault({}, true)).toBe(true) | ||
expect(target.getOrDefault({ [viteKey]: false }, true)).toBe(false) | ||
expect(target.getOrDefault({ [viteKey]: {} }, true)).toBe(true) | ||
expect(target.getOrDefault({}, true)).toBe(true) | ||
@@ -186,27 +187,27 @@ expect(target.asEnv(true)).toEqual({ [viteKey]: 'true' }) | ||
target: Variable<Record<string, any>>, | ||
viteKey: string, | ||
key: string, | ||
expectedZod: ZodType<any>, | ||
) { | ||
expect(target.vite.key).toEqual(viteKey) | ||
expect(target.key).toEqual(key) | ||
expect(target.vite.get({ [viteKey]: true })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: 'true' })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: '4234' })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: 4234 })).toBeNull() | ||
expect(target.get({ [key]: true })).toBeNull() | ||
expect(target.get({ [key]: 'true' })).toBeNull() | ||
expect(target.get({ [key]: '4234' })).toBeNull() | ||
expect(target.get({ [key]: 4234 })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: { abc: '123' } })).toEqual({ abc: '123' }) | ||
expect( | ||
target.vite.get({ [viteKey]: JSON.stringify({ abc: '123' }) }), | ||
).toEqual({ abc: '123' }) | ||
expect(target.get({ [key]: { abc: '123' } })).toEqual({ abc: '123' }) | ||
expect(target.get({ [key]: JSON.stringify({ abc: '123' }) })).toEqual({ | ||
abc: '123', | ||
}) | ||
expect(target.vite.getOrDefault({ [viteKey]: false }, { abc: 123 })).toEqual({ | ||
expect(target.getOrDefault({ [key]: false }, { abc: 123 })).toEqual({ | ||
abc: 123, | ||
}) | ||
expect(target.vite.getOrDefault({ [viteKey]: {} }, { abc: 123 })).toEqual({}) | ||
expect(target.vite.getOrDefault({}, { abc: 123 })).toEqual({ abc: 123 }) | ||
expect(target.getOrDefault({ [key]: {} }, { abc: 123 })).toEqual({}) | ||
expect(target.getOrDefault({}, { abc: 123 })).toEqual({ abc: 123 }) | ||
expect(target.asEnv({ abc: 123 })).toEqual({ | ||
[viteKey]: JSON.stringify({ abc: 123 }), | ||
[key]: JSON.stringify({ abc: 123 }), | ||
}) | ||
expect(target.asEnv({})).toEqual({ [viteKey]: '{}' }) | ||
expect(target.asEnv({})).toEqual({ [key]: '{}' }) | ||
@@ -218,23 +219,19 @@ ensureZodTypeEqual(target, expectedZod) | ||
target: Variable<Array<any>>, | ||
viteKey: string, | ||
key: string, | ||
expectedZod: ZodType<any>, | ||
) { | ||
expect(target.vite.key).toEqual(viteKey) | ||
expect(target.key).toEqual(key) | ||
expect(target.vite.get({ [viteKey]: true })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: 'true' })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: '4234' })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: 4234 })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: {} })).toBeNull() | ||
expect(target.get({ [key]: true })).toBeNull() | ||
expect(target.get({ [key]: 'true' })).toBeNull() | ||
expect(target.get({ [key]: '4234' })).toBeNull() | ||
expect(target.get({ [key]: 4234 })).toBeNull() | ||
expect(target.get({ [key]: {} })).toBeNull() | ||
expect(target.vite.get({ [viteKey]: [{ abc: '123' }] })).toEqual([ | ||
expect(target.get({ [key]: [{ abc: '123' }] })).toEqual([{ abc: '123' }]) | ||
expect(target.get({ [key]: JSON.stringify([{ abc: '123' }]) })).toEqual([ | ||
{ abc: '123' }, | ||
]) | ||
expect( | ||
target.vite.get({ [viteKey]: JSON.stringify([{ abc: '123' }]) }), | ||
).toEqual([{ abc: '123' }]) | ||
expect( | ||
target.vite.getOrDefault({ [viteKey]: false }, [{ abc: 123 }]), | ||
).toEqual([ | ||
expect(target.getOrDefault({ [key]: false }, [{ abc: 123 }])).toEqual([ | ||
{ | ||
@@ -244,11 +241,9 @@ abc: 123, | ||
]) | ||
expect(target.vite.getOrDefault({ [viteKey]: [] }, [{ abc: 123 }])).toEqual( | ||
[], | ||
) | ||
expect(target.vite.getOrDefault({}, [{ abc: 123 }])).toEqual([{ abc: 123 }]) | ||
expect(target.getOrDefault({ [key]: [] }, [{ abc: 123 }])).toEqual([]) | ||
expect(target.getOrDefault({}, [{ abc: 123 }])).toEqual([{ abc: 123 }]) | ||
expect(target.asEnv([{ abc: 123 }])).toEqual({ | ||
[viteKey]: JSON.stringify([{ abc: 123 }]), | ||
[key]: JSON.stringify([{ abc: 123 }]), | ||
}) | ||
expect(target.asEnv([])).toEqual({ [viteKey]: '[]' }) | ||
expect(target.asEnv([])).toEqual({ [key]: '[]' }) | ||
@@ -259,2 +254,3 @@ ensureZodTypeEqual(target, expectedZod) | ||
function ensureZodTypeEqual(target: Variable<any>, expected: ZodType<any>) { | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore | ||
@@ -261,0 +257,0 @@ // this does a good enough compare to make sure they have the same schema |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
36400
49
832
10