| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 'use strict'
- const OError = require('@overleaf/o-error')
- const check = require('check-types')
- const { Blob } = require('overleaf-editor-core')
- const assert = check.assert
- const MONGO_ID_REGEXP = /^[0-9a-f]{24}$/
- const POSTGRES_ID_REGEXP = /^[1-9][0-9]{0,9}$/
- const MONGO_OR_POSTGRES_ID_REGEXP = /^([0-9a-f]{24}|[1-9][0-9]{0,9})$/
- function transaction(transaction, message) {
- assert.function(transaction, message)
- }
- function blobHash(arg, message) {
- try {
- assert.match(arg, Blob.HEX_HASH_RX, message)
- } catch (error) {
- throw OError.tag(error, message, { arg })
- }
- }
- /**
- * A project id is a string that contains either an integer (for projects stored in Postgres) or 24
- * hex digits (for projects stored in Mongo)
- */
- function projectId(arg, message) {
- try {
- assert.match(arg, MONGO_OR_POSTGRES_ID_REGEXP, message)
- } catch (error) {
- throw OError.tag(error, message, { arg })
- }
- }
- /**
- * A chunk id is a string that contains either an integer (for projects stored in Postgres) or 24
- * hex digits (for projects stored in Mongo)
- */
- function chunkId(arg, message) {
- try {
- assert.match(arg, MONGO_OR_POSTGRES_ID_REGEXP, message)
- } catch (error) {
- throw OError.tag(error, message, { arg })
- }
- }
- function mongoId(arg, message) {
- try {
- assert.match(arg, MONGO_ID_REGEXP, message)
- } catch (error) {
- throw OError.tag(error, message, { arg })
- }
- }
- function postgresId(arg, message) {
- try {
- assert.match(arg, POSTGRES_ID_REGEXP, message)
- } catch (error) {
- throw OError.tag(error, message, { arg })
- }
- }
- module.exports = {
- ...assert,
- transaction,
- blobHash,
- projectId,
- chunkId,
- mongoId,
- postgresId,
- MONGO_ID_REGEXP,
- POSTGRES_ID_REGEXP,
- }
|