semola 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -45
- package/dist/chunk-CKQMccvm.cjs +28 -0
- package/dist/lib/api/index.cjs +536 -4
- package/dist/lib/api/index.d.cts +270 -4
- package/dist/lib/api/index.d.mts +270 -4
- package/dist/lib/api/index.mjs +534 -2
- package/dist/lib/cache/index.cjs +47 -22
- package/dist/lib/cache/index.d.cts +14 -23
- package/dist/lib/cache/index.d.mts +14 -23
- package/dist/lib/cache/index.mjs +48 -25
- package/dist/lib/cron/index.cjs +734 -12
- package/dist/lib/cron/index.d.cts +145 -3
- package/dist/lib/cron/index.d.mts +145 -3
- package/dist/lib/cron/index.mjs +725 -3
- package/dist/lib/errors/index.d.cts +4 -4
- package/dist/lib/errors/index.d.mts +4 -4
- package/dist/lib/errors/index.mjs +0 -2
- package/dist/lib/i18n/index.d.cts +12 -4
- package/dist/lib/i18n/index.d.mts +12 -4
- package/dist/lib/i18n/index.mjs +0 -2
- package/dist/lib/logging/index.cjs +387 -17
- package/dist/lib/logging/index.d.cts +107 -6
- package/dist/lib/logging/index.d.mts +107 -6
- package/dist/lib/logging/index.mjs +373 -4
- package/dist/lib/orm/index.cjs +1641 -19
- package/dist/lib/orm/index.d.cts +402 -7
- package/dist/lib/orm/index.d.mts +402 -7
- package/dist/lib/orm/index.mjs +1630 -6
- package/dist/lib/policy/index.cjs +206 -20
- package/dist/lib/policy/index.d.cts +61 -5
- package/dist/lib/policy/index.d.mts +61 -5
- package/dist/lib/policy/index.mjs +187 -3
- package/dist/lib/prompts/index.cjs +374 -14
- package/dist/lib/prompts/index.d.cts +73 -29
- package/dist/lib/prompts/index.d.mts +73 -29
- package/dist/lib/prompts/index.mjs +361 -4
- package/dist/lib/pubsub/index.cjs +43 -19
- package/dist/lib/pubsub/index.d.cts +12 -22
- package/dist/lib/pubsub/index.d.mts +12 -22
- package/dist/lib/pubsub/index.mjs +44 -22
- package/dist/lib/queue/index.cjs +40 -10
- package/dist/lib/queue/index.d.cts +57 -8
- package/dist/lib/queue/index.d.mts +57 -8
- package/dist/lib/queue/index.mjs +39 -13
- package/dist/lib/workflow/index.cjs +285 -282
- package/dist/lib/workflow/index.d.cts +147 -4
- package/dist/lib/workflow/index.d.mts +147 -4
- package/dist/lib/workflow/index.mjs +278 -286
- package/package.json +11 -1
- package/dist/api/core/index.cjs +0 -206
- package/dist/api/core/index.d.cts +0 -21
- package/dist/api/core/index.d.cts.map +0 -1
- package/dist/api/core/index.d.mts +0 -21
- package/dist/api/core/index.d.mts.map +0 -1
- package/dist/api/core/index.mjs +0 -208
- package/dist/api/core/index.mjs.map +0 -1
- package/dist/api/core/types.d.cts +0 -107
- package/dist/api/core/types.d.cts.map +0 -1
- package/dist/api/core/types.d.mts +0 -107
- package/dist/api/core/types.d.mts.map +0 -1
- package/dist/api/middleware/index.cjs +0 -8
- package/dist/api/middleware/index.d.cts +0 -11
- package/dist/api/middleware/index.d.cts.map +0 -1
- package/dist/api/middleware/index.d.mts +0 -11
- package/dist/api/middleware/index.d.mts.map +0 -1
- package/dist/api/middleware/index.mjs +0 -10
- package/dist/api/middleware/index.mjs.map +0 -1
- package/dist/api/middleware/types.d.cts +0 -16
- package/dist/api/middleware/types.d.cts.map +0 -1
- package/dist/api/middleware/types.d.mts +0 -16
- package/dist/api/middleware/types.d.mts.map +0 -1
- package/dist/api/openapi/index.cjs +0 -254
- package/dist/api/openapi/index.mjs +0 -256
- package/dist/api/openapi/index.mjs.map +0 -1
- package/dist/api/openapi/types.d.cts +0 -60
- package/dist/api/openapi/types.d.cts.map +0 -1
- package/dist/api/openapi/types.d.mts +0 -60
- package/dist/api/openapi/types.d.mts.map +0 -1
- package/dist/api/validation/index.cjs +0 -64
- package/dist/api/validation/index.mjs +0 -61
- package/dist/api/validation/index.mjs.map +0 -1
- package/dist/cache/types.d.cts +0 -17
- package/dist/cache/types.d.cts.map +0 -1
- package/dist/cache/types.d.mts +0 -17
- package/dist/cache/types.d.mts.map +0 -1
- package/dist/cron/builder/index.cjs +0 -166
- package/dist/cron/builder/index.d.cts +0 -28
- package/dist/cron/builder/index.d.cts.map +0 -1
- package/dist/cron/builder/index.d.mts +0 -28
- package/dist/cron/builder/index.d.mts.map +0 -1
- package/dist/cron/builder/index.mjs +0 -163
- package/dist/cron/builder/index.mjs.map +0 -1
- package/dist/cron/builder/types.cjs +0 -27
- package/dist/cron/builder/types.d.cts +0 -79
- package/dist/cron/builder/types.d.cts.map +0 -1
- package/dist/cron/builder/types.d.mts +0 -79
- package/dist/cron/builder/types.d.mts.map +0 -1
- package/dist/cron/builder/types.mjs +0 -28
- package/dist/cron/builder/types.mjs.map +0 -1
- package/dist/cron/core/index.cjs +0 -308
- package/dist/cron/core/index.d.cts +0 -39
- package/dist/cron/core/index.d.cts.map +0 -1
- package/dist/cron/core/index.d.mts +0 -39
- package/dist/cron/core/index.d.mts.map +0 -1
- package/dist/cron/core/index.mjs +0 -310
- package/dist/cron/core/index.mjs.map +0 -1
- package/dist/cron/core/scanner.cjs +0 -237
- package/dist/cron/core/scanner.mjs +0 -238
- package/dist/cron/core/scanner.mjs.map +0 -1
- package/dist/cron/core/types.d.cts +0 -11
- package/dist/cron/core/types.d.cts.map +0 -1
- package/dist/cron/core/types.d.mts +0 -11
- package/dist/cron/core/types.d.mts.map +0 -1
- package/dist/errors/types.d.cts +0 -5
- package/dist/errors/types.d.cts.map +0 -1
- package/dist/errors/types.d.mts +0 -5
- package/dist/errors/types.d.mts.map +0 -1
- package/dist/i18n/types.d.cts +0 -13
- package/dist/i18n/types.d.cts.map +0 -1
- package/dist/i18n/types.d.mts +0 -13
- package/dist/i18n/types.d.mts.map +0 -1
- package/dist/lib/cache/index.d.cts.map +0 -1
- package/dist/lib/cache/index.d.mts.map +0 -1
- package/dist/lib/cache/index.mjs.map +0 -1
- package/dist/lib/errors/index.d.cts.map +0 -1
- package/dist/lib/errors/index.d.mts.map +0 -1
- package/dist/lib/errors/index.mjs.map +0 -1
- package/dist/lib/i18n/index.d.cts.map +0 -1
- package/dist/lib/i18n/index.d.mts.map +0 -1
- package/dist/lib/i18n/index.mjs.map +0 -1
- package/dist/lib/policy/index.d.cts.map +0 -1
- package/dist/lib/policy/index.d.mts.map +0 -1
- package/dist/lib/policy/index.mjs.map +0 -1
- package/dist/lib/prompts/index.d.cts.map +0 -1
- package/dist/lib/prompts/index.d.mts.map +0 -1
- package/dist/lib/prompts/index.mjs.map +0 -1
- package/dist/lib/pubsub/index.d.cts.map +0 -1
- package/dist/lib/pubsub/index.d.mts.map +0 -1
- package/dist/lib/pubsub/index.mjs.map +0 -1
- package/dist/lib/queue/index.d.cts.map +0 -1
- package/dist/lib/queue/index.d.mts.map +0 -1
- package/dist/lib/queue/index.mjs.map +0 -1
- package/dist/lib/workflow/index.d.cts.map +0 -1
- package/dist/lib/workflow/index.d.mts.map +0 -1
- package/dist/lib/workflow/index.mjs.map +0 -1
- package/dist/logging/core/index.cjs +0 -99
- package/dist/logging/core/index.d.cts +0 -26
- package/dist/logging/core/index.d.cts.map +0 -1
- package/dist/logging/core/index.d.mts +0 -26
- package/dist/logging/core/index.d.mts.map +0 -1
- package/dist/logging/core/index.mjs +0 -99
- package/dist/logging/core/index.mjs.map +0 -1
- package/dist/logging/core/types.cjs +0 -10
- package/dist/logging/core/types.d.cts +0 -22
- package/dist/logging/core/types.d.cts.map +0 -1
- package/dist/logging/core/types.d.mts +0 -22
- package/dist/logging/core/types.d.mts.map +0 -1
- package/dist/logging/core/types.mjs +0 -12
- package/dist/logging/core/types.mjs.map +0 -1
- package/dist/logging/formatter/index.cjs +0 -119
- package/dist/logging/formatter/index.d.cts +0 -27
- package/dist/logging/formatter/index.d.cts.map +0 -1
- package/dist/logging/formatter/index.d.mts +0 -27
- package/dist/logging/formatter/index.d.mts.map +0 -1
- package/dist/logging/formatter/index.mjs +0 -115
- package/dist/logging/formatter/index.mjs.map +0 -1
- package/dist/logging/formatter/types.d.cts +0 -5
- package/dist/logging/formatter/types.d.cts.map +0 -1
- package/dist/logging/formatter/types.d.mts +0 -5
- package/dist/logging/formatter/types.d.mts.map +0 -1
- package/dist/logging/provider/index.cjs +0 -165
- package/dist/logging/provider/index.d.cts +0 -28
- package/dist/logging/provider/index.d.cts.map +0 -1
- package/dist/logging/provider/index.d.mts +0 -28
- package/dist/logging/provider/index.d.mts.map +0 -1
- package/dist/logging/provider/index.mjs +0 -165
- package/dist/logging/provider/index.mjs.map +0 -1
- package/dist/logging/provider/types.d.cts +0 -23
- package/dist/logging/provider/types.d.cts.map +0 -1
- package/dist/logging/provider/types.d.mts +0 -23
- package/dist/logging/provider/types.d.mts.map +0 -1
- package/dist/node_modules/@standard-schema/spec/dist/index.d.cts +0 -80
- package/dist/node_modules/@standard-schema/spec/dist/index.d.cts.map +0 -1
- package/dist/node_modules/@standard-schema/spec/dist/index.d.mts +0 -80
- package/dist/node_modules/@standard-schema/spec/dist/index.d.mts.map +0 -1
- package/dist/orm/column.cjs +0 -137
- package/dist/orm/column.d.cts +0 -121
- package/dist/orm/column.d.cts.map +0 -1
- package/dist/orm/column.d.mts +0 -121
- package/dist/orm/column.d.mts.map +0 -1
- package/dist/orm/column.mjs +0 -132
- package/dist/orm/column.mjs.map +0 -1
- package/dist/orm/dialect/index.cjs +0 -14
- package/dist/orm/dialect/index.mjs +0 -16
- package/dist/orm/dialect/index.mjs.map +0 -1
- package/dist/orm/dialect/mysql.cjs +0 -31
- package/dist/orm/dialect/mysql.mjs +0 -33
- package/dist/orm/dialect/mysql.mjs.map +0 -1
- package/dist/orm/dialect/postgres.cjs +0 -23
- package/dist/orm/dialect/postgres.mjs +0 -25
- package/dist/orm/dialect/postgres.mjs.map +0 -1
- package/dist/orm/dialect/sqlite.cjs +0 -31
- package/dist/orm/dialect/sqlite.mjs +0 -33
- package/dist/orm/dialect/sqlite.mjs.map +0 -1
- package/dist/orm/dialect/utils.cjs +0 -8
- package/dist/orm/dialect/utils.mjs +0 -10
- package/dist/orm/dialect/utils.mjs.map +0 -1
- package/dist/orm/internal/table-columns.cjs +0 -31
- package/dist/orm/internal/table-columns.mjs +0 -32
- package/dist/orm/internal/table-columns.mjs.map +0 -1
- package/dist/orm/internal/table-lookup.cjs +0 -35
- package/dist/orm/internal/table-lookup.mjs +0 -35
- package/dist/orm/internal/table-lookup.mjs.map +0 -1
- package/dist/orm/internal/table-relations.cjs +0 -28
- package/dist/orm/internal/table-relations.mjs +0 -29
- package/dist/orm/internal/table-relations.mjs.map +0 -1
- package/dist/orm/migration/config.cjs +0 -7
- package/dist/orm/migration/config.d.cts +0 -7
- package/dist/orm/migration/config.d.cts.map +0 -1
- package/dist/orm/migration/config.d.mts +0 -7
- package/dist/orm/migration/config.d.mts.map +0 -1
- package/dist/orm/migration/config.mjs +0 -8
- package/dist/orm/migration/config.mjs.map +0 -1
- package/dist/orm/migration/types.d.cts +0 -20
- package/dist/orm/migration/types.d.cts.map +0 -1
- package/dist/orm/migration/types.d.mts +0 -20
- package/dist/orm/migration/types.d.mts.map +0 -1
- package/dist/orm/orm.cjs +0 -41
- package/dist/orm/orm.d.cts +0 -18
- package/dist/orm/orm.d.cts.map +0 -1
- package/dist/orm/orm.d.mts +0 -18
- package/dist/orm/orm.d.mts.map +0 -1
- package/dist/orm/orm.mjs +0 -43
- package/dist/orm/orm.mjs.map +0 -1
- package/dist/orm/relation.cjs +0 -18
- package/dist/orm/relation.d.cts +0 -8
- package/dist/orm/relation.d.cts.map +0 -1
- package/dist/orm/relation.d.mts +0 -8
- package/dist/orm/relation.d.mts.map +0 -1
- package/dist/orm/relation.mjs +0 -19
- package/dist/orm/relation.mjs.map +0 -1
- package/dist/orm/runtime/builders/mutations.cjs +0 -29
- package/dist/orm/runtime/builders/mutations.mjs +0 -28
- package/dist/orm/runtime/builders/mutations.mjs.map +0 -1
- package/dist/orm/runtime/builders/select.cjs +0 -18
- package/dist/orm/runtime/builders/select.mjs +0 -19
- package/dist/orm/runtime/builders/select.mjs.map +0 -1
- package/dist/orm/runtime/client.cjs +0 -90
- package/dist/orm/runtime/client.mjs +0 -92
- package/dist/orm/runtime/client.mjs.map +0 -1
- package/dist/orm/runtime/context.cjs +0 -49
- package/dist/orm/runtime/context.mjs +0 -51
- package/dist/orm/runtime/context.mjs.map +0 -1
- package/dist/orm/runtime/dialect/index.cjs +0 -11
- package/dist/orm/runtime/dialect/index.mjs +0 -13
- package/dist/orm/runtime/dialect/index.mjs.map +0 -1
- package/dist/orm/runtime/dialect/mysql.cjs +0 -95
- package/dist/orm/runtime/dialect/mysql.mjs +0 -97
- package/dist/orm/runtime/dialect/mysql.mjs.map +0 -1
- package/dist/orm/runtime/dialect/postgres.cjs +0 -51
- package/dist/orm/runtime/dialect/postgres.mjs +0 -53
- package/dist/orm/runtime/dialect/postgres.mjs.map +0 -1
- package/dist/orm/runtime/dialect/sqlite.cjs +0 -4
- package/dist/orm/runtime/dialect/sqlite.mjs +0 -7
- package/dist/orm/runtime/dialect/sqlite.mjs.map +0 -1
- package/dist/orm/runtime/errors.cjs +0 -19
- package/dist/orm/runtime/errors.mjs +0 -21
- package/dist/orm/runtime/errors.mjs.map +0 -1
- package/dist/orm/runtime/hydrate/many.cjs +0 -46
- package/dist/orm/runtime/hydrate/many.mjs +0 -48
- package/dist/orm/runtime/hydrate/many.mjs.map +0 -1
- package/dist/orm/runtime/hydrate/one.cjs +0 -38
- package/dist/orm/runtime/hydrate/one.mjs +0 -40
- package/dist/orm/runtime/hydrate/one.mjs.map +0 -1
- package/dist/orm/runtime/hydrate.cjs +0 -49
- package/dist/orm/runtime/hydrate.mjs +0 -51
- package/dist/orm/runtime/hydrate.mjs.map +0 -1
- package/dist/orm/runtime/rows.cjs +0 -30
- package/dist/orm/runtime/rows.mjs +0 -31
- package/dist/orm/runtime/rows.mjs.map +0 -1
- package/dist/orm/runtime/utils.cjs +0 -27
- package/dist/orm/runtime/utils.mjs +0 -27
- package/dist/orm/runtime/utils.mjs.map +0 -1
- package/dist/orm/sql/parse-array.cjs +0 -64
- package/dist/orm/sql/parse-array.mjs +0 -66
- package/dist/orm/sql/parse-array.mjs.map +0 -1
- package/dist/orm/sql/plan/select.cjs +0 -36
- package/dist/orm/sql/plan/select.mjs +0 -38
- package/dist/orm/sql/plan/select.mjs.map +0 -1
- package/dist/orm/sql/plan/where/operators.cjs +0 -95
- package/dist/orm/sql/plan/where/operators.mjs +0 -97
- package/dist/orm/sql/plan/where/operators.mjs.map +0 -1
- package/dist/orm/sql/plan/where.cjs +0 -59
- package/dist/orm/sql/plan/where.mjs +0 -61
- package/dist/orm/sql/plan/where.mjs.map +0 -1
- package/dist/orm/sql/serialize/clauses.cjs +0 -36
- package/dist/orm/sql/serialize/clauses.mjs +0 -37
- package/dist/orm/sql/serialize/clauses.mjs.map +0 -1
- package/dist/orm/sql/serialize/joins.cjs +0 -31
- package/dist/orm/sql/serialize/joins.mjs +0 -33
- package/dist/orm/sql/serialize/joins.mjs.map +0 -1
- package/dist/orm/sql/serialize/values.cjs +0 -30
- package/dist/orm/sql/serialize/values.mjs +0 -32
- package/dist/orm/sql/serialize/values.mjs.map +0 -1
- package/dist/orm/sql/serialize/where/predicate.cjs +0 -73
- package/dist/orm/sql/serialize/where/predicate.mjs +0 -75
- package/dist/orm/sql/serialize/where/predicate.mjs.map +0 -1
- package/dist/orm/sql/serialize/where/tree.cjs +0 -26
- package/dist/orm/sql/serialize/where/tree.mjs +0 -28
- package/dist/orm/sql/serialize/where/tree.mjs.map +0 -1
- package/dist/orm/sql/serialize/where.cjs +0 -10
- package/dist/orm/sql/serialize/where.mjs +0 -12
- package/dist/orm/sql/serialize/where.mjs.map +0 -1
- package/dist/orm/sql/serialize.cjs +0 -24
- package/dist/orm/sql/serialize.mjs +0 -25
- package/dist/orm/sql/serialize.mjs.map +0 -1
- package/dist/orm/table.cjs +0 -12
- package/dist/orm/table.d.cts +0 -12
- package/dist/orm/table.d.cts.map +0 -1
- package/dist/orm/table.d.mts +0 -12
- package/dist/orm/table.d.mts.map +0 -1
- package/dist/orm/table.mjs +0 -14
- package/dist/orm/table.mjs.map +0 -1
- package/dist/orm/types.d.cts +0 -183
- package/dist/orm/types.d.cts.map +0 -1
- package/dist/orm/types.d.mts +0 -183
- package/dist/orm/types.d.mts.map +0 -1
- package/dist/policy/helpers.cjs +0 -206
- package/dist/policy/helpers.d.cts +0 -50
- package/dist/policy/helpers.d.cts.map +0 -1
- package/dist/policy/helpers.d.mts +0 -50
- package/dist/policy/helpers.d.mts.map +0 -1
- package/dist/policy/helpers.mjs +0 -190
- package/dist/policy/helpers.mjs.map +0 -1
- package/dist/policy/types.d.cts +0 -16
- package/dist/policy/types.d.cts.map +0 -1
- package/dist/policy/types.d.mts +0 -16
- package/dist/policy/types.d.mts.map +0 -1
- package/dist/prompts/core/keys.cjs +0 -165
- package/dist/prompts/core/keys.mjs +0 -167
- package/dist/prompts/core/keys.mjs.map +0 -1
- package/dist/prompts/core/runtime.cjs +0 -104
- package/dist/prompts/core/runtime.mjs +0 -106
- package/dist/prompts/core/runtime.mjs.map +0 -1
- package/dist/prompts/core/session.cjs +0 -98
- package/dist/prompts/core/session.mjs +0 -100
- package/dist/prompts/core/session.mjs.map +0 -1
- package/dist/prompts/core/types.d.cts +0 -21
- package/dist/prompts/core/types.d.cts.map +0 -1
- package/dist/prompts/core/types.d.mts +0 -21
- package/dist/prompts/core/types.d.mts.map +0 -1
- package/dist/prompts/types.d.cts +0 -52
- package/dist/prompts/types.d.cts.map +0 -1
- package/dist/prompts/types.d.mts +0 -52
- package/dist/prompts/types.d.mts.map +0 -1
- package/dist/pubsub/types.d.cts +0 -10
- package/dist/pubsub/types.d.cts.map +0 -1
- package/dist/pubsub/types.d.mts +0 -10
- package/dist/pubsub/types.d.mts.map +0 -1
- package/dist/queue/types.d.cts +0 -47
- package/dist/queue/types.d.cts.map +0 -1
- package/dist/queue/types.d.mts +0 -47
- package/dist/queue/types.d.mts.map +0 -1
- package/dist/workflow/types.d.cts +0 -83
- package/dist/workflow/types.d.cts.map +0 -1
- package/dist/workflow/types.d.mts +0 -83
- package/dist/workflow/types.d.mts.map +0 -1
|
@@ -1,6 +1,365 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { runPromptSession } from "../../prompts/core/session.mjs";
|
|
1
|
+
import { mightThrow, mightThrowSync } from "../errors/index.mjs";
|
|
3
2
|
import { styleText } from "node:util";
|
|
3
|
+
//#region src/lib/prompts/errors.ts
|
|
4
|
+
var PromptIOError = class extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "PromptIOError";
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var PromptEnvironmentError = class extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "PromptEnvironmentError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var PromptCancelledError = class extends Error {
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = "PromptCancelledError";
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/lib/prompts/core/keys.ts
|
|
24
|
+
const ESC = "\x1B";
|
|
25
|
+
const CSI = "\x1B[";
|
|
26
|
+
const ESC_BACKSPACE = `${ESC}\u007F`;
|
|
27
|
+
const CHAR_KEY_MAP = new Map(Object.values({
|
|
28
|
+
enterCr: {
|
|
29
|
+
value: "\r",
|
|
30
|
+
name: "enter"
|
|
31
|
+
},
|
|
32
|
+
enterLf: {
|
|
33
|
+
value: "\n",
|
|
34
|
+
name: "enter"
|
|
35
|
+
},
|
|
36
|
+
ctrlA: {
|
|
37
|
+
value: "",
|
|
38
|
+
name: "ctrl_a"
|
|
39
|
+
},
|
|
40
|
+
ctrlC: {
|
|
41
|
+
value: "",
|
|
42
|
+
name: "ctrl_c"
|
|
43
|
+
},
|
|
44
|
+
ctrlBackspace: {
|
|
45
|
+
value: "",
|
|
46
|
+
name: "ctrl_backspace"
|
|
47
|
+
},
|
|
48
|
+
backspace: {
|
|
49
|
+
value: "",
|
|
50
|
+
name: "backspace"
|
|
51
|
+
},
|
|
52
|
+
tab: {
|
|
53
|
+
value: " ",
|
|
54
|
+
name: "tab"
|
|
55
|
+
},
|
|
56
|
+
space: {
|
|
57
|
+
value: " ",
|
|
58
|
+
name: "space"
|
|
59
|
+
}
|
|
60
|
+
}).map((entry) => [entry.value, { name: entry.name }]));
|
|
61
|
+
const KNOWN_SEQUENCES = [
|
|
62
|
+
{
|
|
63
|
+
sequence: "\x1B[1;2D",
|
|
64
|
+
key: { name: "shift_left" }
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
sequence: "\x1B[1;2C",
|
|
68
|
+
key: { name: "shift_right" }
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
sequence: "\x1B[1;5D",
|
|
72
|
+
key: { name: "ctrl_left" }
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
sequence: "\x1B[1;5C",
|
|
76
|
+
key: { name: "ctrl_right" }
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
sequence: "\x1B[1;6D",
|
|
80
|
+
key: { name: "shift_ctrl_left" }
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
sequence: "\x1B[1;6C",
|
|
84
|
+
key: { name: "shift_ctrl_right" }
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
sequence: "\x1B[3~",
|
|
88
|
+
key: { name: "delete" }
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
sequence: "\x1B[H",
|
|
92
|
+
key: { name: "home" }
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
sequence: "\x1B[F",
|
|
96
|
+
key: { name: "end" }
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
sequence: "\x1B[A",
|
|
100
|
+
key: { name: "up" }
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
sequence: "\x1B[B",
|
|
104
|
+
key: { name: "down" }
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
sequence: "\x1B[C",
|
|
108
|
+
key: { name: "right" }
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
sequence: "\x1B[D",
|
|
112
|
+
key: { name: "left" }
|
|
113
|
+
}
|
|
114
|
+
];
|
|
115
|
+
const isControlChar = (char) => {
|
|
116
|
+
return char <= "" || char === "";
|
|
117
|
+
};
|
|
118
|
+
const isCsiFinalByte = (char) => {
|
|
119
|
+
if (!char) return false;
|
|
120
|
+
if (char >= "A" && char <= "Z") return true;
|
|
121
|
+
if (char >= "a" && char <= "z") return true;
|
|
122
|
+
if (char === "~") return true;
|
|
123
|
+
return false;
|
|
124
|
+
};
|
|
125
|
+
const readCsiLength = (remaining) => {
|
|
126
|
+
if (!remaining.startsWith(CSI)) return null;
|
|
127
|
+
let index = 2;
|
|
128
|
+
while (index < remaining.length) {
|
|
129
|
+
if (isCsiFinalByte(remaining[index] ?? "")) return {
|
|
130
|
+
length: index + 1,
|
|
131
|
+
incomplete: false
|
|
132
|
+
};
|
|
133
|
+
index += 1;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
length: 0,
|
|
137
|
+
incomplete: true
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
const parseKeys = (chunk) => {
|
|
141
|
+
const keys = [];
|
|
142
|
+
let cursor = 0;
|
|
143
|
+
while (cursor < chunk.length) {
|
|
144
|
+
const remaining = chunk.slice(cursor);
|
|
145
|
+
if (remaining.startsWith(ESC_BACKSPACE)) {
|
|
146
|
+
keys.push({ name: "ctrl_backspace" });
|
|
147
|
+
cursor += 2;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const knownSequence = KNOWN_SEQUENCES.find((entry) => remaining.startsWith(entry.sequence));
|
|
151
|
+
if (knownSequence) {
|
|
152
|
+
keys.push(knownSequence.key);
|
|
153
|
+
cursor += knownSequence.sequence.length;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const csiLength = readCsiLength(remaining);
|
|
157
|
+
if (csiLength) {
|
|
158
|
+
if (csiLength.incomplete) return {
|
|
159
|
+
keys,
|
|
160
|
+
remaining: chunk.slice(cursor)
|
|
161
|
+
};
|
|
162
|
+
cursor += csiLength.length;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const char = chunk[cursor] ?? "";
|
|
166
|
+
switch (char) {
|
|
167
|
+
case ESC:
|
|
168
|
+
if (cursor === chunk.length - 1) keys.push({ name: "escape" });
|
|
169
|
+
break;
|
|
170
|
+
default: {
|
|
171
|
+
const key = CHAR_KEY_MAP.get(char);
|
|
172
|
+
if (key) keys.push(key);
|
|
173
|
+
else if (!isControlChar(char)) keys.push({
|
|
174
|
+
name: "character",
|
|
175
|
+
value: char
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
cursor += 1;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
keys,
|
|
183
|
+
remaining: ""
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/lib/prompts/core/runtime.ts
|
|
188
|
+
const HIDE_CURSOR = "\x1B[?25l";
|
|
189
|
+
const SHOW_CURSOR = "\x1B[?25h";
|
|
190
|
+
const countLines = (text) => {
|
|
191
|
+
let count = 1;
|
|
192
|
+
for (let i = 0; i < text.length; i++) if (text[i] === "\n") count += 1;
|
|
193
|
+
return count;
|
|
194
|
+
};
|
|
195
|
+
var NodePromptRuntime = class {
|
|
196
|
+
stdin;
|
|
197
|
+
stdout;
|
|
198
|
+
queue = [];
|
|
199
|
+
waiters = [];
|
|
200
|
+
initialized = false;
|
|
201
|
+
previousLines = 0;
|
|
202
|
+
buffer = "";
|
|
203
|
+
constructor(stdin = process.stdin, stdout = process.stdout) {
|
|
204
|
+
this.stdin = stdin;
|
|
205
|
+
this.stdout = stdout;
|
|
206
|
+
}
|
|
207
|
+
isInteractive() {
|
|
208
|
+
return Boolean(this.stdin.isTTY && this.stdout.isTTY && typeof this.stdin.setRawMode === "function");
|
|
209
|
+
}
|
|
210
|
+
init() {
|
|
211
|
+
if (!this.isInteractive()) throw new PromptEnvironmentError("Interactive prompts require a TTY with raw mode support");
|
|
212
|
+
if (this.initialized) return;
|
|
213
|
+
const [initError] = mightThrowSync(() => {
|
|
214
|
+
this.stdin.setRawMode(true);
|
|
215
|
+
this.stdin.setEncoding("utf8");
|
|
216
|
+
this.stdin.resume();
|
|
217
|
+
this.stdin.on("data", this.onData);
|
|
218
|
+
this.stdout.write(HIDE_CURSOR);
|
|
219
|
+
});
|
|
220
|
+
if (initError) throw new PromptIOError("Unable to initialize prompt runtime");
|
|
221
|
+
this.initialized = true;
|
|
222
|
+
}
|
|
223
|
+
readKey() {
|
|
224
|
+
const queued = this.queue.shift();
|
|
225
|
+
if (queued) return Promise.resolve(queued);
|
|
226
|
+
return new Promise((resolve, reject) => {
|
|
227
|
+
this.waiters.push({
|
|
228
|
+
resolve,
|
|
229
|
+
reject
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
render(frame) {
|
|
234
|
+
const [renderError] = mightThrowSync(() => {
|
|
235
|
+
if (this.previousLines > 1) this.stdout.write(`\u001B[${this.previousLines - 1}A`);
|
|
236
|
+
this.stdout.write("\r\x1B[J");
|
|
237
|
+
this.stdout.write(frame);
|
|
238
|
+
this.previousLines = countLines(frame);
|
|
239
|
+
});
|
|
240
|
+
if (renderError) throw new PromptIOError("Unable to render prompt frame");
|
|
241
|
+
}
|
|
242
|
+
done(frame) {
|
|
243
|
+
const [doneError] = mightThrowSync(() => {
|
|
244
|
+
if (this.previousLines > 1) this.stdout.write(`\u001B[${this.previousLines - 1}A`);
|
|
245
|
+
this.stdout.write("\r\x1B[J");
|
|
246
|
+
this.stdout.write(`${frame}\n`);
|
|
247
|
+
this.previousLines = 0;
|
|
248
|
+
});
|
|
249
|
+
if (doneError) throw new PromptIOError("Unable to finalize prompt frame");
|
|
250
|
+
}
|
|
251
|
+
close() {
|
|
252
|
+
if (!this.initialized) return;
|
|
253
|
+
this.initialized = false;
|
|
254
|
+
const [closeError] = mightThrowSync(() => {
|
|
255
|
+
this.stdin.off("data", this.onData);
|
|
256
|
+
this.stdin.setRawMode(false);
|
|
257
|
+
this.stdin.pause?.();
|
|
258
|
+
this.stdout.write(SHOW_CURSOR);
|
|
259
|
+
});
|
|
260
|
+
if (closeError) throw new PromptIOError("Unable to close prompt runtime");
|
|
261
|
+
}
|
|
262
|
+
interrupt() {
|
|
263
|
+
this.close();
|
|
264
|
+
process.exit(0);
|
|
265
|
+
}
|
|
266
|
+
onData = (chunk) => {
|
|
267
|
+
const value = typeof chunk === "string" ? chunk : chunk.toString("utf8");
|
|
268
|
+
const combined = `${this.buffer}${value}`;
|
|
269
|
+
this.buffer = "";
|
|
270
|
+
const [parseError, result] = mightThrowSync(() => parseKeys(combined));
|
|
271
|
+
if (parseError || !result) {
|
|
272
|
+
for (const waiter of this.waiters.splice(0)) waiter.reject(new PromptIOError("Failed to parse input"));
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
this.buffer = result.remaining;
|
|
276
|
+
for (const key of result.keys) {
|
|
277
|
+
const waiter = this.waiters.shift();
|
|
278
|
+
if (waiter) waiter.resolve(key);
|
|
279
|
+
else this.queue.push(key);
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
const createNodePromptRuntime = () => {
|
|
284
|
+
return new NodePromptRuntime();
|
|
285
|
+
};
|
|
286
|
+
//#endregion
|
|
287
|
+
//#region src/lib/prompts/core/session.ts
|
|
288
|
+
const CANCEL_MESSAGE = "Interrupted, bye!";
|
|
289
|
+
const resolveOutput = async (options, value) => {
|
|
290
|
+
if (!options.transform) return value;
|
|
291
|
+
const [transformError, transformed] = await mightThrow(Promise.resolve().then(() => options.transform?.(value)));
|
|
292
|
+
if (transformError || transformed === null || transformed === void 0) throw new PromptIOError("Prompt transform callback failed unexpectedly");
|
|
293
|
+
return transformed;
|
|
294
|
+
};
|
|
295
|
+
const runValidation = async (options, value) => {
|
|
296
|
+
if (!options.validate) return null;
|
|
297
|
+
const [validationError, validationMessage] = await mightThrow(Promise.resolve().then(() => options.validate?.(value)));
|
|
298
|
+
if (validationError) throw new PromptIOError("Prompt validate callback failed unexpectedly");
|
|
299
|
+
if (typeof validationMessage === "string" && validationMessage.length > 0) return validationMessage;
|
|
300
|
+
return null;
|
|
301
|
+
};
|
|
302
|
+
const isCancelKey = (key) => {
|
|
303
|
+
if (key.name === "ctrl_c") return true;
|
|
304
|
+
if (key.name === "escape") return true;
|
|
305
|
+
return false;
|
|
306
|
+
};
|
|
307
|
+
const runPromptSession = async (params) => {
|
|
308
|
+
params.runtime.init();
|
|
309
|
+
let state = params.initialState;
|
|
310
|
+
let errorMessage = null;
|
|
311
|
+
const closeAndDone = (message) => {
|
|
312
|
+
params.runtime.close();
|
|
313
|
+
params.runtime.done(message);
|
|
314
|
+
};
|
|
315
|
+
const [sessionError, finalValue] = await mightThrow((async () => {
|
|
316
|
+
while (true) {
|
|
317
|
+
params.runtime.render(params.render({
|
|
318
|
+
options: params.options,
|
|
319
|
+
state,
|
|
320
|
+
errorMessage
|
|
321
|
+
}));
|
|
322
|
+
const key = await params.runtime.readKey();
|
|
323
|
+
if (!key) throw new PromptIOError("Unable to read prompt input");
|
|
324
|
+
if (isCancelKey(key)) {
|
|
325
|
+
params.runtime.close();
|
|
326
|
+
params.runtime.done(`✖ ${CANCEL_MESSAGE}`);
|
|
327
|
+
if (params.runtime.interrupt) params.runtime.interrupt(CANCEL_MESSAGE);
|
|
328
|
+
throw new PromptCancelledError(CANCEL_MESSAGE);
|
|
329
|
+
}
|
|
330
|
+
if (key.name !== "enter") {
|
|
331
|
+
state = params.onKey(state, key);
|
|
332
|
+
errorMessage = null;
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
const submitResult = params.onSubmit(state);
|
|
336
|
+
if ("errorMessage" in submitResult) {
|
|
337
|
+
errorMessage = submitResult.errorMessage;
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
const rawValue = submitResult.value;
|
|
341
|
+
const validationErrorMessage = await runValidation(params.options, rawValue);
|
|
342
|
+
if (validationErrorMessage) {
|
|
343
|
+
errorMessage = validationErrorMessage;
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
const outputValue = await resolveOutput(params.options, rawValue);
|
|
347
|
+
if (outputValue === null) throw new PromptIOError("Unable to transform prompt value");
|
|
348
|
+
closeAndDone(params.complete({
|
|
349
|
+
options: params.options,
|
|
350
|
+
state,
|
|
351
|
+
value: outputValue
|
|
352
|
+
}));
|
|
353
|
+
return outputValue;
|
|
354
|
+
}
|
|
355
|
+
})());
|
|
356
|
+
if (sessionError) {
|
|
357
|
+
params.runtime.close();
|
|
358
|
+
throw sessionError;
|
|
359
|
+
}
|
|
360
|
+
return finalValue;
|
|
361
|
+
};
|
|
362
|
+
//#endregion
|
|
4
363
|
//#region src/lib/prompts/index.ts
|
|
5
364
|
const pointer = (active) => {
|
|
6
365
|
return active ? paint("cyan", "❯") : " ";
|
|
@@ -401,5 +760,3 @@ const multiselect = async (options, runtime) => {
|
|
|
401
760
|
};
|
|
402
761
|
//#endregion
|
|
403
762
|
export { confirm, input, multiselect, number, password, select };
|
|
404
|
-
|
|
405
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_lib_errors_index = require("../errors/index.cjs");
|
|
3
|
+
//#region src/lib/pubsub/errors.ts
|
|
4
|
+
var UnsubscribeError = class extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "UnsubscribeError";
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var SerializationError = class extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "SerializationError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var PublishError = class extends Error {
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = "PublishError";
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var SubscribeError = class extends Error {
|
|
23
|
+
constructor(message) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "SubscribeError";
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
3
29
|
//#region src/lib/pubsub/index.ts
|
|
4
30
|
var PubSub = class {
|
|
5
31
|
options;
|
|
@@ -22,33 +48,32 @@ var PubSub = class {
|
|
|
22
48
|
const inFlightUnsubscribe = this.unsubscribeInFlight;
|
|
23
49
|
if (inFlightUnsubscribe) await inFlightUnsubscribe;
|
|
24
50
|
const handler = this.handlers.get(handlerId);
|
|
25
|
-
if (!handler)
|
|
51
|
+
if (!handler) throw new UnsubscribeError("Not subscribed");
|
|
26
52
|
this.handlers.delete(handlerId);
|
|
27
|
-
if (this.handlers.size > 0) return
|
|
53
|
+
if (this.handlers.size > 0) return;
|
|
28
54
|
this.isSubscribed = false;
|
|
29
55
|
this.unsubscribeInFlight = require_lib_errors_index.mightThrow(this.options.subscriber.unsubscribe(this.options.channel));
|
|
30
56
|
const unsubscribeInFlight = this.unsubscribeInFlight;
|
|
31
57
|
if (!unsubscribeInFlight) {
|
|
32
58
|
this.handlers.set(handlerId, handler);
|
|
33
59
|
this.isSubscribed = true;
|
|
34
|
-
|
|
60
|
+
throw new UnsubscribeError(`Unable to unsubscribe from ${this.options.channel}`);
|
|
35
61
|
}
|
|
36
62
|
const [unsubscribeError] = await unsubscribeInFlight;
|
|
37
63
|
if (unsubscribeError) {
|
|
38
64
|
this.handlers.set(handlerId, handler);
|
|
39
65
|
this.isSubscribed = true;
|
|
40
66
|
this.unsubscribeInFlight = null;
|
|
41
|
-
|
|
67
|
+
throw new UnsubscribeError(`Unable to unsubscribe from ${this.options.channel}`);
|
|
42
68
|
}
|
|
43
69
|
this.unsubscribeInFlight = null;
|
|
44
|
-
return require_lib_errors_index.ok(true);
|
|
45
70
|
}
|
|
46
71
|
async publish(message) {
|
|
47
72
|
const [stringifyError, stringified] = require_lib_errors_index.mightThrowSync(() => JSON.stringify(message));
|
|
48
|
-
if (stringifyError || !stringified)
|
|
73
|
+
if (stringifyError || !stringified) throw new SerializationError("Unable to serialize message");
|
|
49
74
|
const [publishError, count] = await require_lib_errors_index.mightThrow(this.options.publisher.publish(this.options.channel, stringified));
|
|
50
|
-
if (publishError)
|
|
51
|
-
return
|
|
75
|
+
if (publishError) throw new PublishError(`Unable to publish to ${this.options.channel}`);
|
|
76
|
+
return count;
|
|
52
77
|
}
|
|
53
78
|
async subscribe(handler) {
|
|
54
79
|
const inFlightUnsubscribe = this.unsubscribeInFlight;
|
|
@@ -56,39 +81,39 @@ var PubSub = class {
|
|
|
56
81
|
const handlerId = this.nextHandlerId;
|
|
57
82
|
this.nextHandlerId += 1;
|
|
58
83
|
this.handlers.set(handlerId, handler);
|
|
59
|
-
if (this.isActive()) return
|
|
84
|
+
if (this.isActive()) return () => this.unsubscribeHandler(handlerId);
|
|
60
85
|
const inFlightSubscribe = this.subscribeInFlight;
|
|
61
86
|
if (inFlightSubscribe) {
|
|
62
87
|
const [inFlightError] = await inFlightSubscribe;
|
|
63
88
|
if (inFlightError || !this.isSubscribed) {
|
|
64
89
|
this.handlers.delete(handlerId);
|
|
65
|
-
|
|
90
|
+
throw new SubscribeError(`Unable to subscribe to ${this.options.channel}`);
|
|
66
91
|
}
|
|
67
|
-
return
|
|
92
|
+
return () => this.unsubscribeHandler(handlerId);
|
|
68
93
|
}
|
|
69
94
|
this.subscribeInFlight = require_lib_errors_index.mightThrow(this.options.subscriber.subscribe(this.options.channel, async (message, channel) => this.onMessage(message, channel)));
|
|
70
95
|
const subscribeInFlight = this.subscribeInFlight;
|
|
71
96
|
if (!subscribeInFlight) {
|
|
72
97
|
this.handlers.delete(handlerId);
|
|
73
|
-
|
|
98
|
+
throw new SubscribeError(`Unable to subscribe to ${this.options.channel}`);
|
|
74
99
|
}
|
|
75
100
|
const [subscribeError, count] = await subscribeInFlight;
|
|
76
101
|
this.subscribeInFlight = null;
|
|
77
102
|
if (subscribeError) {
|
|
78
103
|
this.handlers.delete(handlerId);
|
|
79
|
-
|
|
104
|
+
throw new SubscribeError(`Unable to subscribe to ${this.options.channel}`);
|
|
80
105
|
}
|
|
81
106
|
if (!count) {
|
|
82
107
|
this.handlers.delete(handlerId);
|
|
83
|
-
|
|
108
|
+
throw new SubscribeError(`Unable to subscribe to ${this.options.channel}`);
|
|
84
109
|
}
|
|
85
110
|
this.isSubscribed = true;
|
|
86
|
-
return
|
|
111
|
+
return () => this.unsubscribeHandler(handlerId);
|
|
87
112
|
}
|
|
88
113
|
async unsubscribe() {
|
|
89
114
|
const inFlightUnsubscribe = this.unsubscribeInFlight;
|
|
90
115
|
if (inFlightUnsubscribe) await inFlightUnsubscribe;
|
|
91
|
-
if (!this.isActive())
|
|
116
|
+
if (!this.isActive()) throw new UnsubscribeError("Not subscribed");
|
|
92
117
|
const handlers = new Map(this.handlers);
|
|
93
118
|
this.handlers.clear();
|
|
94
119
|
this.isSubscribed = false;
|
|
@@ -97,17 +122,16 @@ var PubSub = class {
|
|
|
97
122
|
if (!unsubscribeInFlight) {
|
|
98
123
|
this.handlers = handlers;
|
|
99
124
|
this.isSubscribed = true;
|
|
100
|
-
|
|
125
|
+
throw new UnsubscribeError(`Unable to unsubscribe from ${this.options.channel}`);
|
|
101
126
|
}
|
|
102
127
|
const [unsubscribeError] = await unsubscribeInFlight;
|
|
103
128
|
if (unsubscribeError) {
|
|
104
129
|
this.handlers = handlers;
|
|
105
130
|
this.isSubscribed = true;
|
|
106
131
|
this.unsubscribeInFlight = null;
|
|
107
|
-
|
|
132
|
+
throw new UnsubscribeError(`Unable to unsubscribe from ${this.options.channel}`);
|
|
108
133
|
}
|
|
109
134
|
this.unsubscribeInFlight = null;
|
|
110
|
-
return require_lib_errors_index.ok(true);
|
|
111
135
|
}
|
|
112
136
|
isActive() {
|
|
113
137
|
return this.handlers.size > 0 && this.isSubscribed;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/lib/pubsub/types.d.ts
|
|
2
|
+
type PubSubOptions = {
|
|
3
|
+
subscriber: Bun.RedisClient;
|
|
4
|
+
publisher: Bun.RedisClient;
|
|
5
|
+
channel: string;
|
|
6
|
+
};
|
|
7
|
+
type MessageHandler<T> = (message: T, channel: string) => void | Promise<void>;
|
|
8
|
+
//#endregion
|
|
3
9
|
//#region src/lib/pubsub/index.d.ts
|
|
4
10
|
declare class PubSub<T extends Record<string, unknown>> {
|
|
5
11
|
private options;
|
|
@@ -11,26 +17,10 @@ declare class PubSub<T extends Record<string, unknown>> {
|
|
|
11
17
|
constructor(options: PubSubOptions);
|
|
12
18
|
private onMessage;
|
|
13
19
|
private unsubscribeHandler;
|
|
14
|
-
publish(message: T): Promise<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, null] | readonly [{
|
|
18
|
-
readonly type: "PublishError";
|
|
19
|
-
readonly message: string;
|
|
20
|
-
}, null] | readonly [null, number]>;
|
|
21
|
-
subscribe(handler: MessageHandler<T>): Promise<readonly [null, () => Promise<readonly [{
|
|
22
|
-
readonly type: "UnsubscribeError";
|
|
23
|
-
readonly message: string;
|
|
24
|
-
}, null] | readonly [null, boolean]>] | readonly [{
|
|
25
|
-
readonly type: "SubscribeError";
|
|
26
|
-
readonly message: string;
|
|
27
|
-
}, null]>;
|
|
28
|
-
unsubscribe(): Promise<readonly [{
|
|
29
|
-
readonly type: "UnsubscribeError";
|
|
30
|
-
readonly message: string;
|
|
31
|
-
}, null] | readonly [null, boolean]>;
|
|
20
|
+
publish(message: T): Promise<number>;
|
|
21
|
+
subscribe(handler: MessageHandler<T>): Promise<() => Promise<void>>;
|
|
22
|
+
unsubscribe(): Promise<void>;
|
|
32
23
|
isActive(): boolean;
|
|
33
24
|
}
|
|
34
25
|
//#endregion
|
|
35
|
-
export { PubSub };
|
|
36
|
-
//# sourceMappingURL=index.d.cts.map
|
|
26
|
+
export { PubSub };
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/lib/pubsub/types.d.ts
|
|
2
|
+
type PubSubOptions = {
|
|
3
|
+
subscriber: Bun.RedisClient;
|
|
4
|
+
publisher: Bun.RedisClient;
|
|
5
|
+
channel: string;
|
|
6
|
+
};
|
|
7
|
+
type MessageHandler<T> = (message: T, channel: string) => void | Promise<void>;
|
|
8
|
+
//#endregion
|
|
3
9
|
//#region src/lib/pubsub/index.d.ts
|
|
4
10
|
declare class PubSub<T extends Record<string, unknown>> {
|
|
5
11
|
private options;
|
|
@@ -11,26 +17,10 @@ declare class PubSub<T extends Record<string, unknown>> {
|
|
|
11
17
|
constructor(options: PubSubOptions);
|
|
12
18
|
private onMessage;
|
|
13
19
|
private unsubscribeHandler;
|
|
14
|
-
publish(message: T): Promise<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, null] | readonly [{
|
|
18
|
-
readonly type: "PublishError";
|
|
19
|
-
readonly message: string;
|
|
20
|
-
}, null] | readonly [null, number]>;
|
|
21
|
-
subscribe(handler: MessageHandler<T>): Promise<readonly [null, () => Promise<readonly [{
|
|
22
|
-
readonly type: "UnsubscribeError";
|
|
23
|
-
readonly message: string;
|
|
24
|
-
}, null] | readonly [null, boolean]>] | readonly [{
|
|
25
|
-
readonly type: "SubscribeError";
|
|
26
|
-
readonly message: string;
|
|
27
|
-
}, null]>;
|
|
28
|
-
unsubscribe(): Promise<readonly [{
|
|
29
|
-
readonly type: "UnsubscribeError";
|
|
30
|
-
readonly message: string;
|
|
31
|
-
}, null] | readonly [null, boolean]>;
|
|
20
|
+
publish(message: T): Promise<number>;
|
|
21
|
+
subscribe(handler: MessageHandler<T>): Promise<() => Promise<void>>;
|
|
22
|
+
unsubscribe(): Promise<void>;
|
|
32
23
|
isActive(): boolean;
|
|
33
24
|
}
|
|
34
25
|
//#endregion
|
|
35
|
-
export { PubSub };
|
|
36
|
-
//# sourceMappingURL=index.d.mts.map
|
|
26
|
+
export { PubSub };
|