@fintekkers/ledger-models 0.1.91 → 0.1.93

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.
@@ -0,0 +1,36 @@
1
+ // package: fintekkers.requests.security
2
+ // file: fintekkers/requests/security/get_fields_response.proto
3
+
4
+ /* tslint:disable */
5
+ /* eslint-disable */
6
+
7
+ import * as jspb from "google-protobuf";
8
+ import * as fintekkers_models_position_field_pb from "../../../fintekkers/models/position/field_pb";
9
+
10
+ export class GetFieldsResponseProto extends jspb.Message {
11
+ getObjectClass(): string;
12
+ setObjectClass(value: string): GetFieldsResponseProto;
13
+ getVersion(): string;
14
+ setVersion(value: string): GetFieldsResponseProto;
15
+ clearFieldsList(): void;
16
+ getFieldsList(): Array<fintekkers_models_position_field_pb.FieldProto>;
17
+ setFieldsList(value: Array<fintekkers_models_position_field_pb.FieldProto>): GetFieldsResponseProto;
18
+ addFields(value: fintekkers_models_position_field_pb.FieldProto, index?: number): fintekkers_models_position_field_pb.FieldProto;
19
+
20
+ serializeBinary(): Uint8Array;
21
+ toObject(includeInstance?: boolean): GetFieldsResponseProto.AsObject;
22
+ static toObject(includeInstance: boolean, msg: GetFieldsResponseProto): GetFieldsResponseProto.AsObject;
23
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
24
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
25
+ static serializeBinaryToWriter(message: GetFieldsResponseProto, writer: jspb.BinaryWriter): void;
26
+ static deserializeBinary(bytes: Uint8Array): GetFieldsResponseProto;
27
+ static deserializeBinaryFromReader(message: GetFieldsResponseProto, reader: jspb.BinaryReader): GetFieldsResponseProto;
28
+ }
29
+
30
+ export namespace GetFieldsResponseProto {
31
+ export type AsObject = {
32
+ objectClass: string,
33
+ version: string,
34
+ fieldsList: Array<fintekkers_models_position_field_pb.FieldProto>,
35
+ }
36
+ }
@@ -10,7 +10,9 @@ import * as fintekkers_requests_security_query_security_request_pb from "../../.
10
10
  import * as fintekkers_requests_security_query_security_response_pb from "../../../fintekkers/requests/security/query_security_response_pb";
11
11
  import * as fintekkers_requests_security_create_security_request_pb from "../../../fintekkers/requests/security/create_security_request_pb";
12
12
  import * as fintekkers_requests_security_create_security_response_pb from "../../../fintekkers/requests/security/create_security_response_pb";
13
+ import * as fintekkers_requests_security_get_fields_response_pb from "../../../fintekkers/requests/security/get_fields_response_pb";
13
14
  import * as fintekkers_requests_util_errors_summary_pb from "../../../fintekkers/requests/util/errors/summary_pb";
15
+ import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
14
16
 
15
17
  interface ISecurityService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
16
18
  createOrUpdate: ISecurityService_ICreateOrUpdate;
@@ -19,6 +21,7 @@ interface ISecurityService extends grpc.ServiceDefinition<grpc.UntypedServiceImp
19
21
  listIds: ISecurityService_IListIds;
20
22
  validateCreateOrUpdate: ISecurityService_IValidateCreateOrUpdate;
21
23
  validateQueryRequest: ISecurityService_IValidateQueryRequest;
24
+ getFields: ISecurityService_IGetFields;
22
25
  }
23
26
 
24
27
  interface ISecurityService_ICreateOrUpdate extends grpc.MethodDefinition<fintekkers_requests_security_create_security_request_pb.CreateSecurityRequestProto, fintekkers_requests_security_create_security_response_pb.CreateSecurityResponseProto> {
@@ -75,6 +78,15 @@ interface ISecurityService_IValidateQueryRequest extends grpc.MethodDefinition<f
75
78
  responseSerialize: grpc.serialize<fintekkers_requests_util_errors_summary_pb.SummaryProto>;
76
79
  responseDeserialize: grpc.deserialize<fintekkers_requests_util_errors_summary_pb.SummaryProto>;
77
80
  }
81
+ interface ISecurityService_IGetFields extends grpc.MethodDefinition<google_protobuf_empty_pb.Empty, fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto> {
82
+ path: "/fintekkers.services.security_service.Security/GetFields";
83
+ requestStream: false;
84
+ responseStream: false;
85
+ requestSerialize: grpc.serialize<google_protobuf_empty_pb.Empty>;
86
+ requestDeserialize: grpc.deserialize<google_protobuf_empty_pb.Empty>;
87
+ responseSerialize: grpc.serialize<fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto>;
88
+ responseDeserialize: grpc.deserialize<fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto>;
89
+ }
78
90
 
79
91
  export const SecurityService: ISecurityService;
80
92
 
@@ -85,6 +97,7 @@ export interface ISecurityServer extends grpc.UntypedServiceImplementation {
85
97
  listIds: grpc.handleUnaryCall<fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, fintekkers_requests_security_query_security_response_pb.QuerySecurityResponseProto>;
86
98
  validateCreateOrUpdate: grpc.handleUnaryCall<fintekkers_requests_security_create_security_request_pb.CreateSecurityRequestProto, fintekkers_requests_util_errors_summary_pb.SummaryProto>;
87
99
  validateQueryRequest: grpc.handleUnaryCall<fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, fintekkers_requests_util_errors_summary_pb.SummaryProto>;
100
+ getFields: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto>;
88
101
  }
89
102
 
90
103
  export interface ISecurityClient {
@@ -105,6 +118,9 @@ export interface ISecurityClient {
105
118
  validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
106
119
  validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
107
120
  validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
121
+ getFields(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
122
+ getFields(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
123
+ getFields(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
108
124
  }
109
125
 
110
126
  export class SecurityClient extends grpc.Client implements ISecurityClient {
@@ -126,4 +142,7 @@ export class SecurityClient extends grpc.Client implements ISecurityClient {
126
142
  public validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
127
143
  public validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
128
144
  public validateQueryRequest(request: fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_util_errors_summary_pb.SummaryProto) => void): grpc.ClientUnaryCall;
145
+ public getFields(request: google_protobuf_empty_pb.Empty, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
146
+ public getFields(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
147
+ public getFields(request: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto) => void): grpc.ClientUnaryCall;
129
148
  }
@@ -6,7 +6,9 @@ var fintekkers_requests_security_query_security_request_pb = require('../../../f
6
6
  var fintekkers_requests_security_query_security_response_pb = require('../../../fintekkers/requests/security/query_security_response_pb.js');
7
7
  var fintekkers_requests_security_create_security_request_pb = require('../../../fintekkers/requests/security/create_security_request_pb.js');
8
8
  var fintekkers_requests_security_create_security_response_pb = require('../../../fintekkers/requests/security/create_security_response_pb.js');
9
+ var fintekkers_requests_security_get_fields_response_pb = require('../../../fintekkers/requests/security/get_fields_response_pb.js');
9
10
  var fintekkers_requests_util_errors_summary_pb = require('../../../fintekkers/requests/util/errors/summary_pb.js');
11
+ var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
10
12
 
11
13
  function serialize_fintekkers_requests_security_CreateSecurityRequestProto(arg) {
12
14
  if (!(arg instanceof fintekkers_requests_security_create_security_request_pb.CreateSecurityRequestProto)) {
@@ -30,6 +32,17 @@ function deserialize_fintekkers_requests_security_CreateSecurityResponseProto(bu
30
32
  return fintekkers_requests_security_create_security_response_pb.CreateSecurityResponseProto.deserializeBinary(new Uint8Array(buffer_arg));
31
33
  }
32
34
 
35
+ function serialize_fintekkers_requests_security_GetFieldsResponseProto(arg) {
36
+ if (!(arg instanceof fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto)) {
37
+ throw new Error('Expected argument of type fintekkers.requests.security.GetFieldsResponseProto');
38
+ }
39
+ return Buffer.from(arg.serializeBinary());
40
+ }
41
+
42
+ function deserialize_fintekkers_requests_security_GetFieldsResponseProto(buffer_arg) {
43
+ return fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto.deserializeBinary(new Uint8Array(buffer_arg));
44
+ }
45
+
33
46
  function serialize_fintekkers_requests_security_QuerySecurityRequestProto(arg) {
34
47
  if (!(arg instanceof fintekkers_requests_security_query_security_request_pb.QuerySecurityRequestProto)) {
35
48
  throw new Error('Expected argument of type fintekkers.requests.security.QuerySecurityRequestProto');
@@ -63,6 +76,17 @@ function deserialize_fintekkers_requests_util_errors_SummaryProto(buffer_arg) {
63
76
  return fintekkers_requests_util_errors_summary_pb.SummaryProto.deserializeBinary(new Uint8Array(buffer_arg));
64
77
  }
65
78
 
79
+ function serialize_google_protobuf_Empty(arg) {
80
+ if (!(arg instanceof google_protobuf_empty_pb.Empty)) {
81
+ throw new Error('Expected argument of type google.protobuf.Empty');
82
+ }
83
+ return Buffer.from(arg.serializeBinary());
84
+ }
85
+
86
+ function deserialize_google_protobuf_Empty(buffer_arg) {
87
+ return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));
88
+ }
89
+
66
90
 
67
91
  var SecurityService = exports.SecurityService = {
68
92
  createOrUpdate: {
@@ -131,6 +155,17 @@ var SecurityService = exports.SecurityService = {
131
155
  responseSerialize: serialize_fintekkers_requests_util_errors_SummaryProto,
132
156
  responseDeserialize: deserialize_fintekkers_requests_util_errors_SummaryProto,
133
157
  },
158
+ getFields: {
159
+ path: '/fintekkers.services.security_service.Security/GetFields',
160
+ requestStream: false,
161
+ responseStream: false,
162
+ requestType: google_protobuf_empty_pb.Empty,
163
+ responseType: fintekkers_requests_security_get_fields_response_pb.GetFieldsResponseProto,
164
+ requestSerialize: serialize_google_protobuf_Empty,
165
+ requestDeserialize: deserialize_google_protobuf_Empty,
166
+ responseSerialize: serialize_fintekkers_requests_security_GetFieldsResponseProto,
167
+ responseDeserialize: deserialize_fintekkers_requests_security_GetFieldsResponseProto,
168
+ },
134
169
  };
135
170
 
136
171
  exports.SecurityClient = grpc.makeGenericClientConstructor(SecurityService);
@@ -9,4 +9,6 @@ import * as fintekkers_requests_security_query_security_request_pb from "../../.
9
9
  import * as fintekkers_requests_security_query_security_response_pb from "../../../fintekkers/requests/security/query_security_response_pb";
10
10
  import * as fintekkers_requests_security_create_security_request_pb from "../../../fintekkers/requests/security/create_security_request_pb";
11
11
  import * as fintekkers_requests_security_create_security_response_pb from "../../../fintekkers/requests/security/create_security_response_pb";
12
+ import * as fintekkers_requests_security_get_fields_response_pb from "../../../fintekkers/requests/security/get_fields_response_pb";
12
13
  import * as fintekkers_requests_util_errors_summary_pb from "../../../fintekkers/requests/util/errors/summary_pb";
14
+ import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
@@ -29,5 +29,9 @@ var fintekkers_requests_security_create_security_request_pb = require('../../../
29
29
  goog.object.extend(proto, fintekkers_requests_security_create_security_request_pb);
30
30
  var fintekkers_requests_security_create_security_response_pb = require('../../../fintekkers/requests/security/create_security_response_pb.js');
31
31
  goog.object.extend(proto, fintekkers_requests_security_create_security_response_pb);
32
+ var fintekkers_requests_security_get_fields_response_pb = require('../../../fintekkers/requests/security/get_fields_response_pb.js');
33
+ goog.object.extend(proto, fintekkers_requests_security_get_fields_response_pb);
32
34
  var fintekkers_requests_util_errors_summary_pb = require('../../../fintekkers/requests/util/errors/summary_pb.js');
33
35
  goog.object.extend(proto, fintekkers_requests_util_errors_summary_pb);
36
+ var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
37
+ goog.object.extend(proto, google_protobuf_empty_pb);
@@ -27,7 +27,9 @@ var ZonedDateTime = /** @class */ (function () {
27
27
  return dateTime;
28
28
  };
29
29
  ZonedDateTime.prototype.toString = function () {
30
- return this.toDateTime().toString();
30
+ var dateTime = this.toDateTime();
31
+ var date = new Date(dateTime.year, dateTime.month - 1, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second);
32
+ return date.toISOString().slice(0, 19).replace(/-/g, '/').replace('T', ' ');
31
33
  };
32
34
  ZonedDateTime.prototype.toProto = function () {
33
35
  return this.proto;
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.js","sourceRoot":"","sources":["datetime.ts"],"names":[],"mappings":";;;AAAA,yFAAyF;AACzF,6EAAyE;AACzE,+BAAiC;AAEjC;IAGE,uBAAY,KAA0B;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,mCAAW,GAAX;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,kCAAU,GAAV;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,sCAAc,GAAd;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,kCAAU,GAAV;QACE,+GAA+G;QAC/G,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEzD,IAAI,QAAQ,GAAG,gBAAQ,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE9F,gDAAgD;QAChD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gCAAQ,GAAR;QACE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,+BAAO,GAAP;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,iBAAG,GAAV;QACE,8EAA8E;QAC9E,IAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,kDAAkD;QAClD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QACrD,IAAM,KAAK,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,kCAAkC;QAElF,sDAAsD;QACtD,IAAM,SAAS,GAAG,IAAI,wBAAS,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAM,cAAc,GAAG,IAAI,wCAAmB,EAAE,CAAC;QACjD,cAAc,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC/C,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEvC,OAAO,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IACH,oBAAC;AAAD,CAAC,AA1DD,IA0DC;AAEQ,sCAAa"}
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["datetime.ts"],"names":[],"mappings":";;;AAAA,yFAAuF;AACvF,6EAAuE;AACvE,+BAA+B;AAE/B;IAGE,uBAAY,KAA0B;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,mCAAW,GAAX;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,kCAAU,GAAV;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,sCAAc,GAAd;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,kCAAU,GAAV;QACE,+GAA+G;QAC/G,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEzD,IAAI,QAAQ,GAAG,gBAAQ,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE9F,gDAAgD;QAChD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gCAAQ,GAAR;QACE,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxH,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,+BAAO,GAAP;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,iBAAG,GAAV;QACE,8EAA8E;QAC9E,IAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,kDAAkD;QAClD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QACrD,IAAM,KAAK,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,kCAAkC;QAElF,sDAAsD;QACtD,IAAM,SAAS,GAAG,IAAI,wBAAS,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAM,cAAc,GAAG,IAAI,wCAAmB,EAAE,CAAC;QACjD,cAAc,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC/C,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEvC,OAAO,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IACH,oBAAC;AAAD,CAAC,AA5DD,IA4DC;AAEQ,sCAAa"}
@@ -42,11 +42,23 @@ var position_util_pb_1 = require("../../../fintekkers/models/position/position_u
42
42
  var position_1 = require("../position/position");
43
43
  var datetime_1 = require("./datetime");
44
44
  var any_pb_1 = require("google-protobuf/google/protobuf/any_pb");
45
+ var local_timestamp_pb_1 = require("../../../fintekkers/models/util/local_timestamp_pb");
46
+ var timestamp_pb_js_1 = require("google-protobuf/google/protobuf/timestamp_pb.js");
47
+ // import Timestamp from "google-protobuf/google/protobuf/timestamp_pb";
45
48
  test('test the date time', function () { return __awaiter(void 0, void 0, void 0, function () {
46
- var now, nowProto, nowPacked, position, field1, pos, timestampStr;
49
+ var localTimestampProto, timestamp, now, nowTimestampString, nowProto, nowPacked, position, field1, pos, timestampStr;
47
50
  return __generator(this, function (_a) {
48
- now = datetime_1.ZonedDateTime.now();
49
- expect(now.toDateTime().toString()).toBe(now.toString());
51
+ localTimestampProto = new local_timestamp_pb_1.LocalTimestampProto();
52
+ timestamp = new timestamp_pb_js_1.Timestamp();
53
+ timestamp.setSeconds(1643723400); // Set the seconds
54
+ timestamp.setNanos(0); // Set the nanoseconds
55
+ localTimestampProto.setTimestamp(timestamp);
56
+ // Set the time zone
57
+ localTimestampProto.setTimeZone('America/New_York');
58
+ now = new datetime_1.ZonedDateTime(localTimestampProto);
59
+ nowTimestampString = now.toDateTime().toString();
60
+ expect(nowTimestampString).toContain("2022-02-01");
61
+ expect(nowTimestampString).toContain("08:50:00");
50
62
  nowProto = now.toProto();
51
63
  nowPacked = new any_pb_1.Any();
52
64
  nowPacked.setTypeUrl("DUMMYTYPE_DATE");
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.test.js","sourceRoot":"","sources":["datetime.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAA0E;AAC1E,+EAAsH;AACtH,yFAAqF;AACrF,iDAAgD;AAChD,uCAA2C;AAC3C,iEAA6D;AAE7D,IAAI,CAAC,oBAAoB,EAAE;;;QAEjB,GAAG,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnD,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACzB,SAAS,GAAG,IAAI,YAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAEzC,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QAErC,iBAAiB;QACjB,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,QAAQ,CAAC,eAAe,CAAC,+BAAiB,CAAC,YAAY,CAAC,CAAC;QACzD,QAAQ,CAAC,eAAe,CAAC,+BAAiB,CAAC,WAAW,CAAC,CAAC;QAGlD,MAAM,GAAG,IAAI,gCAAa,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErB,GAAG,GAAG,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7B,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEjD,wBAAwB;QACxB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;;;KAC7F,CAAC,CAAC"}
1
+ {"version":3,"file":"datetime.test.js","sourceRoot":"","sources":["datetime.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAA0E;AAC1E,+EAAsH;AACtH,yFAAqF;AACrF,iDAAgD;AAChD,uCAA2C;AAC3C,iEAA6D;AAC7D,yFAAuF;AACvF,mFAA4E;AAC5E,wEAAwE;AAExE,IAAI,CAAC,oBAAoB,EAAE;;;QACjB,mBAAmB,GAAG,IAAI,wCAAmB,EAAE,CAAC;QAChD,SAAS,GAAG,IAAI,2BAAS,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB;QACpD,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAC7C,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEhD,oBAAoB;QAChB,mBAAmB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC9C,GAAG,GAAG,IAAI,wBAAa,CAAC,mBAAmB,CAAC,CAAC;QAE/C,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE3C,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACzB,SAAS,GAAG,IAAI,YAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAEzC,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QAErC,iBAAiB;QACjB,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,QAAQ,CAAC,eAAe,CAAC,+BAAiB,CAAC,YAAY,CAAC,CAAC;QACzD,QAAQ,CAAC,eAAe,CAAC,+BAAiB,CAAC,WAAW,CAAC,CAAC;QAGlD,MAAM,GAAG,IAAI,gCAAa,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErB,GAAG,GAAG,IAAI,mBAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7B,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEjD,wBAAwB;QACxB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;;;KAC7F,CAAC,CAAC"}
@@ -5,11 +5,24 @@ import { FieldMapEntry } from '../../../fintekkers/models/position/position_util
5
5
  import { Position } from "../position/position";
6
6
  import { ZonedDateTime } from './datetime';
7
7
  import { Any } from 'google-protobuf/google/protobuf/any_pb';
8
+ import {LocalTimestampProto} from "../../../fintekkers/models/util/local_timestamp_pb";
9
+ import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb.js';
10
+ // import Timestamp from "google-protobuf/google/protobuf/timestamp_pb";
8
11
 
9
12
  test('test the date time', async () => {
10
-
11
- const now = ZonedDateTime.now();
12
- expect(now.toDateTime().toString()).toBe(now.toString());
13
+ const localTimestampProto = new LocalTimestampProto();
14
+ const timestamp = new Timestamp();
15
+ timestamp.setSeconds(1643723400); // Set the seconds
16
+ timestamp.setNanos(0); // Set the nanoseconds
17
+ localTimestampProto.setTimestamp(timestamp);
18
+
19
+ // Set the time zone
20
+ localTimestampProto.setTimeZone('America/New_York');
21
+ const now = new ZonedDateTime(localTimestampProto);
22
+
23
+ let nowTimestampString = now.toDateTime().toString();
24
+ expect(nowTimestampString).toContain("2022-02-01");
25
+ expect(nowTimestampString).toContain("08:50:00");
13
26
 
14
27
  const nowProto = now.toProto();
15
28
  const nowPacked = new Any();
@@ -1,6 +1,6 @@
1
- import { LocalTimestampProto } from '../../../fintekkers/models/util/local_timestamp_pb';
2
- import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb';
3
- import { DateTime } from 'luxon';
1
+ import {LocalTimestampProto} from '../../../fintekkers/models/util/local_timestamp_pb';
2
+ import {Timestamp} from 'google-protobuf/google/protobuf/timestamp_pb';
3
+ import {DateTime} from 'luxon';
4
4
 
5
5
  class ZonedDateTime {
6
6
  private proto: LocalTimestampProto;
@@ -34,7 +34,9 @@ class ZonedDateTime {
34
34
  }
35
35
 
36
36
  toString(): string {
37
- return this.toDateTime().toString();
37
+ const dateTime = this.toDateTime();
38
+ const date = new Date(dateTime.year, dateTime.month - 1, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second);
39
+ return date.toISOString().slice(0, 19).replace(/-/g, '/').replace('T', ' ');
38
40
  }
39
41
 
40
42
  toProto(): LocalTimestampProto {
@@ -48,7 +48,7 @@ test('test getting a position against the api.fintekkers.org position service',
48
48
  return __generator(this, function (_a) {
49
49
  switch (_a.label) {
50
50
  case 0:
51
- fields = [field_pb_1.FieldProto.SECURITY_ID, field_pb_1.FieldProto.TRADE_DATE, field_pb_1.FieldProto.PRODUCT_TYPE, field_pb_1.FieldProto.PORTFOLIO, field_pb_1.FieldProto.PRODUCT_TYPE];
51
+ fields = [field_pb_1.FieldProto.PRODUCT_TYPE, field_pb_1.FieldProto.PORTFOLIO, field_pb_1.FieldProto.PRODUCT_TYPE];
52
52
  measures = [measure_pb_1.MeasureProto.DIRECTED_QUANTITY];
53
53
  return [4 /*yield*/, testPosition(fields, measures)];
54
54
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"position.test.js","sourceRoot":"","sources":["position.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"position.test.js","sourceRoot":"","sources":["position.test.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { PositionService } from '../../services/position-service/PositionService
9
9
  import { QueryPositionRequest } from '../../requests/position/QueryPositionRequest';
10
10
 
11
11
  test('test getting a position against the api.fintekkers.org position service', async () => {
12
- let fields = [FieldProto.SECURITY_ID, FieldProto.TRADE_DATE, FieldProto.PRODUCT_TYPE, FieldProto.PORTFOLIO, FieldProto.PRODUCT_TYPE];
12
+ let fields = [FieldProto.PRODUCT_TYPE, FieldProto.PORTFOLIO, FieldProto.PRODUCT_TYPE];
13
13
  let measures = [MeasureProto.DIRECTED_QUANTITY];
14
14
  const isTrue = await testPosition(fields, measures);
15
15
  expect(isTrue).toBe(true);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fintekkers/ledger-models",
3
3
  "todo": "Replace the version with build script version number",
4
- "version": "0.1.91",
4
+ "version": "0.1.93",
5
5
  "description": "ledger model protos ",
6
6
  "authors": [
7
7
  "David Doherty",