@dxos/config 0.8.3 → 0.8.4-main.84f28bd

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 (45) hide show
  1. package/dist/lib/browser/index.mjs +5 -5
  2. package/dist/lib/browser/meta.json +1 -1
  3. package/dist/lib/node-esm/index.mjs +23 -13
  4. package/dist/lib/node-esm/index.mjs.map +3 -3
  5. package/dist/lib/node-esm/meta.json +1 -1
  6. package/dist/plugin/browser/chunk-AN62TER6.mjs +231 -0
  7. package/dist/plugin/browser/chunk-AN62TER6.mjs.map +7 -0
  8. package/dist/plugin/browser/esbuild-plugin.mjs +25 -0
  9. package/dist/plugin/{node/esbuild-plugin.cjs.map → browser/esbuild-plugin.mjs.map} +2 -2
  10. package/dist/plugin/browser/meta.json +1 -0
  11. package/dist/plugin/browser/rollup-plugin.mjs +19 -0
  12. package/dist/plugin/{node/rollup-plugin.cjs.map → browser/rollup-plugin.mjs.map} +2 -2
  13. package/dist/plugin/browser/vite-plugin.mjs +30 -0
  14. package/dist/plugin/browser/vite-plugin.mjs.map +7 -0
  15. package/dist/plugin/node-esm/{chunk-PAFU3TJI.mjs → chunk-HYTOW36U.mjs} +19 -9
  16. package/dist/plugin/node-esm/chunk-HYTOW36U.mjs.map +7 -0
  17. package/dist/plugin/node-esm/esbuild-plugin.mjs +2 -2
  18. package/dist/plugin/node-esm/meta.json +1 -1
  19. package/dist/plugin/node-esm/rollup-plugin.mjs +2 -2
  20. package/dist/plugin/node-esm/vite-plugin.mjs +6 -6
  21. package/dist/plugin/node-esm/vite-plugin.mjs.map +3 -3
  22. package/dist/types/src/plugin/definitions.d.ts +3 -3
  23. package/dist/types/src/plugin/definitions.d.ts.map +1 -1
  24. package/dist/types/src/plugin/types.d.ts +4 -0
  25. package/dist/types/src/plugin/types.d.ts.map +1 -1
  26. package/dist/types/src/plugin/vite-plugin.d.ts +1 -1
  27. package/dist/types/src/plugin/vite-plugin.d.ts.map +1 -1
  28. package/dist/types/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +7 -6
  30. package/src/plugin/definitions.ts +3 -3
  31. package/src/plugin/types.ts +5 -0
  32. package/src/plugin/vite-plugin.ts +8 -5
  33. package/src/testing/build.js +1 -1
  34. package/README.yml +0 -1
  35. package/dist/lib/node/index.cjs +0 -357
  36. package/dist/lib/node/index.cjs.map +0 -7
  37. package/dist/lib/node/meta.json +0 -1
  38. package/dist/plugin/node/chunk-SLXRWZWZ.cjs +0 -249
  39. package/dist/plugin/node/chunk-SLXRWZWZ.cjs.map +0 -7
  40. package/dist/plugin/node/esbuild-plugin.cjs +0 -45
  41. package/dist/plugin/node/meta.json +0 -1
  42. package/dist/plugin/node/rollup-plugin.cjs +0 -39
  43. package/dist/plugin/node/vite-plugin.cjs +0 -50
  44. package/dist/plugin/node/vite-plugin.cjs.map +0 -7
  45. package/dist/plugin/node-esm/chunk-PAFU3TJI.mjs.map +0 -7
