monorepo-config 0.0.2 → 0.1.0
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/basic.d.ts +38 -10
- package/dist/basic.d.ts.map +1 -1
- package/dist/basic.js +62 -36
- package/dist/basic.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/profile.d.ts +10 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +15 -0
- package/dist/profile.js.map +1 -0
- package/package.json +2 -1
- package/dist/filebased.d.ts +0 -16
- package/dist/filebased.d.ts.map +0 -1
- package/dist/filebased.js +0 -32
- package/dist/filebased.js.map +0 -1
package/dist/basic.d.ts
CHANGED
|
@@ -1,14 +1,42 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ZodObject, type input, type output } from "zod";
|
|
2
2
|
export declare class ConfigError extends Error {
|
|
3
3
|
}
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type ConfigMeta<PackageName extends string, ConfigSchema extends ZodObject, SubSchemas extends Record<string, ZodObject>> = {
|
|
5
|
+
package: PackageName;
|
|
6
|
+
schema: ConfigSchema;
|
|
7
|
+
subConfigs: {
|
|
8
|
+
[packageName in keyof SubSchemas & string]: Config<ConfigMeta<packageName, SubSchemas[packageName], any>, SubSchemas[packageName]>;
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
isLoaded: boolean;
|
|
11
|
+
loaded: Promise<void>;
|
|
12
|
+
input: ConfigInput<PackageName, ConfigSchema, SubSchemas>;
|
|
13
|
+
_resolve: (value: void) => void;
|
|
14
|
+
_reject: (error: Error) => void;
|
|
15
|
+
};
|
|
16
|
+
export type Config<Meta, ConfigSchema extends ZodObject> = ({
|
|
17
|
+
_meta: Meta;
|
|
18
|
+
} & output<ConfigSchema>);
|
|
19
|
+
export type AnyConfig = Config<ConfigMeta<string, any, any>, any>;
|
|
20
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
21
|
+
type ResultConfigMeta<PackageName extends string, ConfigSchema extends ZodObject, SubConfigsArray extends Config<ConfigMeta<string, any, any>, any>[]> = ConfigMeta<PackageName, ConfigSchema, ({
|
|
22
|
+
[SubConfig in SubConfigsArray[number] as SubConfig['_meta']['package']]: (SubConfig extends {
|
|
23
|
+
_meta: {
|
|
24
|
+
schema: infer SubSchema;
|
|
25
|
+
};
|
|
26
|
+
} ? SubSchema : never);
|
|
27
|
+
} & {
|
|
28
|
+
[SubSubPkg in keyof UnionToIntersection<SubConfigsArray[number]['_meta']['subConfigs']>]: (UnionToIntersection<SubConfigsArray[number]['_meta']['subConfigs']>[SubSubPkg]['_meta']['schema']);
|
|
29
|
+
})>;
|
|
30
|
+
export declare function makeConfig<const PackageName extends string, const ConfigSchema extends ZodObject, const SubConfigsArray extends Config<ConfigMeta<string, any, any>, any>[], const Extra extends object = {}>(args: {
|
|
31
|
+
package: PackageName;
|
|
32
|
+
schema: ConfigSchema;
|
|
33
|
+
subConfigs: SubConfigsArray;
|
|
34
|
+
} & Extra): Config<ResultConfigMeta<PackageName, ConfigSchema, SubConfigsArray> & Omit<Extra, 'package' | 'schema' | 'subConfigs'>, ConfigSchema>;
|
|
35
|
+
type ConfigInput<PackageName extends string, ConfigSchema extends ZodObject, SubSchemas extends Record<string, ZodObject>> = (Record<PackageName, input<ConfigSchema>> & {
|
|
36
|
+
[subPackageName in keyof SubSchemas]: input<SubSchemas[subPackageName]>;
|
|
37
|
+
});
|
|
38
|
+
export declare function setConfig<PackageName extends string, ConfigSchema extends ZodObject, SubSchemas extends Record<string, ZodObject>>(config: Config<ConfigMeta<PackageName, ConfigSchema, SubSchemas>, ConfigSchema>, inputData: ConfigInput<PackageName, ConfigSchema, SubSchemas>, opts?: {
|
|
39
|
+
forceOverride: boolean;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
export {};
|
|
14
42
|
//# sourceMappingURL=basic.d.ts.map
|
package/dist/basic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"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"}
|
package/dist/basic.js
CHANGED
|
@@ -6,50 +6,76 @@ function wrapInProxy(obj) {
|
|
|
6
6
|
if (prop === '_meta') {
|
|
7
7
|
return target._meta;
|
|
8
8
|
}
|
|
9
|
-
if (!target._meta.
|
|
10
|
-
throw new Error("Tried to access config but it is not
|
|
9
|
+
if (!target._meta.isLoaded) {
|
|
10
|
+
throw new Error("Tried to access config but it is not set yet. Did you forget to set or load the config?");
|
|
11
11
|
}
|
|
12
12
|
return target[prop];
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
export function makeConfig(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
16
|
+
export function makeConfig(args) {
|
|
17
|
+
let _resolve;
|
|
18
|
+
let _reject;
|
|
19
|
+
const loaded = new Promise((resolve, reject) => {
|
|
20
|
+
_resolve = resolve;
|
|
21
|
+
_reject = reject;
|
|
22
|
+
});
|
|
23
|
+
const subConfigObject = {};
|
|
24
|
+
const registerConfig = (subConfig) => {
|
|
25
|
+
const subPkg = subConfig._meta.package;
|
|
26
|
+
const prevRegisteredConfig = subConfigObject[subPkg];
|
|
27
|
+
if (prevRegisteredConfig === undefined) {
|
|
28
|
+
subConfigObject[subPkg] = subConfig;
|
|
29
|
+
}
|
|
30
|
+
else if (prevRegisteredConfig !== subConfig) {
|
|
31
|
+
throw new ConfigError(`Package name '${subPkg}' is used for two different configs`);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
for (const subConfig of args.subConfigs) {
|
|
35
|
+
registerConfig(subConfig);
|
|
36
|
+
for (const subSubConfig of Object.values(subConfig._meta.subConfigs)) {
|
|
37
|
+
registerConfig(subSubConfig);
|
|
38
|
+
}
|
|
39
39
|
}
|
|
40
|
+
const _meta = {
|
|
41
|
+
...args, // overriden later:
|
|
42
|
+
package: args.package,
|
|
43
|
+
schema: args.schema,
|
|
44
|
+
subConfigs: subConfigObject,
|
|
45
|
+
isLoaded: false,
|
|
46
|
+
input: {}, // will be set later
|
|
47
|
+
loaded,
|
|
48
|
+
_resolve,
|
|
49
|
+
_reject,
|
|
50
|
+
};
|
|
51
|
+
// @ts-expect-error for simplicity, the types assume that config is always defined.
|
|
52
|
+
return wrapInProxy({ _meta });
|
|
40
53
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
config._meta.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
function setSingleConfig(config, allData, allowOverride) {
|
|
55
|
+
if (!(config._meta.package in allData)) {
|
|
56
|
+
throw new Error(`Expected config for package "${config._meta.package}"`);
|
|
57
|
+
}
|
|
58
|
+
if (config._meta.isLoaded) {
|
|
59
|
+
if (allowOverride) {
|
|
60
|
+
console.warn(`WARNING: Overriding config for "${config._meta.package}"!`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
throw new ConfigError(`Can't override config "${config._meta.package}" as it is already set`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
config._meta.input = allData[config._meta.package];
|
|
67
|
+
const subData = config._meta.schema.parse(allData[config._meta.package]);
|
|
68
|
+
Object.assign(config, subData);
|
|
69
|
+
if (!config._meta.isLoaded) {
|
|
70
|
+
config._meta.isLoaded = true;
|
|
71
|
+
config._meta._resolve();
|
|
50
72
|
}
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
}
|
|
74
|
+
export async function setConfig(config, inputData, opts) {
|
|
75
|
+
const override = opts?.forceOverride ?? false;
|
|
76
|
+
setSingleConfig(config, inputData, override);
|
|
77
|
+
for (const subConfig of Object.values(config._meta.subConfigs)) {
|
|
78
|
+
setSingleConfig(subConfig, inputData, override);
|
|
53
79
|
}
|
|
54
80
|
}
|
|
55
81
|
//# sourceMappingURL=basic.js.map
|
package/dist/basic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAY,SAAQ,KAAK;CAAI;
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../src/basic.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { makeConfig,
|
|
2
|
-
export {
|
|
1
|
+
export { makeConfig, setConfig } from "./basic.js";
|
|
2
|
+
export { loadProfileIntoConfig } from "./profile.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { makeConfig,
|
|
2
|
-
export {
|
|
1
|
+
export { makeConfig, setConfig } from "./basic.js";
|
|
2
|
+
export { loadProfileIntoConfig } from "./profile.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ZodObject } from "zod";
|
|
2
|
+
import { Config, ConfigMeta } from "./basic.js";
|
|
3
|
+
export declare function loadProfileIntoConfig<PackageName extends string, ConfigSchema extends ZodObject, SubSchemas extends Record<string, ZodObject>>(config: Config<ConfigMeta<PackageName, ConfigSchema, SubSchemas> & {
|
|
4
|
+
profileDir: string;
|
|
5
|
+
profileSuffix?: string;
|
|
6
|
+
}, ConfigSchema>, envVar: string, profileDir?: string): Promise<void>;
|
|
7
|
+
export declare function loadProfileIntoConfig<PackageName extends string, ConfigSchema extends ZodObject, SubSchemas extends Record<string, ZodObject>>(config: Config<ConfigMeta<PackageName, ConfigSchema, SubSchemas> & {
|
|
8
|
+
profileSuffix?: string;
|
|
9
|
+
}, ConfigSchema>, envVar: string, profileDir: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,MAAM,EAAe,UAAU,EAAa,MAAM,YAAY,CAAC;AAGxE,wBAAsB,qBAAqB,CACzC,WAAW,SAAS,MAAM,EAC1B,YAAY,SAAS,SAAS,EAC9B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAE5C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,YAAY,CAAC,EAChI,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhB,wBAAsB,qBAAqB,CACzC,WAAW,SAAS,MAAM,EAC1B,YAAY,SAAS,SAAS,EAC9B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAE5C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,YAAY,CAAC,EAC5G,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
package/dist/profile.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ConfigError, setConfig } from "./basic.js";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
export async function loadProfileIntoConfig(config, envVar, profileDir) {
|
|
4
|
+
const configName = process.env[envVar];
|
|
5
|
+
if (configName === undefined) {
|
|
6
|
+
throw new ConfigError(`Please set the environment variable ${envVar}`);
|
|
7
|
+
}
|
|
8
|
+
const path = join(profileDir ?? config._meta.profileDir, `${configName}.${config._meta.profileSuffix ?? 'js'}`);
|
|
9
|
+
const data = (await import(path)).default;
|
|
10
|
+
setConfig(config, data);
|
|
11
|
+
if (!config._meta.isLoaded) {
|
|
12
|
+
console.warn(`Imported ${path} but config was still not marked as set`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,WAAW,EAAc,SAAS,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAsB5B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAKzC,MAAgI,EAChI,MAAc,EACd,UAAmB;IAEnB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,WAAW,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC,CAAC;IAChH,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,yCAAyC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monorepo-config",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Managed and validated configs across packages (no deps, but bring your own zod)",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"zod": "^4.3.5"
|
|
37
37
|
},
|
|
38
38
|
"exports": {
|
|
39
|
+
".": "./dist/index.js",
|
|
39
40
|
"./*": "./dist/*"
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
package/dist/filebased.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ZodObject } from "zod";
|
|
2
|
-
import { Config } from "./basic.js";
|
|
3
|
-
export type FileConfig<ConfigSchema extends ZodObject> = Config<ConfigSchema> & {
|
|
4
|
-
_meta: {
|
|
5
|
-
configDir: string;
|
|
6
|
-
envVar: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export declare function makeFileConfig<ConfigSchema extends ZodObject>(opts: {
|
|
10
|
-
envVar: string;
|
|
11
|
-
directory: string;
|
|
12
|
-
schema: ConfigSchema;
|
|
13
|
-
preventAutoLoad?: boolean;
|
|
14
|
-
}): FileConfig<ConfigSchema>;
|
|
15
|
-
export declare function loadFileIntoConfig<ConfigSchema extends ZodObject>(config: FileConfig<ConfigSchema>): Promise<void>;
|
|
16
|
-
//# sourceMappingURL=filebased.d.ts.map
|
package/dist/filebased.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filebased.d.ts","sourceRoot":"","sources":["../src/filebased.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,MAAM,EAA2B,MAAM,YAAY,CAAC;AAG7D,MAAM,MAAM,UAAU,CAAC,YAAY,SAAS,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG;IAC9E,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAA;CACF,CAAC;AAEF,wBAAgB,cAAc,CAAC,YAAY,SAAS,SAAS,EAAE,IAAI,EAAE;IACnE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnF,GAAG,UAAU,CAAC,YAAY,CAAC,CAkB3B;AAED,wBAAsB,kBAAkB,CAAC,YAAY,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,iBAUxG"}
|
package/dist/filebased.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ConfigError, makeConfig } from "./basic.js";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
export function makeFileConfig(opts) {
|
|
4
|
-
const cfg = makeConfig(opts.schema);
|
|
5
|
-
// imperative overrides here to not lose the Proxy
|
|
6
|
-
cfg._meta.configDir = opts.directory;
|
|
7
|
-
cfg._meta.envVar = opts.envVar;
|
|
8
|
-
if (!opts.preventAutoLoad) {
|
|
9
|
-
queueMicrotask(async () => {
|
|
10
|
-
try {
|
|
11
|
-
await loadFileIntoConfig(cfg);
|
|
12
|
-
}
|
|
13
|
-
catch (e) {
|
|
14
|
-
console.error(e);
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
return cfg;
|
|
20
|
-
}
|
|
21
|
-
export async function loadFileIntoConfig(config) {
|
|
22
|
-
const config_name = process.env[config._meta.envVar];
|
|
23
|
-
if (config_name === undefined) {
|
|
24
|
-
throw new ConfigError(`Please set the environment variable ${config._meta.envVar}`);
|
|
25
|
-
}
|
|
26
|
-
const path = join(config._meta.configDir, `${config_name}.js`);
|
|
27
|
-
await import(path);
|
|
28
|
-
if (!config._meta.isUsable) {
|
|
29
|
-
console.warn(`Imported ${path} but config was still not marked as usable`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=filebased.js.map
|
package/dist/filebased.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filebased.js","sourceRoot":"","sources":["../src/filebased.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,MAAM,UAAU,cAAc,CAAiC,IAE9D;IACC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAA6B,CAAC;IAChE,kDAAkD;IAClD,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE/B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1B,cAAc,CAAC,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC;gBACH,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAiC,MAAgC;IACvG,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,WAAW,CAAC,uCAAuC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;IAC/D,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,4CAA4C,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|