@dxos/config 0.8.3 → 0.8.4-main.1068cf700f
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/lib/browser/chunk-WETPAQBA.mjs +147 -0
- package/dist/lib/browser/chunk-WETPAQBA.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZI5JXCYY.mjs +11 -0
- package/dist/lib/browser/chunk-ZI5JXCYY.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +138 -209
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/loaders/browser.mjs +98 -0
- package/dist/lib/browser/loaders/browser.mjs.map +7 -0
- package/dist/lib/browser/loaders/index.mjs +71 -0
- package/dist/lib/browser/loaders/index.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/plugin/browser.mjs +8 -0
- package/dist/lib/browser/plugin/browser.mjs.map +7 -0
- package/dist/lib/browser/plugin/index.mjs +116 -0
- package/dist/lib/browser/plugin/index.mjs.map +7 -0
- package/dist/lib/browser/savers/browser.mjs +35 -0
- package/dist/lib/browser/savers/browser.mjs.map +7 -0
- package/dist/lib/browser/savers/index.mjs +7 -0
- package/dist/lib/browser/savers/index.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FVCGIRXP.mjs +149 -0
- package/dist/lib/node-esm/chunk-FVCGIRXP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ODEKAZ4J.mjs +13 -0
- package/dist/lib/node-esm/chunk-ODEKAZ4J.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +135 -290
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/loaders/browser.mjs +100 -0
- package/dist/lib/node-esm/loaders/browser.mjs.map +7 -0
- package/dist/lib/node-esm/loaders/index.mjs +72 -0
- package/dist/lib/node-esm/loaders/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/plugin/browser.mjs +10 -0
- package/dist/lib/node-esm/plugin/browser.mjs.map +7 -0
- package/dist/lib/node-esm/plugin/index.mjs +117 -0
- package/dist/lib/node-esm/plugin/index.mjs.map +7 -0
- package/dist/lib/node-esm/savers/browser.mjs +37 -0
- package/dist/lib/node-esm/savers/browser.mjs.map +7 -0
- package/dist/lib/node-esm/savers/index.mjs +9 -0
- package/dist/lib/node-esm/savers/index.mjs.map +7 -0
- package/dist/plugin/node-esm/{chunk-PAFU3TJI.mjs → chunk-QQKWALKX.mjs} +33 -16
- package/dist/plugin/node-esm/chunk-QQKWALKX.mjs.map +7 -0
- package/dist/plugin/node-esm/esbuild-plugin.mjs +2 -2
- package/dist/plugin/node-esm/meta.json +1 -1
- package/dist/plugin/node-esm/rollup-plugin.mjs +2 -2
- package/dist/plugin/node-esm/vite-plugin.mjs +6 -6
- package/dist/plugin/node-esm/vite-plugin.mjs.map +3 -3
- package/dist/types/src/config-service.d.ts +19 -0
- package/dist/types/src/config-service.d.ts.map +1 -0
- package/dist/types/src/config.d.ts +0 -1
- package/dist/types/src/config.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/loaders/browser.d.ts +11 -15
- package/dist/types/src/loaders/browser.d.ts.map +1 -1
- package/dist/types/src/loaders/index.d.ts.map +1 -1
- package/dist/types/src/plugin/browser.d.ts +3 -0
- package/dist/types/src/plugin/browser.d.ts.map +1 -0
- package/dist/types/src/plugin/definitions.d.ts +3 -3
- package/dist/types/src/plugin/definitions.d.ts.map +1 -1
- package/dist/types/src/plugin/index.d.ts +1 -1
- package/dist/types/src/plugin/index.d.ts.map +1 -1
- package/dist/types/src/plugin/types.d.ts +4 -0
- package/dist/types/src/plugin/types.d.ts.map +1 -1
- package/dist/types/src/plugin/vite-plugin.d.ts +1 -1
- package/dist/types/src/plugin/vite-plugin.d.ts.map +1 -1
- package/dist/types/src/preset.d.ts +10 -0
- package/dist/types/src/preset.d.ts.map +1 -0
- package/dist/types/src/savers/browser.d.ts +2 -1
- package/dist/types/src/savers/browser.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +49 -15
- package/src/config-service.ts +118 -0
- package/src/config.ts +3 -5
- package/src/index.ts +5 -3
- package/src/loaders/{browser.js → browser.ts} +15 -9
- package/src/loaders/index.ts +3 -2
- package/src/plugin/browser.ts +11 -0
- package/src/plugin/definitions.ts +8 -6
- package/src/plugin/index.ts +1 -1
- package/src/plugin/types.ts +5 -0
- package/src/plugin/vite-plugin.ts +9 -5
- package/src/preset.ts +40 -0
- package/src/savers/{browser.js → browser.ts} +2 -2
- package/src/testing/build.js +1 -1
- package/README.yml +0 -1
- package/dist/lib/node/index.cjs +0 -357
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/plugin/node/chunk-SLXRWZWZ.cjs +0 -249
- package/dist/plugin/node/chunk-SLXRWZWZ.cjs.map +0 -7
- package/dist/plugin/node/esbuild-plugin.cjs +0 -45
- package/dist/plugin/node/esbuild-plugin.cjs.map +0 -7
- package/dist/plugin/node/meta.json +0 -1
- package/dist/plugin/node/rollup-plugin.cjs +0 -39
- package/dist/plugin/node/rollup-plugin.cjs.map +0 -7
- package/dist/plugin/node/vite-plugin.cjs +0 -50
- package/dist/plugin/node/vite-plugin.cjs.map +0 -7
- package/dist/plugin/node-esm/chunk-PAFU3TJI.mjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/config.ts", "../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\n// TODO(burdon): Why is this exported? (Rename).\nexport * as defs from '@dxos/protocols/proto/dxos/config';\n\nexport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nexport * from './config';\nexport * from './loaders';\nexport * from '
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["defs", "
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/config-service.ts", "../../../src/preset.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\n// TODO(burdon): Why is this exported? (Rename).\nexport * as defs from '@dxos/protocols/proto/dxos/config';\n\nexport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nexport * from './config';\nexport * from './config-service';\nexport * from '#loaders';\nexport * from '#savers';\nexport * from '#plugin';\nexport * from './types';\nexport * from './preset';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { dirname } from 'node:path';\n\nimport * as FileSystem from '@effect/platform/FileSystem';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Yaml from 'yaml';\n\nimport { DX_CONFIG, DX_DATA } from '@dxos/client-protocol';\nimport { getProfilePath } from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\n\nimport { Config } from './config';\n\nexport const memoryConfig = new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n },\n },\n});\n\nexport const defaultConfig = new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n storage: {\n persistent: true,\n },\n },\n services: {\n edge: {\n url: 'wss://edge-production.dxos.workers.dev/',\n },\n iceProviders: [\n {\n urls: 'https://edge-production.dxos.workers.dev/ice',\n },\n ],\n ai: {\n server: 'https://ai-service.dxos.workers.dev',\n },\n ipfs: {\n server: 'https://api.ipfs.dxos.network/api/v0',\n gateway: 'https://gateway.ipfs.dxos.network/ipfs',\n },\n },\n },\n});\n\nexport class ConfigService extends Context.Tag('ConfigService')<ConfigService, Config>() {\n static layerMemory = Layer.effect(ConfigService, Effect.succeed(memoryConfig));\n\n static fromConfig = (config: Config) => Layer.succeed(ConfigService, config);\n\n static load = (args: { config: Option.Option<string>; profile: string }) => {\n const defaultConfigPath = `${getProfilePath(DX_CONFIG, args.profile)}.yml`;\n return Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const configPath = Option.getOrElse(args.config, () => defaultConfigPath);\n const configContent = yield* fs.readFileString(configPath);\n const configValues = Yaml.parse(configContent);\n return ConfigService.of(new Config(configValues, profileBuiltinDefaults(args.profile).values));\n }).pipe(\n // If the config file doesn't exist, create it.\n Effect.catchTag('SystemError', () =>\n Effect.gen(function* () {\n const configValues = defaultConfig.values;\n const fs = yield* FileSystem.FileSystem;\n yield* fs.makeDirectory(dirname(defaultConfigPath), { recursive: true });\n yield* fs.writeFileString(defaultConfigPath, Yaml.stringify(configValues));\n\n return ConfigService.of(new Config(configValues));\n }),\n ),\n );\n };\n}\n\n/**\n * Default config for a profile.\n * Always merged with the default config.\n */\nconst profileBuiltinDefaults = (profile: string) => {\n invariant(!profile.endsWith('.yml'));\n\n return new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n storage: {\n persistent: true,\n dataRoot: getProfilePath(DX_DATA, profile),\n },\n },\n },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\n\nimport { Config } from './config';\n\nexport type ConfigPresetOptions = {\n /**\n * Edge service.\n * @default main\n */\n edge?: 'local' | 'dev' | 'main' | 'production';\n};\n\nexport const configPreset = ({ edge = 'main' }: ConfigPresetOptions = {}) =>\n new Config({\n version: 1,\n runtime: {\n client: {\n edgeFeatures: {\n signaling: true,\n echoReplicator: true,\n feedReplicator: true,\n },\n },\n services: {\n edge: {\n url: Match.value(edge).pipe(\n Match.when('local', () => 'http://localhost:8787'),\n Match.when('dev', () => 'https://edge.dxos.workers.dev'),\n Match.when('main', () => 'https://edge-main.dxos.workers.dev'),\n Match.when('production', () => 'https://edge-production.dxos.workers.dev'),\n Match.exhaustive,\n ),\n },\n },\n },\n });\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defs", "dirname", "FileSystem", "Context", "Effect", "Layer", "Option", "Yaml", "DX_CONFIG", "DX_DATA", "getProfilePath", "invariant", "memoryConfig", "Config", "runtime", "client", "edgeFeatures", "echoReplicator", "feedReplicator", "signaling", "agents", "defaultConfig", "storage", "persistent", "services", "edge", "url", "iceProviders", "urls", "ai", "server", "ipfs", "gateway", "ConfigService", "Tag", "layerMemory", "effect", "succeed", "fromConfig", "config", "load", "args", "defaultConfigPath", "getProfilePath", "DX_CONFIG", "profile", "gen", "fs", "FileSystem", "configPath", "getOrElse", "configContent", "readFileString", "configValues", "parse", "of", "profileBuiltinDefaults", "values", "pipe", "catchTag", "makeDirectory", "dirname", "recursive", "writeFileString", "stringify", "invariant", "endsWith", "dataRoot", "DX_DATA", "Match", "configPreset", "edge", "Config", "version", "runtime", "client", "edgeFeatures", "signaling", "echoReplicator", "feedReplicator", "services", "url", "value", "pipe", "when", "exhaustive"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// src/loaders/browser.ts
|
|
2
|
+
import localforage from "localforage";
|
|
3
|
+
import { log } from "@dxos/log";
|
|
4
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/loaders/browser.ts";
|
|
5
|
+
var CONFIG_ENDPOINT = "/.well-known/dx/config";
|
|
6
|
+
var Profile = (_profile = "default") => ({});
|
|
7
|
+
var Local = () => {
|
|
8
|
+
return typeof __CONFIG_LOCAL__ !== "undefined" ? __CONFIG_LOCAL__ : {};
|
|
9
|
+
};
|
|
10
|
+
var Dynamics = async () => {
|
|
11
|
+
const { publicUrl = "", dynamic } = __DXOS_CONFIG__;
|
|
12
|
+
if (!dynamic) {
|
|
13
|
+
log("dynamics disabled", void 0, {
|
|
14
|
+
F: __dxlog_file,
|
|
15
|
+
L: 28,
|
|
16
|
+
S: void 0,
|
|
17
|
+
C: (f, a) => f(...a)
|
|
18
|
+
});
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
log("fetching config...", {
|
|
22
|
+
publicUrl
|
|
23
|
+
}, {
|
|
24
|
+
F: __dxlog_file,
|
|
25
|
+
L: 32,
|
|
26
|
+
S: void 0,
|
|
27
|
+
C: (f, a) => f(...a)
|
|
28
|
+
});
|
|
29
|
+
return await fetch(`${publicUrl}${CONFIG_ENDPOINT}`).then((res) => res.json()).catch((error) => {
|
|
30
|
+
log.warn("Failed to fetch dynamic config.", error, {
|
|
31
|
+
F: __dxlog_file,
|
|
32
|
+
L: 36,
|
|
33
|
+
S: void 0,
|
|
34
|
+
C: (f, a) => f(...a)
|
|
35
|
+
});
|
|
36
|
+
return {};
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
var Envs = (_basePath) => {
|
|
40
|
+
return typeof __CONFIG_ENVS__ !== "undefined" ? __CONFIG_ENVS__ : {};
|
|
41
|
+
};
|
|
42
|
+
var Defaults = (_basePath) => {
|
|
43
|
+
return typeof __CONFIG_DEFAULTS__ !== "undefined" ? __CONFIG_DEFAULTS__ : {};
|
|
44
|
+
};
|
|
45
|
+
var Storage = async () => {
|
|
46
|
+
try {
|
|
47
|
+
const config = await localforage.getItem("dxos.org/settings/config");
|
|
48
|
+
if (config) {
|
|
49
|
+
return config;
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
log.warn("Failed to load config", {
|
|
53
|
+
err
|
|
54
|
+
}, {
|
|
55
|
+
F: __dxlog_file,
|
|
56
|
+
L: 59,
|
|
57
|
+
S: void 0,
|
|
58
|
+
C: (f, a) => f(...a)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return {};
|
|
62
|
+
};
|
|
63
|
+
var Remote = (target, authenticationToken) => {
|
|
64
|
+
if (!target) {
|
|
65
|
+
return {};
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const url = new URL(target);
|
|
69
|
+
const protocol = url.protocol.slice(0, -1);
|
|
70
|
+
return {
|
|
71
|
+
runtime: {
|
|
72
|
+
client: {
|
|
73
|
+
// TODO(burdon): Remove vault.html.
|
|
74
|
+
remoteSource: url.origin + (protocol.startsWith("http") ? "/vault.html" : ""),
|
|
75
|
+
remoteSourceAuthenticationToken: authenticationToken
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
} catch (err) {
|
|
80
|
+
log.catch(err, void 0, {
|
|
81
|
+
F: __dxlog_file,
|
|
82
|
+
L: 83,
|
|
83
|
+
S: void 0,
|
|
84
|
+
C: (f, a) => f(...a)
|
|
85
|
+
});
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export {
|
|
90
|
+
Defaults,
|
|
91
|
+
Dynamics,
|
|
92
|
+
Envs,
|
|
93
|
+
Local,
|
|
94
|
+
Profile,
|
|
95
|
+
Remote,
|
|
96
|
+
Storage
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/loaders/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\n/* THIS FILE WILL BE LOADED BY CONTEXT REPLACEMENT PLUGIN IN BROWSER ENVS. */\n\nimport localforage from 'localforage';\n\nimport { log } from '@dxos/log';\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\ndeclare const __DXOS_CONFIG__: { publicUrl?: string; dynamic?: boolean };\ndeclare const __CONFIG_ENVS__: Partial<ConfigProto> | undefined;\ndeclare const __CONFIG_DEFAULTS__: Partial<ConfigProto> | undefined;\ndeclare const __CONFIG_LOCAL__: Partial<ConfigProto> | undefined;\n\nconst CONFIG_ENDPOINT = '/.well-known/dx/config';\n\nexport const Profile = (_profile = 'default'): Partial<ConfigProto> => ({});\n\nexport const Local = (): Partial<ConfigProto> => {\n return typeof __CONFIG_LOCAL__ !== 'undefined' ? __CONFIG_LOCAL__ : {};\n};\n\nexport const Dynamics = async (): Promise<Partial<ConfigProto>> => {\n const { publicUrl = '', dynamic } = __DXOS_CONFIG__;\n if (!dynamic) {\n log('dynamics disabled');\n return {};\n }\n\n log('fetching config...', { publicUrl });\n return await fetch(`${publicUrl}${CONFIG_ENDPOINT}`)\n .then((res) => res.json())\n .catch((error) => {\n log.warn('Failed to fetch dynamic config.', error);\n return {};\n });\n};\n\nexport const Envs = (_basePath?: string): Partial<ConfigProto> => {\n return typeof __CONFIG_ENVS__ !== 'undefined' ? __CONFIG_ENVS__ : {};\n};\n\nexport const Defaults = (_basePath?: string): Partial<ConfigProto> => {\n return typeof __CONFIG_DEFAULTS__ !== 'undefined' ? __CONFIG_DEFAULTS__ : {};\n};\n\n/**\n * Settings config from browser storage.\n */\nexport const Storage = async (): Promise<Partial<ConfigProto>> => {\n try {\n const config = await localforage.getItem<Partial<ConfigProto>>('dxos.org/settings/config');\n if (config) {\n return config;\n }\n } catch (err) {\n log.warn('Failed to load config', { err });\n }\n return {};\n};\n\nexport const Remote = (target: string | undefined, authenticationToken?: string): Partial<ConfigProto> => {\n if (!target) {\n return {};\n }\n\n try {\n const url = new URL(target);\n const protocol = url.protocol.slice(0, -1);\n\n return {\n runtime: {\n client: {\n // TODO(burdon): Remove vault.html.\n remoteSource: url.origin + (protocol.startsWith('http') ? '/vault.html' : ''),\n remoteSourceAuthenticationToken: authenticationToken,\n },\n },\n };\n } catch (err) {\n log.catch(err);\n return {};\n }\n};\n"],
|
|
5
|
+
"mappings": ";AAMA,OAAOA,iBAAiB;AAExB,SAASC,WAAW;AAJuD,IAAA,eAAA;AAY3E,IAAMC,kBAAkB;AAEjB,IAAMC,UAAU,CAACC,WAAW,eAAqC,CAAC;AAElE,IAAMC,QAAQ,MAAA;AACnB,SAAO,OAAOC,qBAAqB,cAAcA,mBAAmB,CAAC;AACvE;AAEO,IAAMC,WAAW,YAAA;AACtB,QAAM,EAAEC,YAAY,IAAIC,QAAO,IAAKC;AACpC,MAAI,CAACD,SAAS;AACZR,QAAI,qBAAA,QAAA;;;;;;AACJ,WAAO,CAAC;EACV;AAEAA,MAAI,sBAAsB;IAAEO;EAAU,GAAA;;;;;;AACtC,SAAO,MAAMG,MAAM,GAAGH,SAAAA,GAAYN,eAAAA,EAAiB,EAChDU,KAAK,CAACC,QAAQA,IAAIC,KAAI,CAAA,EACtBC,MAAM,CAACC,UAAAA;AACNf,QAAIgB,KAAK,mCAAmCD,OAAAA;;;;;;AAC5C,WAAO,CAAC;EACV,CAAA;AACJ;AAEO,IAAME,OAAO,CAACC,cAAAA;AACnB,SAAO,OAAOC,oBAAoB,cAAcA,kBAAkB,CAAC;AACrE;AAEO,IAAMC,WAAW,CAACF,cAAAA;AACvB,SAAO,OAAOG,wBAAwB,cAAcA,sBAAsB,CAAC;AAC7E;AAKO,IAAMC,UAAU,YAAA;AACrB,MAAI;AACF,UAAMC,SAAS,MAAMxB,YAAYyB,QAA8B,0BAAA;AAC/D,QAAID,QAAQ;AACV,aAAOA;IACT;EACF,SAASE,KAAK;AACZzB,QAAIgB,KAAK,yBAAyB;MAAES;IAAI,GAAA;;;;;;EAC1C;AACA,SAAO,CAAC;AACV;AAEO,IAAMC,SAAS,CAACC,QAA4BC,wBAAAA;AACjD,MAAI,CAACD,QAAQ;AACX,WAAO,CAAC;EACV;AAEA,MAAI;AACF,UAAME,MAAM,IAAIC,IAAIH,MAAAA;AACpB,UAAMI,WAAWF,IAAIE,SAASC,MAAM,GAAG,EAAC;AAExC,WAAO;MACLC,SAAS;QACPC,QAAQ;;UAENC,cAAcN,IAAIO,UAAUL,SAASM,WAAW,MAAA,IAAU,gBAAgB;UAC1EC,iCAAiCV;QACnC;MACF;IACF;EACF,SAASH,KAAK;AACZzB,QAAIc,MAAMW,KAAAA,QAAAA;;;;;;AACV,WAAO,CAAC;EACV;AACF;",
|
|
6
|
+
"names": ["localforage", "log", "CONFIG_ENDPOINT", "Profile", "_profile", "Local", "__CONFIG_LOCAL__", "Dynamics", "publicUrl", "dynamic", "__DXOS_CONFIG__", "fetch", "then", "res", "json", "catch", "error", "warn", "Envs", "_basePath", "__CONFIG_ENVS__", "Defaults", "__CONFIG_DEFAULTS__", "Storage", "config", "getItem", "err", "Remote", "target", "authenticationToken", "url", "URL", "protocol", "slice", "runtime", "client", "remoteSource", "origin", "startsWith", "remoteSourceAuthenticationToken"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FILE_DEFAULTS,
|
|
3
|
+
FILE_ENVS
|
|
4
|
+
} from "../chunk-ZI5JXCYY.mjs";
|
|
5
|
+
import {
|
|
6
|
+
mapFromKeyValues
|
|
7
|
+
} from "../chunk-WETPAQBA.mjs";
|
|
8
|
+
|
|
9
|
+
// src/loaders/index.ts
|
|
10
|
+
import fs from "@dxos/node-std/fs";
|
|
11
|
+
import path from "@dxos/node-std/path";
|
|
12
|
+
import { parse } from "yaml";
|
|
13
|
+
import { log } from "@dxos/log";
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/loaders/index.ts";
|
|
15
|
+
var DEFAULT_BASE_PATH = path.resolve(process.cwd(), "config");
|
|
16
|
+
var maybeLoadFile = (file) => {
|
|
17
|
+
try {
|
|
18
|
+
return parse(fs.readFileSync(file, {
|
|
19
|
+
encoding: "utf8"
|
|
20
|
+
}));
|
|
21
|
+
} catch (err) {
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var Profile = (profile = "default") => {
|
|
25
|
+
const configFile = path.join(process.env.HOME ?? "~", `.config/dx/profile/${profile}.yml`);
|
|
26
|
+
return maybeLoadFile(configFile);
|
|
27
|
+
};
|
|
28
|
+
var Local = () => ({});
|
|
29
|
+
var Dynamics = () => ({});
|
|
30
|
+
var Envs = (basePath = DEFAULT_BASE_PATH) => {
|
|
31
|
+
const content = maybeLoadFile(path.resolve(basePath, FILE_ENVS));
|
|
32
|
+
return content ? mapFromKeyValues(content, process.env) : {};
|
|
33
|
+
};
|
|
34
|
+
var Defaults = (basePath = DEFAULT_BASE_PATH) => maybeLoadFile(path.resolve(basePath, FILE_DEFAULTS)) ?? {};
|
|
35
|
+
var Storage = async () => ({});
|
|
36
|
+
var Remote = (target, authenticationToken) => {
|
|
37
|
+
if (!target) {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const url = new URL(target);
|
|
42
|
+
const protocol = url.protocol.slice(0, -1);
|
|
43
|
+
return {
|
|
44
|
+
runtime: {
|
|
45
|
+
client: {
|
|
46
|
+
// TODO(burdon): Remove vault.html.
|
|
47
|
+
remoteSource: url.origin + (protocol.startsWith("http") ? "/vault.html" : ""),
|
|
48
|
+
remoteSourceAuthenticationToken: authenticationToken
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
} catch (err) {
|
|
53
|
+
log.catch(err, void 0, {
|
|
54
|
+
F: __dxlog_file,
|
|
55
|
+
L: 88,
|
|
56
|
+
S: void 0,
|
|
57
|
+
C: (f, a) => f(...a)
|
|
58
|
+
});
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
export {
|
|
63
|
+
Defaults,
|
|
64
|
+
Dynamics,
|
|
65
|
+
Envs,
|
|
66
|
+
Local,
|
|
67
|
+
Profile,
|
|
68
|
+
Remote,
|
|
69
|
+
Storage
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/loaders/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { parse } from 'yaml';\n\nimport { log } from '@dxos/log';\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nimport { mapFromKeyValues } from '../config';\nimport { FILE_DEFAULTS, FILE_ENVS } from '../types';\n\n// TODO(burdon): Move code out of index file.\n\nconst DEFAULT_BASE_PATH = path.resolve(process.cwd(), 'config');\n\nconst maybeLoadFile = (file: string): any => {\n try {\n return parse(fs.readFileSync(file, { encoding: 'utf8' }));\n } catch (err: any) {\n // Ignored.\n }\n};\n\n//\n// NOTE: Export LocalStorage and Dynamics for typescript to typecheck browser code (see ConfigPlugin).\n//\n\n/**\n * Profile\n */\nexport const Profile = (profile = 'default') => {\n const configFile = path.join(process.env.HOME ?? '~', `.config/dx/profile/${profile}.yml`);\n return maybeLoadFile(configFile) as ConfigProto;\n};\n\n/**\n * Development config.\n */\n// TODO(burdon): Rename or reconcile with Profile above?\nexport const Local = (): Partial<ConfigProto> => ({});\n\n/**\n * Provided dynamically by server.\n */\nexport const Dynamics = (): Partial<ConfigProto> => ({});\n\n/**\n * ENV variable (key/value) map.\n */\nexport const Envs = (basePath = DEFAULT_BASE_PATH): Partial<ConfigProto> => {\n const content = maybeLoadFile(path.resolve(basePath, FILE_ENVS));\n return content ? mapFromKeyValues(content, process.env) : {};\n};\n\n/**\n * JSON config.\n */\nexport const Defaults = (basePath = DEFAULT_BASE_PATH): Partial<ConfigProto> =>\n maybeLoadFile(path.resolve(basePath, FILE_DEFAULTS)) ?? {};\n\n/**\n * Load config from storage.\n */\nexport const Storage = async (): Promise<Partial<ConfigProto>> => ({});\n\nexport const Remote = (target: string | undefined, authenticationToken?: string): Partial<ConfigProto> => {\n if (!target) {\n return {};\n }\n\n try {\n const url = new URL(target);\n const protocol = url.protocol.slice(0, -1);\n return {\n runtime: {\n client: {\n // TODO(burdon): Remove vault.html.\n remoteSource: url.origin + (protocol.startsWith('http') ? '/vault.html' : ''),\n remoteSourceAuthenticationToken: authenticationToken,\n },\n },\n };\n } catch (err) {\n log.catch(err);\n return {};\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,OAAOA,QAAQ;AACf,OAAOC,UAAU;AAEjB,SAASC,aAAa;AAEtB,SAASC,WAAW;;AAQpB,IAAMC,oBAAoBC,KAAKC,QAAQC,QAAQC,IAAG,GAAI,QAAA;AAEtD,IAAMC,gBAAgB,CAACC,SAAAA;AACrB,MAAI;AACF,WAAOC,MAAMC,GAAGC,aAAaH,MAAM;MAAEI,UAAU;IAAO,CAAA,CAAA;EACxD,SAASC,KAAU;EAEnB;AACF;AASO,IAAMC,UAAU,CAACC,UAAU,cAAS;AACzC,QAAMC,aAAab,KAAKc,KAAKZ,QAAQa,IAAIC,QAAQ,KAAK,sBAAsBJ,OAAAA,MAAa;AACzF,SAAOR,cAAcS,UAAAA;AACvB;AAMO,IAAMI,QAAQ,OAA6B,CAAC;AAK5C,IAAMC,WAAW,OAA6B,CAAC;AAK/C,IAAMC,OAAO,CAACC,WAAWrB,sBAAiB;AAC/C,QAAMsB,UAAUjB,cAAcJ,KAAKC,QAAQmB,UAAUE,SAAAA,CAAAA;AACrD,SAAOD,UAAUE,iBAAiBF,SAASnB,QAAQa,GAAG,IAAI,CAAC;AAC7D;AAKO,IAAMS,WAAW,CAACJ,WAAWrB,sBAClCK,cAAcJ,KAAKC,QAAQmB,UAAUK,aAAAA,CAAAA,KAAmB,CAAC;AAKpD,IAAMC,UAAU,aAA4C,CAAC;AAE7D,IAAMC,SAAS,CAACC,QAA4BC,wBAAAA;AACjD,MAAI,CAACD,QAAQ;AACX,WAAO,CAAC;EACV;AAEA,MAAI;AACF,UAAME,MAAM,IAAIC,IAAIH,MAAAA;AACpB,UAAMI,WAAWF,IAAIE,SAASC,MAAM,GAAG,EAAC;AACxC,WAAO;MACLC,SAAS;QACPC,QAAQ;;UAENC,cAAcN,IAAIO,UAAUL,SAASM,WAAW,MAAA,IAAU,gBAAgB;UAC1EC,iCAAiCV;QACnC;MACF;IACF;EACF,SAASnB,KAAK;AACZ8B,QAAIC,MAAM/B,KAAAA,QAAAA;;;;;;AACV,WAAO,CAAC;EACV;AACF;",
|
|
6
|
+
"names": ["fs", "path", "parse", "log", "DEFAULT_BASE_PATH", "path", "resolve", "process", "cwd", "maybeLoadFile", "file", "parse", "fs", "readFileSync", "encoding", "err", "Profile", "profile", "configFile", "join", "env", "HOME", "Local", "Dynamics", "Envs", "basePath", "content", "FILE_ENVS", "mapFromKeyValues", "Defaults", "FILE_DEFAULTS", "Storage", "Remote", "target", "authenticationToken", "url", "URL", "protocol", "slice", "runtime", "client", "remoteSource", "origin", "startsWith", "remoteSourceAuthenticationToken", "log", "catch"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"
|
|
1
|
+
{"inputs":{"src/config.ts":{"bytes":15994,"imports":[{"path":"boolean","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"lodash.ismatch","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/config-service.ts":{"bytes":12105,"imports":[{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@effect/platform/FileSystem","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/client-protocol","kind":"import-statement","external":true},{"path":"@dxos/client-protocol","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"}],"format":"esm"},"src/types.ts":{"bytes":2735,"imports":[],"format":"esm"},"src/preset.ts":{"bytes":3324,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"}],"format":"esm"},"src/index.ts":{"bytes":1397,"imports":[{"path":"@dxos/protocols/proto/dxos/config","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"},{"path":"src/config-service.ts","kind":"import-statement","original":"./config-service"},{"path":"#loaders","kind":"import-statement","external":true},{"path":"#savers","kind":"import-statement","external":true},{"path":"#plugin","kind":"import-statement","external":true},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/preset.ts","kind":"import-statement","original":"./preset"}],"format":"esm"},"src/loaders/index.ts":{"bytes":8224,"imports":[{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"../config"},{"path":"src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/loaders/browser.ts":{"bytes":8612,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/savers/index.ts":{"bytes":666,"imports":[],"format":"esm"},"src/savers/browser.ts":{"bytes":2707,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/plugin/definitions.ts":{"bytes":12031,"imports":[{"path":"@dxos/node-std/child_process","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"../config"}],"format":"esm"},"src/plugin/index.ts":{"bytes":504,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/browser.ts":{"bytes":1003,"imports":[],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8218},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-ZI5JXCYY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-WETPAQBA.mjs","kind":"import-statement"},{"path":"@dxos/protocols/proto/dxos/config","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@effect/platform/FileSystem","kind":"import-statement","external":true},{"path":"effect/Context","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/client-protocol","kind":"import-statement","external":true},{"path":"@dxos/client-protocol","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"#loaders","kind":"import-statement","external":true},{"path":"#savers","kind":"import-statement","external":true},{"path":"#plugin","kind":"import-statement","external":true},{"path":"effect/Match","kind":"import-statement","external":true}],"exports":["Config","ConfigResource","ConfigService","FILE_DEFAULTS","FILE_DYNAMICS","FILE_ENVS","configPreset","defaultConfig","defs","mapFromKeyValues","mapToKeyValues","memoryConfig","validateConfig"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":135},"src/config-service.ts":{"bytesInOutput":3216},"src/preset.ts":{"bytesInOutput":617}},"bytes":4506},"dist/lib/browser/loaders/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4121},"dist/lib/browser/loaders/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-ZI5JXCYY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-WETPAQBA.mjs","kind":"import-statement"},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Defaults","Dynamics","Envs","Local","Profile","Remote","Storage"],"entryPoint":"src/loaders/index.ts","inputs":{"src/loaders/index.ts":{"bytesInOutput":1567}},"bytes":1841},"dist/lib/browser/chunk-ZI5JXCYY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1813},"dist/lib/browser/chunk-ZI5JXCYY.mjs":{"imports":[],"exports":["FILE_DEFAULTS","FILE_DYNAMICS","FILE_ENVS"],"inputs":{"src/types.ts":{"bytesInOutput":102}},"bytes":221},"dist/lib/browser/loaders/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4405},"dist/lib/browser/loaders/browser.mjs":{"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Defaults","Dynamics","Envs","Local","Profile","Remote","Storage"],"entryPoint":"src/loaders/browser.ts","inputs":{"src/loaders/browser.ts":{"bytesInOutput":2148}},"bytes":2295},"dist/lib/browser/savers/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":358},"dist/lib/browser/savers/index.mjs":{"imports":[],"exports":["SaveConfig"],"entryPoint":"src/savers/index.ts","inputs":{"src/savers/index.ts":{"bytesInOutput":35}},"bytes":118},"dist/lib/browser/savers/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1280},"dist/lib/browser/savers/browser.mjs":{"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SaveConfig"],"entryPoint":"src/savers/browser.ts","inputs":{"src/savers/browser.ts":{"bytesInOutput":747}},"bytes":834},"dist/lib/browser/plugin/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5718},"dist/lib/browser/plugin/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-WETPAQBA.mjs","kind":"import-statement"},{"path":"@dxos/node-std/child_process","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"pkg-up","kind":"import-statement","external":true},{"path":"yaml","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["definitions"],"entryPoint":"src/plugin/index.ts","inputs":{"src/plugin/definitions.ts":{"bytesInOutput":3216},"src/plugin/index.ts":{"bytesInOutput":0}},"bytes":3367},"dist/lib/browser/chunk-WETPAQBA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7879},"dist/lib/browser/chunk-WETPAQBA.mjs":{"imports":[{"path":"boolean","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"lodash.ismatch","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Config","ConfigResource","mapFromKeyValues","mapToKeyValues","validateConfig"],"inputs":{"src/config.ts":{"bytesInOutput":4061}},"bytes":4218},"dist/lib/browser/plugin/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":494},"dist/lib/browser/plugin/browser.mjs":{"imports":[],"exports":["definitions"],"entryPoint":"src/plugin/browser.ts","inputs":{"src/plugin/browser.ts":{"bytesInOutput":110}},"bytes":198}}}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/plugin/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\n// Browser stub for plugin module - plugins are build-time only.\n\nexport type * from './types';\n\nexport const definitions = (): Record<string, unknown> => {\n throw new Error('Config plugin definitions are not available in the browser');\n};\n"],
|
|
5
|
+
"mappings": ";AAQO,IAAMA,cAAc,MAAA;AACzB,QAAM,IAAIC,MAAM,4DAAA;AAClB;",
|
|
6
|
+
"names": ["definitions", "Error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import {
|
|
2
|
+
mapFromKeyValues
|
|
3
|
+
} from "../chunk-WETPAQBA.mjs";
|
|
4
|
+
|
|
5
|
+
// src/plugin/definitions.ts
|
|
6
|
+
import { execSync } from "@dxos/node-std/child_process";
|
|
7
|
+
import { readFileSync } from "@dxos/node-std/fs";
|
|
8
|
+
import { resolve } from "@dxos/node-std/path";
|
|
9
|
+
import pkgUp from "pkg-up";
|
|
10
|
+
import { parse } from "yaml";
|
|
11
|
+
import { invariant } from "@dxos/invariant";
|
|
12
|
+
import { log } from "@dxos/log";
|
|
13
|
+
import { setDeep } from "@dxos/util";
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/plugin/definitions.ts";
|
|
15
|
+
var CWD = process.cwd();
|
|
16
|
+
var definitions = ({ configPath, envPath, devPath, mode = "development", publicUrl = "", env }) => {
|
|
17
|
+
const KEYS_TO_FILE = {
|
|
18
|
+
__CONFIG_DEFAULTS__: configPath?.length ? configPath : resolve(CWD, "dx.yml"),
|
|
19
|
+
__CONFIG_ENVS__: envPath?.length ? envPath : resolve(CWD, "dx-env.yml")
|
|
20
|
+
};
|
|
21
|
+
if (mode !== "production") {
|
|
22
|
+
KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? resolve(CWD, "dx-local.yml");
|
|
23
|
+
}
|
|
24
|
+
return Object.entries(KEYS_TO_FILE).reduce((prev, [key, value]) => {
|
|
25
|
+
invariant(key, void 0, {
|
|
26
|
+
F: __dxlog_file,
|
|
27
|
+
L: 40,
|
|
28
|
+
S: void 0,
|
|
29
|
+
A: [
|
|
30
|
+
"key",
|
|
31
|
+
""
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
let content = {};
|
|
35
|
+
try {
|
|
36
|
+
content = parse(readFileSync(value, "utf-8"));
|
|
37
|
+
if (key === "__CONFIG_ENVS__") {
|
|
38
|
+
content = mapFromKeyValues(content, process.env);
|
|
39
|
+
}
|
|
40
|
+
if (key === "__CONFIG_DEFAULTS__") {
|
|
41
|
+
Object.entries(process.env).forEach(([key2, value2]) => {
|
|
42
|
+
if (key2.startsWith("DX_") || env?.includes(key2)) {
|
|
43
|
+
setDeep(content, [
|
|
44
|
+
"runtime",
|
|
45
|
+
"app",
|
|
46
|
+
"env",
|
|
47
|
+
key2
|
|
48
|
+
], value2);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
53
|
+
const commitHash = process.env.DX_COMMIT_HASH ?? execSync("git rev-parse --short HEAD", {
|
|
54
|
+
encoding: "utf-8"
|
|
55
|
+
}).replace("\n", "");
|
|
56
|
+
const packagePath = pkgUp.sync();
|
|
57
|
+
const packageJson = packagePath && JSON.parse(readFileSync(packagePath, "utf-8"));
|
|
58
|
+
setDeep(content, [
|
|
59
|
+
"runtime",
|
|
60
|
+
"app",
|
|
61
|
+
"build",
|
|
62
|
+
"timestamp"
|
|
63
|
+
], timestamp);
|
|
64
|
+
setDeep(content, [
|
|
65
|
+
"runtime",
|
|
66
|
+
"app",
|
|
67
|
+
"build",
|
|
68
|
+
"commitHash"
|
|
69
|
+
], commitHash);
|
|
70
|
+
setDeep(content, [
|
|
71
|
+
"runtime",
|
|
72
|
+
"app",
|
|
73
|
+
"build",
|
|
74
|
+
"version"
|
|
75
|
+
], packageJson?.version);
|
|
76
|
+
} catch {
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch (err) {
|
|
80
|
+
if (err.message.includes("YAMLException")) {
|
|
81
|
+
log.error(`Failed to parse file ${value}:`, err, {
|
|
82
|
+
F: __dxlog_file,
|
|
83
|
+
L: 73,
|
|
84
|
+
S: void 0,
|
|
85
|
+
C: (f, a) => f(...a)
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
log(`Failed to load file ${value}:`, err, {
|
|
89
|
+
F: __dxlog_file,
|
|
90
|
+
L: 75,
|
|
91
|
+
S: void 0,
|
|
92
|
+
C: (f, a) => f(...a)
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (key === "__CONFIG_DEFAULTS__") {
|
|
96
|
+
throw new Error(`Failed to load default config file from ${value}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
...prev,
|
|
101
|
+
[key]: content
|
|
102
|
+
};
|
|
103
|
+
}, {
|
|
104
|
+
__CONFIG_DEFAULTS__: {},
|
|
105
|
+
__CONFIG_ENVS__: {},
|
|
106
|
+
__CONFIG_LOCAL__: {},
|
|
107
|
+
__DXOS_CONFIG__: {
|
|
108
|
+
dynamic: mode === "production",
|
|
109
|
+
publicUrl
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
definitions
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/plugin/definitions.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { execSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nimport pkgUp from 'pkg-up';\nimport { parse } from 'yaml';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { setDeep } from '@dxos/util';\n\nimport { mapFromKeyValues } from '../config';\n\nimport { type ConfigPluginOpts } from './types';\n\nconst CWD = process.cwd();\n\nexport const definitions = ({\n configPath,\n envPath,\n devPath,\n mode = process.env.NODE_ENV,\n publicUrl = '',\n env,\n}: ConfigPluginOpts) => {\n const KEYS_TO_FILE = {\n __CONFIG_DEFAULTS__: configPath?.length ? configPath : resolve(CWD, 'dx.yml'),\n __CONFIG_ENVS__: envPath?.length ? envPath : resolve(CWD, 'dx-env.yml'),\n } as { [key: string]: string };\n if (mode !== 'production') {\n KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? resolve(CWD, 'dx-local.yml');\n }\n\n return Object.entries(KEYS_TO_FILE).reduce(\n (prev, [key, value]) => {\n invariant(key);\n let content = {};\n try {\n content = parse(readFileSync(value, 'utf-8')) as any;\n\n // Map environment variables to config values.\n if (key === '__CONFIG_ENVS__') {\n content = mapFromKeyValues(content, process.env);\n }\n\n if (key === '__CONFIG_DEFAULTS__') {\n // Load app environment variables into default config.\n Object.entries(process.env).forEach(([key, value]) => {\n if (key.startsWith('DX_') || env?.includes(key)) {\n setDeep(content, ['runtime', 'app', 'env', key], value);\n }\n });\n\n // Set build info automatically if available.\n try {\n const timestamp = new Date().toISOString();\n const commitHash =\n process.env.DX_COMMIT_HASH ??\n execSync('git rev-parse --short HEAD', { encoding: 'utf-8' }).replace('\\n', '');\n const packagePath = pkgUp.sync();\n const packageJson = packagePath && JSON.parse(readFileSync(packagePath, 'utf-8'));\n setDeep(content, ['runtime', 'app', 'build', 'timestamp'], timestamp);\n setDeep(content, ['runtime', 'app', 'build', 'commitHash'], commitHash);\n setDeep(content, ['runtime', 'app', 'build', 'version'], packageJson?.version);\n } catch {}\n }\n } catch (err: any) {\n if (err.message.includes('YAMLException')) {\n log.error(`Failed to parse file ${value}:`, err);\n } else {\n log(`Failed to load file ${value}:`, err);\n }\n\n if (key === '__CONFIG_DEFAULTS__') {\n // Default config is required.\n throw new Error(`Failed to load default config file from ${value}`);\n }\n }\n\n return {\n ...prev,\n [key]: content,\n };\n },\n {\n __CONFIG_DEFAULTS__: {},\n __CONFIG_ENVS__: {},\n __CONFIG_LOCAL__: {},\n __DXOS_CONFIG__: { dynamic: mode === 'production', publicUrl },\n },\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,gBAAgB;AACzB,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AAExB,OAAOC,WAAW;AAClB,SAASC,aAAa;AAEtB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,eAAe;;AAMxB,IAAMC,MAAMC,QAAQC,IAAG;AAEhB,IAAMC,cAAc,CAAC,EAC1BC,YACAC,SACAC,SACAC,OAAON,eACPO,YAAY,IACZC,IAAG,MACc;AACjB,QAAMC,eAAe;IACnBC,qBAAqBP,YAAYQ,SAASR,aAAaS,QAAQb,KAAK,QAAA;IACpEc,iBAAiBT,SAASO,SAASP,UAAUQ,QAAQb,KAAK,YAAA;EAC5D;AACA,MAAIO,SAAS,cAAc;AACzBG,iBAAaK,mBAAmBT,WAAWO,QAAQb,KAAK,cAAA;EAC1D;AAEA,SAAOgB,OAAOC,QAAQP,YAAAA,EAAcQ,OAClC,CAACC,MAAM,CAACC,KAAKC,KAAAA,MAAM;AACjBC,cAAUF,KAAAA,QAAAA;;;;;;;;;AACV,QAAIG,UAAU,CAAC;AACf,QAAI;AACFA,gBAAUC,MAAMC,aAAaJ,OAAO,OAAA,CAAA;AAGpC,UAAID,QAAQ,mBAAmB;AAC7BG,kBAAUG,iBAAiBH,SAAStB,QAAQQ,GAAG;MACjD;AAEA,UAAIW,QAAQ,uBAAuB;AAEjCJ,eAAOC,QAAQhB,QAAQQ,GAAG,EAAEkB,QAAQ,CAAC,CAACP,MAAKC,MAAAA,MAAM;AAC/C,cAAID,KAAIQ,WAAW,KAAA,KAAUnB,KAAKoB,SAAST,IAAAA,GAAM;AAC/CU,oBAAQP,SAAS;cAAC;cAAW;cAAO;cAAOH;eAAMC,MAAAA;UACnD;QACF,CAAA;AAGA,YAAI;AACF,gBAAMU,aAAY,oBAAIC,KAAAA,GAAOC,YAAW;AACxC,gBAAMC,aACJjC,QAAQQ,IAAI0B,kBACZC,SAAS,8BAA8B;YAAEC,UAAU;UAAQ,CAAA,EAAGC,QAAQ,MAAM,EAAA;AAC9E,gBAAMC,cAAcC,MAAMC,KAAI;AAC9B,gBAAMC,cAAcH,eAAeI,KAAKnB,MAAMC,aAAac,aAAa,OAAA,CAAA;AACxET,kBAAQP,SAAS;YAAC;YAAW;YAAO;YAAS;aAAcQ,SAAAA;AAC3DD,kBAAQP,SAAS;YAAC;YAAW;YAAO;YAAS;aAAeW,UAAAA;AAC5DJ,kBAAQP,SAAS;YAAC;YAAW;YAAO;YAAS;aAAYmB,aAAaE,OAAAA;QACxE,QAAQ;QAAC;MACX;IACF,SAASC,KAAU;AACjB,UAAIA,IAAIC,QAAQjB,SAAS,eAAA,GAAkB;AACzCkB,YAAIC,MAAM,wBAAwB3B,KAAAA,KAAUwB,KAAAA;;;;;;MAC9C,OAAO;AACLE,YAAI,uBAAuB1B,KAAAA,KAAUwB,KAAAA;;;;;;MACvC;AAEA,UAAIzB,QAAQ,uBAAuB;AAEjC,cAAM,IAAI6B,MAAM,2CAA2C5B,KAAAA,EAAO;MACpE;IACF;AAEA,WAAO;MACL,GAAGF;MACH,CAACC,GAAAA,GAAMG;IACT;EACF,GACA;IACEZ,qBAAqB,CAAC;IACtBG,iBAAiB,CAAC;IAClBC,kBAAkB,CAAC;IACnBmC,iBAAiB;MAAEC,SAAS5C,SAAS;MAAcC;IAAU;EAC/D,CAAA;AAEJ;",
|
|
6
|
+
"names": ["execSync", "readFileSync", "resolve", "pkgUp", "parse", "invariant", "log", "setDeep", "CWD", "process", "cwd", "definitions", "configPath", "envPath", "devPath", "mode", "publicUrl", "env", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "length", "resolve", "__CONFIG_ENVS__", "__CONFIG_LOCAL__", "Object", "entries", "reduce", "prev", "key", "value", "invariant", "content", "parse", "readFileSync", "mapFromKeyValues", "forEach", "startsWith", "includes", "setDeep", "timestamp", "Date", "toISOString", "commitHash", "DX_COMMIT_HASH", "execSync", "encoding", "replace", "packagePath", "pkgUp", "sync", "packageJson", "JSON", "version", "err", "message", "log", "error", "Error", "__DXOS_CONFIG__", "dynamic"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/savers/browser.ts
|
|
2
|
+
import localforage from "localforage";
|
|
3
|
+
import { log } from "@dxos/log";
|
|
4
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/savers/browser.ts";
|
|
5
|
+
var PERFORMING_CONFIG_SAVE = false;
|
|
6
|
+
var SaveConfig = async (config) => {
|
|
7
|
+
if (PERFORMING_CONFIG_SAVE) {
|
|
8
|
+
log.warn("Already performing config save", void 0, {
|
|
9
|
+
F: __dxlog_file,
|
|
10
|
+
L: 16,
|
|
11
|
+
S: void 0,
|
|
12
|
+
C: (f, a) => f(...a)
|
|
13
|
+
});
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
PERFORMING_CONFIG_SAVE = true;
|
|
17
|
+
try {
|
|
18
|
+
await localforage.setItem("dxos.org/settings/config", config);
|
|
19
|
+
} catch (err) {
|
|
20
|
+
log.warn("Failed to save config", {
|
|
21
|
+
err
|
|
22
|
+
}, {
|
|
23
|
+
F: __dxlog_file,
|
|
24
|
+
L: 24,
|
|
25
|
+
S: void 0,
|
|
26
|
+
C: (f, a) => f(...a)
|
|
27
|
+
});
|
|
28
|
+
} finally {
|
|
29
|
+
PERFORMING_CONFIG_SAVE = false;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
SaveConfig
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/savers/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\n/* THIS FILE WILL BE LOADED BY CONTEXT REPLACEMENT PLUGIN IN BROWSER ENVS. */\n\nimport localforage from 'localforage';\n\nimport { log } from '@dxos/log';\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nlet PERFORMING_CONFIG_SAVE = false;\n\nexport const SaveConfig = async (config: ConfigProto): Promise<void> => {\n if (PERFORMING_CONFIG_SAVE) {\n log.warn('Already performing config save');\n return;\n }\n PERFORMING_CONFIG_SAVE = true;\n\n try {\n await localforage.setItem('dxos.org/settings/config', config);\n } catch (err) {\n log.warn('Failed to save config', { err });\n } finally {\n PERFORMING_CONFIG_SAVE = false;\n }\n};\n"],
|
|
5
|
+
"mappings": ";AAMA,OAAOA,iBAAiB;AAExB,SAASC,WAAW;AAJuD,IAAA,eAAA;AAO3E,IAAIC,yBAAyB;AAEtB,IAAMC,aAAa,OAAOC,WAAAA;AAC/B,MAAIF,wBAAwB;AAC1BD,QAAII,KAAK,kCAAA,QAAA;;;;;;AACT;EACF;AACAH,2BAAyB;AAEzB,MAAI;AACF,UAAMF,YAAYM,QAAQ,4BAA4BF,MAAAA;EACxD,SAASG,KAAK;AACZN,QAAII,KAAK,yBAAyB;MAAEE;IAAI,GAAA;;;;;;EAC1C,UAAA;AACEL,6BAAyB;EAC3B;AACF;",
|
|
6
|
+
"names": ["localforage", "log", "PERFORMING_CONFIG_SAVE", "SaveConfig", "config", "warn", "setItem", "err"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/savers/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nexport const SaveConfig = async (_: ConfigProto) => {};\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAMA,aAAa,OAAOC,MAAAA;AAAoB;",
|
|
6
|
+
"names": ["SaveConfig", "_"]
|
|
7
|
+
}
|