@@ -1,249 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_SLXRWZWZ_exports = {};
30
- __export(chunk_SLXRWZWZ_exports, {
31
- definitions: () => definitions
32
- });
33
- module.exports = __toCommonJS(chunk_SLXRWZWZ_exports);
34
- var import_js_yaml = __toESM(require("js-yaml"));
35
- var import_node_child_process = require("node:child_process");
36
- var import_node_fs = require("node:fs");
37
- var import_node_path = require("node:path");
38
- var import_pkg_up = __toESM(require("pkg-up"));
39
- var import_log = require("@dxos/log");
40
- var import_util = require("@dxos/util");
41
- var import_boolean = require("boolean");
42
- var import_lodash = __toESM(require("lodash.defaultsdeep"));
43
- var import_lodash2 = __toESM(require("lodash.ismatch"));
44
- var import_protocols = require("@dxos/protocols");
45
- var import_proto = require("@dxos/protocols/proto");
46
- var import_tracing = require("@dxos/tracing");
47
- var import_util2 = require("@dxos/util");
48
- function _ts_decorate(decorators, target, key, desc) {
49
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52
- return c > 3 && r && Object.defineProperty(target, key, r), r;
53
- }
54
- var configRootType = import_proto.schema.getCodecForType("dxos.config.Config");
55
- var mapFromKeyValues = (spec, values) => {
56
- const config = {};
57
- for (const [key, { path, type }] of Object.entries(spec)) {
58
- let value = values[key];
59
- if (value !== void 0) {
60
- if (type) {
61
- switch (type) {
62
- case "boolean": {
63
- value = (0, import_boolean.boolean)(value);
64
- break;
65
- }
66
- case "number": {
67
- value = Number(value);
68
- break;
69
- }
70
- case "string": {
71
- break;
72
- }
73
- case "json": {
74
- value = value ? JSON.parse(value) : null;
75
- break;
76
- }
77
- default: {
78
- throw new Error(`Invalid type: ${type}`);
79
- }
80
- }
81
- }
82
- (0, import_util2.setDeep)(config, path.split("."), value);
83
- }
84
- }
85
- return config;
86
- };
87
- var validateConfig = (config) => {
88
- if (!("version" in config)) {
89
- throw new import_protocols.InvalidConfigError("Version not specified");
90
- }
91
- if (config?.version !== 1) {
92
- throw new import_protocols.InvalidConfigError(`Invalid config version: ${config.version}`);
93
- }
94
- const error = configRootType.protoType.verify(config);
95
- if (error) {
96
- throw new import_protocols.InvalidConfigError(error);
97
- }
98
- return config;
99
- };
100
- var ConfigResource = Symbol.for("dxos.resource.Config");
101
- var Config = class {
102
- /**
103
- * Creates an immutable instance.
104
- * @constructor
105
- */
106
- constructor(config = {}, ...objects) {
107
- this._config = validateConfig((0, import_lodash.default)(config, ...objects, {
108
- version: 1
109
- }));
110
- }
111
- /**
112
- * Returns an immutable config JSON object.
113
- */
114
- get values() {
115
- return this._config;
116
- }
117
- /**
118
- * Returns the given config property.
119
- *
120
- * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.
121
- * @param defaultValue Default value to return if option is not present in the config.
122
- * @returns The config value or undefined if the option is not present.
123
- */
124
- get(key, defaultValue) {
125
- return (0, import_util2.getDeep)(this._config, key.split(".")) ?? defaultValue;
126
- }
127
- /**
128
- * Get unique key.
129
- */
130
- find(path, test) {
131
- const values = (0, import_util2.getDeep)(this._config, path.split("."));
132
- if (!Array.isArray(values)) {
133
- return;
134
- }
135
- return values.find((value) => (0, import_lodash2.default)(value, test));
136
- }
137
- /**
138
- * Returns the given config property or throw if it doesn't exist.
139
- *
140
- * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.
141
- */
142
- getOrThrow(key) {
143
- const value = (0, import_util2.getDeep)(this._config, key.split("."));
144
- if (!value) {
145
- throw new Error(`Config option not present: ${key}`);
146
- }
147
- return value;
148
- }
149
- };
150
- Config = _ts_decorate([
151
- import_tracing.trace.resource({
152
- annotation: ConfigResource
153
- })
154
- ], Config);
155
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/config/src/plugin/definitions.ts";
156
- var CWD = process.cwd();
157
- var definitions = ({ configPath, envPath, devPath, mode = process.env.NODE_ENV, publicUrl = "", env }) => {
158
- const KEYS_TO_FILE = {
159
- __CONFIG_DEFAULTS__: configPath?.length ? configPath : (0, import_node_path.resolve)(CWD, "dx.yml"),
160
- __CONFIG_ENVS__: envPath?.length ? envPath : (0, import_node_path.resolve)(CWD, "dx-env.yml")
161
- };
162
- if (mode !== "production") {
163
- KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? (0, import_node_path.resolve)(CWD, "dx-local.yml");
164
- }
165
- return Object.entries(KEYS_TO_FILE).reduce((prev, [key, value]) => {
166
- let content = {};
167
- try {
168
- content = import_js_yaml.default.load((0, import_node_fs.readFileSync)(value, "utf-8"));
169
- if (key === "__CONFIG_ENVS__") {
170
- content = mapFromKeyValues(content, process.env);
171
- }
172
- if (key === "__CONFIG_DEFAULTS__") {
173
- Object.entries(process.env).forEach(([key2, value2]) => {
174
- if (key2.startsWith("DX_") || env?.includes(key2)) {
175
- (0, import_util.setDeep)(content, [
176
- "runtime",
177
- "app",
178
- "env",
179
- key2
180
- ], value2);
181
- }
182
- });
183
- try {
184
- const timestamp = (/* @__PURE__ */ new Date()).toISOString();
185
- const commitHash = process.env.DX_COMMIT_HASH ?? (0, import_node_child_process.execSync)("git rev-parse --short HEAD", {
186
- encoding: "utf-8"
187
- }).replace("\n", "");
188
- const packagePath = import_pkg_up.default.sync();
189
- const packageJson = packagePath && JSON.parse((0, import_node_fs.readFileSync)(packagePath, "utf-8"));
190
- (0, import_util.setDeep)(content, [
191
- "runtime",
192
- "app",
193
- "build",
194
- "timestamp"
195
- ], timestamp);
196
- (0, import_util.setDeep)(content, [
197
- "runtime",
198
- "app",
199
- "build",
200
- "commitHash"
201
- ], commitHash);
202
- (0, import_util.setDeep)(content, [
203
- "runtime",
204
- "app",
205
- "build",
206
- "version"
207
- ], packageJson?.version);
208
- } catch {
209
- }
210
- }
211
- } catch (err) {
212
- if (err.message.includes("YAMLException")) {
213
- import_log.log.error(`Failed to parse file ${value}:`, err, {
214
- F: __dxlog_file,
215
- L: 71,
216
- S: void 0,
217
- C: (f, a) => f(...a)
218
- });
219
- } else {
220
- (0, import_log.log)(`Failed to load file ${value}:`, err, {
221
- F: __dxlog_file,
222
- L: 73,
223
- S: void 0,
224
- C: (f, a) => f(...a)
225
- });
226
- }
227
- if (key === "__CONFIG_DEFAULTS__") {
228
- throw new Error(`Failed to load default config file from ${value}`);
229
- }
230
- }
231
- return {
232
- ...prev,
233
- [key]: content
234
- };
235
- }, {
236
- __DXOS_CONFIG__: {
237
- dynamic: mode === "production",
238
- publicUrl
239
- },
240
- __CONFIG_DEFAULTS__: {},
241
- __CONFIG_ENVS__: {},
242
- __CONFIG_LOCAL__: {}
243
- });
244
- };
245
- // Annotate the CommonJS export names for ESM import in node:
246
- 0 && (module.exports = {
247
- definitions
248
- });
249
- //# sourceMappingURL=chunk-SLXRWZWZ.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugin/definitions.ts", "../../../src/config.ts"],
4
- "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport yaml from 'js-yaml';\nimport { execSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { log } from '@dxos/log';\nimport { setDeep } from '@dxos/util';\n\nimport { type ConfigPluginOpts } from './types';\nimport { mapFromKeyValues } from '../config';\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\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 let content = {};\n\n try {\n content = yaml.load(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 __DXOS_CONFIG__: { dynamic: mode === 'production', publicUrl },\n __CONFIG_DEFAULTS__: {},\n __CONFIG_ENVS__: {},\n __CONFIG_LOCAL__: {},\n },\n );\n};\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { boolean } from 'boolean';\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 *\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\n if (value !== undefined) {\n if (type) {\n switch (type) {\n case 'boolean': {\n value = boolean(value);\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('Version not specified');\n }\n\n if (config?.version !== 1) {\n throw new InvalidConfigError(`Invalid config version: ${config.version}`);\n }\n\n const error = configRootType.protoType.verify(config);\n if (error) {\n throw new InvalidConfigError(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": ["import_lodash", "import_util", "configRootType", "schema", "getCodecForType", "mapFromKeyValues", "spec", "values", "config", "key", "path", "type", "Object", "entries", "value", "undefined", "boolean", "Number", "JSON", "parse", "Error", "setDeep", "split", "validateConfig", "InvalidConfigError", "version", "error", "protoType", "verify", "ConfigResource", "Symbol", "for", "Config", "objects", "_config", "defaultsDeep", "get", "defaultValue", "getDeep", "find", "test", "Array", "isArray", "isMatch", "getOrThrow", "resource", "annotation", "CWD", "process", "cwd", "definitions", "configPath", "envPath", "devPath", "mode", "env", "NODE_ENV", "publicUrl", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "length", "resolve", "__CONFIG_ENVS__", "__CONFIG_LOCAL__", "reduce", "prev", "content", "yaml", "load", "readFileSync", "forEach", "startsWith", "includes", "timestamp", "Date", "toISOString", "commitHash", "DX_COMMIT_HASH", "execSync", "encoding", "replace", "packagePath", "pkgUp", "sync", "packageJson", "err", "message", "log", "__DXOS_CONFIG__", "dynamic"]
7
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var esbuild_plugin_exports = {};
20
- __export(esbuild_plugin_exports, {
21
- ConfigPlugin: () => ConfigPlugin
22
- });
23
- module.exports = __toCommonJS(esbuild_plugin_exports);
24
- var import_chunk_SLXRWZWZ = require("./chunk-SLXRWZWZ.cjs");
25
- var ConfigPlugin = (options = {}) => {
26
- return {
27
- name: "dxos-config",
28
- setup: ({ initialOptions }) => {
29
- const esbuildOptions = initialOptions;
30
- esbuildOptions.define ||= {};
31
- Object.entries((0, import_chunk_SLXRWZWZ.definitions)({
32
- ...options,
33
- mode: process.env.NODE_ENV
34
- })).reduce((define, [key, value]) => {
35
- define[key] = JSON.stringify(value);
36
- return define;
37
- }, esbuildOptions.define);
38
- }
39
- };
40
- };
41
- // Annotate the CommonJS export names for ESM import in node:
42
- 0 && (module.exports = {
43
- ConfigPlugin
44
- });
45
- //# sourceMappingURL=esbuild-plugin.cjs.map
@@ -1 +0,0 @@
1
- {"inputs":{"packages/sdk/config/src/config.ts":{"bytes":15747,"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"},"packages/sdk/config/src/plugin/definitions.ts":{"bytes":11670,"imports":[{"path":"js-yaml","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":"pkg-up","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/config/src/config.ts","kind":"import-statement","original":"../config"}],"format":"esm"},"packages/sdk/config/src/plugin/esbuild-plugin.ts":{"bytes":2584,"imports":[{"path":"packages/sdk/config/src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"packages/sdk/config/src/plugin/rollup-plugin.ts":{"bytes":2068,"imports":[{"path":"packages/sdk/config/src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"packages/sdk/config/src/plugin/vite-plugin.ts":{"bytes":3319,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"packages/sdk/config/src/plugin/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"}},"outputs":{"packages/sdk/config/dist/plugin/node/esbuild-plugin.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1346},"packages/sdk/config/dist/plugin/node/esbuild-plugin.cjs":{"imports":[{"path":"packages/sdk/config/dist/plugin/node/chunk-SLXRWZWZ.cjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"packages/sdk/config/src/plugin/esbuild-plugin.ts","inputs":{"packages/sdk/config/src/plugin/esbuild-plugin.ts":{"bytesInOutput":443}},"bytes":621},"packages/sdk/config/dist/plugin/node/rollup-plugin.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1102},"packages/sdk/config/dist/plugin/node/rollup-plugin.cjs":{"imports":[{"path":"packages/sdk/config/dist/plugin/node/chunk-SLXRWZWZ.cjs","kind":"import-statement"}],"exports":["ConfigPlugin"],"entryPoint":"packages/sdk/config/src/plugin/rollup-plugin.ts","inputs":{"packages/sdk/config/src/plugin/rollup-plugin.ts":{"bytesInOutput":288}},"bytes":464},"packages/sdk/config/dist/plugin/node/vite-plugin.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1707},"packages/sdk/config/dist/plugin/node/vite-plugin.cjs":{"imports":[{"path":"packages/sdk/config/dist/plugin/node/chunk-SLXRWZWZ.cjs","kind":"import-statement"},{"path":"node:path","kind":"import-statement","external":true}],"exports":["ConfigPlugin"],"entryPoint":"packages/sdk/config/src/plugin/vite-plugin.ts","inputs":{"packages/sdk/config/src/plugin/vite-plugin.ts":{"bytesInOutput":634}},"bytes":806},"packages/sdk/config/dist/plugin/node/chunk-SLXRWZWZ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12974},"packages/sdk/config/dist/plugin/node/chunk-SLXRWZWZ.cjs":{"imports":[{"path":"js-yaml","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":"pkg-up","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":{"packages/sdk/config/src/plugin/definitions.ts":{"bytesInOutput":3044},"packages/sdk/config/src/config.ts":{"bytesInOutput":3576}},"bytes":6828}}}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var rollup_plugin_exports = {};
20
- __export(rollup_plugin_exports, {
21
- ConfigPlugin: () => ConfigPlugin
22
- });
23
- module.exports = __toCommonJS(rollup_plugin_exports);
24
- var import_chunk_SLXRWZWZ = require("./chunk-SLXRWZWZ.cjs");
25
- var ConfigPlugin = (options = {}) => {
26
- const contents = Object.entries((0, import_chunk_SLXRWZWZ.definitions)({
27
- ...options,
28
- mode: process.env.NODE_ENV
29
- })).map(([key, value]) => `globalThis.${key} = ${JSON.stringify(value)};`).join("\n");
30
- return {
31
- name: "dxos-config",
32
- banner: contents
33
- };
34
- };
35
- // Annotate the CommonJS export names for ESM import in node:
36
- 0 && (module.exports = {
37
- ConfigPlugin
38
- });
39
- //# sourceMappingURL=rollup-plugin.cjs.map
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var vite_plugin_exports = {};
20
- __export(vite_plugin_exports, {
21
- ConfigPlugin: () => ConfigPlugin
22
- });
23
- module.exports = __toCommonJS(vite_plugin_exports);
24
- var import_chunk_SLXRWZWZ = require("./chunk-SLXRWZWZ.cjs");
25
- var import_node_path = require("node:path");
26
- var ConfigPlugin = (options = {}) => ({
27
- name: "dxos-config",
28
- config: ({ root }) => {
29
- const configPath = root && (0, import_node_path.resolve)(root, options.configPath ?? "dx.yml");
30
- const envPath = root && (0, import_node_path.resolve)(root, options.envPath ?? "dx-env.yml");
31
- const devPath = root && (0, import_node_path.resolve)(root, options.devPath ?? "dx-local.yml");
32
- const define = Object.entries((0, import_chunk_SLXRWZWZ.definitions)({
33
- ...options,
34
- configPath,
35
- envPath,
36
- devPath
37
- })).reduce((define2, [key, value]) => {
38
- define2[key] = JSON.stringify(value);
39
- return define2;
40
- }, {});
41
- return {
42
- define
43
- };
44
- }
45
- });
46
- // Annotate the CommonJS export names for ESM import in node:
47
- 0 && (module.exports = {
48
- ConfigPlugin
49
- });
50
- //# sourceMappingURL=vite-plugin.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugin/vite-plugin.ts"],
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: ({ root }) => {\n const configPath = root && resolve(root, options.configPath ?? 'dx.yml');\n const envPath = root && resolve(root, options.envPath ?? 'dx-env.yml');\n const devPath = root && resolve(root, options.devPath ?? 'dx-local.yml');\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,uBAAwB;AAMjB,IAAMA,eAAe,CAACC,UAA4B,CAAC,OAAe;EACvEC,MAAM;EACNC,QAAQ,CAAC,EAAEC,KAAI,MAAE;AACf,UAAMC,aAAaD,YAAQE,0BAAQF,MAAMH,QAAQI,cAAc,QAAA;AAC/D,UAAME,UAAUH,YAAQE,0BAAQF,MAAMH,QAAQM,WAAW,YAAA;AACzD,UAAMC,UAAUJ,YAAQE,0BAAQF,MAAMH,QAAQO,WAAW,cAAA;AACzD,UAAMC,SAASC,OAAOC,YAAQC,mCAAY;MAAE,GAAGX;MAASI;MAAYE;MAASC;IAAQ,CAAA,CAAA,EAAIK,OACvF,CAACJ,SAAQ,CAACK,KAAKC,KAAAA,MAAM;AACnBN,cAAOK,GAAAA,IAAOE,KAAKC,UAAUF,KAAAA;AAC7B,aAAON;IACT,GACA,CAAC,CAAA;AAGH,WAAO;MAAEA;IAAO;EAClB;AACF;",
6
- "names": ["ConfigPlugin", "options", "name", "config", "root", "configPath", "resolve", "envPath", "devPath", "define", "Object", "entries", "definitions", "reduce", "key", "value", "JSON", "stringify"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugin/definitions.ts", "../../../src/config.ts"],
4
- "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport yaml from 'js-yaml';\nimport { execSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport pkgUp from 'pkg-up';\n\nimport { log } from '@dxos/log';\nimport { setDeep } from '@dxos/util';\n\nimport { type ConfigPluginOpts } from './types';\nimport { mapFromKeyValues } from '../config';\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\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 let content = {};\n\n try {\n content = yaml.load(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 __DXOS_CONFIG__: { dynamic: mode === 'production', publicUrl },\n __CONFIG_DEFAULTS__: {},\n __CONFIG_ENVS__: {},\n __CONFIG_LOCAL__: {},\n },\n );\n};\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { boolean } from 'boolean';\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 *\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\n if (value !== undefined) {\n if (type) {\n switch (type) {\n case 'boolean': {\n value = boolean(value);\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('Version not specified');\n }\n\n if (config?.version !== 1) {\n throw new InvalidConfigError(`Invalid config version: ${config.version}`);\n }\n\n const error = configRootType.protoType.verify(config);\n if (error) {\n throw new InvalidConfigError(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": ["yaml", "execSync", "readFileSync", "resolve", "pkgUp", "log", "setDeep", "boolean", "defaultsDeep", "isMatch", "InvalidConfigError", "schema", "trace", "getDeep", "setDeep", "configRootType", "schema", "getCodecForType", "mapFromKeyValues", "spec", "values", "config", "key", "path", "type", "Object", "entries", "value", "undefined", "boolean", "Number", "JSON", "parse", "Error", "setDeep", "split", "validateConfig", "config", "InvalidConfigError", "version", "error", "configRootType", "protoType", "verify", "ConfigResource", "Symbol", "for", "Config", "objects", "_config", "defaultsDeep", "values", "get", "key", "defaultValue", "getDeep", "split", "find", "path", "test", "Array", "isArray", "value", "isMatch", "getOrThrow", "Error", "resource", "annotation", "CWD", "process", "cwd", "definitions", "configPath", "envPath", "devPath", "mode", "env", "NODE_ENV", "publicUrl", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "length", "resolve", "__CONFIG_ENVS__", "__CONFIG_LOCAL__", "Object", "entries", "reduce", "prev", "key", "value", "content", "yaml", "load", "readFileSync", "mapFromKeyValues", "forEach", "startsWith", "includes", "setDeep", "timestamp", "Date", "toISOString", "commitHash", "DX_COMMIT_HASH", "execSync", "encoding", "replace", "packagePath", "pkgUp", "sync", "packageJson", "JSON", "parse", "version", "err", "message", "log", "error", "Error", "__DXOS_CONFIG__", "dynamic"]
7
- }