declastruct 1.0.0 → 1.1.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.
- 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 +48 -28
- 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/index.d.ts +0 -1
- package/dist/index.js +0 -18
- package/dist/index.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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProviderResourceRemoteStateInterfaceFromContextForResourceClass.js","sourceRoot":"","sources":["../../../../src/logic/tools/provider/getProviderResourceRemoteStateInterfaceFromContextForResourceClass.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAO9D;;GAEG;AACI,MAAM,kEAAkE,GAC7E,CAME,EAAE,iBAAiB,EAAiC,EACpD,OAA2B,EACmC,EAAE;IAChE,wCAAwC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CACrC,CAAC,YAAY,EAAE,EAAE,CAAC,iBAAiB,IAAI,YAAY,CAAC,UAAU,CAC/D,CAAC;IACF,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,mCAAuB,CAC/B,sCAAsC,EACtC;YACE,iBAAiB;SAClB,CACF,CAAC;IAEJ,qBAAqB;IACrB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAC3C,iBAAiB,CACqD,CAAC;IAEzE,YAAY;IACZ,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AA7BS,QAAA,kEAAkE,sEA6B3E"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
/**
|
|
3
|
-
* build the primary key of a resource
|
|
4
|
-
*/
|
|
5
|
-
export declare const buildPrimaryKeyTo: <T extends DomainObject<any>, C extends new (props: T) => T, P extends keyof T, K extends Partial<T>>(to: C, using: K) => Required<Pick<T, P>>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildPrimaryKeyTo = void 0;
|
|
4
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
5
|
-
const defineReferenceKeyConstituentsOf_1 = require("./defineReferenceKeyConstituentsOf");
|
|
6
|
-
/**
|
|
7
|
-
* build the primary key of a resource
|
|
8
|
-
*/
|
|
9
|
-
const buildPrimaryKeyTo = (
|
|
10
|
-
/**
|
|
11
|
-
* the class this is a reference to
|
|
12
|
-
*/
|
|
13
|
-
to,
|
|
14
|
-
/**
|
|
15
|
-
* the data to build the reference with
|
|
16
|
-
*/
|
|
17
|
-
using) => {
|
|
18
|
-
const referenceOf = to;
|
|
19
|
-
const referenceInput = using;
|
|
20
|
-
// get the primary key defs for the class
|
|
21
|
-
const { primary } = (0, defineReferenceKeyConstituentsOf_1.defineReferenceKeyConstituentsOf)({
|
|
22
|
-
class: referenceOf,
|
|
23
|
-
});
|
|
24
|
-
// assert that the resource has a primary key defined on it
|
|
25
|
-
const hasPrimaryKey = primary.every((key) => key in referenceInput);
|
|
26
|
-
if (!hasPrimaryKey)
|
|
27
|
-
throw new buildReferenceTo_1.CanNotBuildReferenceError({
|
|
28
|
-
referenceOf,
|
|
29
|
-
referenceInput,
|
|
30
|
-
reason: 'the primary key is not present in the reference input',
|
|
31
|
-
});
|
|
32
|
-
// extract the primary key value
|
|
33
|
-
const primaryKey = primary.reduce((summary, thisKeyKey) => {
|
|
34
|
-
const thisKeyValue = referenceInput[thisKeyKey];
|
|
35
|
-
return { ...summary, [thisKeyKey]: thisKeyValue };
|
|
36
|
-
}, {});
|
|
37
|
-
return primaryKey;
|
|
38
|
-
};
|
|
39
|
-
exports.buildPrimaryKeyTo = buildPrimaryKeyTo;
|
|
40
|
-
//# sourceMappingURL=buildPrimaryKeyTo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildPrimaryKeyTo.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/buildPrimaryKeyTo.ts"],"names":[],"mappings":";;;AAEA,yDAA+D;AAC/D,yFAAsF;AAEtF;;GAEG;AACI,MAAM,iBAAiB,GAAG;AAkB/B;;GAEG;AACH,EAAK;AAEL;;GAEG;AACH,KAAQ,EACc,EAAE;IACxB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,KAAK,CAAC;IAE7B,yCAAyC;IACzC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,mEAAgC,EAAC;QACnD,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;IAEH,2DAA2D;IAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IACpE,IAAI,CAAC,aAAa;QAChB,MAAM,IAAI,4CAAyB,CAAC;YAClC,WAAW;YACX,cAAc;YACd,MAAM,EAAE,uDAAuD;SAChE,CAAC,CAAC;IAEL,gCAAgC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;QACxD,MAAM,YAAY,GAChB,cAAc,CAAC,UAAyC,CAAC,CAAC;QAC5D,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IACpD,CAAC,EAAE,EAA0B,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AApDW,QAAA,iBAAiB,qBAoD5B"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
3
|
-
export declare class CanNotReferenceDeclaredResourceClassError extends Error {
|
|
4
|
-
constructor({ class: ofClass, reason, }: {
|
|
5
|
-
class: typeof DomainObject;
|
|
6
|
-
reason: string;
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
export declare class CanNotBuildReferenceError extends Error {
|
|
10
|
-
constructor({ referenceInput, referenceOf, reason, }: {
|
|
11
|
-
referenceInput: any;
|
|
12
|
-
referenceOf: any;
|
|
13
|
-
reason: string;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* build a reference to a resource of a particular class using a supported key
|
|
18
|
-
* - uses the unique key if possible
|
|
19
|
-
* - uses the primary key otherwise
|
|
20
|
-
*
|
|
21
|
-
* note
|
|
22
|
-
* - we prefer unique key over primary key because
|
|
23
|
-
* - it encodes the most information
|
|
24
|
-
* - it is always available for resources
|
|
25
|
-
* - it is the common comparable form of reference
|
|
26
|
-
*/
|
|
27
|
-
export declare const buildReferenceTo: <T extends DomainObject<any>, C extends new (props: T) => T, P extends keyof T, U extends keyof T, K extends Partial<T>>(to: C, using: K, as?: new (props: DeclaredResourceReference<T, P, U>) => DeclaredResourceReference<T, P, U>) => DeclaredResourceReference<T, P, U>;
|
|
28
|
-
export { buildReferenceTo as buildRef };
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildRef = exports.buildReferenceTo = exports.CanNotBuildReferenceError = exports.CanNotReferenceDeclaredResourceClassError = void 0;
|
|
4
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
5
|
-
const buildPrimaryKeyTo_1 = require("./buildPrimaryKeyTo");
|
|
6
|
-
const buildUniqueKeyTo_1 = require("./buildUniqueKeyTo");
|
|
7
|
-
const defineReferenceClassOf_1 = require("./defineReferenceClassOf");
|
|
8
|
-
const defineReferenceKeyConstituentsOf_1 = require("./defineReferenceKeyConstituentsOf");
|
|
9
|
-
class CanNotReferenceDeclaredResourceClassError extends Error {
|
|
10
|
-
constructor({ class: ofClass, reason, }) {
|
|
11
|
-
super(`
|
|
12
|
-
Can not reference declared resource of class '${ofClass.name}'. Instances of the class '${ofClass.name}' can not be referenced because ${reason}.
|
|
13
|
-
`.trim());
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.CanNotReferenceDeclaredResourceClassError = CanNotReferenceDeclaredResourceClassError;
|
|
17
|
-
class CanNotBuildReferenceError extends Error {
|
|
18
|
-
constructor({ referenceInput, referenceOf, reason, }) {
|
|
19
|
-
super(`
|
|
20
|
-
Can not build reference ${referenceOf?.name ? `to class '${referenceOf.name}'` : ''} because ${reason}.
|
|
21
|
-
|
|
22
|
-
referenceInput
|
|
23
|
-
${JSON.stringify(referenceInput, null, 2)}
|
|
24
|
-
`.trim());
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.CanNotBuildReferenceError = CanNotBuildReferenceError;
|
|
28
|
-
/**
|
|
29
|
-
* build a reference to a resource of a particular class using a supported key
|
|
30
|
-
* - uses the unique key if possible
|
|
31
|
-
* - uses the primary key otherwise
|
|
32
|
-
*
|
|
33
|
-
* note
|
|
34
|
-
* - we prefer unique key over primary key because
|
|
35
|
-
* - it encodes the most information
|
|
36
|
-
* - it is always available for resources
|
|
37
|
-
* - it is the common comparable form of reference
|
|
38
|
-
*/
|
|
39
|
-
const buildReferenceTo = (
|
|
40
|
-
/**
|
|
41
|
-
* the class this is a reference to
|
|
42
|
-
*/
|
|
43
|
-
to,
|
|
44
|
-
/**
|
|
45
|
-
* the data to build the reference with
|
|
46
|
-
*/
|
|
47
|
-
using,
|
|
48
|
-
/**
|
|
49
|
-
* the class to instantiate the reference with
|
|
50
|
-
* - defaults to the generic DeclaredResourceReference class
|
|
51
|
-
* - allows using a more specific subclass if one was created
|
|
52
|
-
*/
|
|
53
|
-
as) => {
|
|
54
|
-
const referenceOf = to;
|
|
55
|
-
const referenceInput = using;
|
|
56
|
-
const ReferenceConstructor = as ??
|
|
57
|
-
(0, defineReferenceClassOf_1.defineReferenceClassOf)({ class: referenceOf }) ??
|
|
58
|
-
DeclaredResourceReference_1.DeclaredResourceReference; // todo: start throwing errors if reference is not explicitly declared on the source class; using DeclaredResourceError produces hydration and serialization errors for "alternatives" types
|
|
59
|
-
// get the unique and unique key defs for the class
|
|
60
|
-
const { unique, primary } = (0, defineReferenceKeyConstituentsOf_1.defineReferenceKeyConstituentsOf)({
|
|
61
|
-
class: referenceOf,
|
|
62
|
-
});
|
|
63
|
-
// if unique key is defined, reference by unique key
|
|
64
|
-
const hasUniqueKey = unique.every((key) => key in referenceInput);
|
|
65
|
-
if (hasUniqueKey)
|
|
66
|
-
return new ReferenceConstructor({
|
|
67
|
-
referenceOf: referenceOf.name,
|
|
68
|
-
identifiedBy: {
|
|
69
|
-
key: DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.UNIQUE_KEY,
|
|
70
|
-
value: (0, buildUniqueKeyTo_1.buildUniqueKeyTo)(referenceOf, referenceInput),
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
// if primary key is defined, reference by primary key
|
|
74
|
-
const hasPrimaryKey = primary.every((key) => key in referenceInput);
|
|
75
|
-
if (hasPrimaryKey)
|
|
76
|
-
return new ReferenceConstructor({
|
|
77
|
-
referenceOf: referenceOf.name,
|
|
78
|
-
identifiedBy: {
|
|
79
|
-
key: DeclaredResourceReference_1.DeclaredResourceReferenceKeyType.PRIMARY_KEY,
|
|
80
|
-
value: (0, buildPrimaryKeyTo_1.buildPrimaryKeyTo)(referenceOf, referenceInput),
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
// if has neither, then the reference can not be made
|
|
84
|
-
throw new CanNotBuildReferenceError({
|
|
85
|
-
referenceOf,
|
|
86
|
-
referenceInput,
|
|
87
|
-
reason: 'neither the primary key nor unique key is present in the reference key',
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
exports.buildReferenceTo = buildReferenceTo;
|
|
91
|
-
exports.buildRef = exports.buildReferenceTo;
|
|
92
|
-
//# sourceMappingURL=buildReferenceTo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildReferenceTo.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/buildReferenceTo.ts"],"names":[],"mappings":";;;AAEA,yFAGmD;AACnD,2DAAwD;AACxD,yDAAsD;AACtD,qEAAkE;AAClE,yFAAsF;AAEtF,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,MAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAY,EACV,cAAc,EACd,WAAW,EACX,MAAM,GAKP;QACC,KAAK,CACH;0BAEE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EACzD,YAAY,MAAM;;;EAGtB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC,CAAC,IAAI,EAAE,CACP,CAAC;IACJ,CAAC;CACF;AArBD,8DAqBC;AAED;;;;;;;;;;GAUG;AACI,MAAM,gBAAgB,GAAG;AAsB9B;;GAEG;AACH,EAAK;AAEL;;GAEG;AACH,KAAQ;AAER;;;;GAIG;AACH,EAEuC,EACH,EAAE;IACtC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,KAAK,CAAC;IAC7B,MAAM,oBAAoB,GACxB,EAAE;QACF,IAAA,+CAAsB,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC9C,qDAAyB,CAAC,CAAC,4LAA4L;IAEzN,mDAAmD;IACnD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,mEAAgC,EAAC;QAC3D,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;IAEH,oDAAoD;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IAClE,IAAI,YAAY;QACd,OAAO,IAAI,oBAAoB,CAAC;YAC9B,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,YAAY,EAAE;gBACZ,GAAG,EAAE,4DAAgC,CAAC,UAAU;gBAChD,KAAK,EAAE,IAAA,mCAAgB,EAAC,WAAW,EAAE,cAAc,CAAC;aACrD;SACF,CAAuC,CAAC;IAE3C,sDAAsD;IACtD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IACpE,IAAI,aAAa;QACf,OAAO,IAAI,oBAAoB,CAAC;YAC9B,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,YAAY,EAAE;gBACZ,GAAG,EAAE,4DAAgC,CAAC,WAAW;gBACjD,KAAK,EAAE,IAAA,qCAAiB,EAAC,WAAW,EAAE,cAAc,CAAC;aACtD;SACF,CAAuC,CAAC;IAE3C,qDAAqD;IACrD,MAAM,IAAI,yBAAyB,CAAC;QAClC,WAAW;QACX,cAAc;QACd,MAAM,EACJ,wEAAwE;KAC3E,CAAC,CAAC;AACL,CAAC,CAAC;AAlFW,QAAA,gBAAgB,oBAkF3B;AAE2B,mBApFhB,wBAAgB,CAoFQ"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const domain_objects_1 = require("domain-objects");
|
|
4
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
5
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
6
|
-
// todo: remove the declastruct references in favor of domain-object references
|
|
7
|
-
describe.skip('getReferenceTo', () => {
|
|
8
|
-
it('should throw a helpful error the class does not have unique key defined', () => {
|
|
9
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
10
|
-
}
|
|
11
|
-
CNCMachine.primary = ['uuid'];
|
|
12
|
-
try {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
|
-
const ref = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, new CNCMachine({
|
|
15
|
-
serialNumber: '821',
|
|
16
|
-
size: 'big',
|
|
17
|
-
location: 'basement',
|
|
18
|
-
}));
|
|
19
|
-
throw new Error('should not reach here');
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
expect(error).toBeInstanceOf(buildReferenceTo_1.CanNotReferenceDeclaredResourceClassError);
|
|
23
|
-
expect(error.message).toContain(`the static property 'unique' was not defined as an array of strings`);
|
|
24
|
-
expect(error).toMatchSnapshot();
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
it('should throw a helpful error the class does not have primary key defined correctly', () => {
|
|
28
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
29
|
-
}
|
|
30
|
-
CNCMachine.primary = 'uuid';
|
|
31
|
-
try {
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
33
|
-
const ref = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, new CNCMachine({
|
|
34
|
-
serialNumber: '821',
|
|
35
|
-
size: 'big',
|
|
36
|
-
location: 'basement',
|
|
37
|
-
}));
|
|
38
|
-
throw new Error('should not reach here');
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
expect(error).toBeInstanceOf(buildReferenceTo_1.CanNotReferenceDeclaredResourceClassError);
|
|
42
|
-
expect(error.message).toContain(`the static property 'primary' was not defined as an array of strings`);
|
|
43
|
-
expect(error).toMatchSnapshot();
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
it('should be able to reference by unique key', () => {
|
|
47
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
48
|
-
}
|
|
49
|
-
CNCMachine.primary = ['uuid'];
|
|
50
|
-
CNCMachine.unique = ['serialNumber'];
|
|
51
|
-
const reference = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, new CNCMachine({
|
|
52
|
-
serialNumber: '821',
|
|
53
|
-
size: 'big',
|
|
54
|
-
location: 'basement',
|
|
55
|
-
}));
|
|
56
|
-
expect(reference).toEqual({
|
|
57
|
-
referenceOf: 'CNCMachine',
|
|
58
|
-
identifiedBy: {
|
|
59
|
-
key: 'UNIQUE_KEY',
|
|
60
|
-
value: { serialNumber: '821' },
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
64
|
-
});
|
|
65
|
-
it('should be able to reference by primary key', () => {
|
|
66
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
67
|
-
}
|
|
68
|
-
CNCMachine.primary = ['uuid'];
|
|
69
|
-
CNCMachine.unique = ['serialNumber'];
|
|
70
|
-
const reference = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, {
|
|
71
|
-
uuid: '__UUID__',
|
|
72
|
-
});
|
|
73
|
-
expect(reference).toEqual({
|
|
74
|
-
referenceOf: 'CNCMachine',
|
|
75
|
-
identifiedBy: {
|
|
76
|
-
key: 'PRIMARY_KEY',
|
|
77
|
-
value: { uuid: '__UUID__' },
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
81
|
-
});
|
|
82
|
-
it('should reference by unique key if both are available', () => {
|
|
83
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
84
|
-
}
|
|
85
|
-
CNCMachine.primary = ['uuid'];
|
|
86
|
-
CNCMachine.unique = ['serialNumber'];
|
|
87
|
-
const reference = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, new CNCMachine({
|
|
88
|
-
uuid: 'de0e34ca-ce61-4884-ace5-093a1a32ff92',
|
|
89
|
-
serialNumber: '821',
|
|
90
|
-
size: 'big',
|
|
91
|
-
location: 'basement',
|
|
92
|
-
}));
|
|
93
|
-
expect(reference).toEqual({
|
|
94
|
-
referenceOf: 'CNCMachine',
|
|
95
|
-
identifiedBy: {
|
|
96
|
-
key: 'UNIQUE_KEY',
|
|
97
|
-
value: { serialNumber: '821' },
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
101
|
-
});
|
|
102
|
-
it('should be able to instantiate with more specific reference class if one exists', () => {
|
|
103
|
-
class CNCMachine extends domain_objects_1.DomainObject {
|
|
104
|
-
}
|
|
105
|
-
CNCMachine.primary = ['uuid'];
|
|
106
|
-
CNCMachine.unique = ['serialNumber'];
|
|
107
|
-
class CNCMachineReference extends DeclaredResourceReference_1.DeclaredResourceReference {
|
|
108
|
-
}
|
|
109
|
-
const reference = (0, buildReferenceTo_1.buildReferenceTo)(CNCMachine, new CNCMachine({
|
|
110
|
-
uuid: 'de0e34ca-ce61-4884-ace5-093a1a32ff92',
|
|
111
|
-
serialNumber: '821',
|
|
112
|
-
size: 'big',
|
|
113
|
-
location: 'basement',
|
|
114
|
-
}), CNCMachineReference);
|
|
115
|
-
expect(reference).toBeInstanceOf(CNCMachineReference);
|
|
116
|
-
expect(reference).toMatchSnapshot(); // log for viewing
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
//# sourceMappingURL=buildReferenceTo.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildReferenceTo.test.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/buildReferenceTo.test.ts"],"names":[],"mappings":";;AAAA,mDAA8C;AAE9C,yFAAsF;AACtF,yDAG4B;AAE5B,+EAA+E;AAC/E,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAOjF,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QAOnC,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,GAAG,GAAwB,IAAA,mCAAgB,EAC/C,UAAU,EACV,IAAI,UAAU,CAAC;gBACb,YAAY,EAAE,KAAK;gBACnB,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,4DAAyC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAC7B,qEAAqE,CACtE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAO5F,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,MAAM,CAAC;QAOjC,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,GAAG,GAAwB,IAAA,mCAAgB,EAC/C,UAAU,EACV,IAAI,UAAU,CAAC;gBACb,YAAY,EAAE,KAAK;gBACnB,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,4DAAyC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAC7B,sEAAsE,CACvE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QAOnD,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,iBAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QAO1C,MAAM,SAAS,GAAwB,IAAA,mCAAgB,EACrD,UAAU,EACV,IAAI,UAAU,CAAC;YACb,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,UAAU;SACrB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE;gBACZ,GAAG,EAAE,YAAY;gBACjB,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;aAC/B;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAOpD,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,iBAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QAO1C,MAAM,SAAS,GAAwB,IAAA,mCAAgB,EAAC,UAAU,EAAE;YAClE,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE;gBACZ,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;aAC5B;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAO9D,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,iBAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QAO1C,MAAM,SAAS,GAAwB,IAAA,mCAAgB,EACrD,UAAU,EACV,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,sCAAsC;YAC5C,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,UAAU;SACrB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE;gBACZ,GAAG,EAAE,YAAY;gBACjB,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;aAC/B;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QAOxF,MAAM,UAAW,SAAQ,6BAAwB;;QACjC,kBAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,iBAAM,GAAG,CAAC,cAAc,CAAC,CAAC;QAE1C,MAAM,mBAAoB,SAAQ,qDAIjC;SAAG;QACJ,MAAM,SAAS,GAAG,IAAA,mCAAgB,EAChC,UAAU,EACV,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,sCAAsC;YAC5C,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,UAAU;SACrB,CAAC,EACF,mBAAmB,CACpB,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
/**
|
|
3
|
-
* build the unique key of the resource
|
|
4
|
-
*/
|
|
5
|
-
export declare const buildUniqueKeyTo: <T extends DomainObject<any>, C extends new (props: T) => T, U extends keyof T, K extends Partial<T> | Required<Pick<T, U>>>(to: C, using: K) => Required<Pick<T, U>>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildUniqueKeyTo = void 0;
|
|
4
|
-
const buildReferenceTo_1 = require("./buildReferenceTo");
|
|
5
|
-
const defineReferenceKeyConstituentsOf_1 = require("./defineReferenceKeyConstituentsOf");
|
|
6
|
-
/**
|
|
7
|
-
* build the unique key of the resource
|
|
8
|
-
*/
|
|
9
|
-
const buildUniqueKeyTo = (
|
|
10
|
-
/**
|
|
11
|
-
* the class this is a reference to
|
|
12
|
-
*/
|
|
13
|
-
to,
|
|
14
|
-
/**
|
|
15
|
-
* the data to build the reference with
|
|
16
|
-
*/
|
|
17
|
-
using) => {
|
|
18
|
-
const referenceOf = to;
|
|
19
|
-
const referenceInput = using;
|
|
20
|
-
// get the unique key defs for the class
|
|
21
|
-
const { unique } = (0, defineReferenceKeyConstituentsOf_1.defineReferenceKeyConstituentsOf)({
|
|
22
|
-
class: referenceOf,
|
|
23
|
-
});
|
|
24
|
-
// assert that the resource has a unique key defined on it
|
|
25
|
-
const hasUniqueKey = unique.every((key) => key in referenceInput);
|
|
26
|
-
if (!hasUniqueKey)
|
|
27
|
-
throw new buildReferenceTo_1.CanNotBuildReferenceError({
|
|
28
|
-
referenceOf,
|
|
29
|
-
referenceInput,
|
|
30
|
-
reason: 'the unique key is not present in the reference input',
|
|
31
|
-
});
|
|
32
|
-
// extract the unique key value
|
|
33
|
-
const uniqueKey = unique.reduce((summary, thisKeyKey) => {
|
|
34
|
-
const thisKeyValue = referenceInput[thisKeyKey];
|
|
35
|
-
return { ...summary, [thisKeyKey]: thisKeyValue };
|
|
36
|
-
}, {});
|
|
37
|
-
return uniqueKey;
|
|
38
|
-
};
|
|
39
|
-
exports.buildUniqueKeyTo = buildUniqueKeyTo;
|
|
40
|
-
//# sourceMappingURL=buildUniqueKeyTo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildUniqueKeyTo.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/buildUniqueKeyTo.ts"],"names":[],"mappings":";;;AAEA,yDAA+D;AAC/D,yFAAsF;AAEtF;;GAEG;AACI,MAAM,gBAAgB,GAAG;AAkB9B;;GAEG;AACH,EAAK;AAEL;;GAEG;AACH,KAAQ,EACc,EAAE;IACxB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,KAAK,CAAC;IAE7B,wCAAwC;IACxC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,mEAAgC,EAAC;QAClD,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IAClE,IAAI,CAAC,YAAY;QACf,MAAM,IAAI,4CAAyB,CAAC;YAClC,WAAW;YACX,cAAc;YACd,MAAM,EAAE,sDAAsD;SAC/D,CAAC,CAAC;IAEL,+BAA+B;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;QACtD,MAAM,YAAY,GAChB,cAAc,CAAC,UAAyC,CAAC,CAAC;QAC5D,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IACpD,CAAC,EAAE,EAA0B,CAAC,CAAC;IAC/B,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApDW,QAAA,gBAAgB,oBAoD3B"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
import { DeclaredResourceReference } from '../../../domain/DeclaredResourceReference';
|
|
3
|
-
export declare const defineReferenceClassOf: <T extends DomainObject<any>, C extends new (props: T) => T, P extends keyof T, U extends keyof T>({ class: ofClass, }: {
|
|
4
|
-
class: C;
|
|
5
|
-
}) => (new (props: DeclaredResourceReference<T, P, U>) => DeclaredResourceReference<T, P, U>) | null;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineReferenceClassOf = void 0;
|
|
4
|
-
const type_fns_1 = require("type-fns");
|
|
5
|
-
const DeclaredResourceReference_1 = require("../../../domain/DeclaredResourceReference");
|
|
6
|
-
const defineReferenceKeyConstituentsOf_1 = require("./defineReferenceKeyConstituentsOf");
|
|
7
|
-
const defineReferenceClassOf = ({ class: ofClass, }) => {
|
|
8
|
-
// grab the reference spec, if any
|
|
9
|
-
const referenceSpec = ofClass.reference;
|
|
10
|
-
if (!referenceSpec)
|
|
11
|
-
return null;
|
|
12
|
-
// if its a function, call it to get the reference spec
|
|
13
|
-
const referenceSpecResolved = (0, type_fns_1.isAFunction)(referenceSpec)
|
|
14
|
-
? referenceSpec()
|
|
15
|
-
: referenceSpec;
|
|
16
|
-
// assert that the reference spec is a valid reference spec
|
|
17
|
-
if (!(referenceSpecResolved.prototype instanceof DeclaredResourceReference_1.DeclaredResourceReference))
|
|
18
|
-
throw new defineReferenceKeyConstituentsOf_1.CanNotReferenceDeclaredResourceClassError({
|
|
19
|
-
class: ofClass,
|
|
20
|
-
reason: `${ofClass.name}.reference was defined but not as an instance of DeclaredResourceReference`,
|
|
21
|
-
});
|
|
22
|
-
return referenceSpecResolved;
|
|
23
|
-
};
|
|
24
|
-
exports.defineReferenceClassOf = defineReferenceClassOf;
|
|
25
|
-
//# sourceMappingURL=defineReferenceClassOf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineReferenceClassOf.js","sourceRoot":"","sources":["../../../../src/logic/tools/reference/defineReferenceClassOf.ts"],"names":[],"mappings":";;;AACA,uCAAuC;AAEvC,yFAAsF;AACtF,yFAA+F;AAExF,MAAM,sBAAsB,GAAG,CAiBpC,EACA,KAAK,EAAE,OAAO,GAGf,EAIQ,EAAE;IACT,kCAAkC;IAClC,MAAM,aAAa,GAAI,OAAe,CAAC,SAAS,CAAC;IACjD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,uDAAuD;IACvD,MAAM,qBAAqB,GAAG,IAAA,sBAAW,EAAC,aAAa,CAAC;QACtD,CAAC,CAAC,aAAa,EAAE;QACjB,CAAC,CAAC,aAAa,CAAC;IAElB,2DAA2D;IAC3D,IAAI,CAAC,CAAC,qBAAqB,CAAC,SAAS,YAAY,qDAAyB,CAAC;QACzE,MAAM,IAAI,4EAAyC,CAAC;YAClD,KAAK,EAAE,OAAqC;YAC5C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,4EAA4E;SACpG,CAAC,CAAC;IAEL,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AA3CW,QAAA,sBAAsB,0BA2CjC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { DomainObject } from 'domain-objects';
|
|
2
|
-
export declare class CanNotReferenceDeclaredResourceClassError extends Error {
|
|
3
|
-
constructor({ class: ofClass, reason, }: {
|
|
4
|
-
class: typeof DomainObject;
|
|
5
|
-
reason: string;
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
export declare const defineReferenceKeyConstituentsOf: ({ class: ofClass, }: {
|
|
9
|
-
class: any;
|
|
10
|
-
}) => {
|
|
11
|
-
primary: string[];
|
|
12
|
-
unique: string[];
|
|
13
|
-
};
|
|
@@ -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>;
|