@oap75/utils
Version:
JavaScript utils for Subsocial blockchain.
30 lines (29 loc) • 1.26 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPostIdFromSlug = exports.createPostSlug = void 0;
const string_1 = require("./string");
const slugify_1 = __importDefault(require("@sindresorhus/slugify"));
const summarize_1 = require("./summarize");
const memoize_1 = __importDefault(require("lodash/memoize"));
const MAX_SLUG_LENGTH = 60;
const SLUG_SEPARATOR = '-';
exports.createPostSlug = (0, memoize_1.default)((postId, content) => {
let slug = '' + postId;
if (content) {
const { title, body } = content;
const titleOrBody = (0, string_1.nonEmptyStr)(title) ? title : body;
const summary = (0, summarize_1.summarize)(titleOrBody, { limit: MAX_SLUG_LENGTH, omission: '' });
const slugifiedSummary = (0, slugify_1.default)(summary, { separator: SLUG_SEPARATOR });
if ((0, string_1.nonEmptyStr)(slugifiedSummary)) {
slug = slugifiedSummary + '-' + slug;
}
}
return slug;
});
const getPostIdFromSlug = (slug) => {
return slug.split(SLUG_SEPARATOR).pop();
};
exports.getPostIdFromSlug = getPostIdFromSlug;