@dxos/config 0.8.4-main.fffef41 → 0.9.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.
Files changed (88) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-VQRJY4AQ.mjs +11 -0
  4. package/dist/lib/browser/chunk-VQRJY4AQ.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-ZY4D4E3Q.mjs +146 -0
  6. package/dist/lib/browser/chunk-ZY4D4E3Q.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +117 -211
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/loaders/browser.mjs +73 -0
  10. package/dist/lib/browser/loaders/browser.mjs.map +7 -0
  11. package/dist/lib/browser/loaders/index.mjs +66 -0
  12. package/dist/lib/browser/loaders/index.mjs.map +7 -0
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/plugin/browser.mjs +8 -0
  15. package/dist/lib/browser/plugin/browser.mjs.map +7 -0
  16. package/dist/lib/browser/plugin/index.mjs +98 -0
  17. package/dist/lib/browser/plugin/index.mjs.map +7 -0
  18. package/dist/lib/browser/savers/browser.mjs +25 -0
  19. package/dist/lib/browser/savers/browser.mjs.map +7 -0
  20. package/dist/lib/browser/savers/index.mjs +7 -0
  21. package/dist/lib/browser/savers/index.mjs.map +7 -0
  22. package/dist/lib/node-esm/chunk-T6NFH3CC.mjs +13 -0
  23. package/dist/lib/node-esm/chunk-T6NFH3CC.mjs.map +7 -0
  24. package/dist/lib/node-esm/chunk-WIJROCKQ.mjs +148 -0
  25. package/dist/lib/node-esm/chunk-WIJROCKQ.mjs.map +7 -0
  26. package/dist/lib/node-esm/index.mjs +115 -303
  27. package/dist/lib/node-esm/index.mjs.map +4 -4
  28. package/dist/lib/node-esm/loaders/browser.mjs +75 -0
  29. package/dist/lib/node-esm/loaders/browser.mjs.map +7 -0
  30. package/dist/lib/node-esm/loaders/index.mjs +67 -0
  31. package/dist/lib/node-esm/loaders/index.mjs.map +7 -0
  32. package/dist/lib/node-esm/meta.json +1 -1
  33. package/dist/lib/node-esm/plugin/browser.mjs +10 -0
  34. package/dist/lib/node-esm/plugin/browser.mjs.map +7 -0
  35. package/dist/lib/node-esm/plugin/index.mjs +99 -0
  36. package/dist/lib/node-esm/plugin/index.mjs.map +7 -0
  37. package/dist/lib/node-esm/savers/browser.mjs +27 -0
  38. package/dist/lib/node-esm/savers/browser.mjs.map +7 -0
  39. package/dist/lib/node-esm/savers/index.mjs +9 -0
  40. package/dist/lib/node-esm/savers/index.mjs.map +7 -0
  41. package/dist/plugin/node-esm/{chunk-C4YHC2RN.mjs → chunk-XCZNYAQT.mjs} +17 -30
  42. package/dist/plugin/node-esm/chunk-XCZNYAQT.mjs.map +7 -0
  43. package/dist/plugin/node-esm/esbuild-plugin.mjs +1 -1
  44. package/dist/plugin/node-esm/meta.json +1 -1
  45. package/dist/plugin/node-esm/rollup-plugin.mjs +1 -1
  46. package/dist/plugin/node-esm/vite-plugin.mjs +1 -1
  47. package/dist/plugin/node-esm/vite-plugin.mjs.map +2 -2
  48. package/dist/types/src/config-service.d.ts +19 -0
  49. package/dist/types/src/config-service.d.ts.map +1 -0
  50. package/dist/types/src/config.d.ts +0 -1
  51. package/dist/types/src/config.d.ts.map +1 -1
  52. package/dist/types/src/index.d.ts +5 -3
  53. package/dist/types/src/index.d.ts.map +1 -1
  54. package/dist/types/src/loaders/browser.d.ts +11 -15
  55. package/dist/types/src/loaders/browser.d.ts.map +1 -1
  56. package/dist/types/src/loaders/index.d.ts.map +1 -1
  57. package/dist/types/src/plugin/browser.d.ts +3 -0
  58. package/dist/types/src/plugin/browser.d.ts.map +1 -0
  59. package/dist/types/src/plugin/definitions.d.ts.map +1 -1
  60. package/dist/types/src/plugin/esbuild-plugin.d.ts.map +1 -1
  61. package/dist/types/src/plugin/rollup-plugin.d.ts.map +1 -1
  62. package/dist/types/src/plugin/vite-plugin.d.ts.map +1 -1
  63. package/dist/types/src/preset.d.ts +1 -1
  64. package/dist/types/src/preset.d.ts.map +1 -1
  65. package/dist/types/src/savers/browser.d.ts +2 -1
  66. package/dist/types/src/savers/browser.d.ts.map +1 -1
  67. package/dist/types/src/savers/index.d.ts.map +1 -1
  68. package/dist/types/src/telemetry.d.ts +17 -0
  69. package/dist/types/src/telemetry.d.ts.map +1 -0
  70. package/dist/types/src/testing/defaults.d.ts +6 -6
  71. package/dist/types/src/testing/defaults.d.ts.map +1 -1
  72. package/dist/types/src/testing/envs-map.d.ts +12 -14
  73. package/dist/types/src/testing/envs-map.d.ts.map +1 -1
  74. package/dist/types/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +50 -36
  76. package/src/config-service.ts +116 -0
  77. package/src/config.ts +4 -7
  78. package/src/index.ts +5 -3
  79. package/src/loaders/{browser.js → browser.ts} +15 -9
  80. package/src/loaders/index.ts +2 -3
  81. package/src/plugin/browser.ts +11 -0
  82. package/src/plugin/definitions.ts +2 -4
  83. package/src/plugin/vite-plugin.ts +0 -1
  84. package/src/preset.ts +2 -1
  85. package/src/savers/{browser.js → browser.ts} +3 -3
  86. package/src/telemetry.ts +25 -0
  87. package/src/testing/build.js +2 -1
  88. package/dist/plugin/node-esm/chunk-C4YHC2RN.mjs.map +0 -7
