@alpha.consultings/eloquent-orm.js 1.0.7 → 1.0.9

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/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## [1.0.9](https://github.com/MetalDz/Eloquent-ORM.js/compare/v1.0.8...v1.0.9) (2026-03-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add esm-safe package entry and document nodenext imports ([ccf1105](https://github.com/MetalDz/Eloquent-ORM.js/commit/ccf11057385d0ad00530ad41ba34b41f575fae02))
7
+ * patch dist cjs factory export after build ([2499e1a](https://github.com/MetalDz/Eloquent-ORM.js/commit/2499e1a08bc47835d59668a02e3cf6baa6b284d2))
8
+
9
+ ## [1.0.8](https://github.com/MetalDz/Eloquent-ORM.js/compare/v1.0.7...v1.0.8) (2026-03-28)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * sync new release block format with v1.0.7 metadata ([0472869](https://github.com/MetalDz/Eloquent-ORM.js/commit/04728693cf84f04ce1749555a64ce9706f9499d3))
15
+
1
16
  ## [1.0.7](https://github.com/MetalDz/Eloquent-ORM.js/compare/v1.0.6...v1.0.7) (2026-03-28)
2
17
 
3
18
 
@@ -1,6 +1,6 @@
1
1
  # Package Update Summary
2
2
 
3
- Version: `1.0.5`
3
+ Version: `1.0.9`
4
4
 
5
5
  This file is the source of truth for the release-focused quick info block that appears in `README.md`.
6
6
 
@@ -14,16 +14,16 @@ npm run docs:sync-package-metadata
14
14
 
15
15
  <!-- release-lineup:start -->
16
16
  Latest Release:
17
- - `v1.0.7 latest`
17
+ - `v1.0.9 latest`
18
18
 
19
19
  Old Release:
20
- - `v1.0.6`
20
+ - `v1.0.8`
21
21
  <!-- release-lineup:end -->
22
22
 
23
23
  ## Latest Release Summary
24
24
 
25
25
  <!-- latest-package-update:start -->
26
- - ESM-safe `make:registry` imports for NodeNext apps, `SoftDeletesMixin` schema-detection hardening, restored 100% Docker coverage, and passing Docker pack smoke.
26
+ - Add an ESM-safe package entry for NodeNext consumers, keep CommonJS root imports from eagerly loading `Factory`, and verify installed-package ESM imports in pack-smoke.
27
27
  <!-- latest-package-update:end -->
28
28
 
29
29
  ## Synced Quick Info
@@ -31,10 +31,11 @@ Old Release:
31
31
  <!-- package-quick-info:start -->
32
32
  Quick info:
33
33
  - Package: `@alpha.consultings/eloquent-orm.js`
34
- - Version: `1.0.7`
35
- - Latest release: `v1.0.7 latest`
36
- - Old release: `v1.0.6`
37
- - Latest update: ESM-safe `make:registry` imports for NodeNext apps, `SoftDeletesMixin` schema-detection hardening, restored 100% Docker coverage, and passing Docker pack smoke.
34
+ - Version: `v1.0.9`
35
+ - Latest release: `v1.0.9 latest`
36
+ - What's new: Fix release
37
+ - Old release: `v1.0.8`
38
+ - Latest update: Add an ESM-safe package entry for NodeNext consumers, keep CommonJS root imports from eagerly loading `Factory`, and verify installed-package ESM imports in pack-smoke.
38
39
  - Official docs: https://alphaconsultings.mintlify.app
39
40
  - Quick start: https://alphaconsultings.mintlify.app/getting-started/quick-start
40
41
  - Release history: https://alphaconsultings.mintlify.app/release/history
package/README.md CHANGED
@@ -17,10 +17,11 @@ Laravel-inspired ORM + CLI for Node.js + TypeScript with SQL and MongoDB runtime
17
17
  <!-- package-quick-info:start -->
18
18
  Quick info:
19
19
  - Package: `@alpha.consultings/eloquent-orm.js`
20
- - Version: `1.0.7`
21
- - Latest release: `v1.0.7 latest`
22
- - Old release: `v1.0.6`
23
- - Latest update: ESM-safe `make:registry` imports for NodeNext apps, `SoftDeletesMixin` schema-detection hardening, restored 100% Docker coverage, and passing Docker pack smoke.
20
+ - Version: `v1.0.9`
21
+ - Latest release: `v1.0.9 latest`
22
+ - What's new: Fix release
23
+ - Old release: `v1.0.8`
24
+ - Latest update: Add an ESM-safe package entry for NodeNext consumers, keep CommonJS root imports from eagerly loading `Factory`, and verify installed-package ESM imports in pack-smoke.
24
25
  - Official docs: https://alphaconsultings.mintlify.app
25
26
  - Quick start: https://alphaconsultings.mintlify.app/getting-started/quick-start
26
27
  - Release history: https://alphaconsultings.mintlify.app/release/history
package/dist/index.js CHANGED
@@ -14,8 +14,7 @@ Object.defineProperty(exports, "MongoModel", { enumerable: true, get: function (
14
14
  Object.defineProperty(exports, "MorphRegistry", { enumerable: true, get: function () { return BaseModel_1.MorphRegistry; } });
15
15
  var PivotHelperMixin_1 = require("./core/orm/mixins/PivotHelperMixin");
16
16
  Object.defineProperty(exports, "PivotHelperMixin", { enumerable: true, get: function () { return PivotHelperMixin_1.PivotHelperMixin; } });
17
- var Factory_1 = require("./cli/utils/factories/Factory");
18
- Object.defineProperty(exports, "Factory", { enumerable: true, get: function () { return Factory_1.Factory; } });
17
+ Object.defineProperty(exports, "Factory", { enumerable: true, get: function () { return require("./cli/utils/factories/Factory").Factory; } });
19
18
  var CoreModel_1 = require("./core/model/CoreModel");
20
19
  Object.defineProperty(exports, "CoreModel", { enumerable: true, get: function () { return CoreModel_1.CoreModel; } });
21
20
  var SchemaBlueprint_1 = require("./core/schema/SchemaBlueprint");
@@ -0,0 +1,143 @@
1
+ import { faker } from "@faker-js/faker";
2
+
3
+ export class Factory {
4
+ faker = faker;
5
+
6
+ async create(attrs = {}, index = 0) {
7
+ const base = this.definition(index);
8
+ const merged = { ...base, ...attrs };
9
+
10
+ if (this.beforeCreate) {
11
+ const modified = await this.beforeCreate(merged, index);
12
+ if (modified && typeof modified === "object") {
13
+ Object.assign(merged, modified);
14
+ }
15
+ }
16
+
17
+ let instance = new this.model();
18
+
19
+ if (this.#hasInstanceCreate(instance)) {
20
+ const created = await instance.create(merged);
21
+ if (created) {
22
+ instance = created;
23
+ }
24
+ } else if (this.#hasStaticCreate(this.model)) {
25
+ return this.model.create(merged);
26
+ } else if (this.#hasInstanceSave(instance)) {
27
+ Object.assign(instance, merged);
28
+ await instance.save();
29
+ } else {
30
+ throw new Error(`Model '${this.model.name}' has no valid create/save method.`);
31
+ }
32
+
33
+ if (this.afterCreate) {
34
+ await this.afterCreate(instance);
35
+ }
36
+
37
+ return instance;
38
+ }
39
+
40
+ async createMany(count, callback, concurrency = 1) {
41
+ const results = [];
42
+
43
+ const executeCreate = async (index) => {
44
+ const model = await this.create({}, index);
45
+ if (callback) {
46
+ await callback(model, index);
47
+ }
48
+ results[index] = model;
49
+ };
50
+
51
+ if (concurrency <= 1) {
52
+ for (let index = 0; index < count; index += 1) {
53
+ await executeCreate(index);
54
+ }
55
+ return results;
56
+ }
57
+
58
+ let active = 0;
59
+ let index = 0;
60
+ let settled = false;
61
+
62
+ return new Promise((resolve, reject) => {
63
+ const maybeResolve = () => {
64
+ if (!settled && index >= count && active === 0) {
65
+ settled = true;
66
+ resolve(results);
67
+ }
68
+ };
69
+
70
+ const next = () => {
71
+ if (settled) {
72
+ return;
73
+ }
74
+
75
+ while (active < concurrency && index < count && !settled) {
76
+ const currentIndex = index++;
77
+ active += 1;
78
+
79
+ void executeCreate(currentIndex)
80
+ .catch((error) => {
81
+ if (settled) {
82
+ return;
83
+ }
84
+ settled = true;
85
+ reject(error);
86
+ })
87
+ .finally(() => {
88
+ active -= 1;
89
+ if (settled) {
90
+ return;
91
+ }
92
+ next();
93
+ });
94
+ }
95
+
96
+ maybeResolve();
97
+ };
98
+
99
+ next();
100
+ });
101
+ }
102
+
103
+ async related(factoryOrCtor, count = 1) {
104
+ const factory =
105
+ typeof factoryOrCtor === "function"
106
+ ? new factoryOrCtor()
107
+ : factoryOrCtor;
108
+
109
+ if (count === 1) {
110
+ return factory.create();
111
+ }
112
+
113
+ return factory.createMany(count);
114
+ }
115
+
116
+ async relatedPivot(
117
+ factory,
118
+ pivotTable,
119
+ foreignKey,
120
+ relatedKey,
121
+ foreignId,
122
+ relatedIds,
123
+ extraPivotAttrs
124
+ ) {
125
+ await factory.createPivot(foreignId, relatedIds, extraPivotAttrs);
126
+
127
+ console.log(
128
+ `[Pivot Attached] Table "${pivotTable}" (${foreignKey} -> ${relatedKey})`
129
+ );
130
+ }
131
+
132
+ #hasInstanceCreate(obj) {
133
+ return typeof obj?.create === "function";
134
+ }
135
+
136
+ #hasStaticCreate(ctor) {
137
+ return typeof ctor?.create === "function";
138
+ }
139
+
140
+ #hasInstanceSave(obj) {
141
+ return typeof obj?.save === "function";
142
+ }
143
+ }
package/esm/index.mjs ADDED
@@ -0,0 +1,32 @@
1
+ import cjsPackage from "../dist/index.js";
2
+ import { Factory } from "./Factory.mjs";
3
+
4
+ export { Factory };
5
+
6
+ export const {
7
+ BaseModel,
8
+ Model,
9
+ SqlModel,
10
+ MongoModel,
11
+ MorphRegistry,
12
+ PivotHelperMixin,
13
+ CoreModel,
14
+ column,
15
+ validate,
16
+ relation,
17
+ mixin,
18
+ validateSchema,
19
+ SchemaValidator,
20
+ SchemaBuilder,
21
+ CacheManager,
22
+ setupCache,
23
+ registerModels,
24
+ isModelRegistered,
25
+ setModelRegistryStrictMode,
26
+ isModelRegistryStrictMode,
27
+ } = cjsPackage;
28
+
29
+ export default {
30
+ ...cjsPackage,
31
+ Factory,
32
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpha.consultings/eloquent-orm.js",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "A Laravel Eloquent-inspired ORM Multi Driver SQL & NoSQL and Cache System and Artisan CLI like for Node.js Lovers",
5
5
  "keywords": [
6
6
  "orm",
@@ -46,8 +46,15 @@
46
46
  "exports": {
47
47
  ".": {
48
48
  "types": "./dist/index.d.ts",
49
+ "import": "./esm/index.mjs",
49
50
  "require": "./dist/index.js",
50
- "default": "./dist/index.js"
51
+ "default": "./esm/index.mjs"
52
+ },
53
+ "./Factory": {
54
+ "types": "./dist/cli/utils/factories/Factory.d.ts",
55
+ "import": "./esm/Factory.mjs",
56
+ "require": "./dist/cli/utils/factories/Factory.js",
57
+ "default": "./esm/Factory.mjs"
51
58
  },
52
59
  "./Model": {
53
60
  "types": "./dist/Model.d.ts",
@@ -61,6 +68,7 @@
61
68
  },
62
69
  "files": [
63
70
  "dist",
71
+ "esm/**/*",
64
72
  "src/cli/templates/**/*",
65
73
  "README.md",
66
74
  "CHANGELOG.md",
@@ -71,7 +79,7 @@
71
79
  "docs:sync-supported": "node scripts/sync-supported-versions.cjs",
72
80
  "docs:sync-config": "node scripts/sync-mintlify-configs.cjs",
73
81
  "clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
74
- "build": "npm run docs:sync-package-metadata && npm run docs:sync-supported && npm run clean && tsc -p tsconfig.build.json",
82
+ "build": "npm run docs:sync-package-metadata && npm run docs:sync-supported && npm run clean && tsc -p tsconfig.build.json && node scripts/patch-dist-cjs-factory-entry.cjs",
75
83
  "typecheck": "tsc -p . --noEmit --skipLibCheck",
76
84
  "docs:dev": "npm run docs:sync-package-metadata && npm run docs:sync-config && node scripts/run-mintlify.cjs dev",
77
85
  "docs:build": "npm run docs:sync-package-metadata && npm run docs:sync-supported && npm run docs:sync-config && node scripts/run-mintlify.cjs validate",