chore(framework): Initial commit (#8221)

**What**
- Initiate the framework package (which is just a place to move things around for now)
- move the config loader and related resources as well as the `ConfigModule` type
- Create a ConfigManager singleton which prepare and store the config (later can be stored entirely in the container) and allow for easier test override
- re export the logger from the framework
- replace medusa config loader with the framework one
- `build` run type check on tests as well but `prepublishOnly` will not fail on build if tests are typed broken

FIXES FRMW-2607
FIXES FRMW-2609
FIXES FRMW-2614
FIXES FRMW-2618
This commit is contained in:
Adrien de Peretti
2024-07-23 17:46:28 +02:00
committed by GitHub
parent 97f64a5cfe
commit 47dde05517
30 changed files with 1305 additions and 170 deletions

View File

@@ -6,9 +6,10 @@ import { isObject } from "./is-object"
*
* @param obj
*/
export function deepCopy<T extends Record<any, any> = Record<any, any>>(
obj: T | T[]
): T | T[] {
export function deepCopy<
T extends Record<any, any> | Record<any, any>[] = Record<any, any>,
TOutput = T extends [] ? T[] : T
>(obj: T): TOutput {
if (obj === null || typeof obj !== "object") {
return obj
}
@@ -18,14 +19,14 @@ export function deepCopy<T extends Record<any, any> = Record<any, any>>(
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i])
}
return copy
return copy as TOutput
}
if (isObject(obj)) {
const copy: Record<any, any> = {}
for (let attr in obj) {
if (obj.hasOwnProperty(attr)) {
copy[attr] = deepCopy(obj[attr])
copy[attr] = deepCopy(obj[attr] as T)
}
}
return copy