@revisium/schema-toolkit 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -0
  3. package/dist/consts/index.cjs +26 -0
  4. package/dist/consts/index.cjs.map +1 -0
  5. package/dist/consts/index.d.cts +17 -0
  6. package/dist/consts/index.d.ts +17 -0
  7. package/dist/consts/index.js +23 -0
  8. package/dist/consts/index.js.map +1 -0
  9. package/dist/index.cjs +1874 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.cts +13 -0
  12. package/dist/index.d.ts +13 -0
  13. package/dist/index.js +1787 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/json-patch.types-DiJBqfxV.d.ts +28 -0
  16. package/dist/json-patch.types-lByaF-OL.d.cts +28 -0
  17. package/dist/json-string.store-O1J0j-a1.d.cts +228 -0
  18. package/dist/json-string.store-S9FXT39Q.d.ts +228 -0
  19. package/dist/json.types-46Cq-WxU.d.cts +8 -0
  20. package/dist/json.types-46Cq-WxU.d.ts +8 -0
  21. package/dist/lib/index.cjs +1346 -0
  22. package/dist/lib/index.cjs.map +1 -0
  23. package/dist/lib/index.d.cts +91 -0
  24. package/dist/lib/index.d.ts +91 -0
  25. package/dist/lib/index.js +1315 -0
  26. package/dist/lib/index.js.map +1 -0
  27. package/dist/mocks/index.cjs +92 -0
  28. package/dist/mocks/index.cjs.map +1 -0
  29. package/dist/mocks/index.d.cts +26 -0
  30. package/dist/mocks/index.d.ts +26 -0
  31. package/dist/mocks/index.js +81 -0
  32. package/dist/mocks/index.js.map +1 -0
  33. package/dist/model/index.cjs +718 -0
  34. package/dist/model/index.cjs.map +1 -0
  35. package/dist/model/index.d.cts +19 -0
  36. package/dist/model/index.d.ts +19 -0
  37. package/dist/model/index.js +697 -0
  38. package/dist/model/index.js.map +1 -0
  39. package/dist/plugins/index.cjs +122 -0
  40. package/dist/plugins/index.cjs.map +1 -0
  41. package/dist/plugins/index.d.cts +21 -0
  42. package/dist/plugins/index.d.ts +21 -0
  43. package/dist/plugins/index.js +112 -0
  44. package/dist/plugins/index.js.map +1 -0
  45. package/dist/schema.types-Q3MYTp8z.d.cts +68 -0
  46. package/dist/schema.types-Q3MYTp8z.d.ts +68 -0
  47. package/dist/types/index.cjs +15 -0
  48. package/dist/types/index.cjs.map +1 -0
  49. package/dist/types/index.d.cts +56 -0
  50. package/dist/types/index.d.ts +56 -0
  51. package/dist/types/index.js +13 -0
  52. package/dist/types/index.js.map +1 -0
  53. package/dist/validation-schemas/index.cjs +380 -0
  54. package/dist/validation-schemas/index.cjs.map +1 -0
  55. package/dist/validation-schemas/index.d.cts +32 -0
  56. package/dist/validation-schemas/index.d.ts +32 -0
  57. package/dist/validation-schemas/index.js +365 -0
  58. package/dist/validation-schemas/index.js.map +1 -0
  59. package/package.json +169 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/addSharedFieldsFromStore.ts","../../src/model/schema/json-array.store.ts","../../src/model/schema/json-boolean.store.ts","../../src/model/schema/json-number.store.ts","../../src/model/schema/json-string.store.ts","../../src/model/schema/json-object.store.ts","../../src/lib/createJsonSchemaStore.ts","../../src/lib/getJsonSchemaStoreByPath.ts","../../src/lib/getParentForPath.ts","../../src/lib/validateJsonFieldName.ts","../../src/lib/applyPatches.ts","../../src/model/value/value-transformation.ts","../../src/model/value/json-array-value.store.ts","../../src/model/value/json-boolean-value.store.ts","../../src/model/value/json-number-value.store.ts","../../src/model/value/json-object-value.store.ts","../../src/model/value/json-string-value.store.ts","../../src/lib/createJsonValueStore.ts","../../src/lib/getDBJsonPathByJsonSchemaStore.ts","../../src/lib/getPathByStore.ts","../../src/lib/traverseStore.ts","../../src/lib/getForeignKeyPatchesFromSchema.ts","../../src/lib/getForeignKeysFromSchema.ts","../../src/lib/traverseValue.ts","../../src/lib/getForeignKeysFromValue.ts","../../src/lib/getInvalidFieldNamesInSchema.ts","../../src/lib/getJsonValueByPath.ts","../../src/lib/replaceForeignKeyValue.ts","../../src/plugins/row-id.schema.ts","../../src/plugins/row-version-id.schema.ts","../../src/plugins/row-created-id.schema.ts","../../src/plugins/row-created-at.schema.ts","../../src/plugins/row-published-at.schema.ts","../../src/plugins/row-updated-at.schema.ts","../../src/plugins/row-hash.schema.ts","../../src/plugins/row-schema-hash.schema.ts","../../src/plugins/file-schema.ts","../../src/lib/resolveRefs.ts","../../src/lib/schema-table.ts"],"names":["nanoid","EventEmitter","value"],"mappings":"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","file":"index.js","sourcesContent":["import { JsonSchema } from '../types/schema.types.js';\n\nexport const addSharedFieldsFromState = <T extends JsonSchema = JsonSchema>(\n schema: T,\n state: { title?: string; description?: string; deprecated?: boolean },\n): T => {\n if (state.title) {\n schema.title = state.title;\n }\n\n if (state.description) {\n schema.description = state.description;\n }\n\n if (state.deprecated) {\n schema.deprecated = state.deprecated;\n }\n\n return schema;\n};\n","import { nanoid } from 'nanoid';\nimport { JsonArray } from '../../types/json.types.js';\nimport {\n JsonArraySchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonArrayValueStore } from '../value/json-array-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport type MigrateItemsEvent = {\n items: JsonSchemaStore;\n previousItems: JsonSchemaStore;\n};\n\nexport type ReplaceItemsEvent = {\n items: JsonSchemaStore;\n previousItems: JsonSchemaStore;\n};\n\nexport class JsonArrayStore implements JsonArraySchema {\n public readonly type = JsonSchemaTypeName.Array;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n public default: JsonArray[] = [];\n\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonArrayValueStore[]> = new Map<\n string,\n JsonArrayValueStore[]\n >();\n\n constructor(\n private _items: JsonSchemaStore,\n public readonly nodeId: string = nanoid(),\n ) {\n this.items.parent = this;\n }\n\n public get items() {\n return this._items;\n }\n\n public registerValue(value: JsonArrayValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonArrayValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public migrateItems(items: JsonSchemaStore) {\n const previousItems = this._items;\n previousItems.parent = null;\n this._items = items;\n this._items.parent = this;\n\n const event: MigrateItemsEvent = { items, previousItems };\n\n for (const value of this.iterValues()) {\n value.migrateItems(event);\n }\n }\n\n public replaceItems(items: JsonSchemaStore) {\n const previousItems = this._items;\n previousItems.parent = null;\n this._items = items;\n this._items.parent = this;\n\n const event: ReplaceItemsEvent = { items, previousItems };\n\n for (const value of this.iterValues()) {\n value.replaceItems(event);\n }\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonArraySchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n items: this.items.getPlainSchema(options),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonArrayValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n\n private *iterValues(): Generator<JsonArrayValueStore> {\n for (const values of this.valuesMap.values()) {\n for (const value of values) {\n yield value;\n }\n }\n }\n}\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonBooleanSchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonBooleanValueStore } from '../value/json-boolean-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonBooleanStore\n extends EventEmitter\n implements JsonBooleanSchema\n{\n public readonly type = JsonSchemaTypeName.Boolean;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: boolean = false;\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonBooleanValueStore[]> = new Map<\n string,\n JsonBooleanValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonBooleanValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonBooleanValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonBooleanSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonBooleanValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonNumberSchema,\n JsonRefSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonNumberValueStore } from '../value/json-number-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonNumberStore extends EventEmitter implements JsonNumberSchema {\n public readonly type = JsonSchemaTypeName.Number;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: number = 0;\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n private readonly valuesMap: Map<string, JsonNumberValueStore[]> = new Map<\n string,\n JsonNumberValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonNumberValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonNumberValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonNumberSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonNumberValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { EventEmitter } from 'node:events';\nimport {\n JsonRefSchema,\n JsonSchemaTypeName,\n JsonStringSchema,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonStringValueStore } from '../value/json-string-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport class JsonStringStore extends EventEmitter implements JsonStringSchema {\n public readonly type = JsonSchemaTypeName.String;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n\n public default: string = '';\n public readOnly?: boolean;\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n public foreignKey?: string;\n public pattern?: string;\n public enum?: string[];\n public format?: JsonStringSchema['format'];\n public contentMediaType?: JsonStringSchema['contentMediaType'];\n\n private readonly valuesMap: Map<string, JsonStringValueStore[]> = new Map<\n string,\n JsonStringValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {\n super();\n }\n\n public registerValue(value: JsonStringValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonStringValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonStringSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n default: this.default,\n ...(this.foreignKey ? { foreignKey: this.foreignKey } : {}),\n ...(this.readOnly ? { readOnly: this.readOnly } : {}),\n ...(this.pattern ? { pattern: this.pattern } : {}),\n ...(this.enum ? { enum: this.enum } : {}),\n ...(this.format ? { format: this.format } : {}),\n ...(this.contentMediaType\n ? { contentMediaType: this.contentMediaType }\n : {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonStringValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n}\n","import { nanoid } from 'nanoid';\nimport { JsonObject } from '../../types/json.types.js';\nimport {\n JsonObjectSchema,\n JsonRefSchema,\n JsonSchema,\n JsonSchemaTypeName,\n} from '../../types/schema.types.js';\nimport { JsonSchemaStore } from './json-schema.store.js';\nimport { JsonObjectValueStore } from '../value/json-object-value.store.js';\nimport { addSharedFieldsFromState } from '../../lib/addSharedFieldsFromStore.js';\n\nexport type AddedPropertyEvent = { name: string; property: JsonSchemaStore };\nexport type MigratePropertyEvent = {\n name: string;\n property: JsonSchemaStore;\n previousProperty: JsonSchemaStore;\n};\nexport type RemovedPropertyEvent = { name: string; property: JsonSchemaStore };\nexport type ChangeNameEvent = {\n fromName: string;\n toName: string;\n property: JsonSchemaStore;\n};\n\nexport class JsonObjectStore implements JsonObjectSchema {\n public readonly type = JsonSchemaTypeName.Object;\n\n public $ref: string = '';\n public name: string = '';\n public parent: JsonSchemaStore | null = null;\n public default: JsonObject = {};\n\n public title?: string;\n public description?: string;\n public deprecated?: boolean;\n\n public readonly additionalProperties = false;\n public readonly required: string[] = [];\n public readonly properties: Record<string, JsonSchemaStore> = {};\n\n private readonly valuesMap: Map<string, JsonObjectValueStore[]> = new Map<\n string,\n JsonObjectValueStore[]\n >();\n\n constructor(public readonly nodeId: string = nanoid()) {}\n\n public get empty(): boolean {\n return Object.keys(this.properties).length === 0;\n }\n\n public registerValue(value: JsonObjectValueStore): number {\n const length = this.getOrCreateValues(value.rowId).push(value);\n return length - 1;\n }\n\n public getValue(\n rowId: string,\n index: number = 0,\n ): JsonObjectValueStore | undefined {\n return this.getOrCreateValues(rowId)[index];\n }\n\n public addPropertyWithStore(name: string, store: JsonSchemaStore) {\n if (this.properties[name] || this.required.includes(name)) {\n throw new Error('this name already exists');\n }\n\n store.parent = this;\n store.name = name;\n\n this.required.push(name);\n this.required.sort((a, b) => a.localeCompare(b));\n\n this.properties[name] = store;\n this.default[name] = store.default;\n\n const event: AddedPropertyEvent = { name, property: store };\n\n for (const value of this.iterValues()) {\n value.addProperty(event);\n }\n\n return store;\n }\n\n public migratePropertyWithStore(name: string, store: JsonSchemaStore) {\n const item = this.properties[name];\n\n if (!item) {\n throw new Error('this name does not exist');\n }\n\n item.parent = null;\n\n store.parent = this;\n store.name = name;\n\n this.properties[name] = store;\n this.default[name] = store.default;\n\n const event: MigratePropertyEvent = {\n name,\n property: store,\n previousProperty: item,\n };\n\n for (const value of this.iterValues()) {\n value.migrateProperty(event);\n }\n\n return store;\n }\n\n public changeName(fromName: string, toName: string) {\n const item = this.properties[fromName];\n\n if (!item) {\n throw new Error('this fromName does not exist');\n }\n\n // remove\n delete this.properties[fromName];\n delete this.default[fromName];\n\n const foundRequiredIndex = this.required.findIndex(\n (required) => required === fromName,\n );\n\n if (foundRequiredIndex !== -1) {\n this.required.splice(foundRequiredIndex, 1);\n }\n\n // add\n if (!this.required.includes(toName)) {\n this.required.push(toName);\n this.required.sort((a, b) => a.localeCompare(b));\n }\n\n this.properties[toName] = item;\n this.default[toName] = item.default;\n\n const event: ChangeNameEvent = {\n fromName,\n toName,\n property: item,\n };\n\n for (const value of this.iterValues()) {\n value.changeName(event);\n }\n }\n\n public removeProperty(name: string) {\n const item = this.properties[name];\n\n if (!item) {\n throw new Error('this name does not exist');\n }\n\n item.parent = null;\n item.name = '';\n\n delete this.properties[name];\n delete this.default[name];\n\n const foundRequiredIndex = this.required.findIndex(\n (required) => required === name,\n );\n\n if (foundRequiredIndex !== -1) {\n this.required.splice(foundRequiredIndex, 1);\n }\n\n const event: RemovedPropertyEvent = {\n name,\n property: item,\n };\n\n for (const value of this.iterValues()) {\n value.removeProperty(event);\n }\n }\n\n public getProperty(name: string): JsonSchemaStore | undefined {\n return this.properties[name];\n }\n\n public getPlainSchema(options?: {\n skip$Ref?: boolean;\n }): JsonObjectSchema | JsonRefSchema {\n if (this.$ref && options?.skip$Ref !== true) {\n return addSharedFieldsFromState({ $ref: this.$ref }, this);\n }\n\n return addSharedFieldsFromState(\n {\n type: this.type,\n additionalProperties: this.additionalProperties,\n required: this.required,\n properties: Object.entries<JsonSchemaStore>(this.properties).reduce<\n Record<string, JsonSchema>\n >((result, [name, store]) => {\n result[name] = store.getPlainSchema(options);\n return result;\n }, {}),\n },\n this,\n );\n }\n\n private getOrCreateValues(rowId: string): JsonObjectValueStore[] {\n let values = this.valuesMap.get(rowId);\n\n if (!values) {\n values = [];\n this.valuesMap.set(rowId, values);\n }\n\n return values;\n }\n\n private *iterValues(): Generator<JsonObjectValueStore> {\n for (const values of this.valuesMap.values()) {\n for (const value of values) {\n yield value;\n }\n }\n }\n}\n","import {\n JsonObjectSchema,\n JsonSchema,\n JsonSchemaPrimitives,\n JsonSchemaTypeName,\n} from '../types/schema.types.js';\nimport { JsonArrayStore } from '../model/schema/json-array.store.js';\nimport { JsonBooleanStore } from '../model/schema/json-boolean.store.js';\nimport { JsonNumberStore } from '../model/schema/json-number.store.js';\nimport { JsonStringStore } from '../model/schema/json-string.store.js';\nimport { JsonObjectStore } from '../model/schema/json-object.store.js';\nimport {\n JsonSchemaStore,\n JsonSchemaStorePrimitives,\n} from '../model/schema/json-schema.store.js';\n\nexport type RefsType = Record<string, JsonSchema>;\n\nexport const createJsonSchemaStore = (\n schema: JsonSchema,\n refs: RefsType = {},\n): JsonSchemaStore => {\n if ('$ref' in schema) {\n const refSchema: JsonSchema | undefined = refs[schema.$ref];\n\n if (!refSchema) {\n throw new Error(`Not found schema for $ref=\"${schema.$ref}\"`);\n }\n\n const refStore = createJsonSchemaStore(refSchema, refs);\n saveSharedFields(refStore, schema);\n refStore.$ref = schema.$ref;\n return refStore;\n } else if (schema.type === JsonSchemaTypeName.Object) {\n const objectStore = createJsonObjectSchemaStore(schema, refs);\n saveSharedFields(objectStore, schema);\n\n return objectStore;\n } else if (schema.type === JsonSchemaTypeName.Array) {\n const itemsStore = createJsonSchemaStore(schema.items, refs);\n const arrayStore = new JsonArrayStore(itemsStore);\n saveSharedFields(arrayStore, schema);\n\n return arrayStore;\n } else {\n const primitivesStore = createPrimitiveStoreBySchema(schema);\n saveSharedFields(primitivesStore, schema);\n primitivesStore.readOnly = schema.readOnly;\n\n return primitivesStore;\n }\n};\n\nexport const createJsonObjectSchemaStore = (\n value: JsonObjectSchema,\n refs: RefsType,\n): JsonObjectStore => {\n const store = new JsonObjectStore();\n\n for (const requiredField of value.required) {\n if (!value.properties[requiredField]) {\n throw new Error(\n `Not found required field \"${requiredField}\" in \"properties\"`,\n );\n }\n }\n\n Object.entries(value.properties).forEach(([name, item]) => {\n store.addPropertyWithStore(name, createJsonSchemaStore(item, refs));\n });\n\n return store;\n};\n\nexport const createPrimitiveStoreBySchema = (\n schema: JsonSchemaPrimitives,\n): JsonSchemaStorePrimitives => {\n if (schema.type === JsonSchemaTypeName.String) {\n const stringStore = new JsonStringStore();\n stringStore.foreignKey = schema.foreignKey;\n stringStore.format = schema.format;\n stringStore.enum = schema.enum;\n stringStore.contentMediaType = schema.contentMediaType;\n stringStore.pattern = schema.pattern;\n return stringStore;\n } else if (schema.type === JsonSchemaTypeName.Number) {\n return new JsonNumberStore();\n } else if (schema.type === JsonSchemaTypeName.Boolean) {\n return new JsonBooleanStore();\n } else {\n throw new Error('this type is not allowed');\n }\n};\n\nexport const saveSharedFields = (\n store: JsonSchemaStore,\n schema: JsonSchema,\n) => {\n store.title = schema.title;\n store.description = schema.description;\n store.deprecated = schema.deprecated;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getJsonSchemaStoreByPath = (\n store: JsonSchemaStore,\n path: string,\n): JsonSchemaStore => {\n if (path === '') {\n return store;\n }\n\n if (path === '/') {\n throw new Error(\n 'invalid root path, need to use path=\"\" instead of path=\"/\"',\n );\n }\n\n const tokens = path.split('/');\n tokens.shift();\n\n let currentStore = store;\n\n let currentToken = tokens.shift();\n let currentPath = '';\n\n while (currentToken) {\n if (currentStore.type === JsonSchemaTypeName.Object) {\n if (currentToken !== 'properties') {\n throw new Error(\n `Expected \"${currentPath}/properties/*\" instead of ${currentPath}/${currentToken}/*`,\n );\n }\n\n currentPath = `${currentPath}/${currentToken}`;\n\n currentToken = tokens.shift();\n\n if (!currentToken) {\n throw new Error(`Expected property name after \"${currentPath}\"`);\n }\n\n const foundCurrentStore = currentStore.getProperty(currentToken);\n\n if (!foundCurrentStore) {\n throw new Error(`Not found \"${currentToken}\" in \"${currentPath}\"`);\n }\n\n currentStore = foundCurrentStore;\n currentPath = `${currentPath}/${currentToken}`;\n\n currentToken = tokens.shift();\n } else if (currentStore.type === JsonSchemaTypeName.Array) {\n if (currentToken !== 'items') {\n throw new Error(\n `Expected \"${currentPath}/items/*\" instead of ${currentPath}/${currentToken}/*`,\n );\n }\n\n currentPath = `${currentPath}/${currentToken}`;\n\n currentStore = currentStore.items;\n\n currentToken = tokens.shift();\n } else {\n throw new Error(`Unexpected \"${currentToken}\" in \"${currentPath}\"`);\n }\n }\n\n return currentStore;\n};\n","export const getParentForPath = (\n path: string,\n): { parentPath: string; field: string } => {\n if (path === '' || path === '/') {\n throw new Error('Invalid path');\n }\n\n const tokens = path.split('/');\n tokens.shift();\n\n let currentToken = tokens.shift();\n\n let parentPath = '';\n let field = '';\n\n while (currentToken) {\n if (currentToken === 'properties') {\n currentToken = tokens.shift();\n\n if (!currentToken) {\n throw new Error('Invalid path');\n }\n\n field = currentToken;\n\n currentToken = tokens.shift();\n\n if (currentToken) {\n parentPath = `${parentPath}/properties/${field}`;\n }\n } else if (currentToken === 'items') {\n field = currentToken;\n\n currentToken = tokens.shift();\n\n if (currentToken && !['items', 'properties'].includes(currentToken)) {\n throw new Error('Invalid path');\n } else if (currentToken) {\n parentPath = `${parentPath}/items`;\n }\n } else {\n throw new Error('Invalid path');\n }\n }\n\n return {\n parentPath: parentPath,\n field,\n };\n};\n","const maxLength = 64;\n\nexport const VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE = `It must contain between 1 and ${maxLength} characters, start with a letter or underscore (_), cannot start with two underscores (__), and can only include letters (a-z, A-Z), numbers (0-9), hyphens (-), and underscores (_).`;\n\nconst validPattern = /^(?!__)[a-zA-Z_][a-zA-Z0-9-_]*$/;\n\nexport const validateJsonFieldName = (id: string) => {\n const isInvalid =\n id.length < 1 || id.length > maxLength || !validPattern.test(id);\n\n return !isInvalid;\n};\n","import { JsonSchema, JsonSchemaTypeName } from '../types/schema.types.js';\nimport {\n JsonPatchAdd,\n JsonPatchMove,\n JsonPatchRemove,\n JsonPatchReplace,\n} from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { getJsonSchemaStoreByPath } from './getJsonSchemaStoreByPath.js';\nimport { getParentForPath } from './getParentForPath.js';\nimport {\n VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE,\n validateJsonFieldName,\n} from './validateJsonFieldName.js';\n\nexport const applyReplacePatch = (\n store: JsonSchemaStore,\n patch: JsonPatchReplace,\n refs: Record<string, JsonSchema> = {},\n): JsonSchemaStore => {\n const patchStore = createJsonSchemaStore(patch.value, refs);\n const foundStore = getJsonSchemaStoreByPath(store, patch.path);\n\n const parent = foundStore.parent;\n\n if (!parent) {\n return patchStore;\n }\n\n if (parent.type === JsonSchemaTypeName.Object) {\n parent.migratePropertyWithStore(foundStore.name, patchStore);\n } else if (parent.type === JsonSchemaTypeName.Array) {\n parent.migrateItems(patchStore);\n } else {\n throw new Error('Invalid parent');\n }\n\n return store;\n};\n\nexport const applyRemovePatch = (\n rootStore: JsonSchemaStore,\n patch: JsonPatchRemove,\n): void => {\n const foundStore = getJsonSchemaStoreByPath(rootStore, patch.path);\n const parent = foundStore.parent;\n\n if (!parent) {\n throw new Error('Parent does not exist');\n }\n\n if (parent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot remove from non-object');\n }\n\n parent.removeProperty(foundStore.name);\n};\n\nexport const applyAddPatch = (\n rootStore: JsonSchemaStore,\n patch: JsonPatchAdd,\n refs: Record<string, JsonSchema> = {},\n): void => {\n const patchStore = createJsonSchemaStore(patch.value, refs);\n\n const { parentPath, field } = getParentForPath(patch.path);\n const foundParent = getJsonSchemaStoreByPath(rootStore, parentPath);\n\n if (!foundParent) {\n throw new Error('Parent does not exist');\n }\n\n if (foundParent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot add to non-object');\n }\n\n if (foundParent.getProperty(field)) {\n throw new Error(`Field \"${field}\" already exists in parent`);\n }\n\n foundParent.addPropertyWithStore(field, patchStore);\n};\n\nexport const applyMovePatch = (\n store: JsonSchemaStore,\n patch: JsonPatchMove,\n): void => {\n const { parentPath: fromParentPath, field: fromField } = getParentForPath(\n patch.from,\n );\n const { parentPath: toParentPath, field: toField } = getParentForPath(\n patch.path,\n );\n\n const foundFromParent = getJsonSchemaStoreByPath(store, fromParentPath);\n const foundToParent = getJsonSchemaStoreByPath(store, toParentPath);\n\n const isValidToField = validateJsonFieldName(toField);\n\n if (!isValidToField) {\n throw new Error(\n `Invalid name: ${toField}. ${VALIDATE_JSON_FIELD_NAME_ERROR_MESSAGE}`,\n );\n }\n\n if (!foundFromParent || !foundToParent) {\n throw new Error('Cannot move from or to non-existent parent');\n }\n\n if (foundFromParent.type !== JsonSchemaTypeName.Object) {\n throw new Error('Cannot move from non-object parent');\n }\n\n const foundFromField = getJsonSchemaStoreByPath(store, patch.from);\n\n const isMovedPropertyInSameParentPatch =\n foundFromParent === foundToParent &&\n foundFromParent.type === JsonSchemaTypeName.Object &&\n foundFromParent.getProperty(fromField);\n\n if (isMovedPropertyInSameParentPatch) {\n return foundFromParent.changeName(fromField, toField);\n }\n\n if (foundToParent.type === JsonSchemaTypeName.Object) {\n foundFromParent.removeProperty(fromField);\n if (foundToParent.getProperty(toField)) {\n foundToParent.removeProperty(toField);\n }\n foundToParent.addPropertyWithStore(toField, foundFromField);\n return;\n }\n\n if (foundToParent.type === JsonSchemaTypeName.Array) {\n foundFromParent.removeProperty(fromField);\n foundToParent.replaceItems(foundFromField);\n\n return;\n }\n throw new Error('Invalid type of \"to\" parent');\n};\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonArrayStore } from '../schema/json-array.store.js';\nimport { JsonSchemaStore } from '../schema/json-schema.store.js';\n\nexport const equel = (value: unknown): unknown => value;\n\nexport const fromNumberToString = (\n value: number,\n defaultValue: string = '',\n): string => value.toString() || defaultValue;\n\nexport const fromBooleanToString = (\n value: boolean,\n defaultValue: string = '',\n): string => value.toString() || defaultValue;\n\nexport const fromStringToBoolean = (\n value: string,\n defaultValue: boolean = false,\n): boolean => {\n if (!value) {\n return defaultValue;\n }\n\n if (value.toLowerCase() === 'false') {\n return false;\n }\n\n return true;\n};\n\nexport const fromStringToNumber = (\n value: string,\n defaultValue: number = 0,\n): number => {\n const number = Number.parseFloat(value);\n\n if (Number.isNaN(number)) {\n return defaultValue;\n }\n\n return number;\n};\n\nexport const fromBooleanToNumber = (value: boolean): number => {\n return Number(value);\n};\n\nexport const fromNumberToBoolean = (value: number): boolean => {\n return Boolean(value);\n};\n\nexport const toArrayTransformation =\n (transformation: Transformation) => (value: unknown) => {\n const result = transformation(value);\n return [result];\n };\n\nexport const fromArrayTransformation =\n (transformation: Transformation) => (value: unknown) => {\n if (Array.isArray(value) && value.length) {\n return transformation(value[0]);\n }\n return undefined;\n };\n\nconst replaceTransformationsMapper: ReplaceTransformationsMapper = [\n {\n fromType: JsonSchemaTypeName.Number,\n toType: JsonSchemaTypeName.String,\n transformation: fromNumberToString as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.String,\n toType: JsonSchemaTypeName.Number,\n transformation: fromStringToNumber as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Boolean,\n toType: JsonSchemaTypeName.String,\n transformation: fromBooleanToString as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.String,\n toType: JsonSchemaTypeName.Boolean,\n transformation: fromStringToBoolean as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Boolean,\n toType: JsonSchemaTypeName.Number,\n transformation: fromBooleanToNumber as Transformation,\n },\n {\n fromType: JsonSchemaTypeName.Number,\n toType: JsonSchemaTypeName.Boolean,\n transformation: fromNumberToBoolean as Transformation,\n },\n];\nexport const getTransformation = (\n from: JsonSchemaStore,\n to: JsonSchemaStore,\n): Transformation | undefined => {\n if (to instanceof JsonArrayStore) {\n const transformation = findTransformation(from.type, to.items.type);\n\n if (!transformation) {\n return;\n }\n\n return toArrayTransformation(transformation);\n } else if (from instanceof JsonArrayStore) {\n const transformation = findTransformation(from.items.type, to.type);\n\n if (!transformation) {\n return;\n }\n\n return fromArrayTransformation(transformation);\n }\n\n return findTransformation(from.type, to.type);\n};\n\nconst findTransformation = (\n from: JsonSchemaTypeName,\n to: JsonSchemaTypeName,\n): Transformation | undefined => {\n if (from === to) {\n return equel;\n }\n\n for (const item of replaceTransformationsMapper) {\n if (item.fromType === from && item.toType === to) {\n return item.transformation;\n }\n }\n\n return undefined;\n};\n\ntype Transformation = (value: unknown, defaultValue?: unknown) => unknown;\ntype ReplaceTransformationsMapper = {\n fromType: JsonSchemaTypeName;\n toType: JsonSchemaTypeName;\n transformation: Transformation;\n}[];\n","import { JsonArray, JsonValue } from '../../types/json.types.js';\nimport { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport {\n JsonArrayStore,\n MigrateItemsEvent,\n ReplaceItemsEvent,\n} from '../schema/json-array.store.js';\nimport { createJsonValueStore } from '../../lib/createJsonValueStore.js';\nimport { JsonValueStore, JsonValueStoreParent } from './json-value.store.js';\nimport { getTransformation } from './value-transformation.js';\n\nexport class JsonArrayValueStore {\n public readonly type = JsonSchemaTypeName.Array;\n\n public index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonArrayStore,\n public readonly rowId: string,\n public value: JsonValueStore[],\n ) {\n this.index = this.schema.registerValue(this);\n this.init();\n }\n\n public getPlainValue(): JsonArray {\n return this.value.map((item) => item.getPlainValue());\n }\n\n public migrateItems(event: MigrateItemsEvent) {\n const transformation = getTransformation(event.previousItems, event.items);\n\n this.value = this.value.map((valueItem) => {\n const rawValue = transformation\n ? (transformation(\n valueItem.getPlainValue(),\n event.items.default,\n ) as JsonValue)\n : event.items.default;\n\n return createJsonValueStore(event.items, this.rowId, rawValue);\n });\n }\n\n public replaceItems(event: ReplaceItemsEvent) {\n this.value = this.value.map(() => {\n const rawValue = this.getReplacedValue(event);\n\n return createJsonValueStore(event.items, this.rowId, rawValue);\n });\n }\n\n private getReplacedValue(event: ReplaceItemsEvent): JsonValue {\n const previousValue = event.items.getValue(this.rowId);\n\n if (previousValue) {\n return previousValue.getPlainValue();\n }\n\n return event.items.default;\n }\n\n private init() {\n for (const value of this.value) {\n value.parent = this;\n }\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonBooleanStore } from '../schema/json-boolean.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonBooleanValueStore {\n public readonly type = JsonSchemaTypeName.Boolean;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonBooleanStore,\n public readonly rowId: string,\n public value: boolean | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonNumberStore } from '../schema/json-number.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonNumberValueStore {\n public readonly type = JsonSchemaTypeName.Number;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonNumberStore,\n public readonly rowId: string,\n public value: number | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import { JsonObject, JsonValue } from '../../types/json.types.js';\nimport { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport {\n AddedPropertyEvent,\n ChangeNameEvent,\n JsonObjectStore,\n MigratePropertyEvent,\n RemovedPropertyEvent,\n} from '../schema/json-object.store.js';\nimport { createJsonValueStore } from '../../lib/createJsonValueStore.js';\nimport { JsonValueStore, JsonValueStoreParent } from './json-value.store.js';\nimport { getTransformation } from './value-transformation.js';\n\nexport class JsonObjectValueStore {\n public readonly type = JsonSchemaTypeName.Object;\n\n public index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonObjectStore,\n public readonly rowId: string,\n public value: Record<string, JsonValueStore>,\n ) {\n this.index = this.schema.registerValue(this);\n this.init();\n }\n\n public getPlainValue(): JsonObject {\n return Object.entries(this.value).reduce<Record<string, JsonValue>>(\n (result, [name, store]) => {\n result[name] = store.getPlainValue() as JsonValue;\n return result;\n },\n {},\n );\n }\n\n public migrateProperty(event: MigratePropertyEvent) {\n const rawValue = this.getMigratedValue(event);\n\n this.value[event.name] = createJsonValueStore(\n event.property,\n this.rowId,\n rawValue,\n );\n }\n\n public addProperty(event: AddedPropertyEvent) {\n const rawValue = this.getAddedValue(event);\n\n this.value[event.name] = createJsonValueStore(\n event.property,\n this.rowId,\n rawValue,\n );\n }\n\n public removeProperty(event: RemovedPropertyEvent) {\n delete this.value[event.name];\n }\n\n public changeName(event: ChangeNameEvent) {\n const itemValue = this.value[event.fromName];\n\n if (itemValue !== undefined) {\n delete this.value[event.fromName];\n this.value[event.toName] = itemValue;\n }\n }\n\n private getAddedValue(event: AddedPropertyEvent): JsonValue {\n const previousValue = event.property.getValue(this.rowId, this.index);\n\n if (previousValue) {\n return previousValue.getPlainValue();\n }\n\n return event.property.default;\n }\n\n private getMigratedValue(event: MigratePropertyEvent): JsonValue {\n const transformation = getTransformation(\n event.previousProperty,\n event.property,\n );\n\n const valueStore = this.value[event.name];\n if (transformation && valueStore) {\n return transformation(\n valueStore.getPlainValue(),\n event.property.default,\n ) as JsonValue;\n }\n\n return event.property.default;\n }\n\n private init() {\n for (const value of Object.values(this.value)) {\n value.parent = this;\n }\n }\n}\n","import { JsonSchemaTypeName } from '../../types/schema.types.js';\nimport { JsonStringStore } from '../schema/json-string.store.js';\nimport { JsonValueStoreParent } from './json-value.store.js';\n\nexport class JsonStringValueStore {\n public readonly type = JsonSchemaTypeName.String;\n\n public readonly index: number;\n\n public parent: JsonValueStoreParent | null = null;\n\n constructor(\n public readonly schema: JsonStringStore,\n public readonly rowId: string,\n public value: string | null = null,\n ) {\n this.index = this.schema.registerValue(this);\n }\n\n public get foreignKey() {\n return this.schema.foreignKey;\n }\n\n public getPlainValue() {\n return this.value ?? this.schema.default;\n }\n}\n","import {\n JsonArray,\n JsonObject,\n JsonPrimitives,\n JsonValue,\n} from '../types/json.types.js';\nimport { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonArrayStore } from '../model/schema/json-array.store.js';\nimport { JsonObjectStore } from '../model/schema/json-object.store.js';\nimport {\n JsonSchemaStore,\n JsonSchemaStorePrimitives,\n} from '../model/schema/json-schema.store.js';\nimport { JsonArrayValueStore } from '../model/value/json-array-value.store.js';\nimport { JsonBooleanValueStore } from '../model/value/json-boolean-value.store.js';\nimport { JsonNumberValueStore } from '../model/value/json-number-value.store.js';\nimport { JsonObjectValueStore } from '../model/value/json-object-value.store.js';\nimport { JsonStringValueStore } from '../model/value/json-string-value.store.js';\nimport {\n JsonValueStore,\n JsonValueStorePrimitives,\n} from '../model/value/json-value.store.js';\n\nexport const createJsonValueStore = (\n schema: JsonSchemaStore,\n rowId: string,\n rawValue: JsonValue,\n): JsonValueStore => {\n if (schema.type === JsonSchemaTypeName.Object) {\n return createJsonObjectValueStore(schema, rowId, rawValue as JsonObject);\n } else if (schema.type === JsonSchemaTypeName.Array) {\n return createJsonArrayValueStore(schema, rowId, rawValue as JsonArray);\n } else {\n return createPrimitiveValueStore(schema, rowId, rawValue as JsonPrimitives);\n }\n};\n\nexport const createJsonObjectValueStore = (\n schema: JsonObjectStore,\n rowId: string,\n rawValue: JsonObject,\n): JsonObjectValueStore => {\n const value = Object.entries(rawValue).reduce<Record<string, JsonValueStore>>(\n (reduceValue, [key, itemValue]) => {\n const itemSchema = schema.getProperty(key);\n\n if (itemSchema === undefined || itemValue === undefined) {\n throw new Error('Invalid item');\n }\n\n reduceValue[key] = createJsonValueStore(itemSchema, rowId, itemValue);\n\n return reduceValue;\n },\n {},\n );\n\n return new JsonObjectValueStore(schema, rowId, value);\n};\n\nexport const createJsonArrayValueStore = (\n schema: JsonArrayStore,\n rowId: string,\n rawValue: JsonArray,\n): JsonArrayValueStore => {\n const value = rawValue.map((value) =>\n createJsonValueStore(schema.items, rowId, value),\n );\n\n return new JsonArrayValueStore(schema, rowId, value);\n};\n\nexport const createPrimitiveValueStore = (\n schema: JsonSchemaStorePrimitives,\n rowId: string,\n rawValue: JsonPrimitives,\n): JsonValueStorePrimitives => {\n if (schema.type === JsonSchemaTypeName.String) {\n return new JsonStringValueStore(schema, rowId, rawValue as string | null);\n } else if (schema.type === JsonSchemaTypeName.Number) {\n return new JsonNumberValueStore(schema, rowId, rawValue as number | null);\n } else if (schema.type === JsonSchemaTypeName.Boolean) {\n return new JsonBooleanValueStore(schema, rowId, rawValue as boolean | null);\n } else {\n throw new Error('this type is not allowed');\n }\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getDBJsonPathByJsonSchemaStore = (\n store: JsonSchemaStore,\n): string => {\n let node = store;\n\n let path = '';\n\n while (node.parent) {\n if (node.parent.type === JsonSchemaTypeName.Object) {\n path = `.${node.name}${path}`;\n } else if (node.parent.type === JsonSchemaTypeName.Array) {\n path = `[*]${path}`;\n }\n\n node = node.parent;\n }\n\n if (!path) {\n return '$';\n }\n\n return `$${path}`;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const getPathByStore = (store: JsonSchemaStore): string => {\n let node = store;\n\n let path = '';\n\n while (node.parent) {\n if (node.parent.type === JsonSchemaTypeName.Object) {\n path = `/properties/${node.name}${path}`;\n } else if (node.parent.type === JsonSchemaTypeName.Array) {\n path = `/items${path}`;\n }\n\n node = node.parent;\n }\n\n if (!path) {\n return '/';\n }\n\n return `${path}`;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\n\nexport const traverseStore = (\n store: JsonSchemaStore,\n callback: (node: JsonSchemaStore) => void,\n) => {\n callback(store);\n\n if (store.type === JsonSchemaTypeName.Object) {\n Object.values(store.properties).forEach((item) => {\n traverseStore(item, callback);\n });\n } else if (store.type === JsonSchemaTypeName.Array) {\n traverseStore(store.items, callback);\n }\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonPatch, JsonPatchReplace } from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { getPathByStore } from './getPathByStore.js';\nimport { traverseStore } from './traverseStore.js';\n\nexport const getForeignKeyPatchesFromSchema = (\n store: JsonSchemaStore,\n options: { tableId: string; nextTableId: string },\n) => {\n const stores: JsonPatch[] = [];\n\n traverseStore(store, (item) => {\n if (\n item.type === JsonSchemaTypeName.String &&\n item.foreignKey === options.tableId\n ) {\n item.foreignKey = options.nextTableId;\n\n const patch: JsonPatchReplace = {\n op: 'replace',\n path: getPathByStore(item),\n value: item.getPlainSchema(),\n };\n\n stores.push(patch);\n }\n });\n\n return stores;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { traverseStore } from './traverseStore.js';\n\nexport const getForeignKeysFromSchema = (store: JsonSchemaStore): string[] => {\n const foreignKeys = new Set<string>();\n\n traverseStore(store, (item) => {\n if (item.type === JsonSchemaTypeName.String && item.foreignKey) {\n foreignKeys.add(item.foreignKey);\n }\n });\n\n return [...foreignKeys].sort((a, b) => a.localeCompare(b));\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\n\nexport const traverseValue = (\n store: JsonValueStore,\n callback: (node: JsonValueStore) => void,\n) => {\n callback(store);\n\n if (store.type === JsonSchemaTypeName.Object) {\n Object.values(store.value).forEach((item) => {\n traverseValue(item, callback);\n });\n } else if (store.type === JsonSchemaTypeName.Array) {\n store.value.forEach((itemValue) => {\n traverseValue(itemValue, callback);\n });\n }\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { traverseValue } from './traverseValue.js';\n\nexport type GetForeignKeysFromValueType = {\n tableId: string;\n rowIds: string[];\n};\n\nexport const getForeignKeysFromValue = (\n value: JsonValueStore,\n): GetForeignKeysFromValueType[] => {\n const foreignKeys = new Map<string, Set<string>>();\n\n traverseValue(value, (item) => {\n if (item.type === JsonSchemaTypeName.String && item.foreignKey) {\n let tableForeignKey = foreignKeys.get(item.foreignKey);\n\n if (!tableForeignKey) {\n tableForeignKey = new Set<string>();\n foreignKeys.set(item.foreignKey, tableForeignKey);\n }\n\n tableForeignKey.add(item.getPlainValue());\n }\n });\n\n return [...foreignKeys].map(([tableId, rowIds]) => ({\n tableId,\n rowIds: [...rowIds].sort((a, b) => a.localeCompare(b)),\n }));\n};\n","import { JsonSchema, JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { traverseStore } from './traverseStore.js';\nimport { validateJsonFieldName } from './validateJsonFieldName.js';\n\nexport const getInvalidFieldNamesInSchema = (\n schema: JsonSchema,\n refs: Record<string, JsonSchema> = {},\n) => {\n const schemaStore = createJsonSchemaStore(schema, refs);\n\n const invalidFields: JsonSchemaStore[] = [];\n\n traverseStore(schemaStore, (item) => {\n if (item.parent?.type === JsonSchemaTypeName.Object) {\n if (!validateJsonFieldName(item.name)) {\n invalidFields.push(item);\n }\n }\n });\n\n return invalidFields;\n};\n","import { JsonArrayValueStore } from '../model/value/json-array-value.store.js';\nimport { JsonObjectValueStore } from '../model/value/json-object-value.store.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\n\nexport const getJsonValueStoreByPath = (\n root: JsonValueStore,\n path: string,\n): JsonValueStore => {\n if (!path) {\n return root;\n }\n\n const segments = getSegments(path);\n\n let current: JsonValueStore = root;\n\n for (const seg of segments) {\n if (current instanceof JsonObjectValueStore) {\n const next = current.value[String(seg)];\n if (!next) {\n throw new Error(`Path not found at segment \"${seg}\"`);\n }\n current = next;\n } else if (current instanceof JsonArrayValueStore) {\n if (typeof seg !== 'number') {\n throw new Error(`Invalid array index \"${seg}\"`);\n }\n const next = current.value[seg];\n if (!next) {\n throw new Error(`Path not found at segment \"${seg}\"`);\n }\n current = next;\n } else {\n throw new Error(`Cannot navigate into primitive at segment \"${seg}\"`);\n }\n }\n\n return current;\n};\n\nconst regex = /([^.[\\]]+)|\\[(\\d+)]/g;\n\nconst getSegments = (path: string) => {\n const segments: (string | number)[] = [];\n\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(path))) {\n if (match[1] !== undefined) {\n segments.push(match[1]);\n } else if (match[2] !== undefined) {\n segments.push(Number(match[2]));\n }\n }\n\n return segments;\n};\n","import { JsonSchemaTypeName } from '../types/schema.types.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { traverseValue } from './traverseValue.js';\n\nexport type ReplaceForeignKeyValueOptions = {\n valueStore: JsonValueStore;\n foreignKey: string;\n value: string;\n nextValue: string;\n};\n\nexport const replaceForeignKeyValue = (\n options: ReplaceForeignKeyValueOptions,\n) => {\n let wasUpdated = false;\n\n traverseValue(options.valueStore, (item) => {\n if (\n item.type === JsonSchemaTypeName.String &&\n item.foreignKey === options.foreignKey &&\n item.value === options.value\n ) {\n item.value = options.nextValue;\n wasUpdated = true;\n }\n });\n\n return wasUpdated;\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowIdSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowVersionIdSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowCreatedIdSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowCreatedAtSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowPublishedAtSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowUpdatedAtSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowHashSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonStringSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const rowSchemaHashSchema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n};\n","import { JsonObjectSchema, JsonSchemaTypeName } from '../types/schema.types.js';\n\nexport const fileSchema: JsonObjectSchema = {\n type: JsonSchemaTypeName.Object,\n properties: {\n status: { type: JsonSchemaTypeName.String, default: '', readOnly: true },\n fileId: { type: JsonSchemaTypeName.String, default: '', readOnly: true },\n url: { type: JsonSchemaTypeName.String, default: '', readOnly: true },\n fileName: { type: JsonSchemaTypeName.String, default: '' },\n hash: {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n },\n extension: {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n },\n mimeType: {\n type: JsonSchemaTypeName.String,\n default: '',\n readOnly: true,\n },\n size: {\n type: JsonSchemaTypeName.Number,\n default: 0,\n readOnly: true,\n },\n width: {\n type: JsonSchemaTypeName.Number,\n default: 0,\n readOnly: true,\n },\n height: {\n type: JsonSchemaTypeName.Number,\n default: 0,\n readOnly: true,\n },\n },\n required: [\n 'status',\n 'fileId',\n 'url',\n 'fileName',\n 'hash',\n 'extension',\n 'mimeType',\n 'size',\n 'width',\n 'height',\n ],\n additionalProperties: false,\n};\n","import { SystemSchemaIds } from '../consts/system-schema-ids.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport {\n fileSchema,\n rowCreatedAtSchema,\n rowCreatedIdSchema,\n rowHashSchema,\n rowPublishedAtSchema,\n rowSchemaHashSchema,\n rowUpdatedAtSchema,\n rowVersionIdSchema,\n rowIdSchema,\n} from '../plugins/index.js';\nimport { JsonSchema } from '../types/schema.types.js';\n\nexport const pluginRefs: Readonly<Record<string, JsonSchema>> = {\n [SystemSchemaIds.RowId]: rowIdSchema,\n [SystemSchemaIds.RowVersionId]: rowVersionIdSchema,\n [SystemSchemaIds.RowCreatedId]: rowCreatedIdSchema,\n [SystemSchemaIds.RowCreatedAt]: rowCreatedAtSchema,\n [SystemSchemaIds.RowPublishedAt]: rowPublishedAtSchema,\n [SystemSchemaIds.RowUpdatedAt]: rowUpdatedAtSchema,\n [SystemSchemaIds.RowHash]: rowHashSchema,\n [SystemSchemaIds.RowSchemaHash]: rowSchemaHashSchema,\n [SystemSchemaIds.File]: fileSchema,\n};\n\nexport const resolveRefs = (schema: JsonSchema) => {\n const store = createJsonSchemaStore(schema, pluginRefs);\n return store.getPlainSchema({ skip$Ref: true });\n};\n","import { JsonSchema } from '../types/schema.types.js';\nimport { JsonValue } from '../types/json.types.js';\nimport { JsonPatch } from '../types/json-patch.types.js';\nimport { JsonSchemaStore } from '../model/schema/json-schema.store.js';\nimport { JsonValueStore } from '../model/value/json-value.store.js';\nimport { getTransformation } from '../model/value/value-transformation.js';\nimport { createJsonSchemaStore } from './createJsonSchemaStore.js';\nimport { createJsonValueStore } from './createJsonValueStore.js';\nimport {\n applyAddPatch,\n applyMovePatch,\n applyRemovePatch,\n applyReplacePatch,\n} from './applyPatches.js';\n\nexport class SchemaTable {\n private readonly rows = new Map<string, JsonValueStore>();\n private store: JsonSchemaStore;\n\n constructor(\n schema: JsonSchema,\n private readonly refs: Record<string, JsonSchema> = {},\n ) {\n this.store = createJsonSchemaStore(schema, refs);\n }\n\n public applyPatches(patches: JsonPatch[]): void {\n patches.forEach((patch) => {\n switch (patch.op) {\n case 'replace': {\n const nextStore = applyReplacePatch(this.store, patch, this.refs);\n if (nextStore !== this.store) {\n this.migrateRows(nextStore);\n }\n break;\n }\n case 'remove': {\n applyRemovePatch(this.store, patch);\n break;\n }\n case 'add': {\n applyAddPatch(this.store, patch, this.refs);\n break;\n }\n case 'move': {\n applyMovePatch(this.store, patch);\n break;\n }\n default:\n throw new Error(`Unsupported patch operation`);\n }\n });\n }\n\n public getSchema(): JsonSchema {\n return this.store.getPlainSchema();\n }\n\n public addRow(rowId: string, data: JsonValue) {\n const row = createJsonValueStore(this.store, rowId, data);\n\n this.rows.set(rowId, row);\n }\n\n public getRow(id: string): JsonValue {\n const row = this.rows.get(id);\n\n if (!row) {\n throw new Error('Invalid id');\n }\n\n return row.getPlainValue();\n }\n\n public getRows(): { id: string; data: JsonValue }[] {\n return [...this.rows].map(([id, data]) => ({\n id,\n data: data.getPlainValue(),\n }));\n }\n\n private migrateRows(nextStore: JsonSchemaStore): void {\n const transformation = getTransformation(this.store, nextStore);\n\n if (transformation) {\n for (const [rowId, row] of this.rows) {\n const rawNextValue = transformation(\n row.getPlainValue(),\n nextStore.default,\n ) as JsonValue;\n\n const nextRow = createJsonValueStore(nextStore, rowId, rawNextValue);\n this.rows.set(rowId, nextRow);\n }\n }\n\n this.store = nextStore;\n }\n}\n"]}
@@ -0,0 +1,92 @@
1
+ 'use strict';
2
+
3
+ // src/mocks/schema.mocks.ts
4
+ var getReplacePatch = ({
5
+ path,
6
+ value
7
+ }) => ({
8
+ op: "replace",
9
+ path,
10
+ value
11
+ });
12
+ var getRemovePatch = ({
13
+ path
14
+ }) => ({
15
+ op: "remove",
16
+ path
17
+ });
18
+ var getAddPatch = ({
19
+ path,
20
+ value
21
+ }) => ({
22
+ op: "add",
23
+ path,
24
+ value
25
+ });
26
+ var getMovePatch = ({
27
+ from,
28
+ path
29
+ }) => ({
30
+ op: "move",
31
+ from,
32
+ path
33
+ });
34
+ var getStringSchema = (params = {}) => {
35
+ const schema = {
36
+ type: "string" /* String */,
37
+ default: params.default ?? ""
38
+ };
39
+ if (params.foreignKey) {
40
+ schema.foreignKey = params.foreignKey;
41
+ }
42
+ if (params.readOnly) {
43
+ schema.readOnly = params.readOnly;
44
+ }
45
+ return schema;
46
+ };
47
+ var getNumberSchema = (defaultValue = 0, readOnly) => {
48
+ const schema = {
49
+ type: "number" /* Number */,
50
+ default: defaultValue
51
+ };
52
+ if (readOnly) {
53
+ schema.readOnly = readOnly;
54
+ }
55
+ return schema;
56
+ };
57
+ var getBooleanSchema = (defaultValue = false, readOnly) => {
58
+ const schema = {
59
+ type: "boolean" /* Boolean */,
60
+ default: defaultValue
61
+ };
62
+ if (readOnly) {
63
+ schema.readOnly = readOnly;
64
+ }
65
+ return schema;
66
+ };
67
+ var getObjectSchema = (properties) => ({
68
+ type: "object" /* Object */,
69
+ additionalProperties: false,
70
+ required: Object.keys(properties).sort((a, b) => a.localeCompare(b)),
71
+ properties
72
+ });
73
+ var getArraySchema = (items) => ({
74
+ type: "array" /* Array */,
75
+ items
76
+ });
77
+ var getRefSchema = ($ref) => ({
78
+ $ref
79
+ });
80
+
81
+ exports.getAddPatch = getAddPatch;
82
+ exports.getArraySchema = getArraySchema;
83
+ exports.getBooleanSchema = getBooleanSchema;
84
+ exports.getMovePatch = getMovePatch;
85
+ exports.getNumberSchema = getNumberSchema;
86
+ exports.getObjectSchema = getObjectSchema;
87
+ exports.getRefSchema = getRefSchema;
88
+ exports.getRemovePatch = getRemovePatch;
89
+ exports.getReplacePatch = getReplacePatch;
90
+ exports.getStringSchema = getStringSchema;
91
+ //# sourceMappingURL=index.cjs.map
92
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mocks/schema.mocks.ts"],"names":[],"mappings":";;;AAiBO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA;AACF,CAAA,MAGyB;AAAA,EACvB,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AACF,CAAA,MAEwB;AAAA,EACtB,EAAA,EAAI,QAAA;AAAA,EACJ;AACF,CAAA;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B,IAAA;AAAA,EACA;AACF,CAAA,MAGqB;AAAA,EACnB,EAAA,EAAI,KAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,eAAe,CAAC;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,MAGsB;AAAA,EACpB,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,eAAA,GAAkB,CAC7B,MAAA,GAAoC,EAAC,KAChB;AACrB,EAAA,MAAM,MAAA,GAA2B;AAAA,IAC/B,IAAA,EAAA,QAAA;AAAA,IACA,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,GAC7B;AAEA,EAAA,IAAI,OAAO,UAAA,EAAY;AACrB,IAAA,MAAA,CAAO,aAAa,MAAA,CAAO,UAAA;AAAA,EAC7B;AAEA,EAAA,IAAI,OAAO,QAAA,EAAU;AACnB,IAAA,MAAA,CAAO,WAAW,MAAA,CAAO,QAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,eAAA,GAAkB,CAC7B,YAAA,GAAuB,CAAA,EACvB,QAAA,KACqB;AACrB,EAAA,MAAM,MAAA,GAA2B;AAAA,IAC/B,IAAA,EAAA,QAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAAA,EACpB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,CAC9B,YAAA,GAAwB,KAAA,EACxB,QAAA,KACsB;AACtB,EAAA,MAAM,MAAA,GAA4B;AAAA,IAChC,IAAA,EAAA,SAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAAA,EACpB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,eAAA,GAAkB,CAC7B,UAAA,MACsB;AAAA,EACtB,IAAA,EAAA,QAAA;AAAA,EACA,oBAAA,EAAsB,KAAA;AAAA,EACtB,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,CAAA;AAAA,EACnE;AACF,CAAA;AAEO,IAAM,cAAA,GAAiB,CAAC,KAAA,MAAwC;AAAA,EACrE,IAAA,EAAA,OAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,YAAA,GAAe,CAAC,IAAA,MAAiC;AAAA,EAC5D;AACF,CAAA","file":"index.cjs","sourcesContent":["import {\n JsonArraySchema,\n JsonBooleanSchema,\n JsonNumberSchema,\n JsonObjectSchema,\n JsonRefSchema,\n JsonSchema,\n JsonSchemaTypeName,\n JsonStringSchema,\n} from '../types/schema.types.js';\nimport {\n JsonPatchAdd,\n JsonPatchMove,\n JsonPatchRemove,\n JsonPatchReplace,\n} from '../types/json-patch.types.js';\n\nexport const getReplacePatch = ({\n path,\n value,\n}: {\n path: string;\n value: JsonSchema;\n}): JsonPatchReplace => ({\n op: 'replace',\n path,\n value,\n});\n\nexport const getRemovePatch = ({\n path,\n}: {\n path: string;\n}): JsonPatchRemove => ({\n op: 'remove',\n path,\n});\n\nexport const getAddPatch = ({\n path,\n value,\n}: {\n path: string;\n value: JsonSchema;\n}): JsonPatchAdd => ({\n op: 'add',\n path,\n value,\n});\n\nexport const getMovePatch = ({\n from,\n path,\n}: {\n from: string;\n path: string;\n}): JsonPatchMove => ({\n op: 'move',\n from,\n path,\n});\n\nexport const getStringSchema = (\n params: Partial<JsonStringSchema> = {},\n): JsonStringSchema => {\n const schema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: params.default ?? '',\n };\n\n if (params.foreignKey) {\n schema.foreignKey = params.foreignKey;\n }\n\n if (params.readOnly) {\n schema.readOnly = params.readOnly;\n }\n\n return schema;\n};\n\nexport const getNumberSchema = (\n defaultValue: number = 0,\n readOnly?: boolean,\n): JsonNumberSchema => {\n const schema: JsonNumberSchema = {\n type: JsonSchemaTypeName.Number,\n default: defaultValue,\n };\n\n if (readOnly) {\n schema.readOnly = readOnly;\n }\n\n return schema;\n};\n\nexport const getBooleanSchema = (\n defaultValue: boolean = false,\n readOnly?: boolean,\n): JsonBooleanSchema => {\n const schema: JsonBooleanSchema = {\n type: JsonSchemaTypeName.Boolean,\n default: defaultValue,\n };\n\n if (readOnly) {\n schema.readOnly = readOnly;\n }\n\n return schema;\n};\n\nexport const getObjectSchema = (\n properties: Record<string, JsonSchema>,\n): JsonObjectSchema => ({\n type: JsonSchemaTypeName.Object,\n additionalProperties: false,\n required: Object.keys(properties).sort((a, b) => a.localeCompare(b)),\n properties,\n});\n\nexport const getArraySchema = (items: JsonSchema): JsonArraySchema => ({\n type: JsonSchemaTypeName.Array,\n items,\n});\n\nexport const getRefSchema = ($ref: string): JsonRefSchema => ({\n $ref,\n});\n"]}
@@ -0,0 +1,26 @@
1
+ import { i as JsonSchema, b as JsonStringSchema, c as JsonNumberSchema, d as JsonBooleanSchema, f as JsonObjectSchema, g as JsonArraySchema, h as JsonRefSchema } from '../schema.types-Q3MYTp8z.cjs';
2
+ import { e as JsonPatchReplace, f as JsonPatchRemove, g as JsonPatchAdd, d as JsonPatchMove } from '../json-patch.types-lByaF-OL.cjs';
3
+
4
+ declare const getReplacePatch: ({ path, value, }: {
5
+ path: string;
6
+ value: JsonSchema;
7
+ }) => JsonPatchReplace;
8
+ declare const getRemovePatch: ({ path, }: {
9
+ path: string;
10
+ }) => JsonPatchRemove;
11
+ declare const getAddPatch: ({ path, value, }: {
12
+ path: string;
13
+ value: JsonSchema;
14
+ }) => JsonPatchAdd;
15
+ declare const getMovePatch: ({ from, path, }: {
16
+ from: string;
17
+ path: string;
18
+ }) => JsonPatchMove;
19
+ declare const getStringSchema: (params?: Partial<JsonStringSchema>) => JsonStringSchema;
20
+ declare const getNumberSchema: (defaultValue?: number, readOnly?: boolean) => JsonNumberSchema;
21
+ declare const getBooleanSchema: (defaultValue?: boolean, readOnly?: boolean) => JsonBooleanSchema;
22
+ declare const getObjectSchema: (properties: Record<string, JsonSchema>) => JsonObjectSchema;
23
+ declare const getArraySchema: (items: JsonSchema) => JsonArraySchema;
24
+ declare const getRefSchema: ($ref: string) => JsonRefSchema;
25
+
26
+ export { getAddPatch, getArraySchema, getBooleanSchema, getMovePatch, getNumberSchema, getObjectSchema, getRefSchema, getRemovePatch, getReplacePatch, getStringSchema };
@@ -0,0 +1,26 @@
1
+ import { i as JsonSchema, b as JsonStringSchema, c as JsonNumberSchema, d as JsonBooleanSchema, f as JsonObjectSchema, g as JsonArraySchema, h as JsonRefSchema } from '../schema.types-Q3MYTp8z.js';
2
+ import { e as JsonPatchReplace, f as JsonPatchRemove, g as JsonPatchAdd, d as JsonPatchMove } from '../json-patch.types-DiJBqfxV.js';
3
+
4
+ declare const getReplacePatch: ({ path, value, }: {
5
+ path: string;
6
+ value: JsonSchema;
7
+ }) => JsonPatchReplace;
8
+ declare const getRemovePatch: ({ path, }: {
9
+ path: string;
10
+ }) => JsonPatchRemove;
11
+ declare const getAddPatch: ({ path, value, }: {
12
+ path: string;
13
+ value: JsonSchema;
14
+ }) => JsonPatchAdd;
15
+ declare const getMovePatch: ({ from, path, }: {
16
+ from: string;
17
+ path: string;
18
+ }) => JsonPatchMove;
19
+ declare const getStringSchema: (params?: Partial<JsonStringSchema>) => JsonStringSchema;
20
+ declare const getNumberSchema: (defaultValue?: number, readOnly?: boolean) => JsonNumberSchema;
21
+ declare const getBooleanSchema: (defaultValue?: boolean, readOnly?: boolean) => JsonBooleanSchema;
22
+ declare const getObjectSchema: (properties: Record<string, JsonSchema>) => JsonObjectSchema;
23
+ declare const getArraySchema: (items: JsonSchema) => JsonArraySchema;
24
+ declare const getRefSchema: ($ref: string) => JsonRefSchema;
25
+
26
+ export { getAddPatch, getArraySchema, getBooleanSchema, getMovePatch, getNumberSchema, getObjectSchema, getRefSchema, getRemovePatch, getReplacePatch, getStringSchema };
@@ -0,0 +1,81 @@
1
+ // src/mocks/schema.mocks.ts
2
+ var getReplacePatch = ({
3
+ path,
4
+ value
5
+ }) => ({
6
+ op: "replace",
7
+ path,
8
+ value
9
+ });
10
+ var getRemovePatch = ({
11
+ path
12
+ }) => ({
13
+ op: "remove",
14
+ path
15
+ });
16
+ var getAddPatch = ({
17
+ path,
18
+ value
19
+ }) => ({
20
+ op: "add",
21
+ path,
22
+ value
23
+ });
24
+ var getMovePatch = ({
25
+ from,
26
+ path
27
+ }) => ({
28
+ op: "move",
29
+ from,
30
+ path
31
+ });
32
+ var getStringSchema = (params = {}) => {
33
+ const schema = {
34
+ type: "string" /* String */,
35
+ default: params.default ?? ""
36
+ };
37
+ if (params.foreignKey) {
38
+ schema.foreignKey = params.foreignKey;
39
+ }
40
+ if (params.readOnly) {
41
+ schema.readOnly = params.readOnly;
42
+ }
43
+ return schema;
44
+ };
45
+ var getNumberSchema = (defaultValue = 0, readOnly) => {
46
+ const schema = {
47
+ type: "number" /* Number */,
48
+ default: defaultValue
49
+ };
50
+ if (readOnly) {
51
+ schema.readOnly = readOnly;
52
+ }
53
+ return schema;
54
+ };
55
+ var getBooleanSchema = (defaultValue = false, readOnly) => {
56
+ const schema = {
57
+ type: "boolean" /* Boolean */,
58
+ default: defaultValue
59
+ };
60
+ if (readOnly) {
61
+ schema.readOnly = readOnly;
62
+ }
63
+ return schema;
64
+ };
65
+ var getObjectSchema = (properties) => ({
66
+ type: "object" /* Object */,
67
+ additionalProperties: false,
68
+ required: Object.keys(properties).sort((a, b) => a.localeCompare(b)),
69
+ properties
70
+ });
71
+ var getArraySchema = (items) => ({
72
+ type: "array" /* Array */,
73
+ items
74
+ });
75
+ var getRefSchema = ($ref) => ({
76
+ $ref
77
+ });
78
+
79
+ export { getAddPatch, getArraySchema, getBooleanSchema, getMovePatch, getNumberSchema, getObjectSchema, getRefSchema, getRemovePatch, getReplacePatch, getStringSchema };
80
+ //# sourceMappingURL=index.js.map
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mocks/schema.mocks.ts"],"names":[],"mappings":";AAiBO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA;AACF,CAAA,MAGyB;AAAA,EACvB,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AACF,CAAA,MAEwB;AAAA,EACtB,EAAA,EAAI,QAAA;AAAA,EACJ;AACF,CAAA;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B,IAAA;AAAA,EACA;AACF,CAAA,MAGqB;AAAA,EACnB,EAAA,EAAI,KAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,eAAe,CAAC;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,MAGsB;AAAA,EACpB,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,eAAA,GAAkB,CAC7B,MAAA,GAAoC,EAAC,KAChB;AACrB,EAAA,MAAM,MAAA,GAA2B;AAAA,IAC/B,IAAA,EAAA,QAAA;AAAA,IACA,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,GAC7B;AAEA,EAAA,IAAI,OAAO,UAAA,EAAY;AACrB,IAAA,MAAA,CAAO,aAAa,MAAA,CAAO,UAAA;AAAA,EAC7B;AAEA,EAAA,IAAI,OAAO,QAAA,EAAU;AACnB,IAAA,MAAA,CAAO,WAAW,MAAA,CAAO,QAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,eAAA,GAAkB,CAC7B,YAAA,GAAuB,CAAA,EACvB,QAAA,KACqB;AACrB,EAAA,MAAM,MAAA,GAA2B;AAAA,IAC/B,IAAA,EAAA,QAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAAA,EACpB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,CAC9B,YAAA,GAAwB,KAAA,EACxB,QAAA,KACsB;AACtB,EAAA,MAAM,MAAA,GAA4B;AAAA,IAChC,IAAA,EAAA,SAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAAA,EACpB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,eAAA,GAAkB,CAC7B,UAAA,MACsB;AAAA,EACtB,IAAA,EAAA,QAAA;AAAA,EACA,oBAAA,EAAsB,KAAA;AAAA,EACtB,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,CAAA;AAAA,EACnE;AACF,CAAA;AAEO,IAAM,cAAA,GAAiB,CAAC,KAAA,MAAwC;AAAA,EACrE,IAAA,EAAA,OAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,YAAA,GAAe,CAAC,IAAA,MAAiC;AAAA,EAC5D;AACF,CAAA","file":"index.js","sourcesContent":["import {\n JsonArraySchema,\n JsonBooleanSchema,\n JsonNumberSchema,\n JsonObjectSchema,\n JsonRefSchema,\n JsonSchema,\n JsonSchemaTypeName,\n JsonStringSchema,\n} from '../types/schema.types.js';\nimport {\n JsonPatchAdd,\n JsonPatchMove,\n JsonPatchRemove,\n JsonPatchReplace,\n} from '../types/json-patch.types.js';\n\nexport const getReplacePatch = ({\n path,\n value,\n}: {\n path: string;\n value: JsonSchema;\n}): JsonPatchReplace => ({\n op: 'replace',\n path,\n value,\n});\n\nexport const getRemovePatch = ({\n path,\n}: {\n path: string;\n}): JsonPatchRemove => ({\n op: 'remove',\n path,\n});\n\nexport const getAddPatch = ({\n path,\n value,\n}: {\n path: string;\n value: JsonSchema;\n}): JsonPatchAdd => ({\n op: 'add',\n path,\n value,\n});\n\nexport const getMovePatch = ({\n from,\n path,\n}: {\n from: string;\n path: string;\n}): JsonPatchMove => ({\n op: 'move',\n from,\n path,\n});\n\nexport const getStringSchema = (\n params: Partial<JsonStringSchema> = {},\n): JsonStringSchema => {\n const schema: JsonStringSchema = {\n type: JsonSchemaTypeName.String,\n default: params.default ?? '',\n };\n\n if (params.foreignKey) {\n schema.foreignKey = params.foreignKey;\n }\n\n if (params.readOnly) {\n schema.readOnly = params.readOnly;\n }\n\n return schema;\n};\n\nexport const getNumberSchema = (\n defaultValue: number = 0,\n readOnly?: boolean,\n): JsonNumberSchema => {\n const schema: JsonNumberSchema = {\n type: JsonSchemaTypeName.Number,\n default: defaultValue,\n };\n\n if (readOnly) {\n schema.readOnly = readOnly;\n }\n\n return schema;\n};\n\nexport const getBooleanSchema = (\n defaultValue: boolean = false,\n readOnly?: boolean,\n): JsonBooleanSchema => {\n const schema: JsonBooleanSchema = {\n type: JsonSchemaTypeName.Boolean,\n default: defaultValue,\n };\n\n if (readOnly) {\n schema.readOnly = readOnly;\n }\n\n return schema;\n};\n\nexport const getObjectSchema = (\n properties: Record<string, JsonSchema>,\n): JsonObjectSchema => ({\n type: JsonSchemaTypeName.Object,\n additionalProperties: false,\n required: Object.keys(properties).sort((a, b) => a.localeCompare(b)),\n properties,\n});\n\nexport const getArraySchema = (items: JsonSchema): JsonArraySchema => ({\n type: JsonSchemaTypeName.Array,\n items,\n});\n\nexport const getRefSchema = ($ref: string): JsonRefSchema => ({\n $ref,\n});\n"]}