@carlonicora/nestjs-neo4jsonapi 1.1.0 → 1.2.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/bootstrap/app.module.factory.d.ts.map +1 -1
- package/dist/bootstrap/app.module.factory.js +3 -1
- package/dist/bootstrap/app.module.factory.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +16 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/core/jsonapi/abstracts/abstract.jsonapi.serialiser.d.ts +1 -0
- package/dist/core/jsonapi/abstracts/abstract.jsonapi.serialiser.d.ts.map +1 -1
- package/dist/core/jsonapi/abstracts/abstract.jsonapi.serialiser.js +3 -0
- package/dist/core/jsonapi/abstracts/abstract.jsonapi.serialiser.js.map +1 -1
- package/dist/foundations/auth/index.d.ts +2 -0
- package/dist/foundations/auth/index.d.ts.map +1 -1
- package/dist/foundations/auth/index.js +5 -1
- package/dist/foundations/auth/index.js.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.d.ts.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.js +8 -175
- package/dist/foundations/auth/repositories/auth.repository.js.map +1 -1
- package/dist/foundations/content/content.module.d.ts +33 -1
- package/dist/foundations/content/content.module.d.ts.map +1 -1
- package/dist/foundations/content/content.module.js +65 -9
- package/dist/foundations/content/content.module.js.map +1 -1
- package/dist/foundations/content/entities/content.entity.d.ts +18 -0
- package/dist/foundations/content/entities/content.entity.d.ts.map +1 -1
- package/dist/foundations/content/factories/content.model.factory.d.ts +17 -0
- package/dist/foundations/content/factories/content.model.factory.d.ts.map +1 -0
- package/dist/foundations/content/factories/content.model.factory.js +65 -0
- package/dist/foundations/content/factories/content.model.factory.js.map +1 -0
- package/dist/foundations/content/index.d.ts +2 -0
- package/dist/foundations/content/index.d.ts.map +1 -1
- package/dist/foundations/content/index.js +5 -1
- package/dist/foundations/content/index.js.map +1 -1
- package/dist/foundations/content/interfaces/content.extension.interface.d.ts +48 -0
- package/dist/foundations/content/interfaces/content.extension.interface.d.ts.map +1 -0
- package/dist/foundations/content/interfaces/content.extension.interface.js +9 -0
- package/dist/foundations/content/interfaces/content.extension.interface.js.map +1 -0
- package/dist/foundations/content/repositories/content.repository.d.ts +4 -0
- package/dist/foundations/content/repositories/content.repository.d.ts.map +1 -1
- package/dist/foundations/content/repositories/content.repository.js +15 -5
- package/dist/foundations/content/repositories/content.repository.js.map +1 -1
- package/dist/foundations/content/serialisers/content.serialiser.d.ts +3 -1
- package/dist/foundations/content/serialisers/content.serialiser.d.ts.map +1 -1
- package/dist/foundations/content/serialisers/content.serialiser.js +27 -2
- package/dist/foundations/content/serialisers/content.serialiser.js.map +1 -1
- package/dist/foundations/content/services/content.cypher.service.d.ts +3 -1
- package/dist/foundations/content/services/content.cypher.service.d.ts.map +1 -1
- package/dist/foundations/content/services/content.cypher.service.js +41 -7
- package/dist/foundations/content/services/content.cypher.service.js.map +1 -1
- package/dist/foundations/foundations.modules.d.ts +27 -9
- package/dist/foundations/foundations.modules.d.ts.map +1 -1
- package/dist/foundations/foundations.modules.js +30 -18
- package/dist/foundations/foundations.modules.js.map +1 -1
- package/dist/foundations/module/queries/feature.module.query.d.ts +2 -0
- package/dist/foundations/module/queries/feature.module.query.d.ts.map +1 -0
- package/dist/foundations/module/queries/feature.module.query.js +65 -0
- package/dist/foundations/module/queries/feature.module.query.js.map +1 -0
- package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
- package/dist/foundations/user/repositories/user.repository.js +2 -61
- package/dist/foundations/user/repositories/user.repository.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.factory.d.ts","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAe7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"app.module.factory.d.ts","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAe7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CA+FpE"}
|
|
@@ -137,7 +137,9 @@ function createAppModule(options) {
|
|
|
137
137
|
queueIds,
|
|
138
138
|
}),
|
|
139
139
|
// Library's foundation/domain modules (queues configured via baseConfig.chunkQueues)
|
|
140
|
-
foundations_modules_1.FoundationsModule
|
|
140
|
+
foundations_modules_1.FoundationsModule.forRoot({
|
|
141
|
+
contentExtension: options.contentExtension,
|
|
142
|
+
}),
|
|
141
143
|
// Library's AI agents (prompts configured via baseConfig.prompts)
|
|
142
144
|
agents_modules_1.AgentsModule,
|
|
143
145
|
// User's app-specific modules
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.factory.js","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,
|
|
1
|
+
{"version":3,"file":"app.module.factory.js","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DynamicModule, Type } from "@nestjs/common";
|
|
2
|
+
import { ContentExtensionConfig } from "../foundations/content/interfaces/content.extension.interface";
|
|
2
3
|
/**
|
|
3
4
|
* i18n configuration options
|
|
4
5
|
*/
|
|
@@ -36,5 +37,20 @@ export interface BootstrapOptions {
|
|
|
36
37
|
* Return an object that will be merged with the library's baseConfig.
|
|
37
38
|
*/
|
|
38
39
|
config?: () => Record<string, any>;
|
|
40
|
+
/**
|
|
41
|
+
* Optional extension for Content module to add additional relationships.
|
|
42
|
+
* When provided, Content queries and serialization will include the
|
|
43
|
+
* specified relationships.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* contentExtension: {
|
|
48
|
+
* additionalRelationships: [
|
|
49
|
+
* { model: topicMeta, relationship: 'HAS_KNOWLEDGE', direction: 'in', cardinality: 'many', dtoKey: 'topics' },
|
|
50
|
+
* ],
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
contentExtension?: ContentExtensionConfig;
|
|
39
55
|
}
|
|
40
56
|
//# sourceMappingURL=bootstrap.options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.options.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.options.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AAEvG;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEnC;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC3C"}
|
|
@@ -20,6 +20,7 @@ export declare abstract class AbstractJsonApiSerialiser implements JsonApiServic
|
|
|
20
20
|
set attributes(attributes: any);
|
|
21
21
|
set meta(meta: any);
|
|
22
22
|
set links(links: any);
|
|
23
|
+
get relationships(): any;
|
|
23
24
|
set relationships(relationships: any);
|
|
24
25
|
create(): JsonApiDataInterface;
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.jsonapi.serialiser.d.ts","sourceRoot":"","sources":["../../../../src/core/jsonapi/abstracts/abstract.jsonapi.serialiser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,8BACsB,yBAA0B,YAAW,uBAAuB;IAgB9E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB;IAC9D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAhBtE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,OAAO,CAAC,KAAK,CAIX;IAEF,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,cAAc,CAAW;gBAGZ,iBAAiB,EAAE,wBAAwB,EAC3C,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAWtE,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAE5B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,EAE7B;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAKjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAEnB;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,GAAG,EAEnC;IAED,MAAM,IAAI,oBAAoB;CAY/B"}
|
|
1
|
+
{"version":3,"file":"abstract.jsonapi.serialiser.d.ts","sourceRoot":"","sources":["../../../../src/core/jsonapi/abstracts/abstract.jsonapi.serialiser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,8BACsB,yBAA0B,YAAW,uBAAuB;IAgB9E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB;IAC9D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAhBtE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,OAAO,CAAC,KAAK,CAIX;IAEF,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,cAAc,CAAW;gBAGZ,iBAAiB,EAAE,wBAAwB,EAC3C,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAWtE,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAE5B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,EAE7B;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAKjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAEnB;IAED,IAAI,aAAa,IAAI,GAAG,CAEvB;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,GAAG,EAEnC;IAED,MAAM,IAAI,oBAAoB;CAY/B"}
|
|
@@ -53,6 +53,9 @@ let AbstractJsonApiSerialiser = class AbstractJsonApiSerialiser {
|
|
|
53
53
|
set links(links) {
|
|
54
54
|
this._links = links;
|
|
55
55
|
}
|
|
56
|
+
get relationships() {
|
|
57
|
+
return this._relationships;
|
|
58
|
+
}
|
|
56
59
|
set relationships(relationships) {
|
|
57
60
|
this._relationships = relationships;
|
|
58
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.jsonapi.serialiser.js","sourceRoot":"","sources":["../../../../src/core/jsonapi/abstracts/abstract.jsonapi.serialiser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAE/C,wFAAmF;AAK5E,IAAe,yBAAyB,GAAxC,MAAe,yBAAyB;IAe7C,YACqB,iBAA2C,EAC3C,aAAiD;QADjD,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,kBAAa,GAAb,aAAa,CAAoC;QAf9D,gBAAW,GAAQ,EAAE,CAAC;QAGtB,UAAK,GAAQ;YACnB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;SAC3B,CAAC;QAIM,mBAAc,GAAQ,EAAE,CAAC;QAM/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAqB,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClE,CAAC;SACF,CAAC;IACJ,CAAC;IAID,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,CAAC,UAAe;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,CAAC,IAAS;QAChB,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,KAAU;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,aAAa,CAAC,aAAkB;QAClC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,CAAC,IAAS,EAAE,EAAE;gBAChB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;YACD,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"abstract.jsonapi.serialiser.js","sourceRoot":"","sources":["../../../../src/core/jsonapi/abstracts/abstract.jsonapi.serialiser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAE/C,wFAAmF;AAK5E,IAAe,yBAAyB,GAAxC,MAAe,yBAAyB;IAe7C,YACqB,iBAA2C,EAC3C,aAAiD;QADjD,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,kBAAa,GAAb,aAAa,CAAoC;QAf9D,gBAAW,GAAQ,EAAE,CAAC;QAGtB,UAAK,GAAQ;YACnB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;SAC3B,CAAC;QAIM,mBAAc,GAAQ,EAAE,CAAC;QAM/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAqB,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClE,CAAC;SACF,CAAC;IACJ,CAAC;IAID,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,CAAC,UAAe;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,CAAC,IAAS;QAChB,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,KAAU;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,aAAa,CAAC,aAAkB;QAClC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,CAAC,IAAS,EAAE,EAAE;gBAChB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;YACD,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;CACF,CAAA;AA7EqB,8DAAyB;oCAAzB,yBAAyB;IAD9C,IAAA,mBAAU,GAAE;qCAiB6B,qDAAwB;QAC5B,sBAAa;GAjB7B,yBAAyB,CA6E9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AuthModule = void 0;
|
|
3
|
+
exports.AuthService = exports.authMeta = exports.AuthModule = void 0;
|
|
4
4
|
var auth_module_1 = require("./auth.module");
|
|
5
5
|
Object.defineProperty(exports, "AuthModule", { enumerable: true, get: function () { return auth_module_1.AuthModule; } });
|
|
6
|
+
var auth_meta_1 = require("./entities/auth.meta");
|
|
7
|
+
Object.defineProperty(exports, "authMeta", { enumerable: true, get: function () { return auth_meta_1.authMeta; } });
|
|
8
|
+
var auth_service_1 = require("./services/auth.service");
|
|
9
|
+
Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/auth/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/auth/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,kDAAgD;AAAvC,qGAAA,QAAQ,OAAA;AACjB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/auth/repositories/auth.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/auth/repositories/auth.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const security_service_1 = require("../../../core/security/services/security.ser
|
|
|
18
18
|
const auth_code_model_1 = require("../../auth/entities/auth.code.model");
|
|
19
19
|
const auth_model_1 = require("../../auth/entities/auth.model");
|
|
20
20
|
const module_model_1 = require("../../module/entities/module.model");
|
|
21
|
+
const feature_module_query_1 = require("../../module/queries/feature.module.query");
|
|
21
22
|
const user_model_1 = require("../../user/entities/user.model");
|
|
22
23
|
let AuthRepository = class AuthRepository {
|
|
23
24
|
constructor(neo4j, security) {
|
|
@@ -74,65 +75,9 @@ let AuthRepository = class AuthRepository {
|
|
|
74
75
|
companyId: auth.user.company.id,
|
|
75
76
|
userId: auth.user.id,
|
|
76
77
|
};
|
|
77
|
-
query.query
|
|
78
|
-
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company)
|
|
79
|
-
|
|
80
|
-
MATCH (m:Module)
|
|
81
|
-
WHERE exists((company)-[:HAS_MODULE]->(m)) OR m.isCore = true
|
|
82
|
-
OPTIONAL MATCH (role)-[perm:HAS_PERMISSIONS]->(m)
|
|
83
|
-
WITH m,
|
|
84
|
-
coalesce(apoc.convert.fromJsonList(m.permissions), []) AS defaultPermissions,
|
|
85
|
-
collect(perm) AS perms
|
|
86
|
-
WITH m, defaultPermissions,
|
|
87
|
-
apoc.coll.flatten([p IN perms | coalesce(apoc.convert.fromJsonList(p.permissions), [])]) AS rolePerms
|
|
88
|
-
WITH m,
|
|
89
|
-
head([x IN defaultPermissions WHERE x.type = 'create' | x.value]) AS defaultCreate,
|
|
90
|
-
head([x IN defaultPermissions WHERE x.type = 'read' | x.value]) AS defaultRead,
|
|
91
|
-
head([x IN defaultPermissions WHERE x.type = 'update' | x.value]) AS defaultUpdate,
|
|
92
|
-
head([x IN defaultPermissions WHERE x.type = 'delete' | x.value]) AS defaultDelete,
|
|
93
|
-
rolePerms
|
|
94
|
-
WITH m,
|
|
95
|
-
[defaultCreate] + [x IN rolePerms WHERE x.type = 'create' | x.value] AS createValues,
|
|
96
|
-
[defaultRead] + [x IN rolePerms WHERE x.type = 'read' | x.value] AS readValues,
|
|
97
|
-
[defaultUpdate] + [x IN rolePerms WHERE x.type = 'update' | x.value] AS updateValues,
|
|
98
|
-
[defaultDelete] + [x IN rolePerms WHERE x.type = 'delete' | x.value] AS deleteValues
|
|
99
|
-
WITH m,
|
|
100
|
-
CASE
|
|
101
|
-
WHEN any(x IN createValues WHERE x = true) THEN true
|
|
102
|
-
WHEN any(x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
103
|
-
THEN head([x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
104
|
-
ELSE coalesce(head(createValues), false)
|
|
105
|
-
END AS effectiveCreate,
|
|
106
|
-
CASE
|
|
107
|
-
WHEN any(x IN readValues WHERE x = true) THEN true
|
|
108
|
-
WHEN any(x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
109
|
-
THEN head([x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
110
|
-
ELSE coalesce(head(readValues), false)
|
|
111
|
-
END AS effectiveRead,
|
|
112
|
-
CASE
|
|
113
|
-
WHEN any(x IN updateValues WHERE x = true) THEN true
|
|
114
|
-
WHEN any(x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
115
|
-
THEN head([x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
116
|
-
ELSE coalesce(head(updateValues), false)
|
|
117
|
-
END AS effectiveUpdate,
|
|
118
|
-
CASE
|
|
119
|
-
WHEN any(x IN deleteValues WHERE x = true) THEN true
|
|
120
|
-
WHEN any(x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
121
|
-
THEN head([x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
122
|
-
ELSE coalesce(head(deleteValues), false)
|
|
123
|
-
END AS effectiveDelete
|
|
124
|
-
WITH m, apoc.convert.toJson([
|
|
125
|
-
{ type: "create", value: effectiveCreate },
|
|
126
|
-
{ type: "read", value: effectiveRead },
|
|
127
|
-
{ type: "update", value: effectiveUpdate },
|
|
128
|
-
{ type: "delete", value: effectiveDelete }
|
|
129
|
-
]) AS newPermissions
|
|
130
|
-
CALL apoc.create.vNode(
|
|
131
|
-
labels(m),
|
|
132
|
-
apoc.map.merge(properties(m), { permissions: newPermissions })
|
|
133
|
-
) YIELD node AS module
|
|
134
|
-
|
|
135
|
-
RETURN module
|
|
78
|
+
query.query = `
|
|
79
|
+
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company:Company {id: $companyId})
|
|
80
|
+
${feature_module_query_1.featureModuleQuery}
|
|
136
81
|
`;
|
|
137
82
|
const modules = await this.neo4j.readMany(query);
|
|
138
83
|
auth.user.module = modules;
|
|
@@ -339,65 +284,9 @@ WITH auth, auth_user, auth_user_role, module,
|
|
|
339
284
|
companyId: auth.user.company.id,
|
|
340
285
|
userId: params.userId,
|
|
341
286
|
};
|
|
342
|
-
query.query
|
|
343
|
-
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company)
|
|
344
|
-
|
|
345
|
-
MATCH (m:Module)
|
|
346
|
-
WHERE exists((company)-[:HAS_MODULE]->(m)) OR m.isCore = true
|
|
347
|
-
OPTIONAL MATCH (role)-[perm:HAS_PERMISSIONS]->(m)
|
|
348
|
-
WITH m,
|
|
349
|
-
coalesce(apoc.convert.fromJsonList(m.permissions), []) AS defaultPermissions,
|
|
350
|
-
collect(perm) AS perms
|
|
351
|
-
WITH m, defaultPermissions,
|
|
352
|
-
apoc.coll.flatten([p IN perms | coalesce(apoc.convert.fromJsonList(p.permissions), [])]) AS rolePerms
|
|
353
|
-
WITH m,
|
|
354
|
-
head([x IN defaultPermissions WHERE x.type = 'create' | x.value]) AS defaultCreate,
|
|
355
|
-
head([x IN defaultPermissions WHERE x.type = 'read' | x.value]) AS defaultRead,
|
|
356
|
-
head([x IN defaultPermissions WHERE x.type = 'update' | x.value]) AS defaultUpdate,
|
|
357
|
-
head([x IN defaultPermissions WHERE x.type = 'delete' | x.value]) AS defaultDelete,
|
|
358
|
-
rolePerms
|
|
359
|
-
WITH m,
|
|
360
|
-
[defaultCreate] + [x IN rolePerms WHERE x.type = 'create' | x.value] AS createValues,
|
|
361
|
-
[defaultRead] + [x IN rolePerms WHERE x.type = 'read' | x.value] AS readValues,
|
|
362
|
-
[defaultUpdate] + [x IN rolePerms WHERE x.type = 'update' | x.value] AS updateValues,
|
|
363
|
-
[defaultDelete] + [x IN rolePerms WHERE x.type = 'delete' | x.value] AS deleteValues
|
|
364
|
-
WITH m,
|
|
365
|
-
CASE
|
|
366
|
-
WHEN any(x IN createValues WHERE x = true) THEN true
|
|
367
|
-
WHEN any(x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
368
|
-
THEN head([x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
369
|
-
ELSE coalesce(head(createValues), false)
|
|
370
|
-
END AS effectiveCreate,
|
|
371
|
-
CASE
|
|
372
|
-
WHEN any(x IN readValues WHERE x = true) THEN true
|
|
373
|
-
WHEN any(x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
374
|
-
THEN head([x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
375
|
-
ELSE coalesce(head(readValues), false)
|
|
376
|
-
END AS effectiveRead,
|
|
377
|
-
CASE
|
|
378
|
-
WHEN any(x IN updateValues WHERE x = true) THEN true
|
|
379
|
-
WHEN any(x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
380
|
-
THEN head([x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
381
|
-
ELSE coalesce(head(updateValues), false)
|
|
382
|
-
END AS effectiveUpdate,
|
|
383
|
-
CASE
|
|
384
|
-
WHEN any(x IN deleteValues WHERE x = true) THEN true
|
|
385
|
-
WHEN any(x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
386
|
-
THEN head([x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
387
|
-
ELSE coalesce(head(deleteValues), false)
|
|
388
|
-
END AS effectiveDelete
|
|
389
|
-
WITH m, apoc.convert.toJson([
|
|
390
|
-
{ type: "create", value: effectiveCreate },
|
|
391
|
-
{ type: "read", value: effectiveRead },
|
|
392
|
-
{ type: "update", value: effectiveUpdate },
|
|
393
|
-
{ type: "delete", value: effectiveDelete }
|
|
394
|
-
]) AS newPermissions
|
|
395
|
-
CALL apoc.create.vNode(
|
|
396
|
-
labels(m),
|
|
397
|
-
apoc.map.merge(properties(m), { permissions: newPermissions })
|
|
398
|
-
) YIELD node AS module
|
|
399
|
-
|
|
400
|
-
RETURN module
|
|
287
|
+
query.query = `
|
|
288
|
+
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company:Company {id: $companyId})
|
|
289
|
+
${feature_module_query_1.featureModuleQuery}
|
|
401
290
|
`;
|
|
402
291
|
const modules = await this.neo4j.readMany(query);
|
|
403
292
|
auth.user.module = modules;
|
|
@@ -426,63 +315,7 @@ WITH auth, auth_user, auth_user_role, module,
|
|
|
426
315
|
};
|
|
427
316
|
query.query += `
|
|
428
317
|
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company)
|
|
429
|
-
|
|
430
|
-
MATCH (m:Module)
|
|
431
|
-
WHERE exists((company)-[:HAS_MODULE]->(m)) OR m.isCore = true
|
|
432
|
-
OPTIONAL MATCH (role)-[perm:HAS_PERMISSIONS]->(m)
|
|
433
|
-
WITH m,
|
|
434
|
-
coalesce(apoc.convert.fromJsonList(m.permissions), []) AS defaultPermissions,
|
|
435
|
-
collect(perm) AS perms
|
|
436
|
-
WITH m, defaultPermissions,
|
|
437
|
-
apoc.coll.flatten([p IN perms | coalesce(apoc.convert.fromJsonList(p.permissions), [])]) AS rolePerms
|
|
438
|
-
WITH m,
|
|
439
|
-
head([x IN defaultPermissions WHERE x.type = 'create' | x.value]) AS defaultCreate,
|
|
440
|
-
head([x IN defaultPermissions WHERE x.type = 'read' | x.value]) AS defaultRead,
|
|
441
|
-
head([x IN defaultPermissions WHERE x.type = 'update' | x.value]) AS defaultUpdate,
|
|
442
|
-
head([x IN defaultPermissions WHERE x.type = 'delete' | x.value]) AS defaultDelete,
|
|
443
|
-
rolePerms
|
|
444
|
-
WITH m,
|
|
445
|
-
[defaultCreate] + [x IN rolePerms WHERE x.type = 'create' | x.value] AS createValues,
|
|
446
|
-
[defaultRead] + [x IN rolePerms WHERE x.type = 'read' | x.value] AS readValues,
|
|
447
|
-
[defaultUpdate] + [x IN rolePerms WHERE x.type = 'update' | x.value] AS updateValues,
|
|
448
|
-
[defaultDelete] + [x IN rolePerms WHERE x.type = 'delete' | x.value] AS deleteValues
|
|
449
|
-
WITH m,
|
|
450
|
-
CASE
|
|
451
|
-
WHEN any(x IN createValues WHERE x = true) THEN true
|
|
452
|
-
WHEN any(x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
453
|
-
THEN head([x IN createValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
454
|
-
ELSE coalesce(head(createValues), false)
|
|
455
|
-
END AS effectiveCreate,
|
|
456
|
-
CASE
|
|
457
|
-
WHEN any(x IN readValues WHERE x = true) THEN true
|
|
458
|
-
WHEN any(x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
459
|
-
THEN head([x IN readValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
460
|
-
ELSE coalesce(head(readValues), false)
|
|
461
|
-
END AS effectiveRead,
|
|
462
|
-
CASE
|
|
463
|
-
WHEN any(x IN updateValues WHERE x = true) THEN true
|
|
464
|
-
WHEN any(x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
465
|
-
THEN head([x IN updateValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
466
|
-
ELSE coalesce(head(updateValues), false)
|
|
467
|
-
END AS effectiveUpdate,
|
|
468
|
-
CASE
|
|
469
|
-
WHEN any(x IN deleteValues WHERE x = true) THEN true
|
|
470
|
-
WHEN any(x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true)
|
|
471
|
-
THEN head([x IN deleteValues WHERE x IS NOT NULL AND x <> false AND x <> true])
|
|
472
|
-
ELSE coalesce(head(deleteValues), false)
|
|
473
|
-
END AS effectiveDelete
|
|
474
|
-
WITH m, apoc.convert.toJson([
|
|
475
|
-
{ type: "create", value: effectiveCreate },
|
|
476
|
-
{ type: "read", value: effectiveRead },
|
|
477
|
-
{ type: "update", value: effectiveUpdate },
|
|
478
|
-
{ type: "delete", value: effectiveDelete }
|
|
479
|
-
]) AS newPermissions
|
|
480
|
-
CALL apoc.create.vNode(
|
|
481
|
-
labels(m),
|
|
482
|
-
apoc.map.merge(properties(m), { permissions: newPermissions })
|
|
483
|
-
) YIELD node AS module
|
|
484
|
-
|
|
485
|
-
RETURN module
|
|
318
|
+
${feature_module_query_1.featureModuleQuery}
|
|
486
319
|
`;
|
|
487
320
|
const modules = await this.neo4j.readMany(query);
|
|
488
321
|
auth.user.module = modules;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.repository.js","sourceRoot":"","sources":["../../../../src/foundations/auth/repositories/auth.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA0D;AAC1D,mCAAoC;AACpC,yEAAgE;AAChE,8EAA0E;AAC1E,uFAAmF;AAEnF,yEAAoE;AAEpE,+DAA2D;AAC3D,qEAAiE;
|
|
1
|
+
{"version":3,"file":"auth.repository.js","sourceRoot":"","sources":["../../../../src/foundations/auth/repositories/auth.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,37 @@
|
|
|
1
|
-
import { OnModuleInit } from "@nestjs/common";
|
|
1
|
+
import { DynamicModule, OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { ContentExtensionConfig } from "./interfaces/content.extension.interface";
|
|
3
|
+
/**
|
|
4
|
+
* ContentModule - Configurable module for Content management.
|
|
5
|
+
*
|
|
6
|
+
* Supports optional extension via ContentExtensionConfig to add additional
|
|
7
|
+
* relationships to Content responses. When extended, the module will:
|
|
8
|
+
* - Register an extended ContentModel with additional childrenTokens
|
|
9
|
+
* - Inject extension config into CypherService and Serialiser
|
|
10
|
+
* - Generate OPTIONAL MATCH clauses for extension relationships
|
|
11
|
+
* - Include extension relationships in JSON:API output
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Without extension (default behavior)
|
|
16
|
+
* ContentModule.forRoot()
|
|
17
|
+
*
|
|
18
|
+
* // With extension
|
|
19
|
+
* ContentModule.forRoot({
|
|
20
|
+
* additionalRelationships: [
|
|
21
|
+
* { model: topicMeta, relationship: 'HAS_KNOWLEDGE', direction: 'in', cardinality: 'many' },
|
|
22
|
+
* ],
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
2
26
|
export declare class ContentModule implements OnModuleInit {
|
|
27
|
+
private static extension?;
|
|
28
|
+
/**
|
|
29
|
+
* Configure ContentModule with optional extension.
|
|
30
|
+
*
|
|
31
|
+
* @param extension - Optional configuration for additional relationships
|
|
32
|
+
* @returns DynamicModule configured with extension support
|
|
33
|
+
*/
|
|
34
|
+
static forRoot(extension?: ContentExtensionConfig): DynamicModule;
|
|
3
35
|
onModuleInit(): void;
|
|
4
36
|
}
|
|
5
37
|
//# sourceMappingURL=content.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/content/content.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"content.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/content/content.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMrE,OAAO,EAAE,sBAAsB,EAA4B,MAAM,0CAA0C,CAAC;AAM5G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAyB;IAElD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,aAAa;IAsBjE,YAAY;CAYb"}
|
|
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var ContentModule_1;
|
|
8
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
10
|
exports.ContentModule = void 0;
|
|
10
11
|
const common_1 = require("@nestjs/common");
|
|
@@ -12,22 +13,77 @@ const registry_1 = require("../../common/registries/registry");
|
|
|
12
13
|
const relevancy_module_1 = require("../relevancy/relevancy.module");
|
|
13
14
|
const content_controller_1 = require("./controllers/content.controller");
|
|
14
15
|
const content_model_1 = require("./entities/content.model");
|
|
16
|
+
const content_model_factory_1 = require("./factories/content.model.factory");
|
|
17
|
+
const content_extension_interface_1 = require("./interfaces/content.extension.interface");
|
|
15
18
|
const content_repository_1 = require("./repositories/content.repository");
|
|
16
19
|
const content_serialiser_1 = require("./serialisers/content.serialiser");
|
|
17
20
|
const content_cypher_service_1 = require("./services/content.cypher.service");
|
|
18
21
|
const content_service_1 = require("./services/content.service");
|
|
19
|
-
|
|
22
|
+
/**
|
|
23
|
+
* ContentModule - Configurable module for Content management.
|
|
24
|
+
*
|
|
25
|
+
* Supports optional extension via ContentExtensionConfig to add additional
|
|
26
|
+
* relationships to Content responses. When extended, the module will:
|
|
27
|
+
* - Register an extended ContentModel with additional childrenTokens
|
|
28
|
+
* - Inject extension config into CypherService and Serialiser
|
|
29
|
+
* - Generate OPTIONAL MATCH clauses for extension relationships
|
|
30
|
+
* - Include extension relationships in JSON:API output
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // Without extension (default behavior)
|
|
35
|
+
* ContentModule.forRoot()
|
|
36
|
+
*
|
|
37
|
+
* // With extension
|
|
38
|
+
* ContentModule.forRoot({
|
|
39
|
+
* additionalRelationships: [
|
|
40
|
+
* { model: topicMeta, relationship: 'HAS_KNOWLEDGE', direction: 'in', cardinality: 'many' },
|
|
41
|
+
* ],
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
let ContentModule = ContentModule_1 = class ContentModule {
|
|
46
|
+
/**
|
|
47
|
+
* Configure ContentModule with optional extension.
|
|
48
|
+
*
|
|
49
|
+
* @param extension - Optional configuration for additional relationships
|
|
50
|
+
* @returns DynamicModule configured with extension support
|
|
51
|
+
*/
|
|
52
|
+
static forRoot(extension) {
|
|
53
|
+
ContentModule_1.extension = extension;
|
|
54
|
+
return {
|
|
55
|
+
module: ContentModule_1,
|
|
56
|
+
global: true, // Make module global so ContentCypherService is available to other modules
|
|
57
|
+
controllers: [content_controller_1.ContentController],
|
|
58
|
+
providers: [
|
|
59
|
+
{
|
|
60
|
+
provide: content_extension_interface_1.CONTENT_EXTENSION_CONFIG,
|
|
61
|
+
useValue: extension,
|
|
62
|
+
},
|
|
63
|
+
content_serialiser_1.ContentSerialiser,
|
|
64
|
+
content_repository_1.ContentRepository,
|
|
65
|
+
content_service_1.ContentService,
|
|
66
|
+
content_cypher_service_1.ContentCypherService,
|
|
67
|
+
],
|
|
68
|
+
exports: [content_cypher_service_1.ContentCypherService, content_extension_interface_1.CONTENT_EXTENSION_CONFIG],
|
|
69
|
+
imports: [relevancy_module_1.RelevancyModule],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
20
72
|
onModuleInit() {
|
|
21
|
-
|
|
73
|
+
const extension = ContentModule_1.extension;
|
|
74
|
+
if (extension?.additionalRelationships?.length) {
|
|
75
|
+
// Register extended model (overwrites base model in registry)
|
|
76
|
+
const extendedModel = (0, content_model_factory_1.createExtendedContentModel)(extension);
|
|
77
|
+
registry_1.modelRegistry.register(extendedModel);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Register base model
|
|
81
|
+
registry_1.modelRegistry.register(content_model_1.ContentModel);
|
|
82
|
+
}
|
|
22
83
|
}
|
|
23
84
|
};
|
|
24
85
|
exports.ContentModule = ContentModule;
|
|
25
|
-
exports.ContentModule = ContentModule = __decorate([
|
|
26
|
-
(0, common_1.Module)({
|
|
27
|
-
controllers: [content_controller_1.ContentController],
|
|
28
|
-
providers: [content_serialiser_1.ContentSerialiser, content_repository_1.ContentRepository, content_service_1.ContentService, content_cypher_service_1.ContentCypherService],
|
|
29
|
-
exports: [content_cypher_service_1.ContentCypherService],
|
|
30
|
-
imports: [relevancy_module_1.RelevancyModule],
|
|
31
|
-
})
|
|
86
|
+
exports.ContentModule = ContentModule = ContentModule_1 = __decorate([
|
|
87
|
+
(0, common_1.Module)({})
|
|
32
88
|
], ContentModule);
|
|
33
89
|
//# sourceMappingURL=content.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.module.js","sourceRoot":"","sources":["../../../src/foundations/content/content.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.module.js","sourceRoot":"","sources":["../../../src/foundations/content/content.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAqE;AACrE,+DAAiE;AACjE,oEAAgE;AAChE,yEAAqE;AACrE,4DAAwD;AACxD,6EAA+E;AAC/E,0FAA4G;AAC5G,0EAAsE;AACtE,yEAAqE;AACrE,8EAAyE;AACzE,gEAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEI,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAGxB;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,SAAkC;QAC/C,eAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QAEpC,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,MAAM,EAAE,IAAI,EAAE,2EAA2E;YACzF,WAAW,EAAE,CAAC,sCAAiB,CAAC;YAChC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,sDAAwB;oBACjC,QAAQ,EAAE,SAAS;iBACpB;gBACD,sCAAiB;gBACjB,sCAAiB;gBACjB,gCAAc;gBACd,6CAAoB;aACrB;YACD,OAAO,EAAE,CAAC,6CAAoB,EAAE,sDAAwB,CAAC;YACzD,OAAO,EAAE,CAAC,kCAAe,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,SAAS,GAAG,eAAa,CAAC,SAAS,CAAC;QAE1C,IAAI,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC;YAC/C,8DAA8D;YAC9D,MAAM,aAAa,GAAG,IAAA,kDAA0B,EAAC,SAAS,CAAC,CAAC;YAC5D,wBAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,wBAAa,CAAC,QAAQ,CAAC,4BAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF,CAAA;AA3CY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CA2CzB"}
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { Entity } from "../../../common/abstracts/entity";
|
|
2
2
|
import { User } from "../../user/entities/user.entity";
|
|
3
|
+
/**
|
|
4
|
+
* Content entity type representing polymorphic content (Article, Document, etc.).
|
|
5
|
+
*
|
|
6
|
+
* The index signature allows extension relationships to be added dynamically
|
|
7
|
+
* when ContentExtensionConfig is provided. APIs can narrow this type using
|
|
8
|
+
* intersection types for better type safety.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // In API - narrow type for specific extensions
|
|
13
|
+
* type ExtendedContent = Content & {
|
|
14
|
+
* topic: Topic[];
|
|
15
|
+
* expertise: Expertise[];
|
|
16
|
+
* };
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
3
19
|
export type Content = Entity & {
|
|
4
20
|
name: string;
|
|
5
21
|
contentType: string;
|
|
@@ -9,5 +25,7 @@ export type Content = Entity & {
|
|
|
9
25
|
relevance?: number;
|
|
10
26
|
owner: User;
|
|
11
27
|
author: User;
|
|
28
|
+
/** Index signature for extension relationships added via ContentExtensionConfig */
|
|
29
|
+
[relationshipName: string]: unknown;
|
|
12
30
|
};
|
|
13
31
|
//# sourceMappingURL=content.entity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.entity.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/entities/content.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,EAAE,IAAI,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"content.entity.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/entities/content.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,EAAE,IAAI,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC;IAEb,mFAAmF;IACnF,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DataModelInterface } from "../../../common/interfaces/datamodel.interface";
|
|
2
|
+
import { Content } from "../entities/content.entity";
|
|
3
|
+
import { ContentExtensionConfig } from "../interfaces/content.extension.interface";
|
|
4
|
+
/**
|
|
5
|
+
* Creates an extended ContentModel with additional relationships based on extension config.
|
|
6
|
+
*
|
|
7
|
+
* This factory generates a DataModelInterface with:
|
|
8
|
+
* - Extended childrenTokens/singleChildrenTokens based on relationship cardinality
|
|
9
|
+
* - Extended mapper that initializes all relationship fields
|
|
10
|
+
*
|
|
11
|
+
* The extended model is registered in modelRegistry, overwriting the base ContentModel.
|
|
12
|
+
*
|
|
13
|
+
* @param extension - Configuration specifying additional relationships
|
|
14
|
+
* @returns DataModelInterface configured with extension relationships
|
|
15
|
+
*/
|
|
16
|
+
export declare function createExtendedContentModel(extension: ContentExtensionConfig): DataModelInterface<Content>;
|
|
17
|
+
//# sourceMappingURL=content.model.factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.model.factory.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/factories/content.model.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAGnF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,sBAAsB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAgDzG"}
|