@livestore/utils 0.3.0-dev.33 → 0.3.0-dev.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo.json +1 -1
- package/dist/effect/index.d.ts.map +1 -1
- package/dist/effect/index.js +0 -1
- package/dist/effect/index.js.map +1 -1
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -0
- package/dist/env.js.map +1 -1
- package/dist/node/mod.d.ts +0 -13
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +1 -72
- package/dist/node/mod.js.map +1 -1
- package/package.json +8 -23
- package/src/effect/index.ts +0 -1
- package/src/env.ts +2 -0
- package/src/node/mod.ts +1 -101
- package/tmp/effect-deferred-repro.ts +0 -29
- package/tmp/effect-semaphore-repro.ts +0 -93
- package/tmp/pack.tgz +0 -0
- package/tsconfig.json +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,MAAM,EACN,QAAQ,EAER,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS,EAET,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,MAAM,EACN,QAAQ,EAER,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS,EAET,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,OAAO,GACR,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAI7E,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/dist/effect/index.js
CHANGED
|
@@ -18,7 +18,6 @@ export { TreeFormatter } from 'effect/ParseResult';
|
|
|
18
18
|
export { ParseResult, Pretty } from 'effect';
|
|
19
19
|
export * as Schema from './Schema/index.js';
|
|
20
20
|
export * as OtelTracer from '@effect/opentelemetry/Tracer';
|
|
21
|
-
// export * as OtelResource from '@effect/opentelemetry/Resource'
|
|
22
21
|
export * as TaskTracing from './TaskTracing.js';
|
|
23
22
|
export { Transferable, FileSystem, Worker, WorkerError, WorkerRunner, Terminal, HttpServer, HttpClient, HttpClientError, HttpClientRequest, HttpClientResponse, FetchHttpClient, Socket, UrlParams, HttpServerRequest, Headers, HttpMiddleware, HttpRouter, HttpServerResponse, Command, } from '@effect/platform';
|
|
24
23
|
export { BrowserWorker, BrowserWorkerRunner } from '@effect/platform-browser';
|
package/dist/effect/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,MAAM,EACN,QAAQ;AACR,UAAU;AACV,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS;AACT,gBAAgB;AAChB,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,MAAM,EACN,MAAM,EACN,QAAQ;AACR,UAAU;AACV,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS;AACT,gBAAgB;AAChB,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,OAAO,GACR,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,oEAAoE;AAEpE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/dist/env.d.ts
CHANGED
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAY3C,CAAA;AAED,eAAO,MAAM,QAAQ,WAiBpB,CAAA;AAGD,eAAO,MAAM,aAAa,SAAsF,CAAA;AAEhH,iDAAiD;AACjD,eAAO,MAAM,MAAM,SAAkE,CAAA;AAIrF,eAAO,MAAM,KAAK,SAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAY3C,CAAA;AAED,eAAO,MAAM,QAAQ,WAiBpB,CAAA;AAGD,eAAO,MAAM,aAAa,SAAsF,CAAA;AAEhH,iDAAiD;AACjD,eAAO,MAAM,MAAM,SAAkE,CAAA;AAIrF,eAAO,MAAM,KAAK,SAAuB,CAAA;AAEzC,eAAO,MAAM,MAAM,SAA6B,CAAA"}
|
package/dist/env.js
CHANGED
|
@@ -30,4 +30,5 @@ export const TRACE_VERBOSE = env('LS_TRACE_VERBOSE') !== undefined || env('VITE_
|
|
|
30
30
|
export const LS_DEV = env('LS_DEV') !== undefined || env('VITE_LS_DEV') !== undefined;
|
|
31
31
|
const envTruish = (env) => env !== undefined && env !== 'false' && env !== '0';
|
|
32
32
|
export const IS_CI = envTruish(env('CI'));
|
|
33
|
+
export const IS_BUN = typeof Bun !== 'undefined';
|
|
33
34
|
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAsB,EAAE;IACtD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;IAC9C,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC5B,CAAC;IAED,4CAA4C;IAC5C,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,kBAAkB,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,uBAAuB,CAAC,KAAK,SAAS,CAAA;AAEhH,iDAAiD;AACjD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,CAAA;AAErF,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,CAAA;AAElG,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAsB,EAAE;IACtD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;IAC9C,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC5B,CAAC;IAED,4CAA4C;IAC5C,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,kBAAkB,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,uBAAuB,CAAC,KAAK,SAAS,CAAA;AAEhH,iDAAiD;AACjD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,CAAA;AAErF,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,CAAA;AAElG,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,WAAW,CAAA"}
|
package/dist/node/mod.d.ts
CHANGED
|
@@ -1,23 +1,10 @@
|
|
|
1
|
-
import type * as otel from '@opentelemetry/api';
|
|
2
1
|
import { Effect, Layer } from 'effect';
|
|
3
|
-
import type { ParentSpan } from 'effect/Tracer';
|
|
4
2
|
import { OtelTracer, UnknownError } from '../effect/index.js';
|
|
5
3
|
export * as Cli from '@effect/cli';
|
|
6
4
|
export * as PlatformNode from '@effect/platform-node';
|
|
7
5
|
export * as SocketServer from '@effect/platform/SocketServer';
|
|
8
|
-
export * as OtelResource from '@effect/opentelemetry/Resource';
|
|
9
|
-
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
10
|
-
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
11
|
-
export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
12
6
|
export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js';
|
|
13
7
|
export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js';
|
|
14
8
|
export declare const getFreePort: Effect.Effect<number, UnknownError, never>;
|
|
15
9
|
export declare const OtelLiveDummy: Layer.Layer<OtelTracer.OtelTracer>;
|
|
16
|
-
export declare const OtelLiveHttp: ({ serviceName, rootSpanName, skipLogUrl, }?: {
|
|
17
|
-
serviceName?: string;
|
|
18
|
-
rootSpanName?: string;
|
|
19
|
-
skipLogUrl?: boolean;
|
|
20
|
-
}) => Layer.Layer<OtelTracer.OtelTracer | ParentSpan, never, never>;
|
|
21
|
-
export declare const logTraceUiUrlForSpan: (printMsg?: (url: string) => string) => (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
|
22
|
-
export declare const getTracingBackendUrl: (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
|
23
10
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/node/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG7D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAOhF,eAAO,MAAM,WAAW,4CAuBtB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAQ3D,CAAA"}
|
package/dist/node/mod.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import * as http from 'node:http';
|
|
2
|
-
import
|
|
3
|
-
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
4
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
5
|
-
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
6
|
-
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
7
|
-
import { Config, Effect, Layer } from 'effect';
|
|
8
|
-
import { tapCauseLogPretty } from '../effect/Effect.js';
|
|
2
|
+
import { Effect, Layer } from 'effect';
|
|
9
3
|
import { OtelTracer, UnknownError } from '../effect/index.js';
|
|
10
4
|
import { makeNoopTracer } from '../NoopTracer.js';
|
|
11
|
-
// import { tapCauseLogPretty } from '../effect/Effect.js'
|
|
12
5
|
export * as Cli from '@effect/cli';
|
|
13
6
|
export * as PlatformNode from '@effect/platform-node';
|
|
14
7
|
export * as SocketServer from '@effect/platform/SocketServer';
|
|
15
|
-
export * as OtelResource from '@effect/opentelemetry/Resource';
|
|
16
|
-
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
17
|
-
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
18
|
-
export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
19
8
|
export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js';
|
|
20
9
|
export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js';
|
|
21
10
|
// Enable debug logging for OpenTelemetry
|
|
@@ -47,64 +36,4 @@ export const OtelLiveDummy = Layer.suspend(() => {
|
|
|
47
36
|
const TracingLive = Layer.unwrapEffect(Effect.map(OtelTracer.make, Layer.setTracer)).pipe(Layer.provideMerge(OtelTracerLive));
|
|
48
37
|
return TracingLive;
|
|
49
38
|
});
|
|
50
|
-
export const OtelLiveHttp = ({ serviceName, rootSpanName, skipLogUrl, } = {}) => Effect.gen(function* () {
|
|
51
|
-
const config = yield* Config.all({
|
|
52
|
-
exporterUrl: Config.string('OTEL_EXPORTER_OTLP_ENDPOINT'),
|
|
53
|
-
serviceName: serviceName
|
|
54
|
-
? Config.succeed(serviceName)
|
|
55
|
-
: Config.string('OTEL_SERVICE_NAME').pipe(Config.withDefault('overtone-node-utils-default-service')),
|
|
56
|
-
rootSpanName: rootSpanName
|
|
57
|
-
? Config.succeed(rootSpanName)
|
|
58
|
-
: Config.string('OTEL_ROOT_SPAN_NAME').pipe(Config.withDefault('RootSpan')),
|
|
59
|
-
}).pipe(tapCauseLogPretty, Effect.orDie);
|
|
60
|
-
const resource = { serviceName: config.serviceName };
|
|
61
|
-
// METRICS
|
|
62
|
-
const metricExporter = new OTLPMetricExporter({ url: `${config.exporterUrl}/v1/metrics` });
|
|
63
|
-
const metricReader = new PeriodicExportingMetricReader({
|
|
64
|
-
exporter: metricExporter,
|
|
65
|
-
exportIntervalMillis: 1000,
|
|
66
|
-
});
|
|
67
|
-
// TRACING
|
|
68
|
-
const OtelLive = OtelNodeSdk.layer(() => ({
|
|
69
|
-
resource,
|
|
70
|
-
metricReader,
|
|
71
|
-
spanProcessor: new BatchSpanProcessor(new OTLPTraceExporter({ url: `${config.exporterUrl}/v1/traces`, headers: {} })),
|
|
72
|
-
}));
|
|
73
|
-
const RootSpanLive = Layer.span(config.rootSpanName, {
|
|
74
|
-
attributes: { config },
|
|
75
|
-
onEnd: skipLogUrl ? undefined : (span) => logTraceUiUrlForSpan()(span.span),
|
|
76
|
-
});
|
|
77
|
-
return RootSpanLive.pipe(Layer.provideMerge(OtelLive));
|
|
78
|
-
}).pipe(Layer.unwrapEffect);
|
|
79
|
-
export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl(span).pipe(Effect.tap((url) => {
|
|
80
|
-
if (url === undefined) {
|
|
81
|
-
return Effect.logWarning('No tracing backend url found');
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
if (printMsg) {
|
|
85
|
-
return Effect.log(printMsg(url));
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return Effect.log(`Trace URL: ${url}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}));
|
|
92
|
-
export const getTracingBackendUrl = (span) => Effect.gen(function* () {
|
|
93
|
-
const endpoint = yield* Config.string('GRAFANA_ENDPOINT').pipe(Config.option, Effect.orDie);
|
|
94
|
-
if (endpoint._tag === 'None')
|
|
95
|
-
return;
|
|
96
|
-
const traceId = span.spanContext().traceId;
|
|
97
|
-
// Grafana + Tempo
|
|
98
|
-
const grafanaEndpoint = endpoint.value;
|
|
99
|
-
const searchParams = new URLSearchParams({
|
|
100
|
-
orgId: '1',
|
|
101
|
-
left: JSON.stringify({
|
|
102
|
-
datasource: 'tempo',
|
|
103
|
-
queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
|
|
104
|
-
range: { from: 'now-1h', to: 'now' },
|
|
105
|
-
}),
|
|
106
|
-
});
|
|
107
|
-
// TODO make dynamic via env var
|
|
108
|
-
return `${grafanaEndpoint}/explore?${searchParams.toString()}`;
|
|
109
|
-
});
|
|
110
39
|
//# sourceMappingURL=mod.js.map
|
package/dist/node/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAEhF,yCAAyC;AACzC,6EAA6E;AAE7E,6EAA6E;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAElC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAEhC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;IAClF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA;IAE7E,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACvF,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CACU,CAAA;IAE9C,OAAO,WAAW,CAAA;AACpB,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/utils",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
|
-
"./dist/global.js"
|
|
7
|
-
"./dist/node-vitest/polyfill.js"
|
|
6
|
+
"./dist/global.js"
|
|
8
7
|
],
|
|
9
8
|
"exports": {
|
|
10
9
|
".": {
|
|
@@ -32,14 +31,6 @@
|
|
|
32
31
|
"./bun": {
|
|
33
32
|
"types": "./dist/bun/mod.d.ts",
|
|
34
33
|
"default": "./dist/bun/mod.js"
|
|
35
|
-
},
|
|
36
|
-
"./node-vitest": {
|
|
37
|
-
"types": "./dist/node-vitest/mod.d.ts",
|
|
38
|
-
"default": "./dist/node-vitest/mod.js"
|
|
39
|
-
},
|
|
40
|
-
"./node-vitest-polyfill": {
|
|
41
|
-
"types": "./dist/node-vitest/polyfill.d.ts",
|
|
42
|
-
"default": "./dist/node-vitest/polyfill.js"
|
|
43
34
|
}
|
|
44
35
|
},
|
|
45
36
|
"types": "./dist/index.d.ts",
|
|
@@ -59,12 +50,6 @@
|
|
|
59
50
|
],
|
|
60
51
|
"./bun": [
|
|
61
52
|
"./dist/bun/mod.d.ts"
|
|
62
|
-
],
|
|
63
|
-
"./node-vitest": [
|
|
64
|
-
"./dist/node-vitest/mod.d.ts"
|
|
65
|
-
],
|
|
66
|
-
"./node-vitest-polyfill": [
|
|
67
|
-
"./dist/node-vitest/polyfill.d.ts"
|
|
68
53
|
]
|
|
69
54
|
}
|
|
70
55
|
},
|
|
@@ -90,12 +75,7 @@
|
|
|
90
75
|
"@effect/typeclass": "^0.33.8",
|
|
91
76
|
"@effect/vitest": "^0.20.8",
|
|
92
77
|
"@opentelemetry/api": "^1.9.0",
|
|
93
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.200.0",
|
|
94
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
|
|
95
78
|
"@opentelemetry/resources": "^2.0.0",
|
|
96
|
-
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
97
|
-
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
98
|
-
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
99
79
|
"@types/bun": "^1.2.4",
|
|
100
80
|
"@types/jsdom": "^21.1.7",
|
|
101
81
|
"@types/node": "^22.13.10",
|
|
@@ -104,6 +84,11 @@
|
|
|
104
84
|
"jsdom": "^26.0.0",
|
|
105
85
|
"vitest": "^3.1.1"
|
|
106
86
|
},
|
|
87
|
+
"files": [
|
|
88
|
+
"package.json",
|
|
89
|
+
"src",
|
|
90
|
+
"dist"
|
|
91
|
+
],
|
|
107
92
|
"peerDependencies": {
|
|
108
93
|
"@effect/cli": "~0.59.8",
|
|
109
94
|
"@effect/cluster": "~0.29.17",
|
|
@@ -118,8 +103,8 @@
|
|
|
118
103
|
"@effect/rpc": "~0.55.12",
|
|
119
104
|
"@effect/sql": "~0.33.8",
|
|
120
105
|
"@effect/typeclass": "~0.33.8",
|
|
121
|
-
"@effect/vitest": "~0.20.8",
|
|
122
106
|
"@opentelemetry/api": "~1.9.0",
|
|
107
|
+
"@opentelemetry/resources": "~2.0.0",
|
|
123
108
|
"effect": "~3.14.8"
|
|
124
109
|
},
|
|
125
110
|
"publishConfig": {
|
package/src/effect/index.ts
CHANGED
|
@@ -84,7 +84,6 @@ export { ParseResult, Pretty } from 'effect'
|
|
|
84
84
|
export type { Serializable, SerializableWithResult } from 'effect/Schema'
|
|
85
85
|
export * as Schema from './Schema/index.js'
|
|
86
86
|
export * as OtelTracer from '@effect/opentelemetry/Tracer'
|
|
87
|
-
// export * as OtelResource from '@effect/opentelemetry/Resource'
|
|
88
87
|
export * as TaskTracing from './TaskTracing.js'
|
|
89
88
|
|
|
90
89
|
export {
|
package/src/env.ts
CHANGED
|
@@ -40,3 +40,5 @@ export const LS_DEV = env('LS_DEV') !== undefined || env('VITE_LS_DEV') !== unde
|
|
|
40
40
|
const envTruish = (env: string | undefined) => env !== undefined && env !== 'false' && env !== '0'
|
|
41
41
|
|
|
42
42
|
export const IS_CI = envTruish(env('CI'))
|
|
43
|
+
|
|
44
|
+
export const IS_BUN = typeof Bun !== 'undefined'
|
package/src/node/mod.ts
CHANGED
|
@@ -1,28 +1,13 @@
|
|
|
1
1
|
import * as http from 'node:http'
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import type * as otel from '@opentelemetry/api'
|
|
5
|
-
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'
|
|
6
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
|
7
|
-
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
|
|
8
|
-
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
9
|
-
import { Config, Effect, Layer } from 'effect'
|
|
10
|
-
import type { ParentSpan } from 'effect/Tracer'
|
|
3
|
+
import { Effect, Layer } from 'effect'
|
|
11
4
|
|
|
12
|
-
import { tapCauseLogPretty } from '../effect/Effect.js'
|
|
13
5
|
import { OtelTracer, UnknownError } from '../effect/index.js'
|
|
14
6
|
import { makeNoopTracer } from '../NoopTracer.js'
|
|
15
7
|
|
|
16
|
-
// import { tapCauseLogPretty } from '../effect/Effect.js'
|
|
17
|
-
|
|
18
8
|
export * as Cli from '@effect/cli'
|
|
19
9
|
export * as PlatformNode from '@effect/platform-node'
|
|
20
10
|
export * as SocketServer from '@effect/platform/SocketServer'
|
|
21
|
-
export * as OtelResource from '@effect/opentelemetry/Resource'
|
|
22
|
-
|
|
23
|
-
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
|
24
|
-
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'
|
|
25
|
-
export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk'
|
|
26
11
|
|
|
27
12
|
export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js'
|
|
28
13
|
export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js'
|
|
@@ -66,88 +51,3 @@ export const OtelLiveDummy: Layer.Layer<OtelTracer.OtelTracer> = Layer.suspend((
|
|
|
66
51
|
|
|
67
52
|
return TracingLive
|
|
68
53
|
})
|
|
69
|
-
|
|
70
|
-
export const OtelLiveHttp = ({
|
|
71
|
-
serviceName,
|
|
72
|
-
rootSpanName,
|
|
73
|
-
skipLogUrl,
|
|
74
|
-
}: { serviceName?: string; rootSpanName?: string; skipLogUrl?: boolean } = {}): Layer.Layer<
|
|
75
|
-
OtelTracer.OtelTracer | ParentSpan,
|
|
76
|
-
never,
|
|
77
|
-
never
|
|
78
|
-
> =>
|
|
79
|
-
Effect.gen(function* () {
|
|
80
|
-
const config = yield* Config.all({
|
|
81
|
-
exporterUrl: Config.string('OTEL_EXPORTER_OTLP_ENDPOINT'),
|
|
82
|
-
serviceName: serviceName
|
|
83
|
-
? Config.succeed(serviceName)
|
|
84
|
-
: Config.string('OTEL_SERVICE_NAME').pipe(Config.withDefault('overtone-node-utils-default-service')),
|
|
85
|
-
rootSpanName: rootSpanName
|
|
86
|
-
? Config.succeed(rootSpanName)
|
|
87
|
-
: Config.string('OTEL_ROOT_SPAN_NAME').pipe(Config.withDefault('RootSpan')),
|
|
88
|
-
}).pipe(tapCauseLogPretty, Effect.orDie)
|
|
89
|
-
|
|
90
|
-
const resource = { serviceName: config.serviceName }
|
|
91
|
-
|
|
92
|
-
// METRICS
|
|
93
|
-
const metricExporter = new OTLPMetricExporter({ url: `${config.exporterUrl}/v1/metrics` })
|
|
94
|
-
|
|
95
|
-
const metricReader = new PeriodicExportingMetricReader({
|
|
96
|
-
exporter: metricExporter,
|
|
97
|
-
exportIntervalMillis: 1000,
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
// TRACING
|
|
101
|
-
const OtelLive = OtelNodeSdk.layer(() => ({
|
|
102
|
-
resource,
|
|
103
|
-
metricReader,
|
|
104
|
-
spanProcessor: new BatchSpanProcessor(
|
|
105
|
-
new OTLPTraceExporter({ url: `${config.exporterUrl}/v1/traces`, headers: {} }),
|
|
106
|
-
),
|
|
107
|
-
}))
|
|
108
|
-
|
|
109
|
-
const RootSpanLive = Layer.span(config.rootSpanName, {
|
|
110
|
-
attributes: { config },
|
|
111
|
-
onEnd: skipLogUrl ? undefined : (span: any) => logTraceUiUrlForSpan()(span.span),
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
return RootSpanLive.pipe(Layer.provideMerge(OtelLive))
|
|
115
|
-
}).pipe(Layer.unwrapEffect) as any
|
|
116
|
-
|
|
117
|
-
export const logTraceUiUrlForSpan = (printMsg?: (url: string) => string) => (span: otel.Span) =>
|
|
118
|
-
getTracingBackendUrl(span).pipe(
|
|
119
|
-
Effect.tap((url) => {
|
|
120
|
-
if (url === undefined) {
|
|
121
|
-
return Effect.logWarning('No tracing backend url found')
|
|
122
|
-
} else {
|
|
123
|
-
if (printMsg) {
|
|
124
|
-
return Effect.log(printMsg(url))
|
|
125
|
-
} else {
|
|
126
|
-
return Effect.log(`Trace URL: ${url}`)
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}),
|
|
130
|
-
)
|
|
131
|
-
|
|
132
|
-
export const getTracingBackendUrl = (span: otel.Span) =>
|
|
133
|
-
Effect.gen(function* () {
|
|
134
|
-
const endpoint = yield* Config.string('GRAFANA_ENDPOINT').pipe(Config.option, Effect.orDie)
|
|
135
|
-
if (endpoint._tag === 'None') return
|
|
136
|
-
|
|
137
|
-
const traceId = span.spanContext().traceId
|
|
138
|
-
|
|
139
|
-
// Grafana + Tempo
|
|
140
|
-
|
|
141
|
-
const grafanaEndpoint = endpoint.value
|
|
142
|
-
const searchParams = new URLSearchParams({
|
|
143
|
-
orgId: '1',
|
|
144
|
-
left: JSON.stringify({
|
|
145
|
-
datasource: 'tempo',
|
|
146
|
-
queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
|
|
147
|
-
range: { from: 'now-1h', to: 'now' },
|
|
148
|
-
}),
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
// TODO make dynamic via env var
|
|
152
|
-
return `${grafanaEndpoint}/explore?${searchParams.toString()}`
|
|
153
|
-
})
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/// <reference lib="es2024" />
|
|
2
|
-
|
|
3
|
-
import { Effect, Logger } from 'effect'
|
|
4
|
-
|
|
5
|
-
const main = Effect.gen(function* () {
|
|
6
|
-
yield* Effect.addFinalizer((_) => Effect.log('finalizer', _))
|
|
7
|
-
|
|
8
|
-
// const finished = yield* Deferred.make<void>()
|
|
9
|
-
|
|
10
|
-
const def = Promise.withResolvers()
|
|
11
|
-
|
|
12
|
-
setTimeout(() => {
|
|
13
|
-
def.resolve(undefined)
|
|
14
|
-
}, 1000)
|
|
15
|
-
|
|
16
|
-
console.log('awaiting')
|
|
17
|
-
|
|
18
|
-
// const fiber = yield* Deferred.await(finished).pipe(Effect.fork)
|
|
19
|
-
// yield* Fiber.join(fiber)
|
|
20
|
-
// yield* finished
|
|
21
|
-
yield* Effect.promise(() => def.promise)
|
|
22
|
-
console.log('finished')
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
main
|
|
26
|
-
.pipe(Effect.scoped, Effect.provide(Logger.pretty), Effect.tapErrorCause(Effect.logError), Effect.runPromise)
|
|
27
|
-
.finally(() => {
|
|
28
|
-
console.log('finally')
|
|
29
|
-
})
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/// <reference lib="es2024" />
|
|
2
|
-
import * as NodePlatform from '@effect/platform-node'
|
|
3
|
-
import { Deferred, Effect, FiberSet, Logger, Ref, Scheduler } from 'effect'
|
|
4
|
-
|
|
5
|
-
const main = Effect.gen(function* () {
|
|
6
|
-
const semaphore = yield* Effect.makeSemaphore(1)
|
|
7
|
-
|
|
8
|
-
const fiberset = yield* FiberSet.make()
|
|
9
|
-
|
|
10
|
-
// setInterval(() => {
|
|
11
|
-
// // semaphore.release(1)
|
|
12
|
-
// }, 1_000_000)
|
|
13
|
-
|
|
14
|
-
const stateRef = yield* Ref.make<'open' | 'closed'>('open')
|
|
15
|
-
|
|
16
|
-
// let counter = 0
|
|
17
|
-
// const nextExpectedCounter = 0
|
|
18
|
-
// const def = Promise.withResolvers()
|
|
19
|
-
|
|
20
|
-
const finished = yield* Deferred.make<void>()
|
|
21
|
-
|
|
22
|
-
const MAX = 100
|
|
23
|
-
|
|
24
|
-
const doWorkWithSemaphore = (counter: number) =>
|
|
25
|
-
Effect.gen(function* () {
|
|
26
|
-
// yield* Effect.log(`doWorkWithSemaphore: ${counter} - waiting for semaphore`)
|
|
27
|
-
// yield* semaphore.take(1)
|
|
28
|
-
// if (counter !== nextExpectedCounter) {
|
|
29
|
-
// throw new Error(`Expected counter ${nextExpectedCounter} but got ${counter}`)
|
|
30
|
-
// }
|
|
31
|
-
// nextExpectedCounter = counter + 1
|
|
32
|
-
yield* Effect.log(`doWorkWithSemaphore: ${counter} - got semaphore`)
|
|
33
|
-
// setTimeout(() => {}, 120)
|
|
34
|
-
yield* Effect.sleep(40)
|
|
35
|
-
// yield* Effect.yieldNow()
|
|
36
|
-
yield* Effect.log(`doWorkWithSemaphore: ${counter} - releasing semaphore`)
|
|
37
|
-
yield* Ref.set(stateRef, 'open')
|
|
38
|
-
yield* semaphore.release(1)
|
|
39
|
-
|
|
40
|
-
if (counter === MAX - 1) {
|
|
41
|
-
yield* Deferred.succeed(finished, undefined)
|
|
42
|
-
// def.resolve(undefined)
|
|
43
|
-
}
|
|
44
|
-
}).pipe(Effect.scoped)
|
|
45
|
-
|
|
46
|
-
for (let i = 0; i < MAX; i++) {
|
|
47
|
-
yield* doWorkWithSemaphore(i).pipe(FiberSet.run(fiberset))
|
|
48
|
-
// yield* Effect.sleep(20)
|
|
49
|
-
yield* Effect.gen(function* () {
|
|
50
|
-
const state = yield* Ref.get(stateRef)
|
|
51
|
-
if (state === 'open') {
|
|
52
|
-
yield* Effect.logWarning(`loop: ${i} - semaphore is open, taking`)
|
|
53
|
-
} else {
|
|
54
|
-
yield* Effect.log(`loop: ${i} - semaphore is closed, waiting`)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
yield* semaphore.take(1)
|
|
58
|
-
yield* Ref.set(stateRef, 'closed')
|
|
59
|
-
|
|
60
|
-
yield* doWorkWithSemaphore(i).pipe(Effect.fork)
|
|
61
|
-
|
|
62
|
-
const sleepTime = Math.random() * 40
|
|
63
|
-
yield* Effect.log(`loop: ${i} - sleeping for ${sleepTime}ms`)
|
|
64
|
-
yield* Effect.sleep(sleepTime)
|
|
65
|
-
|
|
66
|
-
// yield* Effect.yieldNow()
|
|
67
|
-
}).pipe(FiberSet.run(fiberset))
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// yield* Effect.never
|
|
71
|
-
|
|
72
|
-
yield* finished
|
|
73
|
-
// yield* Effect.promise(() => def.promise)
|
|
74
|
-
// console.log('finished')
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
export const messageChannel = (shouldYield: Scheduler.Scheduler['shouldYield'] = Scheduler.defaultShouldYield) =>
|
|
78
|
-
Scheduler.makeBatched((task) => {
|
|
79
|
-
const messageChannel = new MessageChannel()
|
|
80
|
-
|
|
81
|
-
messageChannel.port1.postMessage(undefined)
|
|
82
|
-
|
|
83
|
-
// eslint-disable-next-line unicorn/prefer-add-event-listener
|
|
84
|
-
messageChannel.port2.onmessage = task
|
|
85
|
-
}, shouldYield)
|
|
86
|
-
|
|
87
|
-
main.pipe(
|
|
88
|
-
Effect.scoped,
|
|
89
|
-
Effect.provide(Logger.pretty),
|
|
90
|
-
Effect.tapErrorCause(Effect.logError),
|
|
91
|
-
Effect.withScheduler(messageChannel()),
|
|
92
|
-
NodePlatform.NodeRuntime.runMain,
|
|
93
|
-
)
|
package/tmp/pack.tgz
DELETED
|
Binary file
|