New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

firestore-adapter

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

firestore-adapter - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

126

lib/adapter.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var extractValues = function (input) {
var output = input.map(function (i) { return loopFields(i); });
console.log(JSON.stringify(output));
};
exports.extractValues = extractValues;
var loopFields = function (value) {
var output = {};
Object.keys(value).forEach(function (k) {
var valueField = value[k];
output[k] = valueFromField(valueField);
});
return output;
};
var valueFromField = function (valueField) {
if (isArrayValue(valueField)) {
return valueField.arrayValue.values.map(function (v) { return valueFromField(v); });
/**
* Adapter is a class to convert Firestore data into values without value types.
*/
var Adapter = /** @class */ (function () {
function Adapter(input) {
this.input = input;
}
else if (isMapValue(valueField)) {
return loopFields(valueField.mapValue.fields);
}
else {
return getRawValue(valueField);
}
};
var getRawValue = function (object) {
if (object instanceof Object) {
var key = Object.keys(object)[0];
return object[key];
}
return object;
};
var isArrayValue = function (object) {
return object.hasOwnProperty('arrayValue');
};
var isMapValue = function (object) {
return object.hasOwnProperty('mapValue');
};
Adapter.prototype.convert = function () {
var _this = this;
var output = this.input.map(function (obj) { return _this.extractObject(obj); });
return output;
};
/**
* Extract an `Object`with types and values into pure values
* Each field of Object has its type and value.
* We only need the value
*
* @example
* {
* field1: { {
* stringValue: 'some value' field1: 'some value',
* }, => field2: true,
* field2: { ...
* booleanValue: true }
* },
* ...
* }
*
*/
Adapter.prototype.extractObject = function (value) {
var _this = this;
var output = {};
// Extract value of each field
Object.keys(value).forEach(function (k) {
var valueField = value[k];
output[k] = _this.extractValueField(valueField);
});
return output;
};
/**
* Extract value from a `ValueField`
*
* @param valueField { NullValue | BooleanValue | IntegerValue | DoubleValue | TimestampValue | StringValue | BytesValue | ReferenceValue | GeoPointValue | ArrayValue | MapValue }
*
* @example
* { stringValue: 'some value'} => 'some value'
* { mapValue: {fields: {field1: {stringValue: 'some value'}, ...}}} => {field1: 'some value', ...}
* { arrayValue: {values: [{stringValue: 'some value'}, ...]}} => ['some value']
*/
Adapter.prototype.extractValueField = function (valueField) {
var _this = this;
/**
* `ArrayValue` contains array of ValueField i.e. { values: [{stringValue: 'some value'}, ...] }
* Each item of values should be extracted.
*/
if (this.isArrayValue(valueField)) {
return valueField.arrayValue.values.map(function (v) { return _this.extractValueField(v); });
}
/**
* `MapValue` is an Object which its "fields" is ValueField object i.e. {fields: {field1: {stringValue: 'some value}, ...}}
* Each field should be extracted.
*/
if (this.isMapValue(valueField)) {
return this.extractObject(valueField.mapValue.fields);
}
/**
* `StringValue`, `NullValue`, ...
* valueField can be a string when it's for `id`
*/
if (!(valueField instanceof Object)) {
return valueField;
}
var key = Object.keys(valueField)[0];
return valueField[key];
};
/**
* Check if object is `ArrayValue`
*/
Adapter.prototype.isArrayValue = function (object) {
return object.hasOwnProperty('arrayValue');
};
/**
* Check if object is `MapValue`
*/
Adapter.prototype.isMapValue = function (object) {
return object.hasOwnProperty('mapValue');
};
return Adapter;
}());
exports.Adapter = Adapter;
exports.default = Adapter;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var adapter_1 = require("./adapter");
var adapter_1 = __importDefault(require("./adapter"));
var resource_1 = require("./resource");
adapter_1.extractValues(resource_1.data);
var adapter = new adapter_1.default(resource_1.data);
console.log(JSON.stringify(adapter.convert()));
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.data = [{
city: {
string: {
stringValue: 'WASHINGTON'
},
has_subseccd: {
boolean: {
booleanValue: true
},
sub_name: {
stringValue: 'AMERICAN NATIONAL RED CROSS '
},
have_extracts: {
null: {
nullValue: null
},
score: {
double: {
doubleValue: 523.3892
},
subseccd: {
integer: {
integerValue: '3'
},
geo: {
geoPoint: {
geoPointValue: {
latitude: "123.456",
latitude: 123.456,
longitude: 234.23
}
},
reference: {
referenceValue: 'Reference'
},
array: {

@@ -33,3 +33,4 @@ arrayValue: {

{ timestampValue: Date.now() },
{ arrayValue: {
{
arrayValue: {
values: [

@@ -39,9 +40,11 @@ { stringValue: 'abc' },

]
} },
{ mapValue: {
}
},
{
mapValue: {
fields: {
a1: {
integer: {
integerValue: '1526'
},
b2: {
geoPoint: {
geoPointValue: {

@@ -53,3 +56,4 @@ latitude: 23.4,

}
} }
}
}
]

@@ -61,12 +65,6 @@ },

fields: {
score: {
double: {
doubleValue: 523.3892
},
have_pdfs: {
nullValue: null
},
subseccd: {
integerValue: '3'
},
geo: {
geoPoint: {
geoPointValue: {

@@ -73,0 +71,0 @@ latitude: 123.456,

{
"name": "firestore-adapter",
"version": "1.0.0",
"version": "1.0.1",
"description": "Adapter to convert typed Firestore data into a standard format.",

@@ -9,3 +9,4 @@ "main": "index.js",

"build": "tsc -p .",
"dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts"
"dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts",
"prepublishOnly": "npm run build"
},

@@ -12,0 +13,0 @@ "author": "",

@@ -92,1 +92,3 @@ import { ValueField, ArrayValue, MapValue } from './models';

}
export default Adapter

@@ -1,2 +0,2 @@

import { Adapter } from './adapter';
import Adapter from './adapter';
import { data } from './resource';

@@ -3,0 +3,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc