@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 +11 -0
- package/dist/Options.d.ts.map +1 -1
- package/dist/SequelizeLibrary.d.ts.map +1 -1
- package/dist/contained/SequelizeLibrary.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +214 -10
- package/dist/index.js.map +4 -4
- package/dist/primary/SequelizeLibrary.d.ts.map +1 -1
- package/dist/util/SequelizeInstanceWrapper.d.ts +52 -0
- package/dist/util/SequelizeInstanceWrapper.d.ts.map +1 -0
- package/package.json +9 -9
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
|
package/dist/Options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../src/Options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;
|
|
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;
|
|
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;
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
|
2653
|
+
var logger15 = logger_default.get("SequelizeLibrary");
|
|
2506
2654
|
var createSequelizeLibrary = (registry, coordinate, models, options) => {
|
|
2507
|
-
|
|
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
|
|
2686
|
+
var logger16 = logger_default.get("InstanceFactory");
|
|
2522
2687
|
var createSequelizeLibraryFactory = (models, options) => {
|
|
2523
2688
|
return (coordinate, context) => {
|
|
2524
|
-
|
|
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
|
|
2752
|
+
var logger18 = logger_default.get("lib-sequelize", "primary", "library");
|
|
2570
2753
|
function createSequelizeLibrary3(keyType, models, libOptions = {}, scopes = [], registry) {
|
|
2571
|
-
|
|
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
|