recordbase 0.1.1 → 0.2.0
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/helpers/index.d.ts +4 -3
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +12 -5
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/record/RecordFields.d.ts +22 -7
- package/dist/record/RecordFields.d.ts.map +1 -1
- package/dist/record/RecordFields.js +119 -31
- package/dist/record/RecordFields.js.map +1 -1
- package/dist/record/RecordSchema.d.ts +5 -0
- package/dist/record/RecordSchema.d.ts.map +1 -1
- package/dist/record/RecordSchema.js +7 -2
- package/dist/record/RecordSchema.js.map +1 -1
- package/dist/record/RecordTable.d.ts.map +1 -1
- package/dist/record/RecordTable.js +2 -1
- package/dist/record/RecordTable.js.map +1 -1
- package/package.json +6 -2
package/dist/helpers/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { RecordBook } from '../record/RecordBook';
|
|
2
|
-
import { RecordField, RecordFieldBuilder, RecordGroupBuilder, RecordProcessor, RecordSchema } from '../record/RecordSchema';
|
|
2
|
+
import { RecordField, RecordFieldBuilder, RecordGroupBuilder, RecordGroupFactory, RecordProcessor, RecordSchema } from '../record/RecordSchema';
|
|
3
3
|
import { RecordStore } from '../record/RecordStore';
|
|
4
4
|
import { RecordTable } from '../record/RecordTable';
|
|
5
5
|
export declare const book: <const Tables extends readonly RecordTable<any, RecordSchema>[]>(store: RecordStore<Tables>) => RecordBook<Tables>;
|
|
6
6
|
export declare const table: <const Name extends string, const Schema extends RecordSchema>(name: Name, schema: Schema) => RecordTable<Name, Schema>;
|
|
7
|
-
export declare
|
|
7
|
+
export declare function group<const Fields extends RecordField<any, any, any>[]>(fields: Fields): RecordGroupFactory<Fields>;
|
|
8
|
+
export declare function group<const Name extends string, const Fields extends RecordField<any, any, any>[]>(name: Name, fields: Fields): RecordGroupBuilder<Name, Fields, false>;
|
|
8
9
|
export declare const field: <const Name extends string, Type>(name: Name, processor: RecordProcessor<Type>) => RecordFieldBuilder<Name, Type, false>;
|
|
9
|
-
export { booleanField as boolean, numberField as number, currencyField as currency, percentField as percent,
|
|
10
|
+
export { booleanField as boolean, numberField as number, stringField as string, dateField as date, datetimeField as datetime, currencyField as currency, percentField as percent, enumField as enum, emailField as email, phoneField as phone, } from '../record/RecordFields';
|
|
10
11
|
export * as grid from './grid';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAY,MAAM,wBAAwB,CAAC;AAC1J,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,MAAM,SAAS,SAAS,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,uBACtF,CAAC;AAE1B,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,SAAS,YAAY,EAAE,MAAM,IAAI,EAAE,QAAQ,MAAM,8BAC7E,CAAC;AAElC,wBAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACrH,wBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAC9F,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAczE,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,WAAW,eAAe,CAAC,IAAI,CAAC,0CACL,CAAC;AAE/F,OAAO,EACH,YAAY,IAAI,OAAO,EACvB,WAAW,IAAI,MAAM,EACrB,WAAW,IAAI,MAAM,EACrB,SAAS,IAAI,IAAI,EACjB,aAAa,IAAI,QAAQ,EACzB,aAAa,IAAI,QAAQ,EACzB,YAAY,IAAI,OAAO,EACvB,SAAS,IAAI,IAAI,EACjB,UAAU,IAAI,KAAK,EACnB,UAAU,IAAI,KAAK,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
|
package/dist/helpers/index.js
CHANGED
|
@@ -33,7 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.grid = exports.
|
|
36
|
+
exports.grid = exports.phone = exports.email = exports.enum = exports.percent = exports.currency = exports.datetime = exports.date = exports.string = exports.number = exports.boolean = exports.field = exports.table = exports.book = void 0;
|
|
37
|
+
exports.group = group;
|
|
37
38
|
const RecordBook_1 = require("../record/RecordBook");
|
|
38
39
|
const RecordSchema_1 = require("../record/RecordSchema");
|
|
39
40
|
const RecordTable_1 = require("../record/RecordTable");
|
|
@@ -41,18 +42,24 @@ const book = (store) => new RecordBook_1.RecordBook(store);
|
|
|
41
42
|
exports.book = book;
|
|
42
43
|
const table = (name, schema) => new RecordTable_1.RecordTable(name, schema);
|
|
43
44
|
exports.table = table;
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
function group(nameOrFields, fields) {
|
|
46
|
+
if (typeof nameOrFields === 'string')
|
|
47
|
+
return new RecordSchema_1.RecordGroupBuilder(nameOrFields, false, fields);
|
|
48
|
+
const factory = (name) => new RecordSchema_1.RecordGroupBuilder(name, false, nameOrFields);
|
|
49
|
+
return Object.defineProperty(factory, 'type', { get: RecordSchema_1.typeOnly });
|
|
50
|
+
}
|
|
46
51
|
const field = (name, processor) => new RecordSchema_1.RecordFieldBuilder(name, false, processor.validate, processor.parse, processor.encode);
|
|
47
52
|
exports.field = field;
|
|
48
53
|
var RecordFields_1 = require("../record/RecordFields");
|
|
49
54
|
Object.defineProperty(exports, "boolean", { enumerable: true, get: function () { return RecordFields_1.booleanField; } });
|
|
50
55
|
Object.defineProperty(exports, "number", { enumerable: true, get: function () { return RecordFields_1.numberField; } });
|
|
56
|
+
Object.defineProperty(exports, "string", { enumerable: true, get: function () { return RecordFields_1.stringField; } });
|
|
57
|
+
Object.defineProperty(exports, "date", { enumerable: true, get: function () { return RecordFields_1.dateField; } });
|
|
58
|
+
Object.defineProperty(exports, "datetime", { enumerable: true, get: function () { return RecordFields_1.datetimeField; } });
|
|
51
59
|
Object.defineProperty(exports, "currency", { enumerable: true, get: function () { return RecordFields_1.currencyField; } });
|
|
52
60
|
Object.defineProperty(exports, "percent", { enumerable: true, get: function () { return RecordFields_1.percentField; } });
|
|
53
|
-
Object.defineProperty(exports, "string", { enumerable: true, get: function () { return RecordFields_1.stringField; } });
|
|
54
61
|
Object.defineProperty(exports, "enum", { enumerable: true, get: function () { return RecordFields_1.enumField; } });
|
|
62
|
+
Object.defineProperty(exports, "email", { enumerable: true, get: function () { return RecordFields_1.emailField; } });
|
|
55
63
|
Object.defineProperty(exports, "phone", { enumerable: true, get: function () { return RecordFields_1.phoneField; } });
|
|
56
|
-
Object.defineProperty(exports, "date", { enumerable: true, get: function () { return RecordFields_1.dateField; } });
|
|
57
64
|
exports.grid = __importStar(require("./grid"));
|
|
58
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,sBAWC;AAzBD,qDAAkD;AAClD,yDAA0J;AAE1J,uDAAoD;AAE7C,MAAM,IAAI,GAAG,CAAiE,KAA0B,EAAE,EAAE,CAC/G,IAAI,uBAAU,CAAC,KAAK,CAAC,CAAC;AADb,QAAA,IAAI,QACS;AAEnB,MAAM,KAAK,GAAG,CAA+D,IAAU,EAAE,MAAc,EAAE,EAAE,CAC9G,IAAI,yBAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AADrB,QAAA,KAAK,SACgB;AAKlC,SAAgB,KAAK,CACjB,YAAmD,EACnD,MAAqC;IAErC,IAAI,OAAO,YAAY,KAAK,QAAQ;QAChC,OAAO,IAAI,iCAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,MAAO,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7B,IAAI,iCAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAEtD,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,uBAAQ,EAAE,CAAC,CAAC;AACrE,CAAC;AAEM,MAAM,KAAK,GAAG,CAAkC,IAAU,EAAE,SAAgC,EAAE,EAAE,CACnG,IAAI,iCAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AADlF,QAAA,KAAK,SAC6E;AAE/F,uDAWgC;AAV5B,uGAAA,YAAY,OAAW;AACvB,sGAAA,WAAW,OAAU;AACrB,sGAAA,WAAW,OAAU;AACrB,oGAAA,SAAS,OAAQ;AACjB,wGAAA,aAAa,OAAY;AACzB,wGAAA,aAAa,OAAY;AACzB,uGAAA,YAAY,OAAW;AACvB,oGAAA,SAAS,OAAQ;AACjB,qGAAA,UAAU,OAAS;AACnB,qGAAA,UAAU,OAAS;AAGvB,+CAA+B"}
|
package/dist/index.js
CHANGED
|
@@ -41,4 +41,12 @@ __exportStar(require("./record"), exports);
|
|
|
41
41
|
__exportStar(require("./util"), exports);
|
|
42
42
|
__exportStar(require("./grid"), exports);
|
|
43
43
|
exports.rb = __importStar(require("./helpers"));
|
|
44
|
+
const log = (label, result, expected) => {
|
|
45
|
+
const matched = result.success === expected;
|
|
46
|
+
console.log(`\x1b[35m${label.padStart(35)}\x1b[0m \x1b[40m` +
|
|
47
|
+
(matched ? '\x1b[32m✓\x1b[0m' : '\x1b[31m✗\x1b[0m') + ' ' +
|
|
48
|
+
(result.success
|
|
49
|
+
? `\x1b[32msuccess:\x1b[0m \x1b[33m${result.value}\x1b[0m`
|
|
50
|
+
: `\x1b[31mfailure:\x1b[0m \x1b[36m${result.info}\x1b[0m`));
|
|
51
|
+
};
|
|
44
52
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AAEvB,gDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AAEvB,gDAAgC;AAKhC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,MAAwB,EAAE,QAAiB,EAAE,EAAE;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC;IAE5C,OAAO,CAAC,GAAG,CACP,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAmB;QAChD,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,IAAI;QAC1D,CAAC,MAAM,CAAC,OAAO;YACX,CAAC,CAAC,mCAAmC,MAAM,CAAC,KAAK,SAAS;YAC1D,CAAC,CAAC,mCAAmC,MAAM,CAAC,IAAI,SAAS,CAAC,CACjE,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { RecordFieldBuilder } from "./RecordSchema";
|
|
3
|
+
import { IsEmailOptions } from 'validator/lib/isEmail';
|
|
4
|
+
import { IsURLOptions } from 'validator';
|
|
5
|
+
export declare const booleanField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, boolean, false>;
|
|
6
|
+
export declare const numberField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, number, false>;
|
|
7
|
+
export declare const integerField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, number, false>;
|
|
8
|
+
export declare const bigintField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, bigint, false>;
|
|
9
|
+
export declare const stringField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, string, false>;
|
|
10
|
+
export declare const dateField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, Date, false>;
|
|
11
|
+
export type DateTimeOptions = {
|
|
12
|
+
formats?: readonly string[];
|
|
13
|
+
locale?: string;
|
|
14
|
+
zone?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const datetimeField: <const Name extends string>(name: Name, options?: DateTimeOptions) => RecordFieldBuilder<Name, DateTime<boolean>, false>;
|
|
17
|
+
export declare const currencyField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, number, false>;
|
|
18
|
+
export declare const percentField: <const Name extends string>(name: Name) => RecordFieldBuilder<Name, number, false>;
|
|
7
19
|
export declare const enumField: <const Name extends string, const Enum extends readonly string[]>(name: Name, values: Enum, caseSensitive?: boolean) => RecordFieldBuilder<Name, string, false>;
|
|
20
|
+
export type EmailOptions = IsEmailOptions;
|
|
21
|
+
export declare const emailField: <const Name extends string>(name: Name, options?: EmailOptions) => RecordFieldBuilder<Name, string, false>;
|
|
22
|
+
export type UrlOptions = IsURLOptions;
|
|
23
|
+
export declare const urlField: <const Name extends string>(name: Name, options?: UrlOptions) => RecordFieldBuilder<Name, string, false>;
|
|
8
24
|
export type PhoneFormatter = (phone: {
|
|
9
25
|
area: string;
|
|
10
26
|
start: string;
|
|
11
27
|
end: string;
|
|
12
28
|
}) => string;
|
|
13
29
|
export declare const phoneField: <const Name extends string>(name: Name, format?: PhoneFormatter) => RecordFieldBuilder<Name, string, false>;
|
|
14
|
-
export declare const dateField: <const Name extends string>(name: Name, parser?: RecordParser<Date>) => RecordFieldBuilder<Name, Date, false>;
|
|
15
30
|
//# sourceMappingURL=RecordFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordFields.d.ts","sourceRoot":"","sources":["../../src/record/RecordFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RecordFields.d.ts","sourceRoot":"","sources":["../../src/record/RecordFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAwCzC,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,6CAO7D,CAAC;AAEN,eAAO,MAAM,WAAW,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAS5D,CAAC;AAEN,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAS7D,CAAC;AAEN,eAAO,MAAM,WAAW,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAc5D,CAAC;AAEN,eAAO,MAAM,WAAW,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAO5D,CAAC;AAKN,eAAO,MAAM,SAAS,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,0CAU1D,CAAC;AAGN,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAyBF,eAAO,MAAM,aAAa,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EACnD,MAAM,IAAI,EACV,UAAS,eAAoB,uDAahC,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAuB9D,CAAC;AAEN,eAAO,MAAM,YAAY,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,4CAuB7D,CAAC;AAsBN,eAAO,MAAM,SAAS,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,IAAI,SAAS,SAAS,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE,QAAQ,IAAI,EAAE,gBAAe,OAAe,4CAIlJ,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAM1C,eAAO,MAAM,UAAU,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,EAAE,UAAU,YAAY,4CAUvF,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAMtC,eAAO,MAAM,QAAQ,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,EAAE,UAAU,UAAU,4CAUnF,CAAC;AAIF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,KAAK,MAAM,CAAC;AAyB9F,eAAO,MAAM,UAAU,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,IAAI,EAAE,SAAS,cAAc,4CAIxF,CAAC"}
|
|
@@ -1,35 +1,119 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
6
|
+
exports.phoneField = exports.urlField = exports.emailField = exports.enumField = exports.percentField = exports.currencyField = exports.datetimeField = exports.dateField = exports.stringField = exports.bigintField = exports.integerField = exports.numberField = exports.booleanField = void 0;
|
|
7
|
+
const luxon_1 = require("luxon");
|
|
4
8
|
const RecordSchema_1 = require("./RecordSchema");
|
|
5
9
|
const util_1 = require("../util");
|
|
10
|
+
const isEmail_1 = __importDefault(require("validator/lib/isEmail"));
|
|
11
|
+
const isURL_1 = __importDefault(require("validator/lib/isURL"));
|
|
12
|
+
/* Helpers */
|
|
6
13
|
const expected = (received, ...expected) => util_1.Result.failure(`Expected ${expected.length === 1 ? expected[0] : expected.join('|')}, but received '${received}'`);
|
|
7
|
-
const
|
|
14
|
+
const numberPattern = /^[+-]?(?:(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;
|
|
15
|
+
const parseNumber = (value) => {
|
|
16
|
+
const text = value.trim();
|
|
17
|
+
if (!numberPattern.test(text))
|
|
18
|
+
return expected(value, 'a number');
|
|
19
|
+
const parsed = Number(text.replaceAll(',', ''));
|
|
20
|
+
return Number.isFinite(parsed)
|
|
21
|
+
? util_1.Result.success(parsed)
|
|
22
|
+
: expected(value, 'a number');
|
|
23
|
+
};
|
|
24
|
+
const integerPattern = /^[+-]?(?:\d{1,3}(?:,\d{3})+|\d+)$/;
|
|
25
|
+
const parseInteger = (value) => {
|
|
26
|
+
const text = value.trim();
|
|
27
|
+
if (!integerPattern.test(text))
|
|
28
|
+
return expected(value, 'a safe integer');
|
|
29
|
+
const parsed = Number(text.replaceAll(',', ''));
|
|
30
|
+
return Number.isSafeInteger(parsed)
|
|
31
|
+
? util_1.Result.success(parsed)
|
|
32
|
+
: expected(value, 'a safe integer');
|
|
33
|
+
};
|
|
34
|
+
/* Primitive Fields */
|
|
35
|
+
const booleanField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, (value => typeof value === 'boolean' ? util_1.Result.success(value) : expected(value, 'a boolean')), (value => value === 'TRUE' ? util_1.Result.success(true) : value === 'FALSE' ? util_1.Result.success(false) : expected(value, 'TRUE', 'FALSE')), (value => value));
|
|
8
36
|
exports.booleanField = booleanField;
|
|
9
|
-
const numberField = (name
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
? expected(value, 'a number')
|
|
13
|
-
: util_1.Result.success(parsed);
|
|
14
|
-
}), processor?.encode ?? (value => value));
|
|
37
|
+
const numberField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => typeof value === 'number' && Number.isFinite(value)
|
|
38
|
+
? util_1.Result.success(value)
|
|
39
|
+
: expected(value, 'a number'), parseNumber, value => value);
|
|
15
40
|
exports.numberField = numberField;
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
41
|
+
const integerField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => typeof value === 'number' && Number.isSafeInteger(value)
|
|
42
|
+
? util_1.Result.success(value)
|
|
43
|
+
: expected(value, 'a safe integer'), parseInteger, value => value);
|
|
44
|
+
exports.integerField = integerField;
|
|
45
|
+
const bigintField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => typeof value === 'bigint'
|
|
46
|
+
? util_1.Result.success(value)
|
|
47
|
+
: expected(value, 'a bigint'), value => {
|
|
48
|
+
if (typeof value !== 'string' || !integerPattern.test(value.trim()))
|
|
49
|
+
return expected(value, 'a bigint');
|
|
50
|
+
return util_1.Result.success(BigInt(value.trim().replaceAll(',', '')));
|
|
51
|
+
}, value => value == null ? value : value.toString());
|
|
52
|
+
exports.bigintField = bigintField;
|
|
53
|
+
const stringField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, (value => typeof value === 'string' ? util_1.Result.success(value) : expected(value, 'a string')), (value => util_1.Result.success(value)), (value => value));
|
|
54
|
+
exports.stringField = stringField;
|
|
55
|
+
/* Temporal Fields */
|
|
56
|
+
// JS Date
|
|
57
|
+
const dateField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => value instanceof Date && !isNaN(value.getTime()) ? util_1.Result.success(value) : expected(value, 'a date'), (value) => {
|
|
58
|
+
const parsed = new Date(value);
|
|
59
|
+
return isNaN(parsed.getTime()) ? expected(value, 'a date') : util_1.Result.success(parsed);
|
|
60
|
+
}, value => value);
|
|
61
|
+
exports.dateField = dateField;
|
|
62
|
+
const datetimeParser = ({ formats = [], locale = 'en-US', zone = 'UTC' }) => (value) => {
|
|
63
|
+
if (typeof value !== 'string')
|
|
64
|
+
return expected(value, 'a date/time');
|
|
65
|
+
const iso = luxon_1.DateTime.fromISO(value, { zone, setZone: true });
|
|
66
|
+
if (iso.isValid)
|
|
67
|
+
return util_1.Result.success(iso);
|
|
68
|
+
for (const format of formats) {
|
|
69
|
+
const parsed = luxon_1.DateTime.fromFormat(value, format, {
|
|
70
|
+
locale,
|
|
71
|
+
zone,
|
|
72
|
+
setZone: true
|
|
73
|
+
});
|
|
74
|
+
if (parsed.isValid)
|
|
75
|
+
return util_1.Result.success(parsed);
|
|
76
|
+
}
|
|
77
|
+
return expected(value, 'a date/time');
|
|
78
|
+
};
|
|
79
|
+
const datetimeField = (name, options = {}) => {
|
|
80
|
+
const parser = datetimeParser(options);
|
|
81
|
+
return new RecordSchema_1.RecordFieldBuilder(name, false, value => luxon_1.DateTime.isDateTime(value) && value.isValid
|
|
82
|
+
? util_1.Result.success(value)
|
|
83
|
+
: expected(value, 'a valid DateTime'), parser, value => value == null ? value : value.toISO({ extendedZone: true }));
|
|
84
|
+
};
|
|
85
|
+
exports.datetimeField = datetimeField;
|
|
86
|
+
/* Specialized Number Fields */
|
|
87
|
+
const currencyField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => typeof value === 'number' && Number.isFinite(value)
|
|
88
|
+
? util_1.Result.success(value)
|
|
89
|
+
: expected(value, 'a number'), value => {
|
|
90
|
+
if (typeof value !== 'string')
|
|
91
|
+
return expected(value, 'a currency amount');
|
|
92
|
+
const text = value.trim();
|
|
93
|
+
// Allow an optional sign before the dollar symbol, never after it.
|
|
94
|
+
const match = /^([+-]?)\$([\d.,]+)$/.exec(text);
|
|
95
|
+
const result = parseNumber(match ? `${match[1]}${match[2]}` : text);
|
|
96
|
+
return result.success
|
|
97
|
+
? result
|
|
98
|
+
: expected(value, 'a currency amount');
|
|
99
|
+
}, value => value);
|
|
22
100
|
exports.currencyField = currencyField;
|
|
23
|
-
const percentField = (name
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
101
|
+
const percentField = (name) => new RecordSchema_1.RecordFieldBuilder(name, false, value => typeof value === 'number' && Number.isFinite(value)
|
|
102
|
+
? util_1.Result.success(value)
|
|
103
|
+
: expected(value, 'a number'), value => {
|
|
104
|
+
if (typeof value !== 'string')
|
|
105
|
+
return expected(value, 'a percentage');
|
|
106
|
+
const text = value.trim();
|
|
107
|
+
// Only allow a percent sign immediately after the number.
|
|
108
|
+
const match = /^([+-]?[\d.,]+)%$/.exec(text);
|
|
109
|
+
const result = parseNumber(match ? match[1] : text);
|
|
110
|
+
return result.success
|
|
111
|
+
? util_1.Result.success(result.value / (match ? 100 : 1))
|
|
112
|
+
: expected(value, 'a percentage');
|
|
113
|
+
}, value => value);
|
|
30
114
|
exports.percentField = percentField;
|
|
31
|
-
|
|
32
|
-
|
|
115
|
+
/* Specialized String Fields */
|
|
116
|
+
// Enum
|
|
33
117
|
const enumParser = (values, caseSensitive) => {
|
|
34
118
|
const find = caseSensitive
|
|
35
119
|
? (value) => values.find(item => item === value)
|
|
@@ -48,6 +132,18 @@ const enumField = (name, values, caseSensitive = false) => {
|
|
|
48
132
|
return new RecordSchema_1.RecordFieldBuilder(name, false, parser, parser, value => value);
|
|
49
133
|
};
|
|
50
134
|
exports.enumField = enumField;
|
|
135
|
+
const makeEmailParser = (options) => (value) => typeof value === 'string' && (0, isEmail_1.default)(value, options) ? util_1.Result.success(value) : expected(value, 'an email address');
|
|
136
|
+
const emailField = (name, options) => {
|
|
137
|
+
const parser = makeEmailParser(options);
|
|
138
|
+
return new RecordSchema_1.RecordFieldBuilder(name, false, parser, parser, value => value);
|
|
139
|
+
};
|
|
140
|
+
exports.emailField = emailField;
|
|
141
|
+
const makeUrlParser = (options) => (value) => typeof value === 'string' && (0, isURL_1.default)(value, options) ? util_1.Result.success(value) : expected(value, 'a Url');
|
|
142
|
+
const urlField = (name, options) => {
|
|
143
|
+
const parser = makeUrlParser(options);
|
|
144
|
+
return new RecordSchema_1.RecordFieldBuilder(name, false, parser, parser, value => value);
|
|
145
|
+
};
|
|
146
|
+
exports.urlField = urlField;
|
|
51
147
|
const defaultPhoneFormat = ({ area, start, end }) => `(${area}) ${start}-${end}`;
|
|
52
148
|
const getPhoneNumber = (text, format = defaultPhoneFormat) => {
|
|
53
149
|
const [result, area, start, end] = text.match(/^ *\((\d{3})\) *(\d{3}) *-? *(\d{4}) *$/) ||
|
|
@@ -69,12 +165,4 @@ const phoneField = (name, format) => {
|
|
|
69
165
|
return new RecordSchema_1.RecordFieldBuilder(name, false, parser, parser, value => value);
|
|
70
166
|
};
|
|
71
167
|
exports.phoneField = phoneField;
|
|
72
|
-
const defaultDateParser = (value) => {
|
|
73
|
-
const parsed = new Date(value);
|
|
74
|
-
return isNaN(parsed.getTime())
|
|
75
|
-
? expected(value, 'a date')
|
|
76
|
-
: util_1.Result.success(parsed);
|
|
77
|
-
};
|
|
78
|
-
const dateField = (name, parser) => new RecordSchema_1.RecordFieldBuilder(name, false, value => value instanceof Date && !isNaN(value.getTime()) ? util_1.Result.success(value) : expected(value, 'a date'), parser ?? defaultDateParser, value => value);
|
|
79
|
-
exports.dateField = dateField;
|
|
80
168
|
//# sourceMappingURL=RecordFields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordFields.js","sourceRoot":"","sources":["../../src/record/RecordFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RecordFields.js","sourceRoot":"","sources":["../../src/record/RecordFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ export declare const RecordElement: Readonly<{
|
|
|
26
26
|
isField: (element: RecordElement) => element is RecordField;
|
|
27
27
|
}>;
|
|
28
28
|
export type RecordSchema = RecordElement[];
|
|
29
|
+
export declare const typeOnly: () => never;
|
|
29
30
|
export declare class RecordFieldBuilder<const Name extends string, const Type, Optional extends boolean = false> implements RecordField<Name, Type, Optional> {
|
|
30
31
|
readonly name: Name;
|
|
31
32
|
readonly isOptional: Optional;
|
|
@@ -33,6 +34,7 @@ export declare class RecordFieldBuilder<const Name extends string, const Type, O
|
|
|
33
34
|
readonly parse: RecordParser<Type>;
|
|
34
35
|
readonly encode: RecordEncoder<Type>;
|
|
35
36
|
constructor(name: Name, isOptional: Optional, validate: RecordValidator<Type>, parse: RecordParser<Type>, encode: RecordEncoder<Type>);
|
|
37
|
+
get type(): Type;
|
|
36
38
|
optional(): RecordFieldBuilder<Name, Type, true>;
|
|
37
39
|
validator(validator: RecordValidator<Type>): RecordFieldBuilder<Name, Type, Optional>;
|
|
38
40
|
parser(parser: RecordParser<Type>): RecordFieldBuilder<Name, Type, Optional>;
|
|
@@ -46,4 +48,7 @@ export declare class RecordGroupBuilder<const Name extends string, const Fields
|
|
|
46
48
|
get type(): RecordGroupData<Fields>;
|
|
47
49
|
optional(): RecordGroupBuilder<Name, Fields, true>;
|
|
48
50
|
}
|
|
51
|
+
export type RecordGroupFactory<Fields extends RecordField<any, any, any>[]> = (<const Name extends string>(name: Name) => RecordGroupBuilder<Name, Fields, false>) & {
|
|
52
|
+
readonly type: RecordGroupBuilder<string, Fields, false>['type'];
|
|
53
|
+
};
|
|
49
54
|
//# sourceMappingURL=RecordSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordSchema.d.ts","sourceRoot":"","sources":["../../src/record/RecordSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAGrG,MAAM,MAAM,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAE7E,MAAM,MAAM,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEzE,MAAM,MAAM,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,KAAK,WAAW,CAAC;AAGlF,MAAM,MAAM,eAAe,CAAC,IAAI,IAAI;IAChC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAGF,MAAM,MAAM,WAAW,CACnB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,IAAI,GAAG,GAAG,EACV,QAAQ,SAAS,OAAO,GAAG,OAAO,IAClC;IACA,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,QAAQ,CAAC;CACxB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,WAAW,CACnB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,EAC5C,QAAQ,SAAS,OAAO,GAAG,OAAO,IAClC;IACA,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;AAEtD,eAAO,MAAM,aAAa;uBACH,aAAa,KAAG,OAAO,IAAI,WAAW;uBAGtC,aAAa,KAAG,OAAO,IAAI,WAAW;EAE3D,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RecordSchema.d.ts","sourceRoot":"","sources":["../../src/record/RecordSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RecordGroupBuilder = exports.RecordFieldBuilder = exports.RecordElement = void 0;
|
|
3
|
+
exports.RecordGroupBuilder = exports.RecordFieldBuilder = exports.typeOnly = exports.RecordElement = void 0;
|
|
4
4
|
const util_1 = require("../util");
|
|
5
5
|
exports.RecordElement = Object.freeze({
|
|
6
6
|
isGroup: (element) => 'fields' in element,
|
|
7
7
|
isField: (element) => !('fields' in element)
|
|
8
8
|
});
|
|
9
9
|
/* Builders */
|
|
10
|
+
const typeOnly = () => { throw new Error('Type-only property cannot be accessed at runtime'); };
|
|
11
|
+
exports.typeOnly = typeOnly;
|
|
10
12
|
class RecordFieldBuilder {
|
|
11
13
|
name;
|
|
12
14
|
isOptional;
|
|
@@ -21,6 +23,9 @@ class RecordFieldBuilder {
|
|
|
21
23
|
this.encode = encode;
|
|
22
24
|
(0, util_1.freeze)(this);
|
|
23
25
|
}
|
|
26
|
+
get type() {
|
|
27
|
+
return (0, exports.typeOnly)();
|
|
28
|
+
}
|
|
24
29
|
optional() {
|
|
25
30
|
return new RecordFieldBuilder(this.name, true, this.validate, this.parse, this.encode);
|
|
26
31
|
}
|
|
@@ -47,7 +52,7 @@ class RecordGroupBuilder {
|
|
|
47
52
|
(0, util_1.freeze)(this);
|
|
48
53
|
}
|
|
49
54
|
get type() {
|
|
50
|
-
|
|
55
|
+
return (0, exports.typeOnly)();
|
|
51
56
|
}
|
|
52
57
|
optional() {
|
|
53
58
|
return new RecordGroupBuilder(this.name, true, this.fields);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordSchema.js","sourceRoot":"","sources":["../../src/record/RecordSchema.ts"],"names":[],"mappings":";;;AACA,kCAAyC;AAyC5B,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,OAAsB,EAA0B,EAAE,CACxD,QAAQ,IAAI,OAAO;IAEvB,OAAO,EAAE,CAAC,OAAsB,EAA0B,EAAE,CACxD,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC;CAC7B,CAAC,CAAC;AAIH,cAAc;
|
|
1
|
+
{"version":3,"file":"RecordSchema.js","sourceRoot":"","sources":["../../src/record/RecordSchema.ts"],"names":[],"mappings":";;;AACA,kCAAyC;AAyC5B,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,OAAsB,EAA0B,EAAE,CACxD,QAAQ,IAAI,OAAO;IAEvB,OAAO,EAAE,CAAC,OAAsB,EAA0B,EAAE,CACxD,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC;CAC7B,CAAC,CAAC;AAIH,cAAc;AAEP,MAAM,QAAQ,GAAG,GAAU,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC;AAAjG,QAAA,QAAQ,YAAyF;AAE9G,MAAa,kBAAkB;IAMP;IACA;IACA;IACA;IACA;IALpB,YACoB,IAAU,EACV,UAAoB,EACpB,QAA+B,EAC/B,KAAyB,EACzB,MAA2B;QAJ3B,SAAI,GAAJ,IAAI,CAAM;QACV,eAAU,GAAV,UAAU,CAAU;QACpB,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,UAAK,GAAL,KAAK,CAAoB;QACzB,WAAM,GAAN,MAAM,CAAqB;QAC3C,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAEnB,IAAI,IAAI;QACJ,OAAO,IAAA,gBAAQ,GAAE,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CACd,CAAC;IACN,CAAC;IAED,SAAS,CAAC,SAAgC;QACtC,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,SAAS,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CACd,CAAC;IACN,CAAC;IAED,MAAM,CAAC,MAA0B;QAC7B,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,MAAM,EACN,IAAI,CAAC,MAAM,CACd,CAAC;IACN,CAAC;IAED,OAAO,CAAC,OAA4B;QAChC,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AAxDD,gDAwDC;AAED,MAAa,kBAAkB;IAMP;IACA;IACA;IAHpB,YACoB,IAAU,EACV,UAAoB,EACpB,MAAc;QAFd,SAAI,GAAJ,IAAI,CAAM;QACV,eAAU,GAAV,UAAU,CAAU;QACpB,WAAM,GAAN,MAAM,CAAQ;QAE9B,IAAI,CAAC,MAAM,GAAG,IAAA,aAAM,EAAC,CAAC,GAAG,MAAM,CAAC,CAAsB,CAAC;QACvD,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAA,gBAAQ,GAAE,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;CACJ;AArBD,gDAqBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTable.d.ts","sourceRoot":"","sources":["../../src/record/RecordTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"RecordTable.d.ts","sourceRoot":"","sources":["../../src/record/RecordTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAExD,qBAAa,WAAW,CACpB,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAClC,KAAK,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;aAG5B,IAAI,EAAE,IAAI;aACV,MAAM,EAAE,MAAM;gBADd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM;IAGlC,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CAE7B;CACJ;AAED,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE3E,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAErF,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvF,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RecordTable = void 0;
|
|
4
|
+
const RecordSchema_1 = require("./RecordSchema");
|
|
4
5
|
class RecordTable {
|
|
5
6
|
name;
|
|
6
7
|
schema;
|
|
@@ -9,7 +10,7 @@ class RecordTable {
|
|
|
9
10
|
this.schema = schema;
|
|
10
11
|
}
|
|
11
12
|
get type() {
|
|
12
|
-
|
|
13
|
+
return (0, RecordSchema_1.typeOnly)();
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
exports.RecordTable = RecordTable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTable.js","sourceRoot":"","sources":["../../src/record/RecordTable.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"RecordTable.js","sourceRoot":"","sources":["../../src/record/RecordTable.ts"],"names":[],"mappings":";;;AACA,iDAAwD;AAExD,MAAa,WAAW;IAKA;IACA;IAFpB,YACoB,IAAU,EACV,MAAc;QADd,SAAI,GAAJ,IAAI,CAAM;QACV,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEL,IAAI,IAAI;QACJ,OAAO,IAAA,uBAAQ,GAAE,CAAC;IACtB,CAAC;CACJ;AAZD,kCAYC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "recordbase",
|
|
3
3
|
"description": "Typed Record Tables over Spreadsheets, JSON, SQL or other storage backends.",
|
|
4
4
|
"author": "lemfraust",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git@github.com:lemfraust/recordbase.git"
|
|
@@ -25,10 +25,14 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@googleapis/sheets": "^18.1.1"
|
|
28
|
+
"@googleapis/sheets": "^18.1.1",
|
|
29
|
+
"luxon": "^3.7.2",
|
|
30
|
+
"validator": "^13.15.35"
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
33
|
+
"@types/luxon": "^3.7.6",
|
|
31
34
|
"@types/node": "^26.6.3",
|
|
35
|
+
"@types/validator": "^13.15.10",
|
|
32
36
|
"tsx": "^4.23.15",
|
|
33
37
|
"typescript": "~6.0.2",
|
|
34
38
|
"vitest": "^5.0.4"
|