Skip to content

Commit d28d1fd

Browse files
authored
Merge pull request #5 from prashaantt/es5
Make ES5-friendly
2 parents 01cdbce + 733e6e0 commit d28d1fd

8 files changed

Lines changed: 451 additions & 50 deletions

File tree

.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*
22
!lib/**
3+
lib/test
34
!.npmignore

package.json

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tiny-orm",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "A super tiny ORM for TypeScript.",
55
"main": "lib/index.js",
66
"typings": "lib/index",
@@ -10,24 +10,31 @@
1010
"engines": {
1111
"node": ">=6.0.0"
1212
},
13-
"files": [
14-
"lib/"
15-
],
1613
"dependencies": {
1714
"@types/joi": "^10.0.0",
1815
"change-case": "^3.0.0",
1916
"joi": "^10.1.0"
2017
},
2118
"devDependencies": {
22-
"@types/code": "^4.0.0",
19+
"@types/code": "^4.0.1",
20+
"@types/es6-promise": "^0.0.32",
2321
"@types/lab": "^11.1.0",
2422
"code": "^4.0.0",
23+
"es6-promise": "^4.0.5",
2524
"lab": "^11.2.1",
25+
"pre-commit": "^1.2.2",
26+
"tslint": "^4.2.0",
2627
"typescript": "^2.1.4"
2728
},
2829
"scripts": {
29-
"build": "tsc",
30+
"build": "rm -r lib && tsc",
3031
"compile": "tsc --noEmit",
32+
"lint": "tslint -c tslint.json './{src,test}/**/*.ts'",
3133
"test": "lab -T test/test-transform.js"
32-
}
34+
},
35+
"pre-commit": [
36+
"lint",
37+
"test",
38+
"build"
39+
]
3340
}

src/TinyORM.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ export class TinyORM<T> {
2626
validate() {
2727
for (let key in this._props) {
2828
if (this._props[key].schema) {
29-
const propName = this.constructor.name + '.' + key;
29+
const className = (this.constructor as any).name;
30+
const propName = className ? className + '.' + key : key;
3031

3132
validate(this._props[key].value, this._props[key].schema, propName);
3233
}

src/utils.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,65 +12,65 @@ export function validate(value: any, schema: SchemaType, propName?: string) {
1212
}
1313

1414
export function getObject(model: any) {
15-
const obj = {};
15+
let obj = {};
1616

1717
for (let key in model) {
1818
const _prop = model[key];
1919

2020
if (Array.isArray(_prop.value)) {
21-
Object.assign(obj, {
22-
[key]: _prop.value.map((item: any) => {
21+
obj = {
22+
...obj, [key]: _prop.value.map((item: any) => {
2323

2424
if (typeof item !== 'object') {
2525
return item;
2626
}
2727

2828
return getObject(item);
2929
})
30-
});
30+
};
3131
}
3232
else if (typeof _prop.value === 'object') {
33-
Object.assign(obj, {
34-
[key]: getObject(_prop.value)
35-
});
33+
obj = {
34+
...obj, [key]: getObject(_prop.value)
35+
};
3636
}
3737
else {
38-
Object.assign(obj, {
39-
[key]: _prop.value || _prop
40-
});
38+
obj = {
39+
...obj, [key]: _prop.value || _prop
40+
};
4141
}
4242
}
4343

4444
return obj;
4545
}
4646

4747
export function changeCaseDeep(obj: any, fn: Function) {
48-
const changedObj = {} as any;
48+
let changedObj = {};
4949

5050
for (let key in obj) {
5151
const changedKeyCase = fn(key);
5252

5353
if (Array.isArray(obj[key])) {
54-
Object.assign(changedObj, {
55-
[changedKeyCase]: obj[key].map((item: any) => {
54+
changedObj = {
55+
...changedObj, [changedKeyCase]: obj[key].map((item: any) => {
5656

5757
if (typeof item !== 'object') {
5858
return item;
5959
}
6060

6161
return changeCaseDeep(item, fn);
6262
})
63-
});
63+
};
6464
}
6565
else if (typeof obj[key] === 'object') {
66-
Object.assign(changedObj, {
67-
[changedKeyCase]: changeCaseDeep(obj[key], fn)
68-
});
66+
changedObj = {
67+
...changedObj, [changedKeyCase]: changeCaseDeep(obj[key], fn)
68+
};
6969
}
7070
else {
71-
Object.assign(changedObj, {
72-
[changedKeyCase]: obj[key]
73-
});
71+
changedObj = {
72+
...changedObj, [changedKeyCase]: obj[key]
73+
};
7474
}
7575
}
7676

test/TinyORM.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,10 @@ suite('The TinyORM base class', () => {
217217
userEmail: 'test@example.com'
218218
});
219219

220-
const camelCasedTest = user.toDbObject();
221-
assert(camelCasedTest.user_guid).equals(user.userGuid);
220+
const camelCasedTest = user.toDbObject() as User;
221+
assert((<any>camelCasedTest).user_guid).equals(user.userGuid);
222222
assert(camelCasedTest.userGuid).undefined();
223-
assert(camelCasedTest.user_email).equals(user.userEmail);
223+
assert((<any>camelCasedTest).user_email).equals(user.userEmail);
224224
assert(camelCasedTest.userEmail).undefined();
225225

226226
done();

test/utils.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ suite('The changeCaseDeep function', () => {
5858
};
5959

6060
let transformedObj = changeCaseDeep(camelCasedObj, snakeCase);
61-
assert(camelCasedObj).equals(camelCasedObj);
6261
assert(transformedObj).equals(snakeCased);
6362

6463
transformedObj = changeCaseDeep(transformedObj, camelCase);

tsconfig.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
{
22
"compilerOptions": {
33
"module": "commonjs",
4-
"target": "es6",
4+
"target": "es5",
55
"noImplicitAny": true,
66
"strictNullChecks": true,
77
"experimentalDecorators": true,
8-
"emitDecoratorMetadata": true,
9-
"inlineSourceMap": true,
108
"outDir": "lib",
11-
"declaration": true
9+
"declaration": true,
10+
"alwaysStrict": true
1211
}
1312
}

0 commit comments

Comments
 (0)