@fjell/lib-sequelize 4.4.83 → 4.4.84

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/Options.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as Library from '@fjell/lib';
2
2
  import { ComKey, Item, LocKeyArray, PriKey } from '@fjell/types';
3
3
  import { SequelizeReferenceDefinition } from './processing/ReferenceBuilder';
4
+ import { DirectSaveBehavior } from './util/SequelizeInstanceWrapper';
4
5
  export type { AggregationDefinition } from '@fjell/lib';
5
6
  export type { SequelizeReferenceDefinition } from './processing/ReferenceBuilder';
6
7
  /**
@@ -41,6 +42,16 @@ export interface Options<V extends Item<S, L1, L2, L3, L4, L5>, S extends string
41
42
  references?: SequelizeReferenceDefinition[];
42
43
  aggregations?: Library.AggregationDefinition[];
43
44
  deleteOnRemove?: boolean;
45
+ /**
46
+ * Behavior when save() or update() is called directly on a Sequelize instance
47
+ * that was obtained from library.models queries (e.g., in actions/facets).
48
+ * - 'warn-and-throw': Log a warning and throw an error (default)
49
+ * - 'warn-only': Log a warning but allow the operation to proceed
50
+ *
51
+ * This prevents bypassing Fjell hooks when Sequelize instances are accessed
52
+ * directly from library.models in custom actions or facets.
53
+ */
54
+ directSaveBehavior?: DirectSaveBehavior;
44
55
  }
45
56
  export declare const createOptions: <V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(sequelizeOptions?: Options<V, S, L1, L2, L3, L4, L5>) => Options<V, S, L1, L2, L3, L4, L5>;
46
57
  //# sourceMappingURL=Options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../src/Options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../src/Options.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SequelizeLibrary.d.ts","sourceRoot":"","sources":["../src/SequelizeLibrary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,CACzB,SAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACjD,oEAAoE;IACpE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEvB,UAAU,QAAQ,EAClB,YAAY,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC7C,QAAQ,WAAW,CAAC,GAAG,CAAC,EAAE,EAC1B,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KACzC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAgB7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,KAAG,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAQ9G,CAAA"}
1
+ {"version":3,"file":"SequelizeLibrary.d.ts","sourceRoot":"","sources":["../src/SequelizeLibrary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,CACzB,SAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACjD,oEAAoE;IACpE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEvB,UAAU,QAAQ,EAClB,YAAY,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC7C,QAAQ,WAAW,CAAC,GAAG,CAAC,EAAE,EAC1B,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KACzC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAsC7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,GAAG,KAAG,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAQ9G,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SequelizeLibrary.d.ts","sourceRoot":"","sources":["../../src/contained/SequelizeLibrary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAiB,OAAO,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAE7D,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK;IAEzB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CAC5B;AAED,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAC1B,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,YAAK,EAC3D,MAAM,EAAE,MAAM,EAAE,YAAK,EACrB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAmB5C"}
1
+ {"version":3,"file":"SequelizeLibrary.d.ts","sourceRoot":"","sources":["../../src/contained/SequelizeLibrary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAiB,OAAO,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAU7D,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK;IAEzB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CAC5B;AAED,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAC1B,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,YAAK,EAC3D,MAAM,EAAE,MAAM,EAAE,YAAK,EACrB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAuC5C"}
package/dist/index.d.ts CHANGED
@@ -9,4 +9,5 @@ export * as Primary from './primary';
9
9
  export { createCoordinate, SCOPE_SEQUELIZE } from './Coordinate';
10
10
  export type { Coordinate } from './Coordinate';
11
11
  export * from './processing/ReferenceBuilder';
12
+ export * from './util/SequelizeInstanceWrapper';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,iCAAiC,CAAC"}
package/dist/index.js CHANGED
@@ -2501,16 +2501,181 @@ var createOperations = (models, coordinate, registry, options) => {
2501
2501
  return Library2.wrapImplementationOperations(implOps, options);
2502
2502
  };
2503
2503
 
2504
+ // src/util/SequelizeInstanceWrapper.ts
2505
+ var logger14 = logger_default.get("sequelize", "instance-wrapper");
2506
+ function isSequelizeModelInstance(obj) {
2507
+ return obj != null && typeof obj === "object" && typeof obj.save === "function" && typeof obj.update === "function" && typeof obj.destroy === "function" && typeof obj.get === "function";
2508
+ }
2509
+ function wrapSequelizeInstance(instance, config = {}) {
2510
+ const {
2511
+ directSaveBehavior = "warn-and-throw",
2512
+ itemType = "unknown",
2513
+ hasHooks = true
2514
+ } = config;
2515
+ if (!hasHooks) {
2516
+ return instance;
2517
+ }
2518
+ if (!isSequelizeModelInstance(instance)) {
2519
+ return instance;
2520
+ }
2521
+ return new Proxy(instance, {
2522
+ get(target, prop, receiver) {
2523
+ const originalValue = Reflect.get(target, prop, receiver);
2524
+ if (prop === "save" && typeof originalValue === "function") {
2525
+ return function(...args) {
2526
+ const warningMessage = `WARNING: You are calling save() directly on a Sequelize instance for item type "${itemType}" in a Fjell library with hooks defined. This will bypass Fjell hooks (preUpdate, postUpdate, validators, etc.). Use library.operations.update() instead to ensure hooks are executed.`;
2527
+ logger14.error(warningMessage, {
2528
+ itemType,
2529
+ operation: "save",
2530
+ hasHooks,
2531
+ directSaveBehavior,
2532
+ stack: new Error().stack
2533
+ });
2534
+ if (directSaveBehavior === "warn-and-throw") {
2535
+ const error = new Error(
2536
+ `Direct save() call blocked: ${warningMessage} To allow this operation, configure directSaveBehavior: 'warn-only' in library options.`
2537
+ );
2538
+ return Promise.reject(error);
2539
+ }
2540
+ return originalValue.apply(target, args);
2541
+ };
2542
+ }
2543
+ if (prop === "update" && typeof originalValue === "function") {
2544
+ return function(...args) {
2545
+ const warningMessage = `WARNING: You are calling update() directly on a Sequelize instance for item type "${itemType}" in a Fjell library with hooks defined. This will bypass Fjell hooks (preUpdate, postUpdate, validators, etc.). Use library.operations.update() instead to ensure hooks are executed.`;
2546
+ logger14.error(warningMessage, {
2547
+ itemType,
2548
+ operation: "update",
2549
+ hasHooks,
2550
+ directSaveBehavior,
2551
+ stack: new Error().stack
2552
+ });
2553
+ if (directSaveBehavior === "warn-and-throw") {
2554
+ const error = new Error(
2555
+ `Direct update() call blocked: ${warningMessage} To allow this operation, configure directSaveBehavior: 'warn-only' in library options.`
2556
+ );
2557
+ return Promise.reject(error);
2558
+ }
2559
+ return originalValue.apply(target, args);
2560
+ };
2561
+ }
2562
+ if (prop === "destroy" && typeof originalValue === "function") {
2563
+ return function(...args) {
2564
+ const warningMessage = `WARNING: You are calling destroy() directly on a Sequelize instance for item type "${itemType}" in a Fjell library with hooks defined. This will bypass Fjell hooks (preRemove, postRemove, validators, etc.). Use library.operations.remove() instead to ensure hooks are executed.`;
2565
+ logger14.error(warningMessage, {
2566
+ itemType,
2567
+ operation: "destroy",
2568
+ hasHooks,
2569
+ directSaveBehavior,
2570
+ stack: new Error().stack
2571
+ });
2572
+ if (directSaveBehavior === "warn-and-throw") {
2573
+ const error = new Error(
2574
+ `Direct destroy() call blocked: ${warningMessage} To allow this operation, configure directSaveBehavior: 'warn-only' in library options.`
2575
+ );
2576
+ return Promise.reject(error);
2577
+ }
2578
+ return originalValue.apply(target, args);
2579
+ };
2580
+ }
2581
+ return originalValue;
2582
+ }
2583
+ });
2584
+ }
2585
+ function hasHooksDefined(options) {
2586
+ return !!(options.hooks?.preCreate || options.hooks?.postCreate || options.hooks?.preUpdate || options.hooks?.postUpdate || options.hooks?.preRemove || options.hooks?.postRemove || options.validators?.onCreate || options.validators?.onUpdate || options.validators?.onRemove);
2587
+ }
2588
+ function wrapSequelizeModel(modelClass, config = {}) {
2589
+ const {
2590
+ hasHooks = true
2591
+ } = config;
2592
+ if (!hasHooks) {
2593
+ return modelClass;
2594
+ }
2595
+ return new Proxy(modelClass, {
2596
+ get(target, prop, receiver) {
2597
+ const originalValue = Reflect.get(target, prop, receiver);
2598
+ const instanceReturningMethods = ["findOne", "findByPk", "create", "build"];
2599
+ if (instanceReturningMethods.includes(prop) && typeof originalValue === "function") {
2600
+ return function(...args) {
2601
+ const result = originalValue.apply(target, args);
2602
+ if (result && typeof result.then === "function") {
2603
+ return result.then((instance) => {
2604
+ if (instance == null) {
2605
+ return instance;
2606
+ }
2607
+ if (Array.isArray(instance)) {
2608
+ return instance.map(
2609
+ (inst) => inst ? wrapSequelizeInstance(inst, config) : inst
2610
+ );
2611
+ }
2612
+ if (isSequelizeModelInstance(instance)) {
2613
+ return wrapSequelizeInstance(instance, config);
2614
+ }
2615
+ return instance;
2616
+ }).catch((error) => {
2617
+ throw error;
2618
+ });
2619
+ }
2620
+ if (isSequelizeModelInstance(result)) {
2621
+ return wrapSequelizeInstance(result, config);
2622
+ }
2623
+ return result;
2624
+ };
2625
+ }
2626
+ if (prop === "findAll" && typeof originalValue === "function") {
2627
+ return function(...args) {
2628
+ const result = originalValue.apply(target, args);
2629
+ if (result && typeof result.then === "function") {
2630
+ return result.then((instances) => {
2631
+ if (!Array.isArray(instances)) {
2632
+ return instances;
2633
+ }
2634
+ return instances.map(
2635
+ (inst) => inst ? wrapSequelizeInstance(inst, config) : inst
2636
+ );
2637
+ }).catch((error) => {
2638
+ throw error;
2639
+ });
2640
+ }
2641
+ return result;
2642
+ };
2643
+ }
2644
+ return originalValue;
2645
+ }
2646
+ });
2647
+ }
2648
+ function wrapSequelizeModels(models, config = {}) {
2649
+ return models.map((model) => wrapSequelizeModel(model, config));
2650
+ }
2651
+
2504
2652
  // src/SequelizeLibrary.ts
2505
- var logger14 = logger_default.get("SequelizeLibrary");
2653
+ var logger15 = logger_default.get("SequelizeLibrary");
2506
2654
  var createSequelizeLibrary = (registry, coordinate, models, options) => {
2507
- logger14.debug("createSequelizeLibrary", { coordinate, models, registry, options });
2655
+ logger15.debug("createSequelizeLibrary", { coordinate, models, registry, options });
2656
+ const hasHooks = hasHooksDefined(options);
2657
+ const directSaveBehavior = options.directSaveBehavior || "warn-and-throw";
2658
+ let wrappedModels = models;
2659
+ if (hasHooks) {
2660
+ const wrapperConfig = {
2661
+ directSaveBehavior,
2662
+ itemType: coordinate.kta[0],
2663
+ hasHooks: true
2664
+ };
2665
+ wrappedModels = wrapSequelizeModels(models, wrapperConfig);
2666
+ logger15.debug("Wrapped Sequelize models to prevent direct save()/update() calls", {
2667
+ itemType: coordinate.kta[0],
2668
+ directSaveBehavior,
2669
+ modelCount: models.length
2670
+ });
2671
+ }
2508
2672
  const operations = createOperations(models, coordinate, registry, options);
2509
2673
  const wrappedOperations = Library3.wrapOperations(operations, options, coordinate, registry);
2510
2674
  const libLibrary = Library3.createLibrary(registry, coordinate, wrappedOperations, options);
2511
2675
  return {
2512
2676
  ...libLibrary,
2513
- models
2677
+ // Expose wrapped models so actions/facets get wrapped instances when querying
2678
+ models: wrappedModels
2514
2679
  };
2515
2680
  };
2516
2681
  var isSequelizeLibrary = (library) => {
@@ -2518,10 +2683,10 @@ var isSequelizeLibrary = (library) => {
2518
2683
  };
2519
2684
 
2520
2685
  // src/SequelizeLibraryFactory.ts
2521
- var logger15 = logger_default.get("InstanceFactory");
2686
+ var logger16 = logger_default.get("InstanceFactory");
2522
2687
  var createSequelizeLibraryFactory = (models, options) => {
2523
2688
  return (coordinate, context) => {
2524
- logger15.debug("Creating Sequelize instance", {
2689
+ logger16.debug("Creating Sequelize instance", {
2525
2690
  coordinate,
2526
2691
  registry: context.registry,
2527
2692
  models: models.map((m) => m.name),
@@ -2544,9 +2709,26 @@ __export(contained_exports, {
2544
2709
 
2545
2710
  // src/contained/SequelizeLibrary.ts
2546
2711
  import { Contained } from "@fjell/lib";
2712
+ var logger17 = logger_default.get("lib-sequelize", "contained", "library");
2547
2713
  function createSequelizeLibrary2(keyTypes, models, libOptions = {}, scopes = [], registry) {
2548
2714
  const coordinate = createCoordinate(keyTypes, scopes);
2549
2715
  const options = createOptions2(libOptions);
2716
+ const hasHooks = hasHooksDefined(options);
2717
+ const directSaveBehavior = options.directSaveBehavior || "warn-and-throw";
2718
+ let wrappedModels = models;
2719
+ if (hasHooks) {
2720
+ const wrapperConfig = {
2721
+ directSaveBehavior,
2722
+ itemType: coordinate.kta[0],
2723
+ hasHooks: true
2724
+ };
2725
+ wrappedModels = wrapSequelizeModels(models, wrapperConfig);
2726
+ logger17.debug("Wrapped Sequelize models to prevent direct save()/update() calls", {
2727
+ itemType: coordinate.kta[0],
2728
+ directSaveBehavior,
2729
+ modelCount: models.length
2730
+ });
2731
+ }
2550
2732
  const operations = createOperations(models, coordinate, registry, options);
2551
2733
  const wrappedOperations = Contained.wrapOperations(operations, options, coordinate, registry);
2552
2734
  return {
@@ -2554,7 +2736,8 @@ function createSequelizeLibrary2(keyTypes, models, libOptions = {}, scopes = [],
2554
2736
  registry,
2555
2737
  operations: wrappedOperations,
2556
2738
  options,
2557
- models
2739
+ models: wrappedModels
2740
+ // Expose wrapped models
2558
2741
  };
2559
2742
  }
2560
2743
 
@@ -2566,11 +2749,27 @@ __export(primary_exports, {
2566
2749
 
2567
2750
  // src/primary/SequelizeLibrary.ts
2568
2751
  import { Primary } from "@fjell/lib";
2569
- var logger16 = logger_default.get("lib-sequelize", "primary", "library");
2752
+ var logger18 = logger_default.get("lib-sequelize", "primary", "library");
2570
2753
  function createSequelizeLibrary3(keyType, models, libOptions = {}, scopes = [], registry) {
2571
- logger16.debug("createSequelizeLibrary", { keyType, models, libOptions, scopes });
2754
+ logger18.debug("createSequelizeLibrary", { keyType, models, libOptions, scopes });
2572
2755
  const coordinate = createCoordinate([keyType], scopes);
2573
2756
  const options = createOptions2(libOptions);
2757
+ const hasHooks = hasHooksDefined(options);
2758
+ const directSaveBehavior = options.directSaveBehavior || "warn-and-throw";
2759
+ let wrappedModels = models;
2760
+ if (hasHooks) {
2761
+ const wrapperConfig = {
2762
+ directSaveBehavior,
2763
+ itemType: keyType,
2764
+ hasHooks: true
2765
+ };
2766
+ wrappedModels = wrapSequelizeModels(models, wrapperConfig);
2767
+ logger18.debug("Wrapped Sequelize models to prevent direct save()/update() calls", {
2768
+ itemType: keyType,
2769
+ directSaveBehavior,
2770
+ modelCount: models.length
2771
+ });
2772
+ }
2574
2773
  const operations = createOperations(models, coordinate, registry, options);
2575
2774
  const wrappedOperations = Primary.wrapOperations(operations, options, coordinate, registry);
2576
2775
  return {
@@ -2578,7 +2777,8 @@ function createSequelizeLibrary3(keyType, models, libOptions = {}, scopes = [],
2578
2777
  registry,
2579
2778
  operations: wrappedOperations,
2580
2779
  options,
2581
- models
2780
+ models: wrappedModels
2781
+ // Expose wrapped models
2582
2782
  };
2583
2783
  }
2584
2784
  export {
@@ -2592,7 +2792,11 @@ export {
2592
2792
  createOptions2 as createOptions,
2593
2793
  createSequelizeLibrary,
2594
2794
  createSequelizeLibraryFactory,
2795
+ hasHooksDefined,
2595
2796
  isSequelizeLibrary,
2596
- stripSequelizeReferenceItems
2797
+ stripSequelizeReferenceItems,
2798
+ wrapSequelizeInstance,
2799
+ wrapSequelizeModel,
2800
+ wrapSequelizeModels
2597
2801
  };
2598
2802
  //# sourceMappingURL=index.js.map