@akashnetwork/chain-sdk 1.0.0-alpha.32 → 1.0.0-alpha.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.
Files changed (31) hide show
  1. package/dist/cjs/generated/protos/akash/provider/v1/status.cjs +18 -2
  2. package/dist/cjs/generated/protos/akash/provider/v1/status.cjs.map +2 -2
  3. package/dist/cjs/sdk/transport/grpc-gateway/createGrpcGatewayTransport.cjs +1 -1
  4. package/dist/cjs/sdk/transport/grpc-gateway/createGrpcGatewayTransport.cjs.map +2 -2
  5. package/dist/cjs/sdl/manifest/generateManifest.cjs +15 -0
  6. package/dist/cjs/sdl/manifest/generateManifest.cjs.map +2 -2
  7. package/dist/cjs/sdl/manifest/reclamationDuration.cjs +34 -0
  8. package/dist/cjs/sdl/manifest/reclamationDuration.cjs.map +7 -0
  9. package/dist/cjs/sdl/validateSDL/validateSDL.cjs +6 -0
  10. package/dist/cjs/sdl/validateSDL/validateSDL.cjs.map +2 -2
  11. package/dist/cjs/sdl/validateSDL/validateSDLInput.cjs +4 -3
  12. package/dist/cjs/sdl/validateSDL/validateSDLInput.cjs.map +2 -2
  13. package/dist/esm/{chunk-J7CMFG4J.js → chunk-2ZDOXCM3.js} +41 -4
  14. package/dist/esm/chunk-2ZDOXCM3.js.map +7 -0
  15. package/dist/esm/{chunk-O2WAGGGG.js → chunk-W25EJ3NI.js} +20 -4
  16. package/dist/esm/chunk-W25EJ3NI.js.map +7 -0
  17. package/dist/esm/generated/protos/index.provider.akash.v1.js +1 -1
  18. package/dist/esm/index.js +2 -2
  19. package/dist/esm/index.web.js +2 -2
  20. package/dist/esm/index.web.js.map +2 -2
  21. package/dist/esm/{service_akash-TF3PEAMD.js → service_akash-5RIOE2CY.js} +2 -2
  22. package/dist/sdl-schema.yaml +3 -3
  23. package/dist/tsconfig.build.tsbuildinfo +1 -1
  24. package/dist/types/generated/protos/akash/provider/v1/status.d.ts +2 -0
  25. package/dist/types/sdl/manifest/generateManifest.d.ts +2 -0
  26. package/dist/types/sdl/manifest/reclamationDuration.d.ts +11 -0
  27. package/dist/types/sdl/validateSDL/validateSDLInput.d.ts +2 -2
  28. package/package.json +1 -1
  29. package/dist/esm/chunk-J7CMFG4J.js.map +0 -7
  30. package/dist/esm/chunk-O2WAGGGG.js.map +0 -7
  31. /package/dist/esm/{service_akash-TF3PEAMD.js.map → service_akash-5RIOE2CY.js.map} +0 -0
@@ -46,6 +46,7 @@ var import_long = __toESM(require("long"), 1);
46
46
  var import_timestamp = require("../../../google/protobuf/timestamp.cjs");
47
47
  var import_generated = require("../../../k8s.io/apimachinery/pkg/api/resource/generated.cjs");
48
48
  var import_cluster = require("../../inventory/v1/cluster.cjs");
49
+ var import_resourcepair = require("../../inventory/v1/resourcepair.cjs");
49
50
  function createBaseResourcesMetric() {
50
51
  return { cpu: void 0, memory: void 0, gpu: void 0, ephemeralStorage: void 0, storage: {} };
51
52
  }
@@ -428,7 +429,7 @@ const Reservations = {
428
429
  }
429
430
  };
430
431
  function createBaseInventory() {
431
- return { cluster: void 0, reservations: void 0 };
432
+ return { cluster: void 0, reservations: void 0, leasedIp: void 0 };
432
433
  }
433
434
  const Inventory = {
434
435
  $type: "akash.provider.v1.Inventory",
@@ -439,6 +440,9 @@ const Inventory = {
439
440
  if (message.reservations !== void 0) {
440
441
  Reservations.encode(message.reservations, writer.uint32(18).fork()).join();
441
442
  }
443
+ if (message.leasedIp !== void 0) {
444
+ import_resourcepair.ResourcePair.encode(message.leasedIp, writer.uint32(26).fork()).join();
445
+ }
442
446
  return writer;
443
447
  },
444
448
  decode(input, length) {
@@ -462,6 +466,13 @@ const Inventory = {
462
466
  message.reservations = Reservations.decode(reader, reader.uint32());
463
467
  continue;
464
468
  }
469
+ case 3: {
470
+ if (tag !== 26) {
471
+ break;
472
+ }
473
+ message.leasedIp = import_resourcepair.ResourcePair.decode(reader, reader.uint32());
474
+ continue;
475
+ }
465
476
  }
466
477
  if ((tag & 7) === 4 || tag === 0) {
467
478
  break;
@@ -473,7 +484,8 @@ const Inventory = {
473
484
  fromJSON(object) {
474
485
  return {
475
486
  cluster: (0, import_typeEncodingHelpers.isSet)(object.cluster) ? import_cluster.Cluster.fromJSON(object.cluster) : void 0,
476
- reservations: (0, import_typeEncodingHelpers.isSet)(object.reservations) ? Reservations.fromJSON(object.reservations) : void 0
487
+ reservations: (0, import_typeEncodingHelpers.isSet)(object.reservations) ? Reservations.fromJSON(object.reservations) : void 0,
488
+ leasedIp: (0, import_typeEncodingHelpers.isSet)(object.leased_ip) ? import_resourcepair.ResourcePair.fromJSON(object.leased_ip) : void 0
477
489
  };
478
490
  },
479
491
  toJSON(message) {
@@ -484,12 +496,16 @@ const Inventory = {
484
496
  if (message.reservations !== void 0) {
485
497
  obj.reservations = Reservations.toJSON(message.reservations);
486
498
  }
499
+ if (message.leasedIp !== void 0) {
500
+ obj.leased_ip = import_resourcepair.ResourcePair.toJSON(message.leasedIp);
501
+ }
487
502
  return obj;
488
503
  },
489
504
  fromPartial(object) {
490
505
  const message = createBaseInventory();
491
506
  message.cluster = object.cluster !== void 0 && object.cluster !== null ? import_cluster.Cluster.fromPartial(object.cluster) : void 0;
492
507
  message.reservations = object.reservations !== void 0 && object.reservations !== null ? Reservations.fromPartial(object.reservations) : void 0;
508
+ message.leasedIp = object.leasedIp !== void 0 && object.leasedIp !== null ? import_resourcepair.ResourcePair.fromPartial(object.leasedIp) : void 0;
493
509
  return message;
494
510
  }
495
511
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/generated/protos/akash/provider/v1/status.ts"],
4
- "sourcesContent": ["import { toTimestamp, fromTimestamp, fromJsonTimestamp, numberToLong, isObject, isSet } from \"../../../../../encoding/typeEncodingHelpers.ts\"\nimport type { DeepPartial, MessageFns } from \"../../../../../encoding/typeEncodingHelpers.ts\"\n// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: akash/provider/v1/status.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport Long from \"long\";\nimport { Timestamp } from \"../../../google/protobuf/timestamp.ts\";\nimport { Quantity } from \"../../../k8s.io/apimachinery/pkg/api/resource/generated.ts\";\nimport { Cluster } from \"../../inventory/v1/cluster.ts\";\n\n/** ResourceMetrics */\nexport interface ResourcesMetric {\n cpu: Quantity | undefined;\n memory: Quantity | undefined;\n gpu: Quantity | undefined;\n ephemeralStorage: Quantity | undefined;\n storage: { [key: string]: Quantity };\n}\n\nexport interface ResourcesMetric_StorageEntry {\n key: string;\n value: Quantity | undefined;\n}\n\n/** Leases */\nexport interface Leases {\n active: number;\n}\n\n/** ReservationsMetric */\nexport interface ReservationsMetric {\n count: number;\n resources: ResourcesMetric | undefined;\n}\n\n/** Reservations */\nexport interface Reservations {\n pending: ReservationsMetric | undefined;\n active: ReservationsMetric | undefined;\n}\n\n/** Inventory */\nexport interface Inventory {\n cluster: Cluster | undefined;\n reservations: Reservations | undefined;\n}\n\n/** ClusterStatus */\nexport interface ClusterStatus {\n leases: Leases | undefined;\n inventory: Inventory | undefined;\n}\n\n/** BidEngineStatus */\nexport interface BidEngineStatus {\n orders: number;\n}\n\n/** ManifestStatus */\nexport interface ManifestStatus {\n deployments: number;\n}\n\n/** Status */\nexport interface Status {\n errors: string[];\n cluster: ClusterStatus | undefined;\n bidEngine: BidEngineStatus | undefined;\n manifest: ManifestStatus | undefined;\n publicHostnames: string[];\n timestamp: Date | undefined;\n}\n\nfunction createBaseResourcesMetric(): ResourcesMetric {\n return { cpu: undefined, memory: undefined, gpu: undefined, ephemeralStorage: undefined, storage: {} };\n}\n\nexport const ResourcesMetric: MessageFns<ResourcesMetric, \"akash.provider.v1.ResourcesMetric\"> = {\n $type: \"akash.provider.v1.ResourcesMetric\" as const,\n\n encode(message: ResourcesMetric, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.cpu !== undefined) {\n Quantity.encode(message.cpu, writer.uint32(10).fork()).join();\n }\n if (message.memory !== undefined) {\n Quantity.encode(message.memory, writer.uint32(18).fork()).join();\n }\n if (message.gpu !== undefined) {\n Quantity.encode(message.gpu, writer.uint32(26).fork()).join();\n }\n if (message.ephemeralStorage !== undefined) {\n Quantity.encode(message.ephemeralStorage, writer.uint32(34).fork()).join();\n }\n globalThis.Object.entries(message.storage).forEach(([key, value]: [string, Quantity]) => {\n ResourcesMetric_StorageEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join();\n });\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ResourcesMetric {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseResourcesMetric();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.cpu = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.memory = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.gpu = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.ephemeralStorage = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n const entry5 = ResourcesMetric_StorageEntry.decode(reader, reader.uint32());\n if (entry5.value !== undefined) {\n message.storage[entry5.key] = entry5.value;\n }\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ResourcesMetric {\n return {\n cpu: isSet(object.cpu) ? Quantity.fromJSON(object.cpu) : undefined,\n memory: isSet(object.memory) ? Quantity.fromJSON(object.memory) : undefined,\n gpu: isSet(object.gpu) ? Quantity.fromJSON(object.gpu) : undefined,\n ephemeralStorage: isSet(object.ephemeral_storage) ? Quantity.fromJSON(object.ephemeral_storage) : undefined,\n storage: isObject(object.storage)\n ? (globalThis.Object.entries(object.storage) as [string, any][]).reduce(\n (acc: { [key: string]: Quantity }, [key, value]: [string, any]) => {\n acc[key] = Quantity.fromJSON(value);\n return acc;\n },\n {},\n )\n : {},\n };\n },\n\n toJSON(message: ResourcesMetric): unknown {\n const obj: any = {};\n if (message.cpu !== undefined) {\n obj.cpu = Quantity.toJSON(message.cpu);\n }\n if (message.memory !== undefined) {\n obj.memory = Quantity.toJSON(message.memory);\n }\n if (message.gpu !== undefined) {\n obj.gpu = Quantity.toJSON(message.gpu);\n }\n if (message.ephemeralStorage !== undefined) {\n obj.ephemeral_storage = Quantity.toJSON(message.ephemeralStorage);\n }\n if (message.storage) {\n const entries = globalThis.Object.entries(message.storage) as [string, Quantity][];\n if (entries.length > 0) {\n obj.storage = {};\n entries.forEach(([k, v]) => {\n obj.storage[k] = Quantity.toJSON(v);\n });\n }\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ResourcesMetric>): ResourcesMetric {\n const message = createBaseResourcesMetric();\n message.cpu = (object.cpu !== undefined && object.cpu !== null) ? Quantity.fromPartial(object.cpu) : undefined;\n message.memory = (object.memory !== undefined && object.memory !== null)\n ? Quantity.fromPartial(object.memory)\n : undefined;\n message.gpu = (object.gpu !== undefined && object.gpu !== null) ? Quantity.fromPartial(object.gpu) : undefined;\n message.ephemeralStorage = (object.ephemeralStorage !== undefined && object.ephemeralStorage !== null)\n ? Quantity.fromPartial(object.ephemeralStorage)\n : undefined;\n message.storage = (globalThis.Object.entries(object.storage ?? {}) as [string, Quantity][]).reduce(\n (acc: { [key: string]: Quantity }, [key, value]: [string, Quantity]) => {\n if (value !== undefined) {\n acc[key] = Quantity.fromPartial(value);\n }\n return acc;\n },\n {},\n );\n return message;\n },\n};\n\nfunction createBaseResourcesMetric_StorageEntry(): ResourcesMetric_StorageEntry {\n return { key: \"\", value: undefined };\n}\n\nexport const ResourcesMetric_StorageEntry: MessageFns<\n ResourcesMetric_StorageEntry,\n \"akash.provider.v1.ResourcesMetric.StorageEntry\"\n> = {\n $type: \"akash.provider.v1.ResourcesMetric.StorageEntry\" as const,\n\n encode(message: ResourcesMetric_StorageEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Quantity.encode(message.value, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ResourcesMetric_StorageEntry {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseResourcesMetric_StorageEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.key = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.value = Quantity.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ResourcesMetric_StorageEntry {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? Quantity.fromJSON(object.value) : undefined,\n };\n },\n\n toJSON(message: ResourcesMetric_StorageEntry): unknown {\n const obj: any = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = Quantity.toJSON(message.value);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ResourcesMetric_StorageEntry>): ResourcesMetric_StorageEntry {\n const message = createBaseResourcesMetric_StorageEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? Quantity.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseLeases(): Leases {\n return { active: 0 };\n}\n\nexport const Leases: MessageFns<Leases, \"akash.provider.v1.Leases\"> = {\n $type: \"akash.provider.v1.Leases\" as const,\n\n encode(message: Leases, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.active !== 0) {\n writer.uint32(8).uint32(message.active);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Leases {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseLeases();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.active = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Leases {\n return { active: isSet(object.active) ? globalThis.Number(object.active) : 0 };\n },\n\n toJSON(message: Leases): unknown {\n const obj: any = {};\n if (message.active !== 0) {\n obj.active = Math.round(message.active);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Leases>): Leases {\n const message = createBaseLeases();\n message.active = object.active ?? 0;\n return message;\n },\n};\n\nfunction createBaseReservationsMetric(): ReservationsMetric {\n return { count: 0, resources: undefined };\n}\n\nexport const ReservationsMetric: MessageFns<ReservationsMetric, \"akash.provider.v1.ReservationsMetric\"> = {\n $type: \"akash.provider.v1.ReservationsMetric\" as const,\n\n encode(message: ReservationsMetric, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.count !== 0) {\n writer.uint32(8).uint32(message.count);\n }\n if (message.resources !== undefined) {\n ResourcesMetric.encode(message.resources, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ReservationsMetric {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseReservationsMetric();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.count = reader.uint32();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.resources = ResourcesMetric.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ReservationsMetric {\n return {\n count: isSet(object.count) ? globalThis.Number(object.count) : 0,\n resources: isSet(object.resources) ? ResourcesMetric.fromJSON(object.resources) : undefined,\n };\n },\n\n toJSON(message: ReservationsMetric): unknown {\n const obj: any = {};\n if (message.count !== 0) {\n obj.count = Math.round(message.count);\n }\n if (message.resources !== undefined) {\n obj.resources = ResourcesMetric.toJSON(message.resources);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ReservationsMetric>): ReservationsMetric {\n const message = createBaseReservationsMetric();\n message.count = object.count ?? 0;\n message.resources = (object.resources !== undefined && object.resources !== null)\n ? ResourcesMetric.fromPartial(object.resources)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseReservations(): Reservations {\n return { pending: undefined, active: undefined };\n}\n\nexport const Reservations: MessageFns<Reservations, \"akash.provider.v1.Reservations\"> = {\n $type: \"akash.provider.v1.Reservations\" as const,\n\n encode(message: Reservations, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.pending !== undefined) {\n ReservationsMetric.encode(message.pending, writer.uint32(10).fork()).join();\n }\n if (message.active !== undefined) {\n ReservationsMetric.encode(message.active, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Reservations {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseReservations();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.pending = ReservationsMetric.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.active = ReservationsMetric.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Reservations {\n return {\n pending: isSet(object.pending) ? ReservationsMetric.fromJSON(object.pending) : undefined,\n active: isSet(object.active) ? ReservationsMetric.fromJSON(object.active) : undefined,\n };\n },\n\n toJSON(message: Reservations): unknown {\n const obj: any = {};\n if (message.pending !== undefined) {\n obj.pending = ReservationsMetric.toJSON(message.pending);\n }\n if (message.active !== undefined) {\n obj.active = ReservationsMetric.toJSON(message.active);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Reservations>): Reservations {\n const message = createBaseReservations();\n message.pending = (object.pending !== undefined && object.pending !== null)\n ? ReservationsMetric.fromPartial(object.pending)\n : undefined;\n message.active = (object.active !== undefined && object.active !== null)\n ? ReservationsMetric.fromPartial(object.active)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseInventory(): Inventory {\n return { cluster: undefined, reservations: undefined };\n}\n\nexport const Inventory: MessageFns<Inventory, \"akash.provider.v1.Inventory\"> = {\n $type: \"akash.provider.v1.Inventory\" as const,\n\n encode(message: Inventory, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.cluster !== undefined) {\n Cluster.encode(message.cluster, writer.uint32(10).fork()).join();\n }\n if (message.reservations !== undefined) {\n Reservations.encode(message.reservations, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Inventory {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInventory();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.cluster = Cluster.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.reservations = Reservations.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Inventory {\n return {\n cluster: isSet(object.cluster) ? Cluster.fromJSON(object.cluster) : undefined,\n reservations: isSet(object.reservations) ? Reservations.fromJSON(object.reservations) : undefined,\n };\n },\n\n toJSON(message: Inventory): unknown {\n const obj: any = {};\n if (message.cluster !== undefined) {\n obj.cluster = Cluster.toJSON(message.cluster);\n }\n if (message.reservations !== undefined) {\n obj.reservations = Reservations.toJSON(message.reservations);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Inventory>): Inventory {\n const message = createBaseInventory();\n message.cluster = (object.cluster !== undefined && object.cluster !== null)\n ? Cluster.fromPartial(object.cluster)\n : undefined;\n message.reservations = (object.reservations !== undefined && object.reservations !== null)\n ? Reservations.fromPartial(object.reservations)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseClusterStatus(): ClusterStatus {\n return { leases: undefined, inventory: undefined };\n}\n\nexport const ClusterStatus: MessageFns<ClusterStatus, \"akash.provider.v1.ClusterStatus\"> = {\n $type: \"akash.provider.v1.ClusterStatus\" as const,\n\n encode(message: ClusterStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.leases !== undefined) {\n Leases.encode(message.leases, writer.uint32(10).fork()).join();\n }\n if (message.inventory !== undefined) {\n Inventory.encode(message.inventory, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ClusterStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseClusterStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.leases = Leases.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.inventory = Inventory.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ClusterStatus {\n return {\n leases: isSet(object.leases) ? Leases.fromJSON(object.leases) : undefined,\n inventory: isSet(object.inventory) ? Inventory.fromJSON(object.inventory) : undefined,\n };\n },\n\n toJSON(message: ClusterStatus): unknown {\n const obj: any = {};\n if (message.leases !== undefined) {\n obj.leases = Leases.toJSON(message.leases);\n }\n if (message.inventory !== undefined) {\n obj.inventory = Inventory.toJSON(message.inventory);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ClusterStatus>): ClusterStatus {\n const message = createBaseClusterStatus();\n message.leases = (object.leases !== undefined && object.leases !== null)\n ? Leases.fromPartial(object.leases)\n : undefined;\n message.inventory = (object.inventory !== undefined && object.inventory !== null)\n ? Inventory.fromPartial(object.inventory)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseBidEngineStatus(): BidEngineStatus {\n return { orders: 0 };\n}\n\nexport const BidEngineStatus: MessageFns<BidEngineStatus, \"akash.provider.v1.BidEngineStatus\"> = {\n $type: \"akash.provider.v1.BidEngineStatus\" as const,\n\n encode(message: BidEngineStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.orders !== 0) {\n writer.uint32(8).uint32(message.orders);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): BidEngineStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseBidEngineStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.orders = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): BidEngineStatus {\n return { orders: isSet(object.orders) ? globalThis.Number(object.orders) : 0 };\n },\n\n toJSON(message: BidEngineStatus): unknown {\n const obj: any = {};\n if (message.orders !== 0) {\n obj.orders = Math.round(message.orders);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<BidEngineStatus>): BidEngineStatus {\n const message = createBaseBidEngineStatus();\n message.orders = object.orders ?? 0;\n return message;\n },\n};\n\nfunction createBaseManifestStatus(): ManifestStatus {\n return { deployments: 0 };\n}\n\nexport const ManifestStatus: MessageFns<ManifestStatus, \"akash.provider.v1.ManifestStatus\"> = {\n $type: \"akash.provider.v1.ManifestStatus\" as const,\n\n encode(message: ManifestStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.deployments !== 0) {\n writer.uint32(8).uint32(message.deployments);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ManifestStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseManifestStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.deployments = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ManifestStatus {\n return { deployments: isSet(object.deployments) ? globalThis.Number(object.deployments) : 0 };\n },\n\n toJSON(message: ManifestStatus): unknown {\n const obj: any = {};\n if (message.deployments !== 0) {\n obj.deployments = Math.round(message.deployments);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ManifestStatus>): ManifestStatus {\n const message = createBaseManifestStatus();\n message.deployments = object.deployments ?? 0;\n return message;\n },\n};\n\nfunction createBaseStatus(): Status {\n return {\n errors: [],\n cluster: undefined,\n bidEngine: undefined,\n manifest: undefined,\n publicHostnames: [],\n timestamp: undefined,\n };\n}\n\nexport const Status: MessageFns<Status, \"akash.provider.v1.Status\"> = {\n $type: \"akash.provider.v1.Status\" as const,\n\n encode(message: Status, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.errors) {\n writer.uint32(10).string(v!);\n }\n if (message.cluster !== undefined) {\n ClusterStatus.encode(message.cluster, writer.uint32(18).fork()).join();\n }\n if (message.bidEngine !== undefined) {\n BidEngineStatus.encode(message.bidEngine, writer.uint32(26).fork()).join();\n }\n if (message.manifest !== undefined) {\n ManifestStatus.encode(message.manifest, writer.uint32(34).fork()).join();\n }\n for (const v of message.publicHostnames) {\n writer.uint32(42).string(v!);\n }\n if (message.timestamp !== undefined) {\n Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(50).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Status {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.errors.push(reader.string());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.cluster = ClusterStatus.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.bidEngine = BidEngineStatus.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.manifest = ManifestStatus.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.publicHostnames.push(reader.string());\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Status {\n return {\n errors: globalThis.Array.isArray(object?.errors) ? object.errors.map((e: any) => globalThis.String(e)) : [],\n cluster: isSet(object.cluster) ? ClusterStatus.fromJSON(object.cluster) : undefined,\n bidEngine: isSet(object.bid_engine) ? BidEngineStatus.fromJSON(object.bid_engine) : undefined,\n manifest: isSet(object.manifest) ? ManifestStatus.fromJSON(object.manifest) : undefined,\n publicHostnames: globalThis.Array.isArray(object?.public_hostnames)\n ? object.public_hostnames.map((e: any) => globalThis.String(e))\n : [],\n timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n };\n },\n\n toJSON(message: Status): unknown {\n const obj: any = {};\n if (message.errors?.length) {\n obj.errors = message.errors;\n }\n if (message.cluster !== undefined) {\n obj.cluster = ClusterStatus.toJSON(message.cluster);\n }\n if (message.bidEngine !== undefined) {\n obj.bid_engine = BidEngineStatus.toJSON(message.bidEngine);\n }\n if (message.manifest !== undefined) {\n obj.manifest = ManifestStatus.toJSON(message.manifest);\n }\n if (message.publicHostnames?.length) {\n obj.public_hostnames = message.publicHostnames;\n }\n if (message.timestamp !== undefined) {\n obj.timestamp = message.timestamp.toISOString();\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Status>): Status {\n const message = createBaseStatus();\n message.errors = object.errors?.map((e) => e) || [];\n message.cluster = (object.cluster !== undefined && object.cluster !== null)\n ? ClusterStatus.fromPartial(object.cluster)\n : undefined;\n message.bidEngine = (object.bidEngine !== undefined && object.bidEngine !== null)\n ? BidEngineStatus.fromPartial(object.bidEngine)\n : undefined;\n message.manifest = (object.manifest !== undefined && object.manifest !== null)\n ? ManifestStatus.fromPartial(object.manifest)\n : undefined;\n message.publicHostnames = object.publicHostnames?.map((e) => e) || [];\n message.timestamp = object.timestamp ?? undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype _unused_DeepPartial<T> = T extends Builtin ? T\n : T extends Long ? string | number | Long : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction _unused_toTimestamp(date: Date): Timestamp {\n const seconds = numberToLong(Math.trunc(date.getTime() / 1_000));\n const nanos = (date.getTime() % 1_000) * 1_000_000;\n return { seconds, nanos };\n}\n\nfunction _unused_fromTimestamp(t: Timestamp): Date {\n let millis = (t.seconds.toNumber() || 0) * 1_000;\n millis += (t.nanos || 0) / 1_000_000;\n return new globalThis.Date(millis);\n}\n\nfunction _unused_fromJsonTimestamp(o: any): Date {\n if (o instanceof globalThis.Date) {\n return o;\n } else if (typeof o === \"string\") {\n return new globalThis.Date(o);\n } else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\n\nfunction _unused_numberToLong(number: number) {\n return Long.fromNumber(number);\n}\n\nfunction _unused_isObject(value: any): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction _unused_isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\ninterface _unused_MessageFns<T, V extends string> {\n readonly $type: V;\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { toTimestamp, fromTimestamp, fromJsonTimestamp, numberToLong, isObject, isSet } from \"../../../../../encoding/typeEncodingHelpers.ts\"\nimport type { DeepPartial, MessageFns } from \"../../../../../encoding/typeEncodingHelpers.ts\"\n// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: akash/provider/v1/status.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport Long from \"long\";\nimport { Timestamp } from \"../../../google/protobuf/timestamp.ts\";\nimport { Quantity } from \"../../../k8s.io/apimachinery/pkg/api/resource/generated.ts\";\nimport { Cluster } from \"../../inventory/v1/cluster.ts\";\nimport { ResourcePair } from \"../../inventory/v1/resourcepair.ts\";\n\n/** ResourceMetrics */\nexport interface ResourcesMetric {\n cpu: Quantity | undefined;\n memory: Quantity | undefined;\n gpu: Quantity | undefined;\n ephemeralStorage: Quantity | undefined;\n storage: { [key: string]: Quantity };\n}\n\nexport interface ResourcesMetric_StorageEntry {\n key: string;\n value: Quantity | undefined;\n}\n\n/** Leases */\nexport interface Leases {\n active: number;\n}\n\n/** ReservationsMetric */\nexport interface ReservationsMetric {\n count: number;\n resources: ResourcesMetric | undefined;\n}\n\n/** Reservations */\nexport interface Reservations {\n pending: ReservationsMetric | undefined;\n active: ReservationsMetric | undefined;\n}\n\n/** Inventory */\nexport interface Inventory {\n cluster: Cluster | undefined;\n reservations: Reservations | undefined;\n leasedIp: ResourcePair | undefined;\n}\n\n/** ClusterStatus */\nexport interface ClusterStatus {\n leases: Leases | undefined;\n inventory: Inventory | undefined;\n}\n\n/** BidEngineStatus */\nexport interface BidEngineStatus {\n orders: number;\n}\n\n/** ManifestStatus */\nexport interface ManifestStatus {\n deployments: number;\n}\n\n/** Status */\nexport interface Status {\n errors: string[];\n cluster: ClusterStatus | undefined;\n bidEngine: BidEngineStatus | undefined;\n manifest: ManifestStatus | undefined;\n publicHostnames: string[];\n timestamp: Date | undefined;\n}\n\nfunction createBaseResourcesMetric(): ResourcesMetric {\n return { cpu: undefined, memory: undefined, gpu: undefined, ephemeralStorage: undefined, storage: {} };\n}\n\nexport const ResourcesMetric: MessageFns<ResourcesMetric, \"akash.provider.v1.ResourcesMetric\"> = {\n $type: \"akash.provider.v1.ResourcesMetric\" as const,\n\n encode(message: ResourcesMetric, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.cpu !== undefined) {\n Quantity.encode(message.cpu, writer.uint32(10).fork()).join();\n }\n if (message.memory !== undefined) {\n Quantity.encode(message.memory, writer.uint32(18).fork()).join();\n }\n if (message.gpu !== undefined) {\n Quantity.encode(message.gpu, writer.uint32(26).fork()).join();\n }\n if (message.ephemeralStorage !== undefined) {\n Quantity.encode(message.ephemeralStorage, writer.uint32(34).fork()).join();\n }\n globalThis.Object.entries(message.storage).forEach(([key, value]: [string, Quantity]) => {\n ResourcesMetric_StorageEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).join();\n });\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ResourcesMetric {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseResourcesMetric();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.cpu = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.memory = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.gpu = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.ephemeralStorage = Quantity.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n const entry5 = ResourcesMetric_StorageEntry.decode(reader, reader.uint32());\n if (entry5.value !== undefined) {\n message.storage[entry5.key] = entry5.value;\n }\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ResourcesMetric {\n return {\n cpu: isSet(object.cpu) ? Quantity.fromJSON(object.cpu) : undefined,\n memory: isSet(object.memory) ? Quantity.fromJSON(object.memory) : undefined,\n gpu: isSet(object.gpu) ? Quantity.fromJSON(object.gpu) : undefined,\n ephemeralStorage: isSet(object.ephemeral_storage) ? Quantity.fromJSON(object.ephemeral_storage) : undefined,\n storage: isObject(object.storage)\n ? (globalThis.Object.entries(object.storage) as [string, any][]).reduce(\n (acc: { [key: string]: Quantity }, [key, value]: [string, any]) => {\n acc[key] = Quantity.fromJSON(value);\n return acc;\n },\n {},\n )\n : {},\n };\n },\n\n toJSON(message: ResourcesMetric): unknown {\n const obj: any = {};\n if (message.cpu !== undefined) {\n obj.cpu = Quantity.toJSON(message.cpu);\n }\n if (message.memory !== undefined) {\n obj.memory = Quantity.toJSON(message.memory);\n }\n if (message.gpu !== undefined) {\n obj.gpu = Quantity.toJSON(message.gpu);\n }\n if (message.ephemeralStorage !== undefined) {\n obj.ephemeral_storage = Quantity.toJSON(message.ephemeralStorage);\n }\n if (message.storage) {\n const entries = globalThis.Object.entries(message.storage) as [string, Quantity][];\n if (entries.length > 0) {\n obj.storage = {};\n entries.forEach(([k, v]) => {\n obj.storage[k] = Quantity.toJSON(v);\n });\n }\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ResourcesMetric>): ResourcesMetric {\n const message = createBaseResourcesMetric();\n message.cpu = (object.cpu !== undefined && object.cpu !== null) ? Quantity.fromPartial(object.cpu) : undefined;\n message.memory = (object.memory !== undefined && object.memory !== null)\n ? Quantity.fromPartial(object.memory)\n : undefined;\n message.gpu = (object.gpu !== undefined && object.gpu !== null) ? Quantity.fromPartial(object.gpu) : undefined;\n message.ephemeralStorage = (object.ephemeralStorage !== undefined && object.ephemeralStorage !== null)\n ? Quantity.fromPartial(object.ephemeralStorage)\n : undefined;\n message.storage = (globalThis.Object.entries(object.storage ?? {}) as [string, Quantity][]).reduce(\n (acc: { [key: string]: Quantity }, [key, value]: [string, Quantity]) => {\n if (value !== undefined) {\n acc[key] = Quantity.fromPartial(value);\n }\n return acc;\n },\n {},\n );\n return message;\n },\n};\n\nfunction createBaseResourcesMetric_StorageEntry(): ResourcesMetric_StorageEntry {\n return { key: \"\", value: undefined };\n}\n\nexport const ResourcesMetric_StorageEntry: MessageFns<\n ResourcesMetric_StorageEntry,\n \"akash.provider.v1.ResourcesMetric.StorageEntry\"\n> = {\n $type: \"akash.provider.v1.ResourcesMetric.StorageEntry\" as const,\n\n encode(message: ResourcesMetric_StorageEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Quantity.encode(message.value, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ResourcesMetric_StorageEntry {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseResourcesMetric_StorageEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.key = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.value = Quantity.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ResourcesMetric_StorageEntry {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? Quantity.fromJSON(object.value) : undefined,\n };\n },\n\n toJSON(message: ResourcesMetric_StorageEntry): unknown {\n const obj: any = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = Quantity.toJSON(message.value);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ResourcesMetric_StorageEntry>): ResourcesMetric_StorageEntry {\n const message = createBaseResourcesMetric_StorageEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? Quantity.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseLeases(): Leases {\n return { active: 0 };\n}\n\nexport const Leases: MessageFns<Leases, \"akash.provider.v1.Leases\"> = {\n $type: \"akash.provider.v1.Leases\" as const,\n\n encode(message: Leases, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.active !== 0) {\n writer.uint32(8).uint32(message.active);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Leases {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseLeases();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.active = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Leases {\n return { active: isSet(object.active) ? globalThis.Number(object.active) : 0 };\n },\n\n toJSON(message: Leases): unknown {\n const obj: any = {};\n if (message.active !== 0) {\n obj.active = Math.round(message.active);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Leases>): Leases {\n const message = createBaseLeases();\n message.active = object.active ?? 0;\n return message;\n },\n};\n\nfunction createBaseReservationsMetric(): ReservationsMetric {\n return { count: 0, resources: undefined };\n}\n\nexport const ReservationsMetric: MessageFns<ReservationsMetric, \"akash.provider.v1.ReservationsMetric\"> = {\n $type: \"akash.provider.v1.ReservationsMetric\" as const,\n\n encode(message: ReservationsMetric, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.count !== 0) {\n writer.uint32(8).uint32(message.count);\n }\n if (message.resources !== undefined) {\n ResourcesMetric.encode(message.resources, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ReservationsMetric {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseReservationsMetric();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.count = reader.uint32();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.resources = ResourcesMetric.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ReservationsMetric {\n return {\n count: isSet(object.count) ? globalThis.Number(object.count) : 0,\n resources: isSet(object.resources) ? ResourcesMetric.fromJSON(object.resources) : undefined,\n };\n },\n\n toJSON(message: ReservationsMetric): unknown {\n const obj: any = {};\n if (message.count !== 0) {\n obj.count = Math.round(message.count);\n }\n if (message.resources !== undefined) {\n obj.resources = ResourcesMetric.toJSON(message.resources);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ReservationsMetric>): ReservationsMetric {\n const message = createBaseReservationsMetric();\n message.count = object.count ?? 0;\n message.resources = (object.resources !== undefined && object.resources !== null)\n ? ResourcesMetric.fromPartial(object.resources)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseReservations(): Reservations {\n return { pending: undefined, active: undefined };\n}\n\nexport const Reservations: MessageFns<Reservations, \"akash.provider.v1.Reservations\"> = {\n $type: \"akash.provider.v1.Reservations\" as const,\n\n encode(message: Reservations, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.pending !== undefined) {\n ReservationsMetric.encode(message.pending, writer.uint32(10).fork()).join();\n }\n if (message.active !== undefined) {\n ReservationsMetric.encode(message.active, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Reservations {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseReservations();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.pending = ReservationsMetric.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.active = ReservationsMetric.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Reservations {\n return {\n pending: isSet(object.pending) ? ReservationsMetric.fromJSON(object.pending) : undefined,\n active: isSet(object.active) ? ReservationsMetric.fromJSON(object.active) : undefined,\n };\n },\n\n toJSON(message: Reservations): unknown {\n const obj: any = {};\n if (message.pending !== undefined) {\n obj.pending = ReservationsMetric.toJSON(message.pending);\n }\n if (message.active !== undefined) {\n obj.active = ReservationsMetric.toJSON(message.active);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Reservations>): Reservations {\n const message = createBaseReservations();\n message.pending = (object.pending !== undefined && object.pending !== null)\n ? ReservationsMetric.fromPartial(object.pending)\n : undefined;\n message.active = (object.active !== undefined && object.active !== null)\n ? ReservationsMetric.fromPartial(object.active)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseInventory(): Inventory {\n return { cluster: undefined, reservations: undefined, leasedIp: undefined };\n}\n\nexport const Inventory: MessageFns<Inventory, \"akash.provider.v1.Inventory\"> = {\n $type: \"akash.provider.v1.Inventory\" as const,\n\n encode(message: Inventory, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.cluster !== undefined) {\n Cluster.encode(message.cluster, writer.uint32(10).fork()).join();\n }\n if (message.reservations !== undefined) {\n Reservations.encode(message.reservations, writer.uint32(18).fork()).join();\n }\n if (message.leasedIp !== undefined) {\n ResourcePair.encode(message.leasedIp, writer.uint32(26).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Inventory {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInventory();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.cluster = Cluster.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.reservations = Reservations.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.leasedIp = ResourcePair.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Inventory {\n return {\n cluster: isSet(object.cluster) ? Cluster.fromJSON(object.cluster) : undefined,\n reservations: isSet(object.reservations) ? Reservations.fromJSON(object.reservations) : undefined,\n leasedIp: isSet(object.leased_ip) ? ResourcePair.fromJSON(object.leased_ip) : undefined,\n };\n },\n\n toJSON(message: Inventory): unknown {\n const obj: any = {};\n if (message.cluster !== undefined) {\n obj.cluster = Cluster.toJSON(message.cluster);\n }\n if (message.reservations !== undefined) {\n obj.reservations = Reservations.toJSON(message.reservations);\n }\n if (message.leasedIp !== undefined) {\n obj.leased_ip = ResourcePair.toJSON(message.leasedIp);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Inventory>): Inventory {\n const message = createBaseInventory();\n message.cluster = (object.cluster !== undefined && object.cluster !== null)\n ? Cluster.fromPartial(object.cluster)\n : undefined;\n message.reservations = (object.reservations !== undefined && object.reservations !== null)\n ? Reservations.fromPartial(object.reservations)\n : undefined;\n message.leasedIp = (object.leasedIp !== undefined && object.leasedIp !== null)\n ? ResourcePair.fromPartial(object.leasedIp)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseClusterStatus(): ClusterStatus {\n return { leases: undefined, inventory: undefined };\n}\n\nexport const ClusterStatus: MessageFns<ClusterStatus, \"akash.provider.v1.ClusterStatus\"> = {\n $type: \"akash.provider.v1.ClusterStatus\" as const,\n\n encode(message: ClusterStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.leases !== undefined) {\n Leases.encode(message.leases, writer.uint32(10).fork()).join();\n }\n if (message.inventory !== undefined) {\n Inventory.encode(message.inventory, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ClusterStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseClusterStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.leases = Leases.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.inventory = Inventory.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ClusterStatus {\n return {\n leases: isSet(object.leases) ? Leases.fromJSON(object.leases) : undefined,\n inventory: isSet(object.inventory) ? Inventory.fromJSON(object.inventory) : undefined,\n };\n },\n\n toJSON(message: ClusterStatus): unknown {\n const obj: any = {};\n if (message.leases !== undefined) {\n obj.leases = Leases.toJSON(message.leases);\n }\n if (message.inventory !== undefined) {\n obj.inventory = Inventory.toJSON(message.inventory);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ClusterStatus>): ClusterStatus {\n const message = createBaseClusterStatus();\n message.leases = (object.leases !== undefined && object.leases !== null)\n ? Leases.fromPartial(object.leases)\n : undefined;\n message.inventory = (object.inventory !== undefined && object.inventory !== null)\n ? Inventory.fromPartial(object.inventory)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseBidEngineStatus(): BidEngineStatus {\n return { orders: 0 };\n}\n\nexport const BidEngineStatus: MessageFns<BidEngineStatus, \"akash.provider.v1.BidEngineStatus\"> = {\n $type: \"akash.provider.v1.BidEngineStatus\" as const,\n\n encode(message: BidEngineStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.orders !== 0) {\n writer.uint32(8).uint32(message.orders);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): BidEngineStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseBidEngineStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.orders = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): BidEngineStatus {\n return { orders: isSet(object.orders) ? globalThis.Number(object.orders) : 0 };\n },\n\n toJSON(message: BidEngineStatus): unknown {\n const obj: any = {};\n if (message.orders !== 0) {\n obj.orders = Math.round(message.orders);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<BidEngineStatus>): BidEngineStatus {\n const message = createBaseBidEngineStatus();\n message.orders = object.orders ?? 0;\n return message;\n },\n};\n\nfunction createBaseManifestStatus(): ManifestStatus {\n return { deployments: 0 };\n}\n\nexport const ManifestStatus: MessageFns<ManifestStatus, \"akash.provider.v1.ManifestStatus\"> = {\n $type: \"akash.provider.v1.ManifestStatus\" as const,\n\n encode(message: ManifestStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.deployments !== 0) {\n writer.uint32(8).uint32(message.deployments);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ManifestStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseManifestStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.deployments = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ManifestStatus {\n return { deployments: isSet(object.deployments) ? globalThis.Number(object.deployments) : 0 };\n },\n\n toJSON(message: ManifestStatus): unknown {\n const obj: any = {};\n if (message.deployments !== 0) {\n obj.deployments = Math.round(message.deployments);\n }\n return obj;\n },\n fromPartial(object: DeepPartial<ManifestStatus>): ManifestStatus {\n const message = createBaseManifestStatus();\n message.deployments = object.deployments ?? 0;\n return message;\n },\n};\n\nfunction createBaseStatus(): Status {\n return {\n errors: [],\n cluster: undefined,\n bidEngine: undefined,\n manifest: undefined,\n publicHostnames: [],\n timestamp: undefined,\n };\n}\n\nexport const Status: MessageFns<Status, \"akash.provider.v1.Status\"> = {\n $type: \"akash.provider.v1.Status\" as const,\n\n encode(message: Status, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.errors) {\n writer.uint32(10).string(v!);\n }\n if (message.cluster !== undefined) {\n ClusterStatus.encode(message.cluster, writer.uint32(18).fork()).join();\n }\n if (message.bidEngine !== undefined) {\n BidEngineStatus.encode(message.bidEngine, writer.uint32(26).fork()).join();\n }\n if (message.manifest !== undefined) {\n ManifestStatus.encode(message.manifest, writer.uint32(34).fork()).join();\n }\n for (const v of message.publicHostnames) {\n writer.uint32(42).string(v!);\n }\n if (message.timestamp !== undefined) {\n Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(50).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Status {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.errors.push(reader.string());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.cluster = ClusterStatus.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.bidEngine = BidEngineStatus.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.manifest = ManifestStatus.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.publicHostnames.push(reader.string());\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Status {\n return {\n errors: globalThis.Array.isArray(object?.errors) ? object.errors.map((e: any) => globalThis.String(e)) : [],\n cluster: isSet(object.cluster) ? ClusterStatus.fromJSON(object.cluster) : undefined,\n bidEngine: isSet(object.bid_engine) ? BidEngineStatus.fromJSON(object.bid_engine) : undefined,\n manifest: isSet(object.manifest) ? ManifestStatus.fromJSON(object.manifest) : undefined,\n publicHostnames: globalThis.Array.isArray(object?.public_hostnames)\n ? object.public_hostnames.map((e: any) => globalThis.String(e))\n : [],\n timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n };\n },\n\n toJSON(message: Status): unknown {\n const obj: any = {};\n if (message.errors?.length) {\n obj.errors = message.errors;\n }\n if (message.cluster !== undefined) {\n obj.cluster = ClusterStatus.toJSON(message.cluster);\n }\n if (message.bidEngine !== undefined) {\n obj.bid_engine = BidEngineStatus.toJSON(message.bidEngine);\n }\n if (message.manifest !== undefined) {\n obj.manifest = ManifestStatus.toJSON(message.manifest);\n }\n if (message.publicHostnames?.length) {\n obj.public_hostnames = message.publicHostnames;\n }\n if (message.timestamp !== undefined) {\n obj.timestamp = message.timestamp.toISOString();\n }\n return obj;\n },\n fromPartial(object: DeepPartial<Status>): Status {\n const message = createBaseStatus();\n message.errors = object.errors?.map((e) => e) || [];\n message.cluster = (object.cluster !== undefined && object.cluster !== null)\n ? ClusterStatus.fromPartial(object.cluster)\n : undefined;\n message.bidEngine = (object.bidEngine !== undefined && object.bidEngine !== null)\n ? BidEngineStatus.fromPartial(object.bidEngine)\n : undefined;\n message.manifest = (object.manifest !== undefined && object.manifest !== null)\n ? ManifestStatus.fromPartial(object.manifest)\n : undefined;\n message.publicHostnames = object.publicHostnames?.map((e) => e) || [];\n message.timestamp = object.timestamp ?? undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype _unused_DeepPartial<T> = T extends Builtin ? T\n : T extends Long ? string | number | Long : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction _unused_toTimestamp(date: Date): Timestamp {\n const seconds = numberToLong(Math.trunc(date.getTime() / 1_000));\n const nanos = (date.getTime() % 1_000) * 1_000_000;\n return { seconds, nanos };\n}\n\nfunction _unused_fromTimestamp(t: Timestamp): Date {\n let millis = (t.seconds.toNumber() || 0) * 1_000;\n millis += (t.nanos || 0) / 1_000_000;\n return new globalThis.Date(millis);\n}\n\nfunction _unused_fromJsonTimestamp(o: any): Date {\n if (o instanceof globalThis.Date) {\n return o;\n } else if (typeof o === \"string\") {\n return new globalThis.Date(o);\n } else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\n\nfunction _unused_numberToLong(number: number) {\n return Long.fromNumber(number);\n}\n\nfunction _unused_isObject(value: any): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction _unused_isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\ninterface _unused_MessageFns<T, V extends string> {\n readonly $type: V;\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Long"]
7
7
  }
@@ -55,7 +55,7 @@ function createGrpcGatewayTransport(options) {
55
55
  requestMethod: method.httpMethod || "GET",
56
56
  url: method.httpPath.replace(/\{[^}]+\}/g, (interpolation) => {
57
57
  const data = message;
58
- const key = interpolation.slice(1, -1).trim();
58
+ const key = interpolation.slice(1, -1).split("=")[0].trim();
59
59
  if (!data || !Object.hasOwn(data, key)) {
60
60
  throw new import_TransportError.TransportError(`Cannot construct url for ${method.parent.typeName}.${method.name}: "${key}" is not specified in message`, import_TransportError.TransportError.Code.InvalidArgument);
61
61
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/sdk/transport/grpc-gateway/createGrpcGatewayTransport.ts"],
4
- "sourcesContent": ["import { createContextValues } from \"@connectrpc/connect\";\nimport { requestHeaderWithCompression } from \"@connectrpc/connect/protocol-grpc\";\nimport { type GrpcTransportOptions as ConnectGrpcTransportOptions } from \"@connectrpc/connect-node\";\n\nimport { base64FromBytes } from \"../../../encoding/typeEncodingHelpers.ts\";\nimport type { MessageDesc, MessageInitShape, MessageShape, MethodDesc } from \"../../client/types.ts\";\nimport { asyncNoop } from \"../createNoopTransport.ts\";\nimport { runUnaryCall } from \"../runCall.ts\";\nimport { TransportError } from \"../TransportError.ts\";\nimport { coerceTimeoutMs } from \"../transportUtils.ts\";\nimport type { CallOptions, StreamResponse, Transport, UnaryRequest, UnaryResponse } from \"../types.ts\";\n\nexport type GrpcGatewayCallOptions = Omit<CallOptions, \"onHeader\" | \"onTrailer\"> & {\n header?: HeadersInit;\n};\nexport interface GrpcGatewayTransportOptions extends Omit<ConnectGrpcTransportOptions, \"useBinaryFormat\"> {\n fetch?: typeof globalThis.fetch;\n}\n\nexport function createGrpcGatewayTransport(options: GrpcGatewayTransportOptions): Transport<GrpcGatewayCallOptions> {\n const useBinaryFormat = false;\n\n return {\n async unary<I extends MessageDesc, O extends MessageDesc>(\n method: MethodDesc<\"unary\", I, O>,\n message: MessageInitShape<I>,\n callOptions?: GrpcGatewayCallOptions,\n ): Promise<UnaryResponse<I, O>> {\n const timeoutMs = coerceTimeoutMs(callOptions?.timeoutMs, options.defaultTimeoutMs);\n\n if (!method.httpPath) {\n throw new TransportError(`Service ${method.parent.typeName} method \"${method.name}\" does not support grpc gateway transport`, TransportError.Code.InvalidArgument);\n }\n\n const headers = requestHeaderWithCompression(\n useBinaryFormat,\n timeoutMs,\n callOptions?.header,\n options.acceptCompression ?? [],\n options.sendCompression || null,\n );\n\n headers.set(\"Content-type\", \"application/json\");\n\n return await runUnaryCall<I, O>({\n interceptors: options.interceptors,\n signal: callOptions?.signal,\n timeoutMs,\n req: {\n service: method.parent,\n stream: false,\n method,\n requestMethod: method.httpMethod || \"GET\",\n url: method.httpPath.replace(/\\{[^}]+\\}/g, (interpolation) => {\n const data = message as Record<string, unknown> | undefined;\n const key = interpolation.slice(1, -1).trim();\n if (!data || !Object.hasOwn(data, key)) {\n throw new TransportError(`Cannot construct url for ${method.parent.typeName}.${method.name}: \"${key}\" is not specified in message`, TransportError.Code.InvalidArgument);\n }\n return String(data[key]);\n }),\n header: headers,\n contextValues: callOptions?.contextValues ?? createContextValues(),\n message,\n },\n next: async (req: UnaryRequest<I, O>): Promise<UnaryResponse<I, O>> => {\n const fetch = options.fetch ?? globalThis.fetch;\n const url = new URL(options.baseUrl + req.url);\n\n if (req.requestMethod === \"GET\") {\n serializeParams(method.input.toJSON(req.message) as Record<string, unknown>, url.searchParams);\n }\n\n const response = await fetch(url, {\n method: req.requestMethod,\n headers: req.header,\n signal: req.signal,\n body: req.requestMethod === \"POST\" || req.requestMethod === \"PUT\" || req.requestMethod === \"PATCH\"\n ? JSON.stringify(method.input.toJSON(req.message))\n : undefined,\n });\n\n if (!response.ok) {\n const errBody = await response.text();\n let jsonBody: Record<string, string> | undefined;\n try {\n jsonBody = JSON.parse(errBody);\n } catch {\n // ignore\n }\n const code = typeof jsonBody?.code === \"number\" ? jsonBody.code : TransportError.Code.Unknown;\n const message = jsonBody?.message || errBody || `HTTP ${response.status} ${response.statusText}`;\n throw new TransportError(message, code);\n }\n\n const body = await response.json();\n return {\n stream: false,\n method,\n header: response.headers,\n trailer: new Headers(),\n message: method.output.fromJSON(body) as MessageShape<O>,\n } satisfies UnaryResponse<I, O>;\n },\n });\n },\n async stream<I extends MessageDesc, O extends MessageDesc>(): Promise<StreamResponse<I, O>> {\n throw new TransportError(`GrpcGateway transport doesn't support streaming`, TransportError.Code.Unimplemented);\n },\n dispose: asyncNoop,\n };\n}\n\nfunction serializeParams(message: Record<string, unknown>, params: URLSearchParams, prefix = \"\") {\n Object.keys(message).forEach((key) => {\n const name = prefix + key;\n const value = message[key];\n if (value === null || value === undefined) return;\n if (value.constructor === Object) {\n serializeParams(value as Record<string, unknown>, params, `${name}.`);\n return;\n }\n\n if (value instanceof Uint8Array) {\n params.append(name, base64FromBytes(value));\n return;\n }\n\n params.append(name, String(value));\n });\n return params;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { createContextValues } from \"@connectrpc/connect\";\nimport { requestHeaderWithCompression } from \"@connectrpc/connect/protocol-grpc\";\nimport { type GrpcTransportOptions as ConnectGrpcTransportOptions } from \"@connectrpc/connect-node\";\n\nimport { base64FromBytes } from \"../../../encoding/typeEncodingHelpers.ts\";\nimport type { MessageDesc, MessageInitShape, MessageShape, MethodDesc } from \"../../client/types.ts\";\nimport { asyncNoop } from \"../createNoopTransport.ts\";\nimport { runUnaryCall } from \"../runCall.ts\";\nimport { TransportError } from \"../TransportError.ts\";\nimport { coerceTimeoutMs } from \"../transportUtils.ts\";\nimport type { CallOptions, StreamResponse, Transport, UnaryRequest, UnaryResponse } from \"../types.ts\";\n\nexport type GrpcGatewayCallOptions = Omit<CallOptions, \"onHeader\" | \"onTrailer\"> & {\n header?: HeadersInit;\n};\nexport interface GrpcGatewayTransportOptions extends Omit<ConnectGrpcTransportOptions, \"useBinaryFormat\"> {\n fetch?: typeof globalThis.fetch;\n}\n\nexport function createGrpcGatewayTransport(options: GrpcGatewayTransportOptions): Transport<GrpcGatewayCallOptions> {\n const useBinaryFormat = false;\n\n return {\n async unary<I extends MessageDesc, O extends MessageDesc>(\n method: MethodDesc<\"unary\", I, O>,\n message: MessageInitShape<I>,\n callOptions?: GrpcGatewayCallOptions,\n ): Promise<UnaryResponse<I, O>> {\n const timeoutMs = coerceTimeoutMs(callOptions?.timeoutMs, options.defaultTimeoutMs);\n\n if (!method.httpPath) {\n throw new TransportError(`Service ${method.parent.typeName} method \"${method.name}\" does not support grpc gateway transport`, TransportError.Code.InvalidArgument);\n }\n\n const headers = requestHeaderWithCompression(\n useBinaryFormat,\n timeoutMs,\n callOptions?.header,\n options.acceptCompression ?? [],\n options.sendCompression || null,\n );\n\n headers.set(\"Content-type\", \"application/json\");\n\n return await runUnaryCall<I, O>({\n interceptors: options.interceptors,\n signal: callOptions?.signal,\n timeoutMs,\n req: {\n service: method.parent,\n stream: false,\n method,\n requestMethod: method.httpMethod || \"GET\",\n url: method.httpPath.replace(/\\{[^}]+\\}/g, (interpolation) => {\n const data = message as Record<string, unknown> | undefined;\n // gRPC path templates may carry a capture pattern ({denom=**}, {name=segments});\n // the message field is the FieldPath before \"=\"\n const key = interpolation.slice(1, -1).split(\"=\")[0].trim();\n if (!data || !Object.hasOwn(data, key)) {\n throw new TransportError(`Cannot construct url for ${method.parent.typeName}.${method.name}: \"${key}\" is not specified in message`, TransportError.Code.InvalidArgument);\n }\n return String(data[key]);\n }),\n header: headers,\n contextValues: callOptions?.contextValues ?? createContextValues(),\n message,\n },\n next: async (req: UnaryRequest<I, O>): Promise<UnaryResponse<I, O>> => {\n const fetch = options.fetch ?? globalThis.fetch;\n const url = new URL(options.baseUrl + req.url);\n\n if (req.requestMethod === \"GET\") {\n serializeParams(method.input.toJSON(req.message) as Record<string, unknown>, url.searchParams);\n }\n\n const response = await fetch(url, {\n method: req.requestMethod,\n headers: req.header,\n signal: req.signal,\n body: req.requestMethod === \"POST\" || req.requestMethod === \"PUT\" || req.requestMethod === \"PATCH\"\n ? JSON.stringify(method.input.toJSON(req.message))\n : undefined,\n });\n\n if (!response.ok) {\n const errBody = await response.text();\n let jsonBody: Record<string, string> | undefined;\n try {\n jsonBody = JSON.parse(errBody);\n } catch {\n // ignore\n }\n const code = typeof jsonBody?.code === \"number\" ? jsonBody.code : TransportError.Code.Unknown;\n const message = jsonBody?.message || errBody || `HTTP ${response.status} ${response.statusText}`;\n throw new TransportError(message, code);\n }\n\n const body = await response.json();\n return {\n stream: false,\n method,\n header: response.headers,\n trailer: new Headers(),\n message: method.output.fromJSON(body) as MessageShape<O>,\n } satisfies UnaryResponse<I, O>;\n },\n });\n },\n async stream<I extends MessageDesc, O extends MessageDesc>(): Promise<StreamResponse<I, O>> {\n throw new TransportError(`GrpcGateway transport doesn't support streaming`, TransportError.Code.Unimplemented);\n },\n dispose: asyncNoop,\n };\n}\n\nfunction serializeParams(message: Record<string, unknown>, params: URLSearchParams, prefix = \"\") {\n Object.keys(message).forEach((key) => {\n const name = prefix + key;\n const value = message[key];\n if (value === null || value === undefined) return;\n if (value.constructor === Object) {\n serializeParams(value as Record<string, unknown>, params, `${name}.`);\n return;\n }\n\n if (value instanceof Uint8Array) {\n params.append(name, base64FromBytes(value));\n return;\n }\n\n params.append(name, String(value));\n });\n return params;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["message"]
7
7
  }
@@ -27,6 +27,7 @@ var import_gpu = require("../../generated/protos/akash/base/resources/v1beta4/gp
27
27
  var import_memory = require("../../generated/protos/akash/base/resources/v1beta4/memory.cjs");
28
28
  var import_resources = require("../../generated/protos/akash/base/resources/v1beta4/resources.cjs");
29
29
  var import_storage = require("../../generated/protos/akash/base/resources/v1beta4/storage.cjs");
30
+ var import_deployment = require("../../generated/protos/akash/deployment/v1/deployment.cjs");
30
31
  var import_groupspec = require("../../generated/protos/akash/deployment/v1beta4/groupspec.cjs");
31
32
  var import_resourceunit = require("../../generated/protos/akash/deployment/v1beta4/resourceunit.cjs");
32
33
  var import_group = require("../../generated/protos/akash/manifest/v2beta3/group.cjs");
@@ -35,6 +36,7 @@ var import_serviceexpose = require("../../generated/protos/akash/manifest/v2beta
35
36
  var import_utils = require("../utils.cjs");
36
37
  var import_validateSDL = require("../validateSDL/validateSDL.cjs");
37
38
  var import_manifestUtils = require("./manifestUtils.cjs");
39
+ var import_reclamationDuration = require("./reclamationDuration.cjs");
38
40
  function generateManifest(sdl) {
39
41
  const errors = (0, import_validateSDL.validateSDL)(sdl);
40
42
  if (errors) return { ok: false, value: errors };
@@ -118,7 +120,20 @@ function generateManifest(sdl) {
118
120
  const sortedGroupNames = [...groupsMap.keys()].sort();
119
121
  let groups;
120
122
  let groupSpecs;
123
+ let reclamation;
121
124
  const manifest = {
125
+ // reclamation is a `MsgCreateDeployment` field, not a manifest group, and is
126
+ // not needed in every call — so it's lazy like `groups`/`groupSpecs`.
127
+ // `validateSDL` (run above) already guaranteed `min_window` is valid, so
128
+ // `minWindowToDuration` never throws here.
129
+ get reclamation() {
130
+ if (sdl.reclamation && !reclamation) {
131
+ reclamation = import_deployment.DeploymentReclamation.fromPartial({
132
+ minWindow: (0, import_reclamationDuration.minWindowToDuration)(sdl.reclamation.min_window)
133
+ });
134
+ }
135
+ return reclamation;
136
+ },
122
137
  get groups() {
123
138
  groups ?? (groups = sortedGroupNames.map((placementName) => {
124
139
  const deployments = deploymentsByPlacement.get(placementName);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/sdl/manifest/generateManifest.ts"],
4
- "sourcesContent": ["import { PlacementRequirements, SignedBy } from \"../../generated/protos/akash/base/attributes/v1/attribute.ts\";\nimport { CPU } from \"../../generated/protos/akash/base/resources/v1beta4/cpu.ts\";\nimport { GPU } from \"../../generated/protos/akash/base/resources/v1beta4/gpu.ts\";\nimport { Memory } from \"../../generated/protos/akash/base/resources/v1beta4/memory.ts\";\nimport { Resources } from \"../../generated/protos/akash/base/resources/v1beta4/resources.ts\";\nimport { Storage } from \"../../generated/protos/akash/base/resources/v1beta4/storage.ts\";\nimport { GroupSpec } from \"../../generated/protos/akash/deployment/v1beta4/groupspec.ts\";\nimport { ResourceUnit } from \"../../generated/protos/akash/deployment/v1beta4/resourceunit.ts\";\nimport { Group } from \"../../generated/protos/akash/manifest/v2beta3/group.ts\";\nimport { ImageCredentials, Service, ServiceParams, StorageParams } from \"../../generated/protos/akash/manifest/v2beta3/service.ts\";\nimport { ServiceExpose } from \"../../generated/protos/akash/manifest/v2beta3/serviceexpose.ts\";\nimport type { ValidationError } from \"../../utils/jsonSchemaValidation.ts\";\nimport { castArray } from \"../utils.ts\";\nimport type { SDLInput } from \"../validateSDL/validateSDL.ts\";\nimport { validateSDL } from \"../validateSDL/validateSDL.ts\";\nimport {\n buildHttpOptions,\n buildResourceAttributes,\n buildServiceEndpoints,\n buildStorageAttributes,\n computeEndpointSequenceNumbers,\n encodeResourceValue,\n parseCpuUnits,\n parseGpuUnits,\n parseMemoryBytes,\n parseServiceProto,\n parseStorageBytes,\n type SDLCompute,\n type SDLService,\n transformGpuAttributes,\n} from \"./manifestUtils.ts\";\n\nexport interface GenerateManifestOkResult {\n groups: Group[];\n groupSpecs: GroupSpec[];\n}\n\nexport type Manifest = GenerateManifestOkResult[\"groups\"];\nexport type GenerateManifestResult =\n | { ok?: false; value: ValidationError[] }\n | { ok: true; value: GenerateManifestOkResult };\nexport function generateManifest(sdl: SDLInput): GenerateManifestResult {\n const errors = validateSDL(sdl);\n if (errors) return { ok: false, value: errors };\n\n const endpointSequenceNumbers = computeEndpointSequenceNumbers(sdl.services);\n const groupsMap = new Map<string, {\n dgroup: GroupSpec;\n boundComputes: Record<string, number>;\n }>();\n const resourceIds = new Map<string, number>();\n\n const deploymentsByPlacement = new Map<string, [string, { profile: string; count: number }][]>();\n for (const [svcName, placements] of Object.entries(sdl.deployment)) {\n for (const [placementName, deployment] of Object.entries(placements)) {\n let list = deploymentsByPlacement.get(placementName);\n if (!list) {\n list = [];\n deploymentsByPlacement.set(placementName, list);\n }\n list.push([svcName, deployment]);\n }\n }\n for (const list of deploymentsByPlacement.values()) {\n list.sort(([a], [b]) => a.localeCompare(b));\n }\n\n const services = Object.entries(sdl.services).sort(([a], [b]) => a.localeCompare(b));\n\n for (const [svcName, service] of services) {\n for (const [placementName, svcdepl] of Object.entries(sdl.deployment[svcName])) {\n const compute = sdl.profiles.compute[svcdepl.profile];\n const infra = sdl.profiles.placement[placementName];\n const pricing = infra.pricing[svcdepl.profile];\n const price = {\n denom: pricing.denom,\n amount: pricing.amount?.toString(),\n };\n\n let group = groupsMap.get(placementName);\n\n if (!group) {\n group = {\n dgroup: GroupSpec.fromPartial({\n name: placementName,\n resources: [],\n requirements: PlacementRequirements.fromPartial({\n attributes: buildResourceAttributes(infra.attributes),\n signedBy: SignedBy.fromPartial({\n allOf: infra.signedBy?.allOf,\n anyOf: infra.signedBy?.anyOf,\n }),\n }),\n }),\n boundComputes: {},\n };\n\n groupsMap.set(placementName, group);\n }\n\n const profileKey = `${placementName}:${svcdepl.profile}`;\n const location = group.boundComputes[svcdepl.profile];\n\n if (location === undefined) {\n const resId = group.dgroup.resources.length > 0\n ? group.dgroup.resources.length + 1\n : 1;\n\n resourceIds.set(profileKey, resId);\n\n const resources = buildResources(resId, compute, service, endpointSequenceNumbers);\n\n group.dgroup.resources.push(\n ResourceUnit.fromPartial({\n resource: resources,\n count: svcdepl.count,\n price,\n }),\n );\n\n group.boundComputes[svcdepl.profile] = group.dgroup.resources.length - 1;\n } else {\n if (!resourceIds.has(profileKey)) {\n resourceIds.set(profileKey, group.dgroup.resources[location].resource!.id);\n }\n\n group.dgroup.resources[location].count += svcdepl.count;\n group.dgroup.resources[location].resource!.endpoints.push(\n ...buildServiceEndpoints(service, endpointSequenceNumbers),\n );\n }\n }\n }\n\n for (const group of groupsMap.values()) {\n for (const resourceUnit of group.dgroup.resources) {\n resourceUnit.resource!.endpoints.sort(\n (a, b) => a.kind - b.kind || a.sequenceNumber - b.sequenceNumber,\n );\n }\n }\n\n const sortedGroupNames = [...groupsMap.keys()].sort();\n let groups: Group[] | undefined;\n let groupSpecs: GroupSpec[] | undefined;\n\n const manifest = {\n get groups() {\n groups ??= sortedGroupNames.map((placementName) => {\n const deployments = deploymentsByPlacement.get(placementName)!;\n\n return Group.fromPartial({\n name: placementName,\n services: deployments.map(([svcName]) => {\n const service = sdl.services[svcName];\n const deployment = sdl.deployment[svcName][placementName];\n const compute = sdl.profiles.compute[deployment.profile];\n const resourceId = resourceIds.get(`${placementName}:${deployment.profile}`) || 1;\n\n return buildManifestService(\n resourceId,\n svcName,\n service,\n compute,\n deployment.count,\n endpointSequenceNumbers,\n );\n }),\n });\n });\n return groups;\n },\n get groupSpecs() {\n groupSpecs ??= sortedGroupNames.map((name) => groupsMap.get(name)!.dgroup);\n return groupSpecs;\n },\n };\n\n return { ok: true, value: manifest };\n}\n\nfunction buildResources(\n id: number,\n compute: SDLCompute,\n service: SDLService,\n endpointSequenceNumbers: Record<string, number>,\n): Resources {\n const res = compute.resources;\n const cpuAttributes = buildResourceAttributes(res.cpu.attributes);\n const gpuAttributes = res.gpu?.attributes ? transformGpuAttributes(res.gpu.attributes) : [];\n\n return Resources.fromPartial({\n id,\n cpu: CPU.fromPartial({\n units: { val: encodeResourceValue(parseCpuUnits(res.cpu)) },\n attributes: cpuAttributes,\n }),\n memory: Memory.fromPartial({\n quantity: { val: encodeResourceValue(parseMemoryBytes(res.memory)) },\n }),\n storage: castArray(res.storage).map((s) =>\n Storage.fromPartial({\n name: s.name || \"default\",\n quantity: { val: encodeResourceValue(parseStorageBytes(s.size)) },\n attributes: buildStorageAttributes(s.attributes),\n }),\n ),\n gpu: GPU.fromPartial({\n units: { val: encodeResourceValue(parseGpuUnits(res.gpu)) },\n attributes: gpuAttributes,\n }),\n endpoints: buildServiceEndpoints(service, endpointSequenceNumbers),\n });\n}\n\nfunction buildManifestService(\n resourceId: number,\n name: string,\n service: SDLService,\n compute: SDLCompute,\n count: number,\n endpointSequenceNumbers: Record<string, number>,\n): Service {\n const credentials = service.credentials\n ? ImageCredentials.fromPartial({\n host: service.credentials.host,\n email: service.credentials.email || \"\",\n username: service.credentials.username,\n password: service.credentials.password,\n })\n : undefined;\n\n const params = buildParams(service);\n\n return Service.fromPartial({\n name,\n image: service.image,\n command: service.command || [],\n args: service.args || [],\n env: service.env || [],\n resources: buildResources(resourceId, compute, service, endpointSequenceNumbers),\n count,\n expose: buildManifestExpose(service, endpointSequenceNumbers),\n params,\n credentials,\n });\n}\n\nfunction buildParams(service: SDLService): ServiceParams | undefined {\n if (!service.params) return undefined;\n\n const storage = service.params.storage || {};\n const storageNames = service.params.storage ? Object.keys(storage).sort() : [];\n const result = ServiceParams.fromPartial({\n storage: storageNames.map((name) => {\n const config = storage[name];\n return StorageParams.fromPartial({\n name,\n mount: config.mount || \"\",\n readOnly: config.readOnly || false,\n });\n }),\n });\n\n // Permissions are not in the protobuf type but need to be preserved\n if (service.params.permissions) {\n (result as unknown as Record<string, unknown>).permissions = service.params.permissions;\n }\n\n return result;\n}\n\nfunction buildManifestExpose(\n service: SDLService,\n endpointSequenceNumbers: Record<string, number>,\n): ServiceExpose[] {\n return (service.expose ?? [])\n .flatMap((expose) =>\n (expose.to ?? []).map((to) =>\n ServiceExpose.fromPartial({\n port: expose.port,\n externalPort: expose.as,\n proto: parseServiceProto(expose.proto),\n service: to.service || \"\",\n global: to.global || false,\n hosts: expose.accept || [],\n httpOptions: buildHttpOptions(expose.http_options),\n ip: to.ip || \"\",\n endpointSequenceNumber: endpointSequenceNumbers[to.ip!],\n }),\n ),\n )\n .sort((a, b) => {\n if (a.service !== b.service) return a.service.localeCompare(b.service);\n if (a.port !== b.port) return a.port - b.port;\n if (a.proto !== b.proto) return a.proto.localeCompare(b.proto);\n if (a.global !== b.global) return a.global ? -1 : 1;\n return 0;\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { PlacementRequirements, SignedBy } from \"../../generated/protos/akash/base/attributes/v1/attribute.ts\";\nimport { CPU } from \"../../generated/protos/akash/base/resources/v1beta4/cpu.ts\";\nimport { GPU } from \"../../generated/protos/akash/base/resources/v1beta4/gpu.ts\";\nimport { Memory } from \"../../generated/protos/akash/base/resources/v1beta4/memory.ts\";\nimport { Resources } from \"../../generated/protos/akash/base/resources/v1beta4/resources.ts\";\nimport { Storage } from \"../../generated/protos/akash/base/resources/v1beta4/storage.ts\";\nimport { DeploymentReclamation } from \"../../generated/protos/akash/deployment/v1/deployment.ts\";\nimport { GroupSpec } from \"../../generated/protos/akash/deployment/v1beta4/groupspec.ts\";\nimport { ResourceUnit } from \"../../generated/protos/akash/deployment/v1beta4/resourceunit.ts\";\nimport { Group } from \"../../generated/protos/akash/manifest/v2beta3/group.ts\";\nimport { ImageCredentials, Service, ServiceParams, StorageParams } from \"../../generated/protos/akash/manifest/v2beta3/service.ts\";\nimport { ServiceExpose } from \"../../generated/protos/akash/manifest/v2beta3/serviceexpose.ts\";\nimport type { ValidationError } from \"../../utils/jsonSchemaValidation.ts\";\nimport { castArray } from \"../utils.ts\";\nimport type { SDLInput } from \"../validateSDL/validateSDL.ts\";\nimport { validateSDL } from \"../validateSDL/validateSDL.ts\";\nimport {\n buildHttpOptions,\n buildResourceAttributes,\n buildServiceEndpoints,\n buildStorageAttributes,\n computeEndpointSequenceNumbers,\n encodeResourceValue,\n parseCpuUnits,\n parseGpuUnits,\n parseMemoryBytes,\n parseServiceProto,\n parseStorageBytes,\n type SDLCompute,\n type SDLService,\n transformGpuAttributes,\n} from \"./manifestUtils.ts\";\nimport { minWindowToDuration } from \"./reclamationDuration.ts\";\n\nexport interface GenerateManifestOkResult {\n groups: Group[];\n groupSpecs: GroupSpec[];\n reclamation?: DeploymentReclamation;\n}\n\nexport type Manifest = GenerateManifestOkResult[\"groups\"];\nexport type GenerateManifestResult =\n | { ok?: false; value: ValidationError[] }\n | { ok: true; value: GenerateManifestOkResult };\nexport function generateManifest(sdl: SDLInput): GenerateManifestResult {\n const errors = validateSDL(sdl);\n if (errors) return { ok: false, value: errors };\n\n const endpointSequenceNumbers = computeEndpointSequenceNumbers(sdl.services);\n const groupsMap = new Map<string, {\n dgroup: GroupSpec;\n boundComputes: Record<string, number>;\n }>();\n const resourceIds = new Map<string, number>();\n\n const deploymentsByPlacement = new Map<string, [string, { profile: string; count: number }][]>();\n for (const [svcName, placements] of Object.entries(sdl.deployment)) {\n for (const [placementName, deployment] of Object.entries(placements)) {\n let list = deploymentsByPlacement.get(placementName);\n if (!list) {\n list = [];\n deploymentsByPlacement.set(placementName, list);\n }\n list.push([svcName, deployment]);\n }\n }\n for (const list of deploymentsByPlacement.values()) {\n list.sort(([a], [b]) => a.localeCompare(b));\n }\n\n const services = Object.entries(sdl.services).sort(([a], [b]) => a.localeCompare(b));\n\n for (const [svcName, service] of services) {\n for (const [placementName, svcdepl] of Object.entries(sdl.deployment[svcName])) {\n const compute = sdl.profiles.compute[svcdepl.profile];\n const infra = sdl.profiles.placement[placementName];\n const pricing = infra.pricing[svcdepl.profile];\n const price = {\n denom: pricing.denom,\n amount: pricing.amount?.toString(),\n };\n\n let group = groupsMap.get(placementName);\n\n if (!group) {\n group = {\n dgroup: GroupSpec.fromPartial({\n name: placementName,\n resources: [],\n requirements: PlacementRequirements.fromPartial({\n attributes: buildResourceAttributes(infra.attributes),\n signedBy: SignedBy.fromPartial({\n allOf: infra.signedBy?.allOf,\n anyOf: infra.signedBy?.anyOf,\n }),\n }),\n }),\n boundComputes: {},\n };\n\n groupsMap.set(placementName, group);\n }\n\n const profileKey = `${placementName}:${svcdepl.profile}`;\n const location = group.boundComputes[svcdepl.profile];\n\n if (location === undefined) {\n const resId = group.dgroup.resources.length > 0\n ? group.dgroup.resources.length + 1\n : 1;\n\n resourceIds.set(profileKey, resId);\n\n const resources = buildResources(resId, compute, service, endpointSequenceNumbers);\n\n group.dgroup.resources.push(\n ResourceUnit.fromPartial({\n resource: resources,\n count: svcdepl.count,\n price,\n }),\n );\n\n group.boundComputes[svcdepl.profile] = group.dgroup.resources.length - 1;\n } else {\n if (!resourceIds.has(profileKey)) {\n resourceIds.set(profileKey, group.dgroup.resources[location].resource!.id);\n }\n\n group.dgroup.resources[location].count += svcdepl.count;\n group.dgroup.resources[location].resource!.endpoints.push(\n ...buildServiceEndpoints(service, endpointSequenceNumbers),\n );\n }\n }\n }\n\n for (const group of groupsMap.values()) {\n for (const resourceUnit of group.dgroup.resources) {\n resourceUnit.resource!.endpoints.sort(\n (a, b) => a.kind - b.kind || a.sequenceNumber - b.sequenceNumber,\n );\n }\n }\n\n const sortedGroupNames = [...groupsMap.keys()].sort();\n let groups: Group[] | undefined;\n let groupSpecs: GroupSpec[] | undefined;\n let reclamation: DeploymentReclamation | undefined;\n\n const manifest = {\n // reclamation is a `MsgCreateDeployment` field, not a manifest group, and is\n // not needed in every call \u2014 so it's lazy like `groups`/`groupSpecs`.\n // `validateSDL` (run above) already guaranteed `min_window` is valid, so\n // `minWindowToDuration` never throws here.\n get reclamation() {\n if (sdl.reclamation && !reclamation) {\n reclamation = DeploymentReclamation.fromPartial({\n minWindow: minWindowToDuration(sdl.reclamation.min_window),\n });\n }\n return reclamation;\n },\n get groups() {\n groups ??= sortedGroupNames.map((placementName) => {\n const deployments = deploymentsByPlacement.get(placementName)!;\n\n return Group.fromPartial({\n name: placementName,\n services: deployments.map(([svcName]) => {\n const service = sdl.services[svcName];\n const deployment = sdl.deployment[svcName][placementName];\n const compute = sdl.profiles.compute[deployment.profile];\n const resourceId = resourceIds.get(`${placementName}:${deployment.profile}`) || 1;\n\n return buildManifestService(\n resourceId,\n svcName,\n service,\n compute,\n deployment.count,\n endpointSequenceNumbers,\n );\n }),\n });\n });\n return groups;\n },\n get groupSpecs() {\n groupSpecs ??= sortedGroupNames.map((name) => groupsMap.get(name)!.dgroup);\n return groupSpecs;\n },\n };\n\n return { ok: true, value: manifest };\n}\n\nfunction buildResources(\n id: number,\n compute: SDLCompute,\n service: SDLService,\n endpointSequenceNumbers: Record<string, number>,\n): Resources {\n const res = compute.resources;\n const cpuAttributes = buildResourceAttributes(res.cpu.attributes);\n const gpuAttributes = res.gpu?.attributes ? transformGpuAttributes(res.gpu.attributes) : [];\n\n return Resources.fromPartial({\n id,\n cpu: CPU.fromPartial({\n units: { val: encodeResourceValue(parseCpuUnits(res.cpu)) },\n attributes: cpuAttributes,\n }),\n memory: Memory.fromPartial({\n quantity: { val: encodeResourceValue(parseMemoryBytes(res.memory)) },\n }),\n storage: castArray(res.storage).map((s) =>\n Storage.fromPartial({\n name: s.name || \"default\",\n quantity: { val: encodeResourceValue(parseStorageBytes(s.size)) },\n attributes: buildStorageAttributes(s.attributes),\n }),\n ),\n gpu: GPU.fromPartial({\n units: { val: encodeResourceValue(parseGpuUnits(res.gpu)) },\n attributes: gpuAttributes,\n }),\n endpoints: buildServiceEndpoints(service, endpointSequenceNumbers),\n });\n}\n\nfunction buildManifestService(\n resourceId: number,\n name: string,\n service: SDLService,\n compute: SDLCompute,\n count: number,\n endpointSequenceNumbers: Record<string, number>,\n): Service {\n const credentials = service.credentials\n ? ImageCredentials.fromPartial({\n host: service.credentials.host,\n email: service.credentials.email || \"\",\n username: service.credentials.username,\n password: service.credentials.password,\n })\n : undefined;\n\n const params = buildParams(service);\n\n return Service.fromPartial({\n name,\n image: service.image,\n command: service.command || [],\n args: service.args || [],\n env: service.env || [],\n resources: buildResources(resourceId, compute, service, endpointSequenceNumbers),\n count,\n expose: buildManifestExpose(service, endpointSequenceNumbers),\n params,\n credentials,\n });\n}\n\nfunction buildParams(service: SDLService): ServiceParams | undefined {\n if (!service.params) return undefined;\n\n const storage = service.params.storage || {};\n const storageNames = service.params.storage ? Object.keys(storage).sort() : [];\n const result = ServiceParams.fromPartial({\n storage: storageNames.map((name) => {\n const config = storage[name];\n return StorageParams.fromPartial({\n name,\n mount: config.mount || \"\",\n readOnly: config.readOnly || false,\n });\n }),\n });\n\n // Permissions are not in the protobuf type but need to be preserved\n if (service.params.permissions) {\n (result as unknown as Record<string, unknown>).permissions = service.params.permissions;\n }\n\n return result;\n}\n\nfunction buildManifestExpose(\n service: SDLService,\n endpointSequenceNumbers: Record<string, number>,\n): ServiceExpose[] {\n return (service.expose ?? [])\n .flatMap((expose) =>\n (expose.to ?? []).map((to) =>\n ServiceExpose.fromPartial({\n port: expose.port,\n externalPort: expose.as,\n proto: parseServiceProto(expose.proto),\n service: to.service || \"\",\n global: to.global || false,\n hosts: expose.accept || [],\n httpOptions: buildHttpOptions(expose.http_options),\n ip: to.ip || \"\",\n endpointSequenceNumber: endpointSequenceNumbers[to.ip!],\n }),\n ),\n )\n .sort((a, b) => {\n if (a.service !== b.service) return a.service.localeCompare(b.service);\n if (a.port !== b.port) return a.port - b.port;\n if (a.proto !== b.proto) return a.proto.localeCompare(b.proto);\n if (a.global !== b.global) return a.global ? -1 : 1;\n return 0;\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var reclamationDuration_exports = {};
20
+ __export(reclamationDuration_exports, {
21
+ minWindowToDuration: () => minWindowToDuration
22
+ });
23
+ module.exports = __toCommonJS(reclamationDuration_exports);
24
+ var import_duration = require("../../generated/protos/google/protobuf/duration.cjs");
25
+ const UNIT_SECONDS = { s: 1n, m: 60n, h: 3600n };
26
+ function minWindowToDuration(value) {
27
+ const unitSeconds = UNIT_SECONDS[value.at(-1) ?? ""];
28
+ const amount = Number(value.slice(0, -1));
29
+ if (unitSeconds === void 0 || !Number.isInteger(amount) || amount <= 0) {
30
+ throw new Error(`invalid reclamation min_window "${value}"`);
31
+ }
32
+ return import_duration.Duration.fromPartial({ seconds: (BigInt(amount) * unitSeconds).toString(), nanos: 0 });
33
+ }
34
+ //# sourceMappingURL=reclamationDuration.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/sdl/manifest/reclamationDuration.ts"],
4
+ "sourcesContent": ["import { Duration } from \"../../generated/protos/google/protobuf/duration.ts\";\n\nconst UNIT_SECONDS: Record<string, bigint> = { s: 1n, m: 60n, h: 3600n };\n\n/**\n * Converts a reclamation `min_window` into a proto `Duration`. The SDL schema\n * pattern (`^[1-9][0-9]*(s|m|h)$`) has already guaranteed the format (and `> 0`)\n * before this runs, so on the request hot path we split off the trailing unit\n * and parse the amount directly instead of re-running a regex. The cheap\n * unit/integer/positivity guards stay only to reject obviously-invalid direct\n * calls. Whole-unit windows are an exact second count, so `nanos` is always 0\n * and the BigInt product never loses precision.\n */\nexport function minWindowToDuration(value: string): Duration {\n const unitSeconds = UNIT_SECONDS[value.at(-1) ?? \"\"];\n const amount = Number(value.slice(0, -1));\n if (unitSeconds === undefined || !Number.isInteger(amount) || amount <= 0) {\n throw new Error(`invalid reclamation min_window \"${value}\"`);\n }\n return Duration.fromPartial({ seconds: (BigInt(amount) * unitSeconds).toString(), nanos: 0 });\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AAEzB,MAAM,eAAuC,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM;AAWhE,SAAS,oBAAoB,OAAyB;AAC3D,QAAM,cAAc,aAAa,MAAM,GAAG,EAAE,KAAK,EAAE;AACnD,QAAM,SAAS,OAAO,MAAM,MAAM,GAAG,EAAE,CAAC;AACxC,MAAI,gBAAgB,UAAa,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AACzE,UAAM,IAAI,MAAM,mCAAmC,KAAK,GAAG;AAAA,EAC7D;AACA,SAAO,yBAAS,YAAY,EAAE,UAAU,OAAO,MAAM,IAAI,aAAa,SAAS,GAAG,OAAO,EAAE,CAAC;AAC9F;",
6
+ "names": []
7
+ }
@@ -40,6 +40,12 @@ const ERROR_MESSAGES = {
40
40
  },
41
41
  "#/definitions/exposeToWithIpEnforcesGlobal"() {
42
42
  return `If an IP is declared, the directive must be declared as global.`;
43
+ },
44
+ // Mirrors the shared schema's `min_window` pattern (`^[1-9][0-9]*(s|m|h)$`).
45
+ // Go stays the lenient layer (`go/sdl/reclamation.go` accepts any `> 0`
46
+ // `time.ParseDuration`), so this is a sanctioned schema-only-stricter rule.
47
+ "#/properties/reclamation/properties/min_window/pattern"() {
48
+ return `Reclamation min_window must be a whole number followed by s, m, or h (e.g. "24h", "30m").`;
43
49
  }
44
50
  };
45
51
  function validateSDL(sdl) {