@contember/schema-migrations 2.2.0-alpha.1 → 2.2.0-alpha.10
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.
- package/CLAUDE.md +16 -0
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs +4 -6
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.js +4 -6
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.cjs +2 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.js +2 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/development/src/utils/applyPatchCopyOnWrite.cjs +51 -0
- package/dist/development/src/utils/applyPatchCopyOnWrite.cjs.map +1 -0
- package/dist/development/src/utils/applyPatchCopyOnWrite.js +51 -0
- package/dist/development/src/utils/applyPatchCopyOnWrite.js.map +1 -0
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs +4 -6
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.js +4 -6
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.cjs +2 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.js +2 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/production/src/utils/applyPatchCopyOnWrite.cjs +51 -0
- package/dist/production/src/utils/applyPatchCopyOnWrite.cjs.map +1 -0
- package/dist/production/src/utils/applyPatchCopyOnWrite.js +51 -0
- package/dist/production/src/utils/applyPatchCopyOnWrite.js.map +1 -0
- package/dist/tests/cases/unit/patchAclSchemaModification.test.d.ts +2 -0
- package/dist/tests/cases/unit/patchAclSchemaModification.test.d.ts.map +1 -0
- package/dist/tests/src/tags.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/Migration.d.ts.map +1 -1
- package/dist/types/MigrationDescriber.d.ts.map +1 -1
- package/dist/types/SchemaDiffer.d.ts.map +1 -1
- package/dist/types/SchemaMigrator.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/types/modifications/NoopModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/RemoveTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/RemoveTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/columnUtils.d.ts +1 -1
- package/dist/types/modifications/columns/columnUtils.d.ts.map +1 -1
- package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/constraints/utils.d.ts.map +1 -1
- package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts.map +1 -1
- package/dist/types/modifications/differs/RemoveViewDiffer.d.ts.map +1 -1
- package/dist/types/modifications/differs/UpdateViewDiffer.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/CreateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/enumUtils.d.ts.map +1 -1
- package/dist/types/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
- package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/utils.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertManyHasManyToJoiningEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/helpers.d.ts.map +1 -1
- package/dist/types/modifications/relations/normalization.d.ts.map +1 -1
- package/dist/types/modifications/settings/UpdateSettingsModification.d.ts.map +1 -1
- package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
- package/dist/types/modifications/utils/columnUtils.d.ts +1 -1
- package/dist/types/modifications/utils/columnUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/createJunctionTable.d.ts.map +1 -1
- package/dist/types/modifications/utils/diffUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/getPrimaryColumnType.d.ts.map +1 -1
- package/dist/types/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/sqlUpdateUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/stringArrayEquals.d.ts.map +1 -1
- package/dist/types/modifications/utils/valueUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/viewDependencies.d.ts.map +1 -1
- package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/applyPatchCopyOnWrite.d.ts +10 -0
- package/dist/types/utils/applyPatchCopyOnWrite.d.ts.map +1 -0
- package/dist/types/utils/dbHelpers.d.ts.map +1 -1
- package/dist/types/utils/isDefined.d.ts.map +1 -1
- package/dist/types/utils/isIt.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/modifications/acl/PatchAclSchemaModification.ts +5 -6
- package/src/modifications/columns/CreateColumnModification.ts +2 -1
- package/src/utils/applyPatchCopyOnWrite.ts +63 -0
- package/tests/cases/integration/createColumn.test.ts +28 -0
- package/tests/cases/unit/patchAclSchemaModification.test.ts +144 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyPatchCopyOnWrite.js","sources":["../../../../../packages/schema-migrations/src/utils/applyPatchCopyOnWrite.ts"],"sourcesContent":["import { applyPatch, Operation, Pointer } from 'rfc6902'\n\ntype JsonContainer = { [key: string]: unknown } | unknown[]\n\n// Pointer.evaluate in rfc6902 skips these tokens, so the copy walk must skip them too.\nconst skippedTokens = new Set(['__proto__', 'constructor', 'prototype'])\n\nconst isContainer = (value: unknown): value is JsonContainer => typeof value === 'object' && value !== null\n\nconst shallowCopy = (value: JsonContainer): JsonContainer => Array.isArray(value) ? [...value] : { ...value }\n\nconst getMutatedPointers = (operation: Operation): string[] => {\n\tswitch (operation.op) {\n\t\tcase 'test':\n\t\t\treturn []\n\t\tcase 'move':\n\t\t\treturn [operation.from, operation.path]\n\t\tdefault:\n\t\t\treturn [operation.path]\n\t}\n}\n\n/**\n * Applies the patch to a copy of `root`, leaving `root` untouched. Only the containers on the paths\n * the patch writes to are copied; everything else stays shared with `root`.\n */\nexport const applyPatchCopyOnWrite = <T extends object>(root: T, patch: Operation[]): { result: T; errors: Error[] } => {\n\tconst result = { ...root }\n\tconst copies = new Set<unknown>([result])\n\tconst errors: Error[] = []\n\tfor (const operation of patch) {\n\t\t// Each path is copied against the tree as the previous operations left it: array indices shift\n\t\t// and `move` relocates an uncopied original, so a path resolved up front can miss the target.\n\t\tfor (const pointer of getMutatedPointers(operation)) {\n\t\t\tcopyParents(result, pointer, copies)\n\t\t}\n\t\tfor (const error of applyPatch(result, [operation])) {\n\t\t\tif (error !== null) {\n\t\t\t\terrors.push(error)\n\t\t\t}\n\t\t}\n\t}\n\treturn { result, errors }\n}\n\nconst copyParents = (root: object, pointer: string, copies: Set<unknown>): void => {\n\tconst tokens = Pointer.fromJSON(pointer).tokens.slice(1)\n\t// rfc6902 writes into the node reached before the last token, unless that token is skipped.\n\tconst lastToken = tokens.at(-1)\n\tconst writtenTokens = lastToken !== undefined && skippedTokens.has(lastToken) ? tokens : tokens.slice(0, -1)\n\tconst parentTokens = writtenTokens.filter(token => !skippedTokens.has(token))\n\tlet node: object = root\n\tfor (const token of parentTokens) {\n\t\tconst child: unknown = Reflect.get(node, token)\n\t\tif (!isContainer(child)) {\n\t\t\treturn\n\t\t}\n\t\tconst childCopy = copies.has(child) ? child : shallowCopy(child)\n\t\tcopies.add(childCopy)\n\t\tReflect.set(node, token, childCopy)\n\t\tnode = childCopy\n\t}\n}\n"],"names":[],"mappings":";AAKA,MAAM,gBAAgB,oBAAI,IAAI,CAAC,aAAa,eAAe,WAAW,CAAC;AAEvE,MAAM,cAAc,CAAC,UAA2C,OAAO,UAAU,YAAY,UAAU;AAEvG,MAAM,cAAc,CAAC,UAAwC,MAAM,QAAQ,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,MAAA;AAEtG,MAAM,qBAAqB,CAAC,cAAmC;AAC9D,UAAQ,UAAU,IAAA;AAAA,IACjB,KAAK;AACJ,aAAO,CAAA;AAAA,IACR,KAAK;AACJ,aAAO,CAAC,UAAU,MAAM,UAAU,IAAI;AAAA,IACvC;AACC,aAAO,CAAC,UAAU,IAAI;AAAA,EAAA;AAEzB;AAMO,MAAM,wBAAwB,CAAmB,MAAS,UAAuD;AACvH,QAAM,SAAS,EAAE,GAAG,KAAA;AACpB,QAAM,SAAS,oBAAI,IAAa,CAAC,MAAM,CAAC;AACxC,QAAM,SAAkB,CAAA;AACxB,aAAW,aAAa,OAAO;AAG9B,eAAW,WAAW,mBAAmB,SAAS,GAAG;AACpD,kBAAY,QAAQ,SAAS,MAAM;AAAA,IACpC;AACA,eAAW,SAAS,WAAW,QAAQ,CAAC,SAAS,CAAC,GAAG;AACpD,UAAI,UAAU,MAAM;AACnB,eAAO,KAAK,KAAK;AAAA,MAClB;AAAA,IACD;AAAA,EACD;AACA,SAAO,EAAE,QAAQ,OAAA;AAClB;AAEA,MAAM,cAAc,CAAC,MAAc,SAAiB,WAA+B;AAClF,QAAM,SAAS,QAAQ,SAAS,OAAO,EAAE,OAAO,MAAM,CAAC;AAEvD,QAAM,YAAY,OAAO,GAAG,EAAE;AAC9B,QAAM,gBAAgB,cAAc,UAAa,cAAc,IAAI,SAAS,IAAI,SAAS,OAAO,MAAM,GAAG,EAAE;AAC3G,QAAM,eAAe,cAAc,OAAO,CAAA,UAAS,CAAC,cAAc,IAAI,KAAK,CAAC;AAC5E,MAAI,OAAe;AACnB,aAAW,SAAS,cAAc;AACjC,UAAM,QAAiB,QAAQ,IAAI,MAAM,KAAK;AAC9C,QAAI,CAAC,YAAY,KAAK,GAAG;AACxB;AAAA,IACD;AACA,UAAM,YAAY,OAAO,IAAI,KAAK,IAAI,QAAQ,YAAY,KAAK;AAC/D,WAAO,IAAI,SAAS;AACpB,YAAQ,IAAI,MAAM,OAAO,SAAS;AAClC,WAAO;AAAA,EACR;AACD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchAclSchemaModification.test.d.ts","sourceRoot":"","sources":["../../../../tests/cases/unit/patchAclSchemaModification.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../tests/src/tags.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../tests/src/tags.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,YAAa,oBAAoB,aAAa,MAAM,EAAE,WAG7D,CAAA"}
|