target-supabase-sdk 0.2.15 → 0.2.17
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 +20 -0
- package/dist/browser.d.ts +6 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -1
- package/dist/chunks/{task-queue-DCY_0Qj0.js → task-queue-DufG7PlX.js} +295 -121
- package/dist/chunks/task-queue-DufG7PlX.js.map +1 -0
- package/dist/config/config.api.d.ts +61 -0
- package/dist/config/config.api.d.ts.map +1 -0
- package/dist/{service → config}/config.interface.d.ts +1 -3
- package/dist/config/config.interface.d.ts.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/node/runtime-state/service-runtime-state.types.d.ts +1 -1
- package/dist/node/runtime-state/service-runtime-state.types.d.ts.map +1 -1
- package/dist/node/service-guard/registry-slot-guard-step.d.ts +1 -1
- package/dist/node/service-guard/registry-slot-guard-step.d.ts.map +1 -1
- package/dist/node/service-guard/service-guard.interface.d.ts +1 -1
- package/dist/node/service-guard/service-guard.interface.d.ts.map +1 -1
- package/dist/node/service-host/claim-registry-slot.d.ts +1 -1
- package/dist/node/service-host/claim-registry-slot.d.ts.map +1 -1
- package/dist/node/service-host/service-host.d.ts +1 -1
- package/dist/node/service-host/service-host.d.ts.map +1 -1
- package/dist/node/service-host/single-process-service.d.ts +1 -1
- package/dist/node/service-host/single-process-service.d.ts.map +1 -1
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +211 -6
- package/dist/node.js.map +1 -1
- package/dist/service/index.d.ts +5 -10
- package/dist/service/index.d.ts.map +1 -1
- package/dist/service/registry/index.d.ts +14 -0
- package/dist/service/registry/index.d.ts.map +1 -0
- package/dist/service/{registry-lifecycle.d.ts → registry/registry-lifecycle.d.ts} +1 -1
- package/dist/service/registry/registry-lifecycle.d.ts.map +1 -0
- package/dist/service/{config.api.d.ts → registry/registry.api.d.ts} +5 -65
- package/dist/service/registry/registry.api.d.ts.map +1 -0
- package/dist/service/registry/registry.constant.d.ts +23 -0
- package/dist/service/registry/registry.constant.d.ts.map +1 -0
- package/dist/service/registry/registry.interface.d.ts +15 -0
- package/dist/service/registry/registry.interface.d.ts.map +1 -0
- package/dist/service/{registry.service.d.ts → registry/registry.service.d.ts} +23 -15
- package/dist/service/registry/registry.service.d.ts.map +1 -0
- package/dist/service/service.interface.d.ts +0 -10
- package/dist/service/service.interface.d.ts.map +1 -1
- package/dist/shared/media/index.d.ts +14 -0
- package/dist/shared/media/index.d.ts.map +1 -0
- package/dist/shared/media/media.build.d.ts +20 -0
- package/dist/shared/media/media.build.d.ts.map +1 -0
- package/dist/shared/media/media.interface.d.ts +38 -0
- package/dist/shared/media/media.interface.d.ts.map +1 -0
- package/dist/shared/media/media.mime.d.ts +4 -0
- package/dist/shared/media/media.mime.d.ts.map +1 -0
- package/dist/shared/media/media.name.d.ts +6 -0
- package/dist/shared/media/media.name.d.ts.map +1 -0
- package/dist/shared/media/media.query.d.ts +8 -0
- package/dist/shared/media/media.query.d.ts.map +1 -0
- package/dist/shared/media/node/index.d.ts +9 -0
- package/dist/shared/media/node/index.d.ts.map +1 -0
- package/dist/shared/media/node/media.access.d.ts +40 -0
- package/dist/shared/media/node/media.access.d.ts.map +1 -0
- package/dist/shared/media/node/media.service.d.ts +30 -0
- package/dist/shared/media/node/media.service.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/browser.ts +21 -9
- package/src/config/config.api.ts +72 -0
- package/src/{service → config}/config.interface.ts +1 -4
- package/src/config/index.ts +9 -0
- package/src/node/runtime-state/create-service-runtime-state-store.ts +1 -1
- package/src/node/runtime-state/service-runtime-state.types.ts +1 -1
- package/src/node/service-guard/registry-slot-guard-step.ts +4 -1
- package/src/node/service-guard/run-service-guard-tick.ts +1 -1
- package/src/node/service-guard/service-guard.interface.ts +1 -1
- package/src/node/service-host/claim-registry-slot.ts +2 -2
- package/src/node/service-host/service-host.ts +2 -2
- package/src/node/service-host/single-process-service.ts +1 -1
- package/src/node.ts +13 -0
- package/src/service/index.ts +30 -40
- package/src/service/registry/index.ts +65 -0
- package/src/service/{registry-lifecycle.ts → registry/registry-lifecycle.ts} +3 -3
- package/src/service/{config.api.ts → registry/registry.api.ts} +6 -80
- package/src/service/registry/registry.constant.ts +17 -0
- package/src/service/registry/registry.interface.ts +16 -0
- package/src/service/{registry.service.ts → registry/registry.service.ts} +66 -65
- package/src/service/service.interface.ts +0 -12
- package/src/shared/media/README.md +109 -0
- package/src/shared/media/index.ts +19 -0
- package/src/shared/media/media.build.ts +69 -0
- package/src/shared/media/media.interface.ts +45 -0
- package/src/shared/media/media.mime.ts +64 -0
- package/src/shared/media/media.name.ts +33 -0
- package/src/shared/media/media.query.ts +13 -0
- package/src/shared/media/node/index.ts +13 -0
- package/src/shared/media/node/media.access.ts +148 -0
- package/src/shared/media/node/media.service.ts +129 -0
- package/dist/chunks/task-queue-DCY_0Qj0.js.map +0 -1
- package/dist/service/config.api.d.ts.map +0 -1
- package/dist/service/config.interface.d.ts.map +0 -1
- package/dist/service/registry-lifecycle.d.ts.map +0 -1
- package/dist/service/registry.service.d.ts.map +0 -1
package/dist/service/index.d.ts
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Service domain public API — curated re-exports only.
|
|
3
|
+
* System registry: `./registry/` (seed, claim, slot views).
|
|
3
4
|
*/
|
|
4
5
|
export type { EnumMembers, FieldDefinition, SchemaDefinition, ServiceLifecycle, } from "./base.interface";
|
|
5
6
|
export { ServiceLifecycleStatus } from "./base.interface";
|
|
6
|
-
export type {
|
|
7
|
-
export { buildEmptyServiceSlots, buildSystemRegistryConfigDetails, DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS,
|
|
8
|
-
export type { Config, ConfigDetails } from "./config.interface";
|
|
9
|
-
export { CategoryConfig, TARGET_SYSTEM_REGISTRY_KEY } from "./config.interface";
|
|
10
|
-
export type { AppendSystemRegistrySlotsInput, AppendSystemRegistrySlotsOutcome, PatchServiceRuntimeInput, RegisterServiceInput, ReleasedRegistrySlot, ReleaseSystemRegistrySlotsByServiceIdInput, ReleaseSystemRegistrySlotsByServiceIdOutcome, ReleaseSystemRegistrySlotsInput, ReleaseSystemRegistrySlotsOutcome, TargetSystemRegistrySlotView, TargetSystemRegistryView, } from "./registry.service";
|
|
11
|
-
export { appendSystemRegistrySlots, assertRegistrySlotAvailable, assertRegistrySlotOwner, getTargetSystemRegistry, parseServiceSlot, parseServiceSlots, patchServiceRuntime, registerService, registerServiceAtStartup, releaseSystemRegistrySlots, releaseSystemRegistrySlotsByServiceId, resolveActiveRegistryServiceId, ServiceRegistryError, unregisterService, unregisterServiceAtShutdown, } from "./registry.service";
|
|
12
|
-
export type { ClaimRegistrySlotInput, RegistrySlotGuardResult, RegistrySlotRuntimeState, ServiceRegistrySession, } from "./registry-lifecycle";
|
|
13
|
-
export { claimServiceRegistrySlot, createClaimedRegistrySlotRuntimeState, EMPTY_REGISTRY_SLOT_RUNTIME_STATE, registrySlotRuntimePatchFromGuardResult, runRegistrySlotGuardCheck, } from "./registry-lifecycle";
|
|
7
|
+
export type { AppendSystemRegistryEmptySlotsInput, AppendSystemRegistryEmptySlotsOutcome, ClaimRegistrySlotInput, PatchServiceRuntimeInput, PostSystemRegistryConfigPayload, RegisterServiceInput, RegistrySlotGuardResult, RegistrySlotRuntimeState, ReleasedRegistrySlot, ReleaseSystemRegistrySlotsByServiceIdInput, ReleaseSystemRegistrySlotsByServiceIdOutcome, ReleaseSystemRegistrySlotsInput, ReleaseSystemRegistrySlotsOutcome, ResetSystemRegistryConfigPayload, ServiceRegistrySession, ServiceSlot, SystemRegistrySeedSlot, TargetSystemRegistrySlotView, TargetSystemRegistryView, } from "./registry/index";
|
|
8
|
+
export { appendSystemRegistryEmptySlots, assertRegistrySlotAvailable, assertRegistrySlotOwner, buildEmptyServiceSlots, buildSystemRegistryConfigDetails, claimServiceRegistrySlot, createClaimedRegistrySlotRuntimeState, DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, EMPTY_REGISTRY_SLOT_RUNTIME_STATE, getTargetSystemRegistry, parseServiceSlot, parseServiceSlots, patchServiceRuntime, postSystemRegistryConfig, postSystemRegistryConfigSchema, registerService, registerServiceAtStartup, registrySlotRuntimePatchFromGuardResult, releaseSystemRegistrySlots, releaseSystemRegistrySlotsByServiceId, resetSystemRegistryConfig, resetSystemRegistryConfigSchema, resolveActiveRegistryServiceId, runRegistrySlotGuardCheck, ServiceRegistryError, ServiceSlotStatus, systemRegistrySeedSlotSchema, TARGET_SYSTEM_REGISTRY_KEY, unregisterService, unregisterServiceAtShutdown, } from "./registry/index";
|
|
14
9
|
export type { GetApiPayload, GetServicePayload, PostApiPayload, PostServicePayload } from "./service.api";
|
|
15
10
|
export { apiDetailsSchema, fieldDefinitionSchema, getApi, getApiSchema, getService, getServiceSchema, postApi, postApiSchema, postService, postServiceSchema, schemaDefinitionSchema, serviceDetailsSchema, serviceLifecycleSchema, serviceNodeSnapshotSchema, serviceRuntimeSchema, } from "./service.api";
|
|
16
|
-
export type { Api, ApiDetails, Service, ServiceDetails, ServiceNodeSnapshot, ServiceRuntime,
|
|
17
|
-
export { ApiMethod, CategoryApi, CategoryService
|
|
11
|
+
export type { Api, ApiDetails, Service, ServiceDetails, ServiceNodeSnapshot, ServiceRuntime, } from "./service.interface";
|
|
12
|
+
export { ApiMethod, CategoryApi, CategoryService } from "./service.interface";
|
|
18
13
|
export type { PostServiceInstanceOptions, ServiceBootstrapResult } from "./service-bootstrap";
|
|
19
14
|
export { createActiveServiceLifecycle, defaultL3ServiceDetails, postServiceInstance, } from "./service-bootstrap";
|
|
20
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACR,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EACR,mCAAmC,EACnC,qCAAqC,EACrC,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,iCAAiC,EACjC,gCAAgC,EAChC,sBAAsB,EACtB,WAAW,EACX,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,wBAAwB,EACxB,qCAAqC,EACrC,kCAAkC,EAClC,iCAAiC,EACjC,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,8BAA8B,EAC9B,eAAe,EACf,wBAAwB,EACxB,uCAAuC,EACvC,0BAA0B,EAC1B,qCAAqC,EACrC,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,2BAA2B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EACN,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EACR,GAAG,EACH,UAAU,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,cAAc,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EACH,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System service registry — curated re-exports only.
|
|
3
|
+
* Generic Config CRUD lives in `src/config/`.
|
|
4
|
+
*/
|
|
5
|
+
export type { PostSystemRegistryConfigPayload, ResetSystemRegistryConfigPayload, SystemRegistrySeedSlot, } from "./registry.api";
|
|
6
|
+
export { buildEmptyServiceSlots, buildSystemRegistryConfigDetails, postSystemRegistryConfig, postSystemRegistryConfigSchema, resetSystemRegistryConfig, resetSystemRegistryConfigSchema, systemRegistrySeedSlotSchema, } from "./registry.api";
|
|
7
|
+
export { DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, TARGET_SYSTEM_REGISTRY_KEY } from "./registry.constant";
|
|
8
|
+
export type { ServiceSlot } from "./registry.interface";
|
|
9
|
+
export { ServiceSlotStatus } from "./registry.interface";
|
|
10
|
+
export type { AppendSystemRegistryEmptySlotsInput, AppendSystemRegistryEmptySlotsOutcome, PatchServiceRuntimeInput, RegisterServiceInput, ReleasedRegistrySlot, ReleaseSystemRegistrySlotsByServiceIdInput, ReleaseSystemRegistrySlotsByServiceIdOutcome, ReleaseSystemRegistrySlotsInput, ReleaseSystemRegistrySlotsOutcome, TargetSystemRegistrySlotView, TargetSystemRegistryView, } from "./registry.service";
|
|
11
|
+
export { appendSystemRegistryEmptySlots, assertRegistrySlotAvailable, assertRegistrySlotOwner, getTargetSystemRegistry, parseServiceSlot, parseServiceSlots, patchServiceRuntime, registerService, registerServiceAtStartup, releaseSystemRegistrySlots, releaseSystemRegistrySlotsByServiceId, resolveActiveRegistryServiceId, ServiceRegistryError, unregisterService, unregisterServiceAtShutdown, } from "./registry.service";
|
|
12
|
+
export type { ClaimRegistrySlotInput, RegistrySlotGuardResult, RegistrySlotRuntimeState, ServiceRegistrySession, } from "./registry-lifecycle";
|
|
13
|
+
export { claimServiceRegistrySlot, createClaimedRegistrySlotRuntimeState, EMPTY_REGISTRY_SLOT_RUNTIME_STATE, registrySlotRuntimePatchFromGuardResult, runRegistrySlotGuardCheck, } from "./registry-lifecycle";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/registry/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACR,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,sBAAsB,EACtB,gCAAgC,EAChC,wBAAwB,EACxB,8BAA8B,EAC9B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,GAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kCAAkC,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACR,mCAAmC,EACnC,qCAAqC,EACrC,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qCAAqC,EACrC,8BAA8B,EAC9B,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACR,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,wBAAwB,EACxB,qCAAqC,EACrC,iCAAiC,EACjC,uCAAuC,EACvC,yBAAyB,GAC5B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/service/registry/registry-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAWpD,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,iCAAiC,EAAE,wBAM/C,CAAC;AAEF,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,wBAAwB,CAQhG;AAED,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,iEAAiE;IACjE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAwC7G;AAED,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAmBnC;AAED,wBAAgB,uCAAuC,CACnD,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,MAAM,GAClB,IAAI,CAAC,wBAAwB,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAMxF"}
|
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { type Config, type ConfigDetails } from "
|
|
3
|
-
import { type ServiceSlot } from "./
|
|
4
|
-
export declare const getConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
5
|
-
id: z.ZodOptional<z.ZodString>;
|
|
6
|
-
value: z.ZodOptional<z.ZodString>;
|
|
7
|
-
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
id?: string | undefined;
|
|
9
|
-
value?: string | undefined;
|
|
10
|
-
}, {
|
|
11
|
-
id?: string | undefined;
|
|
12
|
-
value?: string | undefined;
|
|
13
|
-
}>, {
|
|
14
|
-
id?: string | undefined;
|
|
15
|
-
value?: string | undefined;
|
|
16
|
-
}, {
|
|
17
|
-
id?: string | undefined;
|
|
18
|
-
value?: string | undefined;
|
|
19
|
-
}>;
|
|
20
|
-
export type GetConfigPayload = z.infer<typeof getConfigSchema>;
|
|
2
|
+
import { type Config, type ConfigDetails } from "../../config/config.interface";
|
|
3
|
+
import { type ServiceSlot } from "./registry.interface";
|
|
21
4
|
/** One declarative EMPTY slot entry for seeding the system registry. */
|
|
22
5
|
export declare const systemRegistrySeedSlotSchema: z.ZodObject<{
|
|
23
6
|
serviceValue: z.ZodString;
|
|
@@ -72,53 +55,10 @@ export declare const resetSystemRegistryConfigSchema: z.ZodObject<{
|
|
|
72
55
|
}[] | undefined;
|
|
73
56
|
}>;
|
|
74
57
|
export type ResetSystemRegistryConfigPayload = PostSystemRegistryConfigPayload;
|
|
75
|
-
/** Default one EMPTY slot per known L3 service (override via payload or seed file). */
|
|
76
|
-
export declare const DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS: readonly SystemRegistrySeedSlot[];
|
|
77
58
|
/** Build EMPTY {@link ServiceSlot} rows from seed entries (one slot per array item). */
|
|
78
59
|
export declare function buildEmptyServiceSlots(seedSlots: readonly SystemRegistrySeedSlot[]): ServiceSlot[];
|
|
79
60
|
/** Build `ConfigDetails` for the globally unique system registry row. */
|
|
80
61
|
export declare function buildSystemRegistryConfigDetails(slots: readonly ServiceSlot[]): ConfigDetails;
|
|
81
|
-
/** Fetch a Config by id or by {@link Config.value} key (`category=config`). */
|
|
82
|
-
export declare const getConfig: (payload: {
|
|
83
|
-
id?: string | undefined;
|
|
84
|
-
value?: string | undefined;
|
|
85
|
-
}) => {
|
|
86
|
-
data: Config;
|
|
87
|
-
status_code: import("..").StatusCode;
|
|
88
|
-
success: boolean;
|
|
89
|
-
message?: string;
|
|
90
|
-
error?: {
|
|
91
|
-
message: string;
|
|
92
|
-
code?: string;
|
|
93
|
-
};
|
|
94
|
-
} | {
|
|
95
|
-
data: undefined;
|
|
96
|
-
status_code: import("..").StatusCode;
|
|
97
|
-
success: boolean;
|
|
98
|
-
message?: string;
|
|
99
|
-
error?: {
|
|
100
|
-
message: string;
|
|
101
|
-
code?: string;
|
|
102
|
-
};
|
|
103
|
-
} | Promise<{
|
|
104
|
-
data: Config;
|
|
105
|
-
status_code: import("..").StatusCode;
|
|
106
|
-
success: boolean;
|
|
107
|
-
message?: string;
|
|
108
|
-
error?: {
|
|
109
|
-
message: string;
|
|
110
|
-
code?: string;
|
|
111
|
-
};
|
|
112
|
-
} | {
|
|
113
|
-
data: undefined;
|
|
114
|
-
status_code: import("..").StatusCode;
|
|
115
|
-
success: boolean;
|
|
116
|
-
message?: string;
|
|
117
|
-
error?: {
|
|
118
|
-
message: string;
|
|
119
|
-
code?: string;
|
|
120
|
-
};
|
|
121
|
-
}>;
|
|
122
62
|
/**
|
|
123
63
|
* Insert the globally unique system registry Config (`category=config`,
|
|
124
64
|
* `value=target-system-registry`). Rejects duplicates via `checkRedundancyFilterList`.
|
|
@@ -128,7 +68,7 @@ export declare const postSystemRegistryConfig: (payload: {
|
|
|
128
68
|
slots?: {
|
|
129
69
|
serviceValue: string;
|
|
130
70
|
}[] | undefined;
|
|
131
|
-
}) => import("
|
|
71
|
+
}) => import("../..").SupabaseResponse<Config> | Promise<import("../..").SupabaseResponse<Config>>;
|
|
132
72
|
/**
|
|
133
73
|
* Replace the system registry slot layout with fresh EMPTY rows.
|
|
134
74
|
* Creates the row when missing (same as {@link postSystemRegistryConfig}).
|
|
@@ -139,5 +79,5 @@ export declare const resetSystemRegistryConfig: (payload: {
|
|
|
139
79
|
slots?: {
|
|
140
80
|
serviceValue: string;
|
|
141
81
|
}[] | undefined;
|
|
142
|
-
}) => import("
|
|
143
|
-
//# sourceMappingURL=
|
|
82
|
+
}) => import("../..").SupabaseResponse<Config> | Promise<import("../..").SupabaseResponse<Config>>;
|
|
83
|
+
//# sourceMappingURL=registry.api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.api.d.ts","sourceRoot":"","sources":["../../../src/service/registry/registry.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAUhG,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,sBAAsB,CAAC;AAE3E,wEAAwE;AACxE,eAAO,MAAM,4BAA4B;;;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,8BAA8B;IACvC,wEAAwE;;;;;;;;;;;;;;;;;;;EAG1E,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAE7F,qGAAqG;AACrG,eAAO,MAAM,+BAA+B;IARxC,wEAAwE;;;;;;;;;;;;;;;;;;;EAQC,CAAC;AAE9E,MAAM,MAAM,gCAAgC,GAAG,+BAA+B,CAAC;AAW/E,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,sBAAsB,EAAE,GAAG,WAAW,EAAE,CAMlG;AAgBD,yEAAyE;AACzE,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,aAAa,CAO7F;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;kGAsBnC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;kGA2CpC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Globally unique Config key for the declarative system service registry. */
|
|
2
|
+
export declare const TARGET_SYSTEM_REGISTRY_KEY = "target-system-registry";
|
|
3
|
+
/**
|
|
4
|
+
* Default one EMPTY slot per known L3 service.
|
|
5
|
+
* Override via `postSystemRegistryConfig` / `resetSystemRegistryConfig` payload or gc-service seed file.
|
|
6
|
+
* Replica count = how many times the same `serviceValue` appears (not a separate maxInstances field).
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS: readonly [{
|
|
9
|
+
readonly serviceValue: "log-service";
|
|
10
|
+
}, {
|
|
11
|
+
readonly serviceValue: "watch-service";
|
|
12
|
+
}, {
|
|
13
|
+
readonly serviceValue: "download-service";
|
|
14
|
+
}, {
|
|
15
|
+
readonly serviceValue: "storage-service";
|
|
16
|
+
}, {
|
|
17
|
+
readonly serviceValue: "gc-service";
|
|
18
|
+
}, {
|
|
19
|
+
readonly serviceValue: "upload-service";
|
|
20
|
+
}, {
|
|
21
|
+
readonly serviceValue: "cv-service";
|
|
22
|
+
}];
|
|
23
|
+
//# sourceMappingURL=registry.constant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.constant.d.ts","sourceRoot":"","sources":["../../../src/service/registry/registry.constant.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;EAQrC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capacity slots on the system registry Config (`details.objects`).
|
|
3
|
+
* Not fields on a Service Target row — see {@link Service} in `service.interface.ts`.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum ServiceSlotStatus {
|
|
6
|
+
EMPTY = "EMPTY",
|
|
7
|
+
ACTIVE = "ACTIVE"
|
|
8
|
+
}
|
|
9
|
+
export interface ServiceSlot {
|
|
10
|
+
serviceValue: string;
|
|
11
|
+
/** Bound Service.id when {@link ServiceSlotStatus.ACTIVE}; null when EMPTY. */
|
|
12
|
+
serviceId: string | null;
|
|
13
|
+
status: ServiceSlotStatus;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=registry.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.interface.d.ts","sourceRoot":"","sources":["../../../src/service/registry/registry.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,iBAAiB;IACzB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC7B"}
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* - Slot release: graceful shutdown via {@link unregisterService}; monitor (later)
|
|
9
9
|
* for crashed / ungraceful exits (stale `Service.details.runtime`)
|
|
10
10
|
*/
|
|
11
|
-
import type {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
11
|
+
import type { Config } from "../../config/config.interface";
|
|
12
|
+
import type { Node } from "../../node/node.interface";
|
|
13
|
+
import type { Service } from "../service.interface";
|
|
14
|
+
import { type ServiceSlot } from "./registry.interface";
|
|
15
|
+
export { TARGET_SYSTEM_REGISTRY_KEY } from "./registry.constant";
|
|
15
16
|
export interface TargetSystemRegistrySlotView {
|
|
16
17
|
slot: ServiceSlot;
|
|
17
18
|
/** Resolved when `slot.serviceId` is set; null for EMPTY slots. */
|
|
@@ -56,18 +57,23 @@ export interface ReleaseSystemRegistrySlotsByServiceIdOutcome {
|
|
|
56
57
|
/** Requested `serviceIds` with no ACTIVE slot released (unknown id, already EMPTY, or never bound). */
|
|
57
58
|
unchangedServiceIds: string[];
|
|
58
59
|
}
|
|
59
|
-
export interface
|
|
60
|
-
/** Logical service
|
|
61
|
-
|
|
60
|
+
export interface AppendSystemRegistryEmptySlotsInput {
|
|
61
|
+
/** Logical service key (e.g. `download-service`). */
|
|
62
|
+
serviceValue: string;
|
|
63
|
+
/** How many EMPTY slots to append. Default `1`. */
|
|
64
|
+
count?: number;
|
|
62
65
|
traceId?: string;
|
|
63
66
|
maxAttempts?: number;
|
|
64
67
|
}
|
|
65
|
-
export interface
|
|
68
|
+
export interface AppendSystemRegistryEmptySlotsOutcome {
|
|
66
69
|
config: Config;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
serviceValue: string;
|
|
71
|
+
/** EMPTY slots appended this run. */
|
|
72
|
+
appended: number;
|
|
73
|
+
/** Declared slot count for `serviceValue` before this run. */
|
|
74
|
+
capacityBefore: number;
|
|
75
|
+
/** Declared slot count for `serviceValue` after this run. */
|
|
76
|
+
capacityAfter: number;
|
|
71
77
|
}
|
|
72
78
|
export declare class ServiceRegistryError extends Error {
|
|
73
79
|
readonly code: "REGISTRY_CONFIG_NOT_FOUND" | "SERVICE_NOT_DECLARED" | "SERVICE_SLOTS_FULL" | "REGISTRY_SLOT_LOST" | "REGISTRY_UPDATE_FAILED";
|
|
@@ -109,11 +115,13 @@ export declare function releaseSystemRegistrySlots(input: ReleaseSystemRegistryS
|
|
|
109
115
|
*/
|
|
110
116
|
export declare function releaseSystemRegistrySlotsByServiceId(input: ReleaseSystemRegistrySlotsByServiceIdInput): Promise<ReleaseSystemRegistrySlotsByServiceIdOutcome>;
|
|
111
117
|
/**
|
|
112
|
-
* Append EMPTY {@link ServiceSlot} rows for
|
|
113
|
-
*
|
|
118
|
+
* Append one or more EMPTY {@link ServiceSlot} rows for a given `serviceValue`.
|
|
119
|
+
*
|
|
120
|
+
* Always grows capacity (does not skip when the key is already declared).
|
|
121
|
+
* Use for replica scale-out (e.g. second `download-service` instance).
|
|
114
122
|
* Does not modify existing slots or release ACTIVE bindings.
|
|
115
123
|
*/
|
|
116
|
-
export declare function
|
|
124
|
+
export declare function appendSystemRegistryEmptySlots(input: AppendSystemRegistryEmptySlotsInput): Promise<AppendSystemRegistryEmptySlotsOutcome>;
|
|
117
125
|
/**
|
|
118
126
|
* Claim one EMPTY slot for a running Service instance (`EMPTY → ACTIVE` only).
|
|
119
127
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.service.d.ts","sourceRoot":"","sources":["../../../src/service/registry/registry.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,+BAA+B,CAAC;AAE3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAuC,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAUjE,MAAM,WAAW,4BAA4B;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,4BAA4B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC5C,gGAAgG;IAChG,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0CAA0C;IACvD,uEAAuE;IACvE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iCAAiC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,6FAA6F;IAC7F,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,4CAA4C;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,uGAAuG;IACvG,mBAAmB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mCAAmC;IAChD,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qCAAqC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,IAAI,EACP,2BAA2B,GAC3B,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB;gBAN9B,OAAO,EAAE,MAAM,EACN,IAAI,EACP,2BAA2B,GAC3B,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB;CAKrC;AAcD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA2BnE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAS/D;AAqCD;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAejF;AA2BD;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB/G;AA2GD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC5C,KAAK,EAAE,+BAA+B,GACvC,OAAO,CAAC,iCAAiC,CAAC,CAqG5C;AAED;;;;;GAKG;AACH,wBAAsB,qCAAqC,CACvD,KAAK,EAAE,0CAA0C,GAClD,OAAO,CAAC,4CAA4C,CAAC,CA0FvD;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAChD,KAAK,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qCAAqC,CAAC,CAqFhD;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFhF;AAED,yEAAyE;AACzE,wBAAsB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQjG;AAUD,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,iFAAiF;AACjF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ElF;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5F"}
|
|
@@ -39,16 +39,6 @@ export interface ServiceRuntime {
|
|
|
39
39
|
lastHeartBeat: number;
|
|
40
40
|
nodes: ServiceNodeSnapshot[];
|
|
41
41
|
}
|
|
42
|
-
export declare enum ServiceSlotStatus {
|
|
43
|
-
EMPTY = "EMPTY",
|
|
44
|
-
ACTIVE = "ACTIVE"
|
|
45
|
-
}
|
|
46
|
-
export interface ServiceSlot {
|
|
47
|
-
serviceValue: string;
|
|
48
|
-
/** Bound {@link Service.id} when {@link ServiceSlotStatus.ACTIVE}; null when EMPTY. */
|
|
49
|
-
serviceId: string | null;
|
|
50
|
-
status: ServiceSlotStatus;
|
|
51
|
-
}
|
|
52
42
|
export interface Api extends Target {
|
|
53
43
|
/** "core.post.target.0" 唯一键 领域 + METHOD + content + VERSION */
|
|
54
44
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.interface.d.ts","sourceRoot":"","sources":["../../src/service/service.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,WAAW,OAAQ,SAAQ,MAAM;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;CAC3B;AAED,oBAAY,eAAe;IACvB,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,
|
|
1
|
+
{"version":3,"file":"service.interface.d.ts","sourceRoot":"","sources":["../../src/service/service.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,WAAW,OAAQ,SAAQ,MAAM;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;CAC3B;AAED,oBAAY,eAAe;IACvB,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,GAAI,SAAQ,MAAM;IAC/B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,oBAAY,WAAW;IACnB,GAAG,QAAQ;CACd;AAED,oBAAY,SAAS;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,MAAM,WAAW;CACpB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACL,KAAK,EAAE,eAAe,EAAE,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACN,KAAK,EAAE,eAAe,EAAE,CAAC;KAC5B,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;CAG/B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media Link — browser-safe barrel only.
|
|
3
|
+
*
|
|
4
|
+
* Node-only code lives in `./node/` and is exported from `src/node.ts`,
|
|
5
|
+
* never from this file (see README.md).
|
|
6
|
+
*/
|
|
7
|
+
export type { BuildMediaLinkDraftInput } from "./media.build";
|
|
8
|
+
export { buildMediaLinkDraft } from "./media.build";
|
|
9
|
+
export type { MediaOriginal, MediaValue } from "./media.interface";
|
|
10
|
+
export { isMediaValue, MEDIA_CONTENT_HASH_ALGORITHM, MEDIA_CONTENT_HASH_PREFIX_LENGTH, MEDIA_VALUES, } from "./media.interface";
|
|
11
|
+
export { guessMediaMime } from "./media.mime";
|
|
12
|
+
export { buildMediaNameFromLocator } from "./media.name";
|
|
13
|
+
export { mediaLinkDedupFilters } from "./media.query";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/media/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACH,YAAY,EACZ,4BAA4B,EAC5B,gCAAgC,EAChC,YAAY,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TargetDraft } from "../../core.interface";
|
|
2
|
+
import type { Link } from "../../link/link.interface";
|
|
3
|
+
import { type MediaValue } from "./media.interface";
|
|
4
|
+
export interface BuildMediaLinkDraftInput {
|
|
5
|
+
value: MediaValue;
|
|
6
|
+
name: string;
|
|
7
|
+
storageProvider: string;
|
|
8
|
+
locator: string;
|
|
9
|
+
contentHash: string;
|
|
10
|
+
size: number;
|
|
11
|
+
mimeType: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
tagList?: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Assemble a media {@link Link} draft (`category=link`, `loaderKey === value`).
|
|
17
|
+
* Does not validate filesystem or write to Supabase.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildMediaLinkDraft(input: BuildMediaLinkDraftInput): TargetDraft<Link>;
|
|
20
|
+
//# sourceMappingURL=media.build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.build.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtF,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,WAAW,CAAC,IAAI,CAAC,CA+CtF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media Link protocol — Link rows with value/loaderKey in {@link MEDIA_VALUES}.
|
|
3
|
+
* No separate Target category; category remains `link`.
|
|
4
|
+
*/
|
|
5
|
+
/** Fixed digest algorithm for single-file media `contentHash`. */
|
|
6
|
+
export declare const MEDIA_CONTENT_HASH_ALGORITHM: "sha256";
|
|
7
|
+
/** Hex prefix length for {@link buildMediaNameFromLocator}. */
|
|
8
|
+
export declare const MEDIA_CONTENT_HASH_PREFIX_LENGTH = 6;
|
|
9
|
+
export declare const MEDIA_VALUES: readonly ["video", "audio", "image", "image-list"];
|
|
10
|
+
/** Discriminator stored in both `Link.value` and `details.loaderKey`. */
|
|
11
|
+
export type MediaValue = (typeof MEDIA_VALUES)[number];
|
|
12
|
+
/**
|
|
13
|
+
* `Link.details.original` for media Links.
|
|
14
|
+
*
|
|
15
|
+
* - `locator` — absolute filesystem path, or (future) network URL keyed by `storageProvider`.
|
|
16
|
+
* - `image-list`: `locator` is an absolute directory path; only the **immediate** children
|
|
17
|
+
* (one level, non-recursive) are counted. `contentHash` and `mimeType` are `""`;
|
|
18
|
+
* `size` is the number of files in that directory (not bytes).
|
|
19
|
+
* - other values: `size` is byte length; `contentHash` is SHA-256 hex; `mimeType` from the file.
|
|
20
|
+
*/
|
|
21
|
+
export interface MediaOriginal {
|
|
22
|
+
storageProvider: string;
|
|
23
|
+
locator: string;
|
|
24
|
+
/**
|
|
25
|
+
* SHA-256 hex of file bytes, or `""` when `value === "image-list"`.
|
|
26
|
+
* Algorithm is always {@link MEDIA_CONTENT_HASH_ALGORITHM}.
|
|
27
|
+
*/
|
|
28
|
+
contentHash: string;
|
|
29
|
+
/**
|
|
30
|
+
* Single-file media: byte length.
|
|
31
|
+
* `image-list`: number of files in the directory (one level).
|
|
32
|
+
*/
|
|
33
|
+
size: number;
|
|
34
|
+
/** e.g. `video/mp4`, or `""` when `value === "image-list"`. */
|
|
35
|
+
mimeType: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function isMediaValue(value: string): value is MediaValue;
|
|
38
|
+
//# sourceMappingURL=media.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.interface.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,EAAG,QAAiB,CAAC;AAE9D,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,eAAO,MAAM,YAAY,oDAAqD,CAAC;AAE/E,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.mime.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.mime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkDpD,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,GAAG,IAAI,CAYvG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `{basename}.{hash6}.{ext}` from an absolute (or path-like) locator and full content hash.
|
|
3
|
+
* Does not touch the filesystem.
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildMediaNameFromLocator(locator: string, contentHash: string): string;
|
|
6
|
+
//# sourceMappingURL=media.name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.name.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.name.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA0BtF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QueryFilter } from "../../core.interface";
|
|
2
|
+
import type { MediaValue } from "./media.interface";
|
|
3
|
+
/** Dedup key: `category=link` + `value` + `name` (matches register / find). */
|
|
4
|
+
export declare function mediaLinkDedupFilters(input: {
|
|
5
|
+
value: MediaValue;
|
|
6
|
+
name: string;
|
|
7
|
+
}): QueryFilter[];
|
|
8
|
+
//# sourceMappingURL=media.query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.query.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAO/F"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only media surface — for `src/node.ts` / `target-supabase-sdk/node` only.
|
|
3
|
+
* Never re-export from `../index.ts` or `browser.ts`.
|
|
4
|
+
*/
|
|
5
|
+
export type { CheckMediaAvailabilityInput, MediaAvailabilityResult } from "./media.access";
|
|
6
|
+
export { checkMediaAvailability, probeMediaOriginal } from "./media.access";
|
|
7
|
+
export type { FindMediaLinkInput, RegisterMediaLinkInput, RegisterMediaLinkResult, } from "./media.service";
|
|
8
|
+
export { findMediaLink, registerMediaLink } from "./media.service";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/media/node/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EACR,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type MediaOriginal, type MediaValue } from "../media.interface";
|
|
2
|
+
export interface CheckMediaAvailabilityInput {
|
|
3
|
+
value: MediaValue;
|
|
4
|
+
storageProvider: string;
|
|
5
|
+
locator: string;
|
|
6
|
+
/**
|
|
7
|
+
* This host's storage id (e.g. from `LOCAL_STORAGE_PROVIDER`).
|
|
8
|
+
* Local path checks only run when it equals `storageProvider`.
|
|
9
|
+
*/
|
|
10
|
+
localStorageProvider: string;
|
|
11
|
+
}
|
|
12
|
+
export interface MediaAvailabilityResult {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
/** Absolute path when the locator was resolved on this host. */
|
|
15
|
+
absolutePath?: string;
|
|
16
|
+
reason?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fast local reachability check for a media locator.
|
|
20
|
+
*
|
|
21
|
+
* - Requires `storageProvider === localStorageProvider` (cross-host → not ok).
|
|
22
|
+
* - `locator` must be an absolute path.
|
|
23
|
+
* - `image-list`: directory exists; only immediate children are considered.
|
|
24
|
+
* - other values: path exists and is a non-empty file.
|
|
25
|
+
*
|
|
26
|
+
* **Node-only** — under `shared/media/node/`; do not import from the browser entry.
|
|
27
|
+
*/
|
|
28
|
+
export declare function checkMediaAvailability(input: CheckMediaAvailabilityInput): Promise<MediaAvailabilityResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Derive `contentHash` / `size` / `mimeType` for {@link MediaOriginal} after availability succeeds.
|
|
31
|
+
*
|
|
32
|
+
* **Node-only** — under `shared/media/node/`; do not import from the browser entry.
|
|
33
|
+
*/
|
|
34
|
+
export declare function probeMediaOriginal(input: {
|
|
35
|
+
value: MediaValue;
|
|
36
|
+
storageProvider: string;
|
|
37
|
+
locator: string;
|
|
38
|
+
absolutePath: string;
|
|
39
|
+
}): Promise<MediaOriginal>;
|
|
40
|
+
//# sourceMappingURL=media.access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.access.d.ts","sourceRoot":"","sources":["../../../../src/shared/media/node/media.access.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgC,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGvG,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AA+BD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA0CjH;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC5C,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4BzB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Link } from "../../../link/link.interface";
|
|
2
|
+
import { type MediaValue } from "../media.interface";
|
|
3
|
+
export interface FindMediaLinkInput {
|
|
4
|
+
value: MediaValue;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
/** Dedup lookup: same `category` + `value` + `name`. */
|
|
8
|
+
export declare function findMediaLink(input: FindMediaLinkInput): Promise<Link | null>;
|
|
9
|
+
export interface RegisterMediaLinkInput {
|
|
10
|
+
value: MediaValue;
|
|
11
|
+
name: string;
|
|
12
|
+
storageProvider: string;
|
|
13
|
+
locator: string;
|
|
14
|
+
/** This host id for availability (e.g. `process.env.LOCAL_STORAGE_PROVIDER`). */
|
|
15
|
+
localStorageProvider: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
tagList?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface RegisterMediaLinkResult {
|
|
20
|
+
id: string;
|
|
21
|
+
created: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register a media Link: dedup → availability → probe → `postTarget`.
|
|
25
|
+
* Idempotent when `category`+`value`+`name` already exist.
|
|
26
|
+
*
|
|
27
|
+
* **Node-only** — under `shared/media/node/`; do not import from the browser entry.
|
|
28
|
+
*/
|
|
29
|
+
export declare function registerMediaLink(input: RegisterMediaLinkInput): Promise<RegisterMediaLinkResult>;
|
|
30
|
+
//# sourceMappingURL=media.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.service.d.ts","sourceRoot":"","sources":["../../../../src/shared/media/node/media.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMnE,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAYnF;AAED,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4EvG"}
|