@fjall/util 0.1.19 → 0.1.21

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.
@@ -0,0 +1 @@
1
+ export * from './src';
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./src"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMnOyJdfQ==
@@ -0,0 +1,79 @@
1
+ import { Account } from "@aws-sdk/client-organizations";
2
+ type Provider = "aws";
3
+ type ServiceConfig = {
4
+ id: string;
5
+ type?: string;
6
+ version?: number;
7
+ options?: object;
8
+ };
9
+ type ProviderAccount = {
10
+ id: string;
11
+ name: string;
12
+ environment: string;
13
+ };
14
+ type RootConfig = {
15
+ version?: number;
16
+ development?: boolean;
17
+ services?: {
18
+ [key: string]: ServiceConfig;
19
+ };
20
+ provider?: Provider;
21
+ providerAccounts?: ProviderAccount[];
22
+ };
23
+ /**
24
+ * Config class for loading and saving fjall-config.json file
25
+ */
26
+ export declare class Config {
27
+ rootConfig: RootConfig;
28
+ existingAccountsConfig: Account[];
29
+ constructor(rootConfig?: object, existingAccountsConfig?: Account[]);
30
+ isDevelopment(): boolean;
31
+ /**
32
+ * Load config file into memory as a raw JSON string
33
+ * @returns Config as JSON string or NULL if no config file accessible
34
+ */
35
+ private static loadConfigFile;
36
+ /**
37
+ * Tries to load the config file from the given path, if unncessuful it tries exactly two directories higher
38
+ * This is neccessary to ensure fjall apps can load the config file themselves
39
+ * @param configFile
40
+ */
41
+ private static tryLoadConfigFile;
42
+ /**
43
+ * Load configuration from file
44
+ *
45
+ * @returns Loaded configuration
46
+ */
47
+ static loadConfig(): Config;
48
+ /**
49
+ * Save configuration to file
50
+ */
51
+ saveConfig(): void;
52
+ /**
53
+ * Set the schema version used for this config file
54
+ *
55
+ * @param version Schema Version
56
+ */
57
+ setVersion(version: number): void;
58
+ /**
59
+ * Add a new service to the config file
60
+ * @param serviceKey Name/key of the service
61
+ * @param config Service configuration properties
62
+ */
63
+ addService(serviceKey: string, config: ServiceConfig): void;
64
+ /**
65
+ * Set config options on a previously defined service
66
+ *
67
+ * @param serviceKey Name/key of the service
68
+ * @param config Service configuration properties to set
69
+ */
70
+ setServiceOption(serviceKey: string, config: ServiceConfig): void;
71
+ getServiceConfig(serviceKey: string): ServiceConfig | null;
72
+ setProvider(provider: Provider): void;
73
+ addProviderAccount(account: ProviderAccount): void;
74
+ getProviderAccount(accountName: string): ProviderAccount | null | undefined;
75
+ setExistingAccounts(region: string): Promise<void>;
76
+ getExistingAccounts(): Account[];
77
+ getAWSAccountId(): Promise<string | undefined>;
78
+ }
79
+ export {};
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Config = void 0;
4
+ const fs = require("fs");
5
+ const client_organizations_1 = require("@aws-sdk/client-organizations");
6
+ const client_sts_1 = require("@aws-sdk/client-sts");
7
+ /**
8
+ * The current base-version of any newly created config file
9
+ */
10
+ const BASE_CONFIG_VERSION = 0.1;
11
+ /**
12
+ * Config class for loading and saving fjall-config.json file
13
+ */
14
+ class Config {
15
+ constructor(rootConfig, existingAccountsConfig) {
16
+ this.rootConfig = rootConfig
17
+ ? rootConfig
18
+ : {
19
+ version: BASE_CONFIG_VERSION,
20
+ services: {},
21
+ providerAccounts: [],
22
+ };
23
+ this.existingAccountsConfig = existingAccountsConfig
24
+ ? existingAccountsConfig
25
+ : [];
26
+ }
27
+ isDevelopment() {
28
+ return !!this.rootConfig?.development;
29
+ }
30
+ /**
31
+ * Load config file into memory as a raw JSON string
32
+ * @returns Config as JSON string or NULL if no config file accessible
33
+ */
34
+ static loadConfigFile(configFile) {
35
+ try {
36
+ fs.accessSync(configFile, fs.constants.R_OK | fs.constants.W_OK);
37
+ return fs.readFileSync(configFile, {
38
+ encoding: "utf8",
39
+ });
40
+ }
41
+ catch (err) {
42
+ // console.log(
43
+ // `Expected file '${configFile}' does not exist or cannot be read.`
44
+ // );
45
+ return null;
46
+ }
47
+ }
48
+ /**
49
+ * Tries to load the config file from the given path, if unncessuful it tries exactly two directories higher
50
+ * This is neccessary to ensure fjall apps can load the config file themselves
51
+ * @param configFile
52
+ */
53
+ static tryLoadConfigFile(configFile) {
54
+ let config = Config.loadConfigFile(configFile);
55
+ if (config)
56
+ return config;
57
+ // Try one directory higher
58
+ return Config.loadConfigFile(`../../${configFile}`);
59
+ }
60
+ /**
61
+ * Load configuration from file
62
+ *
63
+ * @returns Loaded configuration
64
+ */
65
+ static loadConfig() {
66
+ try {
67
+ const rootConfigJson = Config.tryLoadConfigFile("fjall/fjall-config.json");
68
+ const existingAccountJson = Config.tryLoadConfigFile("fjall/accounts-config.json");
69
+ const rootConfig = rootConfigJson
70
+ ? JSON.parse(rootConfigJson)
71
+ : undefined;
72
+ const existingAccountsConfig = existingAccountJson
73
+ ? JSON.parse(existingAccountJson)
74
+ : undefined;
75
+ return new Config(rootConfig, existingAccountsConfig);
76
+ }
77
+ catch (err) {
78
+ console.error("Unable to parse config file. Aborting.", err);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ /**
83
+ * Save configuration to file
84
+ */
85
+ saveConfig() {
86
+ // Ensure fjall directory exists
87
+ fs.mkdirSync("fjall", { recursive: true }); // recursive: true prevents error if directory already exists
88
+ // JSON-ify config and write root config to file
89
+ const rootJsonString = JSON.stringify(this.rootConfig, null, 2);
90
+ fs.writeFileSync("fjall/fjall-config.json", rootJsonString);
91
+ const existingAccountsJsonString = JSON.stringify(this.existingAccountsConfig, null, 2);
92
+ fs.writeFileSync("fjall/accounts-config.json", existingAccountsJsonString);
93
+ }
94
+ /**
95
+ * Set the schema version used for this config file
96
+ *
97
+ * @param version Schema Version
98
+ */
99
+ setVersion(version) {
100
+ this.rootConfig.version = version;
101
+ }
102
+ /**
103
+ * Add a new service to the config file
104
+ * @param serviceKey Name/key of the service
105
+ * @param config Service configuration properties
106
+ */
107
+ addService(serviceKey, config) {
108
+ if (!this.rootConfig.services)
109
+ this.rootConfig.services = {};
110
+ this.rootConfig.services[serviceKey] = config;
111
+ }
112
+ /**
113
+ * Set config options on a previously defined service
114
+ *
115
+ * @param serviceKey Name/key of the service
116
+ * @param config Service configuration properties to set
117
+ */
118
+ setServiceOption(serviceKey, config) {
119
+ if (!this.rootConfig.services)
120
+ this.rootConfig.services = {};
121
+ const service = this.rootConfig.services[serviceKey];
122
+ if (!service)
123
+ return;
124
+ this.rootConfig.services[serviceKey] = { ...service, ...config };
125
+ }
126
+ getServiceConfig(serviceKey) {
127
+ if (!this.rootConfig.services)
128
+ return null;
129
+ return this.rootConfig.services[serviceKey] || null;
130
+ }
131
+ setProvider(provider) {
132
+ this.rootConfig.provider = provider;
133
+ }
134
+ addProviderAccount(account) {
135
+ if (!this.rootConfig.providerAccounts)
136
+ this.rootConfig.providerAccounts = [];
137
+ // ensure account name is always lowercase
138
+ account.name = account.name.toLocaleLowerCase();
139
+ this.rootConfig.providerAccounts.push(account);
140
+ }
141
+ getProviderAccount(accountName) {
142
+ // TODO: Fix null error
143
+ if (!this.rootConfig.providerAccounts)
144
+ return null;
145
+ return this.rootConfig.providerAccounts.find((account) => account.name.toLocaleLowerCase() === accountName.toLocaleLowerCase());
146
+ }
147
+ async setExistingAccounts(region) {
148
+ // Make API Call
149
+ const client = new client_organizations_1.OrganizationsClient({
150
+ region: region,
151
+ });
152
+ const request = new client_organizations_1.ListAccountsCommand({
153
+ MaxResults: Number("20"),
154
+ });
155
+ const response = await client.send(request);
156
+ this.existingAccountsConfig = response.Accounts || [];
157
+ }
158
+ getExistingAccounts() {
159
+ return this.existingAccountsConfig;
160
+ }
161
+ async getAWSAccountId() {
162
+ const stsClient = new client_sts_1.STSClient({});
163
+ const request = new client_sts_1.GetCallerIdentityCommand({});
164
+ const response = await stsClient.send(request);
165
+ return response?.Account || undefined;
166
+ }
167
+ }
168
+ exports.Config = Config;
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsd0VBSXVDO0FBQ3ZDLG9EQUEwRTtBQXlCMUU7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUVoQzs7R0FFRztBQUNILE1BQWEsTUFBTTtJQUlqQixZQUFZLFVBQW1CLEVBQUUsc0JBQWtDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVTtZQUMxQixDQUFDLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQztnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixRQUFRLEVBQUUsRUFBRTtnQkFDWixnQkFBZ0IsRUFBRSxFQUFFO2FBQ3JCLENBQUM7UUFFTixJQUFJLENBQUMsc0JBQXNCLEdBQUcsc0JBQXNCO1lBQ2xELENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0I7UUFDOUMsSUFBSTtZQUNGLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRTtnQkFDakMsUUFBUSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLGVBQWU7WUFDZixzRUFBc0U7WUFDdEUsS0FBSztZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNL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T0FBTyxHQUFHLElBQUksMENBQW1CLENBQUM7WUFDdEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQ0FBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0MsT0FBTyxRQUFRLEVBQUUsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUEzTEQsd0JBMkxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQge1xuICBBY2NvdW50LFxuICBMaXN0QWNjb3VudHNDb21tYW5kLFxuICBPcmdhbml6YXRpb25zQ2xpZW50LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LW9yZ2FuaXphdGlvbnNcIjtcbmltcG9ydCB7IFNUU0NsaWVudCwgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zdHNcIjtcblxudHlwZSBQcm92aWRlciA9IFwiYXdzXCI7XG5cbnR5cGUgU2VydmljZUNvbmZpZyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgb3B0aW9ucz86IG9iamVjdDtcbn07XG5cbnR5cGUgUHJvdmlkZXJBY2NvdW50ID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG59O1xuXG50eXBlIFJvb3RDb25maWcgPSB7XG4gIHZlcnNpb24/OiBudW1iZXI7XG4gIGRldmVsb3BtZW50PzogYm9vbGVhbjtcbiAgc2VydmljZXM/OiB7IFtrZXk6IHN0cmluZ106IFNlcnZpY2VDb25maWcgfTtcbiAgcHJvdmlkZXI/OiBQcm92aWRlcjtcbiAgcHJvdmlkZXJBY2NvdW50cz86IFByb3ZpZGVyQWNjb3VudFtdO1xufTtcblxuLyoqXG4gKiBUaGUgY3VycmVudCBiYXNlLXZlcnNpb24gb2YgYW55IG5ld2x5IGNyZWF0ZWQgY29uZmlnIGZpbGVcbiAqL1xuY29uc3QgQkFTRV9DT05GSUdfVkVSU0lPTiA9IDAuMTtcblxuLyoqXG4gKiBDb25maWcgY2xhc3MgZm9yIGxvYWRpbmcgYW5kIHNhdmluZyBmamFsbC1jb25maWcuanNvbiBmaWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICByb290Q29uZmlnOiBSb290Q29uZmlnO1xuICBleGlzdGluZ0FjY291bnRzQ29uZmlnOiBBY2NvdW50W107XG5cbiAgY29uc3RydWN0b3Iocm9vdENvbmZpZz86IG9iamVjdCwgZXhpc3RpbmdBY2NvdW50c0NvbmZpZz86IEFjY291bnRbXSkge1xuICAgIHRoaXMucm9vdENvbmZpZyA9IHJvb3RDb25maWdcbiAgICAgID8gcm9vdENvbmZpZ1xuICAgICAgOiB7XG4gICAgICAgICAgdmVyc2lvbjogQkFTRV9DT05GSUdfVkVSU0lPTixcbiAgICAgICAgICBzZXJ2aWNlczoge30sXG4gICAgICAgICAgcHJvdmlkZXJBY2NvdW50czogW10sXG4gICAgICAgIH07XG5cbiAgICB0aGlzLmV4aXN0aW5nQWNjb3VudHNDb25maWcgPSBleGlzdGluZ0FjY291bnRzQ29uZmlnXG4gICAgICA/IGV4aXN0aW5nQWNjb3VudHNDb25maWdcbiAgICAgIDogW107XG4gIH1cblxuICBpc0RldmVsb3BtZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucm9vdENvbmZpZz8uZGV2ZWxvcG1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBjb25maWcgZmlsZSBpbnRvIG1lbW9yeSBhcyBhIHJhdyBKU09OIHN0cmluZ1xuICAgKiBAcmV0dXJucyBDb25maWcgYXMgSlNPTiBzdHJpbmcgb3IgTlVMTCBpZiBubyBjb25maWcgZmlsZSBhY2Nlc3NpYmxlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBsb2FkQ29uZmlnRmlsZShjb25maWdGaWxlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgZnMuYWNjZXNzU3luYyhjb25maWdGaWxlLCBmcy5jb25zdGFudHMuUl9PSyB8IGZzLmNvbnN0YW50cy5XX09LKTtcblxuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjb25maWdGaWxlLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAvLyAgIGBFeHBlY3RlZCBmaWxlICcke2NvbmZpZ0ZpbGV9JyBkb2VzIG5vdCBleGlzdCBvciBjYW5ub3QgYmUgcmVhZC5gXG4gICAgICAvLyApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIGxvYWQgdGhlIGNvbmZpZyBmaWxlIGZyb20gdGhlIGdpdmVuIHBhdGgsIGlmIHVubmNlc3N1ZnVsIGl0IHRyaWVzIGV4YWN0bHkgdHdvIGRpcmVjdG9yaWVzIGhpZ2hlclxuICAgKiBUaGlzIGlzIG5lY2Nlc3NhcnkgdG8gZW5zdXJlIGZqYWxsIGFwcHMgY2FuIGxvYWQgdGhlIGNvbmZpZyBmaWxlIHRoZW1zZWx2ZXNcbiAgICogQHBhcmFtIGNvbmZpZ0ZpbGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHRyeUxvYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGxldCBjb25maWcgPSBDb25maWcubG9hZENvbmZpZ0ZpbGUoY29uZmlnRmlsZSk7XG4gICAgaWYgKGNvbmZpZykgcmV0dXJuIGNvbmZpZztcblxuICAgIC8vIFRyeSBvbmUgZGlyZWN0b3J5IGhpZ2hlclxuICAgIHJldHVybiBDb25maWcubG9hZENvbmZpZ0ZpbGUoYC4uLy4uLyR7Y29uZmlnRmlsZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBmaWxlXG4gICAqXG4gICAqIEByZXR1cm5zIExvYWRlZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgbG9hZENvbmZpZygpOiBDb25maWcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByb290Q29uZmlnSnNvbiA9IENvbmZpZy50cnlMb2FkQ29uZmlnRmlsZShcbiAgICAgICAgXCJmamFsbC9mamFsbC1jb25maWcuanNvblwiXG4gICAgICApO1xuICAgICAgY29uc3QgZXhpc3RpbmdBY2NvdW50SnNvbiA9IENvbmZpZy50cnlMb2FkQ29uZmlnRmlsZShcbiAgICAgICAgXCJmamFsbC9hY2NvdW50cy1jb25maWcuanNvblwiXG4gICAgICApO1xuXG4gICAgICBjb25zdCByb290Q29uZmlnID0gcm9vdENvbmZpZ0pzb25cbiAgICAgICAgPyBKU09OLnBhcnNlKHJvb3RDb25maWdKc29uKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQWNjb3VudHNDb25maWcgPSBleGlzdGluZ0FjY291bnRKc29uXG4gICAgICAgID8gSlNPTi5wYXJzZShleGlzdGluZ0FjY291bnRKc29uKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIG5ldyBDb25maWcocm9vdENvbmZpZywgZXhpc3RpbmdBY2NvdW50c0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiVW5hYmxlIHRvIHBhcnNlIGNvbmZpZyBmaWxlLiBBYm9ydGluZy5cIiwgZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjb25maWd1cmF0aW9uIHRvIGZpbGVcbiAgICovXG4gIHNhdmVDb25maWcoKSB7XG4gICAgLy8gRW5zdXJlIGZqYWxsIGRpcmVjdG9yeSBleGlzdHNcbiAgICBmcy5ta2RpclN5bmMoXCJmamFsbFwiLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTsgLy8gcmVjdXJzaXZlOiB0cnVlIHByZXZlbnRzIGVycm9yIGlmIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0c1xuXG4gICAgLy8gSlNPTi1pZnkgY29uZmlnIGFuZCB3cml0ZSByb290IGNvbmZpZyB0byBmaWxlXG4gICAgY29uc3Qgcm9vdEpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnJvb3RDb25maWcsIG51bGwsIDIpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXCJmamFsbC9mamFsbC1jb25maWcuanNvblwiLCByb290SnNvblN0cmluZyk7XG5cbiAgICBjb25zdCBleGlzdGluZ0FjY291bnRzSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgdGhpcy5leGlzdGluZ0FjY291bnRzQ29uZmlnLFxuICAgICAgbnVsbCxcbiAgICAgIDJcbiAgICApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXCJmamFsbC9hY2NvdW50cy1jb25maWcuanNvblwiLCBleGlzdGluZ0FjY291bnRzSnNvblN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzY2hlbWEgdmVyc2lvbiB1c2VkIGZvciB0aGlzIGNvbmZpZyBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFNjaGVtYSBWZXJzaW9uXG4gICAqL1xuICBzZXRWZXJzaW9uKHZlcnNpb246IG51bWJlcikge1xuICAgIHRoaXMucm9vdENvbmZpZy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgc2VydmljZSB0byB0aGUgY29uZmlnIGZpbGVcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKi9cbiAgYWRkU2VydmljZShzZXJ2aWNlS2V5OiBzdHJpbmcsIGNvbmZpZzogU2VydmljZUNvbmZpZykge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSB0aGlzLnJvb3RDb25maWcuc2VydmljZXMgPSB7fTtcbiAgICB0aGlzLnJvb3RDb25maWcuc2VydmljZXNbc2VydmljZUtleV0gPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbmZpZyBvcHRpb25zIG9uIGEgcHJldmlvdXNseSBkZWZpbmVkIHNlcnZpY2VcbiAgICpcbiAgICogQHBhcmFtIHNlcnZpY2VLZXkgTmFtZS9rZXkgb2YgdGhlIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBzZXRcbiAgICovXG4gIHNldFNlcnZpY2VPcHRpb24oc2VydmljZUtleTogc3RyaW5nLCBjb25maWc6IFNlcnZpY2VDb25maWcpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5zZXJ2aWNlcykgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzID0ge307XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldO1xuICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldID0geyAuLi5zZXJ2aWNlLCAuLi5jb25maWcgfTtcbiAgfVxuXG4gIGdldFNlcnZpY2VDb25maWcoc2VydmljZUtleTogc3RyaW5nKTogU2VydmljZUNvbmZpZyB8IG51bGwge1xuICAgIGlmICghdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnNlcnZpY2VzW3NlcnZpY2VLZXldIHx8IG51bGw7XG4gIH1cblxuICBzZXRQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIpIHtcbiAgICB0aGlzLnJvb3RDb25maWcucHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgfVxuXG4gIGFkZFByb3ZpZGVyQWNjb3VudChhY2NvdW50OiBQcm92aWRlckFjY291bnQpIHtcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKVxuICAgICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMgPSBbXTtcblxuICAgIC8vIGVuc3VyZSBhY2NvdW50IG5hbWUgaXMgYWx3YXlzIGxvd2VyY2FzZVxuICAgIGFjY291bnQubmFtZSA9IGFjY291bnQubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMucHVzaChhY2NvdW50KTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVE9ETzogRml4IG51bGwgZXJyb3JcbiAgICBpZiAoIXRoaXMucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLnByb3ZpZGVyQWNjb3VudHMuZmluZChcbiAgICAgIChhY2NvdW50KSA9PlxuICAgICAgICBhY2NvdW50Lm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gYWNjb3VudE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRFeGlzdGluZ0FjY291bnRzKHJlZ2lvbjogc3RyaW5nKSB7XG4gICAgLy8gTWFrZSBBUEkgQ2FsbFxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBPcmdhbml6YXRpb25zQ2xpZW50KHtcbiAgICAgIHJlZ2lvbjogcmVnaW9uLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgTGlzdEFjY291bnRzQ29tbWFuZCh7XG4gICAgICBNYXhSZXN1bHRzOiBOdW1iZXIoXCIyMFwiKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnNlbmQocmVxdWVzdCk7XG4gICAgdGhpcy5leGlzdGluZ0FjY291bnRzQ29uZmlnID0gcmVzcG9uc2UuQWNjb3VudHMgfHwgW107XG4gIH1cblxuICBnZXRFeGlzdGluZ0FjY291bnRzKCk6IEFjY291bnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXhpc3RpbmdBY2NvdW50c0NvbmZpZztcbiAgfVxuXG4gIGFzeW5jIGdldEFXU0FjY291bnRJZCgpIHtcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHt9KTtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7fSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzdHNDbGllbnQuc2VuZChyZXF1ZXN0KTtcblxuICAgIHJldHVybiByZXNwb25zZT8uQWNjb3VudCB8fCB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export * from './Config';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Config"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnJzsiXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/util",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "Common utility methods",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",