@effect/platform 0.48.25 → 0.48.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PlatformConfigProvider/package.json +6 -0
- package/dist/cjs/Error.js +7 -1
- package/dist/cjs/Error.js.map +1 -1
- package/dist/cjs/PlatformConfigProvider.js +92 -0
- package/dist/cjs/PlatformConfigProvider.js.map +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/dts/Error.d.ts +5 -0
- package/dist/dts/Error.d.ts.map +1 -1
- package/dist/dts/PlatformConfigProvider.d.ts +31 -0
- package/dist/dts/PlatformConfigProvider.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/Error.js +5 -0
- package/dist/esm/Error.js.map +1 -1
- package/dist/esm/PlatformConfigProvider.js +57 -0
- package/dist/esm/PlatformConfigProvider.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +11 -3
- package/src/Error.ts +6 -0
- package/src/PlatformConfigProvider.ts +113 -0
- package/src/index.ts +5 -0
package/dist/cjs/Error.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TypeIdError = exports.SystemError = exports.RefailError = exports.PlatformErrorTypeId = exports.BadArgument = void 0;
|
|
6
|
+
exports.isPlatformError = exports.TypeIdError = exports.SystemError = exports.RefailError = exports.PlatformErrorTypeId = exports.BadArgument = void 0;
|
|
7
7
|
var Data = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Data"));
|
|
8
8
|
var Predicate = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Predicate"));
|
|
9
9
|
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/error.js"));
|
|
@@ -37,10 +37,16 @@ function _interopRequireWildcard(e, r) {
|
|
|
37
37
|
* @category type id
|
|
38
38
|
*/
|
|
39
39
|
const PlatformErrorTypeId = exports.PlatformErrorTypeId = internal.PlatformErrorTypeId;
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category refinements
|
|
43
|
+
*/
|
|
44
|
+
const isPlatformError = u => Predicate.hasProperty(u, PlatformErrorTypeId);
|
|
40
45
|
/**
|
|
41
46
|
* @since 1.0.0
|
|
42
47
|
* @category error
|
|
43
48
|
*/
|
|
49
|
+
exports.isPlatformError = isPlatformError;
|
|
44
50
|
const TypeIdError = (typeId, tag) => {
|
|
45
51
|
class Base extends Data.Error {
|
|
46
52
|
_tag = tag;
|
package/dist/cjs/Error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["Data","_interopRequireWildcard","require","Predicate","internal","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PlatformErrorTypeId","exports","TypeIdError","typeId","tag","Base","Error","_tag","prototype","name","RefailError","constructor","props","
|
|
1
|
+
{"version":3,"file":"Error.js","names":["Data","_interopRequireWildcard","require","Predicate","internal","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PlatformErrorTypeId","exports","isPlatformError","hasProperty","TypeIdError","typeId","tag","Base","Error","_tag","prototype","name","RefailError","constructor","props","error","stack","message","toJSON","JSON","stringify","String","BadArgument","badArgument","SystemError","systemError"],"sources":["../../src/Error.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.layerFileTreeAdd = exports.layerFileTree = exports.fromFileTree = void 0;
|
|
7
|
+
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
|
|
8
|
+
var ConfigError = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/ConfigError"));
|
|
9
|
+
var ConfigProvider = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/ConfigProvider"));
|
|
10
|
+
var PathPatch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/ConfigProviderPathPatch"));
|
|
11
|
+
var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Context"));
|
|
12
|
+
var DefaultServices = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/DefaultServices"));
|
|
13
|
+
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
|
|
14
|
+
var Either = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Either"));
|
|
15
|
+
var HashSet = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/HashSet"));
|
|
16
|
+
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
|
|
17
|
+
var ReadonlyArray = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/ReadonlyArray"));
|
|
18
|
+
var _Error = /*#__PURE__*/require("./Error.js");
|
|
19
|
+
var FileSystem = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./FileSystem.js"));
|
|
20
|
+
var Path = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Path.js"));
|
|
21
|
+
function _getRequireWildcardCache(e) {
|
|
22
|
+
if ("function" != typeof WeakMap) return null;
|
|
23
|
+
var r = new WeakMap(),
|
|
24
|
+
t = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function (e) {
|
|
26
|
+
return e ? t : r;
|
|
27
|
+
})(e);
|
|
28
|
+
}
|
|
29
|
+
function _interopRequireWildcard(e, r) {
|
|
30
|
+
if (!r && e && e.__esModule) return e;
|
|
31
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
32
|
+
default: e
|
|
33
|
+
};
|
|
34
|
+
var t = _getRequireWildcardCache(r);
|
|
35
|
+
if (t && t.has(e)) return t.get(e);
|
|
36
|
+
var n = {
|
|
37
|
+
__proto__: null
|
|
38
|
+
},
|
|
39
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
40
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
41
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
42
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
43
|
+
}
|
|
44
|
+
return n.default = e, t && t.set(e, n), n;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @category constructors
|
|
53
|
+
*/
|
|
54
|
+
const fromFileTree = options => Effect.Do.pipe(Effect.bind("path", () => Path.Path), Effect.bind("fs", () => FileSystem.FileSystem), Effect.map(({
|
|
55
|
+
fs,
|
|
56
|
+
path
|
|
57
|
+
}) => {
|
|
58
|
+
const rootDirectory = options?.rootDirectory ?? "/";
|
|
59
|
+
const parseConfig = primitive => value => Either.map(primitive.parse(value.trim()), ReadonlyArray.of);
|
|
60
|
+
const readConfig = (filePath, primitive) => Effect.flatMap(fs.readFileString(filePath), parseConfig(primitive));
|
|
61
|
+
const resolveEnumerableDirs = segments => segments.length === 0 ? [] : [path.join(...segments)];
|
|
62
|
+
const resolveFilePath = pathSegments => path.join(rootDirectory, ...pathSegments);
|
|
63
|
+
const sourceError = (pathSegments, error) => ConfigError.SourceUnavailable([...pathSegments], error.message, Cause.fail(error));
|
|
64
|
+
const pathNotFoundError = pathSegments => ConfigError.MissingData([...pathSegments], `Path ${resolveFilePath(pathSegments)} not found`);
|
|
65
|
+
const handlePlatformError = pathSegments => error => error._tag === "SystemError" && error.reason === "NotFound" ? Effect.fail(pathNotFoundError(pathSegments)) : Effect.fail(sourceError(pathSegments, error));
|
|
66
|
+
return ConfigProvider.fromFlat(ConfigProvider.makeFlat({
|
|
67
|
+
load: (pathSegments, config) => Effect.catchIf(readConfig(resolveFilePath(pathSegments), config), _Error.isPlatformError, handlePlatformError(pathSegments)),
|
|
68
|
+
enumerateChildren: pathSegments => Effect.forEach(resolveEnumerableDirs(pathSegments), dir => fs.readDirectory(dir)).pipe(Effect.map(files => HashSet.fromIterable(files.flat())), Effect.catchIf(_Error.isPlatformError, handlePlatformError(pathSegments))),
|
|
69
|
+
patch: PathPatch.empty
|
|
70
|
+
}));
|
|
71
|
+
}));
|
|
72
|
+
/**
|
|
73
|
+
* Add the file tree ConfigProvider to the environment, falling back to the default ConfigProvider.
|
|
74
|
+
*
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
* @category layers
|
|
77
|
+
*/
|
|
78
|
+
exports.fromFileTree = fromFileTree;
|
|
79
|
+
const layerFileTreeAdd = options => fromFileTree(options).pipe(Effect.map(provider => Layer.fiberRefLocallyScopedWith(DefaultServices.currentServices, services => {
|
|
80
|
+
const current = Context.get(services, ConfigProvider.ConfigProvider);
|
|
81
|
+
return Context.add(services, ConfigProvider.ConfigProvider, ConfigProvider.orElse(provider, () => current));
|
|
82
|
+
})), Layer.unwrapEffect);
|
|
83
|
+
/**
|
|
84
|
+
* Add the file tree ConfigProvider to the environment, replacing the default ConfigProvider.
|
|
85
|
+
*
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
* @category layers
|
|
88
|
+
*/
|
|
89
|
+
exports.layerFileTreeAdd = layerFileTreeAdd;
|
|
90
|
+
const layerFileTree = options => fromFileTree(options).pipe(Effect.map(Layer.setConfigProvider), Layer.unwrapEffect);
|
|
91
|
+
exports.layerFileTree = layerFileTree;
|
|
92
|
+
//# sourceMappingURL=PlatformConfigProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformConfigProvider.js","names":["Cause","_interopRequireWildcard","require","ConfigError","ConfigProvider","PathPatch","Context","DefaultServices","Effect","Either","HashSet","Layer","ReadonlyArray","_Error","FileSystem","Path","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","fromFileTree","options","Do","pipe","bind","map","fs","path","rootDirectory","parseConfig","primitive","value","parse","trim","of","readConfig","filePath","flatMap","readFileString","resolveEnumerableDirs","segments","length","join","resolveFilePath","pathSegments","sourceError","error","SourceUnavailable","message","fail","pathNotFoundError","MissingData","handlePlatformError","_tag","reason","fromFlat","makeFlat","load","config","catchIf","isPlatformError","enumerateChildren","forEach","dir","readDirectory","files","fromIterable","flat","patch","empty","exports","layerFileTreeAdd","provider","fiberRefLocallyScopedWith","currentServices","services","current","add","orElse","unwrapEffect","layerFileTree","setConfigProvider"],"sources":["../../src/PlatformConfigProvider.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WorkerRunner = exports.WorkerError = exports.Worker = exports.Transferable = exports.Terminal = exports.Template = exports.Socket = exports.Runtime = exports.PlatformLogger = exports.Path = exports.KeyValueStore = exports.HttpServer = exports.HttpClient = exports.FileSystem = exports.Error = exports.Effectify = exports.CommandExecutor = exports.Command = void 0;
|
|
6
|
+
exports.WorkerRunner = exports.WorkerError = exports.Worker = exports.Transferable = exports.Terminal = exports.Template = exports.Socket = exports.Runtime = exports.PlatformLogger = exports.PlatformConfigProvider = exports.Path = exports.KeyValueStore = exports.HttpServer = exports.HttpClient = exports.FileSystem = exports.Error = exports.Effectify = exports.CommandExecutor = exports.Command = void 0;
|
|
7
7
|
var _Command = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Command.js"));
|
|
8
8
|
exports.Command = _Command;
|
|
9
9
|
var _CommandExecutor = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./CommandExecutor.js"));
|
|
@@ -22,6 +22,8 @@ var _KeyValueStore = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require(
|
|
|
22
22
|
exports.KeyValueStore = _KeyValueStore;
|
|
23
23
|
var _Path = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Path.js"));
|
|
24
24
|
exports.Path = _Path;
|
|
25
|
+
var _PlatformConfigProvider = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./PlatformConfigProvider.js"));
|
|
26
|
+
exports.PlatformConfigProvider = _PlatformConfigProvider;
|
|
25
27
|
var _PlatformLogger = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./PlatformLogger.js"));
|
|
26
28
|
exports.PlatformLogger = _PlatformLogger;
|
|
27
29
|
var _Runtime = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Runtime.js"));
|
package/dist/dts/Error.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ export declare const PlatformErrorTypeId: unique symbol;
|
|
|
13
13
|
* @category type id
|
|
14
14
|
*/
|
|
15
15
|
export type PlatformErrorTypeId = typeof PlatformErrorTypeId;
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category refinements
|
|
19
|
+
*/
|
|
20
|
+
export declare const isPlatformError: (u: unknown) => u is PlatformError;
|
|
16
21
|
/**
|
|
17
22
|
* @since 1.0.0
|
|
18
23
|
* @category error
|
package/dist/dts/Error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAqC,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA;AAE5D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW,kEACd,MAAM,OACT,GAAG;mBAMW,GAAG;eASvB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,kEACd,MAAM,OACT,GAAG;oBAE6B,OAAO;;mBAIzB,GAAG;oBAAkB,OAAO;eAwBhD,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC;;;OAGG;IACH,UAAiB,IAAI;QACnB,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAA;QAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;QAC1G,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KACzB;IAED;;OAEG;IACH,KAAY,cAAc,GAAG,mBAAmB,GAAG,MAAM,CAAA;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,IAAI;IACrD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,WAAkC,CAAA;AAExH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,aAAa,GACb,MAAM,GACN,aAAa,GACb,UAAU,GACV,kBAAkB,GAClB,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,WAAW,CAAA;AAEf;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,IAAI;IACrD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,WAAkC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAqC,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA;AAE5D;;;GAGG;AACH,eAAO,MAAM,eAAe,MAAO,OAAO,uBAAsE,CAAA;AAEhH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW,kEACd,MAAM,OACT,GAAG;mBAMW,GAAG;eASvB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,kEACd,MAAM,OACT,GAAG;oBAE6B,OAAO;;mBAIzB,GAAG;oBAAkB,OAAO;eAwBhD,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC;;;OAGG;IACH,UAAiB,IAAI;QACnB,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAA;QAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;QAC1G,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KACzB;IAED;;OAEG;IACH,KAAY,cAAc,GAAG,mBAAmB,GAAG,MAAM,CAAA;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,IAAI;IACrD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,WAAkC,CAAA;AAExH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,aAAa,GACb,MAAM,GACN,aAAa,GACb,UAAU,GACV,kBAAkB,GAClB,UAAU,GACV,eAAe,GACf,SAAS,GACT,YAAY,GACZ,WAAW,CAAA;AAEf;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,IAAI;IACrD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,WAAkC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as FileSystem from "./FileSystem.js";
|
|
5
|
+
import * as Path from "./Path.js";
|
|
6
|
+
/**
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
* @category constructors
|
|
9
|
+
*/
|
|
10
|
+
export declare const fromFileTree: (options?: {
|
|
11
|
+
readonly rootDirectory?: string;
|
|
12
|
+
}) => Effect.Effect<ConfigProvider.ConfigProvider, never, Path.Path | FileSystem.FileSystem>;
|
|
13
|
+
/**
|
|
14
|
+
* Add the file tree ConfigProvider to the environment, falling back to the default ConfigProvider.
|
|
15
|
+
*
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category layers
|
|
18
|
+
*/
|
|
19
|
+
export declare const layerFileTreeAdd: (options?: {
|
|
20
|
+
readonly rootDirectory?: string;
|
|
21
|
+
}) => Layer.Layer<never, never, Path.Path | FileSystem.FileSystem>;
|
|
22
|
+
/**
|
|
23
|
+
* Add the file tree ConfigProvider to the environment, replacing the default ConfigProvider.
|
|
24
|
+
*
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
* @category layers
|
|
27
|
+
*/
|
|
28
|
+
export declare const layerFileTree: (options?: {
|
|
29
|
+
readonly rootDirectory?: string;
|
|
30
|
+
}) => Layer.Layer<never, never, Path.Path | FileSystem.FileSystem>;
|
|
31
|
+
//# sourceMappingURL=PlatformConfigProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformConfigProvider.d.ts","sourceRoot":"","sources":["../../src/PlatformConfigProvider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAIvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;GAGG;AACH,eAAO,MAAM,YAAY,aAAc;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,KAAG,aAAa,CAAC,6BAA6B,EAAE,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAsDtF,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,KAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAS5D,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,aAAc;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,KAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAI5D,CAAA"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAA;AAErE;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA"}
|
package/dist/esm/Error.js
CHANGED
|
@@ -6,6 +6,11 @@ import * as internal from "./internal/error.js";
|
|
|
6
6
|
* @category type id
|
|
7
7
|
*/
|
|
8
8
|
export const PlatformErrorTypeId = internal.PlatformErrorTypeId;
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category refinements
|
|
12
|
+
*/
|
|
13
|
+
export const isPlatformError = u => Predicate.hasProperty(u, PlatformErrorTypeId);
|
|
9
14
|
/**
|
|
10
15
|
* @since 1.0.0
|
|
11
16
|
* @category error
|
package/dist/esm/Error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["Data","Predicate","internal","PlatformErrorTypeId","TypeIdError","typeId","tag","Base","Error","_tag","prototype","name","RefailError","constructor","props","
|
|
1
|
+
{"version":3,"file":"Error.js","names":["Data","Predicate","internal","PlatformErrorTypeId","isPlatformError","u","hasProperty","TypeIdError","typeId","tag","Base","Error","_tag","prototype","name","RefailError","constructor","props","error","stack","message","toJSON","JSON","stringify","String","BadArgument","badArgument","SystemError","systemError"],"sources":["../../src/Error.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAE7C,OAAO,KAAKC,QAAQ,MAAM,qBAAqB;AAE/C;;;;AAIA,OAAO,MAAMC,mBAAmB,GAAkBD,QAAQ,CAACC,mBAAmB;AAQ9E;;;;AAIA,OAAO,MAAMC,eAAe,GAAIC,CAAU,IAAyBJ,SAAS,CAACK,WAAW,CAACD,CAAC,EAAEF,mBAAmB,CAAC;AAQhH;;;;AAIA,OAAO,MAAMI,WAAW,GAAGA,CACzBC,MAAc,EACdC,GAAQ,KAOQ;EAEhB,MAAMC,IAAK,SAAQV,IAAI,CAACW,KAAS;IACtBC,IAAI,GAAGH,GAAG;;EAErB;EAAEC,IAAI,CAACG,SAAiB,CAACL,MAAM,CAAC,GAAGA,MAAM;EACvCE,IAAI,CAACG,SAAiB,CAACC,IAAI,GAAGL,GAAG;EACnC,OAAOC,IAAW;AACpB,CAAC;AAED;;;;AAIA,OAAO,MAAMK,WAAW,GAAGA,CACzBP,MAAc,EACdC,GAAQ,KAOQ;EAEhB,MAAMC,IAAK,SAAQV,IAAI,CAACW,KAEtB;IACSC,IAAI,GAAGH,GAAG;IACnBO,YAAYC,KAAU;MACpB,KAAK,CAACA,KAAK,CAAC;MACZ,IAAIhB,SAAS,CAACK,WAAW,CAAC,IAAI,CAACY,KAAK,EAAE,OAAO,CAAC,EAAE;QAC9C;QAAE,IAAY,CAACC,KAAK,GAAG,IAAI,CAACD,KAAK,CAACC,KAAK;MACzC;IACF;IACA,IAAIC,OAAOA,CAAA;MACT,OAAOnB,SAAS,CAACK,WAAW,CAAC,IAAI,CAACY,KAAK,EAAE,SAAS,CAAC,GAC/C,IAAI,CAACA,KAAK,CAACE,OAAiB,GAC5BnB,SAAS,CAACK,WAAW,CAAC,IAAI,CAACY,KAAK,EAAE,QAAQ,CAAC,IAAI,OAAO,IAAI,CAACA,KAAK,CAACG,MAAM,KAAK,UAAU,GACtFC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACL,KAAK,CAACG,MAAM,EAAE,CAAC,GACnCG,MAAM,CAAC,IAAI,CAACN,KAAK,CAAC;IACxB;;EAEF;EAAER,IAAI,CAACG,SAAiB,CAACL,MAAM,CAAC,GAAGA,MAAM;EACvCE,IAAI,CAACG,SAAiB,CAACC,IAAI,GAAGL,GAAG;EACnC,OAAOC,IAAW;AACpB,CAAC;AAgCD;;;;AAIA,OAAO,MAAMe,WAAW,GAA4EvB,QAAQ,CAACwB,WAAW;AA8BxH;;;;AAIA,OAAO,MAAMC,WAAW,GAA4EzB,QAAQ,CAAC0B,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "effect/Cause";
|
|
5
|
+
import * as ConfigError from "effect/ConfigError";
|
|
6
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
7
|
+
import * as PathPatch from "effect/ConfigProviderPathPatch";
|
|
8
|
+
import * as Context from "effect/Context";
|
|
9
|
+
import * as DefaultServices from "effect/DefaultServices";
|
|
10
|
+
import * as Effect from "effect/Effect";
|
|
11
|
+
import * as Either from "effect/Either";
|
|
12
|
+
import * as HashSet from "effect/HashSet";
|
|
13
|
+
import * as Layer from "effect/Layer";
|
|
14
|
+
import * as ReadonlyArray from "effect/ReadonlyArray";
|
|
15
|
+
import { isPlatformError } from "./Error.js";
|
|
16
|
+
import * as FileSystem from "./FileSystem.js";
|
|
17
|
+
import * as Path from "./Path.js";
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category constructors
|
|
21
|
+
*/
|
|
22
|
+
export const fromFileTree = options => Effect.Do.pipe(Effect.bind("path", () => Path.Path), Effect.bind("fs", () => FileSystem.FileSystem), Effect.map(({
|
|
23
|
+
fs,
|
|
24
|
+
path
|
|
25
|
+
}) => {
|
|
26
|
+
const rootDirectory = options?.rootDirectory ?? "/";
|
|
27
|
+
const parseConfig = primitive => value => Either.map(primitive.parse(value.trim()), ReadonlyArray.of);
|
|
28
|
+
const readConfig = (filePath, primitive) => Effect.flatMap(fs.readFileString(filePath), parseConfig(primitive));
|
|
29
|
+
const resolveEnumerableDirs = segments => segments.length === 0 ? [] : [path.join(...segments)];
|
|
30
|
+
const resolveFilePath = pathSegments => path.join(rootDirectory, ...pathSegments);
|
|
31
|
+
const sourceError = (pathSegments, error) => ConfigError.SourceUnavailable([...pathSegments], error.message, Cause.fail(error));
|
|
32
|
+
const pathNotFoundError = pathSegments => ConfigError.MissingData([...pathSegments], `Path ${resolveFilePath(pathSegments)} not found`);
|
|
33
|
+
const handlePlatformError = pathSegments => error => error._tag === "SystemError" && error.reason === "NotFound" ? Effect.fail(pathNotFoundError(pathSegments)) : Effect.fail(sourceError(pathSegments, error));
|
|
34
|
+
return ConfigProvider.fromFlat(ConfigProvider.makeFlat({
|
|
35
|
+
load: (pathSegments, config) => Effect.catchIf(readConfig(resolveFilePath(pathSegments), config), isPlatformError, handlePlatformError(pathSegments)),
|
|
36
|
+
enumerateChildren: pathSegments => Effect.forEach(resolveEnumerableDirs(pathSegments), dir => fs.readDirectory(dir)).pipe(Effect.map(files => HashSet.fromIterable(files.flat())), Effect.catchIf(isPlatformError, handlePlatformError(pathSegments))),
|
|
37
|
+
patch: PathPatch.empty
|
|
38
|
+
}));
|
|
39
|
+
}));
|
|
40
|
+
/**
|
|
41
|
+
* Add the file tree ConfigProvider to the environment, falling back to the default ConfigProvider.
|
|
42
|
+
*
|
|
43
|
+
* @since 1.0.0
|
|
44
|
+
* @category layers
|
|
45
|
+
*/
|
|
46
|
+
export const layerFileTreeAdd = options => fromFileTree(options).pipe(Effect.map(provider => Layer.fiberRefLocallyScopedWith(DefaultServices.currentServices, services => {
|
|
47
|
+
const current = Context.get(services, ConfigProvider.ConfigProvider);
|
|
48
|
+
return Context.add(services, ConfigProvider.ConfigProvider, ConfigProvider.orElse(provider, () => current));
|
|
49
|
+
})), Layer.unwrapEffect);
|
|
50
|
+
/**
|
|
51
|
+
* Add the file tree ConfigProvider to the environment, replacing the default ConfigProvider.
|
|
52
|
+
*
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @category layers
|
|
55
|
+
*/
|
|
56
|
+
export const layerFileTree = options => fromFileTree(options).pipe(Effect.map(Layer.setConfigProvider), Layer.unwrapEffect);
|
|
57
|
+
//# sourceMappingURL=PlatformConfigProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformConfigProvider.js","names":["Cause","ConfigError","ConfigProvider","PathPatch","Context","DefaultServices","Effect","Either","HashSet","Layer","ReadonlyArray","isPlatformError","FileSystem","Path","fromFileTree","options","Do","pipe","bind","map","fs","path","rootDirectory","parseConfig","primitive","value","parse","trim","of","readConfig","filePath","flatMap","readFileString","resolveEnumerableDirs","segments","length","join","resolveFilePath","pathSegments","sourceError","error","SourceUnavailable","message","fail","pathNotFoundError","MissingData","handlePlatformError","_tag","reason","fromFlat","makeFlat","load","config","catchIf","enumerateChildren","forEach","dir","readDirectory","files","fromIterable","flat","patch","empty","layerFileTreeAdd","provider","fiberRefLocallyScopedWith","currentServices","services","current","get","add","orElse","unwrapEffect","layerFileTree","setConfigProvider"],"sources":["../../src/PlatformConfigProvider.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Command","CommandExecutor","Effectify","Error","FileSystem","HttpClient","HttpServer","KeyValueStore","Path","PlatformLogger","Runtime","Socket","Template","Terminal","Transferable","Worker","WorkerError","WorkerRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Command","CommandExecutor","Effectify","Error","FileSystem","HttpClient","HttpServer","KeyValueStore","Path","PlatformConfigProvider","PlatformLogger","Runtime","Socket","Template","Terminal","Transferable","Worker","WorkerError","WorkerRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,sBAAsB,MAAM,6BAA6B;AAErE;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.48.
|
|
3
|
+
"version": "0.48.26",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"path-browserify": "^1.0.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"effect": "^
|
|
20
|
-
"
|
|
19
|
+
"@effect/schema": "^0.64.19",
|
|
20
|
+
"effect": "^2.4.18"
|
|
21
21
|
},
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"module": "./dist/esm/index.js",
|
|
@@ -184,6 +184,11 @@
|
|
|
184
184
|
"import": "./dist/esm/Path.js",
|
|
185
185
|
"default": "./dist/cjs/Path.js"
|
|
186
186
|
},
|
|
187
|
+
"./PlatformConfigProvider": {
|
|
188
|
+
"types": "./dist/dts/PlatformConfigProvider.d.ts",
|
|
189
|
+
"import": "./dist/esm/PlatformConfigProvider.js",
|
|
190
|
+
"default": "./dist/cjs/PlatformConfigProvider.js"
|
|
191
|
+
},
|
|
187
192
|
"./PlatformLogger": {
|
|
188
193
|
"types": "./dist/dts/PlatformLogger.d.ts",
|
|
189
194
|
"import": "./dist/esm/PlatformLogger.js",
|
|
@@ -325,6 +330,9 @@
|
|
|
325
330
|
"Path": [
|
|
326
331
|
"./dist/dts/Path.d.ts"
|
|
327
332
|
],
|
|
333
|
+
"PlatformConfigProvider": [
|
|
334
|
+
"./dist/dts/PlatformConfigProvider.d.ts"
|
|
335
|
+
],
|
|
328
336
|
"PlatformLogger": [
|
|
329
337
|
"./dist/dts/PlatformLogger.d.ts"
|
|
330
338
|
],
|
package/src/Error.ts
CHANGED
|
@@ -19,6 +19,12 @@ export const PlatformErrorTypeId: unique symbol = internal.PlatformErrorTypeId
|
|
|
19
19
|
*/
|
|
20
20
|
export type PlatformErrorTypeId = typeof PlatformErrorTypeId
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @category refinements
|
|
25
|
+
*/
|
|
26
|
+
export const isPlatformError = (u: unknown): u is PlatformError => Predicate.hasProperty(u, PlatformErrorTypeId)
|
|
27
|
+
|
|
22
28
|
/**
|
|
23
29
|
* @since 1.0.0
|
|
24
30
|
* @category error
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "effect/Cause"
|
|
5
|
+
import type * as Config from "effect/Config"
|
|
6
|
+
import * as ConfigError from "effect/ConfigError"
|
|
7
|
+
import * as ConfigProvider from "effect/ConfigProvider"
|
|
8
|
+
import * as PathPatch from "effect/ConfigProviderPathPatch"
|
|
9
|
+
import * as Context from "effect/Context"
|
|
10
|
+
import * as DefaultServices from "effect/DefaultServices"
|
|
11
|
+
import * as Effect from "effect/Effect"
|
|
12
|
+
import * as Either from "effect/Either"
|
|
13
|
+
import * as HashSet from "effect/HashSet"
|
|
14
|
+
import * as Layer from "effect/Layer"
|
|
15
|
+
import * as ReadonlyArray from "effect/ReadonlyArray"
|
|
16
|
+
import { isPlatformError, type PlatformError } from "./Error.js"
|
|
17
|
+
import * as FileSystem from "./FileSystem.js"
|
|
18
|
+
import * as Path from "./Path.js"
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
* @category constructors
|
|
23
|
+
*/
|
|
24
|
+
export const fromFileTree = (options?: {
|
|
25
|
+
readonly rootDirectory?: string
|
|
26
|
+
}): Effect.Effect<ConfigProvider.ConfigProvider, never, Path.Path | FileSystem.FileSystem> =>
|
|
27
|
+
Effect.Do.pipe(
|
|
28
|
+
Effect.bind("path", () => Path.Path),
|
|
29
|
+
Effect.bind("fs", () => FileSystem.FileSystem),
|
|
30
|
+
Effect.map(({ fs, path }) => {
|
|
31
|
+
const rootDirectory = options?.rootDirectory ?? "/"
|
|
32
|
+
|
|
33
|
+
const parseConfig = <A>(primitive: Config.Config.Primitive<A>) => (value: string) =>
|
|
34
|
+
Either.map(primitive.parse(value.trim()), ReadonlyArray.of)
|
|
35
|
+
|
|
36
|
+
const readConfig = <A>(filePath: string, primitive: Config.Config.Primitive<A>) =>
|
|
37
|
+
Effect.flatMap(
|
|
38
|
+
fs.readFileString(filePath),
|
|
39
|
+
parseConfig(primitive)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
const resolveEnumerableDirs = (segments: ReadonlyArray<string>) =>
|
|
43
|
+
segments.length === 0 ? [] : [path.join(...segments)]
|
|
44
|
+
|
|
45
|
+
const resolveFilePath = (pathSegments: ReadonlyArray<string>) => path.join(rootDirectory, ...pathSegments)
|
|
46
|
+
|
|
47
|
+
const sourceError = (pathSegments: ReadonlyArray<string>, error: PlatformError) =>
|
|
48
|
+
ConfigError.SourceUnavailable(
|
|
49
|
+
[...pathSegments],
|
|
50
|
+
error.message,
|
|
51
|
+
Cause.fail(error)
|
|
52
|
+
)
|
|
53
|
+
const pathNotFoundError = (pathSegments: ReadonlyArray<string>) =>
|
|
54
|
+
ConfigError.MissingData(
|
|
55
|
+
[...pathSegments],
|
|
56
|
+
`Path ${resolveFilePath(pathSegments)} not found`
|
|
57
|
+
)
|
|
58
|
+
const handlePlatformError = (pathSegments: ReadonlyArray<string>) => (error: PlatformError) =>
|
|
59
|
+
error._tag === "SystemError" && error.reason === "NotFound"
|
|
60
|
+
? Effect.fail(pathNotFoundError(pathSegments))
|
|
61
|
+
: Effect.fail(sourceError(pathSegments, error))
|
|
62
|
+
|
|
63
|
+
return ConfigProvider.fromFlat(
|
|
64
|
+
ConfigProvider.makeFlat({
|
|
65
|
+
load: (pathSegments, config) =>
|
|
66
|
+
Effect.catchIf(
|
|
67
|
+
readConfig(resolveFilePath(pathSegments), config),
|
|
68
|
+
isPlatformError,
|
|
69
|
+
handlePlatformError(pathSegments)
|
|
70
|
+
),
|
|
71
|
+
enumerateChildren: (pathSegments) =>
|
|
72
|
+
Effect.forEach(resolveEnumerableDirs(pathSegments), (dir) => fs.readDirectory(dir)).pipe(
|
|
73
|
+
Effect.map((files) => HashSet.fromIterable(files.flat())),
|
|
74
|
+
Effect.catchIf(isPlatformError, handlePlatformError(pathSegments))
|
|
75
|
+
),
|
|
76
|
+
patch: PathPatch.empty
|
|
77
|
+
})
|
|
78
|
+
)
|
|
79
|
+
})
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Add the file tree ConfigProvider to the environment, falling back to the default ConfigProvider.
|
|
84
|
+
*
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
* @category layers
|
|
87
|
+
*/
|
|
88
|
+
export const layerFileTreeAdd = (options?: {
|
|
89
|
+
readonly rootDirectory?: string
|
|
90
|
+
}): Layer.Layer<never, never, Path.Path | FileSystem.FileSystem> =>
|
|
91
|
+
fromFileTree(options).pipe(
|
|
92
|
+
Effect.map((provider) =>
|
|
93
|
+
Layer.fiberRefLocallyScopedWith(DefaultServices.currentServices, (services) => {
|
|
94
|
+
const current = Context.get(services, ConfigProvider.ConfigProvider)
|
|
95
|
+
return Context.add(services, ConfigProvider.ConfigProvider, ConfigProvider.orElse(provider, () => current))
|
|
96
|
+
})
|
|
97
|
+
),
|
|
98
|
+
Layer.unwrapEffect
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Add the file tree ConfigProvider to the environment, replacing the default ConfigProvider.
|
|
103
|
+
*
|
|
104
|
+
* @since 1.0.0
|
|
105
|
+
* @category layers
|
|
106
|
+
*/
|
|
107
|
+
export const layerFileTree = (options?: {
|
|
108
|
+
readonly rootDirectory?: string
|
|
109
|
+
}): Layer.Layer<never, never, Path.Path | FileSystem.FileSystem> =>
|
|
110
|
+
fromFileTree(options).pipe(
|
|
111
|
+
Effect.map(Layer.setConfigProvider),
|
|
112
|
+
Layer.unwrapEffect
|
|
113
|
+
)
|
package/src/index.ts
CHANGED