declastruct 1.0.0 → 1.1.1
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/dist/.test/assets/providers/demo.provider.d.ts +32 -0
- package/dist/.test/assets/providers/demo.provider.js +101 -0
- package/dist/.test/assets/providers/demo.provider.js.map +1 -0
- package/dist/contract/cli/apply.d.ts +9 -0
- package/dist/contract/cli/apply.integration.test.js +148 -0
- package/dist/contract/cli/apply.integration.test.js.map +1 -0
- package/dist/contract/cli/apply.js +90 -0
- package/dist/contract/cli/apply.js.map +1 -0
- package/dist/contract/cli/invoke.d.ts +8 -0
- package/dist/contract/cli/invoke.js +58 -0
- package/dist/contract/cli/invoke.js.map +1 -0
- package/dist/contract/cli/plan.d.ts +10 -0
- package/dist/contract/cli/plan.integration.test.js +107 -0
- package/dist/contract/cli/plan.integration.test.js.map +1 -0
- package/dist/contract/cli/plan.js +94 -0
- package/dist/contract/cli/plan.js.map +1 -0
- package/dist/contract/sdk/index.d.ts +15 -3
- package/dist/contract/sdk/index.js +31 -17
- package/dist/contract/sdk/index.js.map +1 -1
- package/dist/domain.objects/ContextDeclastruct.d.ts +15 -0
- package/dist/{domain/DeclastructContext.js → domain.objects/ContextDeclastruct.js} +1 -1
- package/dist/domain.objects/ContextDeclastruct.js.map +1 -0
- package/dist/domain.objects/ContextDeclastruct.test.js +41 -0
- package/dist/domain.objects/ContextDeclastruct.test.js.map +1 -0
- package/dist/domain.objects/DeclastructChange.d.ts +73 -0
- package/dist/domain.objects/DeclastructChange.js +35 -0
- package/dist/domain.objects/DeclastructChange.js.map +1 -0
- package/dist/domain.objects/DeclastructChange.test.js +59 -0
- package/dist/domain.objects/DeclastructChange.test.js.map +1 -0
- package/dist/domain.objects/DeclastructDao.d.ts +39 -0
- package/dist/domain.objects/DeclastructDao.js +8 -0
- package/dist/domain.objects/DeclastructDao.js.map +1 -0
- package/dist/domain.objects/DeclastructDao.test.js +42 -0
- package/dist/domain.objects/DeclastructDao.test.js.map +1 -0
- package/dist/domain.objects/DeclastructPlan.d.ts +35 -0
- package/dist/domain.objects/DeclastructPlan.js +11 -0
- package/dist/domain.objects/DeclastructPlan.js.map +1 -0
- package/dist/domain.objects/DeclastructPlan.test.js +31 -0
- package/dist/domain.objects/DeclastructPlan.test.js.map +1 -0
- package/dist/domain.objects/DeclastructProvider.d.ts +30 -0
- package/dist/domain.objects/DeclastructProvider.js +8 -0
- package/dist/domain.objects/DeclastructProvider.js.map +1 -0
- package/dist/domain.objects/DeclastructProvider.test.js +35 -0
- package/dist/domain.objects/DeclastructProvider.test.js.map +1 -0
- package/dist/domain.objects/IsoTimestamp.d.ts +6 -0
- package/dist/{domain/DeclaredResource.js → domain.objects/IsoTimestamp.js} +1 -1
- package/dist/domain.objects/IsoTimestamp.js.map +1 -0
- package/dist/domain.objects/IsoTimestamp.test.js +10 -0
- package/dist/domain.objects/IsoTimestamp.test.js.map +1 -0
- package/dist/domain.operations/apply/applyChange.d.ts +14 -0
- package/dist/domain.operations/apply/applyChange.js +64 -0
- package/dist/domain.operations/apply/applyChange.js.map +1 -0
- package/dist/domain.operations/apply/applyChange.test.d.ts +1 -0
- package/dist/domain.operations/apply/applyChange.test.js +247 -0
- package/dist/domain.operations/apply/applyChange.test.js.map +1 -0
- package/dist/domain.operations/apply/applyChanges.d.ts +18 -0
- package/dist/domain.operations/apply/applyChanges.integration.test.d.ts +1 -0
- package/dist/domain.operations/apply/applyChanges.integration.test.js +291 -0
- package/dist/domain.operations/apply/applyChanges.integration.test.js.map +1 -0
- package/dist/domain.operations/apply/applyChanges.js +53 -0
- package/dist/domain.operations/apply/applyChanges.js.map +1 -0
- package/dist/domain.operations/plan/computeChange.d.ts +11 -0
- package/dist/domain.operations/plan/computeChange.js +78 -0
- package/dist/domain.operations/plan/computeChange.js.map +1 -0
- package/dist/domain.operations/plan/computeChange.test.d.ts +1 -0
- package/dist/domain.operations/plan/computeChange.test.js +67 -0
- package/dist/domain.operations/plan/computeChange.test.js.map +1 -0
- package/dist/domain.operations/plan/extractResourcesFromPlan.d.ts +8 -0
- package/dist/domain.operations/plan/extractResourcesFromPlan.js +17 -0
- package/dist/domain.operations/plan/extractResourcesFromPlan.js.map +1 -0
- package/dist/domain.operations/plan/getDaoByResource.d.ts +12 -0
- package/dist/domain.operations/plan/getDaoByResource.js +41 -0
- package/dist/domain.operations/plan/getDaoByResource.js.map +1 -0
- package/dist/domain.operations/plan/getDaoByResource.test.d.ts +1 -0
- package/dist/domain.operations/plan/getDaoByResource.test.js +99 -0
- package/dist/domain.operations/plan/getDaoByResource.test.js.map +1 -0
- package/dist/domain.operations/plan/hashChanges.d.ts +7 -0
- package/dist/domain.operations/plan/hashChanges.js +18 -0
- package/dist/domain.operations/plan/hashChanges.js.map +1 -0
- package/dist/domain.operations/plan/planChanges.d.ts +15 -0
- package/dist/domain.operations/plan/planChanges.integration.test.d.ts +1 -0
- package/dist/domain.operations/plan/planChanges.integration.test.js +197 -0
- package/dist/domain.operations/plan/planChanges.integration.test.js.map +1 -0
- package/dist/domain.operations/plan/planChanges.js +50 -0
- package/dist/domain.operations/plan/planChanges.js.map +1 -0
- package/dist/domain.operations/plan/validate.d.ts +10 -0
- package/dist/domain.operations/plan/validate.js +21 -0
- package/dist/domain.operations/plan/validate.js.map +1 -0
- package/dist/infra/asIsoTimestamp.d.ts +6 -0
- package/dist/infra/asIsoTimestamp.js +12 -0
- package/dist/infra/asIsoTimestamp.js.map +1 -0
- package/package.json +8 -15
- package/readme.md +225 -29
- package/dist/__test_assets__/getExampleContext.d.ts +0 -33
- package/dist/__test_assets__/getExampleContext.js +0 -87
- package/dist/__test_assets__/getExampleContext.js.map +0 -1
- package/dist/contract/commands/command.apply.d.ts +0 -6
- package/dist/contract/commands/command.apply.js +0 -20
- package/dist/contract/commands/command.apply.js.map +0 -1
- package/dist/contract/commands/command.plan.d.ts +0 -6
- package/dist/contract/commands/command.plan.js +0 -20
- package/dist/contract/commands/command.plan.js.map +0 -1
- package/dist/contract/commands/utils/resolveCommandInputs.d.ts +0 -17
- package/dist/contract/commands/utils/resolveCommandInputs.js +0 -23
- package/dist/contract/commands/utils/resolveCommandInputs.js.map +0 -1
- package/dist/contract/sdk/refs.d.ts +0 -2
- package/dist/contract/sdk/refs.js +0 -19
- package/dist/contract/sdk/refs.js.map +0 -1
- package/dist/contract/sdk/sync/apply.d.ts +0 -22
- package/dist/contract/sdk/sync/apply.js +0 -29
- package/dist/contract/sdk/sync/apply.js.map +0 -1
- package/dist/contract/sdk/sync/plan.d.ts +0 -22
- package/dist/contract/sdk/sync/plan.js +0 -30
- package/dist/contract/sdk/sync/plan.js.map +0 -1
- package/dist/domain/DeclaredResource.d.ts +0 -2
- package/dist/domain/DeclaredResource.js.map +0 -1
- package/dist/domain/DeclaredResourceReference.d.ts +0 -66
- package/dist/domain/DeclaredResourceReference.js +0 -42
- package/dist/domain/DeclaredResourceReference.js.map +0 -1
- package/dist/domain/DeclastructChangeProposal.d.ts +0 -61
- package/dist/domain/DeclastructChangeProposal.js +0 -37
- package/dist/domain/DeclastructChangeProposal.js.map +0 -1
- package/dist/domain/DeclastructContext.d.ts +0 -24
- package/dist/domain/DeclastructContext.js.map +0 -1
- package/dist/domain/DeclastructProvider.d.ts +0 -58
- package/dist/domain/DeclastructProvider.js +0 -3
- package/dist/domain/DeclastructProvider.js.map +0 -1
- package/dist/domain/DeclastructProviderContext.d.ts +0 -30
- package/dist/domain/DeclastructProviderContext.js +0 -3
- package/dist/domain/DeclastructProviderContext.js.map +0 -1
- package/dist/domain/DeclastructProviderResourceRemoteStateInterface.d.ts +0 -156
- package/dist/domain/DeclastructProviderResourceRemoteStateInterface.js +0 -3
- package/dist/domain/DeclastructProviderResourceRemoteStateInterface.js.map +0 -1
- package/dist/logic/actions/execute/canUpdateResource.d.ts +0 -5
- package/dist/logic/actions/execute/canUpdateResource.js +0 -12
- package/dist/logic/actions/execute/canUpdateResource.js.map +0 -1
- package/dist/logic/actions/execute/executeProposal.d.ts +0 -5
- package/dist/logic/actions/execute/executeProposal.js +0 -52
- package/dist/logic/actions/execute/executeProposal.js.map +0 -1
- package/dist/logic/actions/propose/getColoredActionToken.d.ts +0 -4
- package/dist/logic/actions/propose/getColoredActionToken.js +0 -22
- package/dist/logic/actions/propose/getColoredActionToken.js.map +0 -1
- package/dist/logic/actions/propose/getColoredProposalTitle.d.ts +0 -4
- package/dist/logic/actions/propose/getColoredProposalTitle.js +0 -34
- package/dist/logic/actions/propose/getColoredProposalTitle.js.map +0 -1
- package/dist/logic/actions/propose/proposeChangeForResource.d.ts +0 -7
- package/dist/logic/actions/propose/proposeChangeForResource.js +0 -65
- package/dist/logic/actions/propose/proposeChangeForResource.js.map +0 -1
- package/dist/logic/actions/propose/proposeChangeForResource.test.js +0 -48
- package/dist/logic/actions/propose/proposeChangeForResource.test.js.map +0 -1
- package/dist/logic/commands/command.apply.d.ts +0 -8
- package/dist/logic/commands/command.apply.js +0 -77
- package/dist/logic/commands/command.apply.js.map +0 -1
- package/dist/logic/commands/command.plan.d.ts +0 -13
- package/dist/logic/commands/command.plan.js +0 -155
- package/dist/logic/commands/command.plan.js.map +0 -1
- package/dist/logic/commands/execute.d.ts +0 -15
- package/dist/logic/commands/execute.js +0 -63
- package/dist/logic/commands/execute.js.map +0 -1
- package/dist/logic/tools/compare/castReferenceToGrokableString.d.ts +0 -16
- package/dist/logic/tools/compare/castReferenceToGrokableString.js +0 -66
- package/dist/logic/tools/compare/castReferenceToGrokableString.js.map +0 -1
- package/dist/logic/tools/compare/castReferenceToGrokableString.test.js +0 -111
- package/dist/logic/tools/compare/castReferenceToGrokableString.test.js.map +0 -1
- package/dist/logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.d.ts +0 -11
- package/dist/logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.js +0 -61
- package/dist/logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.js.map +0 -1
- package/dist/logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.test.js +0 -31
- package/dist/logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.test.js.map +0 -1
- package/dist/logic/tools/compare/resolveReferenceToCommonComparableForm.d.ts +0 -21
- package/dist/logic/tools/compare/resolveReferenceToCommonComparableForm.js +0 -53
- package/dist/logic/tools/compare/resolveReferenceToCommonComparableForm.js.map +0 -1
- package/dist/logic/tools/compare/resolveReferenceToCommonComparableForm.test.js +0 -31
- package/dist/logic/tools/compare/resolveReferenceToCommonComparableForm.test.js.map +0 -1
- package/dist/logic/tools/compare/resolveReferencesToCommonComparableForm.d.ts +0 -10
- package/dist/logic/tools/compare/resolveReferencesToCommonComparableForm.js +0 -41
- package/dist/logic/tools/compare/resolveReferencesToCommonComparableForm.js.map +0 -1
- package/dist/logic/tools/compare/resolveReferencesToCommonComparableForm.test.js +0 -174
- package/dist/logic/tools/compare/resolveReferencesToCommonComparableForm.test.js.map +0 -1
- package/dist/logic/tools/context/createDeclastructContext.d.ts +0 -10
- package/dist/logic/tools/context/createDeclastructContext.js +0 -12
- package/dist/logic/tools/context/createDeclastructContext.js.map +0 -1
- package/dist/logic/tools/context/destroyDeclastructContext.d.ts +0 -4
- package/dist/logic/tools/context/destroyDeclastructContext.js +0 -10
- package/dist/logic/tools/context/destroyDeclastructContext.js.map +0 -1
- package/dist/logic/tools/provider/castProviderContextToGlobalContext.d.ts +0 -4
- package/dist/logic/tools/provider/castProviderContextToGlobalContext.js +0 -10
- package/dist/logic/tools/provider/castProviderContextToGlobalContext.js.map +0 -1
- package/dist/logic/tools/provider/getProviderContextFromGlobalContextForResourceClass.d.ts +0 -13
- package/dist/logic/tools/provider/getProviderContextFromGlobalContextForResourceClass.js +0 -29
- package/dist/logic/tools/provider/getProviderContextFromGlobalContextForResourceClass.js.map +0 -1
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceExecutionDependenciesForResource.d.ts +0 -13
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceExecutionDependenciesForResource.js +0 -24
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceExecutionDependenciesForResource.js.map +0 -1
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass.d.ts +0 -10
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass.js +0 -21
- package/dist/logic/tools/provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass.js.map +0 -1
- package/dist/logic/tools/reference/buildPrimaryKeyTo.d.ts +0 -5
- package/dist/logic/tools/reference/buildPrimaryKeyTo.js +0 -40
- package/dist/logic/tools/reference/buildPrimaryKeyTo.js.map +0 -1
- package/dist/logic/tools/reference/buildReferenceTo.d.ts +0 -28
- package/dist/logic/tools/reference/buildReferenceTo.js +0 -92
- package/dist/logic/tools/reference/buildReferenceTo.js.map +0 -1
- package/dist/logic/tools/reference/buildReferenceTo.test.js +0 -119
- package/dist/logic/tools/reference/buildReferenceTo.test.js.map +0 -1
- package/dist/logic/tools/reference/buildUniqueKeyTo.d.ts +0 -5
- package/dist/logic/tools/reference/buildUniqueKeyTo.js +0 -40
- package/dist/logic/tools/reference/buildUniqueKeyTo.js.map +0 -1
- package/dist/logic/tools/reference/defineReferenceClassOf.d.ts +0 -5
- package/dist/logic/tools/reference/defineReferenceClassOf.js +0 -25
- package/dist/logic/tools/reference/defineReferenceClassOf.js.map +0 -1
- package/dist/logic/tools/reference/defineReferenceKeyConstituentsOf.d.ts +0 -13
- package/dist/logic/tools/reference/defineReferenceKeyConstituentsOf.js +0 -36
- package/dist/logic/tools/reference/defineReferenceKeyConstituentsOf.js.map +0 -1
- package/dist/logic/tools/reference/getByReference.d.ts +0 -15
- package/dist/logic/tools/reference/getByReference.js +0 -55
- package/dist/logic/tools/reference/getByReference.js.map +0 -1
- package/dist/logic/tools/reference/getByReference.test.js +0 -92
- package/dist/logic/tools/reference/getByReference.test.js.map +0 -1
- package/dist/logic/tools/reference/getByReferencedPrimaryKey.d.ts +0 -6
- package/dist/logic/tools/reference/getByReferencedPrimaryKey.js +0 -17
- package/dist/logic/tools/reference/getByReferencedPrimaryKey.js.map +0 -1
- package/dist/logic/tools/reference/getByReferencedUniqueKey.d.ts +0 -7
- package/dist/logic/tools/reference/getByReferencedUniqueKey.js +0 -42
- package/dist/logic/tools/reference/getByReferencedUniqueKey.js.map +0 -1
- package/dist/logic/tools/reference/getPrimaryKeyByReference.d.ts +0 -15
- package/dist/logic/tools/reference/getPrimaryKeyByReference.js +0 -36
- package/dist/logic/tools/reference/getPrimaryKeyByReference.js.map +0 -1
- package/dist/logic/tools/reference/getReferenceTo.d.ts +0 -18
- package/dist/logic/tools/reference/getReferenceTo.js +0 -55
- package/dist/logic/tools/reference/getReferenceTo.js.map +0 -1
- package/dist/logic/tools/reference/getReferenceTo.test.js +0 -95
- package/dist/logic/tools/reference/getReferenceTo.test.js.map +0 -1
- package/dist/logic/tools/reference/getUniqueKeyByReference.d.ts +0 -15
- package/dist/logic/tools/reference/getUniqueKeyByReference.js +0 -36
- package/dist/logic/tools/reference/getUniqueKeyByReference.js.map +0 -1
- package/dist/logic/tools/reference/isPrimaryKeyReference.d.ts +0 -6
- package/dist/logic/tools/reference/isPrimaryKeyReference.js +0 -7
- package/dist/logic/tools/reference/isPrimaryKeyReference.js.map +0 -1
- package/dist/logic/tools/reference/isUniqueKeyReference.d.ts +0 -6
- package/dist/logic/tools/reference/isUniqueKeyReference.js +0 -7
- package/dist/logic/tools/reference/isUniqueKeyReference.js.map +0 -1
- /package/dist/{logic/actions/propose/proposeChangeForResource.test.d.ts → contract/cli/apply.integration.test.d.ts} +0 -0
- /package/dist/{logic/tools/compare/castReferenceToGrokableString.test.d.ts → contract/cli/plan.integration.test.d.ts} +0 -0
- /package/dist/{logic/tools/compare/detectDifferenceBetweenDesiredAndRemoteStateOfResource.test.d.ts → domain.objects/ContextDeclastruct.test.d.ts} +0 -0
- /package/dist/{logic/tools/compare/resolveReferenceToCommonComparableForm.test.d.ts → domain.objects/DeclastructChange.test.d.ts} +0 -0
- /package/dist/{logic/tools/compare/resolveReferencesToCommonComparableForm.test.d.ts → domain.objects/DeclastructDao.test.d.ts} +0 -0
- /package/dist/{logic/tools/reference/buildReferenceTo.test.d.ts → domain.objects/DeclastructPlan.test.d.ts} +0 -0
- /package/dist/{logic/tools/reference/getByReference.test.d.ts → domain.objects/DeclastructProvider.test.d.ts} +0 -0
- /package/dist/{logic/tools/reference/getReferenceTo.test.d.ts → domain.objects/IsoTimestamp.test.d.ts} +0 -0
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineReferenceKeyConstituentsOf = exports.CanNotReferenceDeclaredResourceClassError = void 0;
|
|
4
|
-
class CanNotReferenceDeclaredResourceClassError extends Error {
|
|
5
|
-
constructor({ class: ofClass, reason, }) {
|
|
6
|
-
super(`
|
|
7
|
-
Can not reference declared resource of class '${ofClass.name}'. Instances of the class '${ofClass.name}' can not be referenced because ${reason}.
|
|
8
|
-
`.trim());
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.CanNotReferenceDeclaredResourceClassError = CanNotReferenceDeclaredResourceClassError;
|
|
12
|
-
const isArrayOfStrings = (value) => {
|
|
13
|
-
if (!value)
|
|
14
|
-
return false;
|
|
15
|
-
if (!Array.isArray(value))
|
|
16
|
-
return false;
|
|
17
|
-
return value.every((element) => typeof element === 'string');
|
|
18
|
-
};
|
|
19
|
-
const defineReferenceKeyConstituentsOf = ({ class: ofClass, }) => {
|
|
20
|
-
if (!isArrayOfStrings(ofClass.primary))
|
|
21
|
-
throw new CanNotReferenceDeclaredResourceClassError({
|
|
22
|
-
class: ofClass,
|
|
23
|
-
reason: `the static property 'primary' was not defined as an array of strings`,
|
|
24
|
-
});
|
|
25
|
-
if (!isArrayOfStrings(ofClass.unique))
|
|
26
|
-
throw new CanNotReferenceDeclaredResourceClassError({
|
|
27
|
-
class: ofClass,
|
|
28
|
-
reason: `the static property 'unique' was not defined as an array of strings`,
|
|
29
|
-
});
|
|
30
|
-
return {
|
|
31
|
-
primary: ofClass.primary,
|
|
32
|
-
unique: ofClass.unique,
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
exports.defineReferenceKeyConstituentsOf = defineReferenceKeyConstituentsOf;
|
|
36
|
-
//# sourceMappingURL=defineReferenceKeyConstituentsOf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineReferenceKeyConstituentsOf.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/defineReferenceKeyConstituentsOf.ts"],"names":[],"mappings":";;;AAEA,MAAa,yCAA0C,SAAQ,KAAK;IAClE,YAAY,EACV,KAAK,EAAE,OAAO,EACd,MAAM,GAIP;QACC,KAAK,CACH;gDAC0C,OAAO,CAAC,IAAI,8BAA8B,OAAO,CAAC,IAAI,mCAAmC,MAAM;KAC1I,CAAC,IAAI,EAAE,CACP,CAAC;IACJ,CAAC;CACF;AAdD,8FAcC;AAED,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAqB,EAAE;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEK,MAAM,gCAAgC,GAAG,CAAC,EAC/C,KAAK,EAAE,OAAO,GAGf,EAAE,EAAE;IACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QACpC,MAAM,IAAI,yCAAyC,CAAC;YAClD,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,sEAAsE;SAC/E,CAAC,CAAC;IACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,IAAI,yCAAyC,CAAC;YAClD,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,qEAAqE;SAC9E,CAAC,CAAC;IACL,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAmB;QACpC,MAAM,EAAE,OAAO,CAAC,MAAkB;KACnC,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,gCAAgC,oCAmB3C"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { VisualogicContext } from 'visualogic';
|
|
2
|
-
import { DeclaredResource } from '../../../domain/DeclaredResource';
|
|
3
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
4
|
-
import { DeclastructContext } from '../../../domain/DeclastructContext';
|
|
5
|
-
export declare class InvalidReferenceError extends Error {
|
|
6
|
-
constructor({ reference, }: {
|
|
7
|
-
reference: DeclaredResourceReference<any, any, any>;
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* resolves references into the referenced resource
|
|
12
|
-
*/
|
|
13
|
-
export declare const getByReference: <T extends DeclaredResource, P extends keyof T, U extends keyof T>({ reference, }: {
|
|
14
|
-
reference: DeclaredResourceReference<T, P, U>;
|
|
15
|
-
}, context: DeclastructContext & VisualogicContext) => Promise<Required<T> | null>;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getByReference = exports.InvalidReferenceError = void 0;
|
|
4
|
-
const error_fns_1 = require("@ehmpathy/error-fns");
|
|
5
|
-
const domain_objects_1 = require("domain-objects");
|
|
6
|
-
const simple_in_memory_cache_1 = require("simple-in-memory-cache");
|
|
7
|
-
const with_simple_caching_1 = require("with-simple-caching");
|
|
8
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
9
|
-
const getByReferencedPrimaryKey_1 = require("./getByReferencedPrimaryKey");
|
|
10
|
-
const getByReferencedUniqueKey_1 = require("./getByReferencedUniqueKey");
|
|
11
|
-
class InvalidReferenceError extends Error {
|
|
12
|
-
constructor({ reference, }) {
|
|
13
|
-
super(`Invalid reference of '${reference.referenceOf}' detected. Could not find an instance identified by ${JSON.stringify(reference.identifiedBy)}`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.InvalidReferenceError = InvalidReferenceError;
|
|
17
|
-
/**
|
|
18
|
-
* resolves references into the referenced resource
|
|
19
|
-
*/
|
|
20
|
-
exports.getByReference = (0, with_simple_caching_1.withSimpleCaching)(
|
|
21
|
-
// withLogTrail(
|
|
22
|
-
async ({ reference, }, context) => {
|
|
23
|
-
// if reference is by primary key, lookup the resource by primary key
|
|
24
|
-
if (reference.identifiedBy.key ===
|
|
25
|
-
DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.PRIMARY_KEY) {
|
|
26
|
-
return await (0, getByReferencedPrimaryKey_1.getByReferencedPrimaryKey)({
|
|
27
|
-
referenceOf: reference.referenceOf,
|
|
28
|
-
primaryKey: reference.identifiedBy.value,
|
|
29
|
-
}, context);
|
|
30
|
-
}
|
|
31
|
-
// if reference is by primary key, lookup the resource by primary key
|
|
32
|
-
if (reference.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.UNIQUE_KEY) {
|
|
33
|
-
return await (0, getByReferencedUniqueKey_1.getByReferencedUniqueKey)({
|
|
34
|
-
referenceOf: reference.referenceOf,
|
|
35
|
-
uniqueKey: reference.identifiedBy.value,
|
|
36
|
-
}, context);
|
|
37
|
-
}
|
|
38
|
-
// otherwise, resource reference was declared incorrectly. this should not happen due to types
|
|
39
|
-
throw new error_fns_1.UnexpectedCodePathError('invalid resource reference declaration', {
|
|
40
|
-
reference,
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
// {
|
|
44
|
-
// name: getResourceNameFromFileName(__filename),
|
|
45
|
-
// },
|
|
46
|
-
// ),
|
|
47
|
-
{
|
|
48
|
-
cache: (0, simple_in_memory_cache_1.createCache)({
|
|
49
|
-
expiration: { seconds: 60 }, // cache up to 60 sec. no operation will both .get, .set, and .get again (read-after-write) within 60 sec
|
|
50
|
-
}),
|
|
51
|
-
serialize: {
|
|
52
|
-
key: ({ forInput }) => (0, domain_objects_1.serialize)(forInput[0]), // omit the context
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=getByReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getByReference.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getByReference.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,mDAA2C;AAC3C,mEAAqD;AAErD,6DAAwD;AAGxD,yFAGmD;AAEnD,2EAAwE;AACxE,yEAAsE;AAEtE,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,EACV,SAAS,GAGV;QACC,KAAK,CACH,yBACE,SAAS,CAAC,WACZ,wDAAwD,IAAI,CAAC,SAAS,CACpE,SAAS,CAAC,YAAY,CACvB,EAAE,CACJ,CAAC;IACJ,CAAC;CACF;AAdD,sDAcC;AAED;;GAEG;AACU,QAAA,cAAc,GAAG,IAAA,uCAAiB;AAC7C,gBAAgB;AAChB,KAAK,EACH,EACE,SAAS,GAGV,EACD,OAA+C,EAClB,EAAE;IAC/B,qEAAqE;IACrE,IACE,SAAS,CAAC,YAAY,CAAC,GAAG;QAC1B,4DAAgC,CAAC,WAAW,EAC5C,CAAC;QACD,OAAO,MAAM,IAAA,qDAAyB,EACpC;YACE,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK;SACzC,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,IACE,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,UAAU,EAC1E,CAAC;QACD,OAAO,MAAM,IAAA,mDAAwB,EACnC;YACE,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK;SACxC,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,8FAA8F;IAC9F,MAAM,IAAI,mCAAuB,CAC/B,wCAAwC,EACxC;QACE,SAAS;KACV,CACF,CAAC;AACJ,CAAC;AACD,IAAI;AACJ,mDAAmD;AACnD,KAAK;AACL,KAAK;AACL;IACE,KAAK,EAAE,IAAA,oCAAW,EAAC;QACjB,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,yGAAyG;KACvI,CAAC;IACF,SAAS,EAAE;QACT,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAA,0BAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB;KACnE;CACF,CACF,CAAC"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const domain_objects_1 = require("domain-objects");
|
|
4
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
5
|
-
const getByReference_1 = require("./getByReference");
|
|
6
|
-
const getReferenceTo_1 = require("./getReferenceTo");
|
|
7
|
-
const log = console;
|
|
8
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
9
|
-
}
|
|
10
|
-
CNCMachine.primary = ['uuid'];
|
|
11
|
-
CNCMachine.unique = ['serialNumber'];
|
|
12
|
-
const exampleMachine = new CNCMachine({
|
|
13
|
-
uuid: 'de0e34ca-ce61-4884-ace5-093a1a32ff92',
|
|
14
|
-
serialNumber: '821',
|
|
15
|
-
size: 'big',
|
|
16
|
-
location: 'basement',
|
|
17
|
-
});
|
|
18
|
-
const cncMachineRemoteStateInterface = {
|
|
19
|
-
for: CNCMachine.name,
|
|
20
|
-
findByPrimary: async ({ uuid }) => {
|
|
21
|
-
if (uuid === exampleMachine.uuid)
|
|
22
|
-
return exampleMachine;
|
|
23
|
-
return null;
|
|
24
|
-
},
|
|
25
|
-
findByUnique: async ({ serialNumber }) => {
|
|
26
|
-
if (serialNumber === exampleMachine.serialNumber)
|
|
27
|
-
return exampleMachine;
|
|
28
|
-
return null;
|
|
29
|
-
},
|
|
30
|
-
create: () => Promise.reject(new Error('todo')),
|
|
31
|
-
destroy: () => Promise.reject(new Error('todo')),
|
|
32
|
-
};
|
|
33
|
-
const exampleContext = {
|
|
34
|
-
log,
|
|
35
|
-
providers: [
|
|
36
|
-
{
|
|
37
|
-
agentOptions: {},
|
|
38
|
-
interfaces: {
|
|
39
|
-
[cncMachineRemoteStateInterface.for]: cncMachineRemoteStateInterface,
|
|
40
|
-
}, // TODO: fix types to make this assertion not needed
|
|
41
|
-
hooks: {},
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
resources: [], // no resources needed in context for this test
|
|
45
|
-
};
|
|
46
|
-
// todo: remove the declastruct references in favor of domain-object references
|
|
47
|
-
describe.skip('getByReference', () => {
|
|
48
|
-
it('should be able to find by autogenerated reference', async () => {
|
|
49
|
-
const autogeneratedReference = (0, getReferenceTo_1.getRef)(exampleMachine);
|
|
50
|
-
const resource = await (0, getByReference_1.getByReference)({
|
|
51
|
-
reference: autogeneratedReference,
|
|
52
|
-
}, exampleContext);
|
|
53
|
-
expect(resource).toBeInstanceOf(CNCMachine);
|
|
54
|
-
});
|
|
55
|
-
it('should be able to find by manually built primary key reference', async () => {
|
|
56
|
-
const primaryKeyReference = (0, buildReferenceTo_1.buildRef)(CNCMachine, {
|
|
57
|
-
uuid: exampleMachine.uuid,
|
|
58
|
-
});
|
|
59
|
-
const resource = await (0, getByReference_1.getByReference)({
|
|
60
|
-
reference: primaryKeyReference,
|
|
61
|
-
}, exampleContext);
|
|
62
|
-
expect(resource).toBeInstanceOf(CNCMachine);
|
|
63
|
-
});
|
|
64
|
-
it('should be able to find by manually built unique key reference', async () => {
|
|
65
|
-
const uniqueKeyReference = (0, buildReferenceTo_1.buildRef)(CNCMachine, {
|
|
66
|
-
serialNumber: exampleMachine.serialNumber,
|
|
67
|
-
});
|
|
68
|
-
const resource = await (0, getByReference_1.getByReference)({
|
|
69
|
-
reference: uniqueKeyReference,
|
|
70
|
-
}, exampleContext);
|
|
71
|
-
expect(resource).toBeInstanceOf(CNCMachine);
|
|
72
|
-
});
|
|
73
|
-
it('should return null if the resource does not exist in remote state by primary key', async () => {
|
|
74
|
-
const primaryKeyReference = (0, buildReferenceTo_1.buildRef)(CNCMachine, {
|
|
75
|
-
uuid: '__RANDO_UUID__',
|
|
76
|
-
});
|
|
77
|
-
const resource = await (0, getByReference_1.getByReference)({
|
|
78
|
-
reference: primaryKeyReference,
|
|
79
|
-
}, exampleContext);
|
|
80
|
-
expect(resource).toEqual(null);
|
|
81
|
-
});
|
|
82
|
-
it('should return null if the resource does not exist in remote state by unique key', async () => {
|
|
83
|
-
const uniqueKeyReference = (0, buildReferenceTo_1.buildRef)(CNCMachine, {
|
|
84
|
-
serialNumber: '__RANDO_SERIAL_NUMBER__',
|
|
85
|
-
});
|
|
86
|
-
const resource = await (0, getByReference_1.getByReference)({
|
|
87
|
-
reference: uniqueKeyReference,
|
|
88
|
-
}, exampleContext);
|
|
89
|
-
expect(resource).toEqual(null);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=getByReference.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getByReference.test.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getByReference.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { DeclaredResource } from '../../../domain/DeclaredResource';
|
|
2
|
-
import { DeclastructContext } from '../../../domain/DeclastructContext';
|
|
3
|
-
export declare const getByReferencedPrimaryKey: <R extends DeclaredResource, P extends keyof R>({ referenceOf, primaryKey, }: {
|
|
4
|
-
referenceOf: string;
|
|
5
|
-
primaryKey: Required<Pick<R, P>>;
|
|
6
|
-
}, context: DeclastructContext) => Promise<Required<R> | null>;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getByReferencedPrimaryKey = void 0;
|
|
4
|
-
const getProviderContextFromGlobalContextForResourceClass_1 = require("../provider/getProviderContextFromGlobalContextForResourceClass");
|
|
5
|
-
const getProviderResourceRemoteStateInterfaceFromContextForResourceClass_1 = require("../provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass");
|
|
6
|
-
const getByReferencedPrimaryKey = ({ referenceOf, primaryKey, }, context) => {
|
|
7
|
-
// lookup the interface
|
|
8
|
-
const persistanceInterface = (0, getProviderResourceRemoteStateInterfaceFromContextForResourceClass_1.getProviderResourceRemoteStateInterfaceFromContextForResourceClass)({
|
|
9
|
-
resourceClassName: referenceOf,
|
|
10
|
-
}, context);
|
|
11
|
-
// lookup the provider context
|
|
12
|
-
const providerContext = (0, getProviderContextFromGlobalContextForResourceClass_1.getProviderContextFromGlobalContextForResourceClass)({ resourceClassName: referenceOf }, context);
|
|
13
|
-
// find by primary
|
|
14
|
-
return persistanceInterface.findByPrimary(primaryKey, providerContext);
|
|
15
|
-
};
|
|
16
|
-
exports.getByReferencedPrimaryKey = getByReferencedPrimaryKey;
|
|
17
|
-
//# sourceMappingURL=getByReferencedPrimaryKey.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getByReferencedPrimaryKey.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getByReferencedPrimaryKey.ts"],"names":[],"mappings":";;;AAEA,yIAAsI;AACtI,uKAAoK;AAE7J,MAAM,yBAAyB,GAAG,CAIvC,EACE,WAAW,EACX,UAAU,GAIX,EACD,OAA2B,EAC3B,EAAE;IACF,uBAAuB;IACvB,MAAM,oBAAoB,GACxB,IAAA,uIAAkE,EAMhE;QACE,iBAAiB,EAAE,WAAW;KAC/B,EACD,OAAO,CACR,CAAC;IAEJ,8BAA8B;IAC9B,MAAM,eAAe,GAAG,IAAA,yGAAmD,EACzE,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAClC,OAAO,CACR,CAAC;IAEF,kBAAkB;IAClB,OAAO,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACzE,CAAC,CAAC;AAnCW,QAAA,yBAAyB,6BAmCpC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { VisualogicContext } from 'visualogic';
|
|
2
|
-
import { DeclaredResource } from '../../../domain/DeclaredResource';
|
|
3
|
-
import { DeclastructContext } from '../../../domain/DeclastructContext';
|
|
4
|
-
export declare const getByReferencedUniqueKey: <R extends DeclaredResource, U extends keyof R>({ referenceOf, uniqueKey, }: {
|
|
5
|
-
referenceOf: string;
|
|
6
|
-
uniqueKey: Required<Pick<R, U>>;
|
|
7
|
-
}, context: DeclastructContext & VisualogicContext) => Promise<Required<R> | null>;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getByReferencedUniqueKey = void 0;
|
|
4
|
-
const getProviderContextFromGlobalContextForResourceClass_1 = require("../provider/getProviderContextFromGlobalContextForResourceClass");
|
|
5
|
-
const getProviderResourceRemoteStateInterfaceFromContextForResourceClass_1 = require("../provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass");
|
|
6
|
-
const getByReferencedUniqueKey = async ({ referenceOf, uniqueKey, }, context) => {
|
|
7
|
-
// lookup the interface
|
|
8
|
-
// const stopwatchOne = startDurationStopwatch(
|
|
9
|
-
// {
|
|
10
|
-
// for: `getByReferencedUniqueKey.ofClass::${referenceOf}.getInterface`,
|
|
11
|
-
// log: { level: LogLevel.INFO, threshold: { milliseconds: 1 } },
|
|
12
|
-
// },
|
|
13
|
-
// context,
|
|
14
|
-
// );
|
|
15
|
-
const persistanceInterface = (0, getProviderResourceRemoteStateInterfaceFromContextForResourceClass_1.getProviderResourceRemoteStateInterfaceFromContextForResourceClass)({
|
|
16
|
-
resourceClassName: referenceOf,
|
|
17
|
-
}, context);
|
|
18
|
-
// stopwatchOne.stop();
|
|
19
|
-
// lookup the provider context
|
|
20
|
-
// const stopwatchTwo = startDurationStopwatch(
|
|
21
|
-
// {
|
|
22
|
-
// for: `getByReferencedUniqueKey.ofClass::${referenceOf}.getContext`,
|
|
23
|
-
// log: { level: LogLevel.INFO, threshold: { milliseconds: 1 } },
|
|
24
|
-
// },
|
|
25
|
-
// context,
|
|
26
|
-
// );
|
|
27
|
-
const providerContext = (0, getProviderContextFromGlobalContextForResourceClass_1.getProviderContextFromGlobalContextForResourceClass)({ resourceClassName: referenceOf }, context);
|
|
28
|
-
// stopwatchTwo.stop();
|
|
29
|
-
// find by unique
|
|
30
|
-
// const stopwatchThree = startDurationStopwatch(
|
|
31
|
-
// {
|
|
32
|
-
// for: `getByReferencedUniqueKey.ofClass::${referenceOf}:persistanceInterface.findByUnique`,
|
|
33
|
-
// log: { level: LogLevel.INFO, threshold: { milliseconds: 1 } },
|
|
34
|
-
// },
|
|
35
|
-
// context,
|
|
36
|
-
// );
|
|
37
|
-
const result = await persistanceInterface.findByUnique(uniqueKey, providerContext);
|
|
38
|
-
// stopwatchThree.stop();
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
exports.getByReferencedUniqueKey = getByReferencedUniqueKey;
|
|
42
|
-
//# sourceMappingURL=getByReferencedUniqueKey.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getByReferencedUniqueKey.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getByReferencedUniqueKey.ts"],"names":[],"mappings":";;;AAIA,yIAAsI;AACtI,uKAAoK;AAE7J,MAAM,wBAAwB,GAAG,KAAK,EAI3C,EACE,WAAW,EACX,SAAS,GAIV,EACD,OAA+C,EAC/C,EAAE;IACF,uBAAuB;IACvB,+CAA+C;IAC/C,MAAM;IACN,4EAA4E;IAC5E,qEAAqE;IACrE,OAAO;IACP,aAAa;IACb,KAAK;IACL,MAAM,oBAAoB,GACxB,IAAA,uIAAkE,EAMhE;QACE,iBAAiB,EAAE,WAAW;KAC/B,EACD,OAAO,CACR,CAAC;IACJ,uBAAuB;IAEvB,8BAA8B;IAC9B,+CAA+C;IAC/C,MAAM;IACN,0EAA0E;IAC1E,qEAAqE;IACrE,OAAO;IACP,aAAa;IACb,KAAK;IACL,MAAM,eAAe,GAAG,IAAA,yGAAmD,EACzE,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAClC,OAAO,CACR,CAAC;IACF,uBAAuB;IAEvB,iBAAiB;IACjB,iDAAiD;IACjD,MAAM;IACN,iGAAiG;IACjG,qEAAqE;IACrE,OAAO;IACP,aAAa;IACb,KAAK;IACL,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,CACpD,SAAS,EACT,eAAe,CAChB,CAAC;IACF,yBAAyB;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA/DW,QAAA,wBAAwB,4BA+DnC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { VisualogicContext } from 'visualogic';
|
|
2
|
-
import { DeclaredResource } from '../../../domain/DeclaredResource';
|
|
3
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
4
|
-
import { DeclastructContext } from '../../../domain/DeclastructContext';
|
|
5
|
-
/**
|
|
6
|
-
* tactic: gets the primary key of a resource by reference
|
|
7
|
-
* strategy
|
|
8
|
-
* - if reference is identified by primary key, then return it
|
|
9
|
-
* - if reference is identified by unique key, then get the resource by reference, and build the primary key from it
|
|
10
|
-
* usecase
|
|
11
|
-
* - speed up unique key resolution by returning it from the reference if already present, preventing redundant downstream calls
|
|
12
|
-
*/
|
|
13
|
-
export declare const getPrimaryKeyByReference: <T extends DeclaredResource, P extends keyof T, U extends keyof T>({ reference, }: {
|
|
14
|
-
reference: DeclaredResourceReference<T, P, U>;
|
|
15
|
-
}, context: DeclastructContext & VisualogicContext) => Promise<Required<Pick<T, P>>>;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPrimaryKeyByReference = void 0;
|
|
4
|
-
const error_fns_1 = require("@ehmpathy/error-fns");
|
|
5
|
-
const error_fns_2 = require("@ehmpathy/error-fns");
|
|
6
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
7
|
-
const buildPrimaryKeyTo_1 = require("./buildPrimaryKeyTo");
|
|
8
|
-
const getByReference_1 = require("./getByReference");
|
|
9
|
-
/**
|
|
10
|
-
* tactic: gets the primary key of a resource by reference
|
|
11
|
-
* strategy
|
|
12
|
-
* - if reference is identified by primary key, then return it
|
|
13
|
-
* - if reference is identified by unique key, then get the resource by reference, and build the primary key from it
|
|
14
|
-
* usecase
|
|
15
|
-
* - speed up unique key resolution by returning it from the reference if already present, preventing redundant downstream calls
|
|
16
|
-
*/
|
|
17
|
-
const getPrimaryKeyByReference = async ({ reference, }, context) => {
|
|
18
|
-
// if reference is by primary key, return the value
|
|
19
|
-
if (reference.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.PRIMARY_KEY)
|
|
20
|
-
return reference.identifiedBy.value;
|
|
21
|
-
// if reference is by unique key, get the resource by reference and build the primary key from it
|
|
22
|
-
if (reference.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.UNIQUE_KEY) {
|
|
23
|
-
const resource = await (0, getByReference_1.getByReference)({ reference }, context);
|
|
24
|
-
if (!resource)
|
|
25
|
-
throw new error_fns_1.BadRequestError(
|
|
26
|
-
// todo: make this a typed error
|
|
27
|
-
'could not find resource by unique-key reference to getPrimaryKeyByReference', { reference });
|
|
28
|
-
return (0, buildPrimaryKeyTo_1.buildPrimaryKeyTo)(resource.constructor, resource);
|
|
29
|
-
}
|
|
30
|
-
// otherwise, resource reference was declared incorrectly. this should not happen due to types
|
|
31
|
-
throw new error_fns_2.UnexpectedCodePathError('invalid resource reference declaration', {
|
|
32
|
-
reference,
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
exports.getPrimaryKeyByReference = getPrimaryKeyByReference;
|
|
36
|
-
//# sourceMappingURL=getPrimaryKeyByReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getPrimaryKeyByReference.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getPrimaryKeyByReference.ts"],"names":[],"mappings":";;;AAAA,mDAAsD;AACtD,mDAA8D;AAI9D,yFAGmD;AAEnD,2DAAwD;AACxD,qDAAkD;AAElD;;;;;;;GAOG;AACI,MAAM,wBAAwB,GAAG,KAAK,EAK3C,EACE,SAAS,GAGV,EACD,OAA+C,EAChB,EAAE;IACjC,mDAAmD;IACnD,IACE,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,WAAW;QAE3E,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;IAEtC,iGAAiG;IACjG,IACE,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,UAAU,EAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAc,EAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ;YACX,MAAM,IAAI,2BAAe;YACvB,gCAAgC;YAChC,6EAA6E,EAC7E,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,OAAO,IAAA,qCAAiB,EAAC,QAAQ,CAAC,WAAkB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,8FAA8F;IAC9F,MAAM,IAAI,mCAAuB,CAAC,wCAAwC,EAAE;QAC1E,SAAS;KACV,CAAC,CAAC;AACL,CAAC,CAAC;AApCW,QAAA,wBAAwB,4BAoCnC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
3
|
-
export declare class CanNotReferenceDeclaredResourceError extends Error {
|
|
4
|
-
constructor({ resource, reason, }: {
|
|
5
|
-
resource: DomainObject<any>;
|
|
6
|
-
reason: string;
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* returns a reference to a resource
|
|
11
|
-
* - uses the primary key if possible
|
|
12
|
-
* - uses the unique key otherwise
|
|
13
|
-
*
|
|
14
|
-
* note
|
|
15
|
-
* - this is a convinience wrapper for the function `buildReferenceTo`
|
|
16
|
-
*/
|
|
17
|
-
export declare const getReferenceTo: <T extends DomainObject<any>, P extends keyof T, U extends keyof T>(resource: T) => DeclaredResourceReference<T, P, U>;
|
|
18
|
-
export { getReferenceTo as getRef };
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRef = exports.getReferenceTo = exports.CanNotReferenceDeclaredResourceError = void 0;
|
|
4
|
-
const domain_objects_1 = require("domain-objects");
|
|
5
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
6
|
-
class CanNotReferenceDeclaredResourceError extends Error {
|
|
7
|
-
constructor({ resource, reason, }) {
|
|
8
|
-
super(`
|
|
9
|
-
Can not reference declared resource ${resource.constructor?.name
|
|
10
|
-
? `of class '${resource.constructor.name}'`
|
|
11
|
-
: ''} because ${reason}.
|
|
12
|
-
|
|
13
|
-
resource
|
|
14
|
-
${JSON.stringify(resource, null, 2)}
|
|
15
|
-
`.trim());
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.CanNotReferenceDeclaredResourceError = CanNotReferenceDeclaredResourceError;
|
|
19
|
-
/**
|
|
20
|
-
* returns a reference to a resource
|
|
21
|
-
* - uses the primary key if possible
|
|
22
|
-
* - uses the unique key otherwise
|
|
23
|
-
*
|
|
24
|
-
* note
|
|
25
|
-
* - this is a convinience wrapper for the function `buildReferenceTo`
|
|
26
|
-
*/
|
|
27
|
-
const getReferenceTo = (resource) => {
|
|
28
|
-
// confirm that it is an instance of a domain object
|
|
29
|
-
if (!(resource instanceof domain_objects_1.DomainObject))
|
|
30
|
-
throw new CanNotReferenceDeclaredResourceError({
|
|
31
|
-
resource,
|
|
32
|
-
reason: 'the resource is not an instance of a DomainObject class',
|
|
33
|
-
});
|
|
34
|
-
// confirm that it is an instance of a domain entity
|
|
35
|
-
if (!(resource instanceof domain_objects_1.DomainEntity))
|
|
36
|
-
throw new CanNotReferenceDeclaredResourceError({
|
|
37
|
-
resource,
|
|
38
|
-
reason: 'the resource is not an instance of a DomainEntity class. only Entities have distinct state of their own',
|
|
39
|
-
});
|
|
40
|
-
// try to build the reference
|
|
41
|
-
try {
|
|
42
|
-
return (0, buildReferenceTo_1.buildReferenceTo)(resource.constructor, resource);
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
if (error instanceof buildReferenceTo_1.CanNotBuildReferenceError)
|
|
46
|
-
throw new CanNotReferenceDeclaredResourceError({
|
|
47
|
-
resource,
|
|
48
|
-
reason: 'neither the primary key nor unique key is present in the resource',
|
|
49
|
-
});
|
|
50
|
-
throw error; // otherwise, forward the error
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
exports.getReferenceTo = getReferenceTo;
|
|
54
|
-
exports.getRef = exports.getReferenceTo;
|
|
55
|
-
//# sourceMappingURL=getReferenceTo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getReferenceTo.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getReferenceTo.ts"],"names":[],"mappings":";;;AAAA,mDAA4D;AAG5D,yDAG4B;AAE5B,MAAa,oCAAqC,SAAQ,KAAK;IAC7D,YAAY,EACV,QAAQ,EACR,MAAM,GAIP;QACC,KAAK,CACH;sCAEE,QAAQ,CAAC,WAAW,EAAE,IAAI;YACxB,CAAC,CAAC,aAAa,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG;YAC3C,CAAC,CAAC,EACN,YAAY,MAAM;;;EAGtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9B,CAAC,IAAI,EAAE,CACP,CAAC;IACJ,CAAC;CACF;AArBD,oFAqBC;AACD;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAW5B,QAAW,EACyB,EAAE;IACtC,oDAAoD;IACpD,IAAI,CAAC,CAAC,QAAQ,YAAY,6BAAY,CAAC;QACrC,MAAM,IAAI,oCAAoC,CAAC;YAC7C,QAAQ;YACR,MAAM,EAAE,yDAAyD;SAClE,CAAC,CAAC;IAEL,oDAAoD;IACpD,IAAI,CAAC,CAAC,QAAQ,YAAY,6BAAY,CAAC;QACrC,MAAM,IAAI,oCAAoC,CAAC;YAC7C,QAAQ;YACR,MAAM,EACJ,yGAAyG;SAC5G,CAAC,CAAC;IAEL,6BAA6B;IAC7B,IAAI,CAAC;QACH,OAAO,IAAA,mCAAgB,EAAC,QAAQ,CAAC,WAAkB,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,YAAY,4CAAyB;YAC5C,MAAM,IAAI,oCAAoC,CAAC;gBAC7C,QAAQ;gBACR,MAAM,EACJ,mEAAmE;aACtE,CAAC,CAAC;QACL,MAAM,KAAK,CAAC,CAAC,+BAA+B;IAC9C,CAAC;AACH,CAAC,CAAC;AAxCW,QAAA,cAAc,kBAwCzB;AAEyB,iBA1Cd,sBAAc,CA0CM"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const domain_objects_1 = require("domain-objects");
|
|
4
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
5
|
-
const getReferenceTo_1 = require("./getReferenceTo");
|
|
6
|
-
// todo: remove the declastruct references in favor of domain-object references
|
|
7
|
-
describe.skip('getReferenceTo', () => {
|
|
8
|
-
it('should throw a helpful error if the resource is not an instance of a domain object', () => {
|
|
9
|
-
try {
|
|
10
|
-
(0, getReferenceTo_1.getReferenceTo)({ name: 'bob', age: 21 });
|
|
11
|
-
throw new Error('should not reach here');
|
|
12
|
-
}
|
|
13
|
-
catch (error) {
|
|
14
|
-
expect(error).toBeInstanceOf(getReferenceTo_1.CanNotReferenceDeclaredResourceError);
|
|
15
|
-
expect(error.message).toContain('resource is not an instance of a');
|
|
16
|
-
expect(error).toMatchSnapshot();
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
it('should throw a helpful error the class does not have unique key defined', () => {
|
|
20
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
21
|
-
}
|
|
22
|
-
CNCMachine.primary = ['uuid'];
|
|
23
|
-
try {
|
|
24
|
-
(0, getReferenceTo_1.getReferenceTo)(new CNCMachine({
|
|
25
|
-
serialNumber: '821',
|
|
26
|
-
size: 'big',
|
|
27
|
-
location: 'basement',
|
|
28
|
-
}));
|
|
29
|
-
throw new Error('should not reach here');
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
expect(error).toBeInstanceOf(buildReferenceTo_1.CanNotReferenceDeclaredResourceClassError);
|
|
33
|
-
expect(error.message).toContain(`the static property 'unique' was not defined as an array of strings`);
|
|
34
|
-
expect(error).toMatchSnapshot();
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
it('should throw a helpful error the class does not have primary key defined correctly', () => {
|
|
38
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
39
|
-
}
|
|
40
|
-
CNCMachine.primary = 'uuid';
|
|
41
|
-
try {
|
|
42
|
-
(0, getReferenceTo_1.getReferenceTo)(new CNCMachine({
|
|
43
|
-
serialNumber: '821',
|
|
44
|
-
size: 'big',
|
|
45
|
-
location: 'basement',
|
|
46
|
-
}));
|
|
47
|
-
throw new Error('should not reach here');
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
expect(error).toBeInstanceOf(getReferenceTo_1.CanNotReferenceDeclaredResourceError);
|
|
51
|
-
expect(error.message).toContain(`the static property 'primary' was not defined as an array of strings`);
|
|
52
|
-
expect(error).toMatchSnapshot();
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
it('should be able to reference by unique key', () => {
|
|
56
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
57
|
-
}
|
|
58
|
-
CNCMachine.primary = ['uuid'];
|
|
59
|
-
CNCMachine.unique = ['serialNumber'];
|
|
60
|
-
const reference = (0, getReferenceTo_1.getReferenceTo)(new CNCMachine({
|
|
61
|
-
serialNumber: '821',
|
|
62
|
-
size: 'big',
|
|
63
|
-
location: 'basement',
|
|
64
|
-
}));
|
|
65
|
-
expect(reference).toEqual({
|
|
66
|
-
referenceOf: 'CNCMachine',
|
|
67
|
-
identifiedBy: {
|
|
68
|
-
key: 'UNIQUE_KEY',
|
|
69
|
-
value: { serialNumber: '821' },
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
73
|
-
});
|
|
74
|
-
it('should reference by primary key if posible', () => {
|
|
75
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
76
|
-
}
|
|
77
|
-
CNCMachine.primary = ['uuid'];
|
|
78
|
-
CNCMachine.unique = ['serialNumber'];
|
|
79
|
-
const reference = (0, getReferenceTo_1.getReferenceTo)(new CNCMachine({
|
|
80
|
-
uuid: 'de0e34ca-ce61-4884-ace5-093a1a32ff92',
|
|
81
|
-
serialNumber: '821',
|
|
82
|
-
size: 'big',
|
|
83
|
-
location: 'basement',
|
|
84
|
-
}));
|
|
85
|
-
expect(reference).toEqual({
|
|
86
|
-
referenceOf: 'CNCMachine',
|
|
87
|
-
identifiedBy: {
|
|
88
|
-
key: 'PRIMARY_KEY',
|
|
89
|
-
value: { uuid: 'de0e34ca-ce61-4884-ace5-093a1a32ff92' },
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=getReferenceTo.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getReferenceTo.test.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getReferenceTo.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { VisualogicContext } from 'visualogic';
|
|
2
|
-
import { DeclaredResource } from '../../../domain/DeclaredResource';
|
|
3
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
4
|
-
import { DeclastructContext } from '../../../domain/DeclastructContext';
|
|
5
|
-
/**
|
|
6
|
-
* tactic: gets the unique key of a resource by reference
|
|
7
|
-
* strategy
|
|
8
|
-
* - if reference is identified by unique key, then return it
|
|
9
|
-
* - if reference is identified by primary key, then get the resource by reference, and build the unique key from it
|
|
10
|
-
* usecase
|
|
11
|
-
* - speed up unique key resolution by returning it from the reference if already present, preventing redundant downstream calls
|
|
12
|
-
*/
|
|
13
|
-
export declare const getUniqueKeyByReference: <T extends DeclaredResource, P extends keyof T, U extends keyof T>({ reference, }: {
|
|
14
|
-
reference: DeclaredResourceReference<T, P, U>;
|
|
15
|
-
}, context: DeclastructContext & VisualogicContext) => Promise<Required<Pick<T, U>>>;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUniqueKeyByReference = void 0;
|
|
4
|
-
const error_fns_1 = require("@ehmpathy/error-fns");
|
|
5
|
-
const error_fns_2 = require("@ehmpathy/error-fns");
|
|
6
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
7
|
-
const buildUniqueKeyTo_1 = require("./buildUniqueKeyTo");
|
|
8
|
-
const getByReference_1 = require("./getByReference");
|
|
9
|
-
/**
|
|
10
|
-
* tactic: gets the unique key of a resource by reference
|
|
11
|
-
* strategy
|
|
12
|
-
* - if reference is identified by unique key, then return it
|
|
13
|
-
* - if reference is identified by primary key, then get the resource by reference, and build the unique key from it
|
|
14
|
-
* usecase
|
|
15
|
-
* - speed up unique key resolution by returning it from the reference if already present, preventing redundant downstream calls
|
|
16
|
-
*/
|
|
17
|
-
const getUniqueKeyByReference = async ({ reference, }, context) => {
|
|
18
|
-
// if reference is by unique key, return the value
|
|
19
|
-
if (reference.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.UNIQUE_KEY)
|
|
20
|
-
return reference.identifiedBy.value;
|
|
21
|
-
// if reference is by primary key, get the resource by reference and build the primary key from it
|
|
22
|
-
if (reference.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.PRIMARY_KEY) {
|
|
23
|
-
const resource = await (0, getByReference_1.getByReference)({ reference }, context);
|
|
24
|
-
if (!resource)
|
|
25
|
-
throw new error_fns_1.BadRequestError(
|
|
26
|
-
// todo: make this a typed error
|
|
27
|
-
'could not find resource by primary-key reference to getUniqueKeyByReference', { reference });
|
|
28
|
-
return (0, buildUniqueKeyTo_1.buildUniqueKeyTo)(resource.constructor, resource);
|
|
29
|
-
}
|
|
30
|
-
// otherwise, resource reference was declared incorrectly. this should not happen due to types
|
|
31
|
-
throw new error_fns_2.UnexpectedCodePathError('invalid resource reference declaration', {
|
|
32
|
-
reference,
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
exports.getUniqueKeyByReference = getUniqueKeyByReference;
|
|
36
|
-
//# sourceMappingURL=getUniqueKeyByReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getUniqueKeyByReference.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/getUniqueKeyByReference.ts"],"names":[],"mappings":";;;AAAA,mDAAsD;AACtD,mDAA8D;AAI9D,yFAGmD;AAEnD,yDAAsD;AACtD,qDAAkD;AAElD;;;;;;;GAOG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAK1C,EACE,SAAS,GAGV,EACD,OAA+C,EAChB,EAAE;IACjC,kDAAkD;IAClD,IACE,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,UAAU;QAE1E,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;IAEtC,kGAAkG;IAClG,IACE,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,WAAW,EAC3E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAc,EAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ;YACX,MAAM,IAAI,2BAAe;YACvB,gCAAgC;YAChC,6EAA6E,EAC7E,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,OAAO,IAAA,mCAAgB,EAAC,QAAQ,CAAC,WAAkB,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,8FAA8F;IAC9F,MAAM,IAAI,mCAAuB,CAAC,wCAAwC,EAAE;QAC1E,SAAS;KACV,CAAC,CAAC;AACL,CAAC,CAAC;AApCW,QAAA,uBAAuB,2BAoClC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { DeclaredResourceReference, DeclaredResourceReferenceKeyType } from '../../../domain/DeclaredResourceReference';
|
|
2
|
-
export declare const isPrimaryKeyReference: <T, P extends keyof T, U extends keyof T>(ref: DeclaredResourceReference<T, P, U>) => ref is DeclaredResourceReference<T, P, U> & {
|
|
3
|
-
identifiedBy: {
|
|
4
|
-
key: DeclaredResourceReferenceKeyType.PRIMARY_KEY;
|
|
5
|
-
};
|
|
6
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isPrimaryKeyReference = void 0;
|
|
4
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
5
|
-
const isPrimaryKeyReference = (ref) => ref.identifiedBy.key === DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.PRIMARY_KEY;
|
|
6
|
-
exports.isPrimaryKeyReference = isPrimaryKeyReference;
|
|
7
|
-
//# sourceMappingURL=isPrimaryKeyReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isPrimaryKeyReference.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/isPrimaryKeyReference.ts"],"names":[],"mappings":";;;AAAA,yFAGmD;AAE5C,MAAM,qBAAqB,GAAG,CAWnC,GAAuC,EAGvC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,4DAAgC,CAAC,WAAW,CAAC;AAd9D,QAAA,qBAAqB,yBAcyC"}
|