@htdangkhoa/google-ads
Version:
Google Ads API client for Node.js
681 lines (680 loc) • 30.2 kB
JavaScript
;
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v1.181.2
// protoc v3.21.12
// source: google/ads/googleads/v21/services/campaign_draft_service.proto
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CampaignDraftServiceClient = exports.CampaignDraftServiceService = exports.ListCampaignDraftAsyncErrorsResponse = exports.ListCampaignDraftAsyncErrorsRequest = exports.MutateCampaignDraftResult = exports.MutateCampaignDraftsResponse = exports.CampaignDraftOperation = exports.PromoteCampaignDraftRequest = exports.MutateCampaignDraftsRequest = void 0;
/* eslint-disable */
const grpc_js_1 = require("@grpc/grpc-js");
const minimal_js_1 = __importDefault(require("protobufjs/minimal.js"));
const operations_js_1 = require("../../../../longrunning/operations.js");
const field_mask_js_1 = require("../../../../protobuf/field_mask.js");
const status_js_1 = require("../../../../rpc/status.js");
const response_content_type_js_1 = require("../enums/response_content_type.js");
const campaign_draft_js_1 = require("../resources/campaign_draft.js");
function createBaseMutateCampaignDraftsRequest() {
return { customer_id: "", operations: [], partial_failure: false, validate_only: false, response_content_type: 0 };
}
exports.MutateCampaignDraftsRequest = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.customer_id !== undefined && message.customer_id !== "") {
writer.uint32(10).string(message.customer_id);
}
if (message.operations !== undefined && message.operations.length !== 0) {
for (const v of message.operations) {
exports.CampaignDraftOperation.encode(v, writer.uint32(18).fork()).ldelim();
}
}
if (message.partial_failure !== undefined && message.partial_failure !== false) {
writer.uint32(24).bool(message.partial_failure);
}
if (message.validate_only !== undefined && message.validate_only !== false) {
writer.uint32(32).bool(message.validate_only);
}
if (message.response_content_type !== undefined && message.response_content_type !== 0) {
writer.uint32(40).int32(message.response_content_type);
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMutateCampaignDraftsRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.customer_id = reader.string();
continue;
case 2:
if (tag !== 18) {
break;
}
message.operations.push(exports.CampaignDraftOperation.decode(reader, reader.uint32()));
continue;
case 3:
if (tag !== 24) {
break;
}
message.partial_failure = reader.bool();
continue;
case 4:
if (tag !== 32) {
break;
}
message.validate_only = reader.bool();
continue;
case 5:
if (tag !== 40) {
break;
}
message.response_content_type = reader.int32();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
customer_id: isSet(object.customer_id) ? globalThis.String(object.customer_id) : "",
operations: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.operations)
? object.operations.map((e) => exports.CampaignDraftOperation.fromJSON(e))
: [],
partial_failure: isSet(object.partial_failure) ? globalThis.Boolean(object.partial_failure) : false,
validate_only: isSet(object.validate_only) ? globalThis.Boolean(object.validate_only) : false,
response_content_type: isSet(object.response_content_type)
? (0, response_content_type_js_1.responseContentTypeEnum_ResponseContentTypeFromJSON)(object.response_content_type)
: 0,
};
},
toJSON(message) {
var _a;
const obj = {};
if (message.customer_id !== undefined && message.customer_id !== "") {
obj.customer_id = message.customer_id;
}
if ((_a = message.operations) === null || _a === void 0 ? void 0 : _a.length) {
obj.operations = message.operations.map((e) => exports.CampaignDraftOperation.toJSON(e));
}
if (message.partial_failure !== undefined && message.partial_failure !== false) {
obj.partial_failure = message.partial_failure;
}
if (message.validate_only !== undefined && message.validate_only !== false) {
obj.validate_only = message.validate_only;
}
if (message.response_content_type !== undefined && message.response_content_type !== 0) {
obj.response_content_type = (0, response_content_type_js_1.responseContentTypeEnum_ResponseContentTypeToJSON)(message.response_content_type);
}
return obj;
},
create(base) {
return exports.MutateCampaignDraftsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a, _b, _c, _d, _e;
const message = createBaseMutateCampaignDraftsRequest();
message.customer_id = (_a = object.customer_id) !== null && _a !== void 0 ? _a : "";
message.operations = ((_b = object.operations) === null || _b === void 0 ? void 0 : _b.map((e) => exports.CampaignDraftOperation.fromPartial(e))) || [];
message.partial_failure = (_c = object.partial_failure) !== null && _c !== void 0 ? _c : false;
message.validate_only = (_d = object.validate_only) !== null && _d !== void 0 ? _d : false;
message.response_content_type = (_e = object.response_content_type) !== null && _e !== void 0 ? _e : 0;
return message;
},
};
function createBasePromoteCampaignDraftRequest() {
return { campaign_draft: "", validate_only: false };
}
exports.PromoteCampaignDraftRequest = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.campaign_draft !== undefined && message.campaign_draft !== "") {
writer.uint32(10).string(message.campaign_draft);
}
if (message.validate_only !== undefined && message.validate_only !== false) {
writer.uint32(16).bool(message.validate_only);
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePromoteCampaignDraftRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.campaign_draft = reader.string();
continue;
case 2:
if (tag !== 16) {
break;
}
message.validate_only = reader.bool();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
campaign_draft: isSet(object.campaign_draft) ? globalThis.String(object.campaign_draft) : "",
validate_only: isSet(object.validate_only) ? globalThis.Boolean(object.validate_only) : false,
};
},
toJSON(message) {
const obj = {};
if (message.campaign_draft !== undefined && message.campaign_draft !== "") {
obj.campaign_draft = message.campaign_draft;
}
if (message.validate_only !== undefined && message.validate_only !== false) {
obj.validate_only = message.validate_only;
}
return obj;
},
create(base) {
return exports.PromoteCampaignDraftRequest.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a, _b;
const message = createBasePromoteCampaignDraftRequest();
message.campaign_draft = (_a = object.campaign_draft) !== null && _a !== void 0 ? _a : "";
message.validate_only = (_b = object.validate_only) !== null && _b !== void 0 ? _b : false;
return message;
},
};
function createBaseCampaignDraftOperation() {
return { update_mask: undefined, create: undefined, update: undefined, remove: undefined };
}
exports.CampaignDraftOperation = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.update_mask !== undefined) {
field_mask_js_1.FieldMask.encode(field_mask_js_1.FieldMask.wrap(message.update_mask), writer.uint32(34).fork()).ldelim();
}
if (message.create !== undefined) {
campaign_draft_js_1.CampaignDraft.encode(message.create, writer.uint32(10).fork()).ldelim();
}
if (message.update !== undefined) {
campaign_draft_js_1.CampaignDraft.encode(message.update, writer.uint32(18).fork()).ldelim();
}
if (message.remove !== undefined) {
writer.uint32(26).string(message.remove);
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseCampaignDraftOperation();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 4:
if (tag !== 34) {
break;
}
message.update_mask = field_mask_js_1.FieldMask.unwrap(field_mask_js_1.FieldMask.decode(reader, reader.uint32()));
continue;
case 1:
if (tag !== 10) {
break;
}
message.create = campaign_draft_js_1.CampaignDraft.decode(reader, reader.uint32());
continue;
case 2:
if (tag !== 18) {
break;
}
message.update = campaign_draft_js_1.CampaignDraft.decode(reader, reader.uint32());
continue;
case 3:
if (tag !== 26) {
break;
}
message.remove = reader.string();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
update_mask: isSet(object.update_mask) ? field_mask_js_1.FieldMask.unwrap(field_mask_js_1.FieldMask.fromJSON(object.update_mask)) : undefined,
create: isSet(object.create) ? campaign_draft_js_1.CampaignDraft.fromJSON(object.create) : undefined,
update: isSet(object.update) ? campaign_draft_js_1.CampaignDraft.fromJSON(object.update) : undefined,
remove: isSet(object.remove) ? globalThis.String(object.remove) : undefined,
};
},
toJSON(message) {
const obj = {};
if (message.update_mask !== undefined) {
obj.update_mask = field_mask_js_1.FieldMask.toJSON(field_mask_js_1.FieldMask.wrap(message.update_mask));
}
if (message.create !== undefined) {
obj.create = campaign_draft_js_1.CampaignDraft.toJSON(message.create);
}
if (message.update !== undefined) {
obj.update = campaign_draft_js_1.CampaignDraft.toJSON(message.update);
}
if (message.remove !== undefined) {
obj.remove = message.remove;
}
return obj;
},
create(base) {
return exports.CampaignDraftOperation.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a, _b;
const message = createBaseCampaignDraftOperation();
message.update_mask = (_a = object.update_mask) !== null && _a !== void 0 ? _a : undefined;
message.create = (object.create !== undefined && object.create !== null)
? campaign_draft_js_1.CampaignDraft.fromPartial(object.create)
: undefined;
message.update = (object.update !== undefined && object.update !== null)
? campaign_draft_js_1.CampaignDraft.fromPartial(object.update)
: undefined;
message.remove = (_b = object.remove) !== null && _b !== void 0 ? _b : undefined;
return message;
},
};
function createBaseMutateCampaignDraftsResponse() {
return { partial_failure_error: undefined, results: [] };
}
exports.MutateCampaignDraftsResponse = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.partial_failure_error !== undefined) {
status_js_1.Status.encode(message.partial_failure_error, writer.uint32(26).fork()).ldelim();
}
if (message.results !== undefined && message.results.length !== 0) {
for (const v of message.results) {
exports.MutateCampaignDraftResult.encode(v, writer.uint32(18).fork()).ldelim();
}
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMutateCampaignDraftsResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 3:
if (tag !== 26) {
break;
}
message.partial_failure_error = status_js_1.Status.decode(reader, reader.uint32());
continue;
case 2:
if (tag !== 18) {
break;
}
message.results.push(exports.MutateCampaignDraftResult.decode(reader, reader.uint32()));
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
partial_failure_error: isSet(object.partial_failure_error)
? status_js_1.Status.fromJSON(object.partial_failure_error)
: undefined,
results: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.results)
? object.results.map((e) => exports.MutateCampaignDraftResult.fromJSON(e))
: [],
};
},
toJSON(message) {
var _a;
const obj = {};
if (message.partial_failure_error !== undefined) {
obj.partial_failure_error = status_js_1.Status.toJSON(message.partial_failure_error);
}
if ((_a = message.results) === null || _a === void 0 ? void 0 : _a.length) {
obj.results = message.results.map((e) => exports.MutateCampaignDraftResult.toJSON(e));
}
return obj;
},
create(base) {
return exports.MutateCampaignDraftsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a;
const message = createBaseMutateCampaignDraftsResponse();
message.partial_failure_error =
(object.partial_failure_error !== undefined && object.partial_failure_error !== null)
? status_js_1.Status.fromPartial(object.partial_failure_error)
: undefined;
message.results = ((_a = object.results) === null || _a === void 0 ? void 0 : _a.map((e) => exports.MutateCampaignDraftResult.fromPartial(e))) || [];
return message;
},
};
function createBaseMutateCampaignDraftResult() {
return { resource_name: "", campaign_draft: undefined };
}
exports.MutateCampaignDraftResult = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.resource_name !== undefined && message.resource_name !== "") {
writer.uint32(10).string(message.resource_name);
}
if (message.campaign_draft !== undefined) {
campaign_draft_js_1.CampaignDraft.encode(message.campaign_draft, writer.uint32(18).fork()).ldelim();
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMutateCampaignDraftResult();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.resource_name = reader.string();
continue;
case 2:
if (tag !== 18) {
break;
}
message.campaign_draft = campaign_draft_js_1.CampaignDraft.decode(reader, reader.uint32());
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
resource_name: isSet(object.resource_name) ? globalThis.String(object.resource_name) : "",
campaign_draft: isSet(object.campaign_draft) ? campaign_draft_js_1.CampaignDraft.fromJSON(object.campaign_draft) : undefined,
};
},
toJSON(message) {
const obj = {};
if (message.resource_name !== undefined && message.resource_name !== "") {
obj.resource_name = message.resource_name;
}
if (message.campaign_draft !== undefined) {
obj.campaign_draft = campaign_draft_js_1.CampaignDraft.toJSON(message.campaign_draft);
}
return obj;
},
create(base) {
return exports.MutateCampaignDraftResult.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a;
const message = createBaseMutateCampaignDraftResult();
message.resource_name = (_a = object.resource_name) !== null && _a !== void 0 ? _a : "";
message.campaign_draft = (object.campaign_draft !== undefined && object.campaign_draft !== null)
? campaign_draft_js_1.CampaignDraft.fromPartial(object.campaign_draft)
: undefined;
return message;
},
};
function createBaseListCampaignDraftAsyncErrorsRequest() {
return { resource_name: "", page_token: "", page_size: 0 };
}
exports.ListCampaignDraftAsyncErrorsRequest = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.resource_name !== undefined && message.resource_name !== "") {
writer.uint32(10).string(message.resource_name);
}
if (message.page_token !== undefined && message.page_token !== "") {
writer.uint32(18).string(message.page_token);
}
if (message.page_size !== undefined && message.page_size !== 0) {
writer.uint32(24).int32(message.page_size);
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseListCampaignDraftAsyncErrorsRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.resource_name = reader.string();
continue;
case 2:
if (tag !== 18) {
break;
}
message.page_token = reader.string();
continue;
case 3:
if (tag !== 24) {
break;
}
message.page_size = reader.int32();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
resource_name: isSet(object.resource_name) ? globalThis.String(object.resource_name) : "",
page_token: isSet(object.page_token) ? globalThis.String(object.page_token) : "",
page_size: isSet(object.page_size) ? globalThis.Number(object.page_size) : 0,
};
},
toJSON(message) {
const obj = {};
if (message.resource_name !== undefined && message.resource_name !== "") {
obj.resource_name = message.resource_name;
}
if (message.page_token !== undefined && message.page_token !== "") {
obj.page_token = message.page_token;
}
if (message.page_size !== undefined && message.page_size !== 0) {
obj.page_size = Math.round(message.page_size);
}
return obj;
},
create(base) {
return exports.ListCampaignDraftAsyncErrorsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a, _b, _c;
const message = createBaseListCampaignDraftAsyncErrorsRequest();
message.resource_name = (_a = object.resource_name) !== null && _a !== void 0 ? _a : "";
message.page_token = (_b = object.page_token) !== null && _b !== void 0 ? _b : "";
message.page_size = (_c = object.page_size) !== null && _c !== void 0 ? _c : 0;
return message;
},
};
function createBaseListCampaignDraftAsyncErrorsResponse() {
return { errors: [], next_page_token: "" };
}
exports.ListCampaignDraftAsyncErrorsResponse = {
encode(message, writer = minimal_js_1.default.Writer.create()) {
if (message.errors !== undefined && message.errors.length !== 0) {
for (const v of message.errors) {
status_js_1.Status.encode(v, writer.uint32(10).fork()).ldelim();
}
}
if (message.next_page_token !== undefined && message.next_page_token !== "") {
writer.uint32(18).string(message.next_page_token);
}
return writer;
},
decode(input, length) {
const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseListCampaignDraftAsyncErrorsResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
if (tag !== 10) {
break;
}
message.errors.push(status_js_1.Status.decode(reader, reader.uint32()));
continue;
case 2:
if (tag !== 18) {
break;
}
message.next_page_token = reader.string();
continue;
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skipType(tag & 7);
}
return message;
},
fromJSON(object) {
return {
errors: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.errors) ? object.errors.map((e) => status_js_1.Status.fromJSON(e)) : [],
next_page_token: isSet(object.next_page_token) ? globalThis.String(object.next_page_token) : "",
};
},
toJSON(message) {
var _a;
const obj = {};
if ((_a = message.errors) === null || _a === void 0 ? void 0 : _a.length) {
obj.errors = message.errors.map((e) => status_js_1.Status.toJSON(e));
}
if (message.next_page_token !== undefined && message.next_page_token !== "") {
obj.next_page_token = message.next_page_token;
}
return obj;
},
create(base) {
return exports.ListCampaignDraftAsyncErrorsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
},
fromPartial(object) {
var _a, _b;
const message = createBaseListCampaignDraftAsyncErrorsResponse();
message.errors = ((_a = object.errors) === null || _a === void 0 ? void 0 : _a.map((e) => status_js_1.Status.fromPartial(e))) || [];
message.next_page_token = (_b = object.next_page_token) !== null && _b !== void 0 ? _b : "";
return message;
},
};
exports.CampaignDraftServiceService = {
/**
* Creates, updates, or removes campaign drafts. Operation statuses are
* returned.
*
* List of thrown errors:
* [AuthenticationError]()
* [AuthorizationError]()
* [CampaignDraftError]()
* [DatabaseError]()
* [FieldError]()
* [HeaderError]()
* [InternalError]()
* [MutateError]()
* [QuotaError]()
* [RequestError]()
*/
mutateCampaignDrafts: {
path: "/google.ads.googleads.v21.services.CampaignDraftService/MutateCampaignDrafts",
requestStream: false,
responseStream: false,
requestSerialize: (value) => Buffer.from(exports.MutateCampaignDraftsRequest.encode(value).finish()),
requestDeserialize: (value) => exports.MutateCampaignDraftsRequest.decode(value),
responseSerialize: (value) => Buffer.from(exports.MutateCampaignDraftsResponse.encode(value).finish()),
responseDeserialize: (value) => exports.MutateCampaignDraftsResponse.decode(value),
},
/**
* Promotes the changes in a draft back to the base campaign.
*
* This method returns a Long Running Operation (LRO) indicating if the
* Promote is done. Use [Operations.GetOperation] to poll the LRO until it
* is done. Only a done status is returned in the response. See the status
* in the Campaign Draft resource to determine if the promotion was
* successful. If the LRO failed, use
* [CampaignDraftService.ListCampaignDraftAsyncErrors][google.ads.googleads.v21.services.CampaignDraftService.ListCampaignDraftAsyncErrors]
* to view the list of error reasons.
*
* List of thrown errors:
* [AuthenticationError]()
* [AuthorizationError]()
* [CampaignDraftError]()
* [HeaderError]()
* [InternalError]()
* [QuotaError]()
* [RequestError]()
*/
promoteCampaignDraft: {
path: "/google.ads.googleads.v21.services.CampaignDraftService/PromoteCampaignDraft",
requestStream: false,
responseStream: false,
requestSerialize: (value) => Buffer.from(exports.PromoteCampaignDraftRequest.encode(value).finish()),
requestDeserialize: (value) => exports.PromoteCampaignDraftRequest.decode(value),
responseSerialize: (value) => Buffer.from(operations_js_1.Operation.encode(value).finish()),
responseDeserialize: (value) => operations_js_1.Operation.decode(value),
},
/**
* Returns all errors that occurred during CampaignDraft promote. Throws an
* error if called before campaign draft is promoted.
* Supports standard list paging.
*
* List of thrown errors:
* [AuthenticationError]()
* [AuthorizationError]()
* [HeaderError]()
* [InternalError]()
* [QuotaError]()
* [RequestError]()
*/
listCampaignDraftAsyncErrors: {
path: "/google.ads.googleads.v21.services.CampaignDraftService/ListCampaignDraftAsyncErrors",
requestStream: false,
responseStream: false,
requestSerialize: (value) => Buffer.from(exports.ListCampaignDraftAsyncErrorsRequest.encode(value).finish()),
requestDeserialize: (value) => exports.ListCampaignDraftAsyncErrorsRequest.decode(value),
responseSerialize: (value) => Buffer.from(exports.ListCampaignDraftAsyncErrorsResponse.encode(value).finish()),
responseDeserialize: (value) => exports.ListCampaignDraftAsyncErrorsResponse.decode(value),
},
};
exports.CampaignDraftServiceClient = (0, grpc_js_1.makeGenericClientConstructor)(exports.CampaignDraftServiceService, "google.ads.googleads.v21.services.CampaignDraftService");
function isSet(value) {
return value !== null && value !== undefined;
}