functional-google-cloud
Version:
Google Cloud Utilities functions in Functional Programming Style
40 lines • 2.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.table = exports.models = exports.modelAndConditions = exports.condition = exports.operation = exports.modelAndUpdate = exports.model = exports.modelData = exports.modelBase = exports.nonModelObject = exports.id = exports.nonEmptyString = void 0;
const fast_check_1 = __importDefault(require("fast-check"));
const ramda_1 = require("ramda");
exports.nonEmptyString = () => fast_check_1.default.hexaString(1, 128);
exports.id = () => fast_check_1.default.hexaString(16, 16);
exports.nonModelObject = () => fast_check_1.default.anything().filter((object) => !object || !object.id);
exports.modelBase = () => fast_check_1.default.record({
id: exports.id(),
});
exports.modelData = () => fast_check_1.default.object({
maxDepth: 1,
key: fast_check_1.default.hexaString(1, 16),
values: [fast_check_1.default.string(), fast_check_1.default.integer()],
});
exports.model = () => fast_check_1.default
.tuple(exports.modelBase(), exports.modelData())
.map(([base, content]) => (Object.assign(Object.assign({}, base), content)));
exports.modelAndUpdate = () => fast_check_1.default.tuple(exports.model(), exports.model()).map(([model, update]) => [
model,
Object.assign(Object.assign({}, update), { id: model.id }),
]);
exports.operation = () => fast_check_1.default.constantFrom('==');
exports.condition = () => fast_check_1.default.tuple(exports.nonEmptyString(), exports.operation(), exports.nonEmptyString());
exports.modelAndConditions = () => exports.model()
.chain((model) => {
const modelKeys = ramda_1.keys(model);
return fast_check_1.default.tuple(fast_check_1.default.constant(model), fast_check_1.default.subarray(modelKeys, 1, modelKeys.length));
})
.map(([model, keys]) => [
model,
keys.map((key) => [key, '==', model[key]]),
]);
exports.models = () => fast_check_1.default.array(exports.model(), 2, 16);
exports.table = () => exports.id();
//# sourceMappingURL=Arbitraries.js.map