chrono-forge
Version:
A comprehensive framework for building resilient Temporal workflows, advanced state management, and real-time streaming activities in TypeScript. Designed for a seamless developer experience with powerful abstractions, dynamic orchestration, and full cont
78 lines (77 loc) • 3.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setState = exports.clearEntities = exports.deleteNormalizedEntities = exports.updateNormalizedEntities = exports.deleteEntities = exports.deleteEntity = exports.updateEntitiesPartial = exports.updateEntities = exports.updateEntityPartial = exports.updateEntity = exports.actionNames = exports.SET_STATE = exports.DELETE_ENTITIES = exports.UPDATE_ENTITIES_PARTIAL = exports.UPDATE_ENTITIES = void 0;
exports.getSchema = getSchema;
const entities_1 = require("./entities");
const normalizr_1 = require("normalizr");
const SchemaManager_1 = require("../store/SchemaManager");
exports.UPDATE_ENTITIES = 'entities.upsertEntities';
exports.UPDATE_ENTITIES_PARTIAL = 'entities.partialUpdates';
exports.DELETE_ENTITIES = 'entities.deleteEntities';
exports.SET_STATE = 'entities.setState';
exports.actionNames = {
UPDATE_ENTITIES: exports.UPDATE_ENTITIES,
UPDATE_ENTITIES_PARTIAL: exports.UPDATE_ENTITIES_PARTIAL,
DELETE_ENTITIES: exports.DELETE_ENTITIES,
SET_STATE: exports.SET_STATE
};
const updateEntity = (entity, entityName) => (0, exports.updateEntities)([entity], entityName);
exports.updateEntity = updateEntity;
const updateEntityPartial = (entity, entityName, strategy = '$merge') => (0, exports.updateEntitiesPartial)([entity], entityName, strategy);
exports.updateEntityPartial = updateEntityPartial;
const updateEntities = (entities, entityName) => (0, exports.updateNormalizedEntities)((0, normalizr_1.normalize)(Array.isArray(entities) ? entities : [entities], [getSchema(entityName)]).entities);
exports.updateEntities = updateEntities;
const updateEntitiesPartial = (entities, entityName, strategy = '$merge') => ({
type: exports.UPDATE_ENTITIES_PARTIAL,
entities: (0, normalizr_1.normalize)(Array.isArray(entities) ? entities : [entities], [getSchema(entityName)])
.entities,
strategy
});
exports.updateEntitiesPartial = updateEntitiesPartial;
const deleteEntity = (entity, entityName) => (0, exports.deleteEntities)([entity], entityName);
exports.deleteEntity = deleteEntity;
const deleteEntities = (entities, entityName) => (0, exports.deleteNormalizedEntities)((0, normalizr_1.normalize)(entities, [getSchema(entityName)]).entities);
exports.deleteEntities = deleteEntities;
const updateNormalizedEntities = (entities, strategy = '$merge') => ({
type: exports.UPDATE_ENTITIES,
entities,
strategy
});
exports.updateNormalizedEntities = updateNormalizedEntities;
const deleteNormalizedEntities = (entities) => ({
type: exports.DELETE_ENTITIES,
entities
});
exports.deleteNormalizedEntities = deleteNormalizedEntities;
const clearEntities = (entities = { ...entities_1.defaultState }) => ({
type: exports.SET_STATE,
entities
});
exports.clearEntities = clearEntities;
const setState = (entities = {}) => ({
type: exports.SET_STATE,
entities
});
exports.setState = setState;
function getSchema(entityName) {
const schemas = SchemaManager_1.SchemaManager.getInstance().getSchemas();
const schema = schemas[entityName];
if (!schema) {
throw new Error(`Schema for ${entityName} not found.`);
}
return schema;
}
exports.default = {
actionNames: exports.actionNames,
getSchema,
setState: exports.setState,
updateEntity: exports.updateEntity,
updateEntities: exports.updateEntities,
deleteEntity: exports.deleteEntity,
deleteEntities: exports.deleteEntities,
clearEntities: exports.clearEntities,
updateEntityPartial: exports.updateEntityPartial,
updateEntitiesPartial: exports.updateEntitiesPartial,
updateNormalizedEntities: exports.updateNormalizedEntities,
deleteNormalizedEntities: exports.deleteNormalizedEntities
};