@@ -0,0 +1,67 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ FILE_DEFAULTS,
4
+ FILE_ENVS
5
+ } from "../chunk-T6NFH3CC.mjs";
6
+ import {
7
+ mapFromKeyValues
8
+ } from "../chunk-WIJROCKQ.mjs";
9
+
10
+ // src/loaders/index.ts
11
+ import fs from "node:fs";
12
+ import path from "node:path";
13
+ import { parse } from "yaml";
14
+ import { log } from "@dxos/log";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/loaders/index.ts";
16
+ var DEFAULT_BASE_PATH = path.resolve(process.cwd(), "config");
17
+ var maybeLoadFile = (file) => {
18
+ try {
19
+ return parse(fs.readFileSync(file, {
20
+ encoding: "utf8"
21
+ }));
22
+ } catch (err) {
23
+ }
24
+ };
25
+ var Profile = (profile = "default") => {
26
+ const configFile = path.join(process.env.HOME ?? "~", `.config/dx/profile/${profile}.yml`);
27
+ return maybeLoadFile(configFile);
28
+ };
29
+ var Local = () => ({});
30
+ var Dynamics = () => ({});
31
+ var Envs = (basePath = DEFAULT_BASE_PATH) => {
32
+ const content = maybeLoadFile(path.resolve(basePath, FILE_ENVS));
33
+ return content ? mapFromKeyValues(content, process.env) : {};
34
+ };
35
+ var Defaults = (basePath = DEFAULT_BASE_PATH) => maybeLoadFile(path.resolve(basePath, FILE_DEFAULTS)) ?? {};
36
+ var Storage = async () => ({});
37
+ var Remote = (target, authenticationToken) => {
38
+ if (!target) {
39
+ return {};
40
+ }
41
+ try {
42
+ const url = new URL(target);
43
+ const protocol = url.protocol.slice(0, -1);
44
+ return {
45
+ runtime: {
46
+ client: {
47
+ // TODO(burdon): Remove vault.html.
48
+ remoteSource: url.origin + (protocol.startsWith("http") ? "/vault.html" : ""),
49
+ remoteSourceAuthenticationToken: authenticationToken
50
+ }
51
+ }
52
+ };
53
+ } catch (err) {
54
+ log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 66, S: void 0 });
55
+ return {};
56
+ }
57
+ };
58
+ export {
59
+ Defaults,
60
+ Dynamics,
61
+ Envs,
62
+ Local,
63
+ Profile,
64
+ Remote,
65
+ Storage
66
+ };
67
+ //# 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';\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;AACjB,SAASC,aAAa;AAEtB,SAASC,WAAW;AAMpB,IAAA,eAAA;IAKE,oBAAI,KAAA,QAAA,QAAA,IAAA,GAAA,QAAA;oBACWC,CAAAA,SAAGC;;AAAsC,WAAA,MAAA,GAAA,aAAA,MAAA;MACtD,UAAiB;IACjB,CAAA,CAAA;EACF,SAAA,KAAA;EAGA;AACF;AAQSC,IAAAA,UAAcC,CAAAA,UAAAA,cAAAA;AACrB,QAAA,aAAA,KAAA,KAAA,QAAA,IAAA,QAAA,KAAA,sBAAA,OAAA,MAAA;AAEF,SAAA,cAAA,UAAA;;;;AAgBSC,IAAAA,OAAUC,CAAAA,WAAAA,sBAAkCC;AACnD,QAAA,UAAA,cAAA,KAAA,QAAA,UAAA,SAAA,CAAA;AAEF,SAAA,UAAA,iBAAA,SAAA,QAAA,GAAA,IAAA,CAAA;;;AAYOC,IAAQ,UAAA,aAAA,CAAA;IACX,SAAQ,CAAA,QAAA,wBAAA;AACV,MAAA,CAAA,QAAA;AAEI,WAAA,CAAA;;MAEF;AACA,UAAA,MAAO,IAAA,IAAA,MAAA;UACLC,WAAS,IAAA,SAAA,MAAA,GAAA,EAAA;;eAEL;gBACAC;;UAEF,cAAA,IAAA,UAAA,SAAA,WAAA,MAAA,IAAA,gBAAA;UACF,iCAAA;QACF;MACA;IACAC;WACA,KAAQ;AACV,QAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;AACA,WAAA,CAAA;;;",
6
+ "names": ["fs", "path", "parse", "log", "fs", "readFileSync", "maybeLoadFile", "configFile", "content", "mapFromKeyValues", "env", "target", "runtime", "remoteSource", "log"]
7
+ }
@@ -1 +1 @@
1
- {"inputs":{"src/config.ts":{"bytes":15734,"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/types.ts":{"bytes":2735,"imports":[],"format":"esm"},"src/loaders/index.ts":{"bytes":8246,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-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/savers/index.ts":{"bytes":666,"imports":[],"format":"esm"},"src/plugin/definitions.ts":{"bytes":12065,"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"pkg-up","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/preset.ts":{"bytes":3066,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"}],"format":"esm"},"src/index.ts":{"bytes":1298,"imports":[{"path":"@dxos/protocols/proto/dxos/config","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"},{"path":"src/loaders/index.ts","kind":"import-statement","original":"./loaders"},{"path":"src/savers/index.ts","kind":"import-statement","original":"./savers"},{"path":"src/plugin/index.ts","kind":"import-statement","original":"./plugin"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/preset.ts","kind":"import-statement","original":"./preset"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21487},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/protocols/proto/dxos/config","kind":"import-statement","external":true},{"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},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"pkg-up","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":"effect/Match","kind":"import-statement","external":true}],"exports":["Config","ConfigResource","Defaults","Dynamics","Envs","FILE_DEFAULTS","FILE_DYNAMICS","FILE_ENVS","Local","Profile","Remote","SaveConfig","Storage","configPreset","definitions","defs","mapFromKeyValues","mapToKeyValues","validateConfig"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":59},"src/config.ts":{"bytesInOutput":4021},"src/loaders/index.ts":{"bytesInOutput":1549},"src/types.ts":{"bytesInOutput":102},"src/savers/index.ts":{"bytesInOutput":35},"src/plugin/definitions.ts":{"bytesInOutput":3232},"src/plugin/index.ts":{"bytesInOutput":0},"src/preset.ts":{"bytesInOutput":541}},"bytes":10108}}}
1
+ {"inputs":{"src/config.ts":{"bytes":15941,"imports":[{"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":12251,"imports":[{"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":"node:path","kind":"import-statement","external":true},{"path":"yaml","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/telemetry.ts":{"bytes":2724,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/types.ts":{"bytes":2665,"imports":[],"format":"esm"},"src/preset.ts":{"bytes":3253,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"src/config.ts","kind":"import-statement","original":"./config"}],"format":"esm"},"src/index.ts":{"bytes":1416,"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/telemetry.ts","kind":"import-statement","original":"./telemetry"},{"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":8152,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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":8287,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/savers/index.ts":{"bytes":589,"imports":[],"format":"esm"},"src/savers/browser.ts":{"bytes":2564,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/plugin/definitions.ts":{"bytes":11702,"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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":427,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/browser.ts":{"bytes":924,"imports":[],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9239},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-T6NFH3CC.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WIJROCKQ.mjs","kind":"import-statement"},{"path":"@dxos/protocols/proto/dxos/config","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":"node:path","kind":"import-statement","external":true},{"path":"yaml","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":"@dxos/util","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","resolveTelemetryTag","validateConfig"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":135},"src/config-service.ts":{"bytesInOutput":3247},"src/telemetry.ts":{"bytesInOutput":192},"src/preset.ts":{"bytesInOutput":617}},"bytes":4865},"dist/lib/node-esm/loaders/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3508},"dist/lib/node-esm/loaders/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-T6NFH3CC.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WIJROCKQ.mjs","kind":"import-statement"},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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":1521}},"bytes":1887},"dist/lib/node-esm/chunk-T6NFH3CC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1815},"dist/lib/node-esm/chunk-T6NFH3CC.mjs":{"imports":[],"exports":["FILE_DEFAULTS","FILE_DYNAMICS","FILE_ENVS"],"inputs":{"src/types.ts":{"bytesInOutput":102}},"bytes":314},"dist/lib/node-esm/loaders/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4099},"dist/lib/node-esm/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":2028}},"bytes":2268},"dist/lib/node-esm/savers/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":360},"dist/lib/node-esm/savers/index.mjs":{"imports":[],"exports":["SaveConfig"],"entryPoint":"src/savers/index.ts","inputs":{"src/savers/index.ts":{"bytesInOutput":35}},"bytes":211},"dist/lib/node-esm/savers/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1304},"dist/lib/node-esm/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":694}},"bytes":874},"dist/lib/node-esm/plugin/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5415},"dist/lib/node-esm/plugin/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WIJROCKQ.mjs","kind":"import-statement"},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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":3073},"src/plugin/index.ts":{"bytesInOutput":0}},"bytes":3316},"dist/lib/node-esm/chunk-WIJROCKQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7813},"dist/lib/node-esm/chunk-WIJROCKQ.mjs":{"imports":[{"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":4083}},"bytes":4333},"dist/lib/node-esm/plugin/browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":496},"dist/lib/node-esm/plugin/browser.mjs":{"imports":[],"exports":["definitions"],"entryPoint":"src/plugin/browser.ts","inputs":{"src/plugin/browser.ts":{"bytesInOutput":110}},"bytes":291}}}
@@ -0,0 +1,10 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/plugin/browser.ts
4
+ var definitions = () => {
5
+ throw new Error("Config plugin definitions are not available in the browser");
6
+ };
7
+ export {
8
+ definitions
9
+ };
10
+ //# sourceMappingURL=browser.mjs.map
@@ -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,99 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ mapFromKeyValues
4
+ } from "../chunk-WIJROCKQ.mjs";
5
+
6
+ // src/plugin/definitions.ts
7
+ import { execSync } from "node:child_process";
8
+ import { readFileSync } from "node:fs";
9
+ import { resolve } from "node:path";
10
+ import pkgUp from "pkg-up";
11
+ import { parse } from "yaml";
12
+ import { invariant } from "@dxos/invariant";
13
+ import { log } from "@dxos/log";
14
+ import { setDeep } from "@dxos/util";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/plugin/definitions.ts";
16
+ var CWD = process.cwd();
17
+ var definitions = ({ configPath, envPath, devPath, mode = process.env.NODE_ENV, publicUrl = "", env }) => {
18
+ const KEYS_TO_FILE = {
19
+ __CONFIG_DEFAULTS__: configPath?.length ? configPath : resolve(CWD, "dx.yml"),
20
+ __CONFIG_ENVS__: envPath?.length ? envPath : resolve(CWD, "dx-env.yml")
21
+ };
22
+ if (mode !== "production") {
23
+ KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? resolve(CWD, "dx-local.yml");
24
+ }
25
+ return Object.entries(KEYS_TO_FILE).reduce((prev, [key, value]) => {
26
+ invariant(key, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 23, S: void 0, A: ["key", ""] });
27
+ let content = {};
28
+ try {
29
+ content = parse(readFileSync(value, "utf-8"));
30
+ if (key === "__CONFIG_ENVS__") {
31
+ content = mapFromKeyValues(content, process.env);
32
+ }
33
+ if (key === "__CONFIG_DEFAULTS__") {
34
+ Object.entries(process.env).forEach(([key2, value2]) => {
35
+ if (key2.startsWith("DX_") || env?.includes(key2)) {
36
+ setDeep(content, [
37
+ "runtime",
38
+ "app",
39
+ "env",
40
+ key2
41
+ ], value2);
42
+ }
43
+ });
44
+ try {
45
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
46
+ const commitHash = process.env.DX_COMMIT_HASH ?? execSync("git rev-parse --short HEAD", {
47
+ encoding: "utf-8"
48
+ }).replace("\n", "");
49
+ const packagePath = pkgUp.sync();
50
+ const packageJson = packagePath && JSON.parse(readFileSync(packagePath, "utf-8"));
51
+ setDeep(content, [
52
+ "runtime",
53
+ "app",
54
+ "build",
55
+ "timestamp"
56
+ ], timestamp);
57
+ setDeep(content, [
58
+ "runtime",
59
+ "app",
60
+ "build",
61
+ "commitHash"
62
+ ], commitHash);
63
+ setDeep(content, [
64
+ "runtime",
65
+ "app",
66
+ "build",
67
+ "version"
68
+ ], packageJson?.version);
69
+ } catch {
70
+ }
71
+ }
72
+ } catch (err) {
73
+ if (err.message.includes("YAMLException")) {
74
+ log.error(`Failed to parse file ${value}:`, err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 73, S: void 0 });
75
+ } else {
76
+ log(`Failed to load file ${value}:`, err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: void 0 });
77
+ }
78
+ if (key === "__CONFIG_DEFAULTS__") {
79
+ throw new Error(`Failed to load default config file from ${value}`);
80
+ }
81
+ }
82
+ return {
83
+ ...prev,
84
+ [key]: content
85
+ };
86
+ }, {
87
+ __CONFIG_DEFAULTS__: {},
88
+ __CONFIG_ENVS__: {},
89
+ __CONFIG_LOCAL__: {},
90
+ __DXOS_CONFIG__: {
91
+ dynamic: mode === "production",
92
+ publicUrl
93
+ }
94
+ });
95
+ };
96
+ export {
97
+ definitions
98
+ };
99
+ //# 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';\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';\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;AACxB,OAAOC,WAAW;AAClB,SAASC,aAAa;AAEtB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,eAAe;AAKxB,IAAA,eAAYC;IAUV,MAAMC,QAAAA,IAAAA;IACJC,cAAAA,CAAAA,EAAqBC,YAAYC,SAASD,SAAAA,OAAaE,QAAQC,IAAK,UAAA,YAAA,IAAA,IAAA,MAAA;QACpEC,eAAiBC;IACnB,qBAAA,YAAA,SAAA,aAAA,QAAA,KAAA,QAAA;IACIC,iBAAS,SAAc,SAAA,UAAA,QAAA,KAAA,YAAA;;AAE3B,MAAA,SAAA,cAAA;AAEA,iBAAcC,mBAAsBC,WACjCC,QAAOC,KAAKC,cAAM;;SAEjB,OAAIC,QAAW,YAAA,EAAA,OAAA,CAAA,MAAA,CAAA,KAAA,KAAA,MAAA;AACf,cAAI,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,QAAA,GAAA,CAAA,OAAA,EAAA,EAAA,CAAA;QACFA,UAAUC,CAAAA;QAEV;AACA,gBAAIH,MAAQ,aAAA,OAAmB,OAAA,CAAA;AAE/B,UAAA,QAAA,mBAAA;AAEIA,kBAAQ,iBAAA,SAAuB,QAAA,GAAA;;UAEjCI,QAAOP,uBAAqBQ;uBAExBC,QAAQJ,GAAS,EAAA,QAAA,CAAA,CAAAF,MAAAC,MAAA,MAAA;mBAAC,WAAA,KAAA,KAAA,KAAA,SAAAD,IAAA,GAAA;oBAAW,SAAA;cAAO;cAAOA;cAAMC;cACnDD;YACF,GAAAC,MAAA;UAEA;QACA,CAAA;YAEE;gBAE2CM,aAAU,oBAAA,KAAA,GAAA,YAAA;AAAQ,gBAAGC,aAAc,QAAA,IAAA,kBAAA,SAAA,8BAAA;YAC9E,UAAMC;UACN,CAAA,EAAA,QAAMC,MAAAA,EAAAA;AACNJ,gBAAAA,cAAiB,MAAA,KAAA;gBAAC,cAAA,eAAA,KAAA,MAAA,aAAA,aAAA,OAAA,CAAA;kBAAW,SAAA;YAAO;YAAS;YAAcK;YAC3DL;sBAAkB;kBAAW,SAAA;YAAO;YAAS;YAAeM;YAC5DN;uBAAkB;kBAAW,SAAA;YAAO;YAAS;YAAYI;YACzD;UACJ,GAAA,aAAA,OAAA;QACA,QAAiB;QAAA;MACjB;aACEG,KAAIC;AACN,UAAA,IAAO,QAAA,SAAA,eAAA,GAAA;AACLD,YAAI,MAAC,wBAA6B,KAAGE,KAAAA,KAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,OAAAA,CAAAA;MACvC,OAAA;AAEIf,YAAAA,uBAAQ,KAAuB,KAAA,KAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;;UAEjC,QAAM,uBAAW;AAErB,cAAA,IAAA,MAAA,2CAAA,KAAA,EAAA;MAEA;;WAEGA;MACH,GAAA;MAEF,CAAA,GAAA,GAAA;IACEX;;IAEA2B,qBAAmB,CAAA;IACnBC,iBAAiB,CAAA;sBAAWrB,CAAAA;qBAAuBsB;MAAU,SAAA,SAAA;MAC/D;IAEF;;;",
6
+ "names": ["execSync", "readFileSync", "resolve", "pkgUp", "parse", "invariant", "log", "setDeep", "process", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "configPath", "length", "resolve", "CWD", "__CONFIG_ENVS__", "envPath", "mode", "entries", "reduce", "prev", "key", "value", "content", "parse", "Object", "forEach", "setDeep", "encoding", "replace", "packagePath", "packageJson", "timestamp", "commitHash", "log", "error", "err", "__CONFIG_LOCAL__", "__DXOS_CONFIG__", "publicUrl"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/savers/browser.ts
4
+ import localforage from "localforage";
5
+ import { log } from "@dxos/log";
6
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/savers/browser.ts";
7
+ var PERFORMING_CONFIG_SAVE = false;
8
+ var SaveConfig = async (config) => {
9
+ if (PERFORMING_CONFIG_SAVE) {
10
+ log.warn("Already performing config save", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 9, S: void 0 });
11
+ return;
12
+ }
13
+ PERFORMING_CONFIG_SAVE = true;
14
+ try {
15
+ await localforage.setItem("org.dxos.settings.config", config);
16
+ } catch (err) {
17
+ log.warn("Failed to save config", {
18
+ err
19
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 16, S: void 0 });
20
+ } finally {
21
+ PERFORMING_CONFIG_SAVE = false;
22
+ }
23
+ };
24
+ export {
25
+ SaveConfig
26
+ };
27
+ //# 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('org.dxos.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;AAGpB,IAAIC,eAAAA;IAGF,yBAAIA;IACEC,aAAK,OAAA,WAAA;MACT,wBAAA;AACF,QAAA,KAAA,kCAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,GAAA,GAAA,OAAA,CAAA;AACAD;EAEA;2BACoBE;AACpB,MAAE;AACAH,UAAIE,YAAK,QAAA,4BAAyB,MAAA;WAAEE,KAAAA;AAAI,QAAA,KAAA,yBAAA;MAC1C;IACEH,GAAAA,EAAAA,YAAAA,YAAyB,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;EAC3B,UAAA;AACA,6BAAA;;;",
6
+ "names": ["localforage", "log", "PERFORMING_CONFIG_SAVE", "warn", "setItem", "err"]
7
+ }
@@ -0,0 +1,9 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/savers/index.ts
4
+ var SaveConfig = async (_) => {
5
+ };
6
+ export {
7
+ SaveConfig
8
+ };
9
+ //# sourceMappingURL=index.mjs.map
@@ -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
+ }
@@ -4,14 +4,13 @@ import { createRequire } from 'node:module';const require = createRequire(import
4
4
  import { execSync } from "node:child_process";
5
5
  import { readFileSync } from "node:fs";
6
6
  import { resolve } from "node:path";
7
- import yaml from "js-yaml";
8
7
  import pkgUp from "pkg-up";
8
+ import { parse } from "yaml";
9
9
  import { invariant } from "@dxos/invariant";
10
10
  import { log } from "@dxos/log";
11
11
  import { setDeep as setDeep2 } from "@dxos/util";
12
12
 
13
13
  // src/config.ts
14
- import { boolean } from "boolean";
15
14
  import defaultsDeep from "lodash.defaultsdeep";
16
15
  import isMatch from "lodash.ismatch";
17
16
  import { InvalidConfigError } from "@dxos/protocols";
@@ -33,7 +32,7 @@ var mapFromKeyValues = (spec, values) => {
33
32
  if (type) {
34
33
  switch (type) {
35
34
  case "boolean": {
36
- value = boolean(value);
35
+ value = String(value).toLowerCase() === "true" || value === "1";
37
36
  break;
38
37
  }
39
38
  case "number": {
@@ -59,18 +58,24 @@ var mapFromKeyValues = (spec, values) => {
59
58
  };
60
59
  var validateConfig = (config) => {
61
60
  if (!("version" in config)) {
62
- throw new InvalidConfigError("Version not specified");
61
+ throw new InvalidConfigError({
62
+ message: "Version not specified"
63
+ });
63
64
  }
64
65
  if (config?.version !== 1) {
65
- throw new InvalidConfigError(`Invalid config version: ${config.version}`);
66
+ throw new InvalidConfigError({
67
+ message: `Invalid config version: ${config.version}`
68
+ });
66
69
  }
67
70
  const error = configRootType.protoType.verify(config);
68
71
  if (error) {
69
- throw new InvalidConfigError(error);
72
+ throw new InvalidConfigError({
73
+ message: String(error)
74
+ });
70
75
  }
71
76
  return config;
72
77
  };
73
- var ConfigResource = Symbol.for("dxos.resource.Config");
78
+ var ConfigResource = /* @__PURE__ */ Symbol.for("dxos.resource.Config");
74
79
  var Config = class {
75
80
  _config;
76
81
  /**
@@ -139,18 +144,10 @@ var definitions = ({ configPath, envPath, devPath, mode = process.env.NODE_ENV,
139
144
  KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? resolve(CWD, "dx-local.yml");
140
145
  }
141
146
  return Object.entries(KEYS_TO_FILE).reduce((prev, [key, value]) => {
142
- invariant(key, void 0, {
143
- F: __dxlog_file,
144
- L: 40,
145
- S: void 0,
146
- A: [
147
- "key",
148
- ""
149
- ]
150
- });
147
+ invariant(key, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 23, S: void 0, A: ["key", ""] });
151
148
  let content = {};
152
149
  try {
153
- content = yaml.load(readFileSync(value, "utf-8"));
150
+ content = parse(readFileSync(value, "utf-8"));
154
151
  if (key === "__CONFIG_ENVS__") {
155
152
  content = mapFromKeyValues(content, process.env);
156
153
  }
@@ -195,19 +192,9 @@ var definitions = ({ configPath, envPath, devPath, mode = process.env.NODE_ENV,
195
192
  }
196
193
  } catch (err) {
197
194
  if (err.message.includes("YAMLException")) {
198
- log.error(`Failed to parse file ${value}:`, err, {
199
- F: __dxlog_file,
200
- L: 73,
201
- S: void 0,
202
- C: (f, a) => f(...a)
203
- });
195
+ log.error(`Failed to parse file ${value}:`, err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 73, S: void 0 });
204
196
  } else {
205
- log(`Failed to load file ${value}:`, err, {
206
- F: __dxlog_file,
207
- L: 75,
208
- S: void 0,
209
- C: (f, a) => f(...a)
210
- });
197
+ log(`Failed to load file ${value}:`, err, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: void 0 });
211
198
  }
212
199
  if (key === "__CONFIG_DEFAULTS__") {
213
200
  throw new Error(`Failed to load default config file from ${value}`);
@@ -231,4 +218,4 @@ var definitions = ({ configPath, envPath, devPath, mode = process.env.NODE_ENV,
231
218
  export {
232
219
  definitions
233
220
  };
234
- //# sourceMappingURL=chunk-C4YHC2RN.mjs.map
221
+ //# sourceMappingURL=chunk-XCZNYAQT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin/definitions.ts", "../../../src/config.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';\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';\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", "//\n// Copyright 2021 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport isMatch from 'lodash.ismatch';\n\nimport { InvalidConfigError } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\nimport { trace } from '@dxos/tracing';\nimport { getDeep, setDeep } from '@dxos/util';\n\nimport { type ConfigKey, type DeepIndex, type ParseKey } from './types';\n\ntype MappingSpec = Record<string, { path: string; type?: string }>;\nconst configRootType = schema.getCodecForType('dxos.config.Config');\n\n/**\n * Maps the given objects onto a flattened set of (key x values).\n * Expects parsed yaml content of the form:\n *\n * ```\n * ENV_VAR:\n * path: config.selector.path\n * ```\n *\n * @param {object} spec\n * @param {object} values\n * @return {object}\n */\nexport const mapFromKeyValues = (spec: MappingSpec, values: Record<string, any>) => {\n const config = {};\n\n for (const [key, { path, type }] of Object.entries(spec)) {\n let value = values[key];\n if (value !== undefined) {\n if (type) {\n switch (type) {\n case 'boolean': {\n value = String(value).toLowerCase() === 'true' || value === '1';\n break;\n }\n\n case 'number': {\n value = Number(value);\n break;\n }\n\n case 'string': {\n break;\n }\n\n case 'json': {\n value = value ? JSON.parse(value) : null;\n break;\n }\n\n default: {\n throw new Error(`Invalid type: ${type}`);\n }\n }\n }\n\n setDeep(config, path.split('.'), value);\n }\n }\n\n return config;\n};\n\n/**\n * Maps the given flattend set of (key x values) onto a JSON object.\n * @param {object} spec\n * @param {object} values\n */\nexport const mapToKeyValues = (spec: MappingSpec, values: any) => {\n const config: Record<string, any> = {};\n\n for (const [key, { path, type }] of Object.entries(spec)) {\n const value = getDeep(values, path.split('.'));\n if (value !== undefined) {\n switch (type) {\n case 'json':\n config[key] = JSON.stringify(value);\n break;\n default:\n config[key] = value;\n }\n }\n }\n\n return config;\n};\n\n/**\n * Validate config object.\n */\nexport const validateConfig = (config: ConfigProto): ConfigProto => {\n if (!('version' in config)) {\n throw new InvalidConfigError({ message: 'Version not specified' });\n }\n\n if (config?.version !== 1) {\n throw new InvalidConfigError({ message: `Invalid config version: ${config.version}` });\n }\n\n const error = configRootType.protoType.verify(config);\n if (error) {\n throw new InvalidConfigError({ message: String(error) });\n }\n\n return config;\n};\n\nexport const ConfigResource = Symbol.for('dxos.resource.Config');\n\n/**\n * Global configuration object.\n * NOTE: Config objects are immutable.\n */\n@trace.resource({ annotation: ConfigResource })\nexport class Config {\n private readonly _config: any;\n\n /**\n * Creates an immutable instance.\n * @constructor\n */\n constructor(config: ConfigProto = {}, ...objects: ConfigProto[]) {\n this._config = validateConfig(defaultsDeep(config, ...objects, { version: 1 }));\n }\n\n /**\n * Returns an immutable config JSON object.\n */\n get values(): ConfigProto {\n return this._config;\n }\n\n /**\n * Returns the given config property.\n *\n * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.\n * @param defaultValue Default value to return if option is not present in the config.\n * @returns The config value or undefined if the option is not present.\n */\n get<K extends ConfigKey>(\n key: K,\n defaultValue?: DeepIndex<ConfigProto, ParseKey<K>>,\n ): DeepIndex<ConfigProto, ParseKey<K>> | undefined {\n return getDeep(this._config, key.split('.')) ?? defaultValue;\n }\n\n /**\n * Get unique key.\n */\n find<T = any>(path: string, test: object): T | undefined {\n const values = getDeep(this._config, path.split('.'));\n if (!Array.isArray(values)) {\n return;\n }\n\n return values.find((value) => isMatch(value, test));\n }\n\n /**\n * Returns the given config property or throw if it doesn't exist.\n *\n * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.\n */\n getOrThrow<K extends ConfigKey>(key: K): Exclude<DeepIndex<ConfigProto, ParseKey<K>>, undefined> {\n const value: DeepIndex<ConfigProto, ParseKey<K>> | undefined = getDeep(this._config, key.split('.'));\n if (!value) {\n throw new Error(`Config option not present: ${key}`);\n }\n return value;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["execSync", "readFileSync", "resolve", "pkgUp", "parse", "invariant", "log", "setDeep", "defaultsDeep", "isMatch", "InvalidConfigError", "schema", "trace", "getDeep", "setDeep", "configRootType", "getCodecForType", "mapFromKeyValues", "spec", "values", "config", "key", "path", "type", "Object", "entries", "value", "undefined", "String", "toLowerCase", "Number", "JSON", "parse", "Error", "split", "validateConfig", "config", "InvalidConfigError", "message", "version", "error", "configRootType", "protoType", "verify", "String", "ConfigResource", "Symbol", "for", "Config", "_config", "objects", "defaultsDeep", "values", "get", "key", "defaultValue", "getDeep", "split", "find", "path", "test", "Array", "isArray", "value", "isMatch", "getOrThrow", "Error", "resource", "annotation", "process", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "configPath", "length", "resolve", "CWD", "__CONFIG_ENVS__", "envPath", "mode", "entries", "reduce", "prev", "key", "value", "content", "parse", "Object", "forEach", "setDeep", "encoding", "replace", "packagePath", "packageJson", "timestamp", "commitHash", "log", "error", "err", "__CONFIG_LOCAL__", "__DXOS_CONFIG__", "publicUrl"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  definitions
4
- } from "./chunk-C4YHC2RN.mjs";
4
+ } from "./chunk-XCZNYAQT.mjs";
5
5
 
6
6
  // src/plugin/esbuild-plugin.ts
7
7
  var ConfigPlugin = (options = {}) => {
@@ -1 +1 @@
1
- {"inputs":{"src/config.ts":{"bytes":15734,"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/plugin/definitions.ts":{"bytes":12065,"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"pkg-up","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/esbuild-plugin.ts":{"bytes":2571,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/rollup-plugin.ts":{"bytes":2055,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/vite-plugin.ts":{"bytes":3666,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"}},"outputs":{"dist/plugin/node-esm/esbuild-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1347},"dist/plugin/node-esm/esbuild-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-C4YHC2RN.mjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/esbuild-plugin.ts","inputs":{"src/plugin/esbuild-plugin.ts":{"bytesInOutput":443}},"bytes":693},"dist/plugin/node-esm/rollup-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1103},"dist/plugin/node-esm/rollup-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-C4YHC2RN.mjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/rollup-plugin.ts","inputs":{"src/plugin/rollup-plugin.ts":{"bytesInOutput":288}},"bytes":536},"dist/plugin/node-esm/vite-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1838},"dist/plugin/node-esm/vite-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-C4YHC2RN.mjs","kind":"import-statement"},{"path":"node:path","kind":"import-statement","external":true}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/vite-plugin.ts","inputs":{"src/plugin/vite-plugin.ts":{"bytesInOutput":674}},"bytes":918},"dist/plugin/node-esm/chunk-C4YHC2RN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13129},"dist/plugin/node-esm/chunk-C4YHC2RN.mjs":{"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"pkg-up","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":"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":["definitions"],"inputs":{"src/plugin/definitions.ts":{"bytesInOutput":3211},"src/config.ts":{"bytesInOutput":3587}},"bytes":7039}}}
1
+ {"inputs":{"src/config.ts":{"bytes":15941,"imports":[{"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/plugin/definitions.ts":{"bytes":11702,"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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/esbuild-plugin.ts":{"bytes":2485,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/rollup-plugin.ts":{"bytes":1966,"imports":[{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/plugin/vite-plugin.ts":{"bytes":3579,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"}},"outputs":{"dist/plugin/node-esm/esbuild-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1347},"dist/plugin/node-esm/esbuild-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-XCZNYAQT.mjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/esbuild-plugin.ts","inputs":{"src/plugin/esbuild-plugin.ts":{"bytesInOutput":443}},"bytes":693},"dist/plugin/node-esm/rollup-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1103},"dist/plugin/node-esm/rollup-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-XCZNYAQT.mjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/rollup-plugin.ts","inputs":{"src/plugin/rollup-plugin.ts":{"bytesInOutput":288}},"bytes":536},"dist/plugin/node-esm/vite-plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1836},"dist/plugin/node-esm/vite-plugin.mjs":{"imports":[{"path":"dist/plugin/node-esm/chunk-XCZNYAQT.mjs","kind":"import-statement"},{"path":"node:path","kind":"import-statement","external":true}],"exports":["ConfigPlugin"],"entryPoint":"src/plugin/vite-plugin.ts","inputs":{"src/plugin/vite-plugin.ts":{"bytesInOutput":674}},"bytes":918},"dist/plugin/node-esm/chunk-XCZNYAQT.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12876},"dist/plugin/node-esm/chunk-XCZNYAQT.mjs":{"imports":[{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node: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":"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":["definitions"],"inputs":{"src/plugin/definitions.ts":{"bytesInOutput":3089},"src/config.ts":{"bytesInOutput":3686}},"bytes":7016}}}
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  definitions
4
- } from "./chunk-C4YHC2RN.mjs";
4
+ } from "./chunk-XCZNYAQT.mjs";
5
5
 
6
6
  // src/plugin/rollup-plugin.ts
7
7
  var ConfigPlugin = (options = {}) => {
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  definitions
4
- } from "./chunk-C4YHC2RN.mjs";
4
+ } from "./chunk-XCZNYAQT.mjs";
5
5
 
6
6
  // src/plugin/vite-plugin.ts
7
7
  import { resolve } from "node:path";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugin/vite-plugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { resolve } from 'node:path';\n\nimport { type Plugin } from 'vite';\n\nimport { definitions } from './definitions';\nimport { type ConfigPluginOpts } from './types';\n\nexport const ConfigPlugin = (options: ConfigPluginOpts = {}): Plugin => ({\n name: 'dxos-config',\n config: () => {\n // Update paths.\n const configPath = options.root && resolve(options.root, options.configPath ?? 'dx.yml');\n const envPath = options.root && resolve(options.root, options.envPath ?? 'dx-env.yml');\n // TODO(burdon): Change to dx-dev.yml?\n const devPath = options.root && resolve(options.root, options.devPath ?? 'dx-local.yml');\n\n const define = Object.entries(definitions({ ...options, configPath, envPath, devPath })).reduce(\n (define, [key, value]) => {\n define[key] = JSON.stringify(value);\n return define;\n },\n {} as { [key: string]: string },\n );\n\n return { define };\n },\n});\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,eAAe;AAOjB,IAAMC,eAAe,CAACC,UAA4B,CAAC,OAAe;EACvEC,MAAM;EACNC,QAAQ,MAAA;AAEN,UAAMC,aAAaH,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQG,cAAc,QAAA;AAC/E,UAAMG,UAAUN,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQM,WAAW,YAAA;AAEzE,UAAMC,UAAUP,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQO,WAAW,cAAA;AAEzE,UAAMC,SAASC,OAAOC,QAAQC,YAAY;MAAE,GAAGX;MAASG;MAAYG;MAASC;IAAQ,CAAA,CAAA,EAAIK,OACvF,CAACJ,SAAQ,CAACK,KAAKC,KAAAA,MAAM;AACnBN,MAAAA,QAAOK,GAAAA,IAAOE,KAAKC,UAAUF,KAAAA;AAC7B,aAAON;IACT,GACA,CAAC,CAAA;AAGH,WAAO;MAAEA;IAAO;EAClB;AACF;",
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { resolve } from 'node:path';\nimport { type Plugin } from 'vite';\n\nimport { definitions } from './definitions';\nimport { type ConfigPluginOpts } from './types';\n\nexport const ConfigPlugin = (options: ConfigPluginOpts = {}): Plugin => ({\n name: 'dxos-config',\n config: () => {\n // Update paths.\n const configPath = options.root && resolve(options.root, options.configPath ?? 'dx.yml');\n const envPath = options.root && resolve(options.root, options.envPath ?? 'dx-env.yml');\n // TODO(burdon): Change to dx-dev.yml?\n const devPath = options.root && resolve(options.root, options.devPath ?? 'dx-local.yml');\n\n const define = Object.entries(definitions({ ...options, configPath, envPath, devPath })).reduce(\n (define, [key, value]) => {\n define[key] = JSON.stringify(value);\n return define;\n },\n {} as { [key: string]: string },\n );\n\n return { define };\n },\n});\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,eAAe;AAMjB,IAAMC,eAAe,CAACC,UAA4B,CAAC,OAAe;EACvEC,MAAM;EACNC,QAAQ,MAAA;AAEN,UAAMC,aAAaH,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQG,cAAc,QAAA;AAC/E,UAAMG,UAAUN,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQM,WAAW,YAAA;AAEzE,UAAMC,UAAUP,QAAQI,QAAQC,QAAQL,QAAQI,MAAMJ,QAAQO,WAAW,cAAA;AAEzE,UAAMC,SAASC,OAAOC,QAAQC,YAAY;MAAE,GAAGX;MAASG;MAAYG;MAASC;IAAQ,CAAA,CAAA,EAAIK,OACvF,CAACJ,SAAQ,CAACK,KAAKC,KAAAA,MAAM;AACnBN,MAAAA,QAAOK,GAAAA,IAAOE,KAAKC,UAAUF,KAAAA;AAC7B,aAAON;IACT,GACA,CAAC,CAAA;AAGH,WAAO;MAAEA;IAAO;EAClB;AACF;",
6
6
  "names": ["resolve", "ConfigPlugin", "options", "name", "config", "configPath", "root", "resolve", "envPath", "devPath", "define", "Object", "entries", "definitions", "reduce", "key", "value", "JSON", "stringify"]
7
7
  }
@@ -0,0 +1,19 @@
1
+ import * as FileSystem from '@effect/platform/FileSystem';
2
+ import * as Context from 'effect/Context';
3
+ import * as Effect from 'effect/Effect';
4
+ import * as Layer from 'effect/Layer';
5
+ import * as Option from 'effect/Option';
6
+ import { Config } from './config';
7
+ export declare const memoryConfig: Config;
8
+ export declare const defaultConfig: Config;
9
+ declare const ConfigService_base: Context.TagClass<ConfigService, "ConfigService", Config>;
10
+ export declare class ConfigService extends ConfigService_base {
11
+ static layerMemory: Layer.Layer<ConfigService, never, never>;
12
+ static fromConfig: (config: Config) => Layer.Layer<ConfigService, never, never>;
13
+ static load: (args: {
14
+ config: Option.Option<string>;
15
+ profile: string;
16
+ }) => Effect.Effect<Config, import("@effect/platform/Error").PlatformError, FileSystem.FileSystem>;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=config-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../../src/config-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAOxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,eAAO,MAAM,YAAY,QAWvB,CAAC;AAEH,eAAO,MAAM,aAAa,QA+BxB,CAAC;;AAEH,qBAAa,aAAc,SAAQ,kBAAqD;IACtF,MAAM,CAAC,WAAW,2CAA6D;IAE/E,MAAM,CAAC,UAAU,WAAY,MAAM,8CAA0C;IAE7E,MAAM,CAAC,IAAI,SAAU;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,kGAqBrE;CACH"}
@@ -6,7 +6,6 @@ type MappingSpec = Record<string, {
6
6
  }>;
7
7
  /**
8
8
  * Maps the given objects onto a flattened set of (key x values).
9
- *
10
9
  * Expects parsed yaml content of the form:
11
10
  *
12
11
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,MAAM,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAI/E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAGnE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAuC9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,WAAW,EAAE,QAAQ,GAAG,wBAiB5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,WAAW,KAAG,WAepD,CAAC;AAEF,eAAO,MAAM,cAAc,eAAqC,CAAC;AAEjE;;;GAGG;AACH,qBACa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;IAE9B;;;OAGG;gBACS,MAAM,GAAE,WAAgB,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE;IAI/D;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;IAED;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,SAAS,SAAS,EACrB,GAAG,EAAE,CAAC,EACN,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GACjD,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;IAIlD;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IASxD;;;;OAIG;IACH,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CAOjG"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAI/E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAGnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,SAAU,WAAW,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAsC9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,SAAU,WAAW,UAAU,GAAG,wBAiB5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,WAAY,WAAW,KAAG,WAepD,CAAC;AAEF,eAAO,MAAM,cAAc,eAAqC,CAAC;AAEjE;;;GAGG;AACH,qBACa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;IAE9B;;;OAGG;IACH,YAAY,MAAM,GAAE,WAAgB,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAE9D;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;IAED;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,SAAS,SAAS,EACrB,GAAG,EAAE,CAAC,EACN,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GACjD,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAEjD;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAOvD;IAED;;;;OAIG;IACH,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAM/F;CACF"}