@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 +15 -0
- package/PACKAGE-UPDATE-SUMMARY.md +9 -8
- package/README.md +5 -4
- package/dist/index.js +1 -2
- package/esm/Factory.mjs +143 -0
- package/esm/index.mjs +32 -0
- package/package.json +11 -3
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.
|
|
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.
|
|
17
|
+
- `v1.0.9 latest`
|
|
18
18
|
|
|
19
19
|
Old Release:
|
|
20
|
-
- `v1.0.
|
|
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
|
|
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: `
|
|
35
|
-
- Latest release: `v1.0.
|
|
36
|
-
-
|
|
37
|
-
-
|
|
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: `
|
|
21
|
-
- Latest release: `v1.0.
|
|
22
|
-
-
|
|
23
|
-
-
|
|
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
|
-
|
|
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");
|
package/esm/Factory.mjs
ADDED
|
@@ -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.
|
|
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": "./
|
|
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",
|