Allowed shorter instanceId strings
This commit is contained in:
parent
a1712fce4a
commit
d887dad5d4
2 changed files with 27 additions and 10 deletions
|
@ -2,7 +2,7 @@ import {privateAPI, setPrivateAPI} from '@theatre/core/privateAPIs'
|
||||||
import Project from '@theatre/core/projects/Project'
|
import Project from '@theatre/core/projects/Project'
|
||||||
import type {ISheet} from '@theatre/core/sheets/TheatreSheet'
|
import type {ISheet} from '@theatre/core/sheets/TheatreSheet'
|
||||||
import type {ProjectAddress} from '@theatre/shared/utils/addresses'
|
import type {ProjectAddress} from '@theatre/shared/utils/addresses'
|
||||||
import {validateName} from '@theatre/shared/utils/sanitizers'
|
import {validateInstanceId} from '@theatre/shared/utils/sanitizers'
|
||||||
import {validateAndSanitiseSlashedPathOrThrow} from '@theatre/shared/utils/slashedPaths'
|
import {validateAndSanitiseSlashedPathOrThrow} from '@theatre/shared/utils/slashedPaths'
|
||||||
import type {$IntentionalAny} from '@theatre/shared/utils/types'
|
import type {$IntentionalAny} from '@theatre/shared/utils/types'
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ export default class TheatreProject implements IProject {
|
||||||
)
|
)
|
||||||
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
validateName(
|
validateInstanceId(
|
||||||
instanceId,
|
instanceId,
|
||||||
'instanceId in project.sheet(sheetId, instanceId)',
|
'instanceId in project.sheet(sheetId, instanceId)',
|
||||||
true,
|
true,
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
import userReadableTypeOfValue from '@theatre/shared/utils/userReadableTypeOfValue'
|
import userReadableTypeOfValue from '@theatre/shared/utils/userReadableTypeOfValue'
|
||||||
import {InvalidArgumentError} from '@theatre/shared/utils/errors'
|
import {InvalidArgumentError} from '@theatre/shared/utils/errors'
|
||||||
|
|
||||||
const _validateName = (name: string, thingy: string): void | string => {
|
const _validateSym = (
|
||||||
if (typeof name !== 'string') {
|
val: string,
|
||||||
return `${thingy} must be a string. ${userReadableTypeOfValue(name)} given.`
|
thingy: string,
|
||||||
} else if (name.trim().length !== name.length) {
|
range: [min: number, max: number],
|
||||||
return `${thingy} must not have leading or trailing spaces. '${name}' given.`
|
): void | string => {
|
||||||
} else if (name.length < 3 || name.length > 32) {
|
if (typeof val !== 'string') {
|
||||||
return `${thingy} must have between 3 and 32 characters. '${name}' given.`
|
return `${thingy} must be a string. ${userReadableTypeOfValue(val)} given.`
|
||||||
|
} else if (val.trim().length !== val.length) {
|
||||||
|
return `${thingy} must not have leading or trailing spaces. '${val}' given.`
|
||||||
|
} else if (val.length < range[0] || val.length > range[1]) {
|
||||||
|
return `${thingy} must have between ${range[0]} and ${range[1]} characters. '${val}' given.`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +20,20 @@ export const validateName = (
|
||||||
thingy: string,
|
thingy: string,
|
||||||
shouldThrow: boolean = false,
|
shouldThrow: boolean = false,
|
||||||
) => {
|
) => {
|
||||||
const result = _validateName(name, thingy)
|
const result = _validateSym(name, thingy, [3, 32])
|
||||||
|
if (typeof result === 'string' && shouldThrow) {
|
||||||
|
throw new InvalidArgumentError(result)
|
||||||
|
} else {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const validateInstanceId = (
|
||||||
|
name: string,
|
||||||
|
thingy: string,
|
||||||
|
shouldThrow: boolean = false,
|
||||||
|
) => {
|
||||||
|
const result = _validateSym(name, thingy, [1, 32])
|
||||||
if (typeof result === 'string' && shouldThrow) {
|
if (typeof result === 'string' && shouldThrow) {
|
||||||
throw new InvalidArgumentError(result)
|
throw new InvalidArgumentError(result)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue