From b807f670d4124e6e082df7f183f95d082c14da81 Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 18:31:08 -0500 Subject: [PATCH 1/6] Updated Type-R --- .gitmodules | 2 +- lib/backbone.d.ts | 12 +- lib/backbone.js.map | 2 +- lib/index.js.map | 2 +- lib/rest-store.js.map | 2 +- lib/rest.js | 10 +- lib/rest.js.map | 2 +- lib/sync.d.ts | 9 +- lib/sync.js.map | 2 +- lib/type-r/collection/add.d.ts | 2 +- lib/type-r/collection/add.js | 4 +- lib/type-r/collection/add.js.map | 2 +- lib/type-r/collection/commons.d.ts | 8 +- lib/type-r/collection/commons.js | 14 +- lib/type-r/collection/commons.js.map | 2 +- lib/type-r/collection/index.d.ts | 7 +- lib/type-r/collection/index.js | 195 ++++++------- lib/type-r/collection/index.js.map | 2 +- lib/type-r/collection/remove.d.ts | 2 +- lib/type-r/collection/remove.js | 2 +- lib/type-r/collection/remove.js.map | 2 +- lib/type-r/collection/set.d.ts | 2 +- lib/type-r/collection/set.js | 6 +- lib/type-r/collection/set.js.map | 2 +- lib/type-r/endpoints/attributes.js.map | 2 +- lib/type-r/endpoints/localStorage.js.map | 2 +- lib/type-r/endpoints/memory.js.map | 2 +- lib/type-r/index.d.ts | 13 +- lib/type-r/index.js | 19 +- lib/type-r/index.js.map | 2 +- lib/type-r/io-tools.d.ts | 2 +- lib/type-r/io-tools.js | 1 - lib/type-r/io-tools.js.map | 2 +- lib/type-r/object-plus/events.d.ts | 6 +- lib/type-r/object-plus/events.js | 11 +- lib/type-r/object-plus/events.js.map | 2 +- lib/type-r/object-plus/eventsource.js.map | 2 +- lib/type-r/object-plus/index.d.ts | 15 +- lib/type-r/object-plus/index.js | 11 +- lib/type-r/object-plus/index.js.map | 2 +- lib/type-r/object-plus/logging.d.ts | 19 ++ lib/type-r/object-plus/logging.js | 64 +++++ lib/type-r/object-plus/logging.js.map | 1 + lib/type-r/object-plus/mixins.d.ts | 1 + lib/type-r/object-plus/mixins.js | 14 +- lib/type-r/object-plus/mixins.js.map | 2 +- lib/type-r/object-plus/tools.d.ts | 17 +- lib/type-r/object-plus/tools.js | 67 +---- lib/type-r/object-plus/tools.js.map | 2 +- lib/type-r/record/attrDef.d.ts | 30 ++ lib/type-r/record/attrDef.js | 170 +++++++++++ lib/type-r/record/attrDef.js.map | 1 + lib/type-r/record/attributes/any.d.ts | 9 +- lib/type-r/record/attributes/any.js | 12 +- lib/type-r/record/attributes/any.js.map | 2 +- lib/type-r/record/attributes/attrDef.d.ts | 6 +- lib/type-r/record/attributes/attrDef.js | 59 ++-- lib/type-r/record/attributes/attrDef.js.map | 2 +- lib/type-r/record/attributes/basic.d.ts | 2 +- lib/type-r/record/attributes/basic.js | 4 +- lib/type-r/record/attributes/basic.js.map | 2 +- lib/type-r/record/attributes/date.d.ts | 2 +- lib/type-r/record/attributes/date.js.map | 2 +- lib/type-r/record/attributes/index.d.ts | 1 - lib/type-r/record/attributes/index.js | 19 +- lib/type-r/record/attributes/index.js.map | 2 +- lib/type-r/record/attributes/owned.d.ts | 2 +- lib/type-r/record/attributes/owned.js | 2 +- lib/type-r/record/attributes/owned.js.map | 2 +- lib/type-r/record/attributes/shared.js.map | 2 +- lib/type-r/record/attributes/updates.js.map | 2 +- lib/type-r/record/index.d.ts | 6 +- lib/type-r/record/index.js | 25 +- lib/type-r/record/index.js.map | 2 +- lib/type-r/record/io-mixin.d.ts | 10 +- lib/type-r/record/io-mixin.js | 3 +- lib/type-r/record/io-mixin.js.map | 2 +- lib/type-r/record/metatypes/any.d.ts | 55 ++++ lib/type-r/record/metatypes/any.js | 136 +++++++++ lib/type-r/record/metatypes/any.js.map | 1 + lib/type-r/record/metatypes/basic.d.ts | 48 ++++ lib/type-r/record/metatypes/basic.js | 129 +++++++++ lib/type-r/record/metatypes/basic.js.map | 1 + lib/type-r/record/metatypes/date.d.ts | 14 + lib/type-r/record/metatypes/date.js | 76 +++++ lib/type-r/record/metatypes/date.js.map | 1 + lib/type-r/record/metatypes/index.d.ts | 6 + lib/type-r/record/metatypes/index.js | 21 ++ lib/type-r/record/metatypes/index.js.map | 1 + lib/type-r/record/metatypes/owned.d.ts | 18 ++ lib/type-r/record/metatypes/owned.js | 96 +++++++ lib/type-r/record/metatypes/owned.js.map | 1 + lib/type-r/record/metatypes/shared.d.ts | 19 ++ lib/type-r/record/metatypes/shared.js | 103 +++++++ lib/type-r/record/metatypes/shared.js.map | 1 + lib/type-r/record/mixin.d.ts | 18 ++ lib/type-r/record/mixin.js | 43 +++ lib/type-r/record/mixin.js.map | 1 + lib/type-r/record/record.d.ts | 9 +- lib/type-r/record/record.js | 161 ++++++----- lib/type-r/record/record.js.map | 2 +- lib/type-r/record/updates.d.ts | 43 +++ lib/type-r/record/updates.js | 118 ++++++++ lib/type-r/record/updates.js.map | 1 + lib/type-r/relations/commons.js.map | 2 +- lib/type-r/relations/from.d.ts | 2 + lib/type-r/relations/from.js | 10 +- lib/type-r/relations/from.js.map | 2 +- lib/type-r/relations/index.d.ts | 4 +- lib/type-r/relations/index.js | 4 +- lib/type-r/relations/index.js.map | 2 +- lib/type-r/relations/store.js.map | 2 +- lib/type-r/relations/subsetOf.d.ts | 2 + lib/type-r/relations/subsetOf.js | 18 +- lib/type-r/relations/subsetOf.js.map | 2 +- lib/type-r/transactions.d.ts | 36 ++- lib/type-r/transactions.js | 50 +--- lib/type-r/transactions.js.map | 2 +- lib/type-r/traversable.d.ts | 2 +- lib/type-r/traversable.js | 9 +- lib/type-r/traversable.js.map | 2 +- lib/type-r/validation.js.map | 2 +- lib/underscore-mixin.js.map | 2 +- package-lock.json | 94 +++--- package.json | 6 +- src/type-r/collection/add.ts | 8 +- src/type-r/collection/commons.ts | 23 +- src/type-r/collection/index.ts | 301 ++++++++++---------- src/type-r/collection/remove.ts | 8 +- src/type-r/collection/set.ts | 10 +- src/type-r/index.ts | 31 +- src/type-r/io-tools.ts | 5 +- src/type-r/object-plus/events.ts | 19 +- src/type-r/object-plus/index.ts | 31 +- src/type-r/object-plus/logging.ts | 83 ++++++ src/type-r/object-plus/mixins.ts | 21 +- src/type-r/object-plus/tools.ts | 103 +------ src/type-r/record/attrDef.ts | 203 +++++++++++++ src/type-r/record/attributes/any.ts | 19 +- src/type-r/record/attributes/attrDef.ts | 70 ++--- src/type-r/record/attributes/basic.ts | 4 +- src/type-r/record/attributes/index.ts | 41 +-- src/type-r/record/attributes/owned.ts | 2 +- src/type-r/record/index.ts | 36 +-- src/type-r/record/io-mixin.ts | 14 +- src/type-r/record/metatypes/README.md | 42 +++ src/type-r/record/metatypes/any.ts | 282 ++++++++++++++++++ src/type-r/record/metatypes/basic.ts | 157 ++++++++++ src/type-r/record/metatypes/date.ts | 109 +++++++ src/type-r/record/metatypes/index.ts | 34 +++ src/type-r/record/metatypes/owned.ts | 121 ++++++++ src/type-r/record/metatypes/shared.ts | 152 ++++++++++ src/type-r/record/mixin.ts | 87 ++++++ src/type-r/record/record.ts | 223 +++++++-------- src/type-r/record/updates.ts | 230 +++++++++++++++ src/type-r/relations/commons.ts | 6 +- src/type-r/relations/from.ts | 13 +- src/type-r/relations/index.ts | 8 +- src/type-r/relations/store.ts | 5 +- src/type-r/relations/subsetOf.ts | 30 +- src/type-r/transactions.ts | 86 ++---- src/type-r/traversable.ts | 18 +- submodules/Type-R | 2 +- 163 files changed, 3762 insertions(+), 1212 deletions(-) create mode 100644 lib/type-r/object-plus/logging.d.ts create mode 100644 lib/type-r/object-plus/logging.js create mode 100644 lib/type-r/object-plus/logging.js.map create mode 100644 lib/type-r/record/attrDef.d.ts create mode 100644 lib/type-r/record/attrDef.js create mode 100644 lib/type-r/record/attrDef.js.map create mode 100644 lib/type-r/record/metatypes/any.d.ts create mode 100644 lib/type-r/record/metatypes/any.js create mode 100644 lib/type-r/record/metatypes/any.js.map create mode 100644 lib/type-r/record/metatypes/basic.d.ts create mode 100644 lib/type-r/record/metatypes/basic.js create mode 100644 lib/type-r/record/metatypes/basic.js.map create mode 100644 lib/type-r/record/metatypes/date.d.ts create mode 100644 lib/type-r/record/metatypes/date.js create mode 100644 lib/type-r/record/metatypes/date.js.map create mode 100644 lib/type-r/record/metatypes/index.d.ts create mode 100644 lib/type-r/record/metatypes/index.js create mode 100644 lib/type-r/record/metatypes/index.js.map create mode 100644 lib/type-r/record/metatypes/owned.d.ts create mode 100644 lib/type-r/record/metatypes/owned.js create mode 100644 lib/type-r/record/metatypes/owned.js.map create mode 100644 lib/type-r/record/metatypes/shared.d.ts create mode 100644 lib/type-r/record/metatypes/shared.js create mode 100644 lib/type-r/record/metatypes/shared.js.map create mode 100644 lib/type-r/record/mixin.d.ts create mode 100644 lib/type-r/record/mixin.js create mode 100644 lib/type-r/record/mixin.js.map create mode 100644 lib/type-r/record/updates.d.ts create mode 100644 lib/type-r/record/updates.js create mode 100644 lib/type-r/record/updates.js.map create mode 100644 src/type-r/object-plus/logging.ts create mode 100644 src/type-r/record/attrDef.ts create mode 100644 src/type-r/record/metatypes/README.md create mode 100644 src/type-r/record/metatypes/any.ts create mode 100644 src/type-r/record/metatypes/basic.ts create mode 100644 src/type-r/record/metatypes/date.ts create mode 100644 src/type-r/record/metatypes/index.ts create mode 100644 src/type-r/record/metatypes/owned.ts create mode 100644 src/type-r/record/metatypes/shared.ts create mode 100644 src/type-r/record/mixin.ts create mode 100644 src/type-r/record/updates.ts diff --git a/.gitmodules b/.gitmodules index 423b24c..f61157b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "submodules/Type-R"] path = submodules/Type-R url = https://github.com/Volicon/Type-R.git - branch = master + branch = develop diff --git a/lib/backbone.d.ts b/lib/backbone.d.ts index d4b0314..418cf8c 100644 --- a/lib/backbone.d.ts +++ b/lib/backbone.d.ts @@ -1,5 +1,5 @@ /// -declare global { +declare global { interface Window { Backbone: any; } @@ -10,13 +10,13 @@ declare const exported: { $: JQueryStatic; history: any; VERSION: string; - View: (options: any) => void; - History: () => void; - Router: (options: any) => void; - noConflict: () => any; + View: typeof View; + History: typeof History; + Router: typeof Router; + noConflict: typeof noConflict; }; export default exported; +declare function noConflict(): any; export declare function View(options: any): void; export declare function Router(options: any): void; export declare function History(): void; -export {}; diff --git a/lib/backbone.js.map b/lib/backbone.js.map index 12028dd..f7aab9c 100644 --- a/lib/backbone.js.map +++ b/lib/backbone.js.map @@ -1 +1 @@ -{"version":3,"file":"backbone.js","sourceRoot":"","sources":["../src/backbone.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"backbone.js","sourceRoot":"","sources":["../src/backbone.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index fc5735f..8e163b2 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,cAAc,UAAU,CAAA;AAKxB,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,IAAI,MAAM,QAAQ,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMnD,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAE5F,MAAM,mBAAoB,CAAC;IACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAED,cAAc,YAAY,CAAC;AAE3B,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,sBAAuB,SAAS,EAAE,IAAI;IAClC,MAAM,CAAC;QACH,GAAG,gBAAI,MAAM,CAAC,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,iBAAkB,GAAG;IACjB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,cAAc,UAAU,CAAA;AAKxB,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,IAAI,MAAM,QAAQ,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMnD,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAE5F,MAAM,UAAU,QAAQ,CAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAED,cAAc,YAAY,CAAC;AAE3B,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,SAAS,YAAY,CAAE,SAAS,EAAE,IAAI;IAClC,OAAO;QACH,GAAG,gBAAI,OAAO,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAE,GAAG;IACjB,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/lib/rest-store.js.map b/lib/rest-store.js.map index 44b6ab5..a788631 100644 --- a/lib/rest-store.js.map +++ b/lib/rest-store.js.map @@ -1 +1 @@ -{"version":3,"file":"rest-store.js","sourceRoot":"","sources":["../src/rest-store.ts"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,CAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,EAAsB,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAMlD;IAA+B,qCAAS;IAAxC;;IAA0C,CAAC;IAA9B,SAAS;QAJrB,MAAM,CAAC;YACJ,QAAQ,EAAG,KAAK,CAAC,SAAS,CAAC,QAAQ;YACnC,GAAG,EAAG,KAAK,CAAC,SAAS,CAAC,GAAG;SAC5B,CAAC;OACW,SAAS,CAAqB;IAAD,gBAAC;CAAA,AAA3C,CAA+B,SAAS,GAAG;SAA9B,SAAS;AAGtB;IAA+B,qCAAS;IADxC;QAAA,qEAkGC;QAhGG,eAAS,GAAS,EAAE,CAAA;;IAgGxB,CAAC;IA9FG,8BAAU,GAAV;QAAA,iBAmBC;QAlBG,IAAI,CAAC,IAAI,CAAE,UAAE,OAAO,EAAE,IAAI;YACtB,EAAE,CAAA,CAAE,CAAC,OAAQ,CAAC;gBAAC,MAAM,CAAC;YAEtB,OAAO,CAAC,KAAK,GAAG,KAAI,CAAC;YAErB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE1B,EAAE,CAAA,CAAE,KAAM,CAAC,CAAA,CAAC;gBACR,IAAM,MAAI,GAAG,KAAI,CAAC;gBAClB,OAAO,CAAC,KAAK,GAAG;oBACZ,MAAM,CAAC,MAAI,CAAC,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,KAAK,CAAE,IAAI,EAAE,SAAS,CAAE,CAAC;gBACnE,CAAC,CAAA;YACL,CAAC;YAED,EAAE,CAAA,CAAE,OAAO,YAAY,cAAc,IAAI,OAAO,CAAC,MAAO,CAAC,CAAA,CAAC;gBACtD,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAID,yBAAK,GAAL;QAAO,cAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,yBAAe;;QAClB,IAAI,GAAG,GAAW,EAAE,EAChB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnD,GAAG,CAAA,CAAc,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW;YAAvB,IAAI,MAAI,oBAAA;YACT,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAI,CAAC,CAAC;YACjC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAC;SAClD;QAEO,IAAA,cAAC,CAAc;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;IACjD,CAAC;IAID,6BAAS,GAAT;QAAW,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACzB,IAAI,GAAG,GAAW,EAAE,EAChB,IAAI,GAAU,IAAI,EAClB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnD,GAAG,CAAA,CAAc,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW;YAAvB,IAAI,MAAI,oBAAA;YACT,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAE,MAAI,CAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAE,IAAI,CAAC,SAAS,CAAE,MAAI,CAAE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3E;QAEO,IAAA,cAAC,CAAc;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;IACjD,CAAC;IAED,yBAAK,GAAL;QAAO,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnD,GAAG,CAAA,CAAc,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW;YAAvB,IAAI,MAAI,oBAAA;YACT,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAE,MAAI,CAAE,CAAC;YAEtC,EAAE,CAAA,CAAE,OAAO,YAAY,cAAe,CAAC,CAAA,CAAC;gBACpC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAA,CAAE,OAAO,YAAY,KAAM,CAAC,CAAA,CAAC;gBAChC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAA,CAAE,OAAO,YAAY,SAAU,CAAC,CAAA,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAE,OAAO,CAAC,QAAQ,EAAE,CAAE,CAAA;YACrC,CAAC;YAED,IAAI,CAAC,SAAS,CAAE,MAAI,CAAE,GAAG,KAAK,CAAC;SAClC;QAED,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAEM,kBAAQ,GAAf,UAAiB,WAAW,EAAE,SAAS;QACnC,IAAI,UAAU,GAAG,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC;QAGhE,CAAC,CAAC,IAAI,CAAE,UAAU,EAAE,UAAE,IAAe,EAAE,IAAI;YACvC,EAAE,CAAA,CAAE,IAAI,CAAC,GAAI,CAAC,CAAA,CAAC;gBACX,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;qBACtB,GAAG,CAAE,UAAU,KAAK;oBACjB,EAAE,CAAA,CAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAO,CAAC,CAAA,CAAC;wBAC1B,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,CAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAE,CAAC;wBAC3D,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC3B,CAAC;oBAED,MAAM,CAAC,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAA;YACV,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAE,CAAC;IAC5D,CAAC;IAhGQ,SAAS;QADrB,MAAM;OACM,SAAS,CAiGrB;IAAD,gBAAC;CAAA,AAjGD,CAA+B,SAAS,GAiGvC;SAjGY,SAAS"} \ No newline at end of file +{"version":3,"file":"rest-store.js","sourceRoot":"","sources":["../src/rest-store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/rest.js b/lib/rest.js index 69b2c1c..2fa428f 100644 --- a/lib/rest.js +++ b/lib/rest.js @@ -39,7 +39,7 @@ var RestCollection = (function (_super) { return _sync('read', this, options); }; RestCollection.prototype.create = function (a_model, options) { - var _this = this; + var _this_1 = this; if (options === void 0) { options = {}; } var model = a_model instanceof RestModel ? a_model : @@ -50,7 +50,7 @@ var RestCollection = (function (_super) { var success = options.success; options.success = function (model, resp, callbackOpts) { if (options.wait) - _this.add([model], defaults({ parse: false }, callbackOpts)); + _this_1.add([model], defaults({ parse: false }, callbackOpts)); if (success) success.call(callbackOpts.context, model, resp, callbackOpts); }; @@ -107,7 +107,7 @@ var RestModel = (function (_super) { return Sync.sync.apply(this, arguments); }; RestModel.prototype.save = function (key, val, a_options) { - var _this = this; + var _this_1 = this; var attrs, originalOptions; if (key == null || typeof key === 'object') { attrs = key; @@ -134,7 +134,7 @@ var RestModel = (function (_super) { if (wait) serverAttrs = _.extend({}, attrs, serverAttrs); if (serverAttrs) { - transactionalProto.set.call(_this, serverAttrs, options); + transactionalProto.set.call(_this_1, serverAttrs, options); if (model._invalidate(options)) return false; } @@ -191,6 +191,7 @@ var RestModel = (function (_super) { return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id); }; RestModel.prototype.set = function (a, b, c) { + var _a; if (typeof a === 'string') { if (c) { return _super.prototype.set.call(this, (_a = {}, _a[a] = b, _a), c); @@ -203,7 +204,6 @@ var RestModel = (function (_super) { else { return _super.prototype.set.call(this, a, b); } - var _a; }; RestModel.Collection = RestCollection; RestModel = tslib_1.__decorate([ diff --git a/lib/rest.js.map b/lib/rest.js.map index 41e6bb2..5aeb5c1 100644 --- a/lib/rest.js.map +++ b/lib/rest.js.map @@ -1 +1 @@ -{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/sync.d.ts b/lib/sync.d.ts index ca3f0de..4d9ffa5 100644 --- a/lib/sync.d.ts +++ b/lib/sync.d.ts @@ -4,7 +4,7 @@ export declare type Method = 'create' | 'update' | 'patch' | 'delete' | 'read'; export interface Restful { trigger(event: string, model: any, xhr: any, options: any): any; collection?: { - trigger(event: string, model, xhr, options); + trigger(event: string, model: any, xhr: any, options: any): any; }; toJSON(options: any): {}; _xhr: JQueryXHR; @@ -14,9 +14,9 @@ export interface SyncOptions { url?: LazyValue; data?: any; attrs?: {}; - beforeSend?: (xhr) => any; + beforeSend?: (xhr: any) => any; success?: (resp: any) => void; - error?: (xhr?, textStatus?, errorThrown?) => void; + error?: (xhr?: any, textStatus?: any, errorThrown?: any) => void; textStatus?: string; errorThrown?: any; xhr?: any; @@ -26,7 +26,8 @@ declare const exported: { $: JQueryStatic; errorPromise: (error: any) => JQueryDeferred<{}>; ajax: (options: {}) => any; - sync: (method: Method, model: Restful, options?: SyncOptions) => JQueryXHR; + sync: typeof sync; urlError: () => never; }; export default exported; +declare function sync(method: Method, model: Restful, options?: SyncOptions): JQueryXHR; diff --git a/lib/sync.js.map b/lib/sync.js.map index 7b18d6a..186b85d 100644 --- a/lib/sync.js.map +++ b/lib/sync.js.map @@ -1 +1 @@ -{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,QAAQ,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACxB,IAAA,yBAAQ,CAAW;AA8B3B,IAAM,SAAS,GAAG;IACd,QAAQ,EAAG,MAAM;IACjB,QAAQ,EAAG,KAAK;IAChB,OAAO,EAAI,OAAO;IAClB,QAAQ,EAAG,QAAQ;IACnB,MAAM,EAAK,KAAK;CACnB,CAAC;AAEF,IAAM,QAAQ,GAAG;IACb,CAAC,EAAG,QAAQ,CAAC,CAAC;IAEd,YAAY,EAAG,UAAA,KAAK;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACb,CAAC;IAID,IAAI,EAAG,UAAU,OAAY;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,SAAS,CAAE,CAAC;IACxC,CAAC;IAED,IAAI,MAAA;IAGJ,QAAQ,EAAG;QACP,MAAM,IAAI,KAAK,CAAE,gDAAgD,CAAE,CAAC;IACxE,CAAC;CACJ,CAAC;AAEF,eAAe,QAAQ,CAAC;AAcxB,SAAS,IAAI,CAAE,MAAe,EAAE,KAAe,EAAE,OAA0B;IAA1B,wBAAA,EAAA,YAA0B;IACvE,IAAI,IAAI,GAAG,SAAS,CAAE,MAAM,CAAE,CAAC;IAG/B,IAAI,MAAM,GAAS,EAAE,IAAI,EAAG,IAAI,EAAE,QAAQ,EAAG,MAAM,EAAE,CAAC;IAGtD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAChE;IAGD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC,EAAE;QACrG,MAAM,CAAC,WAAW,GAAG,kBAAkB,CAAC;QACxC,MAAM,CAAC,IAAI,GAAU,IAAI,CAAC,SAAS,CAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAE,OAAO,CAAE,CAAE,CAAC;KACnF;IAGD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;KAC9B;IAGD,IAAI,KAAK,GAAO,OAAO,CAAC,KAAK,CAAC;IAC9B,OAAO,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,WAAW;QAClD,OAAO,CAAC,UAAU,GAAI,UAAU,CAAC;QACjC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,IAAI,KAAK;YAAG,KAAK,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAE,CAAC;IAC5E,CAAC,CAAC;IAGF,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAE,CAAC,CAAC,MAAM,CAAE,MAAM,EAAE,OAAO,CAAE,CAAE,CAAC;IACrE,KAAK,CAAC,OAAO,CAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;IAChD,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;IAC/E,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/lib/type-r/collection/add.d.ts b/lib/type-r/collection/add.d.ts index 8f60a13..eba9d3c 100644 --- a/lib/type-r/collection/add.d.ts +++ b/lib/type-r/collection/add.d.ts @@ -1,4 +1,4 @@ -import { CollectionTransaction, CollectionOptions, CollectionCore } from './commons'; +import { CollectionCore, CollectionOptions, CollectionTransaction } from './commons'; export interface AddOptions extends CollectionOptions { at?: number; } diff --git a/lib/type-r/collection/add.js b/lib/type-r/collection/add.js index 0593299..976608b 100644 --- a/lib/type-r/collection/add.js +++ b/lib/type-r/collection/add.js @@ -1,5 +1,5 @@ import { transactionApi } from '../transactions'; -import { CollectionTransaction, logAggregationError, sortElements, convertAndAquire, addIndex, updateIndex } from './commons'; +import { addIndex, CollectionTransaction, convertAndAquire, logAggregationError, sortElements, updateIndex } from './commons'; var begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty; export function addTransaction(collection, items, options, merge) { var isRoot = begin(collection), nested = []; @@ -10,7 +10,7 @@ export function addTransaction(collection, items, options, merge) { return new CollectionTransaction(collection, isRoot, added, [], nested, needSort); } if (collection._aggregationError) - logAggregationError(collection); + logAggregationError(collection, options); } isRoot && commit(collection); } diff --git a/lib/type-r/collection/add.js.map b/lib/type-r/collection/add.js.map index 5590a90..dd72653 100644 --- a/lib/type-r/collection/add.js.map +++ b/lib/type-r/collection/add.js.map @@ -1 +1 @@ -{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/type-r/collection/add.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/type-r/collection/add.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/commons.d.ts b/lib/type-r/collection/commons.d.ts index cde26ca..c95bde9 100644 --- a/lib/type-r/collection/commons.d.ts +++ b/lib/type-r/collection/commons.d.ts @@ -1,6 +1,6 @@ +import { eventsApi, Logger } from '../object-plus'; import { Record } from '../record'; -import { Owner, Transaction, TransactionOptions, Transactional } from '../transactions'; -import { eventsApi } from '../object-plus'; +import { Owner, Transaction, Transactional, TransactionOptions } from '../transactions'; export interface CollectionCore extends Transactional, Owner { _byId: IdIndex; models: Record[]; @@ -11,7 +11,7 @@ export interface CollectionCore extends Transactional, Owner { _itemEvents?: eventsApi.EventMap; _shared: number; _aggregationError: Record[]; - _log(level: string, text: string, value: any): void; + _log(level: string, topic: string, text: string, value: any, logger: Logger): void; } export declare type Elements = (Object | Record)[]; export interface CollectionOptions extends TransactionOptions { @@ -39,4 +39,4 @@ export declare class CollectionTransaction implements Transaction { constructor(object: CollectionCore, isRoot: boolean, added: Record[], removed: Record[], nested: Transaction[], sorted: boolean); commit(initiator?: Transactional): void; } -export declare function logAggregationError(collection: CollectionCore): void; +export declare function logAggregationError(collection: CollectionCore, options: TransactionOptions): void; diff --git a/lib/type-r/collection/commons.js b/lib/type-r/collection/commons.js index 4e7119a..0d5872c 100644 --- a/lib/type-r/collection/commons.js +++ b/lib/type-r/collection/commons.js @@ -1,6 +1,6 @@ -import { ItemsBehavior, transactionApi } from '../transactions'; import { eventsApi } from '../object-plus'; -var EventMap = eventsApi.EventMap, trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty, _aquire = transactionApi.aquire, _free = transactionApi.free; +import { ItemsBehavior, transactionApi } from '../transactions'; +var trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off, commit = transactionApi.commit, _aquire = transactionApi.aquire, _free = transactionApi.free; export function dispose(collection) { var models = collection.models; collection.models = []; @@ -59,14 +59,14 @@ export function sortElements(collection, options) { export function addIndex(index, model) { index[model.cid] = model; var id = model.id; - if (id != null) { + if (id || id === 0) { index[id] = model; } } export function removeIndex(index, model) { delete index[model.cid]; var id = model.id; - if (id != null) { + if (id || id === 0) { delete index[id]; } } @@ -91,7 +91,7 @@ var CollectionTransaction = (function () { transaction.commit(object); } if (object._aggregationError) { - logAggregationError(object); + logAggregationError(object, _isDirty); } for (var _b = 0, nested_2 = nested; _b < nested_2.length; _b++) { var transaction = nested_2[_b]; @@ -119,8 +119,8 @@ var CollectionTransaction = (function () { return CollectionTransaction; }()); export { CollectionTransaction }; -export function logAggregationError(collection) { - collection._log('error', 'added records already have an owner', collection._aggregationError); +export function logAggregationError(collection, options) { + collection._log('error', 'Type-R:InvalidOwner', 'added records already have an owner', collection._aggregationError, options.logger); collection._aggregationError = void 0; } //# sourceMappingURL=commons.js.map \ No newline at end of file diff --git a/lib/type-r/collection/commons.js.map b/lib/type-r/collection/commons.js.map index f58cb58..3fc8d94 100644 --- a/lib/type-r/collection/commons.js.map +++ b/lib/type-r/collection/commons.js.map @@ -1 +1 @@ -{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/collection/commons.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/collection/commons.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/index.d.ts b/lib/type-r/collection/index.d.ts index 6d6f3a8..b347d6d 100644 --- a/lib/type-r/collection/index.d.ts +++ b/lib/type-r/collection/index.d.ts @@ -38,6 +38,7 @@ export declare class Collection extends Transactional _onChildrenChange(record: R, options?: TransactionOptions, initiator?: Transactional): void; get(objOrId: string | R | Object): R; each(iteratee: (val: R, key: number) => void, context?: any): void; + forEach(iteratee: (val: R, key?: number) => void, context?: any): void; every(iteratee: Predicate, context?: any): boolean; filter(iteratee: Predicate, context?: any): R[]; find(iteratee: Predicate, context?: any): R; @@ -53,13 +54,13 @@ export declare class Collection extends Transactional last(): R; at(a_index: number): R; clone(options?: CloneOptions): this; - toJSON(): Object[]; + toJSON(options?: object): any; set(elements?: ElementsArg, options?: TransactionOptions): this; - liveUpdates(enabled: LiveUpdatesOption): IOPromise; + liveUpdates(enabled: LiveUpdatesOption): IOPromise; _liveUpdates: object; fetch(a_options?: { liveUpdates?: LiveUpdatesOption; - } & TransactionOptions): IOPromise; + } & TransactionOptions): IOPromise; dispose(): void; reset(a_elements?: ElementsArg, options?: TransactionOptions): R[]; add(a_elements: ElementsArg, options?: AddOptions): Record[]; diff --git a/lib/type-r/collection/index.js b/lib/type-r/collection/index.js index fa8673c..7e32b3a 100644 --- a/lib/type-r/collection/index.js +++ b/lib/type-r/collection/index.js @@ -1,13 +1,13 @@ import * as tslib_1 from "tslib"; -import { define, tools, eventsApi, EventMap, definitions, mixinRules, Mixable } from '../object-plus'; -import { ItemsBehavior, transactionApi, Transactional } from '../transactions'; -import { Record, SharedType, AggregatedType, createSharedTypeSpec } from '../record'; -import { free, sortElements, updateIndex } from './commons'; -import { addTransaction } from './add'; -import { setTransaction, emptySetTransaction } from './set'; -import { removeOne, removeMany } from './remove'; import { startIO } from '../io-tools'; -var trigger2 = eventsApi.trigger2, on = eventsApi.on, off = eventsApi.off, begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty, omit = tools.omit, log = tools.log, assign = tools.assign, defaults = tools.defaults, assignToClassProto = tools.assignToClassProto; +import { define, definitions, EventMap, eventsApi, logger, Mixable, mixinRules, tools } from '../object-plus'; +import { AggregatedType, createSharedTypeSpec, Record, SharedType } from '../record'; +import { ItemsBehavior, Transactional, transactionApi } from '../transactions'; +import { addTransaction } from './add'; +import { free, sortElements, updateIndex } from './commons'; +import { removeMany, removeOne } from './remove'; +import { emptySetTransaction, setTransaction } from './set'; +var trigger2 = eventsApi.trigger2, begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty, assign = tools.assign, defaults = tools.defaults; var _count = 0; var slice = Array.prototype.slice; var CollectionRefsType = (function (_super) { @@ -18,6 +18,7 @@ var CollectionRefsType = (function (_super) { CollectionRefsType.defaultValue = []; return CollectionRefsType; }(SharedType)); +; var Collection = (function (_super) { tslib_1.__extends(Collection, _super); function Collection(records, options, shared) { @@ -60,7 +61,7 @@ var Collection = (function (_super) { } Mixable.mixins.populate(RefsCollection); RefsCollection.prototype = this.prototype; - RefsCollection._attribute = CollectionRefsType; + RefsCollection._metatype = CollectionRefsType; this.Refs = this.Subset = RefsCollection; Transactional.onExtend.call(this, BaseClass); createSharedTypeSpec(this, SharedType); @@ -71,7 +72,7 @@ var Collection = (function (_super) { eventsMap.addEventsMap(definition.itemEvents); this.prototype._itemEvents = eventsMap; } - if (definition.comparator) + if (definition.comparator !== void 0) this.prototype.comparator = definition.comparator; Transactional.onDefine.call(this, definition); }; @@ -84,7 +85,6 @@ var Collection = (function (_super) { get: function () { return this._comparator; }, set: function (x) { var _this = this; - var compare; switch (typeof x) { case 'string': this._comparator = function (a, b) { @@ -143,43 +143,12 @@ var Collection = (function (_super) { } }; Collection.prototype.each = function (iteratee, context) { - var fun = bindContext(iteratee, context), models = this.models; - for (var i = 0; i < models.length; i++) { - fun(models[i], i); - } - }; - Collection.prototype.every = function (iteratee, context) { - var fun = toPredicateFunction(iteratee, context), models = this.models; - for (var i = 0; i < models.length; i++) { - if (!fun(models[i], i)) - return false; - } - return true; - }; - Collection.prototype.filter = function (iteratee, context) { - var fun = toPredicateFunction(iteratee, context), models = this.models; - return this.map(function (x, i) { return fun(x, i) ? x : void 0; }); - }; - Collection.prototype.find = function (iteratee, context) { - var fun = toPredicateFunction(iteratee, context), models = this.models; - for (var i = 0; i < models.length; i++) { - if (fun(models[i], i)) - return models[i]; - } - return null; - }; - Collection.prototype.some = function (iteratee, context) { - return Boolean(this.find(iteratee, context)); + this.models.forEach(iteratee, context); }; - Collection.prototype.map = function (iteratee, context) { - var fun = bindContext(iteratee, context), models = this.models, mapped = Array(models.length); - var j = 0; - for (var i = 0; i < models.length; i++) { - var x = fun(models[i], i); - x === void 0 || (mapped[j++] = x); - } - mapped.length = j; - return mapped; + Collection.prototype.updateEach = function (iteratee) { + var isRoot = transactionApi.begin(this); + this.models.forEach(iteratee); + isRoot && transactionApi.commit(this); }; Collection.prototype._validateNested = function (errors) { if (this._shared) @@ -195,11 +164,6 @@ var Collection = (function (_super) { return count; }; Collection.prototype.initialize = function () { }; - Object.defineProperty(Collection.prototype, "length", { - get: function () { return this.models.length; }, - enumerable: true, - configurable: true - }); Collection.prototype.first = function () { return this.models[0]; }; Collection.prototype.last = function () { return this.models[this.models.length - 1]; }; Collection.prototype.at = function (a_index) { @@ -213,14 +177,14 @@ var Collection = (function (_super) { copy._defaultStore = this.getStore(); return copy; }; - Collection.prototype.toJSON = function () { - return this.models.map(function (model) { return model.toJSON(); }); + Collection.prototype.toJSON = function (options) { + return this.models.map(function (model) { return model.toJSON(options); }); }; Collection.prototype.set = function (elements, options) { if (elements === void 0) { elements = []; } if (options === void 0) { options = {}; } if (options.add !== void 0) { - this._log('warn', "Collection.set doesn't support 'add' option, behaving as if options.add === true.", options); + this._log('warn', "Type-R:InvalidOption", "Collection.set doesn't support 'add' option, behaving as if options.add === true.", options); } if (options.reset) { this.reset(elements, options); @@ -242,7 +206,7 @@ var Collection = (function (_super) { }, removed: function (id) { return _this.remove(id); } }; - return this.getEndpoint().subscribe(this._liveUpdates, this); + return this.getEndpoint().subscribe(this._liveUpdates, this).then(function () { return _this; }); } else { if (this._liveUpdates) { @@ -341,34 +305,11 @@ var Collection = (function (_super) { } return this; }; - Collection.prototype.push = function (model, options) { - return this.add(model, assign({ at: this.length }, options)); - }; - Collection.prototype.pop = function (options) { - var model = this.at(this.length - 1); - this.remove(model, tslib_1.__assign({ unset: true }, options)); - return model; - }; Collection.prototype.unset = function (modelOrId, options) { var value = this.get(modelOrId); this.remove(modelOrId, tslib_1.__assign({ unset: true }, options)); return value; }; - Collection.prototype.unshift = function (model, options) { - return this.add(model, assign({ at: 0 }, options)); - }; - Collection.prototype.shift = function (options) { - var model = this.at(0); - this.remove(model, tslib_1.__assign({ unset: true }, options)); - return model; - }; - Collection.prototype.slice = function () { - return slice.apply(this.models, arguments); - }; - Collection.prototype.indexOf = function (modelOrId) { - var record = this.get(modelOrId); - return this.models.indexOf(record); - }; Collection.prototype.modelId = function (attrs) { return attrs[this.model.prototype.idAttribute]; }; @@ -384,8 +325,8 @@ var Collection = (function (_super) { } return next; }; - Collection.prototype._log = function (level, text, value) { - tools.log(level, "[Collection Update] " + this.model.prototype.getClassName() + "." + this.getClassName() + ": " + text, { + Collection.prototype._log = function (level, topic, text, value, a_logger) { + (a_logger || logger).trigger(level, topic, this.model.prototype.getClassName() + "." + this.getClassName() + ": " + text, { Argument: value, 'Attributes spec': this.model.prototype._attributes }); @@ -393,7 +334,68 @@ var Collection = (function (_super) { Collection.prototype.getClassName = function () { return _super.prototype.getClassName.call(this) || 'Collection'; }; - Collection._attribute = AggregatedType; + Object.defineProperty(Collection.prototype, "length", { + get: function () { return this.models.length; }, + enumerable: true, + configurable: true + }); + Collection.prototype.push = function (model, options) { + return this.add(model, assign({ at: this.length }, options)); + }; + Collection.prototype.pop = function (options) { + var model = this.at(this.length - 1); + this.remove(model, tslib_1.__assign({ unset: true }, options)); + return model; + }; + Collection.prototype.unshift = function (model, options) { + return this.add(model, assign({ at: 0 }, options)); + }; + Collection.prototype.shift = function (options) { + var model = this.at(0); + this.remove(model, tslib_1.__assign({ unset: true }, options)); + return model; + }; + Collection.prototype.slice = function (begin, end) { + return this.models.slice(begin, end); + }; + Collection.prototype.indexOf = function (modelOrId) { + return this.models.indexOf(this.get(modelOrId)); + }; + Collection.prototype.filter = function (iteratee, context) { + return this.models.filter(toPredicateFunction(iteratee), context); + }; + Collection.prototype.find = function (iteratee, context) { + return this.models.find(toPredicateFunction(iteratee), context); + }; + Collection.prototype.some = function (iteratee, context) { + return this.models.some(toPredicateFunction(iteratee), context); + }; + Collection.prototype.forEach = function (iteratee, context) { + this.models.forEach(iteratee, context); + }; + Collection.prototype[Symbol.iterator] = function () { + return this.models[Symbol.iterator](); + }; + Collection.prototype.values = function () { + return this.models.values(); + }; + Collection.prototype.entries = function () { + return this.models.entries(); + }; + Collection.prototype.every = function (iteratee, context) { + return this.models.every(toPredicateFunction(iteratee), context); + }; + Collection.prototype.includes = function (idOrObj) { + return Boolean(this.get(idOrObj)); + }; + Collection.prototype.map = function (iteratee, context) { + return this.models.map(iteratee, context); + }; + Collection.prototype.reduce = function (iteratee, init) { + return this.models.reduce(iteratee, init); + }; + var Collection_1; + Collection._metatype = AggregatedType; Collection = Collection_1 = tslib_1.__decorate([ define({ cidPrefix: 'c', @@ -408,28 +410,29 @@ var Collection = (function (_super) { }) ], Collection); return Collection; - var Collection_1; }(Transactional)); export { Collection }; +var d = Collection; function toElements(collection, elements, options) { var parsed = options.parse ? collection.parse(elements, options) : elements; return Array.isArray(parsed) ? parsed : [parsed]; } createSharedTypeSpec(Collection, SharedType); Record.Collection = Collection; -function bindContext(fun, context) { - return context !== void 0 ? function (v, k) { return fun.call(context, v, k); } : fun; -} -function toPredicateFunction(iteratee, context) { - if (typeof iteratee === 'object') { - return function (x) { - for (var key in iteratee) { - if (iteratee[key] !== x[key]) - return false; - } - return true; - }; +function toPredicateFunction(iteratee) { + switch (typeof iteratee) { + case 'function': return iteratee; + case 'object': + var keys_1 = Object.keys(iteratee); + return function (x) { + for (var _i = 0, keys_2 = keys_1; _i < keys_2.length; _i++) { + var key = keys_2[_i]; + if (iteratee[key] !== x[key]) + return false; + } + return true; + }; + default: throw new Error('Invalid iteratee'); } - return bindContext(iteratee, context); } //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/collection/index.js.map b/lib/type-r/collection/index.js.map index bd6490e..5ff5e99 100644 --- a/lib/type-r/collection/index.js.map +++ b/lib/type-r/collection/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/collection/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/collection/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/remove.d.ts b/lib/type-r/collection/remove.d.ts index ffaa6b4..749ba85 100644 --- a/lib/type-r/collection/remove.d.ts +++ b/lib/type-r/collection/remove.d.ts @@ -1,5 +1,5 @@ import { Record } from '../record'; -import { CollectionCore } from './commons'; import { TransactionOptions } from '../transactions'; +import { CollectionCore } from './commons'; export declare function removeOne(collection: CollectionCore, el: Record | {} | string, options: TransactionOptions): Record; export declare function removeMany(collection: CollectionCore, toRemove: any[], options: any): any[]; diff --git a/lib/type-r/collection/remove.js b/lib/type-r/collection/remove.js index c17aa4f..127691d 100644 --- a/lib/type-r/collection/remove.js +++ b/lib/type-r/collection/remove.js @@ -1,6 +1,6 @@ -import { free, CollectionTransaction, removeIndex } from './commons'; import { eventsApi } from '../object-plus'; import { transactionApi } from '../transactions'; +import { CollectionTransaction, free, removeIndex } from './commons'; var trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, markAsDirty = transactionApi.markAsDirty, begin = transactionApi.begin, commit = transactionApi.commit; export function removeOne(collection, el, options) { var model = collection.get(el); diff --git a/lib/type-r/collection/remove.js.map b/lib/type-r/collection/remove.js.map index bb1459c..5264bf7 100644 --- a/lib/type-r/collection/remove.js.map +++ b/lib/type-r/collection/remove.js.map @@ -1 +1 @@ -{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/type-r/collection/remove.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/type-r/collection/remove.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/set.d.ts b/lib/type-r/collection/set.d.ts index eb0830a..d662170 100644 --- a/lib/type-r/collection/set.d.ts +++ b/lib/type-r/collection/set.d.ts @@ -1,3 +1,3 @@ -import { CollectionTransaction, CollectionOptions, CollectionCore, Elements } from './commons'; +import { CollectionCore, CollectionOptions, CollectionTransaction, Elements } from './commons'; export declare function emptySetTransaction(collection: CollectionCore, items: Elements, options: CollectionOptions, silent?: boolean): CollectionTransaction; export declare function setTransaction(collection: any, items: any, options: any): CollectionTransaction; diff --git a/lib/type-r/collection/set.js b/lib/type-r/collection/set.js index 99efd26..8968266 100644 --- a/lib/type-r/collection/set.js +++ b/lib/type-r/collection/set.js @@ -1,5 +1,5 @@ import { transactionApi } from '../transactions'; -import { CollectionTransaction, logAggregationError, convertAndAquire, free, sortElements, addIndex, freeAll } from './commons'; +import { addIndex, CollectionTransaction, convertAndAquire, free, freeAll, logAggregationError, sortElements } from './commons'; var begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty; var silentOptions = { silent: true }; export function emptySetTransaction(collection, items, options, silent) { @@ -11,7 +11,7 @@ export function emptySetTransaction(collection, items, options, silent) { return new CollectionTransaction(collection, isRoot, added.slice(), [], [], needSort); } if (collection._aggregationError) - logAggregationError(collection); + logAggregationError(collection, options); } isRoot && commit(collection); } @@ -27,7 +27,7 @@ export function setTransaction(collection, items, options) { return new CollectionTransaction(collection, isRoot, added, removed, nested, sorted); } if (collection._aggregationError) - logAggregationError(collection); + logAggregationError(collection, options); } isRoot && commit(collection); } diff --git a/lib/type-r/collection/set.js.map b/lib/type-r/collection/set.js.map index 8c08cc4..f8aea68 100644 --- a/lib/type-r/collection/set.js.map +++ b/lib/type-r/collection/set.js.map @@ -1 +1 @@ -{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/type-r/collection/set.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/type-r/collection/set.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAqC,qBAAqB,EAAE,gBAAgB,EAAY,IAAI,EAAE,OAAO,EAAW,mBAAmB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9K,IAAA,4BAAK,EAAE,8BAAM,EAAE,wCAAW,CAAoB;AAGtD,IAAM,aAAa,GAAG,EAAE,MAAM,EAAG,IAAI,EAAE,CAAC;AAGxC,MAAM,UAAU,mBAAmB,CAAE,UAA2B,EAAE,KAAgB,EAAE,OAA2B,EAAE,MAAiB;IAC9H,IAAM,MAAM,GAAG,KAAK,CAAE,UAAU,CAAE,CAAC;IAEnC,IAAM,KAAK,GAAG,gBAAgB,CAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAE,CAAC;IAE7D,IAAI,KAAK,CAAC,MAAM,EAAE;QACd,IAAM,QAAQ,GAAG,YAAY,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC;QAErD,IAAI,WAAW,CAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAE,EAAE;YAE7D,OAAO,IAAI,qBAAqB,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAE,CAAC;SAC3F;QAED,IAAI,UAAU,CAAC,iBAAiB;YAAG,mBAAmB,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC;KACjF;IAGD,MAAM,IAAI,MAAM,CAAE,UAAU,CAAE,CAAC;AACnC,CAAC;AAAA,CAAC;AAGF,MAAM,UAAU,cAAc,CAAE,UAAU,EAAE,KAAK,EAAE,OAAO;IACtD,IAAM,MAAM,GAAG,KAAK,CAAE,UAAU,CAAE,EAC5B,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,EAC5B,KAAK,GAAM,WAAW,CAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;IAEjE,IAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EACrD,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAC5B,WAAW,CAAC,CAAC,CAAC,eAAe,CAAE,UAAU,EAAE,QAAQ,CAAE,CAAC,CAAC;QACvC,OAAO,CAAE,UAAU,EAAE,QAAQ,CAAE,CAClD,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvB,IAAM,cAAc,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAE9C,MAAM,GAAG,CAAE,YAAY,CAAE,UAAU,EAAE,OAAO,CAAE,IAAI,cAAc,CAAE,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAE3G,IAAI,cAAc,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE;QAC5C,IAAI,WAAW,CAAE,UAAU,EAAE,OAAO,CAAE,EAAE;YACpC,OAAO,IAAI,qBAAqB,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAE,CAAC;SAC1F;QAED,IAAI,UAAU,CAAC,iBAAiB;YAAG,mBAAmB,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC;KACjF;IAED,MAAM,IAAI,MAAM,CAAE,UAAU,CAAE,CAAC;AACnC,CAAC;AAAA,CAAC;AAKF,SAAS,eAAe,CAAE,UAA2B,EAAE,QAAmB;IAC9D,IAAA,wBAAK,EACP,OAAO,GAAG,EAAE,CAAC;IAGnB,KAAmB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE;QAAxB,IAAI,MAAM,iBAAA;QACX,IAAI,CAAC,KAAK,CAAE,MAAM,CAAC,GAAG,CAAE,EAAE;YACtB,OAAO,CAAC,IAAI,CAAE,MAAM,CAAE,CAAC;YACvB,IAAI,CAAE,UAAU,EAAE,MAAM,CAAE,CAAC;SAC9B;KACJ;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAID,SAAS,WAAW,CAAE,UAA2B,EAAE,MAAc,EAAE,MAAsB,EAAE,OAAO;IAC9F,IAAI,MAAM,GAAQ,KAAK,CAAE,MAAM,CAAC,MAAM,CAAE,EACpC,KAAK,GAAa,EAAE,EACpB,KAAK,GAAS,CAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EACrF,SAAS,GAAK,UAAU,CAAC,KAAK,EAC9B,UAAU,GAAI,UAAU,CAAC,MAAM,EAC/B,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EACpD,KAAK,GAAS,EAAE,EAChB,SAAS,GAAK,IAAI,CAAC;IAGvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,IAAI,GAAI,MAAM,CAAE,CAAC,CAAE,EACnB,KAAK,GAAY,IAAI,CAAC;QAE1B,IAAI,IAAI,EAAE;YACN,IAAI,EAAE,GAAI,IAAI,CAAE,WAAW,CAAE,EACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAEnB,IAAI,KAAK,CAAE,EAAE,CAAE,IAAI,KAAK,CAAE,GAAG,CAAE;gBAAG,SAAS;YAE3C,KAAK,GAAG,SAAS,CAAE,EAAE,CAAE,IAAI,SAAS,CAAE,GAAG,CAAE,CAAC;SAC/C;QAED,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;gBACzB,IAAI,SAAS,IAAI,UAAU,CAAE,CAAC,CAAE,KAAK,KAAK;oBAAG,SAAS,GAAG,KAAK,CAAC;gBAE/D,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;gBACpC,IAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAE,KAAK,EAAE,OAAO,CAAE,CAAC;gBAC/D,WAAW,IAAI,MAAM,CAAC,IAAI,CAAE,WAAW,CAAE,CAAC;aAC7C;SACJ;aACG;YACA,KAAK,GAAG,gBAAgB,CAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAE,KAAK,CAAE,CAAC;SACvB;QAED,MAAM,CAAE,CAAC,EAAE,CAAE,GAAG,KAAK,CAAC;QACtB,QAAQ,CAAE,KAAK,EAAE,KAAK,CAAE,CAAC;KAC5B;IAED,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,UAAU,CAAC,MAAM,GAAK,MAAM,CAAC;IAC7B,UAAU,CAAC,KAAK,GAAM,KAAK,CAAC;IAE5B,IAAI,CAAC,SAAS;QAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEvC,OAAO,KAAK,CAAC;AACjB,CAAC;AAGD,SAAS,gBAAgB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IAC5C,IAAI,GAAG,GAAW,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACxC,MAAM,GAAQ,KAAK,CAAE,GAAG,CAAE,EAC1B,KAAK,GAAa,EAAE,EACpB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,GAAG,GAAG,MAAM,CAAE,CAAC,CAAE,CAAC;QAEtB,IAAI,GAAG,IAAI,CAAE,KAAK,CAAE,GAAG,CAAE,WAAW,CAAE,CAAE,IAAI,KAAK,CAAE,GAAG,CAAC,GAAG,CAAE,CAAE,EAAE;YAC5D,SAAS;SACZ;QAED,IAAI,KAAK,GAAG,gBAAgB,CAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;QACnD,MAAM,CAAE,CAAC,EAAE,CAAE,GAAG,KAAK,CAAC;QACtB,QAAQ,CAAE,KAAK,EAAE,KAAK,CAAE,CAAC;KAC5B;IAED,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,GAAM,KAAK,CAAC;IAEtB,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/endpoints/attributes.js.map b/lib/type-r/endpoints/attributes.js.map index 143cff0..d856c2c 100644 --- a/lib/type-r/endpoints/attributes.js.map +++ b/lib/type-r/endpoints/attributes.js.map @@ -1 +1 @@ -{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/attributes.ts"],"names":[],"mappings":"AAEA,MAAM;IACF,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;AACpC,CAAC;AAED,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAElC;IAAA;IA+BA,CAAC;IA9BG,mCAAM,GAAN,UAAQ,IAAI,EAAE,OAAmB;QAC7B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,mCAAM,GAAN,UAAQ,EAAE,EAAE,IAAI,EAAE,OAAmB;QACjC,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,EAAE,EAAE,OAAmB,EAAE,MAAM;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,IAAI,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,EAAtC,CAAsC,CAAE,EAChF,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,OAAO,CAAE,EAA/B,CAA+B,CAAE,EAC/D,OAAO,GAAoB,OAAO,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC,IAAI,CAAE,cAAO,CAAC,CAAE,CAAC;QAExE,OAAO,CAAC,KAAK,GAAG;YACZ,QAAQ,CAAC,OAAO,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAApB,CAAoB,CAAE,CAAC;QAClD,CAAC,CAAA;QAED,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAED,oCAAO,GAAP,UAAS,EAAE,EAAE,OAAmB;QAC5B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,OAAoB;QACtB,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,sCAAS,GAAT,UAAW,MAAM,IAAU,CAAC;IAC5B,wCAAW,GAAX,UAAa,MAAM,IAAS,CAAC;IACjC,yBAAC;AAAD,CAAC,AA/BD,IA+BC"} \ No newline at end of file +{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/attributes.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM;IAClB,OAAO,IAAI,kBAAkB,EAAE,CAAC;AACpC,CAAC;AAED,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAElC;IAAA;IA+BA,CAAC;IA9BG,mCAAM,GAAN,UAAQ,IAAI,EAAE,OAAmB;QAC7B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,mCAAM,GAAN,UAAQ,EAAE,EAAE,IAAI,EAAE,OAAmB;QACjC,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,EAAE,EAAE,OAAmB,EAAE,MAAM;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,IAAI,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,EAAtC,CAAsC,CAAE,EAChF,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,OAAO,CAAE,EAA/B,CAA+B,CAAE,EAC/D,OAAO,GAAoB,OAAO,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC,IAAI,CAAE,cAAO,CAAC,CAAE,CAAC;QAExE,OAAO,CAAC,KAAK,GAAG;YACZ,QAAQ,CAAC,OAAO,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAApB,CAAoB,CAAE,CAAC;QAClD,CAAC,CAAA;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,oCAAO,GAAP,UAAS,EAAE,EAAE,OAAmB;QAC5B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,OAAoB;QACtB,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,sCAAS,GAAT,UAAW,MAAM,IAAU,CAAC;IAC5B,wCAAW,GAAX,UAAa,MAAM,IAAS,CAAC;IACjC,yBAAC;AAAD,CAAC,AA/BD,IA+BC"} \ No newline at end of file diff --git a/lib/type-r/endpoints/localStorage.js.map b/lib/type-r/endpoints/localStorage.js.map index d923fd6..58ee0de 100644 --- a/lib/type-r/endpoints/localStorage.js.map +++ b/lib/type-r/endpoints/localStorage.js.map @@ -1 +1 @@ -{"version":3,"file":"localStorage.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/localStorage.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"localStorage.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/localStorage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/endpoints/memory.js.map b/lib/type-r/endpoints/memory.js.map index 31f410a..e35edc0 100644 --- a/lib/type-r/endpoints/memory.js.map +++ b/lib/type-r/endpoints/memory.js.map @@ -1 +1 @@ -{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/memory.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/memory.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/index.d.ts b/lib/type-r/index.d.ts index 29b87dd..1aaea63 100644 --- a/lib/type-r/index.d.ts +++ b/lib/type-r/index.d.ts @@ -1,14 +1,13 @@ -export * from './object-plus'; +import { Mixable as Class } from './object-plus/'; +import { ChainableAttributeSpec, Record as Model } from './record'; export * from './collection'; -export * from './relations'; +export * from './io-tools'; +export * from './object-plus'; export * from './record'; +export * from './relations'; export * from './transactions'; -export { IOEndpoint, IOPromise, createIOPromise } from './io-tools'; -export declare const on: any, off: any, trigger: any, once: any, listenTo: any, stopListening: any, listenToOnce: any; -import { Record as Model } from './record'; -import { Mixable as Class } from './object-plus/'; export { Model, Class }; +export declare const on: any, off: any, trigger: any, once: any, listenTo: any, stopListening: any, listenToOnce: any; export declare function attributes(attrDefs: any): typeof Model; -import { ChainableAttributeSpec } from './record'; export declare function value(x: any): ChainableAttributeSpec; export declare function transaction(method: F): F; diff --git a/lib/type-r/index.js b/lib/type-r/index.js index fac2fff..1b78442 100644 --- a/lib/type-r/index.js +++ b/lib/type-r/index.js @@ -1,15 +1,18 @@ import * as tslib_1 from "tslib"; -export * from './object-plus'; +var _a; +if (typeof Symbol === 'undefined') { + Object.defineProperty(window, 'Symbol', { value: { iterator: 'Symbol.iterator' }, configurable: true }); +} +import { define, Events, Mixable as Class } from './object-plus/'; +import { ChainableAttributeSpec, Record as Model } from './record'; export * from './collection'; -export * from './relations'; +export * from './io-tools'; +export * from './object-plus'; export * from './record'; +export * from './relations'; export * from './transactions'; -export { createIOPromise } from './io-tools'; -import { Events } from './object-plus/'; -export var on = (_a = Events, _a.on), off = _a.off, trigger = _a.trigger, once = _a.once, listenTo = _a.listenTo, stopListening = _a.stopListening, listenToOnce = _a.listenToOnce; -import { Record as Model } from './record'; -import { define, Mixable as Class } from './object-plus/'; export { Model, Class }; +export var on = (_a = Events, _a.on), off = _a.off, trigger = _a.trigger, once = _a.once, listenTo = _a.listenTo, stopListening = _a.stopListening, listenToOnce = _a.listenToOnce; export function attributes(attrDefs) { var DefaultRecord = (function (_super) { tslib_1.__extends(DefaultRecord, _super); @@ -24,7 +27,6 @@ export function attributes(attrDefs) { }(Model)); return DefaultRecord; } -import { ChainableAttributeSpec } from './record'; export function value(x) { return new ChainableAttributeSpec({ value: x }); } @@ -42,5 +44,4 @@ export function transaction(method) { return result; }; } -var _a; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/index.js.map b/lib/type-r/index.js.map index 74cb657..397c81c 100644 --- a/lib/type-r/index.js.map +++ b/lib/type-r/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/type-r/index.ts"],"names":[],"mappings":";AAGA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AAExB,cAAc,gBAAgB,CAAA;AAE9B,OAAO,EAAyB,eAAe,EAAE,MAAM,YAAY,CAAA;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,MAAM,CAAS,IAAA,yBAAE,EAAE,YAAG,EAAE,oBAAO,EAAE,cAAI,EAAE,sBAAQ,EAAE,gCAAa,EAAE,8BAAY,CAAiB;AAK7F,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAExB,MAAM,qBAAsB,QAAQ;IACxB;QAA4B,yCAAK;QAAjC;;QAER,CAAC;QADU,wBAAU,GAAG,QAAQ,CAAC;QADnB,aAAa;YAA1B,MAAM;WAAO,aAAa,CAE1B;QAAD,oBAAC;KAAA,AAFO,CAA4B,KAAK,GAExC;IAED,MAAM,CAAC,aAAa,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD,MAAM,gBAAiB,CAAO;IAC1B,MAAM,CAAC,IAAI,sBAAsB,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAGD,MAAM,sBAA6C,MAAU;IACzD,MAAM,CAAM;QAAA,iBAQX;QARqB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACzB,IAAI,MAAM,CAAC;QAEX,IAAI,CAAC,WAAW,CAAE;YACd,MAAM,GAAG,MAAM,CAAC,KAAK,CAAE,KAAI,EAAE,IAAI,CAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAA;AACL,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/type-r/index.ts"],"names":[],"mappings":";;AACA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,cAAc,CAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAG,EAAE,QAAQ,EAAG,iBAAiB,EAAE,EAAE,YAAY,EAAG,IAAI,EAAG,CAAC,CAAC;CAChH;AAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,UAAU,CAAC;AAKnE,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAGxB,MAAM,CAAS,IAAA,yBAAE,EAAE,YAAG,EAAE,oBAAO,EAAE,cAAI,EAAE,sBAAQ,EAAE,gCAAa,EAAE,8BAAY,CAAiB;AAI7F,MAAM,UAAU,UAAU,CAAE,QAAQ;IACxB;QAA4B,yCAAK;QAAjC;;QAER,CAAC;QADU,wBAAU,GAAG,QAAQ,CAAC;QADnB,aAAa;YAA1B,MAAM;WAAO,aAAa,CAE1B;QAAD,oBAAC;KAAA,AAFO,CAA4B,KAAK,GAExC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAID,MAAM,UAAU,KAAK,CAAE,CAAO;IAC1B,OAAO,IAAI,sBAAsB,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAGD,MAAM,UAAU,WAAW,CAAwB,MAAU;IACzD,OAAY;QAAA,iBAQX;QARqB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACzB,IAAI,MAAM,CAAC;QAEX,IAAI,CAAC,WAAW,CAAE;YACd,MAAM,GAAG,MAAM,CAAC,KAAK,CAAE,KAAI,EAAE,IAAI,CAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC,CAAA;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/io-tools.d.ts b/lib/type-r/io-tools.d.ts index c4c752e..9e6c5c2 100644 --- a/lib/type-r/io-tools.d.ts +++ b/lib/type-r/io-tools.d.ts @@ -1,6 +1,6 @@ export interface IONode { _endpoint: IOEndpoint; - _ioPromise: IOPromise; + _ioPromise: IOPromise; } export interface IOPromise extends Promise { abort?: () => void; diff --git a/lib/type-r/io-tools.js b/lib/type-r/io-tools.js index ae0d2b4..a080a0b 100644 --- a/lib/type-r/io-tools.js +++ b/lib/type-r/io-tools.js @@ -35,7 +35,6 @@ export function startIO(self, promise, options, thenDo) { }) .catch(function (err) { self._ioPromise = null; - console.error(err); triggerAndBubble(self, 'error', self, err, options); throw err; }); diff --git a/lib/type-r/io-tools.js.map b/lib/type-r/io-tools.js.map index 80f72be..29d5c3d 100644 --- a/lib/type-r/io-tools.js.map +++ b/lib/type-r/io-tools.js.map @@ -1 +1 @@ -{"version":3,"file":"io-tools.js","sourceRoot":"","sources":["../../src/type-r/io-tools.ts"],"names":[],"mappings":"AA4BA,MAAM,2BAA4B,IAAI;IAE1B,IAAA,4BAAU,CAAU;IAC5B,EAAE,CAAA,CAAE,UAAW,CAAC,CAAA,CAAC;QACb,MAAM,CAAC,gBAAgB,CAAE,UAAU,CAAE,CAAC;IAC1C,CAAC;IAGD,EAAE,CAAA,CAAE,IAAI,CAAC,MAAO,CAAC,CAAA,CAAC;QACN,IAAA,mCAAU,CAAiB;QACnC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAE,IAAI,CAAC,SAAS,CAAE,CAAC;IACtD,CAAC;AACL,CAAC;AAUD,MAAM,0BAA2B,UAA0B;IACvD,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAE7B,eAAgB,EAAE;QACd,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,IAAM,OAAO,GAAoB,IAAI,OAAO,CAAE,UAAE,SAAS,EAAE,QAAQ;QAC/D,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,SAAS,CAAC;QACpB,UAAU,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC;IACzC,CAAC,CAAmB,CAAC;IAErB,OAAO,CAAC,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAE,OAAO,EAAE,MAAM,CAAE,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,KAAK,CAAE,aAAa,CAAE,CAAE,CAAC;IAChF,CAAC,CAAA;IAED,MAAM,CAAC,OAAO,CAAC;AACnB,CAAC;AAID,MAAM,kBAAmB,IAAa,EAAE,OAAwB,EAAE,OAAmB,EAAE,MAA8B;IAEjH,OAAO,CAAE,IAAI,CAAE,CAAC;IAGhB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,UAAU,GAAG,OAAO;SACpB,IAAI,CAAE,UAAA,IAAI;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9C,gBAAgB,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAE;SACF,KAAK,CAAE,UAAA,GAAG;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;QAErB,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,GAAG,CAAC;IACd,CAAC,CAAoB,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,MAAM,kBAAmB,IAAa;IAClC,EAAE,CAAA,CAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC,CAAA,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;AACL,CAAC;AAED,MAAM,2BAA4B,WAAW;IAAE,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,6BAAO;;IAClD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAE,WAAW,EAAE,IAAI,CAAE,CAAC;IACvC,IAAA,mCAAU,CAAiB;IACnC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAE,UAAU,EAAE,IAAI,CAAE,CAAC;AAC/D,CAAC"} \ No newline at end of file +{"version":3,"file":"io-tools.js","sourceRoot":"","sources":["../../src/type-r/io-tools.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,gBAAgB,CAAE,IAAI;IAE1B,IAAA,4BAAU,CAAU;IAC5B,IAAI,UAAU,EAAE;QACZ,OAAO,gBAAgB,CAAE,UAAU,CAAE,CAAC;KACzC;IAGD,IAAI,IAAI,CAAC,MAAM,EAAE;QACL,IAAA,mCAAU,CAAiB;QACnC,OAAO,UAAU,IAAI,UAAU,CAAE,IAAI,CAAC,SAAS,CAAE,CAAC;KACrD;AACL,CAAC;AAUD,MAAM,UAAU,eAAe,CAAE,UAA0B;IACvD,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAE7B,SAAS,KAAK,CAAE,EAAE;QACd,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,IAAM,OAAO,GAAoB,IAAI,OAAO,CAAE,UAAE,SAAS,EAAE,QAAQ;QAC/D,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,SAAS,CAAC;QACpB,UAAU,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC;IACzC,CAAC,CAAmB,CAAC;IAErB,OAAO,CAAC,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAE,OAAO,EAAE,MAAM,CAAE,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,KAAK,CAAE,aAAa,CAAE,CAAE,CAAC;IAChF,CAAC,CAAA;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAID,MAAM,UAAU,OAAO,CAAE,IAAa,EAAE,OAAwB,EAAE,OAAmB,EAAE,MAA8B;IAEjH,OAAO,CAAE,IAAI,CAAE,CAAC;IAGhB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,UAAU,GAAG,OAAO;SACpB,IAAI,CAAE,UAAA,IAAI;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9C,gBAAgB,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAEtD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAE;SACF,KAAK,CAAE,UAAA,GAAG;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAGvB,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,GAAG,CAAC;IACd,CAAC,CAAoB,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtC,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,IAAa;IAClC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,WAAW;IAAE,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,6BAAO;;IAClD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAE,WAAW,EAAE,IAAI,CAAE,CAAC;IACvC,IAAA,mCAAU,CAAiB;IACnC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAE,UAAU,EAAE,IAAI,CAAE,CAAC;AAC/D,CAAC"} \ No newline at end of file diff --git a/lib/type-r/object-plus/events.d.ts b/lib/type-r/object-plus/events.d.ts index f9e3b28..bd206ed 100644 --- a/lib/type-r/object-plus/events.d.ts +++ b/lib/type-r/object-plus/events.d.ts @@ -1,5 +1,5 @@ -import { Mixable, MixableConstructor, MixinsState } from './mixins'; import { EventMap, EventsDefinition, EventSource, HandlersByEvent } from './eventsource'; +import { Mixable, MixableConstructor, MixinsState } from './mixins'; export { EventMap, EventsDefinition }; export interface MessengerDefinition { _localEvents?: EventMap; @@ -17,13 +17,13 @@ export interface MessengersByCid { export declare type CallbacksByEvents = { [events: string]: Function; }; -export declare abstract class Messenger implements Mixable, EventSource { +export declare class Messenger implements Mixable, EventSource { static __super__: object; static mixins: MixinsState; static onExtend: (BaseClass: Function) => void; static define: (definition?: MessengerDefinition, statics?: object) => MixableConstructor; static extend: (definition?: MessengerDefinition, statics?: object) => MixableConstructor; - static onDefine({localEvents, _localEvents, properties}: MessengerDefinition, BaseClass?: typeof Mixable): void; + static onDefine({ localEvents, _localEvents, properties }: MessengerDefinition, BaseClass?: typeof Mixable): void; _events: HandlersByEvent; _listeningTo: MessengersByCid; cid: string; diff --git a/lib/type-r/object-plus/events.js b/lib/type-r/object-plus/events.js index 221066c..8b64758 100644 --- a/lib/type-r/object-plus/events.js +++ b/lib/type-r/object-plus/events.js @@ -1,10 +1,9 @@ import * as tslib_1 from "tslib"; -import { define, mixinRules, definitions } from './mixins'; -import { omit, transform } from './tools'; -import { EventMap } from './eventsource'; import * as _eventsApi from './eventsource'; -var EventHandler = _eventsApi.EventHandler, strings = _eventsApi.strings, on = _eventsApi.on, off = _eventsApi.off, once = _eventsApi.once, trigger5 = _eventsApi.trigger5, trigger2 = _eventsApi.trigger2, trigger3 = _eventsApi.trigger3; -var eventSplitter = /\s+/; +import { EventMap } from './eventsource'; +import { define, definitions, mixinRules } from './mixins'; +import { omit, transform } from './tools'; +var strings = _eventsApi.strings, on = _eventsApi.on, off = _eventsApi.off, once = _eventsApi.once, trigger5 = _eventsApi.trigger5, trigger2 = _eventsApi.trigger2, trigger3 = _eventsApi.trigger3; var _idCount = 0; function uniqueId() { return 'l' + _idCount++; @@ -120,7 +119,7 @@ export { Messenger }; export var Events = omit(Messenger.prototype, 'constructor', 'initialize'); function toPropertyDescriptor(x) { if (x) { - return typeof x === 'function' ? { get: x } : x; + return typeof x === 'function' ? { get: x, configurable: true } : x; } } function addReference(listener, source) { diff --git a/lib/type-r/object-plus/events.js.map b/lib/type-r/object-plus/events.js.map index 278f422..f7a522d 100644 --- a/lib/type-r/object-plus/events.js.map +++ b/lib/type-r/object-plus/events.js.map @@ -1 +1 @@ -{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/events.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/events.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/eventsource.js.map b/lib/type-r/object-plus/eventsource.js.map index d30586f..521a46e 100644 --- a/lib/type-r/object-plus/eventsource.js.map +++ b/lib/type-r/object-plus/eventsource.js.map @@ -1 +1 @@ -{"version":3,"file":"eventsource.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/eventsource.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eventsource.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/eventsource.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/index.d.ts b/lib/type-r/object-plus/index.d.ts index daa12df..5650718 100644 --- a/lib/type-r/object-plus/index.d.ts +++ b/lib/type-r/object-plus/index.d.ts @@ -1,14 +1,7 @@ +import * as eventsApi from './eventsource'; import * as tools from './tools'; -export { tools }; -export * from './mixins'; export * from './events'; -import * as eventsApi from './eventsource'; +export * from './logging'; +export * from './mixins'; +export { tools }; export { eventsApi }; -import { MixableConstructor } from './mixins'; -declare global { - interface ObjectConstructor { - assign(dest: T, ...sources: Object[]): T; - log: tools.Log; - extend(protoProps: {}, staticProps: {}): MixableConstructor; - } -} diff --git a/lib/type-r/object-plus/index.js b/lib/type-r/object-plus/index.js index a5fc26a..d7fc5e7 100644 --- a/lib/type-r/object-plus/index.js +++ b/lib/type-r/object-plus/index.js @@ -1,11 +1,8 @@ +import * as eventsApi from './eventsource'; import * as tools from './tools'; -export { tools }; -export * from './mixins'; export * from './events'; -import * as eventsApi from './eventsource'; +export * from './logging'; +export * from './mixins'; +export { tools }; export { eventsApi }; -import { Mixable } from './mixins'; -Object.extend = function (protoProps, staticProps) { return Mixable.extend(protoProps, staticProps); }; -Object.assign || (Object.assign = tools.assign); -Object.log = tools.log; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/object-plus/index.js.map b/lib/type-r/object-plus/index.js.map index 2f40fa1..aabb5c9 100644 --- a/lib/type-r/object-plus/index.js.map +++ b/lib/type-r/object-plus/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,CAAA;AAEpB,OAAO,EAAE,OAAO,EAAsB,MAAM,UAAU,CAAA;AAetD,MAAM,CAAC,MAAM,GAAG,UAAE,UAAU,EAAE,WAAW,IAAM,OAAA,OAAO,CAAC,MAAM,CAAE,UAAU,EAAE,WAAW,CAAE,EAAzC,CAAyC,CAAC;AACzF,MAAM,CAAC,MAAM,IAAI,CAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAE,CAAC;AAClD,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/lib/type-r/object-plus/logging.d.ts b/lib/type-r/object-plus/logging.d.ts new file mode 100644 index 0000000..14824f1 --- /dev/null +++ b/lib/type-r/object-plus/logging.d.ts @@ -0,0 +1,19 @@ +import { Messenger } from './events'; +export declare type LogLevel = 'error' | 'warn' | 'debug' | 'info' | 'log'; +export declare type LoggerEventHandler = (topic: string, msg: string, props: object) => void; +export declare const isProduction: boolean, logEvents: LogLevel[]; +export declare class Logger extends Messenger { + counter: { + [level in LogLevel]?: number; + }; + logToConsole(level: LogLevel, filter?: RegExp): this; + throwOn(level: LogLevel, filter?: RegExp): this; + count(level: LogLevel, filter?: RegExp): this; + trigger: (level: LogLevel, topic: string, message: string, props?: object) => this; + off: (event?: LogLevel) => this; + on: (handlers: { + [name in LogLevel]: LoggerEventHandler; + } | LogLevel, handler?: LoggerEventHandler) => this; +} +export declare const logger: Logger; +export declare const log: typeof logger.trigger; diff --git a/lib/type-r/object-plus/logging.js b/lib/type-r/object-plus/logging.js new file mode 100644 index 0000000..4b75635 --- /dev/null +++ b/lib/type-r/object-plus/logging.js @@ -0,0 +1,64 @@ +import * as tslib_1 from "tslib"; +import { Messenger } from './events'; +import { define } from './mixins'; +export var isProduction = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production', logEvents = isProduction ? + ['error', 'info'] : + ['error', 'warn', 'debug', 'info', 'log']; +var Logger = (function (_super) { + tslib_1.__extends(Logger, _super); + function Logger() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.counter = {}; + return _this; + } + Logger.prototype.logToConsole = function (level, filter) { + return this.on(level, function (topic, msg, props) { + if (!filter || filter.test(topic)) { + var args = ["[" + topic + "] " + msg]; + for (var name_1 in props) { + args.push("\n\t" + name_1 + ":", toString(props[name_1])); + } + console[level].apply(console, args); + } + }); + }; + Logger.prototype.throwOn = function (level, filter) { + return this.on(level, function (topic, msg, props) { + if (!filter || filter.test(topic)) { + throw new Error("[" + topic + "] " + msg); + } + }); + }; + Logger.prototype.count = function (level, filter) { + var _this = this; + return this.on(level, function (topic, msg, props) { + if (!filter || filter.test(topic)) { + _this.counter[level] = (_this.counter[level] || 0) + 1; + } + }); + }; + Logger = tslib_1.__decorate([ + define + ], Logger); + return Logger; +}(Messenger)); +export { Logger }; +var toString = typeof window === 'undefined' ? + function (something) { + if (something && typeof something === 'object') { + var __inner_state__ = something.__inner_state__, value = __inner_state__ || something, isArray = Array.isArray(value); + var body = isArray ? "[ length = " + value.length + " ]" : "{ " + Object.keys(value).join(', ') + " }"; + return something.constructor.name + ' ' + body; + } + return JSON.stringify(something); + } + : function (x) { return x; }; +export var logger = new Logger(); +if (typeof console !== 'undefined') { + for (var _i = 0, logEvents_1 = logEvents; _i < logEvents_1.length; _i++) { + var event_1 = logEvents_1[_i]; + logger.logToConsole(event_1); + } +} +export var log = logger.trigger.bind(logger); +//# sourceMappingURL=logging.js.map \ No newline at end of file diff --git a/lib/type-r/object-plus/logging.js.map b/lib/type-r/object-plus/logging.js.map new file mode 100644 index 0000000..05a79d9 --- /dev/null +++ b/lib/type-r/object-plus/logging.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/logging.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/mixins.d.ts b/lib/type-r/object-plus/mixins.d.ts index 4503431..aa9c750 100644 --- a/lib/type-r/object-plus/mixins.d.ts +++ b/lib/type-r/object-plus/mixins.d.ts @@ -25,6 +25,7 @@ export declare function predefine(Constructor: MixableConstructor): void; export declare function define(ClassOrDefinition: Function): void; export declare function define(ClassOrDefinition: object): ClassDecorator; export declare function definitions(rules: MixinMergeRules): ClassDecorator; +export declare function propertyListDecorator(listName: string): PropertyDecorator; export declare function definitionDecorator(definitionKey: any, value: any): (proto: object, name: string) => void; export declare class MixinsState { Class: MixableConstructor; diff --git a/lib/type-r/object-plus/mixins.js b/lib/type-r/object-plus/mixins.js index 854297e..d41ac78 100644 --- a/lib/type-r/object-plus/mixins.js +++ b/lib/type-r/object-plus/mixins.js @@ -1,6 +1,6 @@ import * as tslib_1 from "tslib"; -import { assign, hashMap, getBaseClass, defaults, transform } from './tools'; import { __extends } from 'tslib'; +import { assign, defaults, getBaseClass, hashMap, transform } from './tools'; var Mixable = (function () { function Mixable() { } @@ -63,8 +63,16 @@ export function definitions(rules) { mixins.definitionRules = defaults(hashMap(), rules, mixins.definitionRules); }; } +export function propertyListDecorator(listName) { + return function propList(proto, name) { + var list = proto.hasOwnProperty(listName) ? + proto[listName] : (proto[listName] = (proto[listName] || []).slice()); + list.push(name); + }; +} export function definitionDecorator(definitionKey, value) { return function (proto, name) { + var _a, _b; MixinsState .get(proto.constructor) .mergeObject(proto, (_a = {}, @@ -72,7 +80,6 @@ export function definitionDecorator(definitionKey, value) { _b[name] = value, _b), _a)); - var _a, _b; }; } var MixinsState = (function () { @@ -108,9 +115,6 @@ var MixinsState = (function () { else if (appliedMixins.indexOf(mixin) < 0) { appliedMixins.push(mixin); if (typeof mixin === 'function') { - if (getBaseClass(mixin) !== Object) { - console.log('Mixin error'); - } this.mergeObject(this.Class, mixin); var sourceMixins = mixin.mixins; if (sourceMixins) { diff --git a/lib/type-r/object-plus/mixins.js.map b/lib/type-r/object-plus/mixins.js.map index 4a41996..c0125df 100644 --- a/lib/type-r/object-plus/mixins.js.map +++ b/lib/type-r/object-plus/mixins.js.map @@ -1 +1 @@ -{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/mixins.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/mixins.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/tools.d.ts b/lib/type-r/object-plus/tools.d.ts index 3215405..e0e4fc3 100644 --- a/lib/type-r/object-plus/tools.d.ts +++ b/lib/type-r/object-plus/tools.d.ts @@ -1,12 +1,4 @@ -export declare type Logger = (level: LogLevel, error: string, props?: object) => void; -export declare type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug' | 'log'; -export interface Log extends Logger { - level: number; - throw: number; - stop: number; - logger: Logger; -} -export declare const log: Log; +export declare function defaults(dest: T, ...sources: Object[]): T; export declare function isValidJSON(value: any): boolean; export declare function getBaseClass(Class: Function): any; export declare function assignToClassProto(Class: any, definition: T, ...names: K[]): void; @@ -26,14 +18,7 @@ export declare function transform(dest: { export declare function fastAssign(dest: A, source: {}): A; export declare function fastDefaults(dest: A, source: {}): A; export declare function assign(dest: T, ...sources: Object[]): T; -export declare function defaults(dest: T, ...sources: Object[]): T; -declare global { - interface ObjectConstructor { - setPrototypeOf(target: Object, proto: Object): any; - } -} export declare function keys(o: any): string[]; export declare function once(func: Function): Function; export declare function notEqual(a: any, b: any): boolean; export declare function hashMap(obj?: any): any; -export {}; diff --git a/lib/type-r/object-plus/tools.js b/lib/type-r/object-plus/tools.js index 01983be..181bcca 100644 --- a/lib/type-r/object-plus/tools.js +++ b/lib/type-r/object-plus/tools.js @@ -1,42 +1,16 @@ -var levelToNumber = { - none: 0, error: 1, warn: 2, info: 3, log: 4, debug: 5 -}; -export var log = function (a_level, a_msg, a_props) { - var levelAsNumber = levelToNumber[a_level], msg, props, level; - if (levelAsNumber === void 0 && !a_props) { - levelAsNumber = 4; - msg = a_level; - props = a_msg; - level = 'log'; - } - else { - msg = a_msg, level = a_level, props = a_props; - } - if (levelAsNumber <= log.level) { - if (levelAsNumber <= log.throw || !log.logger) { - var error = new Error(msg); - error.props = props; - throw error; - } - else { - log.logger(level, msg, props); - if (levelAsNumber <= log.stop) { - debugger; - } +export function defaults(dest, source) { + for (var name in source) { + if (source.hasOwnProperty(name) && !dest.hasOwnProperty(name)) { + dest[name] = source[name]; } } -}; -log.level = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production' ? 1 : 2; -log.throw = 0; -log.stop = 0; -if (typeof console !== 'undefined') { - log.logger = function _console(level, error, props) { - var args = [error]; - for (var name_1 in props) { - args.push("\n\t" + name_1 + ":", props[name_1]); + if (arguments.length > 2) { + for (var i = 2; i < arguments.length; i++) { + var other = arguments[i]; + other && defaults(dest, other); } - console[level].apply(console, args); - }; + } + return dest; } export function isValidJSON(value) { if (value === null) { @@ -64,9 +38,9 @@ export function assignToClassProto(Class, definition) { names[_i - 2] = arguments[_i]; } for (var _a = 0, names_1 = names; _a < names_1.length; _a++) { - var name_2 = names_1[_a]; - var value = definition[name_2]; - value === void 0 || (Class.prototype[name_2] = value); + var name_1 = names_1[_a]; + var value = definition[name_1]; + value === void 0 || (Class.prototype[name_1] = value); } } export function isEmpty(obj) { @@ -164,21 +138,6 @@ export function assign(dest, source) { } return dest; } -export function defaults(dest, source) { - for (var name in source) { - if (source.hasOwnProperty(name) && !dest.hasOwnProperty(name)) { - dest[name] = source[name]; - } - } - if (arguments.length > 2) { - for (var i = 2; i < arguments.length; i++) { - var other = arguments[i]; - other && defaults(dest, other); - } - } - return dest; -} -Object.setPrototypeOf || (Object.setPrototypeOf = defaults); export function keys(o) { return o ? Object.keys(o) : []; } diff --git a/lib/type-r/object-plus/tools.js.map b/lib/type-r/object-plus/tools.js.map index 9c55a8f..9cd4101 100644 --- a/lib/type-r/object-plus/tools.js.map +++ b/lib/type-r/object-plus/tools.js.map @@ -1 +1 @@ -{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attrDef.d.ts b/lib/type-r/record/attrDef.d.ts new file mode 100644 index 0000000..442046d --- /dev/null +++ b/lib/type-r/record/attrDef.d.ts @@ -0,0 +1,30 @@ +import { IOEndpoint } from '../io-tools'; +import { EventsDefinition } from '../object-plus'; +import { AttributeOptions, Parse, AnyType } from './metatypes'; +export interface AttributeCheck { + (value: any, key: string): boolean; + error?: any; +} +export declare class ChainableAttributeSpec { + options: AttributeOptions; + constructor(options: AttributeOptions); + check(check: AttributeCheck, error?: any): ChainableAttributeSpec; + readonly asProp: (proto: object, name: string) => void; + readonly as: (proto: object, name: string) => void; + readonly isRequired: ChainableAttributeSpec; + readonly required: ChainableAttributeSpec; + endpoint(endpoint: IOEndpoint): ChainableAttributeSpec; + watcher(ref: string | ((value: any, key: string) => void)): ChainableAttributeSpec; + parse(fun: Parse): ChainableAttributeSpec; + toJSON(fun: any): ChainableAttributeSpec; + get(fun: any): ChainableAttributeSpec; + set(fun: any): ChainableAttributeSpec; + changeEvents(events: boolean): ChainableAttributeSpec; + events(map: EventsDefinition): ChainableAttributeSpec; + readonly has: ChainableAttributeSpec; + metadata(options: AttributeOptions): ChainableAttributeSpec; + value(x: any): ChainableAttributeSpec; + static from(spec: any): ChainableAttributeSpec; +} +export declare function type(this: void, type: ChainableAttributeSpec | Function, value?: any): ChainableAttributeSpec; +export declare function createSharedTypeSpec(Constructor: Function, Attribute: typeof AnyType): void; diff --git a/lib/type-r/record/attrDef.js b/lib/type-r/record/attrDef.js new file mode 100644 index 0000000..9fb2929 --- /dev/null +++ b/lib/type-r/record/attrDef.js @@ -0,0 +1,170 @@ +import { definitionDecorator, EventMap, tools } from '../object-plus'; +import { Transactional } from '../transactions'; +import { getMetatype } from './metatypes'; +var assign = tools.assign; +var ChainableAttributeSpec = (function () { + function ChainableAttributeSpec(options) { + this.options = { getHooks: [], transforms: [], changeHandlers: [] }; + if (options) + assign(this.options, options); + } + ChainableAttributeSpec.prototype.check = function (check, error) { + function validate(model, value, name) { + if (!check.call(model, value, name)) { + var msg = error || check.error || name + ' is not valid'; + return typeof msg === 'function' ? msg.call(model, name) : msg; + } + } + var prev = this.options.validate; + return this.metadata({ + validate: prev ? (function (model, value, name) { + return prev(model, value, name) || validate(model, value, name); + }) : validate + }); + }; + Object.defineProperty(ChainableAttributeSpec.prototype, "asProp", { + get: function () { + return definitionDecorator('attributes', this); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ChainableAttributeSpec.prototype, "as", { + get: function () { return this.asProp; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ChainableAttributeSpec.prototype, "isRequired", { + get: function () { + return this.required; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ChainableAttributeSpec.prototype, "required", { + get: function () { + return this.metadata({ isRequired: true }); + }, + enumerable: true, + configurable: true + }); + ChainableAttributeSpec.prototype.endpoint = function (endpoint) { + return this.metadata({ endpoint: endpoint }); + }; + ChainableAttributeSpec.prototype.watcher = function (ref) { + return this.metadata({ _onChange: ref }); + }; + ChainableAttributeSpec.prototype.parse = function (fun) { + return this.metadata({ parse: fun }); + }; + ChainableAttributeSpec.prototype.toJSON = function (fun) { + return this.metadata({ + toJSON: typeof fun === 'function' ? fun : (fun ? function (x, k, o) { return x && x.toJSON(o); } : emptyFunction) + }); + }; + ChainableAttributeSpec.prototype.get = function (fun) { + return this.metadata({ + getHooks: this.options.getHooks.concat(fun) + }); + }; + ChainableAttributeSpec.prototype.set = function (fun) { + function handleSetHook(next, prev, record, options) { + if (this.isChanged(next, prev)) { + var changed = fun.call(record, next, this.name); + return changed === void 0 ? prev : this.convert(changed, prev, record, options); + } + return prev; + } + return this.metadata({ + transforms: this.options.transforms.concat(handleSetHook) + }); + }; + ChainableAttributeSpec.prototype.changeEvents = function (events) { + return this.metadata({ changeEvents: events }); + }; + ChainableAttributeSpec.prototype.events = function (map) { + var eventMap = new EventMap(map); + function handleEventsSubscribtion(next, prev, record) { + prev && prev.trigger && eventMap.unsubscribe(record, prev); + next && next.trigger && eventMap.subscribe(record, next); + } + return this.metadata({ + changeHandlers: this.options.changeHandlers.concat(handleEventsSubscribtion) + }); + }; + Object.defineProperty(ChainableAttributeSpec.prototype, "has", { + get: function () { + return this; + }, + enumerable: true, + configurable: true + }); + ChainableAttributeSpec.prototype.metadata = function (options) { + var cloned = new ChainableAttributeSpec(this.options); + assign(cloned.options, options); + return cloned; + }; + ChainableAttributeSpec.prototype.value = function (x) { + return this.metadata({ value: x, hasCustomDefault: true }); + }; + ChainableAttributeSpec.from = function (spec) { + var attrSpec; + if (typeof spec === 'function') { + attrSpec = type(spec); + } + else if (spec && spec instanceof ChainableAttributeSpec) { + attrSpec = spec; + } + else { + var type_1 = inferType(spec); + if (type_1 && type_1.prototype instanceof Transactional) { + attrSpec = type_1(type_1.shared).value(spec); + } + else { + attrSpec = new ChainableAttributeSpec({ type: type_1, value: spec, hasCustomDefault: true }); + } + } + return attrSpec; + }; + return ChainableAttributeSpec; +}()); +export { ChainableAttributeSpec }; +function emptyFunction() { } +export function type(type, value) { + if (type instanceof ChainableAttributeSpec) + return type; + var defaultValue = value === void 0 ? getMetatype(type).defaultValue : value; + return new ChainableAttributeSpec({ + type: type, + value: defaultValue, + hasCustomDefault: defaultValue !== void 0 + }); +} +function inferType(value) { + switch (typeof value) { + case 'number': + return Number; + case 'string': + return String; + case 'boolean': + return Boolean; + case 'undefined': + return void 0; + case 'object': + return value ? value.constructor : void 0; + } +} +export function createSharedTypeSpec(Constructor, Attribute) { + if (!Constructor.hasOwnProperty('shared')) { + Object.defineProperty(Constructor, 'shared', { + get: function () { + return new ChainableAttributeSpec({ + value: null, + type: Constructor, + _metatype: Attribute + }); + } + }); + } +} +//# sourceMappingURL=attrDef.js.map \ No newline at end of file diff --git a/lib/type-r/record/attrDef.js.map b/lib/type-r/record/attrDef.js.map new file mode 100644 index 0000000..1471fc3 --- /dev/null +++ b/lib/type-r/record/attrDef.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attrDef.js","sourceRoot":"","sources":["../../../src/type-r/record/attrDef.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/any.d.ts b/lib/type-r/record/attributes/any.d.ts index a2b6956..97bfb5b 100644 --- a/lib/type-r/record/attributes/any.d.ts +++ b/lib/type-r/record/attributes/any.d.ts @@ -2,7 +2,7 @@ import { AttributesContainer, AttributeUpdatePipeline, RecordTransaction } from import { tools } from '../../object-plus'; import { TransactionOptions } from '../../transactions'; import { IOEndpoint } from '../../io-tools'; -declare global { +declare global { interface Function { _attribute: typeof AnyType; } @@ -42,7 +42,7 @@ export declare class AnyType implements AttributeUpdatePipeline { clone(value: any, record: AttributesContainer): any; dispose(record: AttributesContainer, value: any): void; validate(record: AttributesContainer, value: any, key: string): void; - toJSON(value: any, key: any): any; + toJSON(value: any, key: any, options?: object): any; createPropertyDescriptor(): PropertyDescriptor | void; value: any; static defaultValue: any; @@ -54,8 +54,7 @@ export declare class AnyType implements AttributeUpdatePipeline { propagateChanges: boolean; _log(level: tools.LogLevel, text: string, value: any, record: AttributesContainer): void; defaultValue(): any; - parse: Parse; constructor(name: string, a_options: AttributeOptions); - getHook: (value, key: string) => any; - get: (value, key: string) => any; + getHook: (value: any, key: string) => any; + get: (value: any, key: string) => any; } diff --git a/lib/type-r/record/attributes/any.js b/lib/type-r/record/attributes/any.js index c456b24..afecd90 100644 --- a/lib/type-r/record/attributes/any.js +++ b/lib/type-r/record/attributes/any.js @@ -30,7 +30,6 @@ var AnyType = (function () { this.validate = wrapIsRequired(this.validate); } transforms.unshift(this.convert); - this.parse = parse || this.parse; if (this.get) getHooks.unshift(this.get); this.initialize.call(this, options); @@ -43,6 +42,13 @@ var AnyType = (function () { } this.transform = transforms.length ? transforms.reduce(chainTransforms) : this.transform; this.handleChange = changeHandlers.length ? changeHandlers.reduce(chainChangeHandlers) : this.handleChange; + var _a = this, doInit = _a.doInit, doUpdate = _a.doUpdate; + this.doInit = parse ? function (value, record, options) { + return doInit.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options); + } : doInit; + this.doUpdate = parse ? function (value, record, options, nested) { + return doUpdate.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options, nested); + } : doUpdate; } AnyType.create = function (options, name) { var type = options.type, AttributeCtor = options._attribute || (type ? type._attribute : AnyType); @@ -63,8 +69,8 @@ var AnyType = (function () { this.handleChange(void 0, value, record, emptyOptions); }; AnyType.prototype.validate = function (record, value, key) { }; - AnyType.prototype.toJSON = function (value, key) { - return value && value.toJSON ? value.toJSON() : value; + AnyType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; }; AnyType.prototype.createPropertyDescriptor = function () { var _a = this, name = _a.name, getHook = _a.getHook; diff --git a/lib/type-r/record/attributes/any.js.map b/lib/type-r/record/attributes/any.js.map index f408108..3470b9d 100644 --- a/lib/type-r/record/attributes/any.js.map +++ b/lib/type-r/record/attributes/any.js.map @@ -1 +1 @@ -{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/any.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/any.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/attrDef.d.ts b/lib/type-r/record/attributes/attrDef.d.ts index 8c85d96..23a59ff 100644 --- a/lib/type-r/record/attributes/attrDef.d.ts +++ b/lib/type-r/record/attributes/attrDef.d.ts @@ -10,6 +10,7 @@ export declare class ChainableAttributeSpec { constructor(options: AttributeOptions); check(check: AttributeCheck, error: any): ChainableAttributeSpec; readonly asProp: (proto: object, name: string) => void; + readonly as: (proto: object, name: string) => void; readonly isRequired: ChainableAttributeSpec; endpoint(endpoint: IOEndpoint): ChainableAttributeSpec; watcher(ref: string | ((value: any, key: string) => void)): ChainableAttributeSpec; @@ -22,8 +23,10 @@ export declare class ChainableAttributeSpec { readonly has: ChainableAttributeSpec; metadata(options: AttributeOptions): ChainableAttributeSpec; value(x: any): ChainableAttributeSpec; + static from(spec: any): ChainableAttributeSpec; } -declare global { +export declare function type(this: void, spec: ChainableAttributeSpec | Function): ChainableAttributeSpec; +declare global { interface Function { value: (x: any) => ChainableAttributeSpec; isRequired: ChainableAttributeSpec; @@ -31,4 +34,3 @@ declare global { has: ChainableAttributeSpec; } } -export declare function toAttributeOptions(spec: any): AttributeOptions; diff --git a/lib/type-r/record/attributes/attrDef.js b/lib/type-r/record/attributes/attrDef.js index 07c6c34..df6595f 100644 --- a/lib/type-r/record/attributes/attrDef.js +++ b/lib/type-r/record/attributes/attrDef.js @@ -28,6 +28,11 @@ var ChainableAttributeSpec = (function () { enumerable: true, configurable: true }); + Object.defineProperty(ChainableAttributeSpec.prototype, "as", { + get: function () { return this.asProp; }, + enumerable: true, + configurable: true + }); Object.defineProperty(ChainableAttributeSpec.prototype, "isRequired", { get: function () { return this.metadata({ isRequired: true }); @@ -46,7 +51,7 @@ var ChainableAttributeSpec = (function () { }; ChainableAttributeSpec.prototype.toJSON = function (fun) { return this.metadata({ - toJSON: typeof fun === 'function' ? fun : (fun ? function (x) { return x && x.toJSON(); } : emptyFunction) + toJSON: typeof fun === 'function' ? fun : (fun ? function (x, k, o) { return x && x.toJSON(o); } : emptyFunction) }); }; ChainableAttributeSpec.prototype.get = function (fun) { @@ -94,10 +99,37 @@ var ChainableAttributeSpec = (function () { ChainableAttributeSpec.prototype.value = function (x) { return this.metadata({ value: x, hasCustomDefault: true }); }; + ChainableAttributeSpec.from = function (spec) { + var attrSpec; + if (typeof spec === 'function') { + attrSpec = spec.has; + } + else if (spec && spec instanceof ChainableAttributeSpec) { + attrSpec = spec; + } + else { + var type_1 = inferType(spec); + if (type_1 && type_1.prototype instanceof Transactional) { + attrSpec = type_1.shared.value(spec); + } + else { + attrSpec = new ChainableAttributeSpec({ type: type_1, value: spec, hasCustomDefault: true }); + } + } + return attrSpec; + }; return ChainableAttributeSpec; }()); export { ChainableAttributeSpec }; function emptyFunction() { } +export function type(spec) { + return spec instanceof ChainableAttributeSpec ? spec : new ChainableAttributeSpec({ + type: spec, + value: spec._attribute.defaultValue, + hasCustomDefault: spec._attribute.defaultValue !== void 0 + }); + ; +} Function.prototype.value = function (x) { return new ChainableAttributeSpec({ type: this, value: x, hasCustomDefault: true }); }; @@ -110,33 +142,10 @@ Object.defineProperty(Function.prototype, 'asProp', { }); Object.defineProperty(Function.prototype, 'has', { get: function () { - return this._has || new ChainableAttributeSpec({ - type: this, - value: this._attribute.defaultValue, - hasCustomDefault: this._attribute.defaultValue !== void 0 - }); + return this._has || type(this); }, set: function (value) { this._has = value; } }); -export function toAttributeOptions(spec) { - var attrSpec; - if (typeof spec === 'function') { - attrSpec = spec.has; - } - else if (spec && spec instanceof ChainableAttributeSpec) { - attrSpec = spec; - } - else { - var type = inferType(spec); - if (type && type.prototype instanceof Transactional) { - attrSpec = type.shared.value(spec); - } - else { - attrSpec = new ChainableAttributeSpec({ type: type, value: spec, hasCustomDefault: true }); - } - } - return attrSpec.options; -} function inferType(value) { switch (typeof value) { case 'number': diff --git a/lib/type-r/record/attributes/attrDef.js.map b/lib/type-r/record/attributes/attrDef.js.map index f8078a2..c7347d9 100644 --- a/lib/type-r/record/attributes/attrDef.js.map +++ b/lib/type-r/record/attributes/attrDef.js.map @@ -1 +1 @@ -{"version":3,"file":"attrDef.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/attrDef.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"attrDef.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/attrDef.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,EAAE,QAAQ,EAAoB,mBAAmB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGlF,IAAA,qBAAM,CAAW;AAOzB;IAGI,gCAAa,OAA0B;QAEnC,IAAI,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAG,EAAE,EAAE,UAAU,EAAG,EAAE,EAAE,cAAc,EAAG,EAAE,EAAC,CAAC;QACtE,IAAI,OAAO;YAAG,MAAM,CAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAE,CAAC;IAClD,CAAC;IAED,sCAAK,GAAL,UAAO,KAAsB,EAAE,KAAW;QACtC,SAAS,QAAQ,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAE,EAAE;gBACnC,IAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,GAAG,eAAe,CAAC;gBAC3D,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC;aACpE;QACL,CAAC;QAED,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEnC,OAAO,IAAI,CAAC,QAAQ,CAAC;YACjB,QAAQ,EAAG,IAAI,CAAC,CAAC,CAAC,CACF,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI;gBACxB,OAAO,IAAI,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAE,IAAI,QAAQ,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAE,CAAC;YACxE,CAAC,CACL,CAAC,CAAC,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,sBAAI,0CAAM;aAAV;YACI,OAAO,mBAAmB,CAAE,YAAY,EAAE,IAAI,CAAE,CAAC;QACrD,CAAC;;;OAAA;IAED,sBAAI,sCAAE;aAAN,cAAU,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;;OAAA;IAE/B,sBAAI,8CAAU;aAAd;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAG,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;;;OAAA;IAED,yCAAQ,GAAR,UAAU,QAAqB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,wCAAO,GAAP,UAAS,GAAwD;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAG,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAGD,sCAAK,GAAL,UAAO,GAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAG,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,uCAAM,GAAN,UAAQ,GAAG;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;YACjB,MAAM,EAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,UAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAM,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,CAAE,CAAC,CAAE,EAAlB,CAAkB,CAAC,CAAC,CAAC,aAAa,CAAE;SACzG,CAAC,CAAC;IACP,CAAC;IAGD,oCAAG,GAAH,UAAK,GAAG;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;YACjB,QAAQ,EAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAE,GAAG,CAAE;SACjD,CAAC,CAAC;IACP,CAAC;IAGD,oCAAG,GAAH,UAAK,GAAG;QACJ,SAAS,aAAa,CAAE,IAAI,EAAE,IAAI,EAAE,MAA4B,EAAE,OAAO;YACrE,IAAI,IAAI,CAAC,SAAS,CAAE,IAAI,EAAE,IAAI,CAAE,EAAG;gBAC/B,IAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC;gBACpD,OAAO,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;aACrF;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;YACjB,UAAU,EAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAE,aAAa,CAAE;SAC/D,CAAC,CAAC;IACP,CAAC;IAED,6CAAY,GAAZ,UAAc,MAAgB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAG,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAGD,uCAAM,GAAN,UAAQ,GAAsB;QAC1B,IAAM,QAAQ,GAAG,IAAI,QAAQ,CAAE,GAAG,CAAE,CAAC;QAErC,SAAS,wBAAwB,CAAE,IAAI,EAAE,IAAI,EAAE,MAA4B;YACvE,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAE,MAAM,EAAE,IAAI,CAAE,CAAC;YAE7D,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAE,MAAM,EAAE,IAAI,CAAE,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;YACjB,cAAc,EAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAE,wBAAwB,CAAE;SAClF,CAAC,CAAC;IACP,CAAC;IAGD,sBAAI,uCAAG;aAAP;YACI,OAAO,IAAI,CAAC;QAChB,CAAC;;;OAAA;IAED,yCAAQ,GAAR,UAAU,OAA0B;QAChC,IAAM,MAAM,GAAG,IAAI,sBAAsB,CAAE,IAAI,CAAC,OAAO,CAAE,CAAC;QAC1D,MAAM,CAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,sCAAK,GAAL,UAAO,CAAC;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,gBAAgB,EAAG,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,2BAAI,GAAX,UAAa,IAAU;QACnB,IAAI,QAAiC,CAAC;QAEtC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAG;YAC7B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;SACvB;aACI,IAAI,IAAI,IAAI,IAAI,YAAY,sBAAsB,EAAG;YACtD,QAAQ,GAAG,IAAI,CAAC;SACnB;aACG;YAEA,IAAM,MAAI,GAAG,SAAS,CAAE,IAAI,CAAE,CAAC;YAG/B,IAAI,MAAI,IAAI,MAAI,CAAC,SAAS,YAAY,aAAa,EAAE;gBACjD,QAAQ,GAAS,MAAK,CAAC,MAAM,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC;aAC/C;iBAEG;gBACA,QAAQ,GAAG,IAAI,sBAAsB,CAAC,EAAE,IAAI,EAAG,MAAI,EAAE,KAAK,EAAG,IAAI,EAAE,gBAAgB,EAAG,IAAI,EAAE,CAAC,CAAC;aACjG;SACJ;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IACL,6BAAC;AAAD,CAAC,AA3ID,IA2IC;;AAED,SAAS,aAAa,KAAG,CAAC;AAE1B,MAAM,UAAU,IAAI,CAAe,IAAwC;IACvE,OAAO,IAAI,YAAY,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAE;QAC/E,IAAI,EAAG,IAAI;QACX,KAAK,EAAG,IAAI,CAAC,UAAU,CAAC,YAAY;QACpC,gBAAgB,EAAG,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,KAAK,CAAC;KAC7D,CAAE,CAAC;IAAA,CAAC;AACT,CAAC;AAWD,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;IAClC,OAAO,IAAI,sBAAsB,CAAE,EAAE,IAAI,EAAG,IAAI,EAAE,KAAK,EAAG,CAAC,EAAE,gBAAgB,EAAG,IAAI,EAAE,CAAE,CAAC;AAC7F,CAAC,CAAC;AAEF,MAAM,CAAC,cAAc,CAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE;IACrD,GAAG,gBAAK,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,GAAG,YAAE,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE;IACjD,GAAG,gBAAK,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE;IAC9C,GAAG;QAEC,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAE,IAAI,CAAE,CAAC;IACrC,CAAC;IAED,GAAG,YAAE,KAAK,IAAK,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;CACtC,CAAE,CAAC;AAEJ,SAAS,SAAS,CAAE,KAAU;IAC1B,QAAQ,OAAO,KAAK,EAAG;QACnB,KAAK,QAAQ;YACT,OAAO,MAAM,CAAC;QAClB,KAAK,QAAQ;YACT,OAAO,MAAM,CAAC;QAClB,KAAK,SAAS;YACV,OAAO,OAAO,CAAC;QACnB,KAAK,WAAW;YACZ,OAAO,KAAK,CAAC,CAAC;QAClB,KAAK,QAAQ;YACT,OAAO,KAAK,CAAC,CAAC,CAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACvD;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/basic.d.ts b/lib/type-r/record/attributes/basic.d.ts index 4af7581..d47677a 100644 --- a/lib/type-r/record/attributes/basic.d.ts +++ b/lib/type-r/record/attributes/basic.d.ts @@ -19,7 +19,7 @@ export declare class NumericType extends PrimitiveType { convert(next: any, prev?: any, record?: any): any; validate(model: any, value: any, name: any): string; } -declare global { +declare global { interface NumberConstructor { integer: Function; } diff --git a/lib/type-r/record/attributes/basic.js b/lib/type-r/record/attributes/basic.js index 44788ed..f802b0c 100644 --- a/lib/type-r/record/attributes/basic.js +++ b/lib/type-r/record/attributes/basic.js @@ -11,8 +11,8 @@ var ImmutableClassType = (function (_super) { ImmutableClassType.prototype.convert = function (next) { return next == null || next instanceof this.type ? next : new this.type(next); }; - ImmutableClassType.prototype.toJSON = function (value) { - return value && value.toJSON ? value.toJSON() : value; + ImmutableClassType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; }; ImmutableClassType.prototype.clone = function (value) { return new this.type(this.toJSON(value)); diff --git a/lib/type-r/record/attributes/basic.js.map b/lib/type-r/record/attributes/basic.js.map index c458dd5..5452804 100644 --- a/lib/type-r/record/attributes/basic.js.map +++ b/lib/type-r/record/attributes/basic.js.map @@ -1 +1 @@ -{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/basic.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAS/B;IAAiC,8CAAO;IAAxC;;IAsBA,CAAC;IAnBG,mCAAM,GAAN;QACI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,oCAAO,GAAP,UAAS,IAAU;QACf,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;IACpF,CAAC;IAED,mCAAM,GAAN,UAAQ,KAAK;QACT,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,CAAC;IAED,kCAAK,GAAL,UAAO,KAAK;QACR,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,MAAM,CAAE,KAAK,CAAE,CAAE,CAAC;IACjD,CAAC;IAED,sCAAS,GAAT,UAAW,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACL,yBAAC;AAAD,CAAC,AAtBD,CAAiC,OAAO,GAsBvC;AAED,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,kBAAkB,CAAC;AAOnD;IAAmC,yCAAO;IAA1C;;IA+BA,CAAC;IA5BG,+BAAO,GAAP,cAAU,CAAC;IACX,8BAAM,GAAN,cAAW,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhC,8BAAM,GAAN,UAAQ,KAAK,IAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjC,+BAAO,GAAP,UAAS,IAAI,IAAK,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;IAEnE,iCAAS,GAAT,UAAW,CAAC,EAAE,CAAC,IAAK,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErC,6BAAK,GAAL,UAAO,KAAK,IAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhC,8BAAM,GAAN,UAAQ,KAAK,EAAE,MAA4B,EAAE,OAA4B;QACrE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;IAC5F,CAAC;IAED,gCAAQ,GAAR,UAAU,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;QAC1B,IAAA,gBAAI,EACJ,8BAAU,EACZ,IAAI,GAAG,UAAU,CAAE,IAAI,CAAE,CAAC;QAElC,MAAM,CAAC,IAAI,KAAK,CAAE,UAAU,CAAE,IAAI,CAAE,GAAG,IAAI,CAAC,SAAS,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAE,CAAC;IAC5F,CAAC;IAED,kCAAU,GAAV;QACI,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAiB,CAAC,CAAA,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IACL,oBAAC;AAAD,CAAC,AA/BD,CAAmC,OAAO,GA+BzC;;AAED,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;AAIvD;IAAiC,uCAAa;IAA9C;;IAuBA,CAAC;IApBG,4BAAM,GAAN;QACI,MAAM,CAAC,CAAC,CAAC;IACb,CAAC;IAED,6BAAO,GAAP,UAAS,IAAI,EAAE,IAAK,EAAE,MAAO;QACzB,IAAM,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;QAEpD,EAAE,CAAA,CAAE,GAAG,KAAK,GAAI,CAAC,CAAA,CAAC;YACd,IAAI,CAAC,IAAI,CAAE,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,MAAM,CAAE,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,GAAG,CAAC;IACf,CAAC;IAED,8BAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI;QAExB,EAAE,CAAA,CAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAE,KAAK,CAAG,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACzC,CAAC;IACL,CAAC;IACL,kBAAC;AAAD,CAAC,AAvBD,CAAiC,aAAa,GAuB7C;;AAED,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;AAehC,iBAAkB,CAAC;IACf,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AACD,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AAGzB,EAAE,CAAA,CAAE,OAAO,MAAM,KAAK,WAAY,CAAC,CAAA,CAAC;IAChC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACpC,CAAC;AAMD;IAA+B,qCAAO;IAAtC;;IAiBA,CAAC;IAhBG,0BAAM,GAAN,UAAQ,KAAK,IAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,2BAAO,GAAP,cAAU,CAAC;IACX,0BAAM,GAAN,cAAU,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtB,2BAAO,GAAP,UAAS,IAAI,EAAE,IAAI,EAAE,MAAM;QAEvB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,IAAI,CAAG,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;QAExD,IAAI,CAAC,IAAI,CAAE,MAAM,EAAE,uDAAuD,EAAE,IAAI,EAAE,MAAM,CAAE,CAAC;QAE3F,MAAM,CAAC,EAAE,CAAC;IACd,CAAC;IAED,yBAAK,GAAL,UAAO,KAAK;QACR,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IACL,gBAAC;AAAD,CAAC,AAjBD,CAA+B,OAAO,GAiBrC;;AAED,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AAE7B;IAAgC,sCAAO;IAAvC;;IASA,CAAC;IARG,2BAAM,GAAN,cAAU,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtB,4BAAO,GAAP,UAAS,IAAI,EAAE,IAAI,EAAE,MAAM;QACvB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAS,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;QAE3D,IAAI,CAAC,IAAI,CAAE,MAAM,EAAE,yDAAyD,EAAE,IAAI,EAAE,MAAM,CAAE,CAAC;QAC7F,MAAM,CAAC,EAAE,CAAC;IACd,CAAC;IACL,iBAAC;AAAD,CAAC,AATD,CAAgC,OAAO,GAStC;;AAED,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAE/B,MAAM,wBAAsB,CAAC;AAE7B;IAAkC,wCAAO;IAAzC;;IAiBA,CAAC;IAfG,6BAAM,GAAN,UAAQ,KAAK,IAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,6BAAM,GAAN,cAAU,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7B,8BAAO,GAAP,cAAU,CAAC;IAEX,8BAAO,GAAP,UAAS,IAAI,EAAE,IAAI,EAAE,MAAM;QAEvB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,UAAW,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAE,MAAM,EAAE,4BAA4B,EAAE,IAAI,EAAE,MAAM,CAAE,CAAC;QAEhE,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;IAGD,4BAAK,GAAL,UAAO,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,mBAAC;AAAD,CAAC,AAjBD,CAAkC,OAAO,GAiBxC;;AAED,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/basic.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/date.d.ts b/lib/type-r/record/attributes/date.d.ts index d533049..3d82bfb 100644 --- a/lib/type-r/record/attributes/date.d.ts +++ b/lib/type-r/record/attributes/date.d.ts @@ -20,7 +20,7 @@ export declare class MSDateType extends DateType { export declare class TimestampType extends DateType { toJSON(value: any): any; } -declare global { +declare global { interface DateConstructor { microsoft: ChainableAttributeSpec; timestamp: ChainableAttributeSpec; diff --git a/lib/type-r/record/attributes/date.js.map b/lib/type-r/record/attributes/date.js.map index 8515e54..2c2b09a 100644 --- a/lib/type-r/record/attributes/date.js.map +++ b/lib/type-r/record/attributes/date.js.map @@ -1 +1 @@ -{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/date.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/date.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/index.d.ts b/lib/type-r/record/attributes/index.d.ts index 8df3719..256e999 100644 --- a/lib/type-r/record/attributes/index.d.ts +++ b/lib/type-r/record/attributes/index.d.ts @@ -13,7 +13,6 @@ export interface RecordAttributesMixin extends ConstructorsMixin { _attributes: AttributeDescriptors; _attributesArray: AnyType[]; properties: PropertyDescriptorMap; - _toJSON(): any; _localEvents?: eventsApi.EventMap; _endpoints: { [name: string]: IOEndpoint; diff --git a/lib/type-r/record/attributes/index.js b/lib/type-r/record/attributes/index.js index 9bcd9f2..c43ff9d 100644 --- a/lib/type-r/record/attributes/index.js +++ b/lib/type-r/record/attributes/index.js @@ -9,28 +9,15 @@ export * from './updates'; export * from './attrDef'; import { AnyType } from './any'; import { constructorsMixin } from './updates'; -import { toAttributeOptions, ChainableAttributeSpec } from './attrDef'; +import { ChainableAttributeSpec } from './attrDef'; import { CompiledReference } from '../../traversable'; export default function (attributesDefinition, baseClassAttributes) { var myAttributes = _.transform({}, attributesDefinition, createAttribute), allAttributes = _.defaults({}, myAttributes, baseClassAttributes); var ConstructorsMixin = constructorsMixin(allAttributes); - return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }), _toJSON: createToJSON(allAttributes) }, parseMixin(allAttributes), localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) }); + return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }) }, localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) }); } export function createAttribute(spec, name) { - return AnyType.create(toAttributeOptions(spec), name); -} -function parseMixin(attributes) { - var attrsWithParse = Object.keys(attributes).filter(function (name) { return attributes[name].parse; }); - return attrsWithParse.length ? { - _parse: new Function('json', "\n var _attrs = this._attributes;\n\n " + attrsWithParse.map(function (name) { return " \n json." + name + " === void 0 || ( json." + name + " = _attrs." + name + ".parse.call( this, json." + name + ", \"" + name + "\" ) );\n "; }).join('') + "\n\n return json;\n ") - } : {}; -} -function createToJSON(attributes) { - return new Function("\n var json = {},\n v = this.attributes,\n a = this._attributes;\n\n " + Object.keys(attributes).map(function (key) { - if (attributes[key].toJSON) { - return "json." + key + " = a." + key + ".toJSON.call( this, v." + key + ", '" + key + "' );"; - } - }).join('\n') + "\n\n return json;\n "); + return AnyType.create(ChainableAttributeSpec.from(spec).options, name); } export function createSharedTypeSpec(Constructor, Attribute) { if (!Constructor.hasOwnProperty('shared')) { diff --git a/lib/type-r/record/attributes/index.js.map b/lib/type-r/record/attributes/index.js.map index ae4d8df..afdeab8 100644 --- a/lib/type-r/record/attributes/index.js.map +++ b/lib/type-r/record/attributes/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/owned.d.ts b/lib/type-r/record/attributes/owned.d.ts index 41d0b74..78bd0c7 100644 --- a/lib/type-r/record/attributes/owned.d.ts +++ b/lib/type-r/record/attributes/owned.d.ts @@ -5,7 +5,7 @@ import { ValidationError } from '../../validation'; export declare class AggregatedType extends AnyType { type: typeof Transactional; clone(value: Transactional): Transactional; - toJSON(x: any): any; + toJSON(x: any, key: string, options: object): any; doInit(value: any, record: AttributesContainer, options: ConstructorOptions): any; doUpdate(value: any, record: any, options: any, nested: any[]): boolean; canBeUpdated(prev: Transactional, next: any, options: TransactionOptions): any; diff --git a/lib/type-r/record/attributes/owned.js b/lib/type-r/record/attributes/owned.js index a41c351..ac7b8c5 100644 --- a/lib/type-r/record/attributes/owned.js +++ b/lib/type-r/record/attributes/owned.js @@ -10,7 +10,7 @@ var AggregatedType = (function (_super) { AggregatedType.prototype.clone = function (value) { return value ? value.clone() : value; }; - AggregatedType.prototype.toJSON = function (x) { return x && x.toJSON(); }; + AggregatedType.prototype.toJSON = function (x, key, options) { return x && x.toJSON(options); }; AggregatedType.prototype.doInit = function (value, record, options) { var v = options.clone ? this.clone(value) : (value === void 0 ? this.defaultValue() : value); var x = this.transform(v, void 0, record, options); diff --git a/lib/type-r/record/attributes/owned.js.map b/lib/type-r/record/attributes/owned.js.map index 59fb2f1..f194824 100644 --- a/lib/type-r/record/attributes/owned.js.map +++ b/lib/type-r/record/attributes/owned.js.map @@ -1 +1 @@ -{"version":3,"file":"owned.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/owned.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"owned.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/owned.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/shared.js.map b/lib/type-r/record/attributes/shared.js.map index 2050a22..ef248a5 100644 --- a/lib/type-r/record/attributes/shared.js.map +++ b/lib/type-r/record/attributes/shared.js.map @@ -1 +1 @@ -{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/updates.js.map b/lib/type-r/record/attributes/updates.js.map index 5e9c2ba..6f9b2ca 100644 --- a/lib/type-r/record/attributes/updates.js.map +++ b/lib/type-r/record/attributes/updates.js.map @@ -1 +1 @@ -{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/updates.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/updates.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/index.d.ts b/lib/type-r/record/index.d.ts index 8f6d387..258cf03 100644 --- a/lib/type-r/record/index.d.ts +++ b/lib/type-r/record/index.d.ts @@ -1,5 +1,7 @@ import { Record } from './record'; -export * from './attributes'; +export * from './attrDef'; +export * from './metatypes'; export { Record }; -export declare function attr(proto: any, attrName?: any): any; +export declare function attr(proto: object, attrName: string): void; +export declare function attr(spec: any): PropertyDecorator; export declare function prop(spec: any): any; diff --git a/lib/type-r/record/index.js b/lib/type-r/record/index.js index 49acfd6..473747a 100644 --- a/lib/type-r/record/index.js +++ b/lib/type-r/record/index.js @@ -1,12 +1,14 @@ import * as tslib_1 from "tslib"; -import { Record } from './record'; -import { tools, predefine } from '../object-plus'; -import compile from './attributes'; +import { predefine, tools } from '../object-plus'; import { Transactional } from '../transactions'; -import { createSharedTypeSpec, AggregatedType, SharedType } from './attributes'; -export * from './attributes'; +import { ChainableAttributeSpec, createSharedTypeSpec, type } from './attrDef'; +import { SharedType } from './metatypes'; +import { createAttributesMixin } from './mixin'; +import { Record } from './record'; +export * from './attrDef'; +export * from './metatypes'; export { Record }; -var assign = tools.assign, defaults = tools.defaults, omit = tools.omit, getBaseClass = tools.getBaseClass; +var assign = tools.assign, defaults = tools.defaults; Record.onExtend = function (BaseClass) { Transactional.onExtend.call(this, BaseClass); var Class = this; @@ -29,7 +31,7 @@ Record.onExtend = function (BaseClass) { }; Record.onDefine = function (definition, BaseClass) { var baseProto = BaseClass.prototype; - var _a = compile(this.attributes = getAttributes(definition), baseProto._attributes), properties = _a.properties, _localEvents = _a._localEvents, dynamicMixin = tslib_1.__rest(_a, ["properties", "_localEvents"]); + var _a = createAttributesMixin(this.attributes = getAttributes(definition), baseProto._attributes), properties = _a.properties, _localEvents = _a._localEvents, dynamicMixin = tslib_1.__rest(_a, ["properties", "_localEvents"]); assign(this.prototype, dynamicMixin); definition.properties = defaults(definition.properties || {}, properties); definition._localEvents = _localEvents; @@ -40,7 +42,6 @@ Record.onDefine = function (definition, BaseClass) { if (definition.endpoint) this.Collection.prototype._endpoint = definition.endpoint; }; -Record._attribute = AggregatedType; createSharedTypeSpec(Record, SharedType); function getAttributes(_a) { var defaults = _a.defaults, attributes = _a.attributes, idAttribute = _a.idAttribute; @@ -53,16 +54,14 @@ function getAttributes(_a) { export function attr(proto, attrName) { if (attrName) { if (typeof Reflect !== 'undefined' && Reflect.getMetadata) { - Reflect - .getMetadata("design:type", proto, attrName) - .asProp(proto, attrName); + type(Reflect.getMetadata("design:type", proto, attrName)).asProp(proto, attrName); } else { - proto._log('error', 'Add import "reflect-metadata"; as the first line of your app.'); + proto._log('error', 'Type-R:MissingImport', 'Add import "reflect-metadata"; as the first line of your app.'); } } else { - return proto.asProp; + return ChainableAttributeSpec.from(proto).asProp; } } export function prop(spec) { diff --git a/lib/type-r/record/index.js.map b/lib/type-r/record/index.js.map index cb538d5..0ee288e 100644 --- a/lib/type-r/record/index.js.map +++ b/lib/type-r/record/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/record/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/record/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/io-mixin.d.ts b/lib/type-r/record/io-mixin.d.ts index d4ebe6d..e1600f8 100644 --- a/lib/type-r/record/io-mixin.d.ts +++ b/lib/type-r/record/io-mixin.d.ts @@ -1,10 +1,10 @@ -import { IOOptions, IOEndpoint, IOPromise, IONode } from '../io-tools'; +import { IOEndpoint, IONode, IOOptions, IOPromise } from '../io-tools'; export interface IORecord extends IONode { getEndpoint(): IOEndpoint; - save(options?: IOOptions): IOPromise; - fetch(options?: IOOptions): IOPromise; - destroy(options?: IOOptions): IOPromise; - toJSON(): any; + save(options?: IOOptions): IOPromise; + fetch(options?: IOOptions): IOPromise; + destroy(options?: IOOptions): IOPromise; + toJSON(options?: object): any; isNew(): boolean; id: string | number; set(json: object, options: object): any; diff --git a/lib/type-r/record/io-mixin.js b/lib/type-r/record/io-mixin.js index 09fe39b..513fc83 100644 --- a/lib/type-r/record/io-mixin.js +++ b/lib/type-r/record/io-mixin.js @@ -4,7 +4,7 @@ export var IORecordMixin = { save: function (options) { var _this = this; if (options === void 0) { options = {}; } - var endpoint = this.getEndpoint(), json = this.toJSON(); + var endpoint = this.getEndpoint(), json = this.toJSON(options); return startIO(this, this.isNew() ? endpoint.create(json, options, this) : endpoint.update(this.id, json, options, this), options, function (update) { @@ -27,6 +27,7 @@ export var IORecordMixin = { else { _this.dispose(); } + return _this; }); } }; diff --git a/lib/type-r/record/io-mixin.js.map b/lib/type-r/record/io-mixin.js.map index e70e86a..3c24e47 100644 --- a/lib/type-r/record/io-mixin.js.map +++ b/lib/type-r/record/io-mixin.js.map @@ -1 +1 @@ -{"version":3,"file":"io-mixin.js","sourceRoot":"","sources":["../../../src/type-r/record/io-mixin.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,OAAO,EAA4C,MAAM,aAAa,CAAA;AAajG,MAAM,CAAC,IAAM,aAAa,GAAG;IACzB,IAAI,YAAmB,OAAwB;QAA/C,iBAeC;QAfsB,wBAAA,EAAA,YAAwB;QAC3C,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE3B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACV,QAAQ,CAAC,MAAM,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,EACnD,OAAO,EAEP,UAAA,MAAM;YACF,KAAI,CAAC,GAAG,CAAE,MAAM,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,CAAC;QACrD,CAAC,CACJ,CAAC;IACN,CAAC;IAED,KAAK,YAAE,OAAwB;QAA/B,iBAQC;QARM,wBAAA,EAAA,YAAwB;QAC3B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACjD,OAAO,EAEP,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,GAAG,CAAE,IAAI,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,EAA9C,CAA8C,CACzD,CAAC;IACN,CAAC;IAED,OAAO,YAAE,OAAwB;QAAjC,iBAgBC;QAhBQ,wBAAA,EAAA,YAAwB;QAC7B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACpD,OAAO,EAEP;YACY,IAAA,6BAAU,CAAU;YAC5B,EAAE,CAAA,CAAE,UAAW,CAAC,CAAA,CAAC;gBACb,UAAU,CAAC,MAAM,CAAE,KAAI,EAAE,OAAO,CAAE,CAAC;YACvC,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,KAAI,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACL,CAAC,CACJ,CAAA;IACL,CAAC;CACJ,CAAA"} \ No newline at end of file +{"version":3,"file":"io-mixin.js","sourceRoot":"","sources":["../../../src/type-r/record/io-mixin.ts"],"names":[],"mappings":";AAAA,OAAO,EAA4C,OAAO,EAAE,MAAM,aAAa,CAAC;AAahF,MAAM,CAAC,IAAM,aAAa,GAAG;IACzB,IAAI,YAAmB,OAAwB;QAA/C,iBAeC;QAfsB,wBAAA,EAAA,YAAwB;QAC3C,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAE,OAAO,CAAE,CAAC;QAEpC,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACV,QAAQ,CAAC,MAAM,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,EACnD,OAAO,EAEP,UAAA,MAAM;YACF,KAAI,CAAC,GAAG,CAAE,MAAM,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,CAAC;QACrD,CAAC,CACJ,CAAC;IACN,CAAC;IAED,KAAK,YAAE,OAAwB;QAA/B,iBAQC;QARM,wBAAA,EAAA,YAAwB;QAC3B,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACjD,OAAO,EAEP,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,GAAG,CAAE,IAAI,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,EAA9C,CAA8C,CACzD,CAAC;IACN,CAAC;IAED,OAAO,YAAE,OAAwB;QAAjC,iBAkBC;QAlBQ,wBAAA,EAAA,YAAwB;QAC7B,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACpD,OAAO,EAEP;YACY,IAAA,6BAAU,CAAU;YAC5B,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,MAAM,CAAE,KAAI,EAAE,OAAO,CAAE,CAAC;aACtC;iBACG;gBACA,KAAI,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,OAAO,KAAI,CAAC;QAChB,CAAC,CACJ,CAAA;IACL,CAAC;CACJ,CAAA"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/any.d.ts b/lib/type-r/record/metatypes/any.d.ts new file mode 100644 index 0000000..8aeb655 --- /dev/null +++ b/lib/type-r/record/metatypes/any.d.ts @@ -0,0 +1,55 @@ +import { IOEndpoint } from '../../io-tools'; +import { LogLevel, Logger } from '../../object-plus'; +import { TransactionOptions } from '../../transactions'; +import { AttributesContainer, AttributeUpdatePipeline, RecordTransaction } from '../updates'; +export declare type Transform = (this: AnyType, next: any, prev: any, record: AttributesContainer, options: TransactionOptions) => any; +export declare type ChangeHandler = (this: AnyType, next: any, prev: any, record: AttributesContainer, options: TransactionOptions) => void; +export interface AttributeOptions { + _metatype?: typeof AnyType; + validate?: (record: AttributesContainer, value: any, key: string) => any; + isRequired?: boolean; + changeEvents?: boolean; + endpoint?: IOEndpoint; + type?: Function; + value?: any; + hasCustomDefault?: boolean; + parse?: Parse; + toJSON?: AttributeToJSON; + getHooks?: GetHook[]; + transforms?: Transform[]; + changeHandlers?: ChangeHandler[]; + _onChange?: ChangeAttrHandler; +} +export declare type Parse = (value: any, key: string) => any; +export declare type GetHook = (value: any, key: string) => any; +export declare type AttributeToJSON = (value: any, key: string) => any; +export declare type AttributeParse = (value: any, key: string) => any; +export declare type ChangeAttrHandler = ((value: any, attr: string) => void) | string; +export declare class AnyType implements AttributeUpdatePipeline { + name: string; + static create: (options: AttributeOptions, name: string) => AnyType; + canBeUpdated(prev: any, next: any, options: TransactionOptions): any; + transform(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): any; + convert(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): any; + isChanged(a: any, b: any): boolean; + handleChange(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): void; + create(): any; + clone(value: any, record: AttributesContainer): any; + dispose(record: AttributesContainer, value: any): void; + validate(record: AttributesContainer, value: any, key: string): any; + toJSON(value: any, key: any, options?: object): any; + createPropertyDescriptor(): PropertyDescriptor | void; + value: any; + static defaultValue: any; + type: Function; + initialize(name: string, options: TransactionOptions): void; + options: AttributeOptions; + doInit(value: any, record: AttributesContainer, options: TransactionOptions): any; + doUpdate(value: any, record: AttributesContainer, options: TransactionOptions, nested?: RecordTransaction[]): boolean; + propagateChanges: boolean; + protected _log(level: LogLevel, code: string, text: string, value: any, record: AttributesContainer, logger: Logger): void; + defaultValue(): any; + constructor(name: string, a_options: AttributeOptions); + getHook: (value: any, key: string) => any; + get: (value: any, key: string) => any; +} diff --git a/lib/type-r/record/metatypes/any.js b/lib/type-r/record/metatypes/any.js new file mode 100644 index 0000000..947c7c1 --- /dev/null +++ b/lib/type-r/record/metatypes/any.js @@ -0,0 +1,136 @@ +import { tools } from '../../object-plus'; +import { setAttribute } from '../updates'; +var notEqual = tools.notEqual, assign = tools.assign; +var emptyOptions = {}; +var AnyType = (function () { + function AnyType(name, a_options) { + this.name = name; + this.getHook = null; + this.options = a_options; + var options = assign({ getHooks: [], transforms: [], changeHandlers: [] }, a_options); + options.getHooks = options.getHooks.slice(); + options.transforms = options.transforms.slice(); + options.changeHandlers = options.changeHandlers.slice(); + var value = options.value, type = options.type, parse = options.parse, toJSON = options.toJSON, changeEvents = options.changeEvents, validate = options.validate, getHooks = options.getHooks, transforms = options.transforms, changeHandlers = options.changeHandlers; + this.value = value; + this.type = type; + if (!options.hasCustomDefault && type) { + this.defaultValue = this.create; + } + else if (tools.isValidJSON(value)) { + this.defaultValue = new Function("return " + JSON.stringify(value) + ";"); + } + else { + this.defaultValue = this.defaultValue; + } + this.propagateChanges = changeEvents !== false; + this.toJSON = toJSON === void 0 ? this.toJSON : toJSON; + this.validate = validate || this.validate; + if (options.isRequired) { + this.validate = wrapIsRequired(this.validate); + } + transforms.unshift(this.convert); + if (this.get) + getHooks.unshift(this.get); + this.initialize.call(this, options); + if (getHooks.length) { + var getHook_1 = this.getHook = getHooks.reduce(chainGetHooks); + var validate_1 = this.validate; + this.validate = function (record, value, key) { + return validate_1.call(this, record, getHook_1.call(record, value, key), key); + }; + } + this.transform = transforms.length ? transforms.reduce(chainTransforms) : this.transform; + this.handleChange = changeHandlers.length ? changeHandlers.reduce(chainChangeHandlers) : this.handleChange; + var _a = this, doInit = _a.doInit, doUpdate = _a.doUpdate; + this.doInit = parse ? function (value, record, options) { + return doInit.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options); + } : doInit; + this.doUpdate = parse ? function (value, record, options, nested) { + return doUpdate.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options, nested); + } : doUpdate; + } + AnyType.prototype.canBeUpdated = function (prev, next, options) { }; + AnyType.prototype.transform = function (next, prev, model, options) { return next; }; + AnyType.prototype.convert = function (next, prev, model, options) { return next; }; + AnyType.prototype.isChanged = function (a, b) { + return notEqual(a, b); + }; + AnyType.prototype.handleChange = function (next, prev, model, options) { }; + AnyType.prototype.create = function () { return void 0; }; + AnyType.prototype.clone = function (value, record) { + return value; + }; + AnyType.prototype.dispose = function (record, value) { + this.handleChange(void 0, value, record, emptyOptions); + }; + AnyType.prototype.validate = function (record, value, key) { }; + AnyType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; + }; + AnyType.prototype.createPropertyDescriptor = function () { + var _a = this, name = _a.name, getHook = _a.getHook; + if (name !== 'id') { + return { + set: function (value) { + setAttribute(this, name, value); + }, + get: (getHook ? + function () { + return getHook.call(this, this.attributes[name], name); + } : + function () { return this.attributes[name]; }), + configurable: true + }; + } + }; + AnyType.prototype.initialize = function (name, options) { }; + AnyType.prototype.doInit = function (value, record, options) { + var v = value === void 0 ? this.defaultValue() : value, x = this.transform(v, void 0, record, options); + this.handleChange(x, void 0, record, options); + return x; + }; + AnyType.prototype.doUpdate = function (value, record, options, nested) { + var name = this.name, attributes = record.attributes, prev = attributes[name]; + var next = this.transform(value, prev, record, options); + attributes[name] = next; + if (this.isChanged(next, prev)) { + this.handleChange(next, prev, record, options); + return true; + } + return false; + }; + AnyType.prototype._log = function (level, code, text, value, record, logger) { + record._log(level, code, record.getClassName() + "." + this.name + " " + text, { + 'New value': value, + 'Prev. value': record.attributes[this.name] + }, logger); + }; + AnyType.prototype.defaultValue = function () { + return this.value; + }; + return AnyType; +}()); +export { AnyType }; +function chainGetHooks(prevHook, nextHook) { + return function (value, name) { + return nextHook.call(this, prevHook.call(this, value, name), name); + }; +} +function chainTransforms(prevTransform, nextTransform) { + return function (next, prev, record, options) { + return nextTransform.call(this, prevTransform.call(this, next, prev, record, options), prev, record, options); + }; +} +function chainChangeHandlers(prevHandler, nextHandler) { + return function (next, prev, record, options) { + prevHandler.call(this, next, prev, record, options); + nextHandler.call(this, next, prev, record, options); + }; +} +function wrapIsRequired(validate) { + return function (record, value, key) { + return value ? validate.call(this, record, value, key) : 'Required'; + }; +} +//# sourceMappingURL=any.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/any.js.map b/lib/type-r/record/metatypes/any.js.map new file mode 100644 index 0000000..c923f66 --- /dev/null +++ b/lib/type-r/record/metatypes/any.js.map @@ -0,0 +1 @@ +{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/any.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/basic.d.ts b/lib/type-r/record/metatypes/basic.d.ts new file mode 100644 index 0000000..8d0333e --- /dev/null +++ b/lib/type-r/record/metatypes/basic.d.ts @@ -0,0 +1,48 @@ +import { TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer } from '../updates'; +export declare class ImmutableClassType extends AnyType { + type: new (value?: any) => {}; + create(): {}; + convert(next: any): any; + toJSON(value: any, key?: string, options?: object): any; + clone(value: any): {}; + isChanged(a: any, b: any): boolean; +} +export declare class PrimitiveType extends AnyType { + type: NumberConstructor | StringConstructor | BooleanConstructor; + dispose(): void; + create(): string | number | boolean; + toJSON(value: any): any; + convert(next: any): any; + isChanged(a: any, b: any): boolean; + clone(value: any): any; + doInit(value: any, record: AttributesContainer, options: TransactionOptions): any; + doUpdate(value: any, record: any, options: any, nested: any): boolean; + initialize(): void; +} +export declare class NumericType extends PrimitiveType { + type: NumberConstructor; + create(): number; + convert(next: any, prev?: any, record?: any, options?: any): any; + validate(model: any, value: any, name: any): string; +} +export declare class ArrayType extends AnyType { + toJSON(value: any): any; + dispose(): void; + create(): any[]; + convert(next: any, prev: any, record: any, options: any): any; + clone(value: any): any; +} +export declare class ObjectType extends AnyType { + create(): {}; + convert(next: any, prev: any, record: any, options: any): any; +} +export declare function doNothing(): void; +export declare class FunctionType extends AnyType { + toJSON(value: any): any; + create(): typeof doNothing; + dispose(): void; + convert(next: any, prev: any, record: any, options: any): any; + clone(value: any): any; +} diff --git a/lib/type-r/record/metatypes/basic.js b/lib/type-r/record/metatypes/basic.js new file mode 100644 index 0000000..d55c6b9 --- /dev/null +++ b/lib/type-r/record/metatypes/basic.js @@ -0,0 +1,129 @@ +import * as tslib_1 from "tslib"; +import { AnyType } from './any'; +var ImmutableClassType = (function (_super) { + tslib_1.__extends(ImmutableClassType, _super); + function ImmutableClassType() { + return _super !== null && _super.apply(this, arguments) || this; + } + ImmutableClassType.prototype.create = function () { + return new this.type(); + }; + ImmutableClassType.prototype.convert = function (next) { + return next == null || next instanceof this.type ? next : new this.type(next); + }; + ImmutableClassType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; + }; + ImmutableClassType.prototype.clone = function (value) { + return new this.type(this.toJSON(value)); + }; + ImmutableClassType.prototype.isChanged = function (a, b) { + return a !== b; + }; + return ImmutableClassType; +}(AnyType)); +export { ImmutableClassType }; +var PrimitiveType = (function (_super) { + tslib_1.__extends(PrimitiveType, _super); + function PrimitiveType() { + return _super !== null && _super.apply(this, arguments) || this; + } + PrimitiveType.prototype.dispose = function () { }; + PrimitiveType.prototype.create = function () { return this.type(); }; + PrimitiveType.prototype.toJSON = function (value) { return value; }; + PrimitiveType.prototype.convert = function (next) { return next == null ? next : this.type(next); }; + PrimitiveType.prototype.isChanged = function (a, b) { return a !== b; }; + PrimitiveType.prototype.clone = function (value) { return value; }; + PrimitiveType.prototype.doInit = function (value, record, options) { + return this.transform(value === void 0 ? this.value : value, void 0, record, options); + }; + PrimitiveType.prototype.doUpdate = function (value, record, options, nested) { + var name = this.name, attributes = record.attributes, prev = attributes[name]; + return prev !== (attributes[name] = this.transform(value, prev, record, options)); + }; + PrimitiveType.prototype.initialize = function () { + if (!this.options.hasCustomDefault) { + this.value = this.type(); + } + }; + return PrimitiveType; +}(AnyType)); +export { PrimitiveType }; +var NumericType = (function (_super) { + tslib_1.__extends(NumericType, _super); + function NumericType() { + return _super !== null && _super.apply(this, arguments) || this; + } + NumericType.prototype.create = function () { + return 0; + }; + NumericType.prototype.convert = function (next, prev, record, options) { + var num = next == null ? next : this.type(next); + if (num !== num) { + this._log('error', 'Type-R:InvalidNumber', 'Number attribute is assigned with an invalid number', next, record, options.logger); + } + return num; + }; + NumericType.prototype.validate = function (model, value, name) { + if (value != null && !isFinite(value)) { + return name + ' is not valid number'; + } + }; + return NumericType; +}(PrimitiveType)); +export { NumericType }; +var ArrayType = (function (_super) { + tslib_1.__extends(ArrayType, _super); + function ArrayType() { + return _super !== null && _super.apply(this, arguments) || this; + } + ArrayType.prototype.toJSON = function (value) { return value; }; + ArrayType.prototype.dispose = function () { }; + ArrayType.prototype.create = function () { return []; }; + ArrayType.prototype.convert = function (next, prev, record, options) { + if (next == null || Array.isArray(next)) + return next; + this._log('error', 'Type-R:InvalidArray', 'Array attribute assigned with non-array value', next, record, options.logger); + return []; + }; + ArrayType.prototype.clone = function (value) { + return value && value.slice(); + }; + return ArrayType; +}(AnyType)); +export { ArrayType }; +var ObjectType = (function (_super) { + tslib_1.__extends(ObjectType, _super); + function ObjectType() { + return _super !== null && _super.apply(this, arguments) || this; + } + ObjectType.prototype.create = function () { return {}; }; + ObjectType.prototype.convert = function (next, prev, record, options) { + if (next == null || typeof next === 'object') + return next; + this._log('error', 'Type-R:InvalidObject', 'Object attribute is assigned with non-object value', next, record, options.logger); + return {}; + }; + return ObjectType; +}(AnyType)); +export { ObjectType }; +export function doNothing() { } +var FunctionType = (function (_super) { + tslib_1.__extends(FunctionType, _super); + function FunctionType() { + return _super !== null && _super.apply(this, arguments) || this; + } + FunctionType.prototype.toJSON = function (value) { return void 0; }; + FunctionType.prototype.create = function () { return doNothing; }; + FunctionType.prototype.dispose = function () { }; + FunctionType.prototype.convert = function (next, prev, record, options) { + if (next == null || typeof next === 'function') + return next; + this._log('error', 'Type-R:InvalidFunction', 'Function attribute assigned with non-function value', next, record, options.logger); + return doNothing; + }; + FunctionType.prototype.clone = function (value) { return value; }; + return FunctionType; +}(AnyType)); +export { FunctionType }; +//# sourceMappingURL=basic.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/basic.js.map b/lib/type-r/record/metatypes/basic.js.map new file mode 100644 index 0000000..15d2caa --- /dev/null +++ b/lib/type-r/record/metatypes/basic.js.map @@ -0,0 +1 @@ +{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/basic.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/date.d.ts b/lib/type-r/record/metatypes/date.d.ts new file mode 100644 index 0000000..7b63c40 --- /dev/null +++ b/lib/type-r/record/metatypes/date.d.ts @@ -0,0 +1,14 @@ +import { TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer } from '../updates'; +export declare class DateType extends AnyType { + create(): Date; + convert(next: any, a: any, record: any, options: any): any; + validate(model: any, value: any, name: any): string; + toJSON(value: any): any; + isChanged(a: any, b: any): boolean; + doInit(value: any, record: AttributesContainer, options: TransactionOptions): any; + doUpdate(value: any, record: any, options: any, nested: any): boolean; + clone(value: any): Date; + dispose(): void; +} diff --git a/lib/type-r/record/metatypes/date.js b/lib/type-r/record/metatypes/date.js new file mode 100644 index 0000000..6cd643a --- /dev/null +++ b/lib/type-r/record/metatypes/date.js @@ -0,0 +1,76 @@ +import * as tslib_1 from "tslib"; +import { AnyType } from './any'; +var DateType = (function (_super) { + tslib_1.__extends(DateType, _super); + function DateType() { + return _super !== null && _super.apply(this, arguments) || this; + } + DateType.prototype.create = function () { + return new Date(); + }; + DateType.prototype.convert = function (next, a, record, options) { + if (next == null || next instanceof Date) + return next; + var date = new Date(next), timestamp = date.getTime(); + if (timestamp !== timestamp) { + this._log('error', 'Type-R:InvalidDate', 'Date attribute assigned with invalid date', next, record, options.logger); + } + return date; + }; + DateType.prototype.validate = function (model, value, name) { + if (value != null) { + var timestamp = value.getTime(); + if (timestamp !== timestamp) + return name + ' is Invalid Date'; + } + }; + DateType.prototype.toJSON = function (value) { return value && value.toISOString(); }; + DateType.prototype.isChanged = function (a, b) { return (a && a.getTime()) !== (b && b.getTime()); }; + DateType.prototype.doInit = function (value, record, options) { + return this.transform(value === void 0 ? this.defaultValue() : value, void 0, record, options); + }; + DateType.prototype.doUpdate = function (value, record, options, nested) { + var name = this.name, attributes = record.attributes, prev = attributes[name]; + return this.isChanged(prev, attributes[name] = this.transform(value, prev, record, options)); + }; + DateType.prototype.clone = function (value) { return value && new Date(value.getTime()); }; + DateType.prototype.dispose = function () { }; + return DateType; +}(AnyType)); +export { DateType }; +function supportsDate(date) { + return !isNaN((new Date(date)).getTime()); +} +if (!supportsDate('2011-11-29T15:52:30.5') || + !supportsDate('2011-11-29T15:52:30.52') || + !supportsDate('2011-11-29T15:52:18.867') || + !supportsDate('2011-11-29T15:52:18.867Z') || + !supportsDate('2011-11-29T15:52:18.867-03:30')) { + DateType.prototype.convert = function (value) { + return value == null || value instanceof Date ? value : new Date(safeParseDate(value)); + }; +} +var numericKeys = [1, 4, 5, 6, 7, 10, 11], isoDatePattern = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/; +function safeParseDate(date) { + var timestamp, struct, minutesOffset = 0; + if ((struct = isoDatePattern.exec(date))) { + for (var i = 0, k; (k = numericKeys[i]); ++i) { + struct[k] = +struct[k] || 0; + } + struct[2] = (+struct[2] || 1) - 1; + struct[3] = +struct[3] || 1; + if (struct[8] !== 'Z' && struct[9] !== undefined) { + minutesOffset = struct[10] * 60 + struct[11]; + if (struct[9] === '+') { + minutesOffset = 0 - minutesOffset; + } + } + timestamp = + Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]); + } + else { + timestamp = Date.parse(date); + } + return timestamp; +} +//# sourceMappingURL=date.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/date.js.map b/lib/type-r/record/metatypes/date.js.map new file mode 100644 index 0000000..f46c066 --- /dev/null +++ b/lib/type-r/record/metatypes/date.js.map @@ -0,0 +1 @@ +{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/date.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKhC;IAA8B,oCAAO;IAArC;;IA6CA,CAAC;IA5CG,yBAAM,GAAN;QACI,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,0BAAO,GAAP,UAAS,IAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO;QACnC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,YAAY,IAAI;YAAG,OAAO,IAAI,CAAC;QAEvD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAE,IAAI,CAAE,EACvB,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjC,IAAI,SAAS,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,IAAI,CAAE,OAAO,EAAE,oBAAoB,EAAE,2CAA2C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAE,CAAC;SACzH;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,2BAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI;QACxB,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,SAAS;gBAAG,OAAO,IAAI,GAAG,kBAAkB,CAAC;SAClE;IACL,CAAC;IAED,yBAAM,GAAN,UAAQ,KAAK,IAAK,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAExD,4BAAS,GAAT,UAAW,CAAC,EAAE,CAAC,IAAK,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAE,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAE,CAAC,CAAC,CAAC;IAE3E,yBAAM,GAAN,UAAQ,KAAK,EAAE,MAA4B,EAAE,OAA4B;QAErE,OAAO,IAAI,CAAC,SAAS,CAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;IACrG,CAAC;IAED,2BAAQ,GAAR,UAAU,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;QAC1B,IAAA,gBAAI,EACJ,8BAAU,EACZ,IAAI,GAAG,UAAU,CAAE,IAAI,CAAE,CAAC;QAGlC,OAAO,IAAI,CAAC,SAAS,CAAE,IAAI,EAAG,UAAU,CAAE,IAAI,CAAE,GAAG,IAAI,CAAC,SAAS,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAE,CAAC;IACxG,CAAC;IAED,wBAAK,GAAL,UAAO,KAAK,IAAK,OAAO,KAAK,IAAI,IAAI,IAAI,CAAE,KAAK,CAAC,OAAO,EAAE,CAAE,CAAC,CAAC,CAAC;IAC/D,0BAAO,GAAP,cAAU,CAAC;IACf,eAAC;AAAD,CAAC,AA7CD,CAA8B,OAAO,GA6CpC;;AAGD,SAAS,YAAY,CAAE,IAAI;IACvB,OAAO,CAAC,KAAK,CAAE,CAAE,IAAI,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC,OAAO,EAAE,CAAE,CAAC;AACpD,CAAC;AAED,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;IACtC,CAAC,YAAY,CAAC,wBAAwB,CAAC;IACvC,CAAC,YAAY,CAAC,yBAAyB,CAAC;IACxC,CAAC,YAAY,CAAC,0BAA0B,CAAC;IACzC,CAAC,YAAY,CAAC,+BAA+B,CAAC,EAAE;IAEhD,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK;QACxC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAE,aAAa,CAAE,KAAK,CAAE,CAAE,CAAC;IAC/F,CAAC,CAAA;CACJ;AAED,IAAM,WAAW,GAAM,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAE,EAC1C,cAAc,GAAG,oIAAoI,CAAC;AAE5J,SAAS,aAAa,CAAE,IAAa;IACjC,IAAI,SAAS,EAAE,MAAc,EAAE,aAAa,GAAG,CAAC,CAAC;IAEjD,IAAI,CAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,EAAG;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC,GAAG,WAAW,CAAE,CAAC,CAAE,CAAE,EAAE,EAAE,CAAC,EAAG;YAC/C,MAAM,CAAE,CAAC,CAAE,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,IAAI,CAAC,CAAC;SACnC;QAGD,MAAM,CAAE,CAAC,CAAE,GAAG,CAAC,CAAC,MAAM,CAAE,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAE,CAAC,CAAE,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,MAAM,CAAE,CAAC,CAAE,KAAK,GAAG,IAAI,MAAM,CAAE,CAAC,CAAE,KAAK,SAAS,EAAG;YACnD,aAAa,GAAG,MAAM,CAAE,EAAE,CAAE,GAAG,EAAE,GAAG,MAAM,CAAE,EAAE,CAAE,CAAC;YAEjD,IAAI,MAAM,CAAE,CAAC,CAAE,KAAK,GAAG,EAAG;gBACtB,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC;aACrC;SACJ;QAED,SAAS;YACL,IAAI,CAAC,GAAG,CAAE,MAAM,CAAE,CAAC,CAAE,EAAE,MAAM,CAAE,CAAC,CAAE,EAAE,MAAM,CAAE,CAAC,CAAE,EAAE,MAAM,CAAE,CAAC,CAAE,EAAE,MAAM,CAAE,CAAC,CAAE,GAAG,aAAa,EAAE,MAAM,CAAE,CAAC,CAAE,EAC9F,MAAM,CAAE,CAAC,CAAE,CAAE,CAAC;KAC7B;SACI;QACD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC;KAClC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/index.d.ts b/lib/type-r/record/metatypes/index.d.ts new file mode 100644 index 0000000..1cc631e --- /dev/null +++ b/lib/type-r/record/metatypes/index.d.ts @@ -0,0 +1,6 @@ +export * from './any'; +export * from './basic'; +export * from './date'; +export * from './owned'; +export * from './shared'; +export declare function getMetatype(Ctor: Function): any; diff --git a/lib/type-r/record/metatypes/index.js b/lib/type-r/record/metatypes/index.js new file mode 100644 index 0000000..884bbed --- /dev/null +++ b/lib/type-r/record/metatypes/index.js @@ -0,0 +1,21 @@ +import { PrimitiveType, NumericType, ObjectType, ImmutableClassType, FunctionType, ArrayType } from './basic'; +import { DateType } from './date'; +import { AnyType } from './any'; +export * from './any'; +export * from './basic'; +export * from './date'; +export * from './owned'; +export * from './shared'; +var builtins = [String, Number, Boolean, Date, Object, Array, Function], metatypes = [PrimitiveType, NumericType, PrimitiveType, DateType, ObjectType, ArrayType, FunctionType]; +export function getMetatype(Ctor) { + return Ctor._metatype || resolveBuiltins(Ctor); +} +AnyType.create = function (options, name) { + var type = options.type, AttributeCtor = options._metatype || (type ? getMetatype(type) : AnyType); + return new AttributeCtor(name, options); +}; +function resolveBuiltins(Ctor) { + var idx = builtins.indexOf(Ctor); + return idx < 0 ? ImmutableClassType : metatypes[idx]; +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/index.js.map b/lib/type-r/record/metatypes/index.js.map new file mode 100644 index 0000000..0b65039 --- /dev/null +++ b/lib/type-r/record/metatypes/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,EAAoB,MAAM,OAAO,CAAC;AAElD,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAQzB,IAAM,QAAQ,GAAgB,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAE,EAClF,SAAS,GAAG,CAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAE,CAAC;AAE/G,MAAM,UAAU,WAAW,CAAE,IAAe;IACxC,OAAS,IAAa,CAAC,SAAS,IAAI,eAAe,CAAE,IAAI,CAAE,CAAC;AAChE,CAAC;AAED,OAAO,CAAC,MAAM,GAAG,UAAE,OAA0B,EAAE,IAAa;IACxD,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,CAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA,CAAC,CAAC,OAAO,CAAE,CAAC;IAEnF,OAAO,IAAI,aAAa,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;AAC9C,CAAC,CAAA;AAED,SAAS,eAAe,CAAE,IAAe;IACrC,IAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAE,IAAI,CAAE,CAAC;IACrC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAE,GAAG,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/owned.d.ts b/lib/type-r/record/metatypes/owned.d.ts new file mode 100644 index 0000000..9fb4154 --- /dev/null +++ b/lib/type-r/record/metatypes/owned.d.ts @@ -0,0 +1,18 @@ +import { Transactional, TransactionOptions } from '../../transactions'; +import { ValidationError } from '../../validation'; +import { AnyType } from './any'; +import { AttributesContainer, ConstructorOptions } from '../updates'; +export declare class AggregatedType extends AnyType { + type: typeof Transactional; + clone(value: Transactional): Transactional; + toJSON(x: any, key: string, options: object): any; + doInit(value: any, record: AttributesContainer, options: ConstructorOptions): any; + doUpdate(value: any, record: any, options: any, nested: any[]): boolean; + canBeUpdated(prev: Transactional, next: any, options: TransactionOptions): any; + convert(next: any, prev: any, record: AttributesContainer, options: TransactionOptions): Transactional; + dispose(record: AttributesContainer, value: Transactional): void; + validate(record: AttributesContainer, value: Transactional): ValidationError; + create(): Transactional; + initialize(options: any): void; + _handleChange(next: Transactional, prev: Transactional, record: AttributesContainer, options: TransactionOptions): void; +} diff --git a/lib/type-r/record/metatypes/owned.js b/lib/type-r/record/metatypes/owned.js new file mode 100644 index 0000000..1457eb6 --- /dev/null +++ b/lib/type-r/record/metatypes/owned.js @@ -0,0 +1,96 @@ +import * as tslib_1 from "tslib"; +import { ItemsBehavior, transactionApi } from '../../transactions'; +import { AnyType } from './any'; +var free = transactionApi.free, aquire = transactionApi.aquire; +var AggregatedType = (function (_super) { + tslib_1.__extends(AggregatedType, _super); + function AggregatedType() { + return _super !== null && _super.apply(this, arguments) || this; + } + AggregatedType.prototype.clone = function (value) { + return value ? value.clone() : value; + }; + AggregatedType.prototype.toJSON = function (x, key, options) { return x && x.toJSON(options); }; + AggregatedType.prototype.doInit = function (value, record, options) { + var v = options.clone ? this.clone(value) : (value === void 0 ? this.defaultValue() : value); + var x = this.transform(v, void 0, record, options); + this.handleChange(x, void 0, record, options); + return x; + }; + AggregatedType.prototype.doUpdate = function (value, record, options, nested) { + var key = this.name, attributes = record.attributes; + var prev = attributes[key]; + var update; + if (update = this.canBeUpdated(prev, value, options)) { + var nestedTransaction = prev._createTransaction(update, options); + if (nestedTransaction) { + if (nested) { + nested.push(nestedTransaction); + } + else { + nestedTransaction.commit(record); + } + if (this.propagateChanges) + return true; + } + return false; + } + var next = this.transform(value, prev, record, options); + attributes[key] = next; + if (this.isChanged(next, prev)) { + this.handleChange(next, prev, record, options); + return true; + } + return false; + }; + AggregatedType.prototype.canBeUpdated = function (prev, next, options) { + if (prev && next != null) { + if (next instanceof this.type) { + if (options.merge) + return next.__inner_state__; + } + else { + return next; + } + } + }; + AggregatedType.prototype.convert = function (next, prev, record, options) { + if (next == null) + return next; + if (next instanceof this.type) { + if (next._shared && !(next._shared & ItemsBehavior.persistent)) { + this._log('error', 'Type-R:InvalidCollection', 'aggregated collection attribute is assigned with shared collection type', next, record, options.logger); + } + return options.merge ? next.clone() : next; + } + return this.type.create(next, options); + }; + AggregatedType.prototype.dispose = function (record, value) { + if (value) { + this.handleChange(void 0, value, record, {}); + } + }; + AggregatedType.prototype.validate = function (record, value) { + var error = value && value.validationError; + if (error) + return error; + }; + AggregatedType.prototype.create = function () { + return this.type.create(); + }; + AggregatedType.prototype.initialize = function (options) { + options.changeHandlers.unshift(this._handleChange); + }; + AggregatedType.prototype._handleChange = function (next, prev, record, options) { + if (prev) { + free(record, prev); + options.unset || prev.dispose(); + } + if (next && !aquire(record, next, this.name)) { + this._log('error', 'Type-R:InvalidOwner', 'aggregated attribute assigned with an object already having an owner', next, record, options.logger); + } + }; + return AggregatedType; +}(AnyType)); +export { AggregatedType }; +//# sourceMappingURL=owned.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/owned.js.map b/lib/type-r/record/metatypes/owned.js.map new file mode 100644 index 0000000..c05a1a7 --- /dev/null +++ b/lib/type-r/record/metatypes/owned.js.map @@ -0,0 +1 @@ +{"version":3,"file":"owned.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/owned.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/metatypes/shared.d.ts b/lib/type-r/record/metatypes/shared.d.ts new file mode 100644 index 0000000..1d484e1 --- /dev/null +++ b/lib/type-r/record/metatypes/shared.d.ts @@ -0,0 +1,19 @@ +import { Transactional, TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer, ConstructorOptions } from '../updates'; +export declare class SharedType extends AnyType { + type: typeof Transactional; + doInit(value: any, record: AttributesContainer, options: ConstructorOptions): any; + doUpdate(value: any, record: any, options: any, nested: any[]): boolean; + clone(value: Transactional, record: AttributesContainer): Transactional; + toJSON(): void; + canBeUpdated(prev: Transactional, next: any, options: TransactionOptions): any; + convert(next: any, prev: any, record: AttributesContainer, options: TransactionOptions): Transactional; + validate(model: any, value: any, name: any): void; + create(): Transactional; + _handleChange(next: Transactional, prev: Transactional, record: AttributesContainer, options: any): void; + dispose(record: AttributesContainer, value: Transactional): void; + _onChange: (child: Transactional, options: TransactionOptions, initiator: Transactional) => void; + initialize(options: any): void; +} +export declare function shared(T: typeof Transactional): any; diff --git a/lib/type-r/record/metatypes/shared.js b/lib/type-r/record/metatypes/shared.js new file mode 100644 index 0000000..f7dc898 --- /dev/null +++ b/lib/type-r/record/metatypes/shared.js @@ -0,0 +1,103 @@ +import * as tslib_1 from "tslib"; +import { eventsApi } from '../../object-plus'; +import { ItemsBehavior, transactionApi } from '../../transactions'; +import { AnyType } from './any'; +var on = eventsApi.on, off = eventsApi.off, free = transactionApi.free, aquire = transactionApi.aquire; +var shareAndListen = ItemsBehavior.listen | ItemsBehavior.share; +var SharedType = (function (_super) { + tslib_1.__extends(SharedType, _super); + function SharedType() { + return _super !== null && _super.apply(this, arguments) || this; + } + SharedType.prototype.doInit = function (value, record, options) { + var v = options.clone ? this.clone(value, record) : (value === void 0 ? this.defaultValue() : value); + var x = this.transform(v, void 0, record, options); + this.handleChange(x, void 0, record, options); + return x; + }; + SharedType.prototype.doUpdate = function (value, record, options, nested) { + var key = this.name, attributes = record.attributes; + var prev = attributes[key]; + var update; + if (update = this.canBeUpdated(prev, value, options)) { + var nestedTransaction = prev._createTransaction(update, options); + if (nestedTransaction) { + if (nested) { + nested.push(nestedTransaction); + } + else { + nestedTransaction.commit(record); + } + if (this.propagateChanges) + return true; + } + return false; + } + var next = this.transform(value, prev, record, options); + attributes[key] = next; + if (this.isChanged(next, prev)) { + this.handleChange(next, prev, record, options); + return true; + } + return false; + }; + SharedType.prototype.clone = function (value, record) { + if (!value || value._owner !== record) + return value; + var clone = value.clone(); + aquire(record, clone, this.name); + return clone; + }; + SharedType.prototype.toJSON = function () { }; + SharedType.prototype.canBeUpdated = function (prev, next, options) { + if (prev && next != null && !(next instanceof this.type)) { + return next; + } + }; + SharedType.prototype.convert = function (next, prev, record, options) { + if (next == null || next instanceof this.type) + return next; + var implicitObject = new this.type(next, options, shareAndListen); + aquire(record, implicitObject, this.name); + return implicitObject; + }; + SharedType.prototype.validate = function (model, value, name) { }; + SharedType.prototype.create = function () { + return null; + }; + SharedType.prototype._handleChange = function (next, prev, record, options) { + if (prev) { + if (prev._owner === record) { + free(record, prev); + options.unset || prev.dispose(); + } + else { + off(prev, prev._changeEventName, this._onChange, record); + } + } + if (next) { + if (next._owner !== record) { + on(next, next._changeEventName, this._onChange, record); + } + } + }; + SharedType.prototype.dispose = function (record, value) { + if (value) { + this.handleChange(void 0, value, record, {}); + } + }; + SharedType.prototype.initialize = function (options) { + var attribute = this; + this._onChange = this.propagateChanges ? function (child, options, initiator) { + this === initiator || this.forceAttributeChange(attribute.name, options); + } : ignore; + options.changeHandlers.unshift(this._handleChange); + }; + return SharedType; +}(AnyType)); +export { SharedType }; +function ignore() { } +export function shared(T) { + return T.shared; +} +//# sourceMappingURL=shared.js.map \ No newline at end of file diff --git a/lib/type-r/record/metatypes/shared.js.map b/lib/type-r/record/metatypes/shared.js.map new file mode 100644 index 0000000..4d66219 --- /dev/null +++ b/lib/type-r/record/metatypes/shared.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/type-r/record/metatypes/shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/mixin.d.ts b/lib/type-r/record/mixin.d.ts new file mode 100644 index 0000000..811c512 --- /dev/null +++ b/lib/type-r/record/mixin.d.ts @@ -0,0 +1,18 @@ +import { IOEndpoint } from '../io-tools'; +import { eventsApi } from '../object-plus'; +import { AnyType } from './metatypes'; +import { ConstructorsMixin } from './updates'; +export interface RecordAttributesMixin extends ConstructorsMixin { + _attributes: AttributeDescriptors; + _attributesArray: AnyType[]; + properties: PropertyDescriptorMap; + _localEvents?: eventsApi.EventMap; + _endpoints: { + [name: string]: IOEndpoint; + }; +} +export interface AttributeDescriptors { + [name: string]: AnyType; +} +export declare function createAttribute(spec: any, name: string): AnyType; +export declare function createAttributesMixin(attributesDefinition: object, baseClassAttributes: AttributeDescriptors): RecordAttributesMixin; diff --git a/lib/type-r/record/mixin.js b/lib/type-r/record/mixin.js new file mode 100644 index 0000000..9c17a72 --- /dev/null +++ b/lib/type-r/record/mixin.js @@ -0,0 +1,43 @@ +import * as tslib_1 from "tslib"; +import { eventsApi, tools as _ } from '../object-plus'; +import { CompiledReference } from '../traversable'; +import { ChainableAttributeSpec } from './attrDef'; +import { AnyType } from './metatypes'; +import { constructorsMixin } from './updates'; +export function createAttribute(spec, name) { + return AnyType.create(ChainableAttributeSpec.from(spec).options, name); +} +export function createAttributesMixin(attributesDefinition, baseClassAttributes) { + var myAttributes = _.transform({}, attributesDefinition, createAttribute), allAttributes = _.defaults({}, myAttributes, baseClassAttributes); + var ConstructorsMixin = constructorsMixin(allAttributes); + return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }) }, localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) }); +} +function localEventsMixin(attrSpecs) { + var _localEvents; + for (var key in attrSpecs) { + var attribute = attrSpecs[key], _onChange = attribute.options._onChange; + if (_onChange) { + _localEvents || (_localEvents = new eventsApi.EventMap()); + _localEvents.addEvent('change:' + key, typeof _onChange === 'string' ? + createWatcherFromRef(_onChange, key) : + wrapWatcher(_onChange, key)); + } + } + return _localEvents ? { _localEvents: _localEvents } : {}; +} +function wrapWatcher(watcher, key) { + return function (record, value) { + watcher.call(record, value, key); + }; +} +function createWatcherFromRef(ref, key) { + var _a = new CompiledReference(ref, true), local = _a.local, resolve = _a.resolve, tail = _a.tail; + return local ? + function (record, value) { + record[tail](value, key); + } : + function (record, value) { + resolve(record)[tail](value, key); + }; +} +//# sourceMappingURL=mixin.js.map \ No newline at end of file diff --git a/lib/type-r/record/mixin.js.map b/lib/type-r/record/mixin.js.map new file mode 100644 index 0000000..a9b5c8d --- /dev/null +++ b/lib/type-r/record/mixin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/type-r/record/mixin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/record.d.ts b/lib/type-r/record/record.d.ts index 5354d0b..f59ea42 100644 --- a/lib/type-r/record/record.d.ts +++ b/lib/type-r/record/record.d.ts @@ -24,8 +24,8 @@ export declare class Record extends Transactional implements IORecord, Attribute _endpoints: { [name: string]: IOEndpoint; }; - save(options?: object): IOPromise; - destroy(options?: object): IOPromise; + save(options?: object): IOPromise; + destroy(options?: object): IOPromise; _previousAttributes: {}; previousAttributes(): AttributesValues; attributes: AttributesValues; @@ -52,8 +52,6 @@ export declare class Record extends Transactional implements IORecord, Attribute each(iteratee: (value?: any, key?: string) => void, context?: any): void; keys(): string[]; values(): any[]; - _toJSON(): {}; - _parse(data: any): any; defaults(values?: {}): {}; constructor(a_values?: {}, a_options?: ConstructorOptions); initialize(values?: any, options?: any): void; @@ -61,8 +59,9 @@ export declare class Record extends Transactional implements IORecord, Attribute deepClone(): this; _validateNested(errors: ChildrenErrors): number; get(key: string): any; - toJSON(): Object; + toJSON(options?: object): any; parse(data: any, options?: TransactionOptions): any; + _parse(data: any): any; deepSet(name: string, value: any, options?: any): this; readonly collection: any; dispose(): void; diff --git a/lib/type-r/record/record.js b/lib/type-r/record/record.js index ecbfad9..2a8ee3a 100644 --- a/lib/type-r/record/record.js +++ b/lib/type-r/record/record.js @@ -1,9 +1,10 @@ import * as tslib_1 from "tslib"; -import { tools, definitions, mixinRules, define } from '../object-plus'; +import { define, definitions, isProduction, logger, mixinRules, tools } from '../object-plus'; import { Transactional } from '../transactions'; -import { AnyType, AggregatedType, setAttribute, UpdateRecordMixin } from './attributes'; +import { AggregatedType, AnyType } from './metatypes'; import { IORecordMixin } from './io-mixin'; -var assign = tools.assign, isEmpty = tools.isEmpty, log = tools.log; +import { setAttribute, shouldBeAnObject, unknownAttrsWarning, UpdateRecordMixin } from './updates'; +var assign = tools.assign, isEmpty = tools.isEmpty; var _cidCounter = 0; var Record = (function (_super) { tslib_1.__extends(Record, _super); @@ -11,8 +12,7 @@ var Record = (function (_super) { var _this = _super.call(this, _cidCounter++) || this; _this.attributes = {}; var options = a_options || {}, values = (options.parse ? _this.parse(a_values, options) : a_values) || {}; - if (log.level > 1) - typeCheck(_this, values); + isProduction || typeCheck(_this, values, options); _this._previousAttributes = _this.attributes = new _this.Attributes(_this, values, options); _this.initialize(a_values, a_options); if (_this._localEvents) @@ -38,9 +38,9 @@ var Record = (function (_super) { if (!changed) { var prev = this._previousAttributes; changed = {}; - var _a = this, _attributes = _a._attributes, attributes = _a.attributes; - for (var _i = 0, _b = this._attributesArray; _i < _b.length; _i++) { - var attr = _b[_i]; + var attributes = this.attributes; + for (var _i = 0, _a = this._attributesArray; _i < _a.length; _i++) { + var attr = _a[_i]; var key = attr.name, value = attributes[key]; if (attr.isChanged(value, prev[key])) { changed[key] = value; @@ -87,16 +87,16 @@ var Record = (function (_super) { return this[key] != void 0; }; Record.prototype.unset = function (key, options) { + var _a; var value = this[key]; this.set((_a = {}, _a[key] = void 0, _a), tslib_1.__assign({ unset: true }, options)); return value; - var _a; }; Record.prototype.clear = function (options) { var _this = this; var nullify = options && options.nullify; this.transaction(function () { - _this.forEachAttr(_this.attributes, function (value, key) { return _this[key] = nullify ? null : void 0; }); + _this.forEach(function (value, key) { return _this[key] = nullify ? null : void 0; }); }, options); return this; }; @@ -110,43 +110,6 @@ var Record = (function (_super) { enumerable: true, configurable: true }); - Record.prototype.forEachAttr = function (attrs, iteratee) { - var _attributes = this._attributes; - var unknown; - for (var name_1 in attrs) { - var spec = _attributes[name_1]; - if (spec) { - iteratee(attrs[name_1], name_1, spec); - } - else { - unknown || (unknown = []); - unknown.push("'" + name_1 + "'"); - } - } - if (unknown) { - this._log('warn', "attributes " + unknown.join(', ') + " are not defined", { - attributes: attrs - }); - } - }; - Record.prototype.each = function (iteratee, context) { - var fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee, attributes = this.attributes; - for (var key in this.attributes) { - var value = attributes[key]; - if (value !== void 0) - fun(value, key); - } - }; - Record.prototype.keys = function () { - var keys = []; - this.each(function (value, key) { return value === void 0 || keys.push(key); }); - return keys; - }; - Record.prototype.values = function () { - return this.map(function (value) { return value; }); - }; - Record.prototype._toJSON = function () { return {}; }; - Record.prototype._parse = function (data) { return data; }; Record.prototype.defaults = function (values) { if (values === void 0) { values = {}; } var defaults = {}, _attributesArray = this._attributesArray; @@ -165,42 +128,49 @@ var Record = (function (_super) { copy._defaultStore = this.getStore(); return copy; }; - Record.prototype.deepClone = function () { return this.clone(); }; - ; Record.prototype._validateNested = function (errors) { - var _this = this; var length = 0; - this.forEachAttr(this.attributes, function (value, name, attribute) { - var error = attribute.validate(_this, value, name); + var attributes = this.attributes; + for (var _i = 0, _a = this._attributesArray; _i < _a.length; _i++) { + var attribute = _a[_i]; + var name_1 = attribute.name, error = attribute.validate(this, attributes[name_1], name_1); if (error) { - errors[name] = error; + errors[name_1] = error; length++; } - }); + } return length; }; Record.prototype.get = function (key) { return this[key]; }; - Record.prototype.toJSON = function () { - var _this = this; - var json = {}; - this.forEachAttr(this.attributes, function (value, key, _a) { - var toJSON = _a.toJSON; + Record.prototype.set = function (values, options) { + if (values) { + var transaction = this._createTransaction(values, options); + transaction && transaction.commit(); + } + return this; + }; + Record.prototype.toJSON = function (options) { + var json = {}, attributes = this.attributes; + for (var _i = 0, _a = this._attributesArray; _i < _a.length; _i++) { + var attribute = _a[_i]; + var name_2 = attribute.name, value = attributes[name_2]; if (value !== void 0) { - var asJson = toJSON.call(_this, value, key); + var asJson = attribute.toJSON.call(this, value, name_2, options); if (asJson !== void 0) - json[key] = asJson; + json[name_2] = asJson; } - }); + } return json; }; Record.prototype.parse = function (data, options) { - return this._parse(data); + return data; }; Record.prototype.deepSet = function (name, value, options) { var _this = this; this.transaction(function () { + var _a; var path = name.split('.'), l = path.length - 1, attr = path[l]; var model = _this; for (var i = 0; i < l; i++) { @@ -226,7 +196,6 @@ var Record = (function (_super) { else { model[attr] = value; } - var _a; }); return this; }; @@ -238,21 +207,43 @@ var Record = (function (_super) { configurable: true }); Record.prototype.dispose = function () { - var _this = this; if (this._disposed) return; - this.forEachAttr(this.attributes, function (value, key, attribute) { - attribute.dispose(_this, value); - }); + var attributes = this.attributes; + for (var _i = 0, _a = this._attributesArray; _i < _a.length; _i++) { + var attr = _a[_i]; + attr.dispose(this, attributes[attr.name]); + } _super.prototype.dispose.call(this); }; - Record.prototype._log = function (level, text, props) { - tools.log(level, '[Record] ' + text, tslib_1.__assign({ 'Record': this, 'Attributes definition:': this._attributes }, props)); + Record.prototype._log = function (level, topic, text, props, a_logger) { + (a_logger || logger).trigger(level, topic, text, tslib_1.__assign({}, props, { 'Record': this, 'Attributes definition:': this._attributes })); }; Record.prototype.getClassName = function () { return _super.prototype.getClassName.call(this) || 'Record'; }; Record.prototype._createTransaction = function (values, options) { return void 0; }; + Record.prototype.forEach = function (iteratee, context) { + var fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee, attributes = this.attributes; + for (var key in this.attributes) { + var value = attributes[key]; + if (value !== void 0) + fun(value, key); + } + }; + Record.prototype[Symbol.iterator] = function () { + return new RecordEntriesIterator(this); + }; + Record.prototype.entries = function () { + return new RecordEntriesIterator(this); + }; + Record.prototype.keys = function () { + var keys = []; + this.forEach(function (value, key) { return value === void 0 || keys.push(key); }); + return keys; + }; + var Record_1; + Record._metatype = AggregatedType; Record = Record_1 = tslib_1.__decorate([ define({ cidPrefix: 'm', @@ -268,7 +259,6 @@ var Record = (function (_super) { }) ], Record); return Record; - var Record_1; }(Transactional)); export { Record }; ; @@ -290,21 +280,34 @@ Record.prototype.AttributesCopy = BaseRecordAttributesCopy; var IdAttribute = AnyType.create({ value: void 0 }, 'id'); Record.prototype._attributes = { id: IdAttribute }; Record.prototype._attributesArray = [IdAttribute]; -Record._attribute = AggregatedType; -import { shouldBeAnObject } from './attributes'; -function typeCheck(record, values) { - if (shouldBeAnObject(record, values)) { +function typeCheck(record, values, options) { + if (shouldBeAnObject(record, values, options)) { var _attributes = record._attributes; var unknown = void 0; - for (var name_2 in values) { - if (!_attributes[name_2]) { + for (var name_3 in values) { + if (!_attributes[name_3]) { unknown || (unknown = []); - unknown.push("'" + name_2 + "'"); + unknown.push("'" + name_3 + "'"); } } if (unknown) { - record._log('warn', "undefined attributes " + unknown.join(', ') + " are ignored.", { values: values }); + unknownAttrsWarning(record, unknown, { values: values }, options); } } } +var RecordEntriesIterator = (function () { + function RecordEntriesIterator(record) { + this.record = record; + this.idx = 0; + } + RecordEntriesIterator.prototype.next = function () { + var record = this.record, metatype = record._attributesArray[this.idx++]; + return { + done: !metatype, + value: metatype ? [metatype.name, record[metatype.name]] : void 0 + }; + }; + return RecordEntriesIterator; +}()); +export { RecordEntriesIterator }; //# sourceMappingURL=record.js.map \ No newline at end of file diff --git a/lib/type-r/record/record.js.map b/lib/type-r/record/record.js.map index 2dc2d8b..e79f2b4 100644 --- a/lib/type-r/record/record.js.map +++ b/lib/type-r/record/record.js.map @@ -1 +1 @@ -{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/type-r/record/record.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/type-r/record/record.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/updates.d.ts b/lib/type-r/record/updates.d.ts new file mode 100644 index 0000000..41a38ca --- /dev/null +++ b/lib/type-r/record/updates.d.ts @@ -0,0 +1,43 @@ +import { Owner, Transaction, Transactional, TransactionOptions } from "../transactions"; +export interface ConstructorsMixin { + Attributes: AttributesConstructor; + AttributesCopy: AttributesCopyConstructor; +} +export interface ConstructorOptions extends TransactionOptions { + clone?: boolean; +} +export declare type AttributesConstructor = new (record: AttributesContainer, values: object, options: TransactionOptions) => AttributesValues; +export declare type AttributesCopyConstructor = new (values: object) => AttributesValues; +export interface AttributesContainer extends Transactional, Owner, ConstructorsMixin { + _attributes: AttributesDescriptors; + attributes: AttributesValues; + _previousAttributes: AttributesValues; + _changedAttributes: AttributesValues; +} +export interface AttributesValues { + [name: string]: any; +} +export interface AttributesDescriptors { + [name: string]: AttributeUpdatePipeline; +} +export interface AttributeUpdatePipeline { + doUpdate(value: any, record: AttributesContainer, options: TransactionOptions, nested?: Transaction[]): boolean; +} +export declare function setAttribute(record: AttributesContainer, name: string, value: any): void; +export declare const UpdateRecordMixin: { + transaction(this: AttributesContainer, fun: (self: AttributesContainer) => void, options?: TransactionOptions): void; + _onChildrenChange(child: Transactional, options: TransactionOptions): void; + forceAttributeChange(key: string, options?: TransactionOptions): void; + _createTransaction(this: AttributesContainer, a_values: {}, options?: TransactionOptions): Transaction; +}; +export declare function unknownAttrsWarning(record: AttributesContainer, unknown: string[], props: any, options: any): void; +export declare function constructorsMixin(attrDefs: AttributesDescriptors): ConstructorsMixin; +export declare function shouldBeAnObject(record: AttributesContainer, values: object, options: any): boolean; +export declare class RecordTransaction implements Transaction { + object: AttributesContainer; + isRoot: boolean; + nested: Transaction[]; + changes: string[]; + constructor(object: AttributesContainer, isRoot: boolean, nested: Transaction[], changes: string[]); + commit(initiator?: AttributesContainer): void; +} diff --git a/lib/type-r/record/updates.js b/lib/type-r/record/updates.js new file mode 100644 index 0000000..3cd4b8f --- /dev/null +++ b/lib/type-r/record/updates.js @@ -0,0 +1,118 @@ +import { eventsApi } from '../object-plus'; +import { transactionApi } from "../transactions"; +var _begin = transactionApi.begin, _markAsDirty = transactionApi.markAsDirty, commit = transactionApi.commit; +var trigger3 = eventsApi.trigger3; +export function setAttribute(record, name, value) { + var isRoot = begin(record), options = {}; + if (record._attributes[name].doUpdate(value, record, options)) { + markAsDirty(record, options); + trigger3(record, 'change:' + name, record, record.attributes[name], options); + } + isRoot && commit(record); +} +function begin(record) { + if (_begin(record)) { + record._previousAttributes = new record.AttributesCopy(record.attributes); + record._changedAttributes = null; + return true; + } + return false; +} +function markAsDirty(record, options) { + if (record._changedAttributes) { + record._changedAttributes = null; + } + return _markAsDirty(record, options); +} +export var UpdateRecordMixin = { + transaction: function (fun, options) { + if (options === void 0) { options = {}; } + var isRoot = begin(this); + fun.call(this, this); + isRoot && commit(this); + }, + _onChildrenChange: function (child, options) { + var _ownerKey = child._ownerKey, attribute = this._attributes[_ownerKey]; + if (!attribute || attribute.propagateChanges) + this.forceAttributeChange(_ownerKey, options); + }, + forceAttributeChange: function (key, options) { + if (options === void 0) { options = {}; } + var isRoot = begin(this); + if (markAsDirty(this, options)) { + trigger3(this, 'change:' + key, this, this.attributes[key], options); + } + isRoot && commit(this); + }, + _createTransaction: function (a_values, options) { + if (options === void 0) { options = {}; } + var isRoot = begin(this), changes = [], nested = [], _attributes = this._attributes, values = options.parse ? this.parse(a_values, options) : a_values; + var unknown; + if (shouldBeAnObject(this, values, options)) { + for (var name_1 in values) { + var spec = _attributes[name_1]; + if (spec) { + if (spec.doUpdate(values[name_1], this, options, nested)) { + changes.push(name_1); + } + } + else { + unknown || (unknown = []); + unknown.push("'" + name_1 + "'"); + } + } + if (unknown) { + unknownAttrsWarning(this, unknown, { values: values }, options); + } + } + if (changes.length && markAsDirty(this, options)) { + return new RecordTransaction(this, isRoot, nested, changes); + } + for (var _i = 0, nested_1 = nested; _i < nested_1.length; _i++) { + var pendingTransaction = nested_1[_i]; + pendingTransaction.commit(this); + } + isRoot && commit(this); + } +}; +export function unknownAttrsWarning(record, unknown, props, options) { + record._log('warn', 'Type-R:UnknownAttrs', "undefined attributes " + unknown.join(', ') + " are ignored.", props, options.logger); +} +export function constructorsMixin(attrDefs) { + var attrs = Object.keys(attrDefs); + var AttributesCopy = new Function('values', "\n " + attrs.map(function (attr) { return "\n this." + attr + " = values." + attr + ";\n "; }).join('') + "\n "); + AttributesCopy.prototype = Object.prototype; + var Attributes = new Function('record', 'values', 'options', "\n var _attrs = record._attributes;\n\n " + attrs.map(function (attr) { return "\n this." + attr + " = _attrs." + attr + ".doInit( values." + attr + ", record, options );\n "; }).join('') + "\n "); + Attributes.prototype = Object.prototype; + return { Attributes: Attributes, AttributesCopy: AttributesCopy }; +} +export function shouldBeAnObject(record, values, options) { + if (values && values.constructor === Object) + return true; + record._log('error', 'Type-R:InvalidObject', 'update with non-object is ignored!', { values: values }, options.logger); + return false; +} +var RecordTransaction = (function () { + function RecordTransaction(object, isRoot, nested, changes) { + this.object = object; + this.isRoot = isRoot; + this.nested = nested; + this.changes = changes; + } + RecordTransaction.prototype.commit = function (initiator) { + var _a = this, nested = _a.nested, object = _a.object, changes = _a.changes; + for (var _i = 0, nested_2 = nested; _i < nested_2.length; _i++) { + var transaction = nested_2[_i]; + transaction.commit(object); + } + var attributes = object.attributes, _isDirty = object._isDirty; + for (var _b = 0, changes_1 = changes; _b < changes_1.length; _b++) { + var key = changes_1[_b]; + trigger3(object, 'change:' + key, object, attributes[key], _isDirty); + } + this.isRoot && commit(object, initiator); + }; + return RecordTransaction; +}()); +export { RecordTransaction }; +//# sourceMappingURL=updates.js.map \ No newline at end of file diff --git a/lib/type-r/record/updates.js.map b/lib/type-r/record/updates.js.map new file mode 100644 index 0000000..54723d8 --- /dev/null +++ b/lib/type-r/record/updates.js.map @@ -0,0 +1 @@ +{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../src/type-r/record/updates.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/relations/commons.js.map b/lib/type-r/relations/commons.js.map index 7405eea..d667aab 100644 --- a/lib/type-r/relations/commons.js.map +++ b/lib/type-r/relations/commons.js.map @@ -1 +1 @@ -{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/relations/commons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKlD,MAAM,yBAA0B,aAAmC;IAC/D,MAAM,CAAA,CAAE,OAAO,aAAc,CAAC,CAAA,CAAC;QAC3B,KAAK,UAAU;YACX,MAAM,CAAC,UAAA,IAAI,IAAI,OAAM,aAAc,CAAC,IAAI,CAAE,IAAI,CAAE,EAAjC,CAAiC,CAAC;QACrD,KAAK,QAAQ;YACT,MAAM,CAAC,cAAM,OAAY,aAAa,EAAzB,CAAyB,CAAC;QAC3C,KAAK,QAAQ;YACD,IAAA,sDAAO,CAAoD;YACnE,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;AACL,CAAC"} \ No newline at end of file +{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/relations/commons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKnD,MAAM,UAAU,cAAc,CAAE,aAAmC;IAC/D,QAAQ,OAAO,aAAa,EAAE;QAC1B,KAAK,UAAU;YACX,OAAO,UAAA,IAAI,IAAI,OAAM,aAAc,CAAC,IAAI,CAAE,IAAI,CAAE,EAAjC,CAAiC,CAAC;QACrD,KAAK,QAAQ;YACT,OAAO,cAAM,OAAY,aAAa,EAAzB,CAAyB,CAAC;QAC3C,KAAK,QAAQ;YACD,IAAA,sDAAO,CAAoD;YACnE,OAAO,OAAO,CAAC;KACtB;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/from.d.ts b/lib/type-r/relations/from.d.ts index e69de29..e171d44 100644 --- a/lib/type-r/relations/from.d.ts +++ b/lib/type-r/relations/from.d.ts @@ -0,0 +1,2 @@ +import { Record } from '../record'; +export declare function from(path: string, T?: typeof Record): any; diff --git a/lib/type-r/relations/from.js b/lib/type-r/relations/from.js index 81f3d21..79cf02c 100644 --- a/lib/type-r/relations/from.js +++ b/lib/type-r/relations/from.js @@ -1,8 +1,6 @@ import * as tslib_1 from "tslib"; -import { AnyType } from '../record'; +import { AnyType, ChainableAttributeSpec, Record } from '../record'; import { parseReference } from './commons'; -import { Record } from '../record'; -import { ChainableAttributeSpec } from '../record'; var RecordRefType = (function (_super) { tslib_1.__extends(RecordRefType, _super); function RecordRefType() { @@ -21,11 +19,15 @@ var RecordRefType = (function (_super) { RecordRefType.prototype.validate = function (model, value, name) { }; return RecordRefType; }(AnyType)); +export function from(path, T) { + if (T === void 0) { T = Record; } + return T.from(path); +} Record.from = function from(masterCollection) { var getMasterCollection = parseReference(masterCollection); var typeSpec = new ChainableAttributeSpec({ value: null, - _attribute: RecordRefType + _metatype: RecordRefType }); return typeSpec .get(function (objOrId, name) { diff --git a/lib/type-r/relations/from.js.map b/lib/type-r/relations/from.js.map index a258450..3af51a5 100644 --- a/lib/type-r/relations/from.js.map +++ b/lib/type-r/relations/from.js.map @@ -1 +1 @@ -{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/type-r/relations/from.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,cAAc,EAAuB,MAAM,WAAW,CAAA;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAelD;IAA4B,yCAAO;IAAnC;;IAqBA,CAAC;IAnBG,8BAAM,GAAN,UAAQ,KAAsB;QAC1B,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,6BAAK,GAAL,UAAO,KAAsB;QACzB,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,iCAAS,GAAT,UAAW,CAAkB,EAAE,CAAkB;QAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,EAC1D,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,CAAC;QAE/D,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC;IACvB,CAAC;IAGD,gCAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,IAAG,CAAC;IACpC,oBAAC;AAAD,CAAC,AArBD,CAA4B,OAAO,GAqBlC;AAED,MAAM,CAAC,IAAI,GAAG,cAAe,gBAAsC;IAC/D,IAAM,mBAAmB,GAAG,cAAc,CAAE,gBAAgB,CAAE,CAAC;IAE/D,IAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC;QACxC,KAAK,EAAG,IAAI;QACZ,UAAU,EAAG,aAAa;KAC7B,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ;SACV,GAAG,CAAE,UAAU,OAAwB,EAAE,IAAa;QACnD,EAAE,CAAA,CAAE,OAAO,OAAO,KAAK,QAAS,CAAC;YAAC,MAAM,CAAC,OAAO,CAAC;QAGjD,IAAM,UAAU,GAAG,mBAAmB,CAAE,IAAI,CAAE,CAAC;QAC/C,IAAM,MAAM,GAAY,IAAI,CAAC;QAG7B,EAAE,CAAA,CAAE,UAAU,IAAI,UAAU,CAAC,MAAO,CAAC,CAAA,CAAC;YAElC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,IAAI,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC;YAGjC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAC,YAAY,CAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAE,CAAC;QAC9E,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/type-r/relations/from.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAuB,cAAc,EAAE,MAAM,WAAW,CAAC;AAgBhE;IAA4B,yCAAO;IAAnC;;IAqBA,CAAC;IAnBG,8BAAM,GAAN,UAAQ,KAAsB;QAC1B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,6BAAK,GAAL,UAAO,KAAsB;QACzB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,iCAAS,GAAT,UAAW,CAAkB,EAAE,CAAkB;QAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,EAC1D,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,CAAC;QAE/D,OAAO,GAAG,KAAK,GAAG,CAAC;IACvB,CAAC;IAGD,gCAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,IAAG,CAAC;IACpC,oBAAC;AAAD,CAAC,AArBD,CAA4B,OAAO,GAqBlC;AAED,MAAM,UAAU,IAAI,CAAE,IAAa,EAAE,CAAU;IAAV,kBAAA,EAAA,UAAU;IAC3C,OAAO,CAAC,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,CAAE,gBAAsC;IAC/D,IAAM,mBAAmB,GAAG,cAAc,CAAE,gBAAgB,CAAE,CAAC;IAE/D,IAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC;QACxC,KAAK,EAAG,IAAI;QACZ,SAAS,EAAG,aAAa;KAC5B,CAAC,CAAC;IAEH,OAAO,QAAQ;SACV,GAAG,CAAE,UAAU,OAAwB,EAAE,IAAa;QACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAG,OAAO,OAAO,CAAC;QAGjD,IAAM,UAAU,GAAG,mBAAmB,CAAE,IAAI,CAAE,CAAC;QAC/C,IAAM,MAAM,GAAY,IAAI,CAAC;QAG7B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YAEjC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,IAAI,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC;YAGjC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAC,YAAY,CAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAE,CAAC;SAC7E;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/index.d.ts b/lib/type-r/relations/index.d.ts index 343753e..6500a20 100644 --- a/lib/type-r/relations/index.d.ts +++ b/lib/type-r/relations/index.d.ts @@ -1,3 +1,3 @@ -import './from'; -import './subsetOf'; +export * from './from'; +export * from './subsetOf'; export * from './store'; diff --git a/lib/type-r/relations/index.js b/lib/type-r/relations/index.js index acc8e13..d388801 100644 --- a/lib/type-r/relations/index.js +++ b/lib/type-r/relations/index.js @@ -1,4 +1,4 @@ -import './from'; -import './subsetOf'; +export * from './from'; +export * from './subsetOf'; export * from './store'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/relations/index.js.map b/lib/type-r/relations/index.js.map index 5981e4b..2051d0a 100644 --- a/lib/type-r/relations/index.js.map +++ b/lib/type-r/relations/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/relations/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAA;AACf,OAAO,YAAY,CAAA;AAEnB,cAAc,SAAS,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/relations/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/store.js.map b/lib/type-r/relations/store.js.map index e5432e2..0eb3176 100644 --- a/lib/type-r/relations/store.js.map +++ b/lib/type-r/relations/store.js.map @@ -1 +1 @@ -{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/type-r/relations/store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,IAAI,MAAM,GAAW,IAAI,CAAC;AAE1B;IAA2B,iCAAM;IAAjC;;IAuBA,CAAC;IAtBG,wBAAQ,GAAR,cAAqB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAGnC,mBAAG,GAAH,UAAK,IAAa;QAEd,IAAI,KAAK,GAAG,IAAI,CAAE,IAAI,CAAE,CAAC;QAGzB,EAAE,CAAA,CAAE,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,aAAc,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC;QAGxD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;IAClF,CAAC;IAED,sBAAW,eAAM;aAAjB,cAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACrC,UAAmB,KAAa;YAC5B,EAAE,CAAA,CAAE,MAAO,CAAC,CAAA,CAAC;gBACX,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAED,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;QAC3D,CAAC;;;OAPoC;IAQzC,YAAC;AAAD,CAAC,AAvBD,CAA2B,MAAM,GAuBhC;;AAED,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/type-r/relations/store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,IAAI,MAAM,GAAW,IAAI,CAAC;AAE1B;IAA2B,iCAAM;IAAjC;;IAuBA,CAAC;IAtBG,wBAAQ,GAAR,cAAqB,OAAO,IAAI,CAAC,CAAC,CAAC;IAGnC,mBAAG,GAAH,UAAK,IAAa;QAEd,IAAI,KAAK,GAAG,IAAI,CAAE,IAAI,CAAE,CAAC;QAGzB,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;YAAG,OAAO,KAAK,CAAC;QAGxD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;IAClF,CAAC;IAED,sBAAW,eAAM;aAAjB,cAAqB,OAAO,MAAM,CAAC,CAAC,CAAC;aACrC,UAAmB,KAAa;YAC5B,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;QAC3D,CAAC;;;OAPoC;IAQzC,YAAC;AAAD,CAAC,AAvBD,CAA2B,MAAM,GAuBhC;;AAED,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/subsetOf.d.ts b/lib/type-r/relations/subsetOf.d.ts index e69de29..55f7cd0 100644 --- a/lib/type-r/relations/subsetOf.d.ts +++ b/lib/type-r/relations/subsetOf.d.ts @@ -0,0 +1,2 @@ +import { Collection } from '../collection'; +export declare function subsetOf(path: string, T?: typeof Collection): any; diff --git a/lib/type-r/relations/subsetOf.js b/lib/type-r/relations/subsetOf.js index d1fafe0..7c72bfb 100644 --- a/lib/type-r/relations/subsetOf.js +++ b/lib/type-r/relations/subsetOf.js @@ -1,10 +1,9 @@ import * as tslib_1 from "tslib"; import { Collection } from '../collection'; -import { tools, define } from '../object-plus'; -import { parseReference } from './commons'; +import { define, tools } from '../object-plus'; import { ChainableAttributeSpec } from '../record'; import { ItemsBehavior, transactionApi } from '../transactions'; -var fastDefaults = tools.fastDefaults; +import { parseReference } from './commons'; Collection.subsetOf = function subsetOf(masterCollection) { var SubsetOf = this._SubsetOf || (this._SubsetOf = defineSubsetCollection(this)), getMasterCollection = parseReference(masterCollection), typeSpec = new ChainableAttributeSpec({ type: SubsetOf @@ -14,6 +13,10 @@ Collection.subsetOf = function subsetOf(masterCollection) { return refs; }); }; +export function subsetOf(path, T) { + if (T === void 0) { T = Collection; } + return T.subsetOf(path); +} var subsetOfBehavior = ItemsBehavior.share | ItemsBehavior.persistent; function defineSubsetCollection(CollectionConstructor) { var SubsetOfCollection = (function (_super) { @@ -30,6 +33,7 @@ function defineSubsetCollection(CollectionConstructor) { configurable: true }); SubsetOfCollection.prototype.add = function (a_elements, options) { + if (options === void 0) { options = {}; } var resolvedWith = this.resolvedWith, toAdd = toArray(a_elements); if (resolvedWith) { return _super.prototype.add.call(this, resolveRefs(resolvedWith, toAdd), options); @@ -44,6 +48,7 @@ function defineSubsetCollection(CollectionConstructor) { } }; SubsetOfCollection.prototype.reset = function (a_elements, options) { + if (options === void 0) { options = {}; } var resolvedWith = this.resolvedWith, elements = toArray(a_elements); return resolvedWith ? _super.prototype.reset.call(this, resolveRefs(resolvedWith, elements), options) : @@ -61,6 +66,13 @@ function defineSubsetCollection(CollectionConstructor) { this.models.map(function (model) { return model.id; }); }; SubsetOfCollection.prototype._validateNested = function () { return 0; }; + Object.defineProperty(SubsetOfCollection.prototype, "length", { + get: function () { + return this.models.length || (this.refs ? this.refs.length : 0); + }, + enumerable: true, + configurable: true + }); SubsetOfCollection.prototype.clone = function (owner) { var Ctor = this.constructor, copy = new Ctor([], { model: this.model, diff --git a/lib/type-r/relations/subsetOf.js.map b/lib/type-r/relations/subsetOf.js.map index 18274f9..2dc0b6a 100644 --- a/lib/type-r/relations/subsetOf.js.map +++ b/lib/type-r/relations/subsetOf.js.map @@ -1 +1 @@ -{"version":3,"file":"subsetOf.js","sourceRoot":"","sources":["../../../src/type-r/relations/subsetOf.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"subsetOf.js","sourceRoot":"","sources":["../../../src/type-r/relations/subsetOf.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/transactions.d.ts b/lib/type-r/transactions.d.ts index 58ee932..c5be2e7 100644 --- a/lib/type-r/transactions.d.ts +++ b/lib/type-r/transactions.d.ts @@ -1,16 +1,17 @@ -import { Messenger, CallbacksByEvents, MessengersByCid, MixinsState, MessengerDefinition, eventsApi } from './object-plus'; -import { ValidationError, Validatable, ChildrenErrors } from './validation'; +import { IOEndpoint, IONode, IOPromise } from './io-tools'; +import { CallbacksByEvents, eventsApi, Messenger, MessengerDefinition, MessengersByCid, MixinsState, LogLevel, Logger } from './object-plus'; import { Traversable } from './traversable'; -import { IOEndpoint, IOPromise, IONode } from './io-tools'; +import { ChildrenErrors, Validatable, ValidationError } from './validation'; export interface TransactionalDefinition extends MessengerDefinition { endpoint?: IOEndpoint; } export declare enum ItemsBehavior { share = 1, listen = 2, - persistent = 4, + persistent = 4 } export declare abstract class Transactional implements Messenger, IONode, Validatable, Traversable { + static endpoint: IOEndpoint; static __super__: object; static mixins: MixinsState; static define: (definition?: TransactionalDefinition, statics?: object) => typeof Transactional; @@ -18,10 +19,10 @@ export declare abstract class Transactional implements Messenger, IONode, Valida static onDefine(definitions: TransactionalDefinition, BaseClass: typeof Transactional): void; static onExtend(BaseClass: typeof Transactional): void; static create(a: any, b?: any): Transactional; - on: (events: string | CallbacksByEvents, callback, context?) => this; - once: (events: string | CallbacksByEvents, callback, context?) => this; - off: (events?: string | CallbacksByEvents, callback?, context?) => this; - trigger: (name: string, a?, b?, c?, d?, e?) => this; + on: (events: string | CallbacksByEvents, callback: any, context?: any) => this; + once: (events: string | CallbacksByEvents, callback: any, context?: any) => this; + off: (events?: string | CallbacksByEvents, callback?: any, context?: any) => this; + trigger: (name: string, a?: any, b?: any, c?: any, d?: any, e?: any) => this; stopListening: (source?: Messenger, a?: string | CallbacksByEvents, b?: Function) => this; listenTo: (source: Messenger, a: string | CallbacksByEvents, b?: Function) => this; listenToOnce: (source: Messenger, a: string | CallbacksByEvents, b?: Function) => this; @@ -48,27 +49,21 @@ export declare abstract class Transactional implements Messenger, IONode, Valida constructor(cid: string | number); abstract clone(options?: CloneOptions): this; transaction(fun: (self: this) => void, options?: TransactionOptions): void; - updateEach(iteratee: (val: any, key: string | number) => void, options?: TransactionOptions): void; - set(values: any, options?: TransactionOptions): this; assignFrom(source: Transactional | Object): this; abstract _createTransaction(values: any, options?: TransactionOptions): Transaction | void; + abstract set(values: any, options?: TransactionOptions): this; parse(data: any, options?: TransactionOptions): any; - abstract toJSON(): {}; + abstract toJSON(options?: object): {}; abstract get(key: string): any; deepGet(reference: string): any; getOwner(): Owner; _defaultStore: Transactional; getStore(): Transactional; - abstract each(iteratee: (val: any, key: string | number) => void, context?: any): any; - map(iteratee: (val: any, key: string | number) => T, context?: any): T[]; _endpoint: IOEndpoint; - _ioPromise: IOPromise; - hasPendingIO(): IOPromise; - fetch(options?: object): IOPromise; + _ioPromise: IOPromise; + hasPendingIO(): IOPromise; + fetch(options?: object): IOPromise; getEndpoint(): IOEndpoint; - mapObject(iteratee: (val: any, key: string | number) => T, context?: any): { - [key: string]: T; - }; _validationError: ValidationError; readonly validationError: ValidationError; abstract _validateNested(errors: ChildrenErrors): number; @@ -80,7 +75,7 @@ export declare abstract class Transactional implements Messenger, IONode, Valida valueOf(): Object; toString(): string; getClassName(): string; - abstract _log(level: string, text: string, value: any): void; + abstract _log(level: LogLevel, topic: string, text: string, value: any, logger?: Logger): void; } export interface CloneOptions { pinStore?: boolean; @@ -96,6 +91,7 @@ export interface Transaction { } export interface TransactionOptions { parse?: boolean; + logger?: Logger; silent?: boolean; merge?: boolean; remove?: boolean; diff --git a/lib/type-r/transactions.js b/lib/type-r/transactions.js index 8a49487..dedaf03 100644 --- a/lib/type-r/transactions.js +++ b/lib/type-r/transactions.js @@ -1,9 +1,9 @@ import * as tslib_1 from "tslib"; -import { Messenger, tools, mixins, mixinRules, definitions, eventsApi, define } from './object-plus'; -import { ValidationError } from './validation'; -import { resolveReference } from './traversable'; import { abortIO } from './io-tools'; -var assign = tools.assign, trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off; +import { define, definitions, eventsApi, Messenger, mixinRules, mixins } from './object-plus'; +import { resolveReference } from './traversable'; +import { ValidationError } from './validation'; +var trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off; export var ItemsBehavior; (function (ItemsBehavior) { ItemsBehavior[ItemsBehavior["share"] = 1] = "share"; @@ -63,20 +63,16 @@ var Transactional = (function () { update && this.set(update); isRoot && transactionApi.commit(this); }; - Transactional.prototype.updateEach = function (iteratee, options) { - var isRoot = transactionApi.begin(this); - this.each(iteratee); - isRoot && transactionApi.commit(this); - }; - Transactional.prototype.set = function (values, options) { - if (values) { - var transaction = this._createTransaction(values, options); - transaction && transaction.commit(); - } - return this; - }; Transactional.prototype.assignFrom = function (source) { - return this.set(source.__inner_state__ || source, { merge: true }); + var _this = this; + this.transaction(function () { + _this.set(source.__inner_state__ || source, { merge: true }); + var _changeToken = source._changeToken; + if (_changeToken) { + _this._changeToken = _changeToken; + } + }); + return this; }; Transactional.prototype.parse = function (data, options) { return data; }; Transactional.prototype.deepGet = function (reference) { @@ -89,29 +85,11 @@ var Transactional = (function () { var _owner = this._owner; return _owner ? _owner.getStore() : this._defaultStore; }; - Transactional.prototype.map = function (iteratee, context) { - var arr = [], fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee; - this.each(function (val, key) { - var result = fun(val, key); - if (result !== void 0) - arr.push(result); - }); - return arr; - }; Transactional.prototype.hasPendingIO = function () { return this._ioPromise; }; Transactional.prototype.fetch = function (options) { throw new Error("Not implemented"); }; Transactional.prototype.getEndpoint = function () { return getOwnerEndpoint(this) || this._endpoint; }; - Transactional.prototype.mapObject = function (iteratee, context) { - var obj = {}, fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee; - this.each(function (val, key) { - var result = iteratee(val, key); - if (result !== void 0) - obj[key] = result; - }); - return obj; - }; Object.defineProperty(Transactional.prototype, "validationError", { get: function () { var error = this._validationError || (this._validationError = new ValidationError(this)); @@ -142,6 +120,7 @@ var Transactional = (function () { if (name !== 'Subclass') return name; }; + var Transactional_1; Transactional = Transactional_1 = tslib_1.__decorate([ define, definitions({ @@ -150,7 +129,6 @@ var Transactional = (function () { mixins(Messenger) ], Transactional); return Transactional; - var Transactional_1; }()); export { Transactional }; export var transactionApi = { diff --git a/lib/type-r/transactions.js.map b/lib/type-r/transactions.js.map index 20d4b39..4150d92 100644 --- a/lib/type-r/transactions.js.map +++ b/lib/type-r/transactions.js.map @@ -1 +1 @@ -{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/type-r/transactions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/type-r/transactions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/traversable.d.ts b/lib/type-r/traversable.d.ts index 97eeaa6..88d38eb 100644 --- a/lib/type-r/traversable.d.ts +++ b/lib/type-r/traversable.d.ts @@ -10,4 +10,4 @@ export declare class CompiledReference { local: boolean; constructor(reference: string, splitTail?: boolean); } -export declare function resolveReference(root: Traversable, reference: string, action: (object, key: string) => any): any; +export declare function resolveReference(root: Traversable, reference: string, action: (object: any, key: string) => any): any; diff --git a/lib/type-r/traversable.js b/lib/type-r/traversable.js index f14d472..8dda18b 100644 --- a/lib/type-r/traversable.js +++ b/lib/type-r/traversable.js @@ -1,20 +1,21 @@ -var referenceMask = /\^|([^.]+)/g; +var referenceMask = /\^|(store\.[^.]+)|([^.]+)/g; var CompiledReference = (function () { function CompiledReference(reference, splitTail) { if (splitTail === void 0) { splitTail = false; } var path = reference .match(referenceMask) .map(function (key) { - if (key === '^') + if (key === '^' || key === 'owner') return 'getOwner()'; if (key[0] === '~') return "getStore().get(\"" + key.substr(1) + "\")"; + if (key.indexOf('store.') === 0) + return "getStore().get(\"" + key.substr(6) + "\")"; return key; }); this.tail = splitTail && path.pop(); this.local = !path.length; - path.unshift('self'); - this.resolve = new Function('self', "return " + path.join('.') + ";"); + this.resolve = new Function('self', "\n var v = self." + path.shift() + ";\n \n " + path.map(function (x) { return "\n v = v && v." + x + ";\n "; }).join('') + "\n\n return v;\n "); } return CompiledReference; }()); diff --git a/lib/type-r/traversable.js.map b/lib/type-r/traversable.js.map index 9b94c50..a1e5492 100644 --- a/lib/type-r/traversable.js.map +++ b/lib/type-r/traversable.js.map @@ -1 +1 @@ -{"version":3,"file":"traversable.js","sourceRoot":"","sources":["../../src/type-r/traversable.ts"],"names":[],"mappings":"AAcA,IAAM,aAAa,GAAI,aAAa,CAAC;AAKrC;IAKI,2BAAa,SAAkB,EAAE,SAA2B;QAA3B,0BAAA,EAAA,iBAA2B;QACxD,IAAM,IAAI,GAAG,SAAS;aACL,KAAK,CAAE,aAAa,CAAE;aACtB,GAAG,CAAE,UAAA,GAAG;YACL,EAAE,CAAA,CAAE,GAAG,KAAK,GAAI,CAAC;gBAAC,MAAM,CAAC,YAAY,CAAC;YAEtC,EAAE,CAAA,CAAE,GAAG,CAAE,CAAC,CAAE,KAAK,GAAI,CAAC;gBAAC,MAAM,CAAC,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEvE,MAAM,CAAC,GAAG,CAAC;QACf,CAAC,CAAE,CAAC;QAEpB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAS,IAAI,QAAQ,CAAE,MAAM,EAAE,YAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAI,CAAE,CAAC;IAC/E,CAAC;IACL,wBAAC;AAAD,CAAC,AAvBD,IAuBC;;AAED,MAAM,2BAA4B,IAAkB,EAAE,SAAkB,EAAE,MAAwC;IAC9G,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAE,aAAa,CAAE,EACvC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAM,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC;QACtB,MAAM,CAAA,CAAE,GAAI,CAAC,CAAA,CAAC;YACV,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,KAAK,CAAC;YACzC,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,KAAK,CAAC;YACzC,SAAW,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;QACtC,CAAC;QAGD,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;YAAC,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC;AACxC,CAAC"} \ No newline at end of file +{"version":3,"file":"traversable.js","sourceRoot":"","sources":["../../src/type-r/traversable.ts"],"names":[],"mappings":"AAcA,IAAM,aAAa,GAAI,4BAA4B,CAAC;AAKpD;IAKI,2BAAa,SAAkB,EAAE,SAA2B;QAA3B,0BAAA,EAAA,iBAA2B;QACxD,IAAM,IAAI,GAAG,SAAS;aACL,KAAK,CAAE,aAAa,CAAE;aACtB,GAAG,CAAE,UAAA,GAAG;YACL,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO;gBAAG,OAAO,YAAY,CAAC;YAEzD,IAAI,GAAG,CAAE,CAAC,CAAE,KAAK,GAAG;gBAAG,OAAO,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEvE,IAAI,GAAG,CAAC,OAAO,CAAE,QAAQ,CAAE,KAAK,CAAC;gBAAG,OAAO,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEpF,OAAO,GAAG,CAAC;QACf,CAAC,CAAE,CAAC;QAEpB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAS,IAAI,QAAQ,CAAE,MAAM,EAAE,gCACvB,IAAI,CAAC,KAAK,EAAE,oDAEzB,IAAI,CAAC,GAAG,CAAE,UAAA,CAAC,IAAI,OAAA,kCACA,CAAC,oBAClB,EAFiB,CAEjB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wCAGd,CAAE,CAAC;IACR,CAAC;IACL,wBAAC;AAAD,CAAC,AA/BD,IA+BC;;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAkB,EAAE,SAAkB,EAAE,MAAwC;IAC9G,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAE,aAAa,CAAE,EACvC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAM,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC;QACtB,QAAQ,GAAG,EAAE;YACT,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM;YACzC,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM;YACzC,OAAS,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;SACrC;QAGD,IAAI,CAAC,IAAI;YAAG,OAAO;KACtB;IAED,OAAO,MAAM,CAAE,IAAI,EAAE,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/validation.js.map b/lib/type-r/validation.js.map index 449742d..669977f 100644 --- a/lib/type-r/validation.js.map +++ b/lib/type-r/validation.js.map @@ -1 +1 @@ -{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/type-r/validation.ts"],"names":[],"mappings":"AAWA;IAQI,yBAAa,GAAiB;QAC1B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAE,CAAC;QAEtD,EAAE,CAAA,CAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAE,GAAG,CAAG,CAAC,CAAA,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,8BAAI,GAAJ,UAAM,QAAgD;QAC5C,IAAA,SAAwB,EAAtB,gBAAK,EAAE,kBAAM,CAAU;QAE/B,EAAE,CAAA,CAAE,KAAM,CAAC;YAAC,QAAQ,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;QAEpC,GAAG,CAAA,CAAE,IAAM,GAAG,IAAI,MAAO,CAAC,CAAA,CAAC;YACvB,QAAQ,CAAE,MAAM,CAAE,GAAG,CAAE,EAAE,GAAG,CAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,mCAAS,GAAT,UAAW,QAAsE,EAAE,MAAoB;QACnG,IAAI,CAAC,IAAI,CAAE,UAAE,KAAW,EAAE,GAAY;YAClC,EAAE,CAAA,CAAE,KAAK,YAAY,eAAgB,CAAC,CAAA,CAAC;gBACjB,KAAM,CAAC,SAAS,CAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE,CAAE,CAAC;YACtE,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,QAAQ,CAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAE,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACL,sBAAC;AAAD,CAAC,AApCD,IAoCC"} \ No newline at end of file +{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/type-r/validation.ts"],"names":[],"mappings":"AAWA;IAQI,yBAAa,GAAiB;QAC1B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAE,GAAG,CAAE,EAAE;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;IACL,CAAC;IAED,8BAAI,GAAJ,UAAM,QAAgD;QAC5C,IAAA,SAAwB,EAAtB,gBAAK,EAAE,kBAAe,CAAC;QAE/B,IAAI,KAAK;YAAG,QAAQ,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;QAEpC,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;YACtB,QAAQ,CAAE,MAAM,CAAE,GAAG,CAAE,EAAE,GAAG,CAAE,CAAC;SAClC;IACL,CAAC;IAED,mCAAS,GAAT,UAAW,QAAsE,EAAE,MAAoB;QACnG,IAAI,CAAC,IAAI,CAAE,UAAE,KAAW,EAAE,GAAY;YAClC,IAAI,KAAK,YAAY,eAAe,EAAE;gBAChB,KAAM,CAAC,SAAS,CAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE,CAAE,CAAC;aACrE;iBACG;gBACA,QAAQ,CAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAE,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACL,sBAAC;AAAD,CAAC,AApCD,IAoCC"} \ No newline at end of file diff --git a/lib/underscore-mixin.js.map b/lib/underscore-mixin.js.map index 001736a..9c30642 100644 --- a/lib/underscore-mixin.js.map +++ b/lib/underscore-mixin.js.map @@ -1 +1 @@ -{"version":3,"file":"underscore-mixin.js","sourceRoot":"","sources":["../src/underscore-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,YAAY,CAAA;AAE/B,MAAM,CAAC,IAAM,UAAU,GAAG;IACtB,IAAI;QAAE,cAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,yBAAe;;QACjB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAE,IAAI,EAAE,IAAI,CAAE,CAAC;IAChC,CAAC;IAED,MAAM,YAAE,IAAI;QACR,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC;IACpC,CAAC;IAED,OAAO,YAAE,KAAK;QACV,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE,KAAK,EAAE,IAAI,CAAE,CAAE,IAAI,CAAE,CAAC;IAC/C,CAAC;IAED,IAAI,EAAJ;QAAM,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAE,UAAE,KAAK,EAAE,GAAG;YAC/B,EAAE,CAAA,CAAE,IAAI,CAAC,OAAO,CAAE,GAAG,CAAE,GAAG,CAAE,CAAC,CAAA,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC;YACjB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,IAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAE,UAAE,KAAK,EAAE,GAAG,IAAM,OAAA,QAAQ,CAAE,KAAK,CAAE,GAAG,GAAG,EAAvB,CAAuB,CAAE,CAAC;QACvD,MAAM,CAAC,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,UAAE,KAAK,EAAE,GAAG,IAAM,OAAA,CAAE,GAAG,EAAE,KAAK,CAAE,EAAd,CAAc,CAAE,CAAC;IACxD,CAAC;IAED,OAAO;QACH,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,KAAK;QACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAE,IAAI,CAAC,SAAS,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAE,CAAE,CAAC;IAC/C,CAAC;CACJ,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG;IAC3B,KAAK,YAAC,KAAK,EAAE,KAAK;QACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,SAAS,YAAC,KAAK;QACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACJ,CAAC;AAEF,oBAAoB,CAAE,eAAe,EAAE,QAAQ,EAAE;IAC7C,OAAO,EAAI,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC;IACxD,KAAK,EAAM,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,WAAW,EAAG,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,SAAS,EAAG,CAAC,EAAE,aAAa,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC;IACxH,MAAM,EAAK,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,QAAQ,EAAG,CAAC;IAC1F,QAAQ,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,KAAK,EAAG,CAAC;IAC5E,IAAI,EAAO,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC;IAC3E,OAAO,EAAI,CAAC,EAAE,UAAU,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,WAAW,EAAG,CAAC;IACvE,OAAO,EAAI,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,SAAS,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC,EAAE,OAAO,EAAG,CAAC;IAC5E,MAAM,EAAK,CAAC,EAAE,OAAO,EAAG,CAAC;CAC5B,CAAC,CAAC;AAEH,8BAA8B,KAAK,EAAE,SAAS,EAAE,OAAO;IACnD,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM,EAAE,MAAM;QACnC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC;AASD,mBAAmB,MAAM,EAAE,MAAM,EAAE,SAAS;IACxC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;YACX,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC,UAAS,KAAK;YACzB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC,UAAS,QAAQ,EAAE,OAAO;YACrC,IAAI,KAAK,GAAG,IAAI,CAAE,SAAS,CAAE,EACzB,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,MAAM,CAAC,CAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;gBACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAE,KAAK,EAAE,QAAQ,CAAE,CAAC;QACvC,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC,UAAS,QAAQ,EAAE,UAAU,EAAE,OAAO;YACjD,IAAI,KAAK,GAAG,IAAI,CAAE,SAAS,CAAE,EACzB,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,MAAM,CAAC,CAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAE;gBACjD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAE,CAAC;QACtC,CAAC,CAAC;QACF,SAAS,MAAM,CAAC;YAAU,cAAe;iBAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;gBAAf,yBAAe;;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;IACN,CAAC;AACL,CAAC;AAGD,YAAY,QAAQ,EAAE,QAAQ;IAC1B,MAAM,CAAA,CAAE,OAAO,QAAS,CAAC,CAAA,CAAC;QACtB,KAAK,UAAU,EAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,KAAK,QAAQ,EAAG,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,GAAG,CAAE,QAAQ,CAAE,EAArB,CAAqB,CAAC;QACtD,KAAK,QAAQ;YACT,EAAE,CAAA,CAAE,CAAC,CAAC,QAAQ,YAAY,QAAQ,CAAC,KAAK,CAAE,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAE,QAAQ,CAAE,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC;AACpB,CAAC"} \ No newline at end of file +{"version":3,"file":"underscore-mixin.js","sourceRoot":"","sources":["../src/underscore-mixin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9403c43..ea7bf7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,13 +5,14 @@ "requires": true, "dependencies": { "@types/jquery": { - "version": "2.0.48", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.48.tgz", - "integrity": "sha512-nNLzUrVjaRV/Ds1eHZLYTd7IZxs38cwwLSaqMJj8OTXY8xNUbxSK69bi9cMLvQ7dm/IBeQ1wHwQ0S1uYa0rd2w==", + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.51.tgz", + "integrity": "sha512-+vtCjz+pzr5KkaX/GMnVF0YtQqkm+oVcdBH0Q7zCxdwk42c71xJ9hT1b6Mbn4Kf7CAxSHvkWF1LRdpYwUM+pcg==", "dev": true }, "assertion-error": { - "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", "dev": true }, @@ -31,23 +32,6 @@ "concat-map": "0.0.1" } }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browser-stdout": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", @@ -73,22 +57,24 @@ } }, "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", "dev": true }, "chai": { - "version": "https://registry.npmjs.org/chai/-/chai-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-2.3.0.tgz", "integrity": "sha1-ii9qNHSNqAEJD9cyh7Kqc5pOkJo=", "dev": true, "requires": { - "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "deep-eql": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz" + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" } }, "chai-as-promised": { - "version": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=", "dev": true }, @@ -135,11 +121,12 @@ } }, "deep-eql": { - "version": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { - "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + "type-detect": "0.1.1" } }, "diff": { @@ -184,7 +171,7 @@ "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.3", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "minimatch": "3.0.4", "once": "1.4.0", "path-is-absolute": "1.0.1" } @@ -248,7 +235,8 @@ "dev": true }, "jquery": { - "version": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=", "dev": true }, @@ -378,7 +366,8 @@ } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { @@ -475,9 +464,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-to-regexp": { @@ -502,12 +491,12 @@ "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "rollup": { @@ -517,15 +506,14 @@ "dev": true }, "rollup-plugin-node-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", - "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", "dev": true, "requires": { - "browser-resolve": "1.11.2", - "builtin-modules": "1.1.1", - "is-module": "1.0.0", - "resolve": "1.5.0" + "builtin-modules": "^2.0.0", + "is-module": "^1.0.0", + "resolve": "^1.1.6" } }, "rollup-plugin-uglify": { @@ -639,14 +627,15 @@ "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==" }, "type-detect": { - "version": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", "dev": true }, "typescript": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", - "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", + "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", "dev": true }, "uglify-js": { @@ -656,7 +645,8 @@ "dev": true }, "underscore": { - "version": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", "dev": true }, diff --git a/package.json b/package.json index 0ad776c..d415327 100644 --- a/package.json +++ b/package.json @@ -25,18 +25,18 @@ "underscore": "*" }, "devDependencies": { - "@types/jquery": "^2.0.48", + "@types/jquery": "^2.0.51", "chai": "* <3", "chai-as-promised": "^5.3.0", "jquery": "*", "mocha": "^3.5.3", "requirejs": "^2.3.5", "rollup": "^0.50.0", - "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-uglify": "^2.0.1", "sinon": "^3.3.0", "sinon-chai": "^2.14.0", - "typescript": "*", + "typescript": "^3.1.6", "underscore": "*" }, "files": [ diff --git a/src/type-r/collection/add.ts b/src/type-r/collection/add.ts index ab435f8..c2c7be4 100644 --- a/src/type-r/collection/add.ts +++ b/src/type-r/collection/add.ts @@ -1,6 +1,6 @@ -import { Transaction, transactionApi } from '../transactions' -import { CollectionTransaction, logAggregationError, sortElements, convertAndAquire, free, CollectionOptions, addIndex, updateIndex, CollectionCore } from './commons' -import { Record } from '../record' +import { Record } from '../record'; +import { Transaction, transactionApi } from '../transactions'; +import { addIndex, CollectionCore, CollectionOptions, CollectionTransaction, convertAndAquire, logAggregationError, sortElements, updateIndex } from './commons'; const { begin, commit, markAsDirty } = transactionApi; @@ -21,7 +21,7 @@ export function addTransaction( collection : CollectionCore, items : any[], opti return new CollectionTransaction( collection, isRoot, added, [], nested, needSort ); } - if( collection._aggregationError ) logAggregationError( collection ); + if( collection._aggregationError ) logAggregationError( collection, options ); } // No changes... diff --git a/src/type-r/collection/commons.ts b/src/type-r/collection/commons.ts index 30df734..8df4dee 100644 --- a/src/type-r/collection/commons.ts +++ b/src/type-r/collection/commons.ts @@ -1,11 +1,10 @@ -import { Record } from '../record' -import { Owner, Transaction, ItemsBehavior, - TransactionOptions, Transactional, transactionApi } from '../transactions' +import { eventsApi, Logger } from '../object-plus'; +import { Record } from '../record'; +import { ItemsBehavior, Owner, Transaction, Transactional, transactionApi, TransactionOptions } from '../transactions'; -import { eventsApi, tools } from '../object-plus' -const { EventMap, trigger2, trigger3, on, off } = eventsApi, - { commit, markAsDirty } = transactionApi, +const { trigger2, trigger3, on, off } = eventsApi, + { commit } = transactionApi, _aquire = transactionApi.aquire, _free = transactionApi.free; /** @private */ @@ -20,7 +19,7 @@ export interface CollectionCore extends Transactional, Owner { _shared : number _aggregationError : Record[] - _log( level : string, text : string, value : any ) : void + _log( level : string, topic : string, text : string, value : any, logger : Logger ) : void } // Collection's manipulation methods elements @@ -124,7 +123,7 @@ export function addIndex( index : IdIndex, model : Record ) : void { index[ model.cid ] = model; var id = model.id; - if( id != null ){ + if( id || ( id as any ) === 0 ){ index[ id ] = model; } } @@ -133,7 +132,7 @@ export function addIndex( index : IdIndex, model : Record ) : void { export function removeIndex( index : IdIndex, model : Record ) : void { delete index[ model.cid ]; var id = model.id; - if( id != null ){ + if( id || ( id as any ) === 0 ){ delete index[ id ]; } } @@ -180,7 +179,7 @@ export class CollectionTransaction implements Transaction { } if( object._aggregationError ){ - logAggregationError( object ); + logAggregationError( object, _isDirty ); } // Just trigger 'change' on collection, it must be already triggered for models during nested commits. @@ -216,7 +215,7 @@ export class CollectionTransaction implements Transaction { } } -export function logAggregationError( collection : CollectionCore ){ - collection._log( 'error', 'added records already have an owner', collection._aggregationError ); +export function logAggregationError( collection : CollectionCore, options : TransactionOptions ){ + collection._log( 'error', 'Type-R:InvalidOwner', 'added records already have an owner', collection._aggregationError, options.logger ); collection._aggregationError = void 0; } \ No newline at end of file diff --git a/src/type-r/collection/index.ts b/src/type-r/collection/index.ts index 6d0fe64..3cca75b 100644 --- a/src/type-r/collection/index.ts +++ b/src/type-r/collection/index.ts @@ -1,16 +1,16 @@ -import { define, tools, eventsApi, EventMap, definitions, mixinRules, EventsDefinition, Mixable } from '../object-plus' -import { ItemsBehavior, transactionApi, Transactional, CloneOptions, Transaction, TransactionOptions, TransactionalDefinition, Owner } from '../transactions' -import { Record, SharedType, AggregatedType, createSharedTypeSpec } from '../record' +import { IOPromise, startIO } from '../io-tools'; +import { define, definitions, EventMap, eventsApi, EventsDefinition, Logger, logger, LogLevel, Mixable, MixableConstructor, mixinRules, tools } from '../object-plus'; +import { AggregatedType, ChainableAttributeSpec, createSharedTypeSpec, Record, SharedType } from '../record'; +import { CloneOptions, ItemsBehavior, Transactional, TransactionalDefinition, transactionApi, TransactionOptions } from '../transactions'; +import { AddOptions, addTransaction } from './add'; +import { CollectionCore, CollectionTransaction, Elements, free, sortElements, updateIndex } from './commons'; +import { removeMany, removeOne } from './remove'; +import { emptySetTransaction, setTransaction } from './set'; -import { IdIndex, free, sortElements, dispose, Elements, CollectionCore, addIndex, removeIndex, updateIndex, Comparator, CollectionTransaction } from './commons' -import { addTransaction, AddOptions } from './add' -import { setTransaction, emptySetTransaction } from './set' -import { removeOne, removeMany } from './remove' -import { IOPromise, startIO } from '../io-tools' -const { trigger2, on, off } = eventsApi, +const { trigger2 } = eventsApi, { begin, commit, markAsDirty } = transactionApi, - { omit, log, assign, defaults, assignToClassProto } = tools; + { assign, defaults } = tools; let _count = 0; @@ -21,7 +21,7 @@ export interface CollectionOptions extends TransactionOptions { model? : typeof Record } -export type Predicate = ( val : R, key : number ) => boolean | object; +export type Predicate = ( ( val : R, key? : number ) => boolean ) | Partial; export interface CollectionDefinition extends TransactionalDefinition { model? : typeof Record, @@ -35,6 +35,14 @@ class CollectionRefsType extends SharedType { static defaultValue = []; } +export interface CollectionConstructor extends MixableConstructor { + new ( records? : Partial | Partial[], options?: CollectionOptions ) : Collection + prototype : Collection + Refs : CollectionConstructor + subsetOf( C : Collection | string | ( () => Collection ) ) : ChainableAttributeSpec +}; + + @define({ // Default client id prefix cidPrefix : 'c', @@ -47,7 +55,7 @@ class CollectionRefsType extends SharedType { model : mixinRules.protoValue, itemEvents : mixinRules.merge }) -export class Collection< R extends Record = Record> extends Transactional implements CollectionCore { +export class Collection< R extends Record = Record> extends Transactional implements CollectionCore, Iterable { _shared : number _aggregationError : R[] @@ -55,11 +63,11 @@ export class Collection< R extends Record = Record> extends Transactional implem static Refs : typeof Collection static _SubsetOf : typeof Collection - createSubset( models : ElementsArg, options ){ - const SubsetOf = (this.constructor).subsetOf( this ).options.type, + createSubset( models : ElementsArg, options ) : Collection{ + const SubsetOf = (this.constructor as CollectionConstructor).subsetOf( this ).options.type as CollectionConstructor, subset = new SubsetOf( models, options ); - subset.resolve( this ); + ( subset as any ).resolve( this ); return subset; } @@ -75,7 +83,7 @@ export class Collection< R extends Record = Record> extends Transactional implem Mixable.mixins.populate( RefsCollection ); RefsCollection.prototype = this.prototype; - RefsCollection._attribute = CollectionRefsType; + RefsCollection._metatype = CollectionRefsType; this.Refs = this.Subset = RefsCollection; @@ -90,7 +98,7 @@ export class Collection< R extends Record = Record> extends Transactional implem this.prototype._itemEvents = eventsMap; } - if( definition.comparator ) this.prototype.comparator = definition.comparator; + if( definition.comparator !== void 0 ) this.prototype.comparator = definition.comparator; Transactional.onDefine.call( this, definition ); } @@ -112,7 +120,6 @@ export class Collection< R extends Record = Record> extends Transactional implem _byId : { [ id : string ] : R } set comparator( x : GenericComparator ){ - let compare; switch( typeof x ){ case 'string' : @@ -170,75 +177,28 @@ export class Collection< R extends Record = Record> extends Transactional implem isRoot && commit( this ); } - get( objOrId : string | R | Object ) : R { + get( objOrId : string | { id? : string, cid? : string } ) : R { if( objOrId == null ) return; if( typeof objOrId === 'object' ){ const id = objOrId[ this.idAttribute ]; - return ( id !== void 0 && this._byId[ id ] ) || this._byId[ (objOrId).cid ]; + return ( id !== void 0 && this._byId[ id ] ) || this._byId[ objOrId.cid ]; } else{ return this._byId[ objOrId ]; } } - each( iteratee : ( val : R, key : number ) => void, context? : any ){ - const fun = bindContext( iteratee, context ), - { models } = this; - - for( let i = 0; i < models.length; i++ ){ - fun( models[ i ], i ); - } - } - - every( iteratee : Predicate, context? : any ) : boolean { - const fun = toPredicateFunction( iteratee, context ), - { models } = this; - - for( let i = 0; i < models.length; i++ ){ - if( !fun( models[ i ], i ) ) return false; - } - - return true; + each( iteratee : ( val : R, key? : number ) => void, context? : any ) : void { + this.models.forEach( iteratee, context ); } - filter( iteratee : Predicate, context? : any ) : R[] { - const fun = toPredicateFunction( iteratee, context ), - { models } = this; - - return this.map( ( x, i ) => fun( x, i ) ? x : void 0 ); - } - - find( iteratee : Predicate, context? : any ) : R { - const fun = toPredicateFunction( iteratee, context ), - { models } = this; - - for( let i = 0; i < models.length; i++ ){ - if( fun( models[ i ], i ) ) return models[ i ]; - } - - return null; - } - - some( iteratee : Predicate, context? : any ) : boolean { - return Boolean( this.find( iteratee, context ) ); - } - - map< T >( iteratee : ( val : R, key : number ) => T, context? : any ) : T[]{ - const fun = bindContext( iteratee, context ), - { models } = this, - mapped = Array( models.length ); - - let j = 0; - - for( let i = 0; i < models.length; i++ ){ - const x = fun( models[ i ], i ); - x === void 0 || ( mapped[ j++ ] = x ); - } - - mapped.length = j; - - return mapped; + // Loop through the members in the scope of transaction. + // Transactional version of each() + updateEach( iteratee : ( val : R, key? : number ) => void ){ + const isRoot = transactionApi.begin( this ); + this.models.forEach( iteratee ); + isRoot && transactionApi.commit( this ); } _validateNested( errors : {} ) : number { @@ -263,7 +223,7 @@ export class Collection< R extends Record = Record> extends Transactional implem // idAttribute extracted from the model type. idAttribute : string - constructor( records? : ( R | {} )[], options : CollectionOptions = {}, shared? : number ){ + constructor( records? : ElementsArg, options : CollectionOptions = {}, shared? : number ){ super( _count++ ); this.models = []; this._byId = {}; @@ -298,7 +258,6 @@ export class Collection< R extends Record = Record> extends Transactional implem initialize(){} - get length() : number { return this.models.length; } first() : R { return this.models[ 0 ]; } last() : R { return this.models[ this.models.length - 1 ]; } at( a_index : number ) : R { @@ -316,14 +275,14 @@ export class Collection< R extends Record = Record> extends Transactional implem return copy; } - toJSON() : Object[] { - return this.models.map( model => model.toJSON() ); + toJSON( options? : object ) : any { + return this.models.map( model => model.toJSON( options ) ); } // Apply bulk in-place object update in scope of ad-hoc transaction - set( elements : ElementsArg = [], options : TransactionOptions = {} ) : this { + set( elements : ElementsArg = [], options : TransactionOptions = {} ) : this { if( (options).add !== void 0 ){ - this._log( 'warn', "Collection.set doesn't support 'add' option, behaving as if options.add === true.", options ); + this._log( 'warn', "Type-R:InvalidOption", "Collection.set doesn't support 'add' option, behaving as if options.add === true.", options ); } // Handle reset option here - no way it will be populated from the top as nested transaction. @@ -345,7 +304,7 @@ export class Collection< R extends Record = Record> extends Transactional implem * `false` cancel live updates. * `json => true | false` - filter updates */ - liveUpdates( enabled : LiveUpdatesOption ) : IOPromise { + liveUpdates( enabled : LiveUpdatesOption ) : IOPromise { if( enabled ){ this.liveUpdates( false ); @@ -359,19 +318,21 @@ export class Collection< R extends Record = Record> extends Transactional implem removed : id => this.remove( id ) }; - return this.getEndpoint().subscribe( this._liveUpdates, this ); + return this.getEndpoint().subscribe( this._liveUpdates, this ).then( () => this ); } else{ if( this._liveUpdates ){ this.getEndpoint().unsubscribe( this._liveUpdates, this ); this._liveUpdates = null; } + + // TODO: Return the resolved promise. } } _liveUpdates : object - fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise { + fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise { const options = { parse : true, ...a_options }, endpoint = this.getEndpoint(); @@ -408,7 +369,7 @@ export class Collection< R extends Record = Record> extends Transactional implem super.dispose(); } - reset( a_elements? : ElementsArg, options : TransactionOptions = {} ) : R[] { + reset( a_elements? : ElementsArg, options : TransactionOptions = {} ) : R[] { const isRoot = begin( this ), previousModels = this.models; @@ -437,7 +398,7 @@ export class Collection< R extends Record = Record> extends Transactional implem } // Add elements to collection. - add( a_elements : ElementsArg , options : AddOptions = {} ){ + add( a_elements : ElementsArg , options : AddOptions = {} ){ const elements = toElements( this, a_elements, options ), transaction = this.models.length ? addTransaction( this, elements, options ) : @@ -462,7 +423,7 @@ export class Collection< R extends Record = Record> extends Transactional implem // Apply bulk object update without any notifications, and return open transaction. // Used internally to implement two-phase commit. - _createTransaction( a_elements : ElementsArg, options : TransactionOptions = {} ) : CollectionTransaction | void { + _createTransaction( a_elements : ElementsArg, options : TransactionOptions = {} ) : CollectionTransaction | void { const elements = toElements( this, a_elements, options ); if( this.models.length ){ @@ -475,13 +436,13 @@ export class Collection< R extends Record = Record> extends Transactional implem } } - static _attribute = AggregatedType; + static _metatype = AggregatedType; /*********************************** * Collection manipulation methods */ - pluck( key : keyof R ) : any[] { + pluck( key : K ) : R[K][] { return this.models.map( model => model[ key ] ); } @@ -499,48 +460,13 @@ export class Collection< R extends Record = Record> extends Transactional implem return this; } - // Add a model to the end of the collection. - push(model : ElementsArg, options : CollectionOptions ) { - return this.add(model, assign({at: this.length}, options)); - } - - // Remove a model from the end of the collection. - pop( options : CollectionOptions ) : R { - var model = this.at(this.length - 1); - this.remove(model, { unset : true, ...options }); - return model; - } - // Remove and return given model. - // TODO: do not dispose the model for aggregated collection. unset( modelOrId : R | string, options? ) : R { const value = this.get( modelOrId ); this.remove( modelOrId, { unset : true, ...options } ); return value; } - // Add a model to the beginning of the collection. - unshift(model : ElementsArg, options : CollectionOptions ) { - return this.add(model, assign({at: 0}, options)); - } - - // Remove a model from the beginning of the collection. - shift( options? : CollectionOptions ) : R { - var model = this.at(0); - this.remove( model, { unset : true, ...options } ); - return model; - } - - // Slice out a sub-array of models from the collection. - slice() : R[] { - return slice.apply(this.models, arguments); - } - - indexOf( modelOrId : any ) : number { - const record = this.get( modelOrId ); - return this.models.indexOf( record ); - } - modelId( attrs : {} ) : any { return attrs[ this.model.prototype.idAttribute ]; } @@ -562,8 +488,8 @@ export class Collection< R extends Record = Record> extends Transactional implem return next; } - _log( level : tools.LogLevel, text : string, value ) : void { - tools.log( level, `[Collection Update] ${ this.model.prototype.getClassName() }.${ this.getClassName() }: ` + text, { + _log( level : LogLevel, topic : string, text : string, value : object, a_logger? : Logger ) : void { + ( a_logger || logger ).trigger( level, topic, `${ this.model.prototype.getClassName() }.${ this.getClassName() }: ` + text, { Argument : value, 'Attributes spec' : this.model.prototype._attributes }); @@ -572,39 +498,124 @@ export class Collection< R extends Record = Record> extends Transactional implem getClassName() : string { return super.getClassName() || 'Collection'; } + + /*********************************** + * Proxied Array methods + */ + + get length() : number { return this.models.length; } + + // Add a model to the end of the collection. + push(model : ElementsArg, options? : CollectionOptions ) { + return this.add(model, assign({at: this.length}, options)); + } + + // Remove a model from the end of the collection. + pop( options? : CollectionOptions ) : R { + var model = this.at(this.length - 1); + this.remove(model, { unset : true, ...options }); + return model; + } + + // Add a model to the beginning of the collection. + unshift(model : ElementsArg, options? : CollectionOptions ) { + return this.add(model, assign({at: 0}, options)); + } + + // Remove a model from the beginning of the collection. + shift( options? : CollectionOptions ) : R { + const model = this.at(0); + this.remove( model, { unset : true, ...options } ); + return model; + } + + // Slice out a sub-array of models from the collection. + slice( begin? : number, end? : number ) : R[] { + return this.models.slice( begin, end ); + } + + indexOf( modelOrId : string | Partial ) : number { + return this.models.indexOf( this.get( modelOrId ) ); + } + + filter( iteratee : Predicate, context? : any ) : R[] { + return this.models.filter( toPredicateFunction( iteratee ), context ); + } + + find( iteratee : Predicate, context? : any ) : R { + return this.models.find( toPredicateFunction( iteratee ), context ); + } + + some( iteratee : Predicate, context? : any ) : boolean { + return this.models.some( toPredicateFunction( iteratee ), context ); + } + + forEach( iteratee : ( val : R, key? : number ) => void, context? : any ) : void { + this.models.forEach( iteratee, context ); + } + + [ Symbol.iterator ]() : IterableIterator { + return this.models[ Symbol.iterator ](); + } + + values() : IterableIterator { + return this.models.values(); + } + + entries() : IterableIterator<[ number, R ]>{ + return this.models.entries(); + } + + every( iteratee : Predicate, context? : any ) : boolean { + return this.models.every( toPredicateFunction( iteratee ), context ); + } + + includes( idOrObj : string | Partial ){ + return Boolean( this.get( idOrObj ) ); + } + + // Map members to an array + map( iteratee : ( val : R, key? : number ) => T, context? : any ) : T[]{ + return this.models.map( iteratee, context ); + } + + + reduce( iteratee : (previousValue: any, currentValue: R, currentIndex?: number ) => T, init? : any ) : T { + return this.models.reduce( iteratee, init ); + } } +const d : CollectionConstructor = Collection; + + export type LiveUpdatesOption = boolean | ( ( x : any ) => boolean ); -export type ElementsArg = Object | Record | Object[] | Record[]; +export type ElementsArg = Partial | Partial[] // TODO: make is safe for parse to return null (?) -function toElements( collection : Collection, elements : ElementsArg, options : CollectionOptions ) : Elements { +function toElements( collection : Collection, elements : ElementsArg, options : CollectionOptions ) : Elements { const parsed = options.parse ? collection.parse( elements, options ) : elements; return Array.isArray( parsed ) ? parsed : [ parsed ]; } createSharedTypeSpec( Collection, SharedType ); -Record.Collection = Collection; +Record.Collection = Collection; -function bindContext( fun : Function, context? : any ){ - return context !== void 0 ? ( v, k ) => fun.call( context, v, k ) : fun; -} +function toPredicateFunction( iteratee : Predicate ){ + switch( typeof iteratee ){ + case 'function' : return iteratee; + case 'object' : + const keys = Object.keys( iteratee ); + + return x => { + for( let key of keys ){ + if( iteratee[ key ] !== x[ key ] ) + return false; + } -function toPredicateFunction( iteratee : Predicate, context : any ){ - if( typeof iteratee === 'object' ){ - // Wrap object to the predicate... - return x => { - for( let key in iteratee as any ){ - if( iteratee[ key ] !== x[ key ] ) - return false; + return true; } - - return true; - } + default : throw new Error( 'Invalid iteratee' ); } - - return bindContext( iteratee, context ); - } \ No newline at end of file diff --git a/src/type-r/collection/remove.ts b/src/type-r/collection/remove.ts index 2ae1b5b..abae8ec 100644 --- a/src/type-r/collection/remove.ts +++ b/src/type-r/collection/remove.ts @@ -8,10 +8,10 @@ * Most frequent operation - single element remove. Thus, it have the fast-path. */ -import { Record } from '../record' -import { free, CollectionCore, CollectionTransaction, removeIndex } from './commons' -import { eventsApi } from '../object-plus' -import { TransactionOptions, transactionApi } from '../transactions' +import { eventsApi } from '../object-plus'; +import { Record } from '../record'; +import { transactionApi, TransactionOptions } from '../transactions'; +import { CollectionCore, CollectionTransaction, free, removeIndex } from './commons'; const { trigger2, trigger3 } = eventsApi, { markAsDirty, begin, commit } = transactionApi; diff --git a/src/type-r/collection/set.ts b/src/type-r/collection/set.ts index 3eedce3..53df3ad 100644 --- a/src/type-r/collection/set.ts +++ b/src/type-r/collection/set.ts @@ -1,6 +1,6 @@ -import { Transaction, transactionApi } from '../transactions' -import { CollectionTransaction, logAggregationError, IdIndex, convertAndAquire, free, sortElements, CollectionOptions, addIndex, CollectionCore, Elements, freeAll } from './commons' -import { Record } from '../record' +import { Record } from '../record'; +import { Transaction, transactionApi } from '../transactions'; +import { addIndex, CollectionCore, CollectionOptions, CollectionTransaction, convertAndAquire, Elements, free, freeAll, IdIndex, logAggregationError, sortElements } from './commons'; const { begin, commit, markAsDirty } = transactionApi; @@ -21,7 +21,7 @@ export function emptySetTransaction( collection : CollectionCore, items : Elemen return new CollectionTransaction( collection, isRoot, added.slice(), [], [], needSort ); } - if( collection._aggregationError ) logAggregationError( collection ); + if( collection._aggregationError ) logAggregationError( collection, options ); } // No changes... @@ -51,7 +51,7 @@ export function setTransaction( collection, items, options ){ return new CollectionTransaction( collection, isRoot, added, removed, nested, sorted ); } - if( collection._aggregationError ) logAggregationError( collection ); + if( collection._aggregationError ) logAggregationError( collection, options ); } isRoot && commit( collection ); diff --git a/src/type-r/index.ts b/src/type-r/index.ts index 2b58373..5e459fc 100644 --- a/src/type-r/index.ts +++ b/src/type-r/index.ts @@ -1,25 +1,27 @@ +// Dummy polyfill to prevent exception in IE. +if( typeof Symbol === 'undefined' ){ + Object.defineProperty( window, 'Symbol', { value : { iterator : 'Symbol.iterator' }, configurable : true }); +} + +import { define, Events, Mixable as Class } from './object-plus/'; +// Define synonims for NestedTypes backward compatibility. +import { ChainableAttributeSpec, Record as Model } from './record'; + /** * Export everything */ -export * from './object-plus' -export * from './collection' -export * from './relations' -export * from './record' - -export * from './transactions' +export * from './collection'; +export * from './io-tools'; +export * from './object-plus'; +export * from './record'; +export * from './relations'; +export * from './transactions'; +export { Model, Class }; -export { IOEndpoint, IOPromise, createIOPromise } from './io-tools' -// Exported module itself is the global event bus. -import { Events } from './object-plus/' export const { on, off, trigger, once, listenTo, stopListening, listenToOnce } = Events; -import { Collection } from './collection' -// Define synonims for NestedTypes backward compatibility. -import { Record as Model } from './record' -import { define, Mixable as Class } from './object-plus/' -export { Model, Class }; export function attributes( attrDefs ) : typeof Model { @define class DefaultRecord extends Model { @@ -29,7 +31,6 @@ export function attributes( attrDefs ) : typeof Model { return DefaultRecord; } -import { ChainableAttributeSpec } from './record' /** Typeless attribute declaration with default value. */ export function value( x : any ) : ChainableAttributeSpec { diff --git a/src/type-r/io-tools.ts b/src/type-r/io-tools.ts index 403c080..00fbf5c 100644 --- a/src/type-r/io-tools.ts +++ b/src/type-r/io-tools.ts @@ -1,6 +1,6 @@ export interface IONode { _endpoint : IOEndpoint - _ioPromise : IOPromise< any > + _ioPromise : IOPromise< this > } export interface IOPromise extends Promise { @@ -89,9 +89,8 @@ export function startIO( self : IONode, promise : IOPromise, options : IOOp } ) .catch( err => { self._ioPromise = null; - - console.error( err ); + // Overlaps with a new `error` event. triggerAndBubble( self, 'error', self, err, options ); throw err; diff --git a/src/type-r/object-plus/events.ts b/src/type-r/object-plus/events.ts index da6e241..dcd4e14 100644 --- a/src/type-r/object-plus/events.ts +++ b/src/type-r/object-plus/events.ts @@ -1,12 +1,9 @@ -import { define, mixins, Mixable, Mixin, MixableConstructor, MixinsState, mixinRules, definitions, MixinMergeRules } from './mixins' -import { omit, transform } from './tools' -import { EventMap, EventsDefinition, EventSource, HandlersByEvent } from './eventsource' -import * as _eventsApi from './eventsource' +import * as _eventsApi from './eventsource'; +import { EventMap, EventsDefinition, EventSource, HandlersByEvent } from './eventsource'; +import { define, definitions, Mixable, MixableConstructor, mixinRules, MixinsState } from './mixins'; +import { omit, transform } from './tools'; -const { EventHandler, strings, on, off, once, trigger5, trigger2, trigger3 } = _eventsApi; - -/** @hidden */ -const eventSplitter = /\s+/; +const { strings, on, off, once, trigger5, trigger2, trigger3 } = _eventsApi; /** @hidden */ let _idCount = 0; @@ -16,7 +13,7 @@ function uniqueId() : string { return 'l' + _idCount++; } -export { EventMap, EventsDefinition } +export { EventMap, EventsDefinition }; export interface MessengerDefinition { _localEvents? : EventMap @@ -49,7 +46,7 @@ export type CallbacksByEvents = { [ events : string ] : Function } properties : mixinRules.merge, localEvents : mixinRules.merge }) -export abstract class Messenger implements Mixable, EventSource { +export class Messenger implements Mixable, EventSource { // Define extendable mixin static properties. static __super__ : object; static mixins : MixinsState; @@ -197,7 +194,7 @@ export const Events : Messenger = omit( Messenger.prototype, 'constr function toPropertyDescriptor( x : Property ) : PropertyDescriptor { if( x ){ - return typeof x === 'function' ? { get : < () => any >x } : x; + return typeof x === 'function' ? { get : < () => any >x, configurable : true } : x; } } diff --git a/src/type-r/object-plus/index.ts b/src/type-r/object-plus/index.ts index d08fb80..7d7dbbc 100644 --- a/src/type-r/object-plus/index.ts +++ b/src/type-r/object-plus/index.ts @@ -1,28 +1,11 @@ // (c) 2016 Vlad Balin and Volicon // MixtureJS may be freely distributed under the MIT license. -import * as tools from './tools' -export { tools } -export * from './mixins' -export * from './events' -import * as eventsApi from './eventsource' -export { eventsApi } +import * as eventsApi from './eventsource'; +import * as tools from './tools'; +export * from './events'; +export * from './logging'; +export * from './mixins'; +export { tools }; +export { eventsApi }; -import { Mixable, MixableConstructor } from './mixins' - -declare global { - interface ObjectConstructor { - /** Polyfill for Object.assign */ - assign< T >( dest : T, ...sources : Object[] ) : T - - /** Global logging interface, for console debugging. */ - log : tools.Log - - /** ES5 Object.extend */ - extend( protoProps : {}, staticProps : {} ) : MixableConstructor - } -} - -Object.extend = ( protoProps, staticProps ) => Mixable.extend( protoProps, staticProps ); -Object.assign || ( Object.assign = tools.assign ); -Object.log = tools.log; \ No newline at end of file diff --git a/src/type-r/object-plus/logging.ts b/src/type-r/object-plus/logging.ts new file mode 100644 index 0000000..666480c --- /dev/null +++ b/src/type-r/object-plus/logging.ts @@ -0,0 +1,83 @@ +import { Messenger } from './events' +import { define } from './mixins'; + +export type LogLevel = 'error' | 'warn' | 'debug' | 'info' | 'log'; +export type LoggerEventHandler = ( topic : string, msg : string, props : object ) => void; + +export const isProduction = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production', + logEvents : LogLevel[] = isProduction ? + [ 'error', 'info' ] : + [ 'error', 'warn', 'debug', 'info', 'log' ]; + +@define +export class Logger extends Messenger { + counter : { [ level in LogLevel ]? : number } = {} + + // Log events of the given log level to the console, optionally filtered by topic + logToConsole( level : LogLevel, filter? : RegExp ) : this { + return this.on( level, ( topic, msg, props ) => { + if( !filter || filter.test( topic ) ){ + const args = [ `[${topic}] ${msg}` ]; + + for( let name in props ){ + args.push( `\n\t${name}:`, toString( props[ name ] ) ); + } + + console[ level ].apply( console, args ); + } + }); + } + + // Fire exception on the events of the given log level, optionally filtered by topic + throwOn( level : LogLevel, filter? : RegExp ) : this { + return this.on( level, ( topic, msg, props ) => { + if( !filter || filter.test( topic ) ){ + throw new Error( `[${topic}] ${msg}` ); + } + }); + } + + // Count log events of the given level, optionally filtered by topic + count( level : LogLevel, filter? : RegExp ) : this { + return this.on( level, ( topic, msg, props ) => { + if( !filter || filter.test( topic ) ){ + this.counter[ level ] = ( this.counter[ level ] || 0 ) + 1; + } + }); + } + + trigger : ( level : LogLevel, topic : string, message : string, props? : object ) => this; + + off : ( event? : LogLevel ) => this; + on : ( handlers : { [ name in LogLevel ] : LoggerEventHandler } | LogLevel, handler? : LoggerEventHandler ) => this +} + +/** + * Convert objects to the plain text friendly format. + * primitives as in JSON. + */ +let toString = typeof window === 'undefined' ? + something => { + if( something && typeof something === 'object' ){ + const { __inner_state__ } = something, + value = __inner_state__ || something, + isArray = Array.isArray( value ); + + const body = isArray ? `[ length = ${ value.length } ]` : `{ ${ Object.keys( value ).join( ', ' )} }`; + + return something.constructor.name + ' ' + body; + } + + return JSON.stringify( something ); + } + : x => x; + +export const logger = new Logger(); + +if( typeof console !== 'undefined' ) { + for( let event of logEvents ){ + logger.logToConsole( event ); + } +} + +export const log : typeof logger.trigger = logger.trigger.bind( logger ); \ No newline at end of file diff --git a/src/type-r/object-plus/mixins.ts b/src/type-r/object-plus/mixins.ts index a80e66f..626a4fc 100644 --- a/src/type-r/object-plus/mixins.ts +++ b/src/type-r/object-plus/mixins.ts @@ -3,8 +3,8 @@ * * Vlad Balin & Volicon, (c) 2016-2017 */ -import { log, assign, omit, hashMap, getPropertyDescriptor, getBaseClass, defaults, transform } from './tools' -import { __extends } from 'tslib' +import { __extends } from 'tslib'; +import { assign, defaults, getBaseClass, hashMap, transform } from './tools'; export interface Subclass< T > extends MixableConstructor { new ( ...args ) : T @@ -113,7 +113,7 @@ export function define( ClassOrDefinition : object | MixableConstructor ){ // @define class if( typeof ClassOrDefinition === 'function' ){ predefine( ClassOrDefinition ); - ClassOrDefinition.define(); + ( ClassOrDefinition as MixableConstructor ).define(); } // @define({ prop : val, ... }) class else{ @@ -131,6 +131,16 @@ export function definitions( rules : MixinMergeRules ) : ClassDecorator { } } +// Create simple property list decorator +export function propertyListDecorator( listName: string ) : PropertyDecorator { + return function propList(proto, name : string) { + const list = proto.hasOwnProperty( listName ) ? + proto[ listName ] : (proto[ listName ] = (proto[ listName ] || []).slice()); + + list.push(name); + } +} + export function definitionDecorator( definitionKey, value ){ return ( proto : object, name : string ) => { MixinsState @@ -195,11 +205,6 @@ export class MixinsState { // For constructors, merge _both_ static and prototype members. if( typeof mixin === 'function' ){ - if( getBaseClass( mixin ) !== Object ){ - //TODO log error - console.log( 'Mixin error' ); - } - // Merge static members this.mergeObject( this.Class, mixin ); diff --git a/src/type-r/object-plus/tools.ts b/src/type-r/object-plus/tools.ts index 7a2e470..55acb26 100644 --- a/src/type-r/object-plus/tools.ts +++ b/src/type-r/object-plus/tools.ts @@ -1,71 +1,20 @@ -/** - * Simple overridable logging stubs, writing to `console` by default. - * Node.js users might want to redirect logging somewhere. - * - * This is the singleton avaliable globally through `Object.log` or - * exported [[log]] variable. - */ - -// Logger is the function. -export type Logger = ( level : LogLevel, error : string, props? : object ) => void; - -export type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug' | 'log'; - -const levelToNumber = { - none : 0, error : 1, warn : 2, info : 3, log : 4, debug : 5 -} - -export interface Log extends Logger { - level : number - throw : number - stop : number - logger : Logger -} - -export const log : Log = function( a_level : LogLevel, a_msg : string, a_props : object ){ - let levelAsNumber = levelToNumber[ a_level ], msg, props, level; - - if( levelAsNumber === void 0 && !a_props ){ - levelAsNumber = 4; - msg = a_level; - props = a_msg; - level = 'log'; - } - else{ - msg = a_msg, level = a_level, props = a_props; - } - - if( levelAsNumber <= log.level ){ - if( levelAsNumber <= log.throw || !log.logger ){ - const error = new Error( msg ); - (error as any).props = props; - throw error; - } - else{ - log.logger( level, msg, props ); - - if( levelAsNumber <= log.stop ){ - debugger; - } + /** Similar to underscore `_.defaults` */ +export function defaults< T >( dest : T, ...sources : Object[] ) : T +export function defaults< T >( dest : T, source : Object ) : T { + for( var name in source ) { + if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) { + dest[ name ] = source[ name ]; } } -} - -declare var process: any; - -log.level = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production' ? 1 : 2; -log.throw = 0; -log.stop = 0; -if( typeof console !== 'undefined' ) { - log.logger = function _console( level : LogLevel, error : string, props : object ){ - const args = [ error ]; - for( let name in props ){ - args.push( `\n\t${name}:`, props[ name ] ); + if( arguments.length > 2 ){ + for( let i = 2; i < arguments.length; i++ ){ + const other = arguments[ i ]; + other && defaults( dest, other ); } - - console[ level ].apply( console, args ); } + + return dest; } /** Check if value is raw JSON */ @@ -242,34 +191,6 @@ export function assign< T >( dest : T, source : Object ) : T { return dest; } -/** Similar to underscore `_.defaults` */ -export function defaults< T >( dest : T, ...sources : Object[] ) : T -export function defaults< T >( dest : T, source : Object ) : T { - for( var name in source ) { - if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) { - dest[ name ] = source[ name ]; - } - } - - if( arguments.length > 2 ){ - for( let i = 2; i < arguments.length; i++ ){ - const other = arguments[ i ]; - other && defaults( dest, other ); - } - } - - return dest; -} - -// Polyfill for IE10. Should fix problems with babel and statics inheritance. -declare global { - interface ObjectConstructor { - setPrototypeOf( target : Object, proto : Object ); - } -} - -Object.setPrototypeOf || ( Object.setPrototypeOf = defaults ); - /** Similar to underscore `_.keys` */ export function keys( o : any ) : string[]{ return o ? Object.keys( o ) : []; diff --git a/src/type-r/record/attrDef.ts b/src/type-r/record/attrDef.ts new file mode 100644 index 0000000..a13bede --- /dev/null +++ b/src/type-r/record/attrDef.ts @@ -0,0 +1,203 @@ +/** + * Type spec engine. Declare attributes using chainable syntax, + * and returns object with spec. + */ +import { IOEndpoint } from '../io-tools'; +import { definitionDecorator, EventMap, EventsDefinition, tools } from '../object-plus'; +import { Transactional } from '../transactions'; +import { AttributeOptions, Parse, AnyType, getMetatype } from './metatypes'; +import { AttributesContainer } from './updates'; + +const { assign } = tools; + +export interface AttributeCheck { + ( value : any, key : string ) : boolean + error? : any +} + +export class ChainableAttributeSpec { + options : AttributeOptions; + + constructor( options : AttributeOptions ) { + // Shallow copy options, fill it with defaults. + this.options = { getHooks : [], transforms : [], changeHandlers : []}; + if( options ) assign( this.options, options ); + } + + check( check : AttributeCheck, error? : any ) : ChainableAttributeSpec { + function validate( model, value, name ){ + if( !check.call( model, value, name ) ){ + const msg = error || check.error || name + ' is not valid'; + return typeof msg === 'function' ? msg.call( model, name ) : msg; + } + } + + const prev = this.options.validate; + + return this.metadata({ + validate : prev ? ( + function( model, value, name ){ + return prev( model, value, name ) || validate( model, value, name ); + } + ) : validate + }); + } + + get asProp(){ + return definitionDecorator( 'attributes', this ); + } + + get as(){ return this.asProp; } + + get isRequired() : ChainableAttributeSpec { + return this.required; + } + + get required() : ChainableAttributeSpec { + return this.metadata({ isRequired : true }); + } + + endpoint( endpoint : IOEndpoint ){ + return this.metadata({ endpoint }); + } + + watcher( ref : string | ( ( value : any, key : string ) => void ) ) : ChainableAttributeSpec { + return this.metadata({ _onChange : ref }); + } + + // Attribute-specific parse transform + parse( fun : Parse ) : ChainableAttributeSpec { + return this.metadata({ parse : fun }); + } + + toJSON( fun ) : ChainableAttributeSpec { + return this.metadata({ + toJSON : typeof fun === 'function' ? fun : ( fun ? ( x, k, o ) => x && x.toJSON( o ) : emptyFunction ) + }); + } + + // Attribute get hook. + get( fun ) : ChainableAttributeSpec { + return this.metadata({ + getHooks : this.options.getHooks.concat( fun ) + }); + } + + // Attribute set hook. + set( fun ) : ChainableAttributeSpec { + function handleSetHook( next, prev, record : AttributesContainer, options ) { + if( this.isChanged( next, prev ) ) { + const changed = fun.call( record, next, this.name ); + return changed === void 0 ? prev : this.convert( changed, prev, record, options ); + } + + return prev; + } + + return this.metadata({ + transforms : this.options.transforms.concat( handleSetHook ) + }); + } + + changeEvents( events : boolean ) : ChainableAttributeSpec { + return this.metadata({ changeEvents : events }); + } + + // Subsribe to events from an attribute. + events( map : EventsDefinition ) : ChainableAttributeSpec { + const eventMap = new EventMap( map ); + + function handleEventsSubscribtion( next, prev, record : AttributesContainer ){ + prev && prev.trigger && eventMap.unsubscribe( record, prev ); + + next && next.trigger && eventMap.subscribe( record, next ); + } + + return this.metadata({ + changeHandlers : this.options.changeHandlers.concat( handleEventsSubscribtion ) + }); + } + + // Creates a copy of the spec. + get has() : ChainableAttributeSpec { + return this; + } + + metadata( options : AttributeOptions ) : ChainableAttributeSpec { + const cloned = new ChainableAttributeSpec( this.options ); + assign( cloned.options, options ); + return cloned; + } + + value( x ) : ChainableAttributeSpec { + return this.metadata({ value : x, hasCustomDefault : true }); + } + + static from( spec : any ) : ChainableAttributeSpec { + let attrSpec : ChainableAttributeSpec; + + if( typeof spec === 'function' ) { + attrSpec = type( spec ); + } + else if( spec && spec instanceof ChainableAttributeSpec ) { + attrSpec = spec; + } + else{ + // Infer type from value. + const type = inferType( spec ); + + // Transactional types inferred from values must have shared type. + if( type && type.prototype instanceof Transactional ){ + attrSpec = type( ( type as typeof Transactional ).shared ).value( spec ); + } + // All others will be created in regular way. + else{ + attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true }); + } + } + + return attrSpec; + } +} + +function emptyFunction(){} + +export function type( this : void, type : ChainableAttributeSpec | Function, value? : any ) : ChainableAttributeSpec { + if( type instanceof ChainableAttributeSpec ) return type; + + const defaultValue = value === void 0 ? getMetatype( type ).defaultValue : value; + return new ChainableAttributeSpec( { + type, + value : defaultValue, + hasCustomDefault : defaultValue !== void 0 + } ); +} + +function inferType( value : {} ) : Function { + switch( typeof value ) { + case 'number' : + return Number; + case 'string' : + return String; + case 'boolean' : + return Boolean; + case 'undefined' : + return void 0; + case 'object' : + return value ? value.constructor : void 0; + } +} + +export function createSharedTypeSpec( Constructor : Function, Attribute : typeof AnyType ){ + if( !Constructor.hasOwnProperty( 'shared' ) ){ + Object.defineProperty( Constructor, 'shared', { + get(){ + return new ChainableAttributeSpec({ + value : null, + type : Constructor, + _metatype : Attribute + }); + } + }); + } +} \ No newline at end of file diff --git a/src/type-r/record/attributes/any.ts b/src/type-r/record/attributes/any.ts index 3defbf8..3a8a163 100644 --- a/src/type-r/record/attributes/any.ts +++ b/src/type-r/record/attributes/any.ts @@ -104,8 +104,8 @@ export class AnyType implements AttributeUpdatePipeline { validate( record : AttributesContainer, value : any, key : string ){} - toJSON( value, key ) { - return value && value.toJSON ? value.toJSON() : value; + toJSON( value, key, options? : object ) { + return value && value.toJSON ? value.toJSON( options ) : value; } createPropertyDescriptor() : PropertyDescriptor | void { @@ -181,8 +181,6 @@ export class AnyType implements AttributeUpdatePipeline { return this.value; } - parse : Parse - constructor( public name : string, a_options : AttributeOptions ) { // Save original options... this.options = a_options; @@ -232,9 +230,6 @@ export class AnyType implements AttributeUpdatePipeline { // `convert` is default transform, which is always present... transforms.unshift( this.convert ); - // Attribute-level parse transform must always go first... - this.parse = parse || this.parse; - // Get hook from the attribute will be used first... if( this.get ) getHooks.unshift( this.get ); @@ -254,6 +249,16 @@ export class AnyType implements AttributeUpdatePipeline { this.transform = transforms.length ? transforms.reduce( chainTransforms ) : this.transform; this.handleChange = changeHandlers.length ? changeHandlers.reduce( chainChangeHandlers ) : this.handleChange; + + // Attribute-level parse transform are attached as update hooks modifiers... + const { doInit, doUpdate } = this; + this.doInit = parse ? function( value, record : AttributesContainer, options : TransactionOptions ){ + return doInit.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options ); + } : doInit; + + this.doUpdate = parse ? function( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){ + return doUpdate.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options, nested ); + } : doUpdate; } getHook : ( value, key : string ) => any = null diff --git a/src/type-r/record/attributes/attrDef.ts b/src/type-r/record/attributes/attrDef.ts index a1b2da6..f538d5b 100644 --- a/src/type-r/record/attributes/attrDef.ts +++ b/src/type-r/record/attributes/attrDef.ts @@ -47,6 +47,8 @@ export class ChainableAttributeSpec { return definitionDecorator( 'attributes', this ); } + get as(){ return this.asProp; } + get isRequired() : ChainableAttributeSpec { return this.metadata({ isRequired : true }); } @@ -66,7 +68,7 @@ export class ChainableAttributeSpec { toJSON( fun ) : ChainableAttributeSpec { return this.metadata({ - toJSON : typeof fun === 'function' ? fun : ( fun ? x => x && x.toJSON() : emptyFunction ) + toJSON : typeof fun === 'function' ? fun : ( fun ? ( x, k, o ) => x && x.toJSON( o ) : emptyFunction ) }); } @@ -126,10 +128,44 @@ export class ChainableAttributeSpec { value( x ) : ChainableAttributeSpec { return this.metadata({ value : x, hasCustomDefault : true }); } + + static from( spec : any ) : ChainableAttributeSpec { + let attrSpec : ChainableAttributeSpec; + + if( typeof spec === 'function' ) { + attrSpec = spec.has; + } + else if( spec && spec instanceof ChainableAttributeSpec ) { + attrSpec = spec; + } + else{ + // Infer type from value. + const type = inferType( spec ); + + // Transactional types inferred from values must have shared type. + if( type && type.prototype instanceof Transactional ){ + attrSpec = (type).shared.value( spec ); + } + // All others will be created in regular way. + else{ + attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true }); + } + } + + return attrSpec; + } } function emptyFunction(){} +export function type( this : void, spec : ChainableAttributeSpec | Function ) : ChainableAttributeSpec { + return spec instanceof ChainableAttributeSpec ? spec : new ChainableAttributeSpec( { + type : spec, + value : spec._attribute.defaultValue, + hasCustomDefault : spec._attribute.defaultValue !== void 0 + } );; +} + declare global { interface Function{ value : ( x : any ) => ChainableAttributeSpec; @@ -155,42 +191,12 @@ Object.defineProperty( Function.prototype, 'asProp', { Object.defineProperty( Function.prototype, 'has', { get() { // workaround for sinon.js and other libraries overriding 'has' - return this._has || new ChainableAttributeSpec( { - type : this, - value : this._attribute.defaultValue, - hasCustomDefault : this._attribute.defaultValue !== void 0 - } ); + return this._has || type( this ); }, set( value ) { this._has = value; } } ); -export function toAttributeOptions( spec : any ) : AttributeOptions { - let attrSpec : ChainableAttributeSpec; - - if( typeof spec === 'function' ) { - attrSpec = spec.has; - } - else if( spec && spec instanceof ChainableAttributeSpec ) { - attrSpec = spec; - } - else{ - // Infer type from value. - const type = inferType( spec ); - - // Transactional types inferred from values must have shared type. - if( type && type.prototype instanceof Transactional ){ - attrSpec = (type).shared.value( spec ); - } - // All others will be created in regular way. - else{ - attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true }); - } - } - - return attrSpec.options; -} - function inferType( value : {} ) : Function { switch( typeof value ) { case 'number' : diff --git a/src/type-r/record/attributes/basic.ts b/src/type-r/record/attributes/basic.ts index 1c0aef6..f82b029 100644 --- a/src/type-r/record/attributes/basic.ts +++ b/src/type-r/record/attributes/basic.ts @@ -24,8 +24,8 @@ class ImmutableClassType extends AnyType { return next == null || next instanceof this.type ? next : new this.type( next ); } - toJSON( value ){ - return value && value.toJSON ? value.toJSON() : value; + toJSON( value, key? : string, options? : object ){ + return value && value.toJSON ? value.toJSON( options ) : value; } clone( value ) { diff --git a/src/type-r/record/attributes/index.ts b/src/type-r/record/attributes/index.ts index c43bb40..07226c5 100644 --- a/src/type-r/record/attributes/index.ts +++ b/src/type-r/record/attributes/index.ts @@ -10,7 +10,7 @@ export * from './attrDef' import { AnyType } from './any' import { ConstructorsMixin, constructorsMixin } from './updates' -import { toAttributeOptions, ChainableAttributeSpec } from './attrDef' +import { ChainableAttributeSpec } from './attrDef' import { CompiledReference } from '../../traversable' import { IOEndpoint } from '../../io-tools' @@ -22,9 +22,6 @@ export interface RecordAttributesMixin extends ConstructorsMixin { // Attribute's property descriptors properties : PropertyDescriptorMap - // Attributes serialization - _toJSON() : any - // Event map for record's local events. _localEvents? : eventsApi.EventMap, @@ -47,8 +44,6 @@ export default function( attributesDefinition : object, baseClassAttributes : At _attributes : new ConstructorsMixin.AttributesCopy( allAttributes ), _attributesArray : Object.keys( allAttributes ).map( key => allAttributes[ key ] ), properties : _.transform( {}, myAttributes, x => x.createPropertyDescriptor() ), - _toJSON : createToJSON( allAttributes ), - ...parseMixin( allAttributes ), ...localEventsMixin( myAttributes ), _endpoints : _.transform( {}, allAttributes, attrDef => attrDef.options.endpoint ) } @@ -56,39 +51,7 @@ export default function( attributesDefinition : object, baseClassAttributes : At // Create attribute from the type spec. export function createAttribute( spec : any, name : string ) : AnyType { - return AnyType.create( toAttributeOptions( spec ), name ); -} - -function parseMixin( attributes : AttributeDescriptors ){ - const attrsWithParse = Object.keys( attributes ).filter( name => attributes[ name ].parse ); - - return attrsWithParse.length ? { - _parse : new Function( 'json', ` - var _attrs = this._attributes; - - ${ attrsWithParse.map( name => ` - json.${ name } === void 0 || ( json.${ name } = _attrs.${ name }.parse.call( this, json.${ name }, "${ name }" ) ); - ` ).join('')} - - return json; - ` ) - } : {}; -} - -function createToJSON( attributes : AttributeDescriptors ) : () => void { - return new Function(` - var json = {}, - v = this.attributes, - a = this._attributes; - - ${ Object.keys( attributes ).map( key => { - if( attributes[ key ].toJSON ){ - return `json.${key} = a.${key}.toJSON.call( this, v.${ key }, '${key}' );`; - } - } ).join( '\n' ) } - - return json; - `) as any; + return AnyType.create( ChainableAttributeSpec.from( spec ).options, name ); } export function createSharedTypeSpec( Constructor : Function, Attribute : typeof AnyType ){ diff --git a/src/type-r/record/attributes/owned.ts b/src/type-r/record/attributes/owned.ts index 5b4a0f3..ba2bcb9 100644 --- a/src/type-r/record/attributes/owned.ts +++ b/src/type-r/record/attributes/owned.ts @@ -13,7 +13,7 @@ export class AggregatedType extends AnyType { return value ? value.clone() : value; } - toJSON( x ){ return x && x.toJSON(); } + toJSON( x, key : string, options : object ){ return x && x.toJSON( options ); } doInit( value, record : AttributesContainer, options : ConstructorOptions ){ const v = options.clone ? this.clone( value ) : ( diff --git a/src/type-r/record/index.ts b/src/type-r/record/index.ts index 128e40f..d402f8a 100644 --- a/src/type-r/record/index.ts +++ b/src/type-r/record/index.ts @@ -1,14 +1,15 @@ -import { Record, RecordDefinition } from './record' -import { Mixable, tools, predefine, define, MixinsState } from '../object-plus' -import compile from './attributes' -import { Transactional } from '../transactions' +import { predefine, tools } from '../object-plus'; +import { Transactional } from '../transactions'; +import { ChainableAttributeSpec, createSharedTypeSpec, type } from './attrDef'; +import { SharedType } from './metatypes'; +import { createAttributesMixin } from './mixin'; +import { Record, RecordDefinition } from './record'; -import { createSharedTypeSpec, AggregatedType, MSDateType, TimestampType, NumericType, SharedType } from './attributes' +export * from './attrDef'; +export * from './metatypes'; +export { Record }; -export * from './attributes' -export { Record } - -const { assign, defaults, omit, getBaseClass } = tools; +const { assign, defaults } = tools; Record.onExtend = function( this : typeof Record, BaseClass : typeof Record ){ Transactional.onExtend.call( this, BaseClass ); @@ -16,7 +17,7 @@ Record.onExtend = function( this : typeof Record, BaseClass : typeof Record ){ // Create the default collection const Class = this; - @predefine class DefaultCollection extends BaseClass.Collection { + @predefine class DefaultCollection extends BaseClass.Collection { static model = Class; } @@ -36,7 +37,7 @@ Record.onDefine = function( definition : RecordDefinition, BaseClass : typeof Re const baseProto : Record = BaseClass.prototype; // Compile attributes spec, creating definition mixin. - const { properties, _localEvents, ...dynamicMixin } = compile( this.attributes = getAttributes( definition ), baseProto._attributes ); + const { properties, _localEvents, ...dynamicMixin } = createAttributesMixin( this.attributes = getAttributes( definition ), baseProto._attributes ); assign( this.prototype, dynamicMixin ); definition.properties = defaults( definition.properties || {}, properties ); @@ -54,7 +55,6 @@ Record.onDefine = function( definition : RecordDefinition, BaseClass : typeof Re if( definition.endpoint ) this.Collection.prototype._endpoint = definition.endpoint; } -Record._attribute = AggregatedType; createSharedTypeSpec( Record, SharedType ); function getAttributes({ defaults, attributes, idAttribute } : RecordDefinition ) { @@ -70,20 +70,20 @@ function getAttributes({ defaults, attributes, idAttribute } : RecordDefinition declare var Reflect; -export function attr( proto, attrName? ) : any { +export function attr( proto : object, attrName : string ) : void; +export function attr( spec : any ) : PropertyDecorator; +export function attr( proto, attrName? : string ) : any { if( attrName ){ // Called without the spec. Extract the type. if( typeof Reflect !== 'undefined' && Reflect.getMetadata ){ - Reflect - .getMetadata( "design:type", proto, attrName ) - .asProp( proto, attrName ); + type( Reflect.getMetadata( "design:type", proto, attrName ) ).asProp( proto, attrName ); } else{ - proto._log( 'error', 'Add import "reflect-metadata"; as the first line of your app.' ); + proto._log( 'error', 'Type-R:MissingImport', 'Add import "reflect-metadata"; as the first line of your app.' ); } } else{ - return proto.asProp; + return ChainableAttributeSpec.from( proto ).asProp; } } diff --git a/src/type-r/record/io-mixin.ts b/src/type-r/record/io-mixin.ts index 1a715c5..5d861a5 100644 --- a/src/type-r/record/io-mixin.ts +++ b/src/type-r/record/io-mixin.ts @@ -1,11 +1,11 @@ -import { getOwnerEndpoint, startIO, IOOptions, IOEndpoint, IOPromise, IONode } from '../io-tools' +import { IOEndpoint, IONode, IOOptions, IOPromise, startIO } from '../io-tools'; export interface IORecord extends IONode { getEndpoint() : IOEndpoint - save( options? : IOOptions ) : IOPromise - fetch( options? : IOOptions ) : IOPromise - destroy( options? : IOOptions ) : IOPromise - toJSON() : any + save( options? : IOOptions ) : IOPromise + fetch( options? : IOOptions ) : IOPromise + destroy( options? : IOOptions ) : IOPromise + toJSON( options? : object ) : any isNew() : boolean id : string | number set( json : object, options : object ) @@ -14,7 +14,7 @@ export interface IORecord extends IONode { export const IORecordMixin = { save( this : IORecord, options : IOOptions = {} ){ const endpoint = this.getEndpoint(), - json = this.toJSON(); + json = this.toJSON( options ); return startIO( this, @@ -53,6 +53,8 @@ export const IORecordMixin = { else{ this.dispose(); } + + return this; } ) } diff --git a/src/type-r/record/metatypes/README.md b/src/type-r/record/metatypes/README.md new file mode 100644 index 0000000..d7b6a54 --- /dev/null +++ b/src/type-r/record/metatypes/README.md @@ -0,0 +1,42 @@ +Attributes run-time metadata, record update pipleline, and attribute definitions. + +- `any.ts` - `AnyType` is the base class for the typeless attribute descriptor. +- `updates.ts` - transactional updates. +- `attrDef.ts` - chainable attribute spec definition. + +## Design + +Record's attributes has descriptors stored on `record._attributes`. Attribute descriptor controls all aspects of attribute behavior. + +`AnyType` is the base class for an attribute, and it represents the *typeless attribute*. This attribute might hold value of an type and perform _no type assertions and convertions_. It must implement all the update pipeline methods, though. + +### Streamlined attributes semantic + +Mutable attributes (changes _are_ detected): + +- aggregated (Record, Collection) +- shared (Record.shared, Collection.shared, Collection.Refs) +- shared serializable (Record.from, Collection.subsetOf) + +Typeless attribute: must be anything. + +- No type convertion. +- No complex comparisons and other stuff, just the raw assignments. + +Immutable attributes (changes are _not_ detected): + +- JSON (Object, Array) +- Primitives (Boolean, Number, String) +- Date +- Function +- Class (custom constructor) + +Common for immutable things: + +- dispose is noop. +- clone is noop. +- no update in place. +- no change detection. + +Consider adding value links to perform pure updates. record.linkAt( 'key1' ).at( 'key2' ).set( value ); +Consider making it optional dependency. \ No newline at end of file diff --git a/src/type-r/record/metatypes/any.ts b/src/type-r/record/metatypes/any.ts new file mode 100644 index 0000000..f7d170f --- /dev/null +++ b/src/type-r/record/metatypes/any.ts @@ -0,0 +1,282 @@ +import { IOEndpoint } from '../../io-tools'; +import { LogLevel, tools, Logger } from '../../object-plus'; +import { TransactionOptions } from '../../transactions'; +import { AttributesContainer, AttributeUpdatePipeline, RecordTransaction, setAttribute } from '../updates'; + +const { notEqual, assign} = tools; + +export type Transform = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => any; +export type ChangeHandler = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => void; + +export interface AttributeOptions { + _metatype? : typeof AnyType + validate? : ( record : AttributesContainer, value : any, key : string ) => any + isRequired? : boolean + changeEvents? : boolean + + endpoint? : IOEndpoint + + type? : Function + value? : any + hasCustomDefault? : boolean + + parse? : Parse + toJSON? : AttributeToJSON + + getHooks? : GetHook[] + transforms? : Transform[] + changeHandlers? : ChangeHandler[] + + _onChange? : ChangeAttrHandler +} + +export type Parse = ( value : any, key : string ) => any; +export type GetHook = ( value : any, key : string ) => any; +export type AttributeToJSON = ( value : any, key : string ) => any +export type AttributeParse = ( value : any, key : string ) => any +export type ChangeAttrHandler = ( ( value : any, attr : string ) => void ) | string; + +// TODO: interface differs from options, do something obout it +const emptyOptions : TransactionOptions = {}; + +/** + * Typeless attribute. Is the base class for all other attributes. + */ +export class AnyType implements AttributeUpdatePipeline { + // Factory method to create attribute from options + static create : ( options : AttributeOptions, name : string ) => AnyType; + + /** + * Update pipeline functions + * ========================= + * + * Stage 0. canBeUpdated( value ) + * - presence of this function implies attribute's ability to update in place. + */ + canBeUpdated( prev, next, options : TransactionOptions ) : any {} + + /** + * Stage 1. Transform stage + */ + transform( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; } + + // convert attribute type to `this.type`. + convert( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; } + + /** + * Stage 2. Check if attr value is changed + */ + isChanged( a : any, b : any ) : boolean { + return notEqual( a, b ); + } + + /** + * Stage 3. Handle attribute change + */ + handleChange( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) {} + + /** + * End update pipeline definitions. + */ + + // create empty object passing backbone options to constructor... + create() { return void 0; } + + // generic clone function for typeless attributes + // Must be overriden in sublass + clone( value : any, record : AttributesContainer ) { + return value; + } + + dispose( record : AttributesContainer, value : any ) : void { + this.handleChange( void 0, value, record, emptyOptions ); + } + + validate( record : AttributesContainer, value : any, key : string ) : any {} + + toJSON( value, key, options? : object ) { + return value && value.toJSON ? value.toJSON( options ) : value; + } + + createPropertyDescriptor() : PropertyDescriptor | void { + const { name, getHook } = this; + + if( name !== 'id' ){ + return { + // call to optimized set function for single argument. + set( value ){ + setAttribute( this, name, value ); + }, + + // attach get hook to the getter function, if it present + get : ( + getHook ? + function() { + return getHook.call( this, this.attributes[ name ], name ); + } : + function() { return this.attributes[ name ]; } + ), + + configurable : true + } + } + } + + value : any + + // Used as global default value for the given metatype + static defaultValue : any; + + type : Function + + initialize( name : string, options : TransactionOptions ){} + + options : AttributeOptions + + doInit( value, record : AttributesContainer, options : TransactionOptions ){ + const v = value === void 0 ? this.defaultValue() : value, + x = this.transform( v, void 0, record, options ); + + this.handleChange( x, void 0, record, options ); + return x; + } + + doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){ + const { name } = this, + { attributes } = record, + prev = attributes[ name ]; + + const next = this.transform( value, prev, record, options ); + attributes[ name ] = next; + + if( this.isChanged( next, prev ) ) { + // Do the rest of the job after assignment + this.handleChange( next, prev, record, options ); + return true; + } + + return false; + } + + propagateChanges : boolean + + protected _log( level : LogLevel, code : string, text : string, value, record : AttributesContainer, logger : Logger ){ + record._log( level, code, `${record.getClassName()}.${ this.name } ${ text }`, { + 'New value' : value, + 'Prev. value' : record.attributes[ this.name ] + }, logger ); + } + + defaultValue(){ + return this.value; + } + + constructor( public name : string, a_options : AttributeOptions ) { + // Save original options... + this.options = a_options; + + // Clone options. + const options : AttributeOptions = assign( { getHooks : [], transforms : [], changeHandlers : [] }, a_options ); + options.getHooks = options.getHooks.slice(); + options.transforms = options.transforms.slice(); + options.changeHandlers = options.changeHandlers.slice(); + + const { + value, type, parse, toJSON, changeEvents, + validate, getHooks, transforms, changeHandlers + } = options; + + // Initialize default value... + this.value = value; + this.type = type; + + // TODO: An opportunity to optimize for attribute subtype. + if( !options.hasCustomDefault && type ){ + this.defaultValue = this.create; + } + else if( tools.isValidJSON( value ) ){ + // JSON literals must be deep copied. + this.defaultValue = new Function( `return ${ JSON.stringify( value ) };` ) as any; + } + else{ + this.defaultValue = this.defaultValue; + } + + // Changes must be bubbled when they are not disabled for an attribute and transactional object. + this.propagateChanges = changeEvents !== false; + + this.toJSON = toJSON === void 0 ? this.toJSON : toJSON; + + this.validate = validate || this.validate; + + if( options.isRequired ){ + this.validate = wrapIsRequired( this.validate ); + } + + /** + * Assemble pipelines... + */ + + // `convert` is default transform, which is always present... + transforms.unshift( this.convert ); + + // Get hook from the attribute will be used first... + if( this.get ) getHooks.unshift( this.get ); + + // let subclasses configure the pipeline... + this.initialize.call( this, options ); + + // let attribute spec configure the pipeline... + if( getHooks.length ){ + const getHook = this.getHook = getHooks.reduce( chainGetHooks ); + + const { validate } = this; + this.validate = function( record : AttributesContainer, value : any, key : string ){ + return validate.call( this, record, getHook.call( record, value, key ), key ); + } + } + + this.transform = transforms.length ? transforms.reduce( chainTransforms ) : this.transform; + + this.handleChange = changeHandlers.length ? changeHandlers.reduce( chainChangeHandlers ) : this.handleChange; + + // Attribute-level parse transform are attached as update hooks modifiers... + const { doInit, doUpdate } = this; + this.doInit = parse ? function( value, record : AttributesContainer, options : TransactionOptions ){ + return doInit.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options ); + } : doInit; + + this.doUpdate = parse ? function( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){ + return doUpdate.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options, nested ); + } : doUpdate; + } + + getHook : ( value, key : string ) => any = null + get : ( value, key : string ) => any +} + + +function chainGetHooks( prevHook : GetHook, nextHook : GetHook ) : GetHook { + return function( value, name ) { + return nextHook.call( this, prevHook.call( this, value, name ), name ); + } +} + +function chainTransforms( prevTransform : Transform, nextTransform : Transform ) : Transform { + return function( next, prev, record, options ) { + return nextTransform.call( this, prevTransform.call( this, next, prev, record, options ), prev, record, options ); + } +} + +function chainChangeHandlers( prevHandler : ChangeHandler, nextHandler : ChangeHandler ) : ChangeHandler { + return function( next, prev, record, options ) { + prevHandler.call( this, next, prev, record, options ); + nextHandler.call( this, next, prev, record, options ); + } +} + +function wrapIsRequired( validate ){ + return function( record : AttributesContainer, value : any, key : string ){ + return value ? validate.call( this, record, value, key ) : 'Required'; + } +} \ No newline at end of file diff --git a/src/type-r/record/metatypes/basic.ts b/src/type-r/record/metatypes/basic.ts new file mode 100644 index 0000000..19ff9b9 --- /dev/null +++ b/src/type-r/record/metatypes/basic.ts @@ -0,0 +1,157 @@ +/** + * Built-in JSON types attributes: Object, Array, Number, String, Boolean, and immutable class. + * + * Adds type assertions, default validation, and optimized update pipeline. + */ + +import { TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer } from '../updates'; + +/** + * Custom class must be immutable class which implements toJSON() method + * with a constructor taking json. + */ +export class ImmutableClassType extends AnyType { + type : new ( value? : any ) => {} + + create(){ + return new this.type(); + } + + convert( next : any ) : any { + return next == null || next instanceof this.type ? next : new this.type( next ); + } + + toJSON( value, key? : string, options? : object ){ + return value && value.toJSON ? value.toJSON( options ) : value; + } + + clone( value ) { + return new this.type( this.toJSON( value ) ); + } + + isChanged( a, b ){ + return a !== b; + } +} + +/** + * Optimized attribute of primitive type. + * + * Primitives has specialized simplified pipeline. + */ +export class PrimitiveType extends AnyType { + type : NumberConstructor | StringConstructor | BooleanConstructor + + dispose(){} + create() { return this.type(); } + + toJSON( value ) { return value; } + + convert( next ) { return next == null ? next : this.type( next ); } + + isChanged( a, b ) { return a !== b; } + + clone( value ) { return value; } + + doInit( value, record : AttributesContainer, options : TransactionOptions ){ + return this.transform( value === void 0 ? this.value : value, void 0, record, options ); + } + + doUpdate( value, record, options, nested ){ + const { name } = this, + { attributes } = record, + prev = attributes[ name ]; + + return prev !== ( attributes[ name ] = this.transform( value, prev, record, options ) ); + } + + initialize(){ + if( !this.options.hasCustomDefault ){ + this.value = this.type(); + } + } +} + +// Number type with special validation algothim. +/** @private */ +export class NumericType extends PrimitiveType { + type : NumberConstructor + + create(){ + return 0; + } + + convert( next, prev?, record?, options? ) { + const num = next == null ? next : this.type( next ); + + if( num !== num ){ + this._log( 'error', 'Type-R:InvalidNumber', 'Number attribute is assigned with an invalid number', next, record, options.logger ); + } + + return num; + } + + validate( model, value, name ) { + // Whatever is not symmetrically serializable to JSON, is not valid by default. + if( value != null && !isFinite( value ) ) { + return name + ' is not valid number'; + } + } +} + +/** + * Compatibility wrapper for Array type. + * @private + */ +export class ArrayType extends AnyType { + toJSON( value ) { return value; } + dispose(){} + create(){ return []; } + + convert( next, prev, record, options ) { + // Fix incompatible constructor behaviour of Array... + if( next == null || Array.isArray( next ) ) return next; + + this._log( 'error', 'Type-R:InvalidArray', 'Array attribute assigned with non-array value', next, record, options.logger ); + + return []; + } + + clone( value ){ + return value && value.slice(); + } +} + +export class ObjectType extends AnyType { + create(){ return {}; } + + convert( next, prev, record, options ) { + if( next == null || typeof next === 'object' ) return next; + + this._log( 'error', 'Type-R:InvalidObject', 'Object attribute is assigned with non-object value', next, record, options.logger ); + return {}; + } +} + +export function doNothing(){} + +export class FunctionType extends AnyType { + // Functions are not serialized. + toJSON( value ) { return void 0; } + create(){ return doNothing; } + dispose(){} + + convert( next, prev, record, options ) { + // Fix incompatible constructor behaviour of Function... + if( next == null || typeof next === 'function' ) return next; + + this._log( 'error', 'Type-R:InvalidFunction', 'Function attribute assigned with non-function value', next, record, options.logger ); + + return doNothing; + } + + // Functions are not cloned. + clone( value ){ return value; } +} diff --git a/src/type-r/record/metatypes/date.ts b/src/type-r/record/metatypes/date.ts new file mode 100644 index 0000000..98d81fb --- /dev/null +++ b/src/type-r/record/metatypes/date.ts @@ -0,0 +1,109 @@ +/** + * Date attribute type. + * + * Implements validation, cross-browser compatibility fixes, variety of Date serialization formats, + * and optimized update pipeline. + */ +import { TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer } from '../updates'; + +// Date Attribute +/** @private */ +export class DateType extends AnyType { + create(){ + return new Date(); + } + + convert( next : any, a, record, options ){ + if( next == null || next instanceof Date ) return next; + + const date = new Date( next ), + timestamp = date.getTime(); + + if( timestamp !== timestamp ){ + this._log( 'error', 'Type-R:InvalidDate', 'Date attribute assigned with invalid date', next, record, options.logger ); + } + + return date; + } + + validate( model, value, name ) { + if( value != null ){ + const timestamp = value.getTime(); + if( timestamp !== timestamp ) return name + ' is Invalid Date'; + } + } + + toJSON( value ) { return value && value.toISOString(); } + + isChanged( a, b ) { return ( a && a.getTime() ) !== ( b && b.getTime() ); } + + doInit( value, record : AttributesContainer, options : TransactionOptions ){ + // Date don't have handleChanges step. + return this.transform( value === void 0 ? this.defaultValue() : value, void 0, record, options ); + } + + doUpdate( value, record, options, nested ){ + const { name } = this, + { attributes } = record, + prev = attributes[ name ]; + + // Date don't have handleChanges step. + return this.isChanged( prev , attributes[ name ] = this.transform( value, prev, record, options ) ); + } + + clone( value ) { return value && new Date( value.getTime() ); } + dispose(){} +} + +// If ISO date is not supported by date constructor (such as in Safari), polyfill it. +function supportsDate( date ){ + return !isNaN( ( new Date( date ) ).getTime() ); +} + +if( !supportsDate('2011-11-29T15:52:30.5') || + !supportsDate('2011-11-29T15:52:30.52') || + !supportsDate('2011-11-29T15:52:18.867') || + !supportsDate('2011-11-29T15:52:18.867Z') || + !supportsDate('2011-11-29T15:52:18.867-03:30') ){ + + DateType.prototype.convert = function( value ){ + return value == null || value instanceof Date ? value : new Date( safeParseDate( value ) ); + } +} + +const numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ], + isoDatePattern = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/; + +function safeParseDate( date : string ) : number { + var timestamp, struct : any[], minutesOffset = 0; + + if( ( struct = isoDatePattern.exec( date )) ) { + // avoid NaN timestamps caused by undefined values being passed to Date.UTC + for( var i = 0, k; ( k = numericKeys[ i ] ); ++i ) { + struct[ k ] = +struct[ k ] || 0; + } + + // allow undefined days and months + struct[ 2 ] = (+struct[ 2 ] || 1) - 1; + struct[ 3 ] = +struct[ 3 ] || 1; + + if( struct[ 8 ] !== 'Z' && struct[ 9 ] !== undefined ) { + minutesOffset = struct[ 10 ] * 60 + struct[ 11 ]; + + if( struct[ 9 ] === '+' ) { + minutesOffset = 0 - minutesOffset; + } + } + + timestamp = + Date.UTC( struct[ 1 ], struct[ 2 ], struct[ 3 ], struct[ 4 ], struct[ 5 ] + minutesOffset, struct[ 6 ], + struct[ 7 ] ); + } + else { + timestamp = Date.parse( date ); + } + + return timestamp; +} \ No newline at end of file diff --git a/src/type-r/record/metatypes/index.ts b/src/type-r/record/metatypes/index.ts new file mode 100644 index 0000000..579ec57 --- /dev/null +++ b/src/type-r/record/metatypes/index.ts @@ -0,0 +1,34 @@ +import { PrimitiveType, NumericType, ObjectType, ImmutableClassType, FunctionType, ArrayType } from './basic'; +import { DateType } from './date'; +import { AnyType, AttributeOptions } from './any'; + +export * from './any'; +export * from './basic'; +export * from './date'; +export * from './owned'; +export * from './shared'; + +/** + * Every record attribute type has the corresponding metatype controlling its behavior. + * For built-in types, Type-R uses the predefined list to resolve metatype in order to avoid global objects modifications. + * For user-defined types, static `_metatype` constructor member is used. + */ + +const builtins : Function[] = [ String, Number, Boolean, Date, Object, Array, Function ], + metatypes = [ PrimitiveType, NumericType, PrimitiveType, DateType, ObjectType, ArrayType, FunctionType ]; + +export function getMetatype( Ctor : Function ){ + return ( Ctor as any )._metatype || resolveBuiltins( Ctor ); +} + +AnyType.create = ( options : AttributeOptions, name : string ) => { + const type = options.type, + AttributeCtor = options._metatype || ( type ? getMetatype( type ): AnyType ); + + return new AttributeCtor( name, options ); +} + +function resolveBuiltins( Ctor : Function ){ + const idx = builtins.indexOf( Ctor ); + return idx < 0 ? ImmutableClassType : metatypes[ idx ]; +} \ No newline at end of file diff --git a/src/type-r/record/metatypes/owned.ts b/src/type-r/record/metatypes/owned.ts new file mode 100644 index 0000000..7e8099c --- /dev/null +++ b/src/type-r/record/metatypes/owned.ts @@ -0,0 +1,121 @@ +import { ItemsBehavior, Transactional, transactionApi, TransactionOptions } from '../../transactions'; +import { ValidationError } from '../../validation'; +import { AnyType } from './any'; +import { AttributesContainer, ConstructorOptions } from '../updates'; + +const { free, aquire } = transactionApi; + +export class AggregatedType extends AnyType { + type : typeof Transactional + + clone( value : Transactional ) : Transactional { + return value ? value.clone() : value; + } + + toJSON( x, key : string, options : object ){ return x && x.toJSON( options ); } + + doInit( value, record : AttributesContainer, options : ConstructorOptions ){ + const v = options.clone ? this.clone( value ) : ( + value === void 0 ? this.defaultValue() : value + ); + + const x = this.transform( v, void 0, record, options ); + this.handleChange( x, void 0, record, options ); + return x; + } + + doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc + const key = this.name, { attributes } = record; + const prev = attributes[ key ]; + let update; + + // This can be moved to transactional attribute. And chained with the rest. + if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates. + const nestedTransaction = prev._createTransaction( update, options ); + if( nestedTransaction ){ + if( nested ){ + nested.push( nestedTransaction ); + } + else{ + nestedTransaction.commit( record ); + } + + if( this.propagateChanges ) return true; + } + + return false; + } + + const next = this.transform( value, prev, record, options ); + attributes[ key ] = next; + + if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined. + // Do the rest of the job after assignment + this.handleChange( next, prev, record, options ); + + return true; + } + + return false; + } + + canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any { + // If an object already exists, and new value is of incompatible type, let object handle the update. + if( prev && next != null ){ + if( next instanceof this.type ){ + // In case if merge option explicitly specified, force merge. + if( options.merge ) return next.__inner_state__; + } + else{ + return next; + } + } + } + + convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional { + // Invoke class factory to handle abstract classes + if( next == null ) return next; + + if( next instanceof this.type ){ + if( next._shared && !( next._shared & ItemsBehavior.persistent ) ) { // TODO: think more about shared types assignment compatibility. + this._log( 'error', 'Type-R:InvalidCollection', 'aggregated collection attribute is assigned with shared collection type', next, record, options.logger ); + } + + // With explicit 'merge' option we need to clone an object if its previous value was 'null'. + // This is an only case we could be here when merge === true. + return options.merge ? next.clone() : next; + } + + return this.type.create( next, options ); + } + + dispose ( record : AttributesContainer, value : Transactional ){ + if( value ){ + this.handleChange( void 0, value, record, {} ); + } + } + + validate( record : AttributesContainer, value : Transactional ) : ValidationError { + var error = value && value.validationError; + if( error ) return error; + } + + create() : Transactional { + return (this.type).create(); // this the subclass of Transactional here. + } + + initialize( options ){ + options.changeHandlers.unshift( this._handleChange ); + } + + _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options : TransactionOptions ){ + if( prev ){ + free( record, prev ); + options.unset || prev.dispose(); + } + + if( next && !aquire( record, next, this.name ) ){ + this._log( 'error', 'Type-R:InvalidOwner', 'aggregated attribute assigned with an object already having an owner', next, record, options.logger ); + } + } +} \ No newline at end of file diff --git a/src/type-r/record/metatypes/shared.ts b/src/type-r/record/metatypes/shared.ts new file mode 100644 index 0000000..ad958cc --- /dev/null +++ b/src/type-r/record/metatypes/shared.ts @@ -0,0 +1,152 @@ +import { eventsApi } from '../../object-plus'; +import { ItemsBehavior, Transactional, transactionApi, TransactionOptions } from '../../transactions'; +import { AnyType } from './any'; +import { AttributesContainer, ConstructorOptions } from '../updates'; + +const { on, off } = eventsApi, + { free, aquire } = transactionApi; + +/************************ + * Shared attribute definition. + * - Not serialized. + * - Listening to the changes. + * - Doesn't take ownership when assigned with object of proper type. + * - Takes ownership on objects which are converted. + */ + +const shareAndListen = ItemsBehavior.listen | ItemsBehavior.share; + +/** @private */ +export class SharedType extends AnyType { + type : typeof Transactional + + doInit( value, record : AttributesContainer, options : ConstructorOptions ){ + const v = options.clone ? this.clone( value, record ) : ( + value === void 0 ? this.defaultValue() : value + ); + + const x = this.transform( v, void 0, record, options ); + this.handleChange( x, void 0, record, options ); + return x; + } + + doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc + const key = this.name, { attributes } = record; + const prev = attributes[ key ]; + let update; + + // This can be moved to transactional attribute. And chained with the rest. + if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates. + const nestedTransaction = prev._createTransaction( update, options ); + if( nestedTransaction ){ + if( nested ){ + nested.push( nestedTransaction ); + } + else{ + nestedTransaction.commit( record ); + } + + if( this.propagateChanges ) return true; + } + + return false; + } + + const next = this.transform( value, prev, record, options ); + attributes[ key ] = next; + + if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined. + // Do the rest of the job after assignment + this.handleChange( next, prev, record, options ); + + return true; + } + + return false; + } + + clone( value : Transactional, record : AttributesContainer ) : Transactional { + // References are not cloned. + if( !value || value._owner !== record ) return value; + + // Implicitly created objects are cloned. + const clone = value.clone(); + aquire( record, clone, this.name ); + return clone; + } + + // Do not serialize by default. + toJSON(){} + + canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any { + // If an object already exists, and new value is of incompatible type, let object handle the update. + if( prev && next != null && !( next instanceof this.type ) ){ + return next; + } + } + + convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional { + if( next == null || next instanceof this.type ) return next; + + // Convert type using implicitly created rtransactional object. + const implicitObject = new ( this.type as any )( next, options, shareAndListen ); + + // To prevent a leak, we need to take an ownership on it. + aquire( record, implicitObject, this.name ); + + return implicitObject; + } + + // Refs are always valid. + validate( model, value, name ){} + + // They are always created as null. + create() : Transactional { + return null; + } + + // Listening to the change events + _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options ){ + if( prev ){ + // If there was an implicitly created object, remove an ownership. + if( prev._owner === record ){ + free( record, prev ); + options.unset || prev.dispose(); + } + else{ + off( prev, prev._changeEventName, this._onChange, record ); + } + } + + if( next ){ + // No need to take an ownership for an implicit object - already done in convert or clone. + if( next._owner !== record ){ + on( next, next._changeEventName, this._onChange, record ); + } + } + } + + dispose( record : AttributesContainer, value : Transactional ){ + if( value ){ + this.handleChange( void 0, value, record, {} ); + } + } + + _onChange : ( child : Transactional, options : TransactionOptions, initiator : Transactional ) => void + + initialize( options ){ + // Create change event handler which knows current attribute name. + const attribute = this; + this._onChange = this.propagateChanges ? function( child, options, initiator ){ + this === initiator || this.forceAttributeChange( attribute.name, options ); + } : ignore; + + options.changeHandlers.unshift( this._handleChange ); + } +} + +function ignore(){} + +export function shared( T : typeof Transactional ){ + return T.shared; +} \ No newline at end of file diff --git a/src/type-r/record/mixin.ts b/src/type-r/record/mixin.ts new file mode 100644 index 0000000..71da2c7 --- /dev/null +++ b/src/type-r/record/mixin.ts @@ -0,0 +1,87 @@ +import { IOEndpoint } from '../io-tools'; +import { eventsApi, tools as _ } from '../object-plus'; +import { CompiledReference } from '../traversable'; +import { ChainableAttributeSpec } from './attrDef'; +import { AnyType } from './metatypes'; +import { ConstructorsMixin, constructorsMixin } from './updates'; + +export interface RecordAttributesMixin extends ConstructorsMixin { + // Attributes descriptors + _attributes : AttributeDescriptors + _attributesArray : AnyType[] + + // Attribute's property descriptors + properties : PropertyDescriptorMap + + // Event map for record's local events. + _localEvents? : eventsApi.EventMap, + + _endpoints : { [ name : string ] : IOEndpoint } +} + +export interface AttributeDescriptors { + [ name : string ] : AnyType +} + +// Create attribute from the type spec. +export function createAttribute( spec : any, name : string ) : AnyType { + return AnyType.create( ChainableAttributeSpec.from( spec ).options, name ); +} + +// Create record mixin from the given record's attributes definition +export function createAttributesMixin( attributesDefinition : object, baseClassAttributes : AttributeDescriptors ) : RecordAttributesMixin { + const myAttributes = _.transform( {} as AttributeDescriptors, attributesDefinition, createAttribute ), + allAttributes = _.defaults( {} as AttributeDescriptors, myAttributes, baseClassAttributes ); + + const ConstructorsMixin = constructorsMixin( allAttributes ); + + return { + ...ConstructorsMixin, + _attributes : new ConstructorsMixin.AttributesCopy( allAttributes ), + _attributesArray : Object.keys( allAttributes ).map( key => allAttributes[ key ] ), + properties : _.transform( {}, myAttributes, x => x.createPropertyDescriptor() ), + ...localEventsMixin( myAttributes ), + _endpoints : _.transform( {}, allAttributes, attrDef => attrDef.options.endpoint ) + } +} + +interface LocalEventsMixin { + _localEvents? : eventsApi.EventMap +} + +function localEventsMixin( attrSpecs : AttributeDescriptors ) : LocalEventsMixin { + let _localEvents : eventsApi.EventMap; + + for( var key in attrSpecs ){ + const attribute = attrSpecs[ key ], + { _onChange } = attribute.options; + + if( _onChange ){ + _localEvents || ( _localEvents = new eventsApi.EventMap() ); + + _localEvents.addEvent( 'change:' + key, + typeof _onChange === 'string' ? + createWatcherFromRef( _onChange, key ) : + wrapWatcher( _onChange, key ) ); + } + } + + return _localEvents ? { _localEvents } : {}; +} + +function wrapWatcher( watcher, key ){ + return function( record, value ){ + watcher.call( record, value, key ); + } +} + +function createWatcherFromRef( ref : string, key : string ){ + const { local, resolve, tail } = new CompiledReference( ref, true ); + return local ? + function( record, value ){ + record[ tail ]( value, key ); + } : + function( record, value ){ + resolve( record )[ tail ]( value, key ); + } +} \ No newline at end of file diff --git a/src/type-r/record/record.ts b/src/type-r/record/record.ts index 99c4f5c..8b7db06 100644 --- a/src/type-r/record/record.ts +++ b/src/type-r/record/record.ts @@ -3,21 +3,17 @@ * The root of all definitions. */ -import { tools, eventsApi, Mixable, definitions, mixins, mixinRules, define } from '../object-plus' +import { CollectionConstructor } from '../collection'; +import { IOEndpoint, IOPromise } from '../io-tools'; +import { define, definitions, isProduction, Logger, logger, LogLevel, mixinRules, tools } from '../object-plus'; +import { CloneOptions, Owner, Transaction, Transactional, TransactionalDefinition, TransactionOptions } from '../transactions'; +import { ChildrenErrors } from '../validation'; +import { AggregatedType, AnyType } from './metatypes'; +import { IORecord, IORecordMixin } from './io-mixin'; +import { AttributesConstructor, AttributesContainer, AttributesCopyConstructor, AttributesValues, setAttribute, shouldBeAnObject, unknownAttrsWarning, UpdateRecordMixin } from './updates'; -import { CloneOptions, Transactional, TransactionalDefinition, Transaction, TransactionOptions, Owner } from '../transactions' -import { ChildrenErrors } from '../validation' -import { Collection } from '../collection' - -import { AnyType, AggregatedType, setAttribute, UpdateRecordMixin, - AttributesValues, AttributesContainer, - ConstructorsMixin, AttributesConstructor, AttributesCopyConstructor } from './attributes' - -import { IORecord, IORecordMixin } from './io-mixin' -import { IOPromise, IOEndpoint } from '../io-tools' - -const { assign, isEmpty, log } = tools; +const { assign, isEmpty } = tools; /******************************************************* * Record core implementation @@ -57,12 +53,14 @@ export interface RecordDefinition extends TransactionalDefinition { Collection : mixinRules.value, idAttribute : mixinRules.protoValue }) -export class Record extends Transactional implements IORecord, AttributesContainer { +export class Record extends Transactional implements IORecord, AttributesContainer, Iterable { + static _metatype = AggregatedType; + // Hack static onDefine( definition, BaseClass ){} - static Collection : typeof Collection; - static DefaultCollection : typeof Collection; + static Collection : CollectionConstructor; + static DefaultCollection : CollectionConstructor; static from : ( collectionReference : any ) => any; @@ -78,10 +76,10 @@ export class Record extends Transactional implements IORecord, AttributesContain _endpoints : { [ name : string ] : IOEndpoint } // Save record - save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } + save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } // Destroy record - destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } + destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } /*********************************** * Core Members @@ -107,7 +105,7 @@ export class Record extends Transactional implements IORecord, AttributesContain const prev = this._previousAttributes; changed = {}; - const { _attributes, attributes } = this; + const { attributes } = this; for( let attr of this._attributesArray ){ const key = attr.name, @@ -178,7 +176,7 @@ export class Record extends Transactional implements IORecord, AttributesContain const nullify = options && options.nullify; this.transaction( () =>{ - this.forEachAttr( this.attributes, ( value, key ) => this[ key ] = nullify ? null : void 0 ); + this.forEach( ( value, key ) => this[ key ] = nullify ? null : void 0 ); }, options ); return this; @@ -201,8 +199,8 @@ export class Record extends Transactional implements IORecord, AttributesContain idAttribute : string; // Fixed 'id' property pointing to id attribute - get id() : string | number { return this.attributes[ this.idAttribute ]; } - set id( x : string | number ){ setAttribute( this, this.idAttribute, x ); } + get id() : string { return this.attributes[ this.idAttribute ]; } + set id( x : string ){ setAttribute( this, this.idAttribute, x ); } /*********************************** * Dynamically compiled stuff @@ -216,61 +214,6 @@ export class Record extends Transactional implements IORecord, AttributesContain Attributes : AttributesConstructor AttributesCopy : AttributesCopyConstructor - // forEach function for traversing through attributes, with protective default implementation - // Overriden by dynamically compiled loop unrolled function in define.ts - forEachAttr( attrs : {}, iteratee : ( value : any, key? : string, spec? : AnyType ) => void ) : void { - const { _attributes } = this; - let unknown : string[]; - - for( let name in attrs ){ - const spec = _attributes[ name ]; - - if( spec ){ - iteratee( attrs[ name ], name, spec ); - } - else{ - unknown || ( unknown = [] ); - unknown.push( `'${ name }'` ); - } - } - - if( unknown ){ - this._log( 'warn', `attributes ${ unknown.join(', ')} are not defined`,{ - attributes : attrs - } ); - } - } - - each( iteratee : ( value? : any, key? : string ) => void, context? : any ){ - const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee, - { attributes } = this; - - for( const key in this.attributes ){ - const value = attributes[ key ]; - if( value !== void 0 ) fun( value, key ); - } - } - - // Get array of attribute keys (Record) or record ids (Collection) - keys() : string[] { - const keys : string[] = []; - - this.each( ( value, key ) => value === void 0 || keys.push( key ) ); - - return keys; - } - - // Get array of attribute values (Record) or records (Collection) - values() : any[] { - return this.map( value => value ); - } - - // Attributes-level serialization - _toJSON(){ return {}; } - - // Attributes-level parse - _parse( data ){ return data; } - // Create record default values, optionally augmenting given values. defaults( values = {} ){ const defaults = {}, @@ -297,7 +240,7 @@ export class Record extends Transactional implements IORecord, AttributesContain const options = a_options || {}, values = ( options.parse ? this.parse( a_values, options ) : a_values ) || {}; - if( log.level > 1 ) typeCheck( this, values ); + isProduction || typeCheck( this, values, options ); this._previousAttributes = this.attributes = new this.Attributes( this, values, options ); @@ -318,21 +261,21 @@ export class Record extends Transactional implements IORecord, AttributesContain return copy; } - // Deprecated, every clone is the deep one now. - deepClone() : this { return this.clone() }; - // Validate attributes. _validateNested( errors : ChildrenErrors ) : number { var length = 0; - this.forEachAttr( this.attributes, ( value, name, attribute ) => { - const error = attribute.validate( this, value, name ); + const { attributes } = this; + + for( let attribute of this._attributesArray ){ + const { name } = attribute, + error = attribute.validate( this, attributes[ name ], name ); if( error ){ errors[ name ] = error; length++; } - } ); + } return length; } @@ -342,39 +285,50 @@ export class Record extends Transactional implements IORecord, AttributesContain return this[ key ]; } + // Apply bulk in-place object update in scope of ad-hoc transaction + set( values : any, options? : TransactionOptions ) : this { + if( values ){ + const transaction = this._createTransaction( values, options ); + transaction && transaction.commit(); + } + + return this; + } + /** * Serialization control */ // Default record-level serializer, to be overriden by subclasses - toJSON() : Object { - const json = {}; + toJSON( options? : object ) : any { + const json = {}, + { attributes } = this; + + for( let attribute of this._attributesArray ){ + const { name } = attribute, + value = attributes[ name ]; - this.forEachAttr( this.attributes, ( value, key : string, { toJSON } ) =>{ - // If attribute serialization is not disabled, and its value is not undefined... if( value !== void 0 ){ // ...serialize it according to its spec. - const asJson = toJSON.call( this, value, key ); + const asJson = attribute.toJSON.call( this, value, name, options ); // ...skipping undefined values. Such an attributes are excluded. - if( asJson !== void 0 ) json[ key ] = asJson; + if( asJson !== void 0 ) json[ name ] = asJson; } - }); + } return json; } // Default record-level parser, to be overriden by the subclasses. parse( data, options? : TransactionOptions ){ - // Call dynamically compiled loop-unrolled attribute-level parse function. - return this._parse( data ); + return data; } /** * Transactional control */ - - deepSet( name : string, value : any, options? ){ + deepSet( name : string, value : any, options? : any ){ // Operation might involve series of nested object updates, thus it's wrapped in transaction. this.transaction( () => { const path = name.split( '.' ), @@ -431,19 +385,21 @@ export class Record extends Transactional implements IORecord, AttributesContain // Dispose object and all childrens dispose(){ if( this._disposed ) return; - - this.forEachAttr( this.attributes, ( value, key, attribute ) => { - attribute.dispose( this, value ); - }); + const { attributes } = this; + + for( let attr of this._attributesArray ){ + attr.dispose( this, attributes[ attr.name ] ); + } + super.dispose(); } - _log( level : tools.LogLevel, text : string, props : object ) : void { - tools.log( level, '[Record] ' + text, { + _log( level : LogLevel, topic: string, text : string, props : object, a_logger? : Logger ) : void { + ( a_logger || logger ).trigger( level, topic, text, { + ...props, 'Record' : this, - 'Attributes definition:' : this._attributes, - ...props + 'Attributes definition:' : this._attributes }); } @@ -456,6 +412,38 @@ export class Record extends Transactional implements IORecord, AttributesContain // Simulate attribute change forceAttributeChange : ( key : string, options : TransactionOptions ) => void _onChildrenChange : ( child : Transactional, options : TransactionOptions ) => void + + + /** + * Map methods + */ + + forEach( iteratee : ( value? : any, key? : string ) => void, context? : any ){ + const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee, + { attributes } = this; + + for( const key in this.attributes ){ + const value = attributes[ key ]; + if( value !== void 0 ) fun( value, key ); + } + } + + [ Symbol.iterator ](){ + return new RecordEntriesIterator( this ); + } + + entries(){ + return new RecordEntriesIterator( this ); + } + + // Get array of attribute keys (Record) or record ids (Collection) + keys() : string[] { + const keys : string[] = []; + + this.forEach( ( value, key ) => value === void 0 || keys.push( key ) ); + + return keys; + } }; assign( Record.prototype, UpdateRecordMixin, IORecordMixin ); @@ -465,7 +453,7 @@ assign( Record.prototype, UpdateRecordMixin, IORecordMixin ); */ class BaseRecordAttributes { - id : string | number + id : string constructor( record : Record, x : AttributesValues, options : TransactionOptions ) { this.id = x.id; @@ -475,7 +463,7 @@ class BaseRecordAttributes { Record.prototype.Attributes = BaseRecordAttributes; class BaseRecordAttributesCopy { - id : string | number + id : string constructor( x : AttributesValues ) { this.id = x.id; @@ -487,12 +475,9 @@ Record.prototype.AttributesCopy = BaseRecordAttributesCopy; const IdAttribute = AnyType.create({ value : void 0 }, 'id' ); Record.prototype._attributes = { id : IdAttribute }; Record.prototype._attributesArray = [ IdAttribute ]; -Record._attribute = AggregatedType; - -import { shouldBeAnObject } from './attributes' -function typeCheck( record : Record, values : object ){ - if( shouldBeAnObject( record, values ) ){ +function typeCheck( record : Record, values : object, options ){ + if( shouldBeAnObject( record, values, options ) ){ const { _attributes } = record; let unknown : string[]; @@ -504,7 +489,23 @@ function typeCheck( record : Record, values : object ){ } if( unknown ){ - record._log( 'warn', `undefined attributes ${ unknown.join(', ')} are ignored.`, { values } ); + unknownAttrsWarning( record, unknown, { values }, options ); } } +} + +export class RecordEntriesIterator implements Iterator<[string, any]> { + private idx = 0; + + constructor( private readonly record : Record){} + + next() : IteratorResult<[string, any]> { + const { record } = this, + metatype = record._attributesArray[ this.idx++ ]; + + return { + done : !metatype, + value : metatype ? [ metatype.name, record[ metatype.name ] ] : void 0 + }; + } } \ No newline at end of file diff --git a/src/type-r/record/updates.ts b/src/type-r/record/updates.ts new file mode 100644 index 0000000..58bfec5 --- /dev/null +++ b/src/type-r/record/updates.ts @@ -0,0 +1,230 @@ +import { eventsApi } from '../object-plus'; +import { Owner, Transaction, Transactional, transactionApi, TransactionOptions } from "../transactions"; +const { begin : _begin, markAsDirty : _markAsDirty, commit } = transactionApi; + +const { trigger3 } = eventsApi; + +export interface ConstructorsMixin { + Attributes : AttributesConstructor + AttributesCopy : AttributesCopyConstructor +} + +export interface ConstructorOptions extends TransactionOptions{ + clone? : boolean +} + +export type AttributesConstructor = new ( record : AttributesContainer, values : object, options : TransactionOptions ) => AttributesValues; +export type AttributesCopyConstructor = new ( values : object ) => AttributesValues; + +export interface AttributesContainer extends Transactional, Owner, ConstructorsMixin { + // Attribute descriptors. + _attributes : AttributesDescriptors + + // Attribute values. + attributes : AttributesValues + + // Previous attribute values. + _previousAttributes : AttributesValues + + // Changed attributes cache. + _changedAttributes : AttributesValues +} + +export interface AttributesValues { + [ name : string ] : any +} + +export interface AttributesDescriptors { + [ name : string ] : AttributeUpdatePipeline +} + +export interface AttributeUpdatePipeline{ + doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : Transaction[] ) : boolean +} + + // Optimized single attribute transactional update. To be called from attributes setters + // options.silent === false, parse === false. +export function setAttribute( record : AttributesContainer, name : string, value : any ) : void { + // Open the transaction. + const isRoot = begin( record ), + options = {}; + + // Update attribute. + if( record._attributes[ name ].doUpdate( value, record, options ) ){ + // Notify listeners on changes. + markAsDirty( record, options ); + trigger3( record, 'change:' + name, record, record.attributes[ name ], options ); + } + + // Close the transaction. + isRoot && commit( record ); +} + +function begin( record : AttributesContainer ){ + if( _begin( record ) ){ + record._previousAttributes = new record.AttributesCopy( record.attributes ); + record._changedAttributes = null; + return true; + } + + return false; +} + +function markAsDirty( record : AttributesContainer, options : TransactionOptions ){ + // Need to recalculate changed attributes, when we have nested set in change:attr handler + if( record._changedAttributes ){ + record._changedAttributes = null; + } + + return _markAsDirty( record, options ); +} + +/** + * TODO: There's an opportunity to create an optimized pipeline for primitive types and Date, which makes the majority + * of attributes. It might create the major speedup. + * + * Create the dedicated pipeline for owned and shared attributes as well. + * + * Three elements of the pipeline: + * - from constructor + * - from assignment + * - from `set` + */ + +export const UpdateRecordMixin = { +// Need to override it here, since begin/end transaction brackets are overriden. + transaction( this : AttributesContainer, fun : ( self : AttributesContainer ) => void, options : TransactionOptions = {} ) : void{ + const isRoot = begin( this ); + fun.call( this, this ); + isRoot && commit( this ); + }, + + // Handle nested changes. TODO: propagateChanges == false, same in transaction. + _onChildrenChange( child : Transactional, options : TransactionOptions ) : void { + const { _ownerKey } = child, + attribute = this._attributes[ _ownerKey ]; + + if( !attribute /* TODO: Must be an opposite, likely the bug */ || attribute.propagateChanges ) this.forceAttributeChange( _ownerKey, options ); + }, + + // Simulate attribute change + forceAttributeChange( key : string, options : TransactionOptions = {} ){ + // Touch an attribute in bounds of transaction + const isRoot = begin( this ); + + if( markAsDirty( this, options ) ){ + trigger3( this, 'change:' + key, this, this.attributes[ key ], options ); + } + + isRoot && commit( this ); + }, + + _createTransaction( this : AttributesContainer, a_values : {}, options : TransactionOptions = {} ) : Transaction { + const isRoot = begin( this ), + changes : string[] = [], + nested : RecordTransaction[]= [], + { _attributes } = this, + values = options.parse ? this.parse( a_values, options ) : a_values; + + let unknown; + + if( shouldBeAnObject( this, values, options ) ){ + for( let name in values ){ + const spec = _attributes[ name ]; + + if( spec ){ + if( spec.doUpdate( values[ name ], this, options, nested ) ){ + changes.push( name ); + } + } + else{ + unknown || ( unknown = [] ); + unknown.push( `'${ name }'` ); + } + } + + if( unknown ){ + unknownAttrsWarning( this, unknown, { values }, options ); + } + } + + if( changes.length && markAsDirty( this, options ) ){ + return new RecordTransaction( this, isRoot, nested, changes ); + } + + // No changes, but there might be silent attributes with open transactions. + for( let pendingTransaction of nested ){ + pendingTransaction.commit( this ); + } + + isRoot && commit( this ); + } +}; + +export function unknownAttrsWarning( record : AttributesContainer, unknown : string[], props, options ){ + record._log( 'warn', 'Type-R:UnknownAttrs', `undefined attributes ${ unknown.join(', ')} are ignored.`, props, options.logger ); +} + +// One of the main performance tricks of Type-R. +// Create loop unrolled constructors for internal attribute hash, +// so the hidden class JIT optimization will be engaged and they will become static structs. +// It dramatically improves record performance. +export function constructorsMixin( attrDefs : AttributesDescriptors ) : ConstructorsMixin { + const attrs = Object.keys( attrDefs ); + + const AttributesCopy : AttributesCopyConstructor = new Function( 'values', ` + ${ attrs.map( attr =>` + this.${ attr } = values.${ attr }; + `).join( '' ) } + `) as any; + + AttributesCopy.prototype = Object.prototype; + + const Attributes : AttributesConstructor = new Function( 'record', 'values', 'options', ` + var _attrs = record._attributes; + + ${ attrs.map( attr =>` + this.${ attr } = _attrs.${ attr }.doInit( values.${ attr }, record, options ); + `).join( '' ) } + `) as any; + + Attributes.prototype = Object.prototype; + + return { Attributes, AttributesCopy }; +} + +export function shouldBeAnObject( record : AttributesContainer, values : object, options ){ + if( values && values.constructor === Object ) return true; + + record._log( 'error', 'Type-R:InvalidObject', 'update with non-object is ignored!', { values }, options.logger ); + return false; +} + +// Transaction class. Implements two-phase transactions on object's tree. +// Transaction must be created if there are actual changes and when markIsDirty returns true. +export class RecordTransaction implements Transaction { + // open transaction + constructor( public object : AttributesContainer, + public isRoot : boolean, + public nested : Transaction[], + public changes : string[] ){} + + // commit transaction + commit( initiator? : AttributesContainer ) : void { + const { nested, object, changes } = this; + + // Commit all pending nested transactions... + for( let transaction of nested ){ + transaction.commit( object ); + } + + // Notify listeners on attribute changes... + // Transaction is never created when silent option is set, so just send events out. + const { attributes, _isDirty } = object; + for( let key of changes ){ + trigger3( object, 'change:' + key, object, attributes[ key ], _isDirty ); + } + + this.isRoot && commit( object, initiator ); + } +} \ No newline at end of file diff --git a/src/type-r/relations/commons.ts b/src/type-r/relations/commons.ts index 6248b68..7539fba 100644 --- a/src/type-r/relations/commons.ts +++ b/src/type-r/relations/commons.ts @@ -1,6 +1,6 @@ -import { Collection } from '../collection' -import { Record } from '../record' -import { CompiledReference } from '../traversable' +import { Collection } from '../collection'; +import { Record } from '../record'; +import { CompiledReference } from '../traversable'; export type CollectionReference = ( () => Collection ) | Collection | string; diff --git a/src/type-r/relations/from.ts b/src/type-r/relations/from.ts index 5ef3f13..200f631 100644 --- a/src/type-r/relations/from.ts +++ b/src/type-r/relations/from.ts @@ -1,9 +1,6 @@ -import { AnyType, AttributeOptions } from '../record' -import { parseReference, CollectionReference } from './commons' -import { Collection } from '../collection' -import { Record } from '../record' +import { AnyType, ChainableAttributeSpec, Record } from '../record'; +import { CollectionReference, parseReference } from './commons'; -import { ChainableAttributeSpec } from '../record' /******** * Reference to model by id. @@ -41,12 +38,16 @@ class RecordRefType extends AnyType { validate( model, value, name ){} } +export function from( path : string, T = Record ){ + return T.from( path ); +} + Record.from = function from( masterCollection : CollectionReference ) : ChainableAttributeSpec { const getMasterCollection = parseReference( masterCollection ); const typeSpec = new ChainableAttributeSpec({ value : null, - _attribute : RecordRefType + _metatype : RecordRefType }); return typeSpec diff --git a/src/type-r/relations/index.ts b/src/type-r/relations/index.ts index 3052dd5..27d1170 100644 --- a/src/type-r/relations/index.ts +++ b/src/type-r/relations/index.ts @@ -1,4 +1,6 @@ -import './from' -import './subsetOf' +export * from './from'; +export * from './subsetOf'; +export * from './store'; + + -export * from './store' \ No newline at end of file diff --git a/src/type-r/relations/store.ts b/src/type-r/relations/store.ts index 6ee3c3b..6c1362e 100644 --- a/src/type-r/relations/store.ts +++ b/src/type-r/relations/store.ts @@ -1,6 +1,5 @@ -import { Record } from '../record' -import { Transactional } from '../transactions' -import { startIO, IOPromise } from '../io-tools' +import { Record } from '../record'; +import { Transactional } from '../transactions'; let _store : Store = null; diff --git a/src/type-r/relations/subsetOf.ts b/src/type-r/relations/subsetOf.ts index cc961b0..465d7aa 100644 --- a/src/type-r/relations/subsetOf.ts +++ b/src/type-r/relations/subsetOf.ts @@ -1,11 +1,8 @@ -import { Collection, CollectionOptions } from '../collection' -import { tools, eventsApi, define } from '../object-plus' -import { Record, AggregatedType } from '../record' -import { parseReference, CollectionReference } from './commons' -import { ChainableAttributeSpec } from '../record' -import { Transactional, ItemsBehavior, TransactionOptions, transactionApi } from '../transactions' - -const { fastDefaults } = tools; +import { Collection } from '../collection'; +import { define, tools } from '../object-plus'; +import { AggregatedType, ChainableAttributeSpec, Record } from '../record'; +import { ItemsBehavior, transactionApi } from '../transactions'; +import { CollectionReference, parseReference } from './commons'; type RecordsIds = ( string | number )[]; @@ -24,6 +21,10 @@ Collection.subsetOf = function subsetOf( masterCollection : CollectionReference ); }; +export function subsetOf( path : string, T = Collection ){ + return T.subsetOf( path ); +} + const subsetOfBehavior = ItemsBehavior.share | ItemsBehavior.persistent; function defineSubsetCollection( CollectionConstructor : typeof Collection ) { @@ -31,7 +32,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { refs : any[]; resolvedWith : Collection = null; - _attribute : AggregatedType + _metatype : AggregatedType get __inner_state__(){ return this.refs || this.models; } @@ -41,7 +42,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { } // Remove should work fine as it already accepts ids. Add won't... - add( a_elements, options? ){ + add( a_elements, options = {} ){ const { resolvedWith } = this, toAdd = toArray( a_elements ); @@ -65,7 +66,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { } } - reset( a_elements?, options? ){ + reset( a_elements?, options = {} ){ const { resolvedWith } = this, elements = toArray( a_elements ); @@ -73,7 +74,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { // Collection is resolved, so parse ids and forward the call to set. super.reset( resolveRefs( resolvedWith, elements ), options ) : // Collection is not resolved yet. So, we prepare the delayed computation. - delaySet( this, elements, options ) || []; + delaySet( this, elements, options ) as any || []; } _createTransaction( a_elements, options? ){ @@ -97,6 +98,10 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { // Subset is always valid. _validateNested(){ return 0; } + get length() : number { + return this.models.length || ( this.refs ? this.refs.length : 0 ); + } + // Must be shallow copied on clone. clone( owner? ){ var Ctor = (this).constructor, @@ -106,6 +111,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { }); if( this.resolvedWith ){ + // TODO: bug here. copy.resolvedWith = this.resolvedWith; copy.refs = null; copy.reset( this.models, { silent : true } ); diff --git a/src/type-r/transactions.ts b/src/type-r/transactions.ts index b814067..90a3f47 100644 --- a/src/type-r/transactions.ts +++ b/src/type-r/transactions.ts @@ -1,10 +1,9 @@ -import { Messenger, CallbacksByEvents, MessengersByCid, MixinsState, MixinMergeRules, MessengerDefinition, tools, mixins, mixinRules, definitions, eventsApi, define, Subclass } from './object-plus' -import { ValidationError, Validatable, ChildrenErrors } from './validation' -import { Traversable, resolveReference } from './traversable' -import { IOEndpoint, IOPromise, IONode, abortIO } from './io-tools' +import { abortIO, IOEndpoint, IONode, IOPromise } from './io-tools'; +import { CallbacksByEvents, define, definitions, eventsApi, Messenger, MessengerDefinition, MessengersByCid, mixinRules, mixins, MixinsState, log, LogLevel, Logger } from './object-plus'; +import { resolveReference, Traversable } from './traversable'; +import { ChildrenErrors, Validatable, ValidationError } from './validation'; -const { assign } = tools, - { trigger2, trigger3, on, off } = eventsApi; +const { trigger3, on, off } = eventsApi; /*** * Abstract class implementing ownership tree, tho-phase transactions, and validation. * 1. createTransaction() - apply changes to an object tree, and if there are some events to send, transaction object is created. @@ -31,6 +30,7 @@ export enum ItemsBehavior { export abstract class Transactional implements Messenger, IONode, Validatable, Traversable { // Mixins are hard in TypeScript. We need to copy type signatures over... // Here goes 'Mixable' mixin. + static endpoint : IOEndpoint; static __super__ : object; static mixins : MixinsState; static define : ( definition? : TransactionalDefinition, statics? : object ) => typeof Transactional; @@ -160,40 +160,38 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T isRoot && transactionApi.commit( this ); } - // Loop through the members in the scope of transaction. - // Transactional version of each() - updateEach( iteratee : ( val : any, key : string | number ) => void, options? : TransactionOptions ){ - const isRoot = transactionApi.begin( this ); - this.each( iteratee ); - isRoot && transactionApi.commit( this ); - } + // Assign transactional object "by value", copying aggregated items. + assignFrom( source : Transactional | Object ) : this { + // Need to delay change events until change token willl by synced. + this.transaction( () =>{ + this.set( ( source ).__inner_state__ || source, { merge : true } ); - // Apply bulk in-place object update in scope of ad-hoc transaction - set( values : any, options? : TransactionOptions ) : this { - if( values ){ - const transaction = this._createTransaction( values, options ); - transaction && transaction.commit(); - } + // Synchronize change tokens + const { _changeToken } = source as any; + + if( _changeToken ){ + this._changeToken = _changeToken; + } + }); return this; } - // Assign transactional object "by value", copying aggregated items. - assignFrom( source : Transactional | Object ) : this { - return this.set( ( source ).__inner_state__ || source, { merge : true } ); - } - // Apply bulk object update without any notifications, and return open transaction. // Used internally to implement two-phase commit. // Returns null if there are no any changes. /** @private */ abstract _createTransaction( values : any, options? : TransactionOptions ) : Transaction | void + + // Apply bulk in-place object update in scope of ad-hoc transaction + abstract set( values : any, options? : TransactionOptions ) : this; + // Parse function applied when 'parse' option is set for transaction. parse( data : any, options? : TransactionOptions ) : any { return data } // Convert object to the serializable JSON structure - abstract toJSON() : {} + abstract toJSON( options? : object ) : {} /******************* * Traversals and member access @@ -230,44 +228,17 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T */ // Loop through the members. Must be efficiently implemented in container class. - abstract each( iteratee : ( val : any, key : string | number ) => void, context? : any ) - - // Map members to an array - map( iteratee : ( val : any, key : string | number ) => T, context? : any ) : T[]{ - const arr : T[] = [], - fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee; - - this.each( ( val, key ) => { - const result = fun( val, key ); - if( result !== void 0 ) arr.push( result ); - } ); - - return arr; - } _endpoint : IOEndpoint - _ioPromise : IOPromise + _ioPromise : IOPromise - hasPendingIO() : IOPromise { return this._ioPromise; } + hasPendingIO() : IOPromise { return this._ioPromise; } - fetch( options? : object ) : IOPromise { throw new Error( "Not implemented" ); } + fetch( options? : object ) : IOPromise { throw new Error( "Not implemented" ); } getEndpoint() : IOEndpoint { return getOwnerEndpoint( this ) || this._endpoint; } - - // Map members to an object - mapObject( iteratee : ( val : any, key : string | number ) => T, context? : any ) : { [ key : string ] : T }{ - const obj : { [ key : string ] : T } = {}, - fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee; - - this.each( ( val, key ) => { - const result = iteratee( val, key ); - if( result !== void 0 ) obj[ key ] = result; - } ); - - return obj; - } /********************************* * Validation API @@ -322,7 +293,7 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T } // Logging interface for run time errors and warnings. - abstract _log( level : string, text : string, value : any ) : void; + abstract _log( level : LogLevel, topic : string, text : string, value : any, logger? : Logger ) : void } export interface CloneOptions { @@ -356,6 +327,9 @@ export interface TransactionOptions { // Invoke parsing parse? : boolean + // Optional logger + logger? : Logger + // Suppress change notifications and update triggers silent? : boolean diff --git a/src/type-r/traversable.ts b/src/type-r/traversable.ts index 19ac3f6..f0e3974 100644 --- a/src/type-r/traversable.ts +++ b/src/type-r/traversable.ts @@ -12,7 +12,7 @@ export interface Traversable { get( key : string ) : any } -const referenceMask = /\^|([^.]+)/g; +const referenceMask = /\^|(store\.[^.]+)|([^.]+)/g; // Compile reference to function export type ResolveReference = ( root : Traversable ) => any; @@ -26,19 +26,27 @@ export class CompiledReference { const path = reference .match( referenceMask ) .map( key => { - if( key === '^' ) return 'getOwner()'; + if( key === '^' || key === 'owner' ) return 'getOwner()'; if( key[ 0 ] === '~' ) return `getStore().get("${ key.substr( 1 ) }")`; + + if( key.indexOf( 'store.' ) === 0 ) return `getStore().get("${ key.substr( 6 ) }")`; return key; } ); this.tail = splitTail && path.pop(); this.local = !path.length; - - path.unshift( 'self' ); - this.resolve = new Function( 'self', `return ${ path.join('.') };` ); + this.resolve = new Function( 'self', ` + var v = self.${ path.shift() }; + + ${ path.map( x => ` + v = v && v.${ x }; + `).join('')} + + return v; + ` ); } } diff --git a/submodules/Type-R b/submodules/Type-R index 3255b27..308a74c 160000 --- a/submodules/Type-R +++ b/submodules/Type-R @@ -1 +1 @@ -Subproject commit 3255b2744e20831ab67841271049ee88f56495e3 +Subproject commit 308a74cb594dc1d802cd55bb8329129503ce1a03 From 4568b6efb3b1a1d75ea4015930c43565d60112f1 Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 20:46:55 -0500 Subject: [PATCH 2/6] Merged from master --- submodules/Type-R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/Type-R b/submodules/Type-R index 7edd1e4..3255b27 160000 --- a/submodules/Type-R +++ b/submodules/Type-R @@ -1 +1 @@ -Subproject commit 7edd1e49cb024ef674a870072943de3ff602ccba +Subproject commit 3255b2744e20831ab67841271049ee88f56495e3 From 98ae401b37d79ab783ab7110cae9d78abc9178fa Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 21:34:49 -0500 Subject: [PATCH 3/6] Bump npm version --- package-lock.json | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ec56e7..32b065a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "nestedtypes", - "version": "2.1.4", + "version": "3.0.0-a00", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 76be92e..9404473 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nestedtypes", - "version": "2.1.4", + "version": "3.0.0-a00", "main": "./dist/index.js", "module": "./lib/index.js", "types": "./lib/index.d.ts", @@ -37,7 +37,7 @@ "rollup-plugin-uglify": "^2.0.1", "sinon": "^3.3.0", "sinon-chai": "^2.14.0", - "type-r": "^3.0.0-a05", + "type-r": "alpha", "typescript": "^3.1.6", "underscore": "*" }, From 82ad4dfea54a7310f34d74861937e9a4716d7e23 Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 21:44:58 -0500 Subject: [PATCH 4/6] Clean-up --- README.md | 26 +- package-lock.json | 811 ---------------------------------------------- package.json | 6 - 3 files changed, 3 insertions(+), 840 deletions(-) diff --git a/README.md b/README.md index aa8a71c..a8dcdf1 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,8 @@ -NestedTypes 2.0 is BackboneJS compatibility layer for the [Type-R](https://volicon.github.io/Type-R/Getting_Started.html) data framework. Type-R is Model/Collection core written from the scratch with the TypeScript and has no side dependencies. +NestedTypes v3.0 is BackboneJS compatibility layer for the [Type-R](https://volicon.github.io/Type-R/Getting_Started.html) data framework. NestedTypes adds support for BackboneJS REST API, underscore Model and Collection methods, and the rest of Backbone 1.1 classes (View, Router). -NestedTypes adds support for REST (standard BackboneJS API), Underscore methods, and Backbone 1.1 classes. +Functional-wise, there's no reason to prefer NestedTypes over the Type-R any more. If you don't need BackboneJS backward compatibility, move to the [Type-R](https://volicon.github.io/Type-R) which doesn't have any legacy dependencies like jQuery and underscore. -> If you're upgrading from the version 1.3, *[there are compatibility issues](/docs/compatibility.md)*. -> Mostly due to the fact that the Type-R and NestedTypes 2.0 is built around the concept of [aggregation trees](https://volicon.github.io/Type-R/API_by_feature/Aggregation_tree.html). -> NestedTypes 1.3 code won't work without refactoring. - -# Important Notice - -Staring with v2.0 Type-R includes generic I/O abstraction which is far superior to the legacy BackboneJS I/O. -NestedTypes & NestedReact will be maintained as the BackboneJS compatibility layer as long as Verizon/Volicon systems have legacy Backbone code. Therefore: - -- NestedTypes docs won't be updated. Use [Type-R](https://volicon.github.io/Type-R) documentation as you primary source of documentation. -- Functional-wise, there's no reason to prefer NestedTypes over the Type-R any more. If you don't need BackboneJS backward compatibility, move to the [Type-R](https://volicon.github.io/Type-R) which doesn't have any legacy dependencies like jQuery and underscore. - -# Features - -Post-backbone data framework. 10 times faster, first-class support for nested models and collections and relations by id. - -- ES6 classes support. -- Deeply observable changes. -- First-class support for [aggregation](https://volicon.github.io/Type-R/API_by_feature/Aggregation_tree.html) and [relations by id](https://volicon.github.io/Type-R/API_by_feature/id-references_and_Stores.html). -- Attribute type annotations and dynamic type safety. -- More than 10 times faster than BackboneJS and 2-4 times faster than NestedTypes 1.3 in all browsers. +NestedTypes & NestedReact will be maintained as long as Verizon/Volicon systems have legacy Backbone code. NestedTypes docs won't be updated. Use [Type-R](https://volicon.github.io/Type-R) documentation as a primary source of documentation. # Installation & Requirements diff --git a/package-lock.json b/package-lock.json index 32b065a..ab61956 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,24 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@sinonjs/formatio": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.0.0.tgz", - "integrity": "sha512-vdjoYLDptCgvtJs57ULshak3iJe4NW3sJ3g36xVDGff5AE8P30S6A093EIEPjdi2noGhfuNOEkbxt3J3awFW1w==", - "dev": true, - "requires": { - "@sinonjs/samsam": "2.1.0" - } - }, - "@sinonjs/samsam": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.0.tgz", - "integrity": "sha512-5x2kFgJYupaF1ns/RmharQ90lQkd2ELS8A9X0ymkAAdemYHGtI2KiUHG8nX2WU0T1qgnOU5YMqnBM2V7NUanNw==", - "dev": true, - "requires": { - "array-from": "^2.1.1" - } - }, "@types/jquery": { "version": "2.0.51", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.51.tgz", @@ -43,55 +25,18 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "assertion-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", @@ -103,206 +48,18 @@ "repeat-element": "^1.1.2" } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "build": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", - "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=", - "dev": true, - "requires": { - "cssmin": "0.3.x", - "jsmin": "1.x", - "jxLoader": "*", - "moo-server": "*", - "promised-io": "*", - "timespan": "2.x", - "uglify-js": "1.x", - "walker": "1.x", - "winston": "*", - "wrench": "1.3.x" - }, - "dependencies": { - "uglify-js": { - "version": "1.3.5", - "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", - "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=", - "dev": true - } - } - }, "builtin-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", "dev": true }, - "chai": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/chai/-/chai-2.3.0.tgz", - "integrity": "sha1-ii9qNHSNqAEJD9cyh7Kqc5pOkJo=", - "dev": true, - "requires": { - "assertion-error": "1.0.0", - "deep-eql": "0.1.3" - } - }, - "chai-as-promised": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", - "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=", - "dev": true - }, - "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colornames": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", - "dev": true - }, - "colors": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", - "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", - "dev": true - }, - "colorspace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.1.tgz", - "integrity": "sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw==", - "dev": true, - "requires": { - "color": "3.0.x", - "text-hex": "1.0.x" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cssmin": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz", - "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=", - "dev": true - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "deep-eql": { - "version": "0.1.3", - "resolved": "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - } - }, - "diagnostics": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", - "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", - "dev": true, - "requires": { - "colorspace": "1.1.x", - "enabled": "1.0.x", - "kuler": "1.0.x" - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "enabled": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", - "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", - "dev": true, - "requires": { - "env-variable": "0.0.x" - } - }, - "env-variable": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", - "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "estree-walker": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", @@ -336,18 +93,6 @@ "is-extglob": "^1.0.0" } }, - "fast-safe-stringify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", - "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==", - "dev": true - }, - "fecha": { - "version": "2.3.3", - "resolved": "http://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", - "dev": true - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -382,35 +127,6 @@ "for-in": "^1.0.1" } }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.x" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", @@ -430,52 +146,6 @@ "is-glob": "^2.0.0" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -545,12 +215,6 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -572,42 +236,6 @@ "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", "dev": true }, - "js-yaml": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", - "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", - "dev": true - }, - "jsmin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", - "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "just-extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-3.0.0.tgz", - "integrity": "sha512-Fu3T6pKBuxjWT/p4DkqGHFRsysc8OauWr4ZRTY9dIx07Y9O0RkoR5jcv28aeD1vuAwhm3nLkDurwLXoALp4DpQ==", - "dev": true - }, - "jxLoader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", - "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", - "dev": true, - "requires": { - "js-yaml": "0.3.x", - "moo-server": "1.3.x", - "promised-io": "*", - "walker": "1.x" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -617,131 +245,6 @@ "is-buffer": "^1.1.5" } }, - "kuler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", - "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", - "dev": true, - "requires": { - "colornames": "^1.1.1" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "logform": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", - "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", - "dev": true, - "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", - "ms": "^2.1.1", - "triple-beam": "^1.2.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, "math-random": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", @@ -769,81 +272,6 @@ "regex-cache": "^0.4.2" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "moo-server": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", - "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "nise": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.6.tgz", - "integrity": "sha512-1GedetLKzmqmgwabuMSqPsT7oumdR77SBpDfNNJhADRIeA3LN/2RVqR4fFqwvzhAqcTef6PPCzQwITE/YQ8S8A==", - "dev": true, - "requires": { - "@sinonjs/formatio": "3.0.0", - "just-extend": "^3.0.0", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - } - }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", @@ -863,21 +291,6 @@ "is-extendable": "^0.1.1" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "one-time": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", - "dev": true - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -890,53 +303,18 @@ "is-glob": "^2.0.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promised-io": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", - "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", - "dev": true - }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -962,21 +340,6 @@ } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -1004,12 +367,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -1071,60 +428,6 @@ "micromatch": "^2.3.11" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - } - }, - "sinon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", - "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", - "dev": true, - "requires": { - "build": "^0.1.4", - "diff": "^3.1.0", - "formatio": "1.2.0", - "lodash.get": "^4.4.2", - "lolex": "^2.1.2", - "native-promise-only": "^0.8.1", - "nise": "^1.0.1", - "path-to-regexp": "^1.7.0", - "samsam": "^1.1.3", - "text-encoding": "0.6.4", - "type-detect": "^4.0.0" - }, - "dependencies": { - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - } - } - }, - "sinon-chai": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", - "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1150,71 +453,11 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true - }, - "timespan": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", - "dev": true - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", - "dev": true - }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - }, "type-r": { "version": "3.0.0-a05", "resolved": "https://registry.npmjs.org/type-r/-/type-r-3.0.0-a05.tgz", @@ -1259,60 +502,6 @@ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "winston": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.1.0.tgz", - "integrity": "sha512-FsQfEE+8YIEeuZEYhHDk5cILo1HOcWkGwvoidLrDgPog0r4bser1lEIOco2dN9zpDJ1M88hfDgZvxe5z4xNcwg==", - "dev": true, - "requires": { - "async": "^2.6.0", - "diagnostics": "^1.1.1", - "is-stream": "^1.1.0", - "logform": "^1.9.1", - "one-time": "0.0.4", - "readable-stream": "^2.3.6", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.2.0" - } - }, - "winston-transport": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.2.0.tgz", - "integrity": "sha512-0R1bvFqxSlK/ZKTH86nymOuKv/cT1PQBMuDdA7k7f0S9fM44dNH6bXnuxwXPrN8lefJgtZq08BKdyZ0DZIy/rg==", - "dev": true, - "requires": { - "readable-stream": "^2.3.6", - "triple-beam": "^1.2.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "wrench": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", - "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=", - "dev": true } } } diff --git a/package.json b/package.json index 9404473..0f0a8d3 100644 --- a/package.json +++ b/package.json @@ -26,17 +26,11 @@ }, "devDependencies": { "@types/jquery": "^2.0.51", - "chai": "* <3", - "chai-as-promised": "^5.3.0", "jquery": "*", - "mocha": "^3.5.3", - "requirejs": "^2.3.5", "rollup": "^0.50.0", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^2.0.1", - "sinon": "^3.3.0", - "sinon-chai": "^2.14.0", "type-r": "alpha", "typescript": "^3.1.6", "underscore": "*" From 406787b5e67920802e2e74201de949b077adf851 Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 21:46:56 -0500 Subject: [PATCH 5/6] Cleanup --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 0f0a8d3..968f7d0 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,7 @@ "license": "MIT", "scripts": { "build": "npm run compile", - "compile": "node_modules/.bin/tsc && ./node_modules/.bin/rollup --config", - "deploy": "cp ./dist/* ../observer-frontend/htdocs/js/lib/nested" + "compile": "node_modules/.bin/tsc && ./node_modules/.bin/rollup --config" }, "dependencies": { "tslib": "^1.9.3" From 6016a5d9087ee2c9cbf4cd8ab650b6c0b3d79cf5 Mon Sep 17 00:00:00 2001 From: Vlad Balin Date: Mon, 5 Nov 2018 22:03:35 -0500 Subject: [PATCH 6/6] type-r is external dependency now --- dist/index.js | 2 +- dist/index.js.map | 2 +- lib/index.js.map | 2 +- rollup.config.js | 6 ++++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dist/index.js b/dist/index.js index f2fdbaf..9416099 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("underscore")):"function"==typeof define&&define.amd?define(["exports","jquery","underscore"],e):e(t.Nested={},t.$,t._)}(this,function(s,t,p){"use strict";var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function a(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var u=function(){return(u=Object.assign||function(t){for(var e,n=1,r=arguments.length;n").attr(t);this.setElement(e,!1)}}});var lr=/\((.*?)\)/g,fr=/(\(\?)?:\w+/g,pr=/\*\w+/g,dr=/[\-{}\[\]+?.,\\\^$|#\s]/g;function vr(){this.handlers=[],this.checkUrl=p.bind(this.checkUrl,this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)}p.extend(hr.prototype,{initialize:function(){},route:function(n,r,i){p.isRegExp(n)||(n=this._routeToRegExp(n)),p.isFunction(r)&&(i=r,r=""),i||(i=this[r]);var o=this;return sr.history.route(n,function(t){var e=o._extractParameters(n,t);!1!==o.execute(i,e,r)&&(o.trigger.apply(o,["route:"+r].concat(e)),o.trigger("route",r,e),sr.history.trigger("route",o,r,e))}),this},execute:function(t,e,n){t&&t.apply(this,e)},navigate:function(t,e){return sr.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=p.result(this,"routes");for(var t,e=p.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(dr,"\\$&").replace(lr,"(?:$1)?").replace(fr,function(t,e){return e?t:"([^/?]+)"}).replace(pr,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return p.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var yr=/^[#\/]|\s+$/g,gr=/^\/+|\/+$/g,mr=/#.*$/;vr.started=!1,p.extend(vr.prototype,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(yr,"")},start:function(t){if(vr.started)throw new Error("Backbone.history has already been started");if(vr.started=!0,this.options=p.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||7").attr(t);this.setElement(e,!1)}}});var u=/\((.*?)\)/g,c=/(\(\?)?:\w+/g,l=/\*\w+/g,f=/[\-{}\[\]+?.,\\\^$|#\s]/g;function d(){this.handlers=[],this.checkUrl=p.bind(this.checkUrl,this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)}p.extend(s.prototype,{initialize:function(){},route:function(r,n,i){p.isRegExp(r)||(r=this._routeToRegExp(r)),p.isFunction(n)&&(i=n,n=""),i||(i=this[n]);var s=this;return h.history.route(r,function(t){var e=s._extractParameters(r,t);!1!==s.execute(i,e,n)&&(s.trigger.apply(s,["route:"+n].concat(e)),s.trigger("route",n,e),h.history.trigger("route",s,n,e))}),this},execute:function(t,e,r){t&&t.apply(this,e)},navigate:function(t,e){return h.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=p.result(this,"routes");for(var t,e=p.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(f,"\\$&").replace(u,"(?:$1)?").replace(c,function(t,e){return e?t:"([^/?]+)"}).replace(l,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return p.map(r,function(t,e){return e===r.length-1?t||null:t?decodeURIComponent(t):null})}});var v=/^[#\/]|\s+$/g,g=/^\/+|\/+$/g,y=/#.*$/;d.started=!1,p.extend(d.prototype,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(v,"")},start:function(t){if(d.started)throw new Error("Backbone.history has already been started");if(d.started=!0,this.options=p.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||7= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n"," /** Similar to underscore `_.defaults` */\nexport function defaults< T >( dest : T, ...sources : Object[] ) : T\nexport function defaults< T >( dest : T, source : Object ) : T {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n if( arguments.length > 2 ){\n for( let i = 2; i < arguments.length; i++ ){\n const other = arguments[ i ];\n other && defaults( dest, other );\n }\n }\n\n return dest;\n}\n\n/** Check if value is raw JSON */\nexport function isValidJSON( value : any ) : boolean {\n if( value === null ){\n return true;\n }\n\n switch( typeof value ){\n case 'number' :\n case 'string' :\n case 'boolean' :\n return true;\n\n case 'object':\n var proto = Object.getPrototypeOf( value );\n\n if( proto === Object.prototype || proto === Array.prototype ){\n return every( value, isValidJSON );\n }\n }\n\n return false;\n}\n\n/** Get the base class constructor function.\n * @param Class Subclass constructor function.\n * @returns Base class constructor function.\n */\nexport function getBaseClass( Class : Function ) {\n return Object.getPrototypeOf( Class.prototype ).constructor\n}\n\nexport function assignToClassProto( Class, definition : T, ...names : K[] ) : void {\n for( let name of names ){\n const value = definition[ name ];\n value === void 0 || ( Class.prototype[ name ] = value );\n }\n}\n\n/** Checks whenever given object is an empty hash `{}` */\nexport function isEmpty( obj : {} ) : boolean {\n if( obj ){\n for( let key in obj ){\n if( obj.hasOwnProperty( key ) ){\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport type Iteratee = ( value : any, key? : string | number ) => any;\n\n/** @hidden */\nfunction someArray( arr : any[], fun : Iteratee ) : any {\n let result;\n\n for( let i = 0; i < arr.length; i++ ){\n if( result = fun( arr[ i ], i ) ){\n return result;\n }\n }\n}\n\n/** @hidden */\nfunction someObject( obj : {}, fun : Iteratee ) : any {\n let result;\n\n for( let key in obj ){\n if( obj.hasOwnProperty( key ) ){\n if( result = fun( obj[ key ], key ) ){\n return result;\n }\n }\n }\n}\n\n/** Similar to underscore `_.some` */\nexport function some( obj, fun : Iteratee ) : any {\n if( Object.getPrototypeOf( obj ) === ArrayProto ){\n return someArray( obj, fun );\n }\n else{\n return someObject( obj, fun );\n }\n}\n\n/** Similar to underscore `_.every` */\nexport function every( obj : { }, predicate : Iteratee ) : boolean {\n return !some( obj, x => !predicate( x ) );\n}\n\n/** Similar to `getOwnPropertyDescriptor`, but traverse the whole prototype chain. */\nexport function getPropertyDescriptor( obj : {}, prop : string ) : PropertyDescriptor {\n let desc : PropertyDescriptor;\n\n for( let proto = obj; !desc && proto; proto = Object.getPrototypeOf( proto ) ) {\n desc = Object.getOwnPropertyDescriptor( proto, prop );\n }\n\n return desc;\n}\n\n/** Similar to underscore `_.omit` */\nexport function omit( source : {}, ...rest : string[] ) : {}\nexport function omit( source ) : {} {\n const dest = {}, discard = {};\n\n for( let i = 1; i < arguments.length; i ++ ){\n discard[ arguments[ i ] ] = true;\n }\n\n for( var name in source ) {\n if( !discard.hasOwnProperty( name ) && source.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n return dest;\n}\n\n/** map `source` object properties with a given function, and assign the result to the `dest` object.\n * When `fun` returns `undefined`, skip this value. \n */\nexport function transform< A, B >( dest : { [ key : string ] : A }, source : { [ key : string ] : B }, fun : ( value : B, key : string ) => A | void ) : { [ key : string ] : A } {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) ) {\n var value = fun( source[ name ], name );\n value === void 0 || ( dest[ name ] = < A >value );\n }\n }\n\n return dest;\n}\n\n/** @hidden */\nexport function fastAssign< A >( dest : A, source : {} ) : A {\n for( var name in source ) {\n dest[ name ] = source[ name ];\n }\n\n return dest;\n}\n\n/** @hidden */\nexport function fastDefaults< A >( dest : A, source : {} ) : A {\n for( var name in source ) {\n if( dest[ name ] === void 0 ){\n dest[ name ] = source[ name ];\n }\n }\n\n return dest;\n}\n\n/** Similar to underscore `_.extend` and `Object.assign` */\nexport function assign< T >( dest : T, ...sources : Object[] ) : T\nexport function assign< T >( dest : T, source : Object ) : T {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n if( arguments.length > 2 ){\n for( let i = 2; i < arguments.length; i++ ){\n const other = arguments[ i ];\n other && assign( dest, other );\n }\n }\n\n return dest;\n}\n\n/** Similar to underscore `_.keys` */\nexport function keys( o : any ) : string[]{\n return o ? Object.keys( o ) : [];\n}\n\n/** Similar to underscore `_.once` */\nexport function once( func : Function ) : Function {\n var memo, first = true;\n return function() {\n if ( first ) {\n first = false;\n memo = func.apply(this, arguments);\n func = null;\n }\n return memo;\n };\n}\n\n/** @hidden */\nconst ArrayProto = Array.prototype,\n DateProto = Date.prototype,\n ObjectProto = Object.prototype;\n\n/**\n * Determine whenever two values are not equal, deeply traversing \n * arrays and plain JS objects (hashes). Dates are compared by enclosed timestamps, all other\n * values are compared with strict comparison.\n */\nexport function notEqual( a : any, b : any) : boolean {\n if( a === b ) return false;\n\n if( a && b && typeof a == 'object' && typeof b == 'object' ) {\n const protoA = Object.getPrototypeOf( a );\n\n if( protoA !== Object.getPrototypeOf( b ) ) return true;\n\n switch( protoA ){\n case DateProto : return +a !== +b;\n case ArrayProto : return arraysNotEqual( a, b );\n case ObjectProto :\n case null:\n return objectsNotEqual( a, b );\n }\n }\n\n return true;\n}\n\n/** @hidden */\nfunction objectsNotEqual( a, b ) {\n const keysA = Object.keys( a );\n\n if( keysA.length !== Object.keys( b ).length ) return true;\n\n for( let i = 0; i < keysA.length; i++ ) {\n const key = keysA[ i ];\n\n if( !b.hasOwnProperty( key ) || notEqual( a[ key ], b[ key ] ) ) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @hidden */\nfunction arraysNotEqual( a, b ) {\n if( a.length !== b.length ) return true;\n\n for( let i = 0; i < a.length; i++ ) {\n if( notEqual( a[ i ], b[ i ] ) ) return true;\n }\n\n return false;\n}\n\n/**\n * Create an object without Object prototype members except hasOwnProperty.\n * @param obj - optional parameter to populate the hash map from.\n */\nconst HashProto = Object.create( null );\nHashProto.hasOwnProperty = ObjectProto.hasOwnProperty;\n\nexport function hashMap( obj? ){\n const hash = Object.create( HashProto );\n return obj ? assign( hash, obj ) : hash;\n}","import { once as _once } from './tools'\n\n/*******************\n * Prebuilt events map, used for optimized bulk event subscriptions.\n *\n * const events = new EventMap({\n * 'change' : true, // Resend this event from self as it is.\n * 'change:attr' : 'localTargetFunction',\n * 'executedInTargetContext' : function(){ ... }\n * 'executedInNativeContext' : '^props.handler'\n * })\n */\n/** @hidden */\nexport interface EventsDefinition {\n [ events : string ] : Function | string | boolean\n}\n\n/** @hidden */\nexport class EventMap {\n handlers : EventDescriptor[] = [];\n\n constructor( map? : EventsDefinition | EventMap ){\n if( map ){\n if( map instanceof EventMap ){\n this.handlers = map.handlers.slice();\n }\n else{\n map && this.addEventsMap( map );\n }\n }\n }\n\n merge( map : EventMap ){\n this.handlers = this.handlers.concat( map.handlers );\n }\n\n addEventsMap( map : EventsDefinition ){\n for( let names in map ){\n this.addEvent( names, map[ names ] )\n }\n }\n\n bubbleEvents( names : string ){\n for( let name of names.split( eventSplitter ) ){\n this.addEvent( name, getBubblingHandler( name ) );\n }\n }\n\n addEvent( names : string, callback : Function | string | boolean ){\n const { handlers } = this;\n\n for( let name of names.split( eventSplitter ) ){\n handlers.push( new EventDescriptor( name, callback ) );\n }\n }\n\n subscribe( target : {}, source : EventSource ){\n for( let event of this.handlers ){\n on( source, event.name, event.callback, target );\n }\n }\n\n unsubscribe( target : {}, source : EventSource ){\n for( let event of this.handlers ){\n off( source, event.name, event.callback, target );\n }\n }\n}\n\n/** @hidden */\nexport class EventDescriptor {\n callback : Function\n\n constructor(\n public name : string,\n callback : Function | string | boolean\n ){\n if( callback === true ){\n this.callback = getBubblingHandler( name );\n }\n else if( typeof callback === 'string' ){\n this.callback =\n function localCallback(){\n const handler = this[ callback ];\n handler && handler.apply( this, arguments );\n };\n }\n else{\n this.callback = callback;\n }\n }\n}\n\n/** @hidden */\nconst _bubblingHandlers = {};\n\n/** @hidden */\nfunction getBubblingHandler( event : string ){\n return _bubblingHandlers[ event ] || (\n _bubblingHandlers[ event ] = function( a?, b?, c?, d?, e? ){\n if( d !== void 0 || e !== void 0 ) trigger5( this, event, a, b, c, d, e );\n if( c !== void 0 ) trigger3( this, event, a, b, c );\n else trigger2( this, event, a, b );\n }\n );\n}\n\n/** @hidden */\nexport interface HandlersByEvent {\n [ name : string ] : EventHandler\n}\n\n/** @hidden */\nexport class EventHandler {\n constructor( public callback : Callback, public context : any, public next = null ){}\n}\n\n/** @hidden */\nfunction listOff( _events : HandlersByEvent, name : string, callback : Callback, context : any ){\n const head = _events[ name ];\n\n let filteredHead, prev;\n\n for( let ev = head; ev; ev = ev.next ){\n // Element must be kept\n if( ( callback && callback !== ev.callback && callback !== ev.callback._callback ) ||\n ( context && context !== ev.context ) ){\n \n prev = ev;\n filteredHead || ( filteredHead = ev );\n }\n // Element must be skipped\n else{\n if( prev ) prev.next = ev.next;\n }\n }\n\n if( head !== filteredHead ) _events[ name ] = filteredHead;\n}\n\n/** @hidden */\nfunction listSend2( head : EventHandler, a, b ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b );\n}\n\n/** @hidden */\nfunction listSend3( head : EventHandler, a, b, c ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c );\n}\n\n/** @hidden */\nfunction listSend4( head : EventHandler, a, b, c, d ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d );\n}\n\n/** @hidden */\nfunction listSend5( head : EventHandler, a, b, c, d, e ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d, e );\n}\n\n/** @hidden */\nfunction listSend6( head : EventHandler, a, b, c, d, e, f ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d, e, f );\n}\n\n/** @hidden */\nexport interface Callback extends Function {\n _callback? : Function\n}\n\n/** @hidden */\nexport function on( source : EventSource, name : string, callback : Callback, context? : any ) : void {\n if( callback ){\n const _events = source._events || ( source._events = Object.create( null ) );\n _events[ name ] = new EventHandler( callback, context, _events[ name ] );\n }\n}\n\n/** @hidden */\nexport function once( source : EventSource, name : string, callback : Callback, context? : any ) : void {\n if( callback ){\n const once : Callback = _once( function(){\n off( source, name, once );\n callback.apply(this, arguments);\n });\n\n once._callback = callback;\n on( source, name, once, context );\n }\n}\n\n/** @hidden */\nexport function off( source : EventSource, name? : string, callback? : Callback, context? : any ) : void {\n const { _events } = source;\n if( _events ){\n if( callback || context ) {\n if( name ){\n listOff( _events, name, callback, context );\n }\n else{\n for( let name in _events ){\n listOff( _events, name, callback, context );\n }\n }\n }\n else if( name ){\n _events[ name ] = void 0;\n }\n else{\n source._events = void 0;\n }\n }\n}\n\n/** @hidden */\nexport interface EventSource {\n _events : HandlersByEvent\n}\n\n/** @hidden */\nconst eventSplitter = /\\s+/;\n\n/** @hidden */\nexport function strings( api : ApiEntry, source : EventSource, events : string, callback : Callback, context ){\n if( eventSplitter.test( events ) ){\n const names = events.split( eventSplitter );\n for( let name of names ) api( source, name, callback, context );\n }\n else api( source, events, callback, context );\n}\n\n/** @hidden */\nexport type ApiEntry = ( source : EventSource, event : string, callback : Callback, context? : any ) => void\n\n/*********************************\n * Event-triggering API\n */\n\n/** @hidden */\nexport function trigger2( self : EventSource, name : string, a, b ) : void {\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend2( queue, a, b );\n listSend3( all, name, a, b );\n }\n};\n\n/** @hidden */\nexport function trigger3( self : EventSource, name : string, a, b, c ) : void{\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend3( queue, a, b, c );\n listSend4( all, name, a, b, c );\n }\n};\n\n/** @hidden */\nexport function trigger5( self : EventSource, name : string, a, b, c, d, e ) : void{\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend5( queue, a, b, c, d, e );\n listSend6( all, name, a, b, c, d, e );\n }\n};","/*****************************************************************\n * Mixins engine and @define metaprogramming class extensions\n *\n * Vlad Balin & Volicon, (c) 2016-2017\n */\nimport { __extends } from 'tslib';\nimport { assign, defaults, getBaseClass, hashMap, transform } from './tools';\n\nexport interface Subclass< T > extends MixableConstructor {\n new ( ...args ) : T\n prototype : T\n}\n\nexport interface MixableConstructor extends Function{\n __super__? : object;\n mixins? : MixinsState;\n onExtend? : ( BaseClass : Function ) => void;\n onDefine? : ( definition : object, BaseClass : Function ) => void;\n define? : ( definition? : object, statics? : object ) => MixableConstructor;\n extend? : ( definition? : T, statics? : object ) => Subclass;\n}\n\nexport interface MixableDefinition {\n mixins? : Mixin[]\n}\n\n/**\n * Base class, holding metaprogramming class extensions.\n * Supports mixins and Class.define metaprogramming method.\n */\nexport class Mixable {\n static onExtend : ( BaseClass : Function ) => void;\n static onDefine : ( definition : object, BaseClass : Function ) => object; \n static __super__ : object\n static mixins : MixinsState;\n\n /** \n * Must be called after inheritance and before 'define'.\n */\n static define( protoProps : MixableDefinition = {}, staticProps? : object ) : MixableConstructor {\n const BaseClass : MixableConstructor = getBaseClass( this );\n\n // Assign statics.\n staticProps && assign( this, staticProps );\n\n // Extract and apply mixins from the definition.\n const { mixins, ...defineMixin } = protoProps;\n mixins && this.mixins.merge( mixins );\n\n // Unshift definition to the the prototype.\n this.mixins.mergeObject( this.prototype, defineMixin, true );\n\n // Unshift definition from statics to the prototype.\n this.mixins.mergeObject( this.prototype, this.mixins.getStaticDefinitions( BaseClass ), true );\n\n // Call onDefine hook, if it's present.\n this.onDefine && this.onDefine( this.mixins.definitions, BaseClass );\n \n // Apply merge rules to inherited members. No mixins can be added after this point.\n this.mixins.mergeInheritedMembers( BaseClass );\n\n return this;\n }\n\n /** Backbone-compatible extend method to be used in ES5 and for backward compatibility */\n static extend< T extends object>(spec? : T, statics? : {} ) : Subclass< T > {\n let TheSubclass : Subclass< T >;\n\n // 1. Create the subclass (ES5 compatibility shim).\n // If constructor function is given...\n if( spec && spec.hasOwnProperty( 'constructor' ) ){\n // ...we need to manually call internal TypeScript __extend function. Hack! Hack!\n TheSubclass = spec.constructor as any;\n __extends( TheSubclass, this );\n }\n // Otherwise, create the subclall in usual way.\n else{\n TheSubclass = class Subclass extends this {} as any;\n }\n\n predefine( TheSubclass );\n spec && TheSubclass.define( spec, statics );\n\n return TheSubclass;\n }\n}\n\n/** @decorator `@predefine` for forward definitions. Can be used with [[Mixable]] classes only.\n * Forwards the call to the [[Mixable.predefine]];\n */\nexport function predefine( Constructor : MixableConstructor ) : void {\n const BaseClass : MixableConstructor = getBaseClass( Constructor );\n\n // Legacy systems support\n Constructor.__super__ = BaseClass.prototype;\n \n // Initialize mixins structures...\n Constructor.define || MixinsState.get( Mixable ).populate( Constructor );\n\n // Make sure Ctor.mixins are ready before the callback...\n MixinsState.get( Constructor );\n\n // Call extend hook.\n Constructor.onExtend && Constructor.onExtend( BaseClass );\n}\n\n/** @decorator `@define` for metaprogramming magic. Can be used with [[Mixable]] classes only.\n * Forwards the call to [[Mixable.define]].\n */\nexport function define( ClassOrDefinition : Function ) : void;\nexport function define( ClassOrDefinition : object ) : ClassDecorator;\nexport function define( ClassOrDefinition : object | MixableConstructor ){\n // @define class\n if( typeof ClassOrDefinition === 'function' ){\n predefine( ClassOrDefinition );\n ( ClassOrDefinition as MixableConstructor ).define();\n }\n // @define({ prop : val, ... }) class\n else{\n return function( Ctor : MixableConstructor ){\n predefine( Ctor );\n Ctor.define( ClassOrDefinition );\n }\n }\n}\n\nexport function definitions( rules : MixinMergeRules ) : ClassDecorator {\n return ( Class : Function ) => {\n const mixins = MixinsState.get( Class );\n mixins.definitionRules = defaults( hashMap(), rules, mixins.definitionRules );\n }\n}\n\n// Create simple property list decorator\nexport function propertyListDecorator( listName: string ) : PropertyDecorator {\n return function propList(proto, name : string) {\n const list = proto.hasOwnProperty( listName ) ?\n proto[ listName ] : (proto[ listName ] = (proto[ listName ] || []).slice()); \n\n list.push(name);\n }\n}\n\nexport function definitionDecorator( definitionKey, value ){\n return ( proto : object, name : string ) => {\n MixinsState\n .get( proto.constructor )\n .mergeObject( proto, {\n [ definitionKey ] : {\n [ name ] : value\n }\n });\n }\n}\n\nexport class MixinsState {\n mergeRules : MixinMergeRules;\n definitionRules : MixinMergeRules;\n definitions : object = {};\n appliedMixins : Mixin[];\n\n // Return mixins state for the class. Initialize if it's not exist.\n static get( Class ) : MixinsState {\n const { mixins } = Class;\n \n return mixins && Class === mixins.Class ? mixins :\n Class.mixins = new MixinsState( Class );\n }\n\n constructor( public Class : MixableConstructor ){\n const { mixins } = getBaseClass( Class );\n\n this.mergeRules = ( mixins && mixins.mergeRules ) || hashMap();\n this.definitionRules = ( mixins && mixins.definitionRules ) || hashMap();\n this.appliedMixins = ( mixins && mixins.appliedMixins ) || [];\n }\n\n getStaticDefinitions( BaseClass : Function ){\n const definitions = hashMap(),\n { Class } = this;\n\n return transform( definitions, this.definitionRules, ( rule, name ) =>{\n if( BaseClass[ name ] !== Class[ name ]){\n return Class[ name ];\n }\n });\n }\n\n merge( mixins : Mixin[] ){\n const proto = this.Class.prototype,\n { mergeRules } = this;\n\n // Copy applied mixins array as it's going to be updated.\n const appliedMixins = this.appliedMixins = this.appliedMixins.slice();\n\n // Apply mixins in sequence...\n for( let mixin of mixins ) {\n // Mixins array should be flattened.\n if( Array.isArray( mixin ) ) {\n this.merge( mixin );\n }\n // Don't apply mixins twice.\n else if( appliedMixins.indexOf( mixin ) < 0 ){\n appliedMixins.push( mixin );\n\n // For constructors, merge _both_ static and prototype members.\n if( typeof mixin === 'function' ){\n // Merge static members\n this.mergeObject( this.Class, mixin );\n\n // merge definitionRules and mergeRules\n const sourceMixins = ( mixin as any ).mixins;\n if( sourceMixins ){\n this.mergeRules = defaults( hashMap(), this.mergeRules, sourceMixins.mergeRules );\n this.definitionRules = defaults( hashMap(), this.definitionRules, sourceMixins.definitionRules );\n this.appliedMixins = this.appliedMixins.concat( sourceMixins.appliedMixins );\n }\n\n // Prototypes are merged according with rules.\n this.mergeObject( proto, mixin.prototype );\n }\n // Handle plain object mixins.\n else {\n this.mergeObject( proto, mixin );\n }\n }\n }\n }\n\n populate( ...ctors : Function[] ){\n for( let Ctor of ctors ) {\n MixinsState.get( Ctor ).merge([ this.Class ]);\n }\n }\n\n mergeObject( dest : object, source : object, unshift? : boolean ) {\n forEachOwnProp( source, name => {\n const sourceProp = Object.getOwnPropertyDescriptor( source, name );\n let rule : MixinMergeRule;\n\n if( rule = this.definitionRules[ name ] ){\n assignProperty( this.definitions, name, sourceProp, rule, unshift );\n }\n\n if( !rule || rule === mixinRules.protoValue ){\n assignProperty( dest, name, sourceProp, this.mergeRules[ name ], unshift );\n }\n });\n }\n\n mergeInheritedMembers( BaseClass : Function ){\n const { mergeRules, Class } = this;\n\n if( mergeRules ){\n const proto = Class.prototype,\n baseProto = BaseClass.prototype;\n\n for( let name in mergeRules ) {\n const rule = mergeRules[ name ];\n\n if( proto.hasOwnProperty( name ) && name in baseProto ){\n proto[ name ] = resolveRule( proto[ name ], baseProto[ name ], rule );\n }\n }\n }\n }\n}\n\nconst dontMix = {\n function : hashMap({\n length : true,\n prototype : true,\n caller : true,\n arguments : true,\n name : true,\n __super__ : true\n }),\n \n object : hashMap({\n constructor : true\n }) \n}\n\nfunction forEachOwnProp( object : object, fun : ( name : string ) => void ){\n const ignore = dontMix[ typeof object ];\n\n for( let name of Object.getOwnPropertyNames( object ) ) {\n ignore[ name ] || fun( name );\n }\n}\n\nexport interface MixinMergeRules {\n [ name : string ] : MixinMergeRule\n}\n\nexport type MixinMergeRule = ( a : any, b : any ) => any\nexport type Mixin = { [ key : string ] : any } | Function\n\n// @mixins( A, B, ... ) decorator.\nexport interface MixinRulesDecorator {\n ( rules : MixinMergeRules ) : ClassDecorator\n value( a : object, b : object) : object;\n protoValue( a : object, b : object) : object;\n merge( a : object, b : object ) : object;\n pipe( a: Function, b : Function ) : Function;\n defaults( a: Function, b : Function ) : Function;\n classFirst( a: Function, b : Function ) : Function;\n classLast( a: Function, b : Function ) : Function;\n every( a: Function, b : Function ) : Function;\n some( a: Function, b : Function ) : Function;\n}\n\nexport const mixins = ( ...list : Mixin[] ) => (\n ( Class : Function ) => MixinsState.get( Class ).merge( list )\n);\n\n// @mixinRules({ name : rule, ... }) decorator.\nexport const mixinRules = ( ( rules : MixinMergeRules ) => (\n ( Class : Function ) => {\n const mixins = MixinsState.get( Class );\n mixins.mergeRules = defaults( rules, mixins.mergeRules );\n }\n) ) as MixinRulesDecorator;\n\n// Pre-defined mixin merge rules\n\nmixinRules.value = ( a, b ) => a;\n\nmixinRules.protoValue = ( a, b ) => a;\n\n// Recursively merge members\nmixinRules.merge = ( a, b ) => defaults( {}, a, b );\n\n // Execute methods in pipe, with the class method executed last.\nmixinRules.pipe = ( a, b ) => (\n function( x : any ) : any {\n return a.call( this, b.call( this, x ) );\n }\n);\n\n // Assume methods return an object, and merge results with defaults (class method executed first)\nmixinRules.defaults = ( a : Function, b : Function ) => (\n function() : object {\n return defaults( a.apply( this, arguments ), b.apply( this, arguments ) );\n }\n);\n\n// Execute methods in sequence staring with the class method.\nmixinRules.classFirst = ( a : Function, b : Function ) => (\n function() : void {\n a.apply( this, arguments );\n b.apply( this, arguments );\n }\n);\n\n // Execute methods in sequence ending with the class method.\nmixinRules.classLast = ( a : Function, b : Function ) => (\n function() : void {\n b.apply( this, arguments );\n a.apply( this, arguments );\n }\n)\n\n // Execute methods in sequence returning the first falsy result.\nmixinRules.every = ( a : Function, b : Function ) =>(\n function() : any {\n return a.apply( this, arguments ) && b.apply( this, arguments );\n }\n);\n // Execute methods in sequence returning the first truthy result.\nmixinRules.some = ( a : Function, b : Function ) =>(\n function() : any {\n return a.apply( this, arguments ) || b.apply( this, arguments );\n }\n);\n\n/**\n * Helpers\n */\n\nfunction assignProperty( dest : object, name : string, sourceProp : PropertyDescriptor, rule : MixinMergeRule, unshift? : boolean ){\n// Destination prop is defined, thus the merge rules must be applied.\n if( dest.hasOwnProperty( name ) ){\n const destProp = Object.getOwnPropertyDescriptor( dest, name );\n\n if( destProp.configurable && 'value' in destProp ){\n dest[ name ] = unshift ?\n resolveRule( sourceProp.value, destProp.value, rule ) :\n resolveRule( destProp.value, sourceProp.value, rule ) ;\n }\n }\n // If destination is empty, just copy the prop over.\n else{\n Object.defineProperty( dest, name, sourceProp );\n }\n}\n\nfunction resolveRule( dest, source, rule : MixinMergeRule ){\n // When destination is empty, take the source.\n if( dest === void 0 ) return source;\n\n // In these cases we take non-empty destination:\n if( !rule || source === void 0 ) return dest;\n\n // In other cases we must merge values.\n return rule( dest, source );\n}","import * as _eventsApi from './eventsource';\nimport { EventMap, EventsDefinition, EventSource, HandlersByEvent } from './eventsource';\nimport { define, definitions, Mixable, MixableConstructor, mixinRules, MixinsState } from './mixins';\nimport { omit, transform } from './tools';\n\nconst { strings, on, off, once, trigger5, trigger2, trigger3 } = _eventsApi;\n\n/** @hidden */\nlet _idCount = 0;\n\n/** @hidden */\nfunction uniqueId() : string {\n return 'l' + _idCount++;\n}\n\nexport { EventMap, EventsDefinition };\n\nexport interface MessengerDefinition {\n _localEvents? : EventMap\n localEvents? : EventsDefinition\n properties? : PropertyMap\n [ name : string ] : any\n}\n\nexport interface PropertyMap {\n [ name : string ] : Property\n}\n\nexport type Property = PropertyDescriptor | ( () => any )\n\n/** @hidden */\nexport interface MessengersByCid {\n [ cid : string ] : Messenger\n}\n\n/** @hidden */\nexport type CallbacksByEvents = { [ events : string ] : Function }\n\n/*************************\n * Messenger is mixable class with capabilities of sending and receiving synchronous events.\n * This class itself can serve as both mixin and base class.\n */\n\n@define\n@definitions({\n properties : mixinRules.merge,\n localEvents : mixinRules.merge\n})\nexport class Messenger implements Mixable, EventSource {\n // Define extendable mixin static properties.\n static __super__ : object;\n static mixins : MixinsState;\n static onExtend : ( BaseClass : Function ) => void;\n static define : ( definition? : MessengerDefinition, statics? : object ) => MixableConstructor;\n static extend : ( definition? : MessengerDefinition, statics? : object ) => MixableConstructor;\n static onDefine({ localEvents, _localEvents, properties } : MessengerDefinition, BaseClass? : typeof Mixable ){\n // Handle localEvents definition\n if( localEvents || _localEvents ){\n const eventsMap = new EventMap( this.prototype._localEvents );\n\n localEvents && eventsMap.addEventsMap( localEvents );\n _localEvents && eventsMap.merge( _localEvents );\n \n this.prototype._localEvents = eventsMap;\n }\n\n // Handle properties definitions...\n if( properties ){\n Object.defineProperties( this.prototype, transform( {}, properties, toPropertyDescriptor ) );\n }\n }\n\n /** @hidden */ \n _events : HandlersByEvent = void 0;\n\n /** @hidden */ \n _listeningTo : MessengersByCid = void 0\n\n /** Unique client-only id. */\n cid : string\n\n /** @hidden Prototype-only property to manage automatic local events subscription */ \n _localEvents : EventMap\n\n /** @hidden */ \n constructor(){\n this.cid = uniqueId();\n this.initialize.apply( this, arguments );\n\n // TODO: local events subscribe?\n }\n\n /** Method is called at the end of the constructor */\n initialize() : void {}\n \n on( events : string | CallbacksByEvents, callback, context? ) : this {\n if( typeof events === 'string' ) strings( on, this, events, callback, context );\n else for( let name in events ) strings( on, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n once( events : string | CallbacksByEvents, callback, context? ) : this {\n if( typeof events === 'string' ) strings( once, this, events, callback, context );\n else for( let name in events ) strings( once, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n off( events? : string | CallbacksByEvents, callback?, context? ) : this {\n if( !events ) off( this, void 0, callback, context );\n else if( typeof events === 'string' ) strings( off, this, events, callback, context );\n else for( let name in events ) strings( off, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n trigger(name : string, a?, b?, c?, d?, e? ) : this {\n if( d !== void 0 || e !== void 0 ) trigger5( this, name, a, b, c, d, e );\n else if( c !== void 0 ) trigger3( this, name, a, b, c );\n else trigger2( this, name, a, b );\n return this;\n }\n\n listenTo( source : Messenger, a : string | CallbacksByEvents, b? : Function ) : this {\n if( source ){\n addReference( this, source );\n source.on( a, !b && typeof a === 'object' ? this : b, this );\n }\n\n return this;\n }\n\n listenToOnce( source : Messenger, a : string | CallbacksByEvents, b? : Function ) : this {\n if( source ){\n addReference( this, source );\n source.once( a, !b && typeof a === 'object' ? this : b, this );\n }\n\n return this;\n }\n\n stopListening( a_source? : Messenger, a? : string | CallbacksByEvents, b? : Function ) : this {\n const { _listeningTo } = this;\n if( _listeningTo ){\n const removeAll = !( a || b ),\n second = !b && typeof a === 'object' ? this : b;\n\n if( a_source ){\n const source = _listeningTo[ a_source.cid ];\n if( source ){\n if( removeAll ) delete _listeningTo[ a_source.cid ];\n source.off( a, second, this );\n }\n }\n else if( a_source == null ){\n for( let cid in _listeningTo ) _listeningTo[ cid ].off( a, second, this );\n\n if( removeAll ) ( this._listeningTo = void 0 );\n }\n }\n\n return this;\n }\n\n /**\n * Destructor. Stops messenger from listening to all objects,\n * and stop others from listening to the messenger. \n */\n _disposed : boolean\n\n dispose() : void {\n if( this._disposed ) return;\n\n this.stopListening();\n this.off();\n\n this._disposed = true;\n }\n}\n\n/**\n * Backbone 1.2 API conformant Events mixin.\n */\nexport const Events : Messenger = omit( Messenger.prototype, 'constructor', 'initialize' );\n\n/**\n * Messenger Private Helpers \n */\n\nfunction toPropertyDescriptor( x : Property ) : PropertyDescriptor {\n if( x ){\n return typeof x === 'function' ? { get : < () => any >x, configurable : true } : x;\n }\n}\n\n/** @hidden */\nfunction addReference( listener : Messenger, source : Messenger ){\n const listeningTo = listener._listeningTo || (listener._listeningTo = Object.create( null ) ),\n cid = source.cid || ( source.cid = uniqueId() );\n\n listeningTo[ cid ] = source;\n}","import { Messenger } from './events'\nimport { define } from './mixins';\n\nexport type LogLevel = 'error' | 'warn' | 'debug' | 'info' | 'log';\nexport type LoggerEventHandler = ( topic : string, msg : string, props : object ) => void;\n\nexport const isProduction = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production',\n logEvents : LogLevel[] = isProduction ?\n [ 'error', 'info' ] :\n [ 'error', 'warn', 'debug', 'info', 'log' ];\n\n@define\nexport class Logger extends Messenger {\n counter : { [ level in LogLevel ]? : number } = {}\n\n // Log events of the given log level to the console, optionally filtered by topic\n logToConsole( level : LogLevel, filter? : RegExp ) : this {\n return this.on( level, ( topic, msg, props ) => {\n if( !filter || filter.test( topic ) ){\n const args = [ `[${topic}] ${msg}` ];\n \n for( let name in props ){\n args.push( `\\n\\t${name}:`, toString( props[ name ] ) );\n }\n \n console[ level ].apply( console, args );\n }\n });\n }\n\n // Fire exception on the events of the given log level, optionally filtered by topic\n throwOn( level : LogLevel, filter? : RegExp ) : this {\n return this.on( level, ( topic, msg, props ) => {\n if( !filter || filter.test( topic ) ){\n throw new Error( `[${topic}] ${msg}` );\n }\n });\n }\n\n // Count log events of the given level, optionally filtered by topic\n count( level : LogLevel, filter? : RegExp ) : this {\n return this.on( level, ( topic, msg, props ) => {\n if( !filter || filter.test( topic ) ){\n this.counter[ level ] = ( this.counter[ level ] || 0 ) + 1;\n }\n });\n }\n\n trigger : ( level : LogLevel, topic : string, message : string, props? : object ) => this;\n \n off : ( event? : LogLevel ) => this;\n on : ( handlers : { [ name in LogLevel ] : LoggerEventHandler } | LogLevel, handler? : LoggerEventHandler ) => this\n}\n\n/**\n * Convert objects to the plain text friendly format.\n * primitives as in JSON.\n */\nlet toString = typeof window === 'undefined' ? \n something => {\n if( something && typeof something === 'object' ){\n const { __inner_state__ } = something,\n value = __inner_state__ || something,\n isArray = Array.isArray( value );\n\n const body = isArray ? `[ length = ${ value.length } ]` : `{ ${ Object.keys( value ).join( ', ' )} }`;\n\n return something.constructor.name + ' ' + body;\n }\n\n return JSON.stringify( something );\n }\n : x => x;\n\nexport const logger = new Logger();\n\nif( typeof console !== 'undefined' ) {\n for( let event of logEvents ){\n logger.logToConsole( event );\n }\n}\n\nexport const log : typeof logger.trigger = logger.trigger.bind( logger );","export interface IONode {\n _endpoint : IOEndpoint\n _ioPromise : IOPromise< this >\n}\n\nexport interface IOPromise extends Promise {\n abort? : () => void\n}\n\nexport interface IOEndpoint {\n list( options : IOOptions, collection? ) : IOPromise\n create( json : any, options : IOOptions, record? ) : IOPromise\n update( id : string | number, json :any, options : IOOptions, record? ) : IOPromise\n read( id : string | number, options : IOOptions, record? ) : IOPromise\n destroy( id : string | number, options : IOOptions, record? ) : IOPromise\n subscribe( events : IOEvents, collection? ) : IOPromise\n unsubscribe( events : IOEvents, collection? ) : void\n}\n\nexport interface IOOptions {\n ioUpdate? : boolean\n}\n\nexport interface IOEvents {\n updated? : ( json : any ) => void\n removed? : ( json : any ) => void\n}\n\nexport function getOwnerEndpoint( self ) : IOEndpoint {\n // Check if we are the member of the collection...\n const { collection } = self;\n if( collection ){\n return getOwnerEndpoint( collection );\n }\n\n // Now, if we're the member of the model...\n if( self._owner ){\n const { _endpoints } = self._owner;\n return _endpoints && _endpoints[ self._ownerKey ];\n }\n}\n\n/**\n * Create abortable promise.\n * Adds `promise.abort()` function which rejects the promise by default\n * initialize() function takes third optional argument `abort : ( resolve, reject ) => void`,\n * which can be used to add custom abort handling.\n */\ndeclare var Promise: PromiseConstructorLike;\n\nexport function createIOPromise( initialize : InitIOPromise ) : IOPromise{\n let resolve, reject, onAbort;\n\n function abort( fn ){\n onAbort = fn;\n }\n\n const promise : IOPromise = new Promise( ( a_resolve, a_reject ) =>{\n reject = a_reject;\n resolve = a_resolve;\n initialize( resolve, reject, abort );\n }) as IOPromise;\n\n promise.abort = () => {\n onAbort ? onAbort( resolve, reject ) : reject( new Error( \"I/O Aborted\" ) );\n }\n\n return promise;\n}\n\nexport type InitIOPromise = ( resolve : ( x? : any ) => void, reject : ( x? : any ) => void, abort? : ( fn : Function ) => void ) => void;\n\nexport function startIO( self : IONode, promise : IOPromise, options : IOOptions, thenDo : ( json : any ) => any ) : IOPromise {\n // Stop pending I/O first...\n abortIO( self );\n\n // Mark future update transaction as IO transaction.\n options.ioUpdate = true;\n\n self._ioPromise = promise\n .then( resp => {\n self._ioPromise = null;\n \n const result = thenDo ? thenDo( resp ) : resp;\n \n triggerAndBubble( self, 'sync', self, resp, options );\n \n return result;\n } ) \n .catch( err => {\n self._ioPromise = null;\n \n // Overlaps with a new `error` event.\n triggerAndBubble( self, 'error', self, err, options );\n \n throw err;\n } ) as IOPromise;\n\n self._ioPromise.abort = promise.abort;\n\n return self._ioPromise;\n}\n\nexport function abortIO( self : IONode ){\n if( self._ioPromise && self._ioPromise.abort ){\n self._ioPromise.abort();\n self._ioPromise = null;\n }\n}\n\nexport function triggerAndBubble( eventSource, ...args ){\n eventSource.trigger.apply( eventSource, args );\n const { collection } = eventSource;\n collection && collection.trigger.apply( collection, args ); \n}","/**\n * Some sketches for reference resolution.\n *\n * \n * a : Model.from( '~collection' )\n * \n * We need two functions. One for get, and one for compile. \n */\nexport interface Traversable {\n getStore() : Traversable\n getOwner() : Traversable\n get( key : string ) : any \n}\n\nconst referenceMask = /\\^|(store\\.[^.]+)|([^.]+)/g;\n\n// Compile reference to function\nexport type ResolveReference = ( root : Traversable ) => any; \n\nexport class CompiledReference {\n resolve : ResolveReference\n tail : string\n local : boolean\n\n constructor( reference : string, splitTail : boolean = false ){\n const path = reference\n .match( referenceMask )\n .map( key => {\n if( key === '^' || key === 'owner' ) return 'getOwner()';\n\n if( key[ 0 ] === '~' ) return `getStore().get(\"${ key.substr( 1 ) }\")`;\n\n if( key.indexOf( 'store.' ) === 0 ) return `getStore().get(\"${ key.substr( 6 ) }\")`;\n \n return key;\n } );\n \n this.tail = splitTail && path.pop();\n this.local = !path.length;\n \n this.resolve = new Function( 'self', `\n var v = self.${ path.shift() };\n \n ${ path.map( x => `\n v = v && v.${ x };\n `).join('')}\n\n return v;\n ` );\n }\n}\n\nexport function resolveReference( root : Traversable, reference : string, action : ( object, key : string ) => any ) : any {\n const path = reference.match( referenceMask ),\n skip = path.length - 1;\n \n let self = root;\n\n for( var i = 0; i < skip; i++ ){\n const key = path[ i ];\n switch( key ){\n case '~' : self = self.getStore(); break;\n case '^' : self = self.getOwner(); break;\n default : self = self.get( key );\n }\n\n // Do nothing if object on the path doesn't exist.\n if( !self ) return;\n }\n\n return action( self, path[ skip ] );\n}","export interface ChildrenErrors {\n [ key : string ] : ValidationError | any\n} \n\nexport interface Validatable {\n _validateNested( errors : ChildrenErrors ) : number;\n validate( self : any ) : any\n get( key : string ) : any\n}\n\n// Validation error object.\nexport class ValidationError {\n // Invalid nested object keys \n nested : ChildrenErrors \n length : number\n\n // Local error\n error : any\n\n constructor( obj : Validatable ){\n this.length = obj._validateNested( this.nested = {} );\n\n if( this.error = obj.validate( obj ) ){\n this.length++;\n }\n }\n\n each( iteratee : ( value : any, key : string ) => void ) : void {\n const { error, nested } = this;\n\n if( error ) iteratee( error, null );\n\n for( const key in nested ){\n iteratee( nested[ key ], key );\n }\n }\n\n eachError( iteratee : ( error : any, key : string, object : Validatable ) => void, object : Validatable ) : void {\n this.each( ( value : any, key : string ) => {\n if( value instanceof ValidationError ){\n (value).eachError( iteratee, object.get( key ) );\n }\n else{\n iteratee( value, key, object );\n }\n });\n }\n}","import { abortIO, IOEndpoint, IONode, IOPromise } from './io-tools';\nimport { CallbacksByEvents, define, definitions, eventsApi, Messenger, MessengerDefinition, MessengersByCid, mixinRules, mixins, MixinsState, log, LogLevel, Logger } from './object-plus';\nimport { resolveReference, Traversable } from './traversable';\nimport { ChildrenErrors, Validatable, ValidationError } from './validation';\n\nconst { trigger3, on, off } = eventsApi;\n/***\n * Abstract class implementing ownership tree, tho-phase transactions, and validation. \n * 1. createTransaction() - apply changes to an object tree, and if there are some events to send, transaction object is created.\n * 2. transaction.commit() - send and process all change events, and close transaction.\n */\n\n/** @private */\nexport interface TransactionalDefinition extends MessengerDefinition {\n endpoint? : IOEndpoint\n}\n\nexport enum ItemsBehavior {\n share = 0b0001,\n listen = 0b0010,\n persistent = 0b0100\n}\n\n// Transactional object interface\n@define\n@definitions({\n endpoint : mixinRules.value\n})\n@mixins( Messenger )\nexport abstract class Transactional implements Messenger, IONode, Validatable, Traversable {\n // Mixins are hard in TypeScript. We need to copy type signatures over...\n // Here goes 'Mixable' mixin.\n static endpoint : IOEndpoint;\n static __super__ : object;\n static mixins : MixinsState;\n static define : ( definition? : TransactionalDefinition, statics? : object ) => typeof Transactional;\n static extend : ( definition? : T, statics? : object ) => any;\n\n static onDefine( definitions : TransactionalDefinition, BaseClass : typeof Transactional ){\n if( definitions.endpoint ) this.prototype._endpoint = definitions.endpoint;\n Messenger.onDefine.call( this, definitions, BaseClass );\n };\n\n static onExtend( BaseClass : typeof Transactional ) : void {\n // Make sure we don't inherit class factories.\n if( BaseClass.create === this.create ) {\n this.create = Transactional.create;\n }\n }\n\n // Define extendable mixin static properties.\n static create( a : any, b? : any ) : Transactional {\n return new (this as any)( a, b );\n }\n\n /** Generic class factory. May be overridden for abstract classes. Not inherited. */\n on : ( events : string | CallbacksByEvents, callback, context? ) => this\n once : ( events : string | CallbacksByEvents, callback, context? ) => this\n off : ( events? : string | CallbacksByEvents, callback?, context? ) => this\n trigger : (name : string, a?, b?, c?, d?, e? ) => this\n\n stopListening : ( source? : Messenger, a? : string | CallbacksByEvents, b? : Function ) => this\n listenTo : ( source : Messenger, a : string | CallbacksByEvents, b? : Function ) => this\n listenToOnce : ( source : Messenger, a : string | CallbacksByEvents, b? : Function ) => this\n \n _disposed : boolean;\n\n // State accessor. \n readonly __inner_state__ : any;\n\n // Shared modifier (used by collections of shared models)\n _shared? : number; \n \n dispose() : void {\n if( this._disposed ) return;\n \n abortIO( this );\n this._owner = void 0;\n this._ownerKey = void 0;\n this.off();\n this.stopListening();\n this._disposed = true;\n }\n\n // Must be called at the end of the constructor in the subclass.\n initialize() : void {}\n\n /** @private */\n _events : eventsApi.HandlersByEvent = void 0;\n\n /** @private */\n _listeningTo : MessengersByCid\n\n /** @private */\n _localEvents : eventsApi.EventMap\n\n cid : string\n cidPrefix : string\n\n static shared : any;\n\n // Unique version token replaced on change\n /** @private */\n _changeToken : {} = {}\n\n // true while inside of the transaction\n /** @private */\n _transaction : boolean = false;\n\n // Holds current transaction's options, when in the middle of transaction and there're changes but is an unsent change event\n /** @private */\n _isDirty : TransactionOptions = null;\n\n // Backreference set by owner (Record, Collection, or other object)\n /** @private */\n _owner : Owner = void 0;\n\n // Key supplied by owner. Used by record to identify attribute key.\n // Only collections doesn't set the key, which is used to distinguish collections.\n /** @private */ \n _ownerKey : string = void 0;\n\n // Name of the change event\n /** @private */\n _changeEventName : string\n\n /**\n * Subsribe for the changes.\n */\n onChanges( handler : Function, target? : Messenger ){\n on( this, this._changeEventName, handler, target );\n }\n\n /**\n * Unsubscribe from changes.\n */\n offChanges( handler? : Function, target? : Messenger ){\n off( this, this._changeEventName, handler, target );\n }\n\n /**\n * Listen to changes event. \n */\n listenToChanges( target : Transactional, handler ){\n this.listenTo( target, target._changeEventName, handler );\n }\n\n constructor( cid : string | number ){\n this.cid = this.cidPrefix + cid;\n }\n\n // Deeply clone ownership subtree\n abstract clone( options? : CloneOptions ) : this\n \n // Execute given function in the scope of ad-hoc transaction.\n transaction( fun : ( self : this ) => void, options : TransactionOptions = {} ) : void{\n const isRoot = transactionApi.begin( this );\n const update = fun.call( this, this );\n update && this.set( update );\n isRoot && transactionApi.commit( this );\n }\n\n // Assign transactional object \"by value\", copying aggregated items.\n assignFrom( source : Transactional | Object ) : this {\n // Need to delay change events until change token willl by synced.\n this.transaction( () =>{\n this.set( ( source ).__inner_state__ || source, { merge : true } );\n\n // Synchronize change tokens\n const { _changeToken } = source as any;\n \n if( _changeToken ){\n this._changeToken = _changeToken;\n } \n });\n\n return this;\n }\n\n // Apply bulk object update without any notifications, and return open transaction.\n // Used internally to implement two-phase commit.\n // Returns null if there are no any changes.\n /** @private */ \n abstract _createTransaction( values : any, options? : TransactionOptions ) : Transaction | void\n\n // Apply bulk in-place object update in scope of ad-hoc transaction \n abstract set( values : any, options? : TransactionOptions ) : this;\n\n \n // Parse function applied when 'parse' option is set for transaction.\n parse( data : any, options? : TransactionOptions ) : any { return data }\n\n // Convert object to the serializable JSON structure\n abstract toJSON( options? : object ) : {}\n\n /*******************\n * Traversals and member access\n */\n \n // Get object member by its key.\n abstract get( key : string ) : any\n\n // Get object member by symbolic reference.\n deepGet( reference : string ) : any {\n return resolveReference( this, reference, ( object, key ) => object.get ? object.get( key ) : object[ key ] );\n }\n\n //_isCollection : boolean\n\n // Return owner skipping collections.\n getOwner() : Owner {\n return this._owner;\n }\n\n // Store used when owner chain store lookup failed. Static value in the prototype. \n /** @private */\n _defaultStore : Transactional\n\n // Locate the closest store. Store object stops traversal by overriding this method. \n getStore() : Transactional {\n const { _owner } = this;\n return _owner ? _owner.getStore() : this._defaultStore;\n }\n\n\n /***************************************************\n * Iteration API\n */\n\n // Loop through the members. Must be efficiently implemented in container class.\n\n _endpoint : IOEndpoint\n _ioPromise : IOPromise\n\n hasPendingIO() : IOPromise { return this._ioPromise; }\n\n fetch( options? : object ) : IOPromise { throw new Error( \"Not implemented\" ); }\n\n getEndpoint() : IOEndpoint {\n return getOwnerEndpoint( this ) || this._endpoint;\n }\n \n /*********************************\n * Validation API\n */\n\n // Lazily evaluated validation error\n /** @private */\n _validationError : ValidationError = void 0\n\n // Validate ownership tree and return valudation error \n get validationError() : ValidationError {\n const error = this._validationError || ( this._validationError = new ValidationError( this ) );\n return error.length ? error : null; \n }\n\n // Validate nested members. Returns errors count.\n /** @private */\n abstract _validateNested( errors : ChildrenErrors ) : number\n\n // Object-level validator. Returns validation error.\n validate( obj? : Transactional ) : any {}\n\n // Return validation error (or undefined) for nested object with the given key. \n getValidationError( key : string ) : any {\n var error = this.validationError;\n return ( key ? error && error.nested[ key ] : error ) || null;\n }\n\n // Get validation error for the given symbolic reference.\n deepValidationError( reference : string ) : any {\n return resolveReference( this, reference, ( object, key ) => object.getValidationError( key ) );\n }\n\n // Iterate through all validation errors across the ownership tree.\n eachValidationError( iteratee : ( error : any, key : string, object : Transactional ) => void ) : void {\n const { validationError } = this;\n validationError && validationError.eachError( iteratee, this );\n }\n\n // Check whenever member with a given key is valid. \n isValid( key : string ) : boolean {\n return !this.getValidationError( key );\n }\n\n valueOf() : Object { return this.cid; }\n toString(){ return this.cid; }\n\n // Get class name for an object instance. Works fine with ES6 classes definitions (not in IE).\n getClassName() : string {\n const { name } = this.constructor;\n if( name !== 'Subclass' ) return name;\n }\n\n // Logging interface for run time errors and warnings.\n abstract _log( level : LogLevel, topic : string, text : string, value : any, logger? : Logger ) : void\n}\n\nexport interface CloneOptions {\n // 'Pin store' shall assign this._defaultStore = this.getStore();\n pinStore? : boolean\n}\n\n// Owner must accept children update events. It's an only way children communicates with an owner.\n/** @private */\nexport interface Owner extends Traversable, Messenger {\n _onChildrenChange( child : Transactional, options : TransactionOptions ) : void;\n getOwner() : Owner\n getStore() : Transactional\n}\n\n// Transaction object used for two-phase commit protocol.\n// Must be implemented by subclasses.\n// Transaction must be created if there are actual changes and when markIsDirty returns true.\n/** @private */ \nexport interface Transaction {\n // Object transaction is being made on.\n object : Transactional\n\n // Send out change events, process update triggers, and close transaction.\n // Nested transactions must be marked with isNested flag (it suppress owner notification).\n commit( initiator? : Transactional )\n}\n\n// Options for distributed transaction \nexport interface TransactionOptions {\n // Invoke parsing \n parse? : boolean\n\n // Optional logger\n logger? : Logger\n\n // Suppress change notifications and update triggers\n silent? : boolean\n\n // Update existing transactional members in place, or skip the update (ignored by models)\n merge? : boolean // =true\n\n // Should collections remove elements in set (ignored by models) \n remove? : boolean // =true\n\n // Always replace enclosed objects with new instances\n reset? : boolean // = false\n\n // Do not dispose aggregated members\n unset? : boolean\n\n validate? : boolean\n\n // `true` if the transaction is initiated as a result of IO operation\n ioUpdate? : boolean\n\n // The hint for IOEndpoint\n // If `true`, `record.save()` will behave as \"upsert\" operation for the records having id.\n upsert? : boolean\n}\n\n/**\n * Low-level transactions API. Must be used like this:\n * const isRoot = begin( record );\n * ...\n * isRoot && commit( record, options );\n * \n * When committing nested transaction, the flag must be set to true. \n * commit( object, options, isNested ) \n */\n\nexport const transactionApi = {\n // Start transaction. Return true if it's the root one.\n /** @private */\n begin( object : Transactional ) : boolean {\n return object._transaction ? false : ( object._transaction = true ); \n },\n\n // Mark object having changes inside of the current transaction.\n // Returns true whenever there notifications are required.\n /** @private */\n markAsDirty( object : Transactional, options : TransactionOptions ) : boolean {\n // If silent option is in effect, don't set isDirty flag.\n const dirty = !options.silent;\n if( dirty ) object._isDirty = options;\n \n // Reset version token.\n object._changeToken = {};\n\n // Object is changed, so validation must happen again. Clear the cache.\n object._validationError = void 0;\n\n return dirty;\n },\n\n // Commit transaction. Send out change event and notify owner. Returns true if there were changes.\n // Must be executed for the root transaction only.\n /** @private */\n commit( object : Transactional, initiator? : Transactional ){\n let originalOptions = object._isDirty;\n\n if( originalOptions ){\n // Send the sequence of change events, handling chained handlers.\n while( object._isDirty ){\n const options = object._isDirty;\n object._isDirty = null; \n trigger3( object, object._changeEventName, object, options, initiator );\n }\n \n // Mark transaction as closed.\n object._transaction = false;\n\n // Notify owner on changes out of transaction scope. \n const { _owner } = object; \n if( _owner && _owner !== initiator ){ // If it's the nested transaction, owner is already aware there are some changes.\n _owner._onChildrenChange( object, originalOptions );\n }\n }\n else{\n // No changes. Silently close transaction.\n object._isDirty = null;\n object._transaction = false;\n }\n },\n\n /************************************\n * Ownership management\n */\n\n // Add reference to the record.\n /** @private */\n aquire( owner : Owner, child : Transactional, key? : string ) : boolean {\n if( !child._owner ){\n child._owner = owner;\n child._ownerKey = key;\n return true;\n }\n\n return child._owner === owner;\n },\n\n // Remove reference to the record.\n /** @private */\n free( owner : Owner, child : Transactional ) : void {\n if( owner === child._owner ){\n child._owner = void 0;\n child._ownerKey = void 0;\n }\n }\n}\n\nfunction getOwnerEndpoint( self : Transactional ) : IOEndpoint {\n // Check if we are the member of the collection...\n const { collection } = self as any;\n if( collection ){\n return getOwnerEndpoint( collection );\n }\n\n // Now, if we're the member of the model...\n if( self._owner ){\n const { _endpoints } = self._owner as any;\n return _endpoints && _endpoints[ self._ownerKey ];\n }\n}\n","import { eventsApi } from '../object-plus';\nimport { Owner, Transaction, Transactional, transactionApi, TransactionOptions } from \"../transactions\";\nconst { begin : _begin, markAsDirty : _markAsDirty, commit } = transactionApi;\n\nconst { trigger3 } = eventsApi;\n\nexport interface ConstructorsMixin {\n Attributes : AttributesConstructor\n AttributesCopy : AttributesCopyConstructor\n}\n\nexport interface ConstructorOptions extends TransactionOptions{\n clone? : boolean\n}\n\nexport type AttributesConstructor = new ( record : AttributesContainer, values : object, options : TransactionOptions ) => AttributesValues;\nexport type AttributesCopyConstructor = new ( values : object ) => AttributesValues;\n\nexport interface AttributesContainer extends Transactional, Owner, ConstructorsMixin {\n // Attribute descriptors.\n _attributes : AttributesDescriptors\n\n // Attribute values.\n attributes : AttributesValues\n\n // Previous attribute values.\n _previousAttributes : AttributesValues\n\n // Changed attributes cache. \n _changedAttributes : AttributesValues\n}\n\nexport interface AttributesValues {\n [ name : string ] : any\n}\n\nexport interface AttributesDescriptors {\n [ name : string ] : AttributeUpdatePipeline\n}\n\nexport interface AttributeUpdatePipeline{\n doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : Transaction[] ) : boolean\n}\n\n // Optimized single attribute transactional update. To be called from attributes setters\n // options.silent === false, parse === false. \nexport function setAttribute( record : AttributesContainer, name : string, value : any ) : void {\n // Open the transaction.\n const isRoot = begin( record ),\n options = {};\n\n // Update attribute. \n if( record._attributes[ name ].doUpdate( value, record, options ) ){\n // Notify listeners on changes.\n markAsDirty( record, options );\n trigger3( record, 'change:' + name, record, record.attributes[ name ], options );\n }\n\n // Close the transaction.\n isRoot && commit( record );\n}\n\nfunction begin( record : AttributesContainer ){\n if( _begin( record ) ){\n record._previousAttributes = new record.AttributesCopy( record.attributes );\n record._changedAttributes = null;\n return true;\n }\n \n return false;\n}\n\nfunction markAsDirty( record : AttributesContainer, options : TransactionOptions ){\n // Need to recalculate changed attributes, when we have nested set in change:attr handler\n if( record._changedAttributes ){\n record._changedAttributes = null;\n }\n\n return _markAsDirty( record, options );\n}\n\n/**\n * TODO: There's an opportunity to create an optimized pipeline for primitive types and Date, which makes the majority\n * of attributes. It might create the major speedup.\n * \n * Create the dedicated pipeline for owned and shared attributes as well.\n * \n * Three elements of the pipeline:\n * - from constructor\n * - from assignment\n * - from `set`\n */\n\nexport const UpdateRecordMixin = {\n// Need to override it here, since begin/end transaction brackets are overriden. \n transaction( this : AttributesContainer, fun : ( self : AttributesContainer ) => void, options : TransactionOptions = {} ) : void{\n const isRoot = begin( this );\n fun.call( this, this );\n isRoot && commit( this );\n },\n \n // Handle nested changes. TODO: propagateChanges == false, same in transaction.\n _onChildrenChange( child : Transactional, options : TransactionOptions ) : void {\n const { _ownerKey } = child,\n attribute = this._attributes[ _ownerKey ];\n\n if( !attribute /* TODO: Must be an opposite, likely the bug */ || attribute.propagateChanges ) this.forceAttributeChange( _ownerKey, options );\n },\n\n // Simulate attribute change \n forceAttributeChange( key : string, options : TransactionOptions = {} ){\n // Touch an attribute in bounds of transaction\n const isRoot = begin( this );\n\n if( markAsDirty( this, options ) ){\n trigger3( this, 'change:' + key, this, this.attributes[ key ], options );\n }\n \n isRoot && commit( this );\n },\n\n _createTransaction( this : AttributesContainer, a_values : {}, options : TransactionOptions = {} ) : Transaction {\n const isRoot = begin( this ),\n changes : string[] = [],\n nested : RecordTransaction[]= [],\n { _attributes } = this,\n values = options.parse ? this.parse( a_values, options ) : a_values;\n\n let unknown;\n\n if( shouldBeAnObject( this, values, options ) ){\n for( let name in values ){\n const spec = _attributes[ name ];\n\n if( spec ){\n if( spec.doUpdate( values[ name ], this, options, nested ) ){\n changes.push( name );\n }\n }\n else{\n unknown || ( unknown = [] );\n unknown.push( `'${ name }'` );\n }\n }\n\n if( unknown ){\n unknownAttrsWarning( this, unknown, { values }, options );\n }\n }\n \n if( changes.length && markAsDirty( this, options ) ){\n return new RecordTransaction( this, isRoot, nested, changes );\n }\n \n // No changes, but there might be silent attributes with open transactions.\n for( let pendingTransaction of nested ){\n pendingTransaction.commit( this );\n }\n\n isRoot && commit( this );\n }\n};\n\nexport function unknownAttrsWarning( record : AttributesContainer, unknown : string[], props, options ){\n record._log( 'warn', 'Type-R:UnknownAttrs', `undefined attributes ${ unknown.join(', ')} are ignored.`, props, options.logger );\n}\n\n// One of the main performance tricks of Type-R.\n// Create loop unrolled constructors for internal attribute hash,\n// so the hidden class JIT optimization will be engaged and they will become static structs.\n// It dramatically improves record performance.\nexport function constructorsMixin( attrDefs : AttributesDescriptors ) : ConstructorsMixin {\n const attrs = Object.keys( attrDefs );\n\n const AttributesCopy : AttributesCopyConstructor = new Function( 'values', `\n ${ attrs.map( attr =>`\n this.${ attr } = values.${ attr };\n `).join( '' ) }\n `) as any;\n\n AttributesCopy.prototype = Object.prototype;\n\n const Attributes : AttributesConstructor = new Function( 'record', 'values', 'options', `\n var _attrs = record._attributes;\n\n ${ attrs.map( attr =>`\n this.${ attr } = _attrs.${ attr }.doInit( values.${ attr }, record, options );\n `).join( '' ) }\n `) as any;\n\n Attributes.prototype = Object.prototype;\n\n return { Attributes, AttributesCopy };\n}\n\nexport function shouldBeAnObject( record : AttributesContainer, values : object, options ){\n if( values && values.constructor === Object ) return true;\n\n record._log( 'error', 'Type-R:InvalidObject', 'update with non-object is ignored!', { values }, options.logger );\n return false;\n}\n\n// Transaction class. Implements two-phase transactions on object's tree. \n// Transaction must be created if there are actual changes and when markIsDirty returns true. \nexport class RecordTransaction implements Transaction {\n // open transaction\n constructor( public object : AttributesContainer,\n public isRoot : boolean,\n public nested : Transaction[],\n public changes : string[] ){}\n\n // commit transaction\n commit( initiator? : AttributesContainer ) : void {\n const { nested, object, changes } = this;\n\n // Commit all pending nested transactions...\n for( let transaction of nested ){ \n transaction.commit( object );\n }\n\n // Notify listeners on attribute changes...\n // Transaction is never created when silent option is set, so just send events out.\n const { attributes, _isDirty } = object;\n for( let key of changes ){\n trigger3( object, 'change:' + key, object, attributes[ key ], _isDirty );\n }\n\n this.isRoot && commit( object, initiator );\n }\n}","import { IOEndpoint } from '../../io-tools';\nimport { LogLevel, tools, Logger } from '../../object-plus';\nimport { TransactionOptions } from '../../transactions';\nimport { AttributesContainer, AttributeUpdatePipeline, RecordTransaction, setAttribute } from '../updates';\n\nconst { notEqual, assign} = tools;\n\nexport type Transform = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => any;\nexport type ChangeHandler = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => void;\n\nexport interface AttributeOptions {\n _metatype? : typeof AnyType\n validate? : ( record : AttributesContainer, value : any, key : string ) => any\n isRequired? : boolean\n changeEvents? : boolean\n\n endpoint? : IOEndpoint\n\n type? : Function\n value? : any\n hasCustomDefault? : boolean\n\n parse? : Parse\n toJSON? : AttributeToJSON\n \n getHooks? : GetHook[]\n transforms? : Transform[]\n changeHandlers? : ChangeHandler[]\n\n _onChange? : ChangeAttrHandler\n}\n\nexport type Parse = ( value : any, key : string ) => any;\nexport type GetHook = ( value : any, key : string ) => any;\nexport type AttributeToJSON = ( value : any, key : string ) => any\nexport type AttributeParse = ( value : any, key : string ) => any\nexport type ChangeAttrHandler = ( ( value : any, attr : string ) => void ) | string;\n\n// TODO: interface differs from options, do something obout it\nconst emptyOptions : TransactionOptions = {};\n\n/**\n * Typeless attribute. Is the base class for all other attributes.\n */\nexport class AnyType implements AttributeUpdatePipeline {\n // Factory method to create attribute from options \n static create : ( options : AttributeOptions, name : string ) => AnyType;\n \n /**\n * Update pipeline functions\n * =========================\n *\n * Stage 0. canBeUpdated( value )\n * - presence of this function implies attribute's ability to update in place.\n */\n canBeUpdated( prev, next, options : TransactionOptions ) : any {}\n\n /**\n * Stage 1. Transform stage\n */\n transform( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; }\n\n // convert attribute type to `this.type`.\n convert( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; }\n\n /**\n * Stage 2. Check if attr value is changed\n */\n isChanged( a : any, b : any ) : boolean {\n return notEqual( a, b );\n }\n\n /**\n * Stage 3. Handle attribute change\n */\n handleChange( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) {}\n\n /**\n * End update pipeline definitions.\n */\n\n // create empty object passing backbone options to constructor...\n create() { return void 0; }\n\n // generic clone function for typeless attributes\n // Must be overriden in sublass\n clone( value : any, record : AttributesContainer ) {\n return value;\n }\n\n dispose( record : AttributesContainer, value : any ) : void {\n this.handleChange( void 0, value, record, emptyOptions );\n }\n\n validate( record : AttributesContainer, value : any, key : string ) : any {}\n\n toJSON( value, key, options? : object ) {\n return value && value.toJSON ? value.toJSON( options ) : value;\n }\n\n createPropertyDescriptor() : PropertyDescriptor | void {\n const { name, getHook } = this;\n\n if( name !== 'id' ){\n return {\n // call to optimized set function for single argument.\n set( value ){\n setAttribute( this, name, value );\n },\n\n // attach get hook to the getter function, if it present\n get : (\n getHook ?\n function() {\n return getHook.call( this, this.attributes[ name ], name );\n } :\n function() { return this.attributes[ name ]; }\n ),\n\n configurable : true\n }\n }\n }\n\n value : any\n\n // Used as global default value for the given metatype\n static defaultValue : any;\n\n type : Function\n\n initialize( name : string, options : TransactionOptions ){}\n\n options : AttributeOptions\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n const v = value === void 0 ? this.defaultValue() : value,\n x = this.transform( v, void 0, record, options );\n \n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n\n const next = this.transform( value, prev, record, options );\n attributes[ name ] = next;\n\n if( this.isChanged( next, prev ) ) {\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n return true;\n }\n\n return false;\n }\n\n propagateChanges : boolean\n\n protected _log( level : LogLevel, code : string, text : string, value, record : AttributesContainer, logger : Logger ){\n record._log( level, code, `${record.getClassName()}.${ this.name } ${ text }`, {\n 'New value' : value,\n 'Prev. value' : record.attributes[ this.name ]\n }, logger );\n }\n\n defaultValue(){\n return this.value;\n }\n\n constructor( public name : string, a_options : AttributeOptions ) { \n // Save original options...\n this.options = a_options;\n\n // Clone options.\n const options : AttributeOptions = assign( { getHooks : [], transforms : [], changeHandlers : [] }, a_options );\n options.getHooks = options.getHooks.slice();\n options.transforms = options.transforms.slice();\n options.changeHandlers = options.changeHandlers.slice();\n\n const {\n value, type, parse, toJSON, changeEvents,\n validate, getHooks, transforms, changeHandlers\n } = options;\n\n // Initialize default value...\n this.value = value;\n this.type = type;\n\n // TODO: An opportunity to optimize for attribute subtype.\n if( !options.hasCustomDefault && type ){\n this.defaultValue = this.create;\n }\n else if( tools.isValidJSON( value ) ){ \n // JSON literals must be deep copied.\n this.defaultValue = new Function( `return ${ JSON.stringify( value ) };` ) as any;\n }\n else{\n this.defaultValue = this.defaultValue;\n }\n\n // Changes must be bubbled when they are not disabled for an attribute and transactional object.\n this.propagateChanges = changeEvents !== false;\n\n this.toJSON = toJSON === void 0 ? this.toJSON : toJSON;\n\n this.validate = validate || this.validate;\n \n if( options.isRequired ){\n this.validate = wrapIsRequired( this.validate );\n }\n\n /**\n * Assemble pipelines...\n */\n\n // `convert` is default transform, which is always present...\n transforms.unshift( this.convert );\n\n // Get hook from the attribute will be used first...\n if( this.get ) getHooks.unshift( this.get );\n\n // let subclasses configure the pipeline...\n this.initialize.call( this, options );\n\n // let attribute spec configure the pipeline...\n if( getHooks.length ){\n const getHook = this.getHook = getHooks.reduce( chainGetHooks );\n\n const { validate } = this;\n this.validate = function( record : AttributesContainer, value : any, key : string ){\n return validate.call( this, record, getHook.call( record, value, key ), key );\n }\n }\n \n this.transform = transforms.length ? transforms.reduce( chainTransforms ) : this.transform;\n \n this.handleChange = changeHandlers.length ? changeHandlers.reduce( chainChangeHandlers ) : this.handleChange;\n\n // Attribute-level parse transform are attached as update hooks modifiers...\n const { doInit, doUpdate } = this;\n this.doInit = parse ? function( value, record : AttributesContainer, options : TransactionOptions ){\n return doInit.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options );\n } : doInit;\n\n this.doUpdate = parse ? function( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){\n return doUpdate.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options, nested );\n } : doUpdate;\n }\n\n getHook : ( value, key : string ) => any = null\n get : ( value, key : string ) => any\n}\n\n\nfunction chainGetHooks( prevHook : GetHook, nextHook : GetHook ) : GetHook {\n return function( value, name ) {\n return nextHook.call( this, prevHook.call( this, value, name ), name );\n }\n}\n\nfunction chainTransforms( prevTransform : Transform, nextTransform : Transform ) : Transform {\n return function( next, prev, record, options ) {\n return nextTransform.call( this, prevTransform.call( this, next, prev, record, options ), prev, record, options );\n }\n}\n\nfunction chainChangeHandlers( prevHandler : ChangeHandler, nextHandler : ChangeHandler ) : ChangeHandler {\n return function( next, prev, record, options ) {\n prevHandler.call( this, next, prev, record, options );\n nextHandler.call( this, next, prev, record, options );\n }\n}\n\nfunction wrapIsRequired( validate ){\n return function( record : AttributesContainer, value : any, key : string ){\n return value ? validate.call( this, record, value, key ) : 'Required';\n }\n}","/**\n * Built-in JSON types attributes: Object, Array, Number, String, Boolean, and immutable class.\n * \n * Adds type assertions, default validation, and optimized update pipeline.\n */\n\nimport { TransactionOptions } from '../../transactions';\nimport { AnyType } from './any';\nimport { AttributesContainer } from '../updates';\n\n/**\n * Custom class must be immutable class which implements toJSON() method\n * with a constructor taking json.\n */\nexport class ImmutableClassType extends AnyType {\n type : new ( value? : any ) => {}\n\n create(){\n return new this.type();\n }\n\n convert( next : any ) : any {\n return next == null || next instanceof this.type ? next : new this.type( next );\n }\n\n toJSON( value, key? : string, options? : object ){\n return value && value.toJSON ? value.toJSON( options ) : value;\n }\n\n clone( value ) {\n return new this.type( this.toJSON( value ) );\n }\n\n isChanged( a, b ){\n return a !== b;\n }\n}\n\n/**\n * Optimized attribute of primitive type.\n * \n * Primitives has specialized simplified pipeline.\n */\nexport class PrimitiveType extends AnyType {\n type : NumberConstructor | StringConstructor | BooleanConstructor\n\n dispose(){}\n create() { return this.type(); }\n\n toJSON( value ) { return value; }\n\n convert( next ) { return next == null ? next : this.type( next ); }\n\n isChanged( a, b ) { return a !== b; }\n\n clone( value ) { return value; }\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n return this.transform( value === void 0 ? this.value : value, void 0, record, options );\n }\n\n doUpdate( value, record, options, nested ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n \n return prev !== ( attributes[ name ] = this.transform( value, prev, record, options ) );\n }\n\n initialize(){\n if( !this.options.hasCustomDefault ){\n this.value = this.type();\n }\n }\n}\n\n// Number type with special validation algothim.\n/** @private */ \nexport class NumericType extends PrimitiveType {\n type : NumberConstructor\n\n create(){\n return 0;\n }\n\n convert( next, prev?, record?, options? ) {\n const num = next == null ? next : this.type( next );\n\n if( num !== num ){\n this._log( 'error', 'Type-R:InvalidNumber', 'Number attribute is assigned with an invalid number', next, record, options.logger );\n }\n \n return num;\n }\n\n validate( model, value, name ) {\n // Whatever is not symmetrically serializable to JSON, is not valid by default.\n if( value != null && !isFinite( value ) ) {\n return name + ' is not valid number';\n }\n }\n}\n\n/**\n * Compatibility wrapper for Array type.\n * @private\n */ \nexport class ArrayType extends AnyType {\n toJSON( value ) { return value; }\n dispose(){}\n create(){ return []; }\n\n convert( next, prev, record, options ) {\n // Fix incompatible constructor behaviour of Array...\n if( next == null || Array.isArray( next ) ) return next;\n\n this._log( 'error', 'Type-R:InvalidArray', 'Array attribute assigned with non-array value', next, record, options.logger );\n\n return [];\n }\n\n clone( value ){\n return value && value.slice();\n }\n}\n\nexport class ObjectType extends AnyType {\n create(){ return {}; }\n\n convert( next, prev, record, options ) {\n if( next == null || typeof next === 'object' ) return next;\n \n this._log( 'error', 'Type-R:InvalidObject', 'Object attribute is assigned with non-object value', next, record, options.logger );\n return {};\n }\n}\n\nexport function doNothing(){}\n\nexport class FunctionType extends AnyType {\n // Functions are not serialized.\n toJSON( value ) { return void 0; }\n create(){ return doNothing; }\n dispose(){}\n\n convert( next, prev, record, options ) {\n // Fix incompatible constructor behaviour of Function...\n if( next == null || typeof next === 'function' ) return next;\n\n this._log( 'error', 'Type-R:InvalidFunction', 'Function attribute assigned with non-function value', next, record, options.logger );\n\n return doNothing;\n }\n\n // Functions are not cloned.\n clone( value ){ return value; }\n}\n","/**\n * Date attribute type.\n * \n * Implements validation, cross-browser compatibility fixes, variety of Date serialization formats,\n * and optimized update pipeline.\n */\nimport { TransactionOptions } from '../../transactions';\nimport { AnyType } from './any';\nimport { AttributesContainer } from '../updates';\n\n// Date Attribute\n/** @private */\nexport class DateType extends AnyType {\n create(){\n return new Date();\n }\n \n convert( next : any, a, record, options ){\n if( next == null || next instanceof Date ) return next;\n\n const date = new Date( next ),\n timestamp = date.getTime();\n\n if( timestamp !== timestamp ){\n this._log( 'error', 'Type-R:InvalidDate', 'Date attribute assigned with invalid date', next, record, options.logger );\n }\n\n return date;\n }\n\n validate( model, value, name ) {\n if( value != null ){\n const timestamp = value.getTime(); \n if( timestamp !== timestamp ) return name + ' is Invalid Date';\n }\n }\n\n toJSON( value ) { return value && value.toISOString(); }\n\n isChanged( a, b ) { return ( a && a.getTime() ) !== ( b && b.getTime() ); }\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n // Date don't have handleChanges step.\n return this.transform( value === void 0 ? this.defaultValue() : value, void 0, record, options );\n }\n\n doUpdate( value, record, options, nested ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n \n // Date don't have handleChanges step.\n return this.isChanged( prev , attributes[ name ] = this.transform( value, prev, record, options ) );\n }\n\n clone( value ) { return value && new Date( value.getTime() ); }\n dispose(){}\n}\n\n// If ISO date is not supported by date constructor (such as in Safari), polyfill it.\nfunction supportsDate( date ){\n return !isNaN( ( new Date( date ) ).getTime() );\n}\n\nif( !supportsDate('2011-11-29T15:52:30.5') ||\n !supportsDate('2011-11-29T15:52:30.52') ||\n !supportsDate('2011-11-29T15:52:18.867') ||\n !supportsDate('2011-11-29T15:52:18.867Z') ||\n !supportsDate('2011-11-29T15:52:18.867-03:30') ){\n\n DateType.prototype.convert = function( value ){\n return value == null || value instanceof Date ? value : new Date( safeParseDate( value ) );\n }\n}\n\nconst numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ],\n isoDatePattern = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n\nfunction safeParseDate( date : string ) : number {\n var timestamp, struct : any[], minutesOffset = 0;\n\n if( ( struct = isoDatePattern.exec( date )) ) {\n // avoid NaN timestamps caused by undefined values being passed to Date.UTC\n for( var i = 0, k; ( k = numericKeys[ i ] ); ++i ) {\n struct[ k ] = +struct[ k ] || 0;\n }\n\n // allow undefined days and months\n struct[ 2 ] = (+struct[ 2 ] || 1) - 1;\n struct[ 3 ] = +struct[ 3 ] || 1;\n\n if( struct[ 8 ] !== 'Z' && struct[ 9 ] !== undefined ) {\n minutesOffset = struct[ 10 ] * 60 + struct[ 11 ];\n\n if( struct[ 9 ] === '+' ) {\n minutesOffset = 0 - minutesOffset;\n }\n }\n\n timestamp =\n Date.UTC( struct[ 1 ], struct[ 2 ], struct[ 3 ], struct[ 4 ], struct[ 5 ] + minutesOffset, struct[ 6 ],\n struct[ 7 ] );\n }\n else {\n timestamp = Date.parse( date );\n }\n\n return timestamp;\n}","import { ItemsBehavior, Transactional, transactionApi, TransactionOptions } from '../../transactions';\nimport { ValidationError } from '../../validation';\nimport { AnyType } from './any';\nimport { AttributesContainer, ConstructorOptions } from '../updates';\n\nconst { free, aquire } = transactionApi;\n\nexport class AggregatedType extends AnyType {\n type : typeof Transactional\n\n clone( value : Transactional ) : Transactional {\n return value ? value.clone() : value;\n }\n\n toJSON( x, key : string, options : object ){ return x && x.toJSON( options ); }\n\n doInit( value, record : AttributesContainer, options : ConstructorOptions ){\n const v = options.clone ? this.clone( value ) : (\n value === void 0 ? this.defaultValue() : value\n );\n\n const x = this.transform( v, void 0, record, options );\n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc\n const key = this.name, { attributes } = record; \n const prev = attributes[ key ];\n let update;\n\n // This can be moved to transactional attribute. And chained with the rest.\n if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates.\n const nestedTransaction = prev._createTransaction( update, options );\n if( nestedTransaction ){\n if( nested ){\n nested.push( nestedTransaction );\n }\n else{\n nestedTransaction.commit( record );\n }\n\n if( this.propagateChanges ) return true;\n }\n\n return false;\n }\n\n const next = this.transform( value, prev, record, options );\n attributes[ key ] = next;\n\n if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined.\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n\n return true;\n }\n\n return false;\n }\n\n canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any {\n // If an object already exists, and new value is of incompatible type, let object handle the update.\n if( prev && next != null ){\n if( next instanceof this.type ){\n // In case if merge option explicitly specified, force merge.\n if( options.merge ) return next.__inner_state__;\n }\n else{\n return next;\n }\n }\n }\n\n convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional {\n // Invoke class factory to handle abstract classes\n if( next == null ) return next;\n \n if( next instanceof this.type ){\n if( next._shared && !( next._shared & ItemsBehavior.persistent ) ) { // TODO: think more about shared types assignment compatibility. \n this._log( 'error', 'Type-R:InvalidCollection', 'aggregated collection attribute is assigned with shared collection type', next, record, options.logger );\n }\n\n // With explicit 'merge' option we need to clone an object if its previous value was 'null'.\n // This is an only case we could be here when merge === true.\n return options.merge ? next.clone() : next;\n }\n\n return this.type.create( next, options );\n }\n\n dispose ( record : AttributesContainer, value : Transactional ){\n if( value ){\n this.handleChange( void 0, value, record, {} );\n }\n }\n\n validate( record : AttributesContainer, value : Transactional ) : ValidationError {\n var error = value && value.validationError;\n if( error ) return error;\n }\n\n create() : Transactional {\n return (this.type).create(); // this the subclass of Transactional here.\n }\n\n initialize( options ){\n options.changeHandlers.unshift( this._handleChange );\n }\n\n _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options : TransactionOptions ){\n if( prev ){\n free( record, prev );\n options.unset || prev.dispose();\n } \n \n if( next && !aquire( record, next, this.name ) ){\n this._log( 'error', 'Type-R:InvalidOwner', 'aggregated attribute assigned with an object already having an owner', next, record, options.logger );\n }\n }\n}","import { eventsApi } from '../../object-plus';\nimport { ItemsBehavior, Transactional, transactionApi, TransactionOptions } from '../../transactions';\nimport { AnyType } from './any';\nimport { AttributesContainer, ConstructorOptions } from '../updates';\n\nconst { on, off } = eventsApi,\n { free, aquire } = transactionApi;\n\n/************************\n * Shared attribute definition.\n * - Not serialized.\n * - Listening to the changes.\n * - Doesn't take ownership when assigned with object of proper type.\n * - Takes ownership on objects which are converted.\n */\n\nconst shareAndListen = ItemsBehavior.listen | ItemsBehavior.share;\n\n/** @private */\nexport class SharedType extends AnyType {\n type : typeof Transactional\n\n doInit( value, record : AttributesContainer, options : ConstructorOptions ){\n const v = options.clone ? this.clone( value, record ) : (\n value === void 0 ? this.defaultValue() : value\n );\n\n const x = this.transform( v, void 0, record, options );\n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc\n const key = this.name, { attributes } = record; \n const prev = attributes[ key ];\n let update;\n\n // This can be moved to transactional attribute. And chained with the rest.\n if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates.\n const nestedTransaction = prev._createTransaction( update, options );\n if( nestedTransaction ){\n if( nested ){\n nested.push( nestedTransaction );\n }\n else{\n nestedTransaction.commit( record );\n }\n\n if( this.propagateChanges ) return true;\n }\n\n return false;\n }\n\n const next = this.transform( value, prev, record, options );\n attributes[ key ] = next;\n\n if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined.\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n\n return true;\n }\n\n return false;\n }\n\n clone( value : Transactional, record : AttributesContainer ) : Transactional {\n // References are not cloned.\n if( !value || value._owner !== record ) return value;\n\n // Implicitly created objects are cloned.\n const clone = value.clone();\n aquire( record, clone, this.name );\n return clone;\n }\n\n // Do not serialize by default.\n toJSON(){}\n\n canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any {\n // If an object already exists, and new value is of incompatible type, let object handle the update.\n if( prev && next != null && !( next instanceof this.type ) ){\n return next;\n }\n }\n\n convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional {\n if( next == null || next instanceof this.type ) return next;\n\n // Convert type using implicitly created rtransactional object.\n const implicitObject = new ( this.type as any )( next, options, shareAndListen );\n\n // To prevent a leak, we need to take an ownership on it.\n aquire( record, implicitObject, this.name );\n\n return implicitObject;\n }\n\n // Refs are always valid.\n validate( model, value, name ){}\n\n // They are always created as null.\n create() : Transactional {\n return null;\n }\n\n // Listening to the change events\n _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options ){\n if( prev ){\n // If there was an implicitly created object, remove an ownership.\n if( prev._owner === record ){\n free( record, prev );\n options.unset || prev.dispose();\n }\n else{\n off( prev, prev._changeEventName, this._onChange, record );\n }\n } \n \n if( next ){\n // No need to take an ownership for an implicit object - already done in convert or clone.\n if( next._owner !== record ){\n on( next, next._changeEventName, this._onChange, record );\n }\n } \n }\n\n dispose( record : AttributesContainer, value : Transactional ){\n if( value ){\n this.handleChange( void 0, value, record, {} );\n }\n }\n\n _onChange : ( child : Transactional, options : TransactionOptions, initiator : Transactional ) => void \n\n initialize( options ){\n // Create change event handler which knows current attribute name. \n const attribute = this;\n this._onChange = this.propagateChanges ? function( child, options, initiator ){\n this === initiator || this.forceAttributeChange( attribute.name, options );\n } : ignore;\n\n options.changeHandlers.unshift( this._handleChange );\n }\n}\n\nfunction ignore(){}\n\nexport function shared( T : typeof Transactional ){\n return T.shared;\n}","import { PrimitiveType, NumericType, ObjectType, ImmutableClassType, FunctionType, ArrayType } from './basic';\nimport { DateType } from './date';\nimport { AnyType, AttributeOptions } from './any';\n\nexport * from './any';\nexport * from './basic';\nexport * from './date';\nexport * from './owned';\nexport * from './shared';\n\n/**\n * Every record attribute type has the corresponding metatype controlling its behavior.\n * For built-in types, Type-R uses the predefined list to resolve metatype in order to avoid global objects modifications.\n * For user-defined types, static `_metatype` constructor member is used.\n */\n\nconst builtins : Function[] = [ String, Number, Boolean, Date, Object, Array, Function ],\n metatypes = [ PrimitiveType, NumericType, PrimitiveType, DateType, ObjectType, ArrayType, FunctionType ];\n\nexport function getMetatype( Ctor : Function ){\n return ( Ctor as any )._metatype || resolveBuiltins( Ctor );\n}\n\nAnyType.create = ( options : AttributeOptions, name : string ) => {\n const type = options.type,\n AttributeCtor = options._metatype || ( type ? getMetatype( type ): AnyType );\n\n return new AttributeCtor( name, options );\n}\n\nfunction resolveBuiltins( Ctor : Function ){\n const idx = builtins.indexOf( Ctor );\n return idx < 0 ? ImmutableClassType : metatypes[ idx ];\n}","/**\n * Type spec engine. Declare attributes using chainable syntax,\n * and returns object with spec.\n */\nimport { IOEndpoint } from '../io-tools';\nimport { definitionDecorator, EventMap, EventsDefinition, tools } from '../object-plus';\nimport { Transactional } from '../transactions';\nimport { AttributeOptions, Parse, AnyType, getMetatype } from './metatypes';\nimport { AttributesContainer } from './updates';\n\nconst { assign } = tools;\n\nexport interface AttributeCheck {\n ( value : any, key : string ) : boolean\n error? : any\n}\n\nexport class ChainableAttributeSpec {\n options : AttributeOptions;\n\n constructor( options : AttributeOptions ) {\n // Shallow copy options, fill it with defaults.\n this.options = { getHooks : [], transforms : [], changeHandlers : []};\n if( options ) assign( this.options, options );\n }\n\n check( check : AttributeCheck, error? : any ) : ChainableAttributeSpec {\n function validate( model, value, name ){\n if( !check.call( model, value, name ) ){\n const msg = error || check.error || name + ' is not valid';\n return typeof msg === 'function' ? msg.call( model, name ) : msg;\n }\n }\n\n const prev = this.options.validate;\n\n return this.metadata({\n validate : prev ? (\n function( model, value, name ){\n return prev( model, value, name ) || validate( model, value, name );\n }\n ) : validate\n });\n }\n\n get asProp(){\n return definitionDecorator( 'attributes', this );\n }\n\n get as(){ return this.asProp; }\n\n get isRequired() : ChainableAttributeSpec {\n return this.required;\n }\n\n get required() : ChainableAttributeSpec {\n return this.metadata({ isRequired : true }); \n }\n\n endpoint( endpoint : IOEndpoint ){\n return this.metadata({ endpoint });\n }\n\n watcher( ref : string | ( ( value : any, key : string ) => void ) ) : ChainableAttributeSpec {\n return this.metadata({ _onChange : ref });\n }\n\n // Attribute-specific parse transform\n parse( fun : Parse ) : ChainableAttributeSpec {\n return this.metadata({ parse : fun });\n }\n\n toJSON( fun ) : ChainableAttributeSpec {\n return this.metadata({\n toJSON : typeof fun === 'function' ? fun : ( fun ? ( x, k, o ) => x && x.toJSON( o ) : emptyFunction ) \n });\n }\n\n // Attribute get hook.\n get( fun ) : ChainableAttributeSpec {\n return this.metadata({\n getHooks : this.options.getHooks.concat( fun )\n });\n }\n\n // Attribute set hook.\n set( fun ) : ChainableAttributeSpec {\n function handleSetHook( next, prev, record : AttributesContainer, options ) {\n if( this.isChanged( next, prev ) ) {\n const changed = fun.call( record, next, this.name );\n return changed === void 0 ? prev : this.convert( changed, prev, record, options );\n }\n\n return prev;\n }\n\n return this.metadata({\n transforms : this.options.transforms.concat( handleSetHook )\n });\n }\n\n changeEvents( events : boolean ) : ChainableAttributeSpec {\n return this.metadata({ changeEvents : events });\n }\n\n // Subsribe to events from an attribute.\n events( map : EventsDefinition ) : ChainableAttributeSpec {\n const eventMap = new EventMap( map );\n\n function handleEventsSubscribtion( next, prev, record : AttributesContainer ){\n prev && prev.trigger && eventMap.unsubscribe( record, prev );\n\n next && next.trigger && eventMap.subscribe( record, next );\n }\n\n return this.metadata({\n changeHandlers : this.options.changeHandlers.concat( handleEventsSubscribtion )\n });\n }\n\n // Creates a copy of the spec.\n get has() : ChainableAttributeSpec {\n return this;\n }\n\n metadata( options : AttributeOptions ) : ChainableAttributeSpec {\n const cloned = new ChainableAttributeSpec( this.options );\n assign( cloned.options, options );\n return cloned;\n }\n\n value( x ) : ChainableAttributeSpec {\n return this.metadata({ value : x, hasCustomDefault : true });\n }\n\n static from( spec : any ) : ChainableAttributeSpec {\n let attrSpec : ChainableAttributeSpec;\n\n if( typeof spec === 'function' ) {\n attrSpec = type( spec );\n }\n else if( spec && spec instanceof ChainableAttributeSpec ) {\n attrSpec = spec;\n }\n else{\n // Infer type from value.\n const type = inferType( spec );\n \n // Transactional types inferred from values must have shared type. \n if( type && type.prototype instanceof Transactional ){\n attrSpec = type( ( type as typeof Transactional ).shared ).value( spec );\n }\n // All others will be created in regular way.\n else{\n attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true });\n }\n }\n \n return attrSpec;\n }\n}\n\nfunction emptyFunction(){}\n\nexport function type( this : void, type : ChainableAttributeSpec | Function, value? : any ) : ChainableAttributeSpec {\n if( type instanceof ChainableAttributeSpec ) return type;\n\n const defaultValue = value === void 0 ? getMetatype( type ).defaultValue : value;\n return new ChainableAttributeSpec( {\n type,\n value : defaultValue,\n hasCustomDefault : defaultValue !== void 0\n } );\n}\n\nfunction inferType( value : {} ) : Function {\n switch( typeof value ) {\n case 'number' :\n return Number;\n case 'string' :\n return String;\n case 'boolean' :\n return Boolean;\n case 'undefined' :\n return void 0;\n case 'object' :\n return value ? value.constructor : void 0;\n }\n}\n\nexport function createSharedTypeSpec( Constructor : Function, Attribute : typeof AnyType ){\n if( !Constructor.hasOwnProperty( 'shared' ) ){\n Object.defineProperty( Constructor, 'shared', {\n get(){\n return new ChainableAttributeSpec({\n value : null,\n type : Constructor,\n _metatype : Attribute\n });\n }\n });\n }\n}","import { IOEndpoint } from '../io-tools';\nimport { eventsApi, tools as _ } from '../object-plus';\nimport { CompiledReference } from '../traversable';\nimport { ChainableAttributeSpec } from './attrDef';\nimport { AnyType } from './metatypes';\nimport { ConstructorsMixin, constructorsMixin } from './updates';\n\nexport interface RecordAttributesMixin extends ConstructorsMixin {\n // Attributes descriptors\n _attributes : AttributeDescriptors\n _attributesArray : AnyType[]\n \n // Attribute's property descriptors\n properties : PropertyDescriptorMap\n\n // Event map for record's local events.\n _localEvents? : eventsApi.EventMap,\n\n _endpoints : { [ name : string ] : IOEndpoint }\n}\n\nexport interface AttributeDescriptors {\n [ name : string ] : AnyType\n}\n\n// Create attribute from the type spec.\nexport function createAttribute( spec : any, name : string ) : AnyType {\n return AnyType.create( ChainableAttributeSpec.from( spec ).options, name );\n}\n\n// Create record mixin from the given record's attributes definition\nexport function createAttributesMixin( attributesDefinition : object, baseClassAttributes : AttributeDescriptors ) : RecordAttributesMixin {\n const myAttributes = _.transform( {} as AttributeDescriptors, attributesDefinition, createAttribute ),\n allAttributes = _.defaults( {} as AttributeDescriptors, myAttributes, baseClassAttributes );\n\n const ConstructorsMixin = constructorsMixin( allAttributes );\n\n return {\n ...ConstructorsMixin,\n _attributes : new ConstructorsMixin.AttributesCopy( allAttributes ),\n _attributesArray : Object.keys( allAttributes ).map( key => allAttributes[ key ] ),\n properties : _.transform( {}, myAttributes, x => x.createPropertyDescriptor() ),\n ...localEventsMixin( myAttributes ),\n _endpoints : _.transform( {}, allAttributes, attrDef => attrDef.options.endpoint )\n } \n}\n\ninterface LocalEventsMixin {\n _localEvents? : eventsApi.EventMap\n}\n\nfunction localEventsMixin( attrSpecs : AttributeDescriptors ) : LocalEventsMixin {\n let _localEvents : eventsApi.EventMap;\n\n for( var key in attrSpecs ){\n const attribute = attrSpecs[ key ],\n { _onChange } = attribute.options; \n\n if( _onChange ){\n _localEvents || ( _localEvents = new eventsApi.EventMap() );\n\n _localEvents.addEvent( 'change:' + key,\n typeof _onChange === 'string' ?\n createWatcherFromRef( _onChange, key ) : \n wrapWatcher( _onChange, key ) );\n }\n }\n\n return _localEvents ? { _localEvents } : {};\n}\n\nfunction wrapWatcher( watcher, key ){\n return function( record, value ){\n watcher.call( record, value, key );\n } \n}\n\nfunction createWatcherFromRef( ref : string, key : string ){\n const { local, resolve, tail } = new CompiledReference( ref, true );\n return local ?\n function( record, value ){\n record[ tail ]( value, key );\n } :\n function( record, value ){\n resolve( record )[ tail ]( value, key );\n }\n}","import { IOEndpoint, IONode, IOOptions, IOPromise, startIO } from '../io-tools';\n\nexport interface IORecord extends IONode {\n getEndpoint() : IOEndpoint\n save( options? : IOOptions ) : IOPromise\n fetch( options? : IOOptions ) : IOPromise\n destroy( options? : IOOptions ) : IOPromise\n toJSON( options? : object ) : any\n isNew() : boolean\n id : string | number\n set( json : object, options : object )\n}\n\nexport const IORecordMixin = {\n save( this : IORecord, options : IOOptions = {} ){\n const endpoint = this.getEndpoint(),\n json = this.toJSON( options );\n\n return startIO(\n this,\n this.isNew() ?\n endpoint.create( json, options, this ) :\n endpoint.update( this.id, json, options, this ),\n options,\n\n update => {\n this.set( update, { parse : true, ...options } );\n }\n );\n },\n\n fetch( options : IOOptions = {} ){\n return startIO(\n this,\n this.getEndpoint().read( this.id, options, this ),\n options,\n\n json => this.set( json, { parse : true, ...options } )\n );\n },\n\n destroy( options : IOOptions = {} ){ \n return startIO(\n this,\n this.getEndpoint().destroy( this.id, options, this ),\n options,\n\n () => {\n const { collection } = this;\n if( collection ){\n collection.remove( this, options );\n }\n else{\n this.dispose();\n }\n\n return this;\n }\n )\n }\n}","/**\n * Record core implementing transactional updates.\n * The root of all definitions. \n */\n\nimport { CollectionConstructor } from '../collection';\nimport { IOEndpoint, IOPromise } from '../io-tools';\nimport { define, definitions, isProduction, Logger, logger, LogLevel, mixinRules, tools } from '../object-plus';\nimport { CloneOptions, Owner, Transaction, Transactional, TransactionalDefinition, TransactionOptions } from '../transactions';\nimport { ChildrenErrors } from '../validation';\nimport { AggregatedType, AnyType } from './metatypes';\nimport { IORecord, IORecordMixin } from './io-mixin';\nimport { AttributesConstructor, AttributesContainer, AttributesCopyConstructor, AttributesValues, setAttribute, shouldBeAnObject, unknownAttrsWarning, UpdateRecordMixin } from './updates';\n\n\nconst { assign, isEmpty } = tools;\n\n/*******************************************************\n * Record core implementation\n */\n\nexport interface ConstructorOptions extends TransactionOptions{\n clone? : boolean\n}\n\n// Client unique id counter\nlet _cidCounter : number = 0;\n\n/***************************************************************\n * Record Definition as accepted by Record.define( definition )\n */\nexport interface RecordDefinition extends TransactionalDefinition {\n idAttribute? : string\n attributes? : AttributesValues\n collection? : object\n Collection? : typeof Transactional\n}\n\n@define({\n // Default client id prefix \n cidPrefix : 'm',\n\n // Name of the change event\n _changeEventName : 'change',\n\n // Default id attribute name\n idAttribute : 'id'\n})\n@definitions({\n defaults : mixinRules.merge,\n attributes : mixinRules.merge,\n collection : mixinRules.merge,\n Collection : mixinRules.value,\n idAttribute : mixinRules.protoValue\n})\nexport class Record extends Transactional implements IORecord, AttributesContainer, Iterable {\n static _metatype = AggregatedType;\n\n // Hack\n static onDefine( definition, BaseClass ){}\n\n static Collection : CollectionConstructor;\n static DefaultCollection : CollectionConstructor;\n\n static from : ( collectionReference : any ) => any;\n \n static defaults( attrs : AttributesValues ) : typeof Record {\n return this.extend({ attributes : attrs });\n }\n \n static attributes : AttributesValues\n\n /********************\n * IO Methods\n */\n _endpoints : { [ name : string ] : IOEndpoint }\n\n // Save record\n save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); }\n\n // Destroy record\n destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); }\n\n /***********************************\n * Core Members\n */\n // Previous attributes\n _previousAttributes : {}\n\n previousAttributes(){ return new this.AttributesCopy( this._previousAttributes ); } \n\n // Current attributes \n attributes : AttributesValues\n\n // Polymorphic accessor for aggregated attribute's canBeUpdated().\n get __inner_state__(){ return this.attributes; }\n\n // Lazily evaluated changed attributes hash\n _changedAttributes : AttributesValues\n\n get changed(){\n let changed = this._changedAttributes;\n\n if( !changed ){\n const prev = this._previousAttributes;\n changed = {};\n\n const { attributes } = this;\n\n for( let attr of this._attributesArray ){\n const key = attr.name,\n value = attributes[ key ];\n\n if( attr.isChanged( value, prev[ key ] ) ){\n changed[ key ] = value;\n }\n }\n\n this._changedAttributes = changed;\n }\n\n return changed; \n }\n\n changedAttributes( diff? : {} ) : boolean | {} {\n if( !diff ) return this.hasChanged() ? assign( {}, this.changed ) : false;\n\n var val, changed : {} | boolean = false,\n old = this._transaction ? this._previousAttributes : this.attributes,\n attrSpecs = this._attributes;\n\n for( var attr in diff ){\n if( !attrSpecs[ attr ].isChanged( old[ attr ], ( val = diff[ attr ] ) ) ) continue;\n (changed || (changed = {}))[ attr ] = val;\n }\n\n return changed; \n }\n\n hasChanged( key? : string ) : boolean {\n const { _previousAttributes } = this;\n if( !_previousAttributes ) return false;\n\n return key ?\n this._attributes[ key ].isChanged( this.attributes[ key ], _previousAttributes[ key ] ) :\n !isEmpty( this.changed );\n }\n\n previous( key : string ) : any {\n if( key ){\n const { _previousAttributes } = this;\n if( _previousAttributes ) return _previousAttributes[ key ];\n }\n \n return null;\n }\n\n isNew() : boolean {\n return this.id == null;\n }\n\n has( key : string ) : boolean {\n return this[ key ] != void 0;\n }\n\n // Return attribute value, setting an attribute to undefined.\n // TODO: If attribute was aggregated, don't dispose it.\n unset( key : string, options? ) : any {\n const value = this[ key ];\n this.set({ [ key ] : void 0 }, { unset : true, ...options });\n return value;\n }\n\n // Undocumented. Move to NestedTypes?\n clear( options? ) : this {\n const nullify = options && options.nullify;\n\n this.transaction( () =>{\n this.forEach( ( value, key ) => this[ key ] = nullify ? null : void 0 );\n }, options );\n\n return this;\n }\n\n // Returns Record owner skipping collections. TODO: Move out\n getOwner() : Owner {\n const owner : any = this._owner;\n\n // If there are no key, owner must be transactional object, and it's the collection.\n // We don't expect that collection can be the member of collection, so we're skipping just one level up. An optimization.\n return this._ownerKey ? owner : owner && owner._owner;\n }\n\n /***********************************\n * Identity managements\n */\n\n // Id attribute name ('id' by default)\n idAttribute : string;\n\n // Fixed 'id' property pointing to id attribute\n get id() : string { return this.attributes[ this.idAttribute ]; }\n set id( x : string ){ setAttribute( this, this.idAttribute, x ); }\n\n /***********************************\n * Dynamically compiled stuff\n */\n\n // Attributes specifications \n _attributes : { [ key : string ] : AnyType }\n _attributesArray : AnyType[]\n\n // Attributes object copy constructor\n Attributes : AttributesConstructor\n AttributesCopy : AttributesCopyConstructor\n\n // Create record default values, optionally augmenting given values.\n defaults( values = {} ){\n const defaults = {},\n { _attributesArray } = this;\n\n for( let attr of _attributesArray ){\n const key = attr.name,\n value = values[ key ];\n\n defaults[ key ] = value === void 0 ? attr.defaultValue() : value;\n }\n\n return defaults;\n }\n\n /***************************************************\n * Record construction\n */\n // Create record, optionally setting an owner\n constructor( a_values? : {}, a_options? : ConstructorOptions ){\n super( _cidCounter++ );\n this.attributes = {};\n \n const options = a_options || {},\n values = ( options.parse ? this.parse( a_values, options ) : a_values ) || {};\n\n isProduction || typeCheck( this, values, options );\n\n this._previousAttributes = this.attributes = new this.Attributes( this, values, options );\n\n this.initialize( a_values, a_options );\n\n if( this._localEvents ) this._localEvents.subscribe( this, this );\n }\n\n // Initialization callback, to be overriden by the subclasses \n initialize( values?, options? ){}\n\n // Deeply clone record, optionally setting new owner.\n clone( options : CloneOptions = {} ) : this {\n const copy : this = new (this.constructor)( this.attributes, { clone : true } );\n \n if( options.pinStore ) copy._defaultStore = this.getStore();\n\n return copy;\n }\n\n // Validate attributes.\n _validateNested( errors : ChildrenErrors ) : number {\n var length = 0;\n\n const { attributes } = this;\n\n for( let attribute of this._attributesArray ){\n const { name } = attribute,\n error = attribute.validate( this, attributes[ name ], name );\n\n if( error ){\n errors[ name ] = error;\n length++;\n }\n }\n\n return length;\n }\n\n // Get attribute by key\n get( key : string ) : any {\n return this[ key ];\n }\n\n // Apply bulk in-place object update in scope of ad-hoc transaction \n set( values : any, options? : TransactionOptions ) : this {\n if( values ){ \n const transaction = this._createTransaction( values, options );\n transaction && transaction.commit();\n }\n\n return this;\n }\n\n /**\n * Serialization control\n */\n\n // Default record-level serializer, to be overriden by subclasses \n toJSON( options? : object ) : any {\n const json = {},\n { attributes } = this;\n\n for( let attribute of this._attributesArray ){\n const { name } = attribute,\n value = attributes[ name ];\n\n if( value !== void 0 ){\n // ...serialize it according to its spec.\n const asJson = attribute.toJSON.call( this, value, name, options );\n\n // ...skipping undefined values. Such an attributes are excluded.\n if( asJson !== void 0 ) json[ name ] = asJson; \n }\n }\n\n return json;\n }\n \n // Default record-level parser, to be overriden by the subclasses.\n parse( data, options? : TransactionOptions ){\n return data;\n }\n\n /**\n * Transactional control\n */\n deepSet( name : string, value : any, options? : any ){\n // Operation might involve series of nested object updates, thus it's wrapped in transaction.\n this.transaction( () => {\n const path = name.split( '.' ),\n l = path.length - 1,\n attr = path[ l ];\n\n let model = this;\n\n // Locate the model, traversing the path.\n for( let i = 0; i < l; i++ ){\n const key = path[ i ];\n\n // There might be collections in path, so use `get`.\n let next = model.get ? model.get( key ) : model[ key ];\n\n // Create models, if they are not exist.\n if( !next ){\n const attrSpecs = model._attributes;\n if( attrSpecs ){\n // If current object is model, create default attribute\n var newModel = attrSpecs[ key ].create();\n\n // If created object is model, nullify attributes when requested\n if( options && options.nullify && newModel._attributes ){\n newModel.clear( options );\n }\n\n model[ key ] = next = newModel;\n }\n // Silently fail in other case.\n else return;\n }\n \n model = next;\n }\n\n // Set model attribute.\n if( model.set ){\n model.set({ [ attr ] : value }, options );\n }\n else{\n model[ attr ] = value;\n }\n });\n\n return this;\n }\n \n // Returns owner without the key (usually it's collection)\n get collection() : any {\n return this._ownerKey ? null : this._owner;\n }\n\n // Dispose object and all childrens\n dispose(){\n if( this._disposed ) return;\n\n const { attributes } = this;\n\n for( let attr of this._attributesArray ){\n attr.dispose( this, attributes[ attr.name ] );\n }\n \n super.dispose();\n }\n\n _log( level : LogLevel, topic: string, text : string, props : object, a_logger? : Logger ) : void {\n ( a_logger || logger ).trigger( level, topic, text, {\n ...props,\n 'Record' : this,\n 'Attributes definition:' : this._attributes\n });\n }\n\n getClassName() : string {\n return super.getClassName() || 'Record';\n }\n\n // Dummies to \n _createTransaction( values : object, options : TransactionOptions ) : Transaction { return void 0; }\n // Simulate attribute change \n forceAttributeChange : ( key : string, options : TransactionOptions ) => void\n _onChildrenChange : ( child : Transactional, options : TransactionOptions ) => void\n\n\n /**\n * Map methods\n */\n\n forEach( iteratee : ( value? : any, key? : string ) => void, context? : any ){\n const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,\n { attributes } = this;\n\n for( const key in this.attributes ){\n const value = attributes[ key ];\n if( value !== void 0 ) fun( value, key );\n }\n }\n\n mapObject( a_fun : ( value, key ) => any, context? : any ) : object {\n const fun = context === void 0 ? a_fun : a_fun.bind( context );\n return tools.transform( {}, this.attributes, fun );\n }\n\n [ Symbol.iterator ](){\n return new RecordEntriesIterator( this );\n }\n\n entries(){\n return new RecordEntriesIterator( this );\n }\n\n // Get array of attribute keys (Record) or record ids (Collection) \n keys() : string[] {\n const keys : string[] = [];\n\n this.forEach( ( value, key ) => keys.push( key ) );\n\n return keys;\n }\n};\n\nassign( Record.prototype, UpdateRecordMixin, IORecordMixin );\n\n/***********************************************\n * Helper functions\n */\n\nclass BaseRecordAttributes {\n id : string\n\n constructor( record : Record, x : AttributesValues, options : TransactionOptions ) {\n this.id = x.id;\n }\n}\n\nRecord.prototype.Attributes = BaseRecordAttributes;\n\nclass BaseRecordAttributesCopy {\n id : string\n\n constructor( x : AttributesValues ) {\n this.id = x.id;\n }\n}\n\nRecord.prototype.AttributesCopy = BaseRecordAttributesCopy;\n\nconst IdAttribute = AnyType.create({ value : void 0 }, 'id' );\nRecord.prototype._attributes = { id : IdAttribute };\nRecord.prototype._attributesArray = [ IdAttribute ];\n\nfunction typeCheck( record : Record, values : object, options ){\n if( shouldBeAnObject( record, values, options ) ){\n const { _attributes } = record;\n let unknown : string[];\n\n for( let name in values ){\n if( !_attributes[ name ] ){\n unknown || ( unknown = [] );\n unknown.push( `'${ name }'` );\n }\n }\n\n if( unknown ){\n unknownAttrsWarning( record, unknown, { values }, options );\n }\n }\n}\n\nexport class RecordEntriesIterator implements Iterator<[string, any]> {\n private idx = 0;\n \n constructor( private readonly record : Record){}\n\n next() : IteratorResult<[string, any]> {\n const { record } = this,\n metatype = record._attributesArray[ this.idx++ ];\n\n return {\n done : !metatype,\n value : metatype ? [ metatype.name, record[ metatype.name ] ] : void 0\n };\n }\n}","import { predefine, tools } from '../object-plus';\nimport { Transactional } from '../transactions';\nimport { ChainableAttributeSpec, createSharedTypeSpec, type } from './attrDef';\nimport { SharedType } from './metatypes';\nimport { createAttributesMixin } from './mixin';\nimport { Record, RecordDefinition } from './record';\n\nexport * from './attrDef';\nexport * from './metatypes';\nexport { Record };\n\nconst { assign, defaults } = tools;\n\nRecord.onExtend = function( this : typeof Record, BaseClass : typeof Record ){\n Transactional.onExtend.call( this, BaseClass );\n\n // Create the default collection\n const Class = this;\n\n @predefine class DefaultCollection extends BaseClass.Collection {\n static model = Class;\n }\n\n this.DefaultCollection = DefaultCollection;\n\n // If there are no collection defined in statics, use the default collection.\n // It will appear in onDefine's definition, overriding all other settings.\n if( Class.Collection === BaseClass.Collection ){\n this.Collection = DefaultCollection;\n }\n\n // Create Class.shared modifier\n createSharedTypeSpec( this, SharedType );\n}\n\nRecord.onDefine = function( definition : RecordDefinition, BaseClass : typeof Record ){\n const baseProto : Record = BaseClass.prototype;\n\n // Compile attributes spec, creating definition mixin.\n const { properties, _localEvents, ...dynamicMixin } = createAttributesMixin( this.attributes = getAttributes( definition ), baseProto._attributes );\n assign( this.prototype, dynamicMixin );\n \n definition.properties = defaults( definition.properties || {}, properties );\n definition._localEvents = _localEvents;\n \n Transactional.onDefine.call( this, definition, BaseClass );\n\n // Finalize the definition of the default collection.\n this.DefaultCollection.define( definition.collection || {} );\n\n // assign collection from the definition.\n this.Collection = definition.Collection;\n this.Collection.prototype.model = this;\n\n if( definition.endpoint ) this.Collection.prototype._endpoint = definition.endpoint; \n}\n\ncreateSharedTypeSpec( Record, SharedType );\n\nfunction getAttributes({ defaults, attributes, idAttribute } : RecordDefinition ) {\n const definition = attributes || defaults || {};\n \n // If there is an undeclared idAttribute, add its definition as untyped generic attribute.\n if( idAttribute && !( idAttribute in definition ) ){\n definition[ idAttribute ] = void 0;\n }\n\n return definition;\n}\n\ndeclare var Reflect;\n\nexport function attr( proto : object, attrName : string ) : void;\nexport function attr( spec : any ) : PropertyDecorator;\nexport function attr( proto, attrName? : string ) : any {\n if( attrName ){\n // Called without the spec. Extract the type.\n if( typeof Reflect !== 'undefined' && Reflect.getMetadata ){\n type( Reflect.getMetadata( \"design:type\", proto, attrName ) ).asProp( proto, attrName );\n }\n else{\n proto._log( 'error', 'Type-R:MissingImport', 'Add import \"reflect-metadata\"; as the first line of your app.' );\n }\n }\n else{\n return ChainableAttributeSpec.from( proto ).asProp;\n }\n}\n\nexport function prop( spec ) : any {\n return spec.asProp;\n}","import { eventsApi, Logger } from '../object-plus';\nimport { Record } from '../record';\nimport { ItemsBehavior, Owner, Transaction, Transactional, transactionApi, TransactionOptions } from '../transactions';\n\n\nconst { trigger2, trigger3, on, off } = eventsApi,\n { commit } = transactionApi,\n _aquire = transactionApi.aquire, _free = transactionApi.free;\n\n/** @private */\nexport interface CollectionCore extends Transactional, Owner {\n _byId : IdIndex\n models : Record[]\n model : typeof Record\n idAttribute : string // TODO: Refactor inconsistent idAttribute usage\n _comparator : Comparator\n get( objOrId : string | Record | Object ) : Record \n _itemEvents? : eventsApi.EventMap\n _shared : number\n _aggregationError : Record[]\n\n _log( level : string, topic : string, text : string, value : any, logger : Logger ) : void\n}\n\n// Collection's manipulation methods elements\nexport type Elements = ( Object | Record )[];\n\nexport interface CollectionOptions extends TransactionOptions {\n sort? : boolean\n}\n\nexport type Comparator = ( a : Record, b : Record ) => number; \n\n/** @private */\nexport function dispose( collection : CollectionCore ) : Record[]{\n const { models } = collection;\n\n collection.models = [];\n collection._byId = {};\n\n freeAll( collection, models );\n return models;\n}\n\n/** @private */\nexport function convertAndAquire( collection : CollectionCore, attrs : {} | Record, options : CollectionOptions ){\n const { model } = collection;\n \n let record : Record;\n\n if( collection._shared ){\n record = attrs instanceof model ? attrs : model.create( attrs, options );\n\n if( collection._shared & ItemsBehavior.listen ){\n on( record, record._changeEventName, collection._onChildrenChange, collection );\n }\n }\n else{\n record = attrs instanceof model ? ( options.merge ? attrs.clone() : attrs ) : model.create( attrs, options );\n\n if( !_aquire( collection, record ) ){\n const errors = collection._aggregationError || ( collection._aggregationError = [] );\n errors.push( record );\n }\n } \n\n // Subscribe for events...\n const { _itemEvents } = collection;\n _itemEvents && _itemEvents.subscribe( collection, record );\n\n return record;\n}\n\n/** @private */\nexport function free( owner : CollectionCore, child : Record, unset? : boolean ) : void {\n if( owner._shared ){\n if( owner._shared & ItemsBehavior.listen ){\n off( child, child._changeEventName, owner._onChildrenChange, owner );\n }\n }\n else{\n _free( owner, child );\n unset || child.dispose();\n }\n\n const { _itemEvents } = owner;\n _itemEvents && _itemEvents.unsubscribe( owner, child );\n}\n\n/** @private */\nexport function freeAll( collection : CollectionCore, children : Record[] ) : Record[] {\n for( let child of children ){\n free( collection, child );\n }\n\n return children;\n}\n\n/**\n * Silently sort collection, if its required. Returns true if sort happened.\n * @private\n */ \nexport function sortElements( collection : CollectionCore, options : CollectionOptions ) : boolean {\n let { _comparator } = collection;\n if( _comparator && options.sort !== false ){\n collection.models.sort( _comparator );\n return true;\n }\n\n return false;\n}\n\n/**********************************\n * Collection Index\n * @private \n */\nexport interface IdIndex {\n [ id : string ] : Record\n}\n\n/** @private Add record */ \nexport function addIndex( index : IdIndex, model : Record ) : void {\n index[ model.cid ] = model;\n var id = model.id;\n \n if( id || ( id as any ) === 0 ){\n index[ id ] = model;\n }\n}\n\n/** @private Remove record */ \nexport function removeIndex( index : IdIndex, model : Record ) : void {\n delete index[ model.cid ];\n var id = model.id;\n if( id || ( id as any ) === 0 ){\n delete index[ id ];\n }\n}\n\nexport function updateIndex( index : IdIndex, model : Record ){\n delete index[ model.previous( model.idAttribute ) ];\n\n const { id } = model;\n id == null || ( index[ id ] = model );\n}\n\n/***\n * In Collections, transactions appears only when\n * add remove or change events might be emitted.\n * reset doesn't require transaction.\n * \n * Transaction holds information regarding events, and knows how to emit them.\n * \n * Two major optimization cases.\n * 1) Population of an empty collection\n * 2) Update of the collection (no or little changes) - it's crucial to reject empty transactions.\n */\n\n\n// Transaction class. Implements two-phase transactions on object's tree.\n/** @private */ \nexport class CollectionTransaction implements Transaction {\n // open transaction\n constructor( public object : CollectionCore,\n public isRoot : boolean,\n public added : Record[],\n public removed : Record[],\n public nested : Transaction[],\n public sorted : boolean ){}\n\n // commit transaction\n commit( initiator? : Transactional ){\n const { nested, object } = this,\n { _isDirty } = object;\n\n // Commit all nested transactions...\n for( let transaction of nested ){\n transaction.commit( object );\n }\n\n if( object._aggregationError ){\n logAggregationError( object, _isDirty );\n }\n\n // Just trigger 'change' on collection, it must be already triggered for models during nested commits.\n // ??? TODO: do it in nested transactions loop? This way appears to be more correct. \n for( let transaction of nested ){\n trigger2( object, 'change', transaction.object, _isDirty );\n }\n\n // Notify listeners on attribute changes...\n const { added, removed } = this;\n\n // Trigger `add` events for both model and collection.\n for( let record of added ){\n trigger3( record, 'add', record, object, _isDirty );\n trigger3( object, 'add', record, object, _isDirty );\n }\n\n // Trigger `remove` events for both model and collection.\n for( let record of removed ){\n trigger3( record, 'remove', record, object, _isDirty );\n trigger3( object, 'remove', record, object, _isDirty );\n }\n\n if( this.sorted ){\n trigger2( object, 'sort', object, _isDirty );\n }\n\n if( added.length || removed.length ){\n trigger2( object, 'update', object, _isDirty );\n }\n\n this.isRoot && commit( object, initiator );\n }\n}\n\nexport function logAggregationError( collection : CollectionCore, options : TransactionOptions ){\n collection._log( 'error', 'Type-R:InvalidOwner', 'added records already have an owner', collection._aggregationError, options.logger );\n collection._aggregationError = void 0;\n}","import { Record } from '../record';\nimport { Transaction, transactionApi } from '../transactions';\nimport { addIndex, CollectionCore, CollectionOptions, CollectionTransaction, convertAndAquire, logAggregationError, sortElements, updateIndex } from './commons';\n\nconst { begin, commit, markAsDirty } = transactionApi;\n\nexport interface AddOptions extends CollectionOptions {\n at? : number \n}\n\n/** @private */\nexport function addTransaction( collection : CollectionCore, items : any[], options : AddOptions, merge? : boolean ){\n const isRoot = begin( collection ),\n nested : Transaction[]= [];\n\n var added = appendElements( collection, items, nested, options, merge );\n\n if( added.length || nested.length ){\n let needSort = sortOrMoveElements( collection, added, options );\n if( markAsDirty( collection, options ) ){\n return new CollectionTransaction( collection, isRoot, added, [], nested, needSort );\n }\n\n if( collection._aggregationError ) logAggregationError( collection, options );\n }\n\n // No changes...\n isRoot && commit( collection );\n};\n\n// Handle sort or insert at options for add operation. Reurns true if sort happened.\n/** @private */ \nfunction sortOrMoveElements( collection : CollectionCore, added : Record[], options : AddOptions ) : boolean {\n let at = options.at;\n\n // if `at` option is given, it overrides sorting option...\n if( at != null ){\n // Take an original collection's length. \n const length = collection.models.length - added.length;\n\n // Crazy Backbone rules about `at` index. I don't know what that guys smoke.\n at = Number( at );\n if( at < 0 ) at += length + 1;\n if( at < 0 ) at = 0;\n if( at > length ) at = length;\n\n // Move added elements to desired position. In place.\n moveElements( collection.models, at, added );\n return false;\n }\n\n return sortElements( collection, options );\n}\n\n/** @private */\nfunction moveElements( source : any[], at : number, added : any[] ) : void {\n for( var j = source.length - 1, i = j - added.length; i >= at; i--, j-- ){\n source[ j ] = source[ i ];\n }\n\n for( i = 0, j = at; i < added.length; i++, j++ ){\n source[ j ] = added[ i ];\n }\n}\n\n// append data to model and index\n/** @private */\nfunction appendElements( collection : CollectionCore, a_items : any[], nested : Transaction[], a_options : AddOptions, forceMerge : boolean ){\n var { _byId, models } = collection,\n merge = ( forceMerge || a_options.merge ) && !collection._shared,\n parse = a_options.parse,\n idAttribute = collection.model.prototype.idAttribute,\n prevLength = models.length;\n\n for( const item of a_items ){\n let model = item ? _byId[ item[ idAttribute ] ] || _byId[ item.cid ] : null;\n\n if( model ){\n if( merge && item !== model ){\n var attrs = item.attributes || item;\n const transaction = model._createTransaction( attrs, a_options );\n transaction && nested.push( transaction );\n\n if( model.hasChanged( idAttribute ) ){\n updateIndex( _byId, model );\n }\n }\n }\n else{\n model = convertAndAquire( collection, item, a_options );\n models.push( model );\n addIndex( _byId, model );\n }\n }\n\n return models.slice( prevLength );\n}\n","/*************\n * Remove items from collections.\n * \n * Cannot be a part of two-phase transaction on object tree.\n * Can be executed in the scope of ad-hoc transaction or from the trigger, though.\n *\n * Implemented with low-level API. \n * Most frequent operation - single element remove. Thus, it have the fast-path.\n */\n\nimport { eventsApi } from '../object-plus';\nimport { Record } from '../record';\nimport { transactionApi, TransactionOptions } from '../transactions';\nimport { CollectionCore, CollectionTransaction, free, removeIndex } from './commons';\n\nconst { trigger2, trigger3 } = eventsApi,\n { markAsDirty, begin, commit } = transactionApi;\n\n/** @private */\nexport function removeOne( collection : CollectionCore, el : Record | {} | string, options : TransactionOptions ) : Record {\n var model : Record = collection.get( el );\n\n if( model ){\n const isRoot = begin( collection ),\n models = collection.models;\n\n // Remove model form the collection. \n models.splice( models.indexOf( model ), 1 );\n removeIndex( collection._byId, model );\n \n // Mark transaction as dirty. \n const notify = markAsDirty( collection, options );\n\n // Send out events.\n if( notify ){\n trigger3( model, 'remove', model, collection, options );\n trigger3( collection, 'remove', model, collection, options );\n } \n\n free( collection, model, options.unset );\n\n notify && trigger2( collection, 'update', collection, options );\n\n // Commit transaction.\n isRoot && commit( collection );\n\n return model;\n }\n};\n\n/** Optimized for removing many elements\n * 1. Remove elements from the index, checking for duplicates\n * 2. Create new models array matching index\n * 3. Send notifications and remove references\n */\n\n/** @private */\nexport function removeMany( collection : CollectionCore, toRemove : any[], options ){\n const removed = _removeFromIndex( collection, toRemove, options.unset );\n if( removed.length ){\n const isRoot = begin( collection );\n\n _reallocate( collection, removed.length );\n\n if( markAsDirty( collection, options ) ){\n const transaction = new CollectionTransaction( collection, isRoot, [], removed, [], false );\n transaction.commit();\n }\n else{\n // Commit transaction.\n isRoot && commit( collection );\n }\n }\n\n return removed;\n};\n\n// remove models from the index...\n/** @private */\nfunction _removeFromIndex( collection, toRemove, unset : boolean ){\n var removed = Array( toRemove.length ),\n _byId = collection._byId;\n\n for( var i = 0, j = 0; i < toRemove.length; i++ ){\n var model = collection.get( toRemove[ i ] );\n if( model ){\n removed[ j++ ] = model;\n removeIndex( _byId, model );\n free( collection, model, unset );\n }\n }\n\n removed.length = j;\n\n return removed;\n}\n\n// Allocate new models array removing models not present in the index.\n/** @private */\nfunction _reallocate( collection, removed ){\n var prev = collection.models,\n models = collection.models = Array( prev.length - removed ),\n _byId = collection._byId;\n\n for( var i = 0, j = 0; i < prev.length; i++ ){\n var model = prev[ i ];\n\n if( _byId[ model.cid ] ){\n models[ j++ ] = model;\n }\n }\n\n models.length = j;\n}","import { Record } from '../record';\nimport { Transaction, transactionApi } from '../transactions';\nimport { addIndex, CollectionCore, CollectionOptions, CollectionTransaction, convertAndAquire, Elements, free, freeAll, IdIndex, logAggregationError, sortElements } from './commons';\n\nconst { begin, commit, markAsDirty } = transactionApi;\n\n/** @private */\nconst silentOptions = { silent : true };\n\n/** @private */\nexport function emptySetTransaction( collection : CollectionCore, items : Elements, options : CollectionOptions, silent? : boolean ){\n const isRoot = begin( collection );\n\n const added = _reallocateEmpty( collection, items, options );\n\n if( added.length ){\n const needSort = sortElements( collection, options );\n\n if( markAsDirty( collection, silent ? silentOptions : options ) ){\n // 'added' is the reference to this.models. Need to copy it.\n return new CollectionTransaction( collection, isRoot, added.slice(), [], [], needSort );\n }\n\n if( collection._aggregationError ) logAggregationError( collection, options );\n }\n\n // No changes...\n isRoot && commit( collection );\n};\n\n/** @private */\nexport function setTransaction( collection, items, options ){\n const isRoot = begin( collection ),\n nested = [];\n\n var previous = collection.models,\n added = _reallocate( collection, items, nested, options );\n\n const reusedCount = collection.models.length - added.length,\n removed = reusedCount < previous.length ? (\n reusedCount ? _garbageCollect( collection, previous ) :\n freeAll( collection, previous )\n ) : []; \n \n const addedOrChanged = nested.length || added.length,\n // As we are reallocating models array, it needs to be sorted even if there are no changes.\n sorted = ( sortElements( collection, options ) && addedOrChanged ) || added.length || options.sorted;\n\n if( addedOrChanged || removed.length || sorted ){\n if( markAsDirty( collection, options ) ){ \n return new CollectionTransaction( collection, isRoot, added, removed, nested, sorted );\n }\n\n if( collection._aggregationError ) logAggregationError( collection, options );\n }\n\n isRoot && commit( collection );\n};\n\n// Remove references to all previous elements, which are not present in collection.\n// Returns an array with removed elements.\n/** @private */\nfunction _garbageCollect( collection : CollectionCore, previous : Record[] ) : Record[]{\n const { _byId } = collection,\n removed = [];\n\n // Filter out removed models and remove them from the index...\n for( let record of previous ){\n if( !_byId[ record.cid ] ){\n removed.push( record );\n free( collection, record );\n }\n }\n\n return removed;\n}\n\n// reallocate model and index\n/** @private */\nfunction _reallocate( collection : CollectionCore, source : any[], nested : Transaction[], options ){\n var models = Array( source.length ),\n _byId : IdIndex = {},\n merge = ( options.merge == null ? true : options.merge ) && !collection._shared,\n _prevById = collection._byId,\n prevModels = collection.models, \n idAttribute = collection.model.prototype.idAttribute,\n toAdd = [],\n orderKept = true;\n\n // for each item in source set...\n for( var i = 0, j = 0; i < source.length; i++ ){\n var item = source[ i ],\n model : Record = null;\n\n if( item ){\n var id = item[ idAttribute ],\n cid = item.cid;\n\n if( _byId[ id ] || _byId[ cid ] ) continue;\n\n model = _prevById[ id ] || _prevById[ cid ];\n }\n\n if( model ){\n if( merge && item !== model ){\n if( orderKept && prevModels[ j ] !== model ) orderKept = false;\n\n var attrs = item.attributes || item;\n const transaction = model._createTransaction( attrs, options );\n transaction && nested.push( transaction );\n }\n }\n else{\n model = convertAndAquire( collection, item, options );\n toAdd.push( model );\n }\n\n models[ j++ ] = model;\n addIndex( _byId, model );\n }\n\n models.length = j;\n collection.models = models;\n collection._byId = _byId;\n\n if( !orderKept ) options.sorted = true;\n\n return toAdd;\n}\n\n/** @private */\nfunction _reallocateEmpty( self, source, options ){\n var len = source ? source.length : 0,\n models = Array( len ),\n _byId : IdIndex = {},\n idAttribute = self.model.prototype.idAttribute;\n\n for( var i = 0, j = 0; i < len; i++ ){\n var src = source[ i ];\n\n if( src && ( _byId[ src[ idAttribute ] ] || _byId[ src.cid ] ) ){\n continue;\n }\n\n var model = convertAndAquire( self, src, options );\n models[ j++ ] = model;\n addIndex( _byId, model );\n }\n\n models.length = j;\n self._byId = _byId;\n\n return self.models = models;\n}","import { IOPromise, startIO } from '../io-tools';\nimport { define, definitions, EventMap, eventsApi, EventsDefinition, Logger, logger, LogLevel, Mixable, MixableConstructor, mixinRules, tools } from '../object-plus';\nimport { AggregatedType, ChainableAttributeSpec, createSharedTypeSpec, Record, SharedType } from '../record';\nimport { CloneOptions, ItemsBehavior, Transactional, TransactionalDefinition, transactionApi, TransactionOptions } from '../transactions';\nimport { AddOptions, addTransaction } from './add';\nimport { CollectionCore, CollectionTransaction, Elements, free, sortElements, updateIndex } from './commons';\nimport { removeMany, removeOne } from './remove';\nimport { emptySetTransaction, setTransaction } from './set';\n\n\nconst { trigger2 } = eventsApi,\n { begin, commit, markAsDirty } = transactionApi,\n { assign, defaults } = tools;\n\nlet _count = 0;\n\nexport type GenericComparator = string | ( ( x : Record ) => number ) | ( ( a : Record, b : Record ) => number ); \n\nexport interface CollectionOptions extends TransactionOptions {\n comparator? : GenericComparator\n model? : typeof Record\n}\n\nexport type Predicate = ( ( val : R, key? : number ) => boolean ) | Partial;\n\nexport interface CollectionDefinition extends TransactionalDefinition {\n model? : typeof Record,\n itemEvents? : EventsDefinition\n _itemEvents? : EventMap\n}\n\nconst slice = Array.prototype.slice;\n\nclass CollectionRefsType extends SharedType {\n static defaultValue = [];\n}\n\nexport interface CollectionConstructor extends MixableConstructor {\n new ( records? : Partial | Partial[], options?: CollectionOptions ) : Collection\n prototype : Collection\n Refs : CollectionConstructor\n subsetOf( C : Collection | string | ( () => Collection ) ) : ChainableAttributeSpec\n};\n\n\n@define({\n // Default client id prefix \n cidPrefix : 'c',\n model : Record,\n _changeEventName : 'changes',\n _aggregationError : null\n})\n@definitions({\n comparator : mixinRules.value,\n model : mixinRules.protoValue,\n itemEvents : mixinRules.merge\n})\nexport class Collection< R extends Record = Record> extends Transactional implements CollectionCore, Iterable {\n _shared : number\n _aggregationError : R[]\n\n static Subset : typeof Collection\n static Refs : typeof Collection\n static _SubsetOf : typeof Collection\n \n createSubset( models : ElementsArg, options ) : Collection{\n const SubsetOf = (this.constructor as CollectionConstructor).subsetOf( this ).options.type as CollectionConstructor,\n subset = new SubsetOf( models, options );\n \n ( subset as any ).resolve( this );\n return subset;\n }\n\n static onExtend( BaseClass : typeof Transactional ){\n // Cached subset collection must not be inherited.\n const Ctor = this;\n this._SubsetOf = null;\n\n function RefsCollection( a, b, listen? ){\n Ctor.call( this, a, b, ItemsBehavior.share | ( listen ? ItemsBehavior.listen : 0 ) );\n }\n\n Mixable.mixins.populate( RefsCollection );\n \n RefsCollection.prototype = this.prototype;\n RefsCollection._metatype = CollectionRefsType;\n\n this.Refs = this.Subset = RefsCollection;\n\n Transactional.onExtend.call( this, BaseClass );\n createSharedTypeSpec( this, SharedType );\n }\n \n static onDefine( definition : CollectionDefinition, BaseClass : any ){\n if( definition.itemEvents ){\n const eventsMap = new EventMap( BaseClass.prototype._itemEvents );\n eventsMap.addEventsMap( definition.itemEvents );\n this.prototype._itemEvents = eventsMap;\n }\n\n if( definition.comparator !== void 0 ) this.prototype.comparator = definition.comparator;\n\n Transactional.onDefine.call( this, definition );\n }\n\n static subsetOf : ( collectionReference : any ) => any;\n \n _itemEvents : EventMap\n\n /***********************************\n * Core Members\n */\n // Array of the records\n models : R[]\n\n // Polymorphic accessor for aggregated attribute's canBeUpdated().\n get __inner_state__(){ return this.models; }\n\n // Index by id and cid\n _byId : { [ id : string ] : R }\n\n set comparator( x : GenericComparator ){\n\n switch( typeof x ){\n case 'string' :\n this._comparator = ( a, b ) => {\n const aa = a[ x ], bb = b[ x ];\n if( aa === bb ) return 0;\n return aa < bb ? -1 : + 1;\n } \n break;\n case 'function' :\n if( x.length === 1 ){\n this._comparator = ( a, b ) => {\n const aa = (x).call( this, a ), bb = (x).call( this, b );\n if( aa === bb ) return 0;\n return aa < bb ? -1 : + 1;\n }\n }\n else{\n this._comparator = ( a, b ) => (x).call( this, a, b );\n }\n break;\n \n default :\n this._comparator = null;\n }\n }\n \n // TODO: Improve typing\n getStore() : Transactional {\n return this._store || ( this._store = this._owner ? this._owner.getStore() : this._defaultStore );\n }\n\n _store : Transactional\n\n get comparator(){ return this._comparator; }\n _comparator : ( a : R, b : R ) => number\n\n _onChildrenChange( record : R, options : TransactionOptions = {}, initiator? : Transactional ){\n // Ignore updates from nested transactions.\n if( initiator === this ) return;\n\n const { idAttribute } = this;\n\n if( record.hasChanged( idAttribute ) ){\n updateIndex( this._byId, record );\n }\n\n const isRoot = begin( this );\n\n if( markAsDirty( this, options ) ){\n // Forward change event from the record.\n trigger2( this, 'change', record, options )\n }\n\n isRoot && commit( this );\n }\n\n get( objOrId : string | { id? : string, cid? : string } ) : R {\n if( objOrId == null ) return;\n\n if( typeof objOrId === 'object' ){\n const id = objOrId[ this.idAttribute ];\n return ( id !== void 0 && this._byId[ id ] ) || this._byId[ objOrId.cid ];\n }\n else{\n return this._byId[ objOrId ];\n } \n }\n\n each( iteratee : ( val : R, key? : number ) => void, context? : any ) : void {\n this.models.forEach( iteratee, context );\n }\n\n // Loop through the members in the scope of transaction.\n // Transactional version of each()\n updateEach( iteratee : ( val : R, key? : number ) => void ){\n const isRoot = transactionApi.begin( this );\n this.models.forEach( iteratee );\n isRoot && transactionApi.commit( this );\n }\n\n _validateNested( errors : {} ) : number {\n // Don't validate if not aggregated.\n if( this._shared ) return 0;\n\n let count = 0;\n\n this.each( record => {\n const error = record.validationError;\n if( error ){\n errors[ record.cid ] = error;\n count++;\n }\n });\n\n return count;\n }\n\n model : typeof Record\n\n // idAttribute extracted from the model type.\n idAttribute : string\n\n constructor( records? : ElementsArg, options : CollectionOptions = {}, shared? : number ){\n super( _count++ );\n this.models = [];\n this._byId = {};\n \n this.comparator = this.comparator;\n\n if( options.comparator !== void 0 ){\n this.comparator = options.comparator;\n options.comparator = void 0;\n }\n \n this.model = this.model;\n \n if( options.model ){\n this.model = options.model;\n options.model = void 0;\n }\n\n this.idAttribute = this.model.prototype.idAttribute; //TODO: Remove?\n\n this._shared = shared || 0;\n\n if( records ){\n const elements = toElements( this, records, options );\n emptySetTransaction( this, elements, options, true );\n }\n\n this.initialize.apply( this, arguments );\n\n if( this._localEvents ) this._localEvents.subscribe( this, this );\n }\n\n initialize(){}\n\n first() : R { return this.models[ 0 ]; }\n last() : R { return this.models[ this.models.length - 1 ]; }\n at( a_index : number ) : R {\n const index = a_index < 0 ? a_index + this.models.length : a_index; \n return this.models[ index ];\n }\n\n // Deeply clone collection, optionally setting new owner.\n clone( options : CloneOptions = {} ) : this {\n const models = this._shared & ItemsBehavior.share ? this.models : this.map( model => model.clone() ),\n copy : this = new (this.constructor)( models, { model : this.model, comparator : this.comparator }, this._shared );\n \n if( options.pinStore ) copy._defaultStore = this.getStore();\n \n return copy;\n }\n\n toJSON( options? : object ) : any {\n return this.models.map( model => model.toJSON( options ) );\n }\n\n // Apply bulk in-place object update in scope of ad-hoc transaction \n set( elements : ElementsArg = [], options : TransactionOptions = {} ) : this {\n if( (options).add !== void 0 ){\n this._log( 'warn', \"Type-R:InvalidOption\", \"Collection.set doesn't support 'add' option, behaving as if options.add === true.\", options );\n }\n\n // Handle reset option here - no way it will be populated from the top as nested transaction.\n if( options.reset ){\n this.reset( elements, options )\n }\n else{\n const transaction = this._createTransaction( elements, options );\n transaction && transaction.commit();\n } \n\n return this; \n }\n\n /**\n * Enable or disable live updates.\n * \n * `true` enables full collection synchronization.\n * `false` cancel live updates.\n * `json => true | false` - filter updates\n */\n liveUpdates( enabled : LiveUpdatesOption ) : IOPromise {\n if( enabled ){\n this.liveUpdates( false );\n\n const filter = typeof enabled === 'function' ? enabled : () => true;\n\n this._liveUpdates = {\n updated : json => {\n filter( json ) && this.add( json, { parse : true, merge : true } );\n },\n\n removed : id => this.remove( id )\n };\n\n return this.getEndpoint().subscribe( this._liveUpdates, this ).then( () => this );\n }\n else{\n if( this._liveUpdates ){\n this.getEndpoint().unsubscribe( this._liveUpdates, this );\n this._liveUpdates = null;\n }\n\n // TODO: Return the resolved promise.\n }\n }\n\n _liveUpdates : object\n\n fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise {\n const options = { parse : true, ...a_options },\n endpoint = this.getEndpoint();\n\n return startIO(\n this,\n endpoint.list( options, this ),\n options,\n\n json => {\n let result : any = this.set( json, { parse : true, ...options } as TransactionOptions );\n \n if( options.liveUpdates ){\n result = this.liveUpdates( options.liveUpdates );\n }\n\n return result;\n }\n );\n }\n\n dispose() : void {\n if( this._disposed ) return;\n\n const aggregated = !this._shared;\n\n for( let record of this.models ){\n free( this, record );\n\n if( aggregated ) record.dispose();\n }\n\n this.liveUpdates( false );\n\n super.dispose();\n }\n\n reset( a_elements? : ElementsArg, options : TransactionOptions = {} ) : R[] {\n const isRoot = begin( this ),\n previousModels = this.models;\n\n // Make all changes required, but be silent.\n if( a_elements ){ \n emptySetTransaction( this, toElements( this, a_elements, options ), options, true );\n }\n else{\n this._byId = {};\n this.models = [];\n }\n\n markAsDirty( this, options );\n\n options.silent || trigger2( this, 'reset', this, defaults( { previousModels : previousModels }, options ) );\n\n // Dispose models which are not in the updated collection.\n const { _byId } = this;\n \n for( let toDispose of previousModels ){\n _byId[ toDispose.cid ] || free( this, toDispose );\n }\n\n isRoot && commit( this );\n return this.models;\n }\n\n // Add elements to collection.\n add( a_elements : ElementsArg , options : AddOptions = {} ){\n const elements = toElements( this, a_elements, options ),\n transaction = this.models.length ?\n addTransaction( this, elements, options ) :\n emptySetTransaction( this, elements, options );\n\n if( transaction ){\n transaction.commit();\n return transaction.added;\n }\n }\n\n // Remove elements. \n remove( recordsOrIds : any, options : CollectionOptions = {} ) : R[] | R {\n if( recordsOrIds ){\n return Array.isArray( recordsOrIds ) ?\n removeMany( this, recordsOrIds, options ) as R[]:\n removeOne( this, recordsOrIds, options ) as R;\n }\n\n return [];\n }\n\n // Apply bulk object update without any notifications, and return open transaction.\n // Used internally to implement two-phase commit. \n _createTransaction( a_elements : ElementsArg, options : TransactionOptions = {} ) : CollectionTransaction | void {\n const elements = toElements( this, a_elements, options );\n\n if( this.models.length ){\n return options.remove === false ?\n addTransaction( this, elements, options, true ) :\n setTransaction( this, elements, options );\n }\n else{\n return emptySetTransaction( this, elements, options );\n }\n }\n\n static _metatype = AggregatedType;\n\n /***********************************\n * Collection manipulation methods\n */\n\n pluck( key : K ) : R[K][] {\n return this.models.map( model => model[ key ] );\n }\n\n sort( options : TransactionOptions = {} ) : this {\n if( sortElements( this, options ) ){\n const isRoot = begin( this );\n \n if( markAsDirty( this, options ) ){\n trigger2( this, 'sort', this, options );\n }\n\n isRoot && commit( this );\n }\n\n return this;\n }\n\n // Remove and return given model.\n unset( modelOrId : R | string, options? ) : R {\n const value = this.get( modelOrId );\n this.remove( modelOrId, { unset : true, ...options } );\n return value;\n }\n\n modelId( attrs : {} ) : any {\n return attrs[ this.model.prototype.idAttribute ];\n }\n\n // Toggle model in collection.\n toggle( model : R, a_next? : boolean ) : boolean {\n var prev = Boolean( this.get( model ) ),\n next = a_next === void 0 ? !prev : Boolean( a_next );\n\n if( prev !== next ){\n if( prev ){\n this.remove( model );\n }\n else{\n this.add( model );\n }\n }\n\n return next;\n }\n\n _log( level : LogLevel, topic : string, text : string, value : object, a_logger? : Logger ) : void {\n ( a_logger || logger ).trigger( level, topic, `${ this.model.prototype.getClassName() }.${ this.getClassName() }: ` + text, {\n Argument : value,\n 'Attributes spec' : this.model.prototype._attributes\n });\n }\n\n getClassName() : string {\n return super.getClassName() || 'Collection';\n }\n\n /***********************************\n * Proxied Array methods\n */\n\n get length() : number { return this.models.length; }\n\n // Add a model to the end of the collection.\n push(model : ElementsArg, options? : CollectionOptions ) {\n return this.add(model, assign({at: this.length}, options));\n }\n\n // Remove a model from the end of the collection.\n pop( options? : CollectionOptions ) : R {\n var model = this.at(this.length - 1);\n this.remove(model, { unset : true, ...options });\n return model;\n }\n\n // Add a model to the beginning of the collection.\n unshift(model : ElementsArg, options? : CollectionOptions ) {\n return this.add(model, assign({at: 0}, options));\n }\n \n // Remove a model from the beginning of the collection.\n shift( options? : CollectionOptions ) : R {\n const model = this.at(0);\n this.remove( model, { unset : true, ...options } );\n return model;\n }\n\n // Slice out a sub-array of models from the collection.\n slice( begin? : number, end? : number ) : R[] {\n return this.models.slice( begin, end );\n }\n \n indexOf( modelOrId : string | Partial ) : number {\n return this.models.indexOf( this.get( modelOrId ) );\n }\n\n filter( iteratee : Predicate, context? : any ) : R[] {\n return this.models.filter( toPredicateFunction( iteratee ), context );\n }\n\n find( iteratee : Predicate, context? : any ) : R {\n return this.models.find( toPredicateFunction( iteratee ), context );\n }\n\n some( iteratee : Predicate, context? : any ) : boolean {\n return this.models.some( toPredicateFunction( iteratee ), context );\n }\n\n forEach( iteratee : ( val : R, key? : number ) => void, context? : any ) : void {\n this.models.forEach( iteratee, context );\n }\n \n [ Symbol.iterator ]() : IterableIterator {\n return this.models[ Symbol.iterator ]();\n }\n\n values() : IterableIterator {\n return this.models.values();\n }\n\n entries() : IterableIterator<[ number, R ]>{\n return this.models.entries();\n }\n\n every( iteratee : Predicate, context? : any ) : boolean {\n return this.models.every( toPredicateFunction( iteratee ), context );\n }\n\n includes( idOrObj : string | Partial ){\n return Boolean( this.get( idOrObj ) );\n }\n\n // Map members to an array\n map( iteratee : ( val : R, key? : number ) => T, context? : any ) : T[]{\n return this.models.map( iteratee, context );\n }\n\n reduce( iteratee : (previousValue: R, currentValue: R, currentIndex?: number ) => R ) : R\n reduce( iteratee : (previousValue: T, currentValue: R, currentIndex?: number ) => T, init? : any ) : T\n reduce( iteratee : (previousValue: any, currentValue: any, currentIndex?: number ) => any, init? : any ) : T | R {\n return init === void 0 ? this.models.reduce( iteratee ) : this.models.reduce( iteratee, init );\n }\n}\n\nconst d : CollectionConstructor = Collection;\n\n\nexport type LiveUpdatesOption = boolean | ( ( x : any ) => boolean );\n\nexport type ElementsArg = Partial | Partial[]\n\n// TODO: make is safe for parse to return null (?)\nfunction toElements( collection : Collection, elements : ElementsArg, options : CollectionOptions ) : Elements {\n const parsed = options.parse ? collection.parse( elements, options ) : elements; \n return Array.isArray( parsed ) ? parsed : [ parsed ];\n}\n\ncreateSharedTypeSpec( Collection, SharedType );\n\nRecord.Collection = Collection;\n\nfunction toPredicateFunction( iteratee : Predicate ){\n switch( typeof iteratee ){\n case 'function' : return iteratee;\n case 'object' :\n const keys = Object.keys( iteratee );\n \n return x => {\n for( let key of keys ){\n if( iteratee[ key ] !== x[ key ] )\n return false;\n }\n\n return true;\n }\n default : throw new Error( 'Invalid iteratee' );\n }\n}","import { Collection } from '../collection';\nimport { Record } from '../record';\nimport { CompiledReference } from '../traversable';\n\nexport type CollectionReference = ( () => Collection ) | Collection | string; \n\n/** @private */\nexport function parseReference( collectionRef : CollectionReference ) : ( root : Record ) => Collection {\n switch( typeof collectionRef ){\n case 'function' :\n return root => (collectionRef).call( root );\n case 'object' :\n return () => collectionRef;\n case 'string' :\n const { resolve } = new CompiledReference( collectionRef );\n return resolve;\n }\n}","import { AnyType, ChainableAttributeSpec, Record } from '../record';\nimport { CollectionReference, parseReference } from './commons';\n\n\n/********\n * Reference to model by id.\n * \n * Untyped attribute. Holds model id, when unresolved. When resolved, is substituted\n * with a real model.\n * \n * No model changes are detected and counted as owner's change. That's intentional.\n */\n\n/** @private */\ntype RecordRefValue = Record | string;\n\n/** @private */\nclass RecordRefType extends AnyType {\n // It is always serialized as an id, whenever it's resolved or not. \n toJSON( value : RecordRefValue ){\n return value && typeof value === 'object' ? value.id : value;\n }\n\n // Wne \n clone( value : RecordRefValue ){\n return value && typeof value === 'object' ? value.id : value;\n }\n\n // Model refs by id are equal when their ids are equal.\n isChanged( a : RecordRefValue, b : RecordRefValue){\n var aId = a && ( (a).id == null ? a : (a).id ),\n bId = b && ( (b).id == null ? b : (b).id );\n\n return aId !== bId;\n }\n\n // Refs are always valid.\n validate( model, value, name ){}\n}\n\nexport function from( path : string, T = Record ){\n return T.from( path );\n}\n\nRecord.from = function from( masterCollection : CollectionReference ) : ChainableAttributeSpec {\n const getMasterCollection = parseReference( masterCollection );\n\n const typeSpec = new ChainableAttributeSpec({\n value : null,\n _metatype : RecordRefType\n });\n \n return typeSpec\n .get( function( objOrId : RecordRefValue, name : string ) : Record {\n if( typeof objOrId === 'object' ) return objOrId;\n\n // So, we're dealing with an id reference. Resolve it.\n const collection = getMasterCollection( this );\n let record : Record = null;\n\n // If master collection exists and is not empty...\n if( collection && collection.length ){\n // Silently update attribute with record from this collection.\n record = collection.get( objOrId ) || null;\n this.attributes[ name ] = record;\n\n // Subscribe for events manually. delegateEvents won't be invoked.\n record && this._attributes[ name ].handleChange( record, null, this, {} );\n }\n\n return record;\n });\n};","import { Collection } from '../collection';\nimport { define, tools } from '../object-plus';\nimport { AggregatedType, ChainableAttributeSpec, Record } from '../record';\nimport { ItemsBehavior, transactionApi } from '../transactions';\nimport { CollectionReference, parseReference } from './commons';\n\ntype RecordsIds = ( string | number )[];\n\nCollection.subsetOf = function subsetOf( masterCollection : CollectionReference ) : ChainableAttributeSpec {\n const SubsetOf = this._SubsetOf || ( this._SubsetOf = defineSubsetCollection( this ) ),\n getMasterCollection = parseReference( masterCollection ),\n typeSpec = new ChainableAttributeSpec({\n type : SubsetOf\n });\n\n return typeSpec.get(\n function( refs ){\n !refs || refs.resolvedWith || refs.resolve( getMasterCollection( this ) );\n return refs;\n }\n );\n};\n\nexport function subsetOf( path : string, T = Collection ){\n return T.subsetOf( path );\n}\n\nconst subsetOfBehavior = ItemsBehavior.share | ItemsBehavior.persistent;\n\nfunction defineSubsetCollection( CollectionConstructor : typeof Collection ) {\n @define class SubsetOfCollection extends CollectionConstructor {\n refs : any[];\n resolvedWith : Collection = null;\n\n _metatype : AggregatedType\n\n get __inner_state__(){ return this.refs || this.models; }\n\n constructor( recordsOrIds?, options? ){\n super( [], options, subsetOfBehavior );\n this.refs = toArray( recordsOrIds );\n }\n\n // Remove should work fine as it already accepts ids. Add won't...\n add( a_elements, options = {} ){\n const { resolvedWith } = this,\n toAdd = toArray( a_elements );\n \n if( resolvedWith ){\n // If the collection is resolved already, everything is simple.\n return super.add( resolveRefs( resolvedWith, toAdd ), options );\n }\n else{\n // Collection is not resolved yet. So, we prepare the delayed computation.\n if( toAdd.length ){\n const isRoot = transactionApi.begin( this );\n\n // Save elements to resolve in future...\n this.refs = this.refs ? this.refs.concat( toAdd ) : toAdd.slice();\n\n transactionApi.markAsDirty( this, options );\n\n // And throw the 'changes' event.\n isRoot && transactionApi.commit( this );\n }\n }\n }\n\n reset( a_elements?, options = {} ){\n const { resolvedWith } = this,\n elements = toArray( a_elements );\n \n return resolvedWith ?\n // Collection is resolved, so parse ids and forward the call to set.\n super.reset( resolveRefs( resolvedWith, elements ), options ) :\n // Collection is not resolved yet. So, we prepare the delayed computation.\n delaySet( this, elements, options ) as any || [];\n }\n\n _createTransaction( a_elements, options? ){\n const { resolvedWith } = this,\n elements = toArray( a_elements );\n \n return resolvedWith ?\n // Collection is resolved, so parse ids and forward the call to set.\n super._createTransaction( resolveRefs( resolvedWith, elements ), options ) :\n // Collection is not resolved yet. So, we prepare the delayed computation.\n delaySet( this, elements, options );\n }\n\n // Serialized as an array of model ids.\n toJSON() : RecordsIds {\n return this.refs ?\n this.refs.map( objOrId => objOrId.id || objOrId ) :\n this.models.map( model => model.id );\n }\n\n // Subset is always valid.\n _validateNested(){ return 0; }\n\n get length() : number {\n return this.models.length || ( this.refs ? this.refs.length : 0 );\n }\n\n // Must be shallow copied on clone.\n clone( owner? ){\n var Ctor = (this).constructor,\n copy = new Ctor( [], {\n model : this.model,\n comparator : this.comparator\n });\n\n if( this.resolvedWith ){\n // TODO: bug here. \n copy.resolvedWith = this.resolvedWith;\n copy.refs = null;\n copy.reset( this.models, { silent : true } );\n }\n else{\n copy.refs = this.refs.slice();\n }\n\n return copy;\n }\n\n // Clean up the custom parse method possibly defined in the base class.\n parse( raw : any ) : Record[] {\n return raw;\n }\n\n resolve( collection : Collection ) : this {\n if( collection && collection.length ){\n this.resolvedWith = collection;\n\n if( this.refs ){\n this.reset( this.refs, { silent : true } );\n this.refs = null;\n }\n }\n\n return this;\n }\n\n getModelIds() : RecordsIds { return this.toJSON(); }\n\n toggle( modelOrId : any, val : boolean ) : boolean {\n return super.toggle( this.resolvedWith.get( modelOrId ), val );\n }\n\n addAll() : Record[] {\n if( this.resolvedWith ){\n this.set( this.resolvedWith.models );\n return this.models;\n }\n\n throw new Error( \"Cannot add elemens because the subset collection is not resolved yet.\" );\n }\n\n toggleAll() : Record[] {\n return this.length ? this.reset() : this.addAll();\n }\n }\n\n // Clean up all custom item events to prevent memory leaks.\n SubsetOfCollection.prototype._itemEvents = void 0;\n\n return SubsetOfCollection;\n}\n\nfunction resolveRefs( master, elements ){\n const records = [];\n \n for( let el of elements ){\n const record = master.get( el );\n if( record ) records.push( record );\n }\n\n return records;\n}\n\nfunction delaySet( collection, elements, options ) : void {\n if( tools.notEqual( collection.refs, elements ) ){\n const isRoot = transactionApi.begin( collection );\n\n // Save elements to resolve in future...\n collection.refs = elements.slice();\n\n transactionApi.markAsDirty( collection, options );\n \n // And throw the 'changes' event.\n isRoot && transactionApi.commit( collection );\n }\n}\n\nfunction toArray( elements ){\n return elements ? ( \n Array.isArray( elements ) ? elements : [ elements ]\n ) : [];\n}","import { Record } from '../record';\nimport { Transactional } from '../transactions';\n\nlet _store : Store = null;\n\nexport class Store extends Record {\n getStore() : Store { return this; }\n \n // delegate item lookup to owner, and to the global store if undefined\n get( name : string ) : any {\n // Lookup for resource in the current store. \n let local = this[ name ];\n\n // If something is found or it's the global store, return result.\n if( local || this === this._defaultStore ) return local;\n\n // Forward failed lookup to owner or global store.\n return this._owner ? this._owner.get( name ) : this._defaultStore.get( name ); \n }\n\n static get global(){ return _store; }\n static set global( store : Store ){\n if( _store ){\n _store.dispose();\n }\n\n Transactional.prototype._defaultStore = _store = store;\n }\n}\n\nStore.global = new Store();","// Dummy polyfill to prevent exception in IE.\nif( typeof Symbol === 'undefined' ){\n Object.defineProperty( window, 'Symbol', { value : { iterator : 'Symbol.iterator' }, configurable : true });\n}\n\nimport { define, Events, Mixable as Class } from './object-plus/';\n// Define synonims for NestedTypes backward compatibility.\nimport { ChainableAttributeSpec, Record as Model } from './record';\n\n/**\n * Export everything \n */\nexport * from './collection';\nexport * from './io-tools';\nexport * from './object-plus';\nexport * from './record';\nexport * from './relations';\nexport * from './transactions';\nexport { Model, Class };\n\n\nexport const { on, off, trigger, once, listenTo, stopListening, listenToOnce } = Events;\n\n\n\nexport function attributes( attrDefs ) : typeof Model {\n @define class DefaultRecord extends Model {\n static attributes = attrDefs;\n }\n\n return DefaultRecord;\n}\n\n\n/** Typeless attribute declaration with default value. */ \nexport function value( x : any ) : ChainableAttributeSpec {\n return new ChainableAttributeSpec({ value : x });\n}\n\n/** Wrap model or collection method in transaction. */\nexport function transaction< F extends Function >( method : F ) : F {\n return function( ...args ){\n let result;\n \n this.transaction( () => {\n result = method.apply( this, args );\n });\n \n return result;\n }\n}","/*******\n * Backbone Backward compatibility shim for View, Router, and History.\n * Based on 1.2.3, converted to browser-only ES6 modules thing. \n */\n\n// Backbone.js 1.2.3\n// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\nimport * as jQuery from 'jquery';\nimport * as _ from 'underscore';\n\n// Initial Setup\n// -------------\ndeclare global {\n interface Window {\n Backbone : any\n }\n\n function attachEvent( a, b );\n function detachEvent( a, b );\n}\n\n// Save the previous value of the `Backbone` variable, so that it can be\n// restored later on, if `noConflict` is used.\nconst previousBackbone = window.Backbone;\n\n// Create a local reference to a common array method we'll want to use later.\nconst slice = Array.prototype.slice;\n\n// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n// the `$` variable.\nconst exported = {\n $ : jQuery,\n history : null,\n VERSION : '1.2.3',\n View, History, Router, noConflict\n}\n\nexport default exported;\n\n// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n// to its previous owner. Returns a reference to this Backbone object.\nfunction noConflict() {\n window.Backbone = previousBackbone;\n return this;\n};\n\n// Backbone.View\n// -------------\n\n// Backbone Views are almost more convention than they are actual code. A View\n// is simply a JavaScript object that represents a logical chunk of UI in the\n// DOM. This might be a single item, an entire list, a sidebar or panel, or\n// even the surrounding frame which wraps your whole app. Defining a chunk of\n// UI as a **View** allows you to define your DOM events declaratively, without\n// having to worry about render order ... and makes it easy for the view to\n// react to specific changes in the state of your models.\n\n// Creating a Backbone.View creates its initial element outside of the DOM,\n// if an existing element is not provided...\nexport function View(options) {\n this.cid = _.uniqueId('view');\n options || (options = {});\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n this.delegateEvents();\n};\n\n// Cached regex to split keys for `delegate`.\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n// List of view options to be merged as properties.\nvar viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n// Set up all inheritable **Backbone.View** properties and methods.\n_.extend(View.prototype, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function (selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function () {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function () {\n this.$el.remove();\n this.stopListening();\n return this;\n },\n\n // Change the view's element (`this.el` property), including event\n // re-delegation.\n setElement: function (element, delegate) {\n if (this.$el) this.undelegateEvents();\n this.$el = element instanceof exported.$ ? element : exported.$(element);\n this.el = this.$el[0];\n if (delegate !== false) this.delegateEvents();\n return this;\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n // This only works for delegate-able events: not `focus`, `blur`, and\n // not `change`, `submit`, and `reset` in Internet Explorer.\n delegateEvents: function (events) {\n if (!(events || (events = _.result(this, 'events')))) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[events[key]];\n if (!method) continue;\n\n var match = key.match(delegateEventSplitter);\n var eventName = match[1], selector = match[2];\n method = _.bind(method, this);\n eventName += '.delegateEvents' + this.cid;\n if (selector === '') {\n this.$el.on(eventName, method);\n } else {\n this.$el.on(eventName, selector, method);\n }\n }\n return this;\n },\n\n // Clears all callbacks previously bound to the view with `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function () {\n this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n var $el = exported.$('<' + _.result(this, 'tagName') + '>').attr(attrs);\n this.setElement($el, false);\n } else {\n this.setElement(_.result(this, 'el'), false);\n }\n }\n\n});\n\n// Backbone.Router\n// ---------------\n\n// Routers map faux-URLs to actions, and fire events when routes are\n// matched. Creating a new one sets its `routes` hash, if not set statically.\nexport function Router(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n}\n\n// Cached regular expressions for matching named param parts and splatted\n// parts of route strings.\nvar optionalParam = /\\((.*?)\\)/g;\nvar namedParam = /(\\(\\?)?:\\w+/g;\nvar splatParam = /\\*\\w+/g;\nvar escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n// Set up all inheritable **Backbone.Router** properties and methods.\n_.extend(Router.prototype, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function (route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n exported.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n exported.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function (callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function (fragment, options) {\n exported.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function () {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n});\n\n// Backbone.History\n// ----------------\n\n// Handles cross-browser history management, based on either\n// [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n// [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n// and URL fragments. If the browser supports neither (old IE, natch),\n// falls back to polling.\nexport function History() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n};\n\n// Cached regex for stripping a leading hash/slash and trailing space.\nvar routeStripper = /^[#\\/]|\\s+$/g;\n\n// Cached regex for stripping leading and trailing slashes.\nvar rootStripper = /^\\/+|\\/+$/g;\n\n// Cached regex for stripping urls of hash.\nvar pathStripper = /#.*$/;\n\n// Has the history handling already been started?\n(History as any).started = false;\n\n// Set up all inheritable **Backbone.History** properties and methods.\n_.extend(History.prototype, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var root = path.slice(0, this.root.length - 1) + '/';\n return root === this.root;\n },\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function () {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function (options) {\n if ((History as any).started) throw new Error('Backbone.history has already been started');\n (History as any).started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({ root: '/' }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && ((document as any).documentMode === void 0 || (document as any).documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n\n\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var root = this.root.slice(0, -1) || '/';\n this.location.replace(root + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), { replace: true });\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function () {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n (History as any).started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function (route, callback) {\n this.handlers.unshift({ route: route, callback: callback });\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function (e) {\n var current = this.getFragment();\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function (fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function (fragment, options) {\n if (!(History as any).started) return false;\n if (!options || options === true) options = { trigger: !!options };\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var root = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n root = root.slice(0, -1) || '/';\n }\n var url = root + fragment;\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {\n var iWindow = this.iframe.contentWindow;\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n});\n\n// Create the default Backbone.history.\nexported.history = new History;\n\n","/**\n * Backbone.js 1.2.3 REST implementation\n * (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Backbone may be freely distributed under the MIT license.\n *\n * With validation patches - NestedTypes validation semantic is applied. (c) Vlad Balin, 2015.\n */\nimport * as _ from 'underscore';\nimport Backbone from './backbone';\n\nexport type LazyValue< T > = () => T | T;\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport type Method = 'create' | 'update' | 'patch' | 'delete' | 'read' \n\nexport interface Restful {\n trigger( event : string, model, xhr, options )\n collection? : { trigger( event : string, model, xhr, options ) }\n toJSON( options : any ) : {}\n _xhr : JQueryXHR\n sync( method : string, object : Restful, options : SyncOptions )\n}\n\nexport interface SyncOptions {\n url? : LazyValue< string >\n data? : any\n attrs? : {}\n beforeSend? : ( xhr ) => any\n\n success? : ( resp : any ) => void\n error? : ( xhr?, textStatus?, errorThrown? ) => void\n\n textStatus? : string\n errorThrown? : any\n xhr? : any\n context? : {}\n}\n\nconst methodMap = {\n 'create' : 'POST',\n 'update' : 'PUT',\n 'patch' : 'PATCH',\n 'delete' : 'DELETE',\n 'read' : 'GET'\n};\n\nconst exported = {\n $ : Backbone.$,\n \n errorPromise : error => {\n var x = $.Deferred();\n x.reject( error );\n return x;\n },\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n ajax : function( options : {} ){\n return $.ajax.apply( $, arguments );\n },\n\n sync,\n\n // Throw an error when a URL is needed, and none is supplied.\n urlError : function(){\n throw new Error( 'A \"url\" property or function must be specified' );\n }\n};\n\nexport default exported;\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n\nfunction sync( method : Method, model : Restful, options : SyncOptions = {} ) : JQueryXHR{\n var type = methodMap[ method ];\n\n // Default JSON-request options.\n var params : any = { type : type, dataType : 'json' };\n\n // Ensure that we have a URL.\n if( !options.url ){\n params.url = _.result( model, 'url' ) || exported.urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if( options.data == null && model && (method === 'create' || method === 'update' || method === 'patch') ){\n params.contentType = 'application/json';\n params.data = JSON.stringify( options.attrs || model.toJSON( options ) );\n }\n\n // Don't process data on a non-GET request.\n if( params.type !== 'GET' ){\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function( xhr, textStatus, errorThrown ){\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if( error ) error.call( options.context, xhr, textStatus, errorThrown );\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = exported.ajax( _.extend( params, options ) );\n model.trigger( 'request', model, xhr, options );\n model.collection && model.collection.trigger( 'request', model, xhr, options );\n return xhr;\n}","import { Collection, define, definitions, mixinRules, Model, tools } from 'type-r';\nimport * as _ from 'underscore';\nimport Sync, { Restful, SyncOptions } from './sync';\n\nconst { defaults } = tools;\n\nexport interface RestOptions extends SyncOptions {\n wait? : boolean\n patch? : boolean\n reset? : boolean\n validate? : boolean\n}\n\n@define({\n itemEvents : {\n destroy( model ){ this.remove( model ); }\n } \n})\nexport class RestCollection extends Collection implements Restful {\n _xhr : JQueryXHR\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n model : typeof RestModel\n url() : string { return this.model.prototype.urlRoot || ''; }\n\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n this.trigger( 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch( options : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var success = options.success;\n var collection = this;\n options.success = function( resp ){\n var method = options.reset ? 'reset' : 'set';\n collection[ method ]( resp, options );\n if( collection._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, collection, resp, options );\n collection.trigger( 'sync', collection, resp, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n create( a_model, options : any = {} ) : RestModel {\n const model : RestModel = a_model instanceof RestModel ?\n a_model :\n this.model.create( a_model, options );\n\n // Hack! For the situation when model instance is given, aquire it. \n model._owner || ( model._owner = this );\n\n options.wait || this.add([ model ], options );\n\n var collection = this;\n var success = options.success;\n options.success = ( model, resp, callbackOpts ) =>{\n if( options.wait ) this.add( [ model ], defaults({ parse : false }, callbackOpts ) );\n if( success ) success.call( callbackOpts.context, model, resp, callbackOpts );\n };\n\n model.save( null, options );\n return model;\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync(){\n return Sync.sync.apply( this, arguments );\n }\n};\n\nconst modelProto = Model.prototype;\n\n@define({\n urlRoot : ''\n})\n@definitions({\n urlRoot : mixinRules.protoValue\n})\nexport class RestModel extends Model implements Restful {\n static Collection : typeof Collection = RestCollection as any;\n \n _xhr : JQueryXHR\n\n urlRoot : string\n\n /** @private */\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n triggerAndBubble( this, 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch( options? : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var model = this;\n var success = options.success;\n options.success = function( serverAttrs ){\n model.set( serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync( method : string, self : this, options : SyncOptions ) : any\n sync() : JQueryXHR {\n return Sync.sync.apply( this, arguments );\n }\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save( attrs? : {}, options? : RestOptions ) : any\n save( key : string, value : any, options? : RestOptions ) : any\n save( key, val, a_options? : RestOptions ) : any {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n let attrs, originalOptions;\n\n if( key == null || typeof key === 'object' ){\n attrs = key;\n originalOptions = val || {};\n }\n else{\n (attrs = {})[ key ] = val;\n originalOptions = a_options || {};\n }\n\n const options = _.extend( { validate : true, parse : true }, originalOptions ),\n wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if( attrs && !wait ){\n this.set( attrs, originalOptions );\n }\n\n if( this._invalidate( options ) ){\n if( attrs && wait ) this.set( attrs, originalOptions );\n return Sync.errorPromise( this.validationError );\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = serverAttrs => {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n if( wait ) serverAttrs = _.extend( {}, attrs, serverAttrs );\n\n if( serverAttrs ){\n // When server sends string, polimorphyc Model set screws up.\n modelProto.set.call( this, serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n }\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if( attrs && wait ) this.attributes = _.extend( {}, attributes, attrs );\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if( method === 'patch' && !options.attrs ) options.attrs = attrs;\n var xhr = _sync( method, this, options );\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n }\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy( options : RestOptions ) : any {\n options = options ? _.clone( options ) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function(){\n model.stopListening(); // TBD: figure out whenever we need to dispose the model.\n model.trigger( 'destroy', model, model.collection, options );\n };\n\n options.success = function( resp ){\n if( wait ) destroy();\n if( success ) success.call( options.context, model, resp, options );\n if( !model.isNew() ) triggerAndBubble( model, 'sync', model, resp, options );\n };\n\n var xhr : JQueryXHR;\n\n if( this.isNew() ){\n _.defer( options.success );\n }\n else{\n wrapError( this, options );\n xhr = _sync( 'delete', this, options );\n }\n\n if( !wait ) destroy();\n \n return xhr || false;\n }\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url() : string {\n var base =\n _.result( this, 'urlRoot' ) ||\n _.result( this.collection, 'url' ) ||\n Sync.urlError();\n\n if( this.isNew() ) return base;\n\n var id = this.get( this.idAttribute );\n\n return base.replace( /[^\\/]$/, '$&/' ) + encodeURIComponent( id );\n }\n\n set( key : string, value : any, options? : object ) : this\n set( attrs : {}, options? : object ) : this\n set( a, b?, c? ) : this {\n if( typeof a === 'string' ){\n if( c ){\n return super.set({ [ a ] : b }, c );\n }\n else{\n this[ a ] = b;\n return this;\n } \n }\n else{\n return super.set( a, b );\n }\n }\n}\n\nfunction _sync( method : string, _this : Restful, options ) : JQueryXHR {\n // Abort and pending IO request. Just one is allowed at the time.\n _this._xhr && _this._xhr.abort && _this._xhr.abort();\n const xhr = _this._xhr = _this.sync( method, _this, options );\n xhr && xhr.always && xhr.always( function(){ _this._xhr = void 0; });\n return xhr;\n}\n\n// Wrap an optional error callback with a fallback error event.\nfunction wrapError( model : any, options : RestOptions ){\n var error = options.error;\n options.error = function( resp ){\n if( error ) error.call( options.context, model, resp, options );\n triggerAndBubble( model, 'error', model, resp, options );\n };\n}\n\nfunction triggerAndBubble( model : any, ...args : any[] ){\n model.trigger.apply( model, args );\n const { collection } = model;\n collection && collection.trigger.apply( collection, args ); \n}","import {DateType, ChainableAttributeSpec, type} from \"type-r\";\n\nconst msDatePattern = /\\/Date\\(([0-9]+)\\)\\//;\n\nexport class MicrosoftDateType extends DateType {\n convert( next ) {\n if( typeof next === 'string' ){\n const msDate = msDatePattern.exec( next );\n if( msDate ){\n return new Date( Number( msDate[ 1 ] ) );\n }\n }\n\n return DateType.prototype.convert.apply( this, arguments );\n }\n\n toJSON( value ) { return value && `/Date(${ value.getTime() })/`; }\n}\n\nexport const MicrosoftDate = new ChainableAttributeSpec({\n type : Date,\n _metatype: MicrosoftDateType\n})\n\nexport const Timestamp = type( Date ).toJSON( x => x && x.getTime() );","import {NumericType} from \"type-r\";\n\nexport function Integer( x ) {\n return x ? Math.round( x ) : 0;\n}\n\n(Integer as any)._metatype = NumericType;\n","import { AttributeCheck, ChainableAttributeSpec, type } from 'type-r';\n\nconst urlPattern = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n\nexport function isUrl( x : string ) {\n return !x || urlPattern.test( x );\n}\n\n(isUrl as AttributeCheck).error = 'Not valid URL'\n\nexport const Url : ChainableAttributeSpec = type( String ).check( isUrl );","import {type, ChainableAttributeSpec, AttributeCheck} from 'type-r'\n\nconst ipPattern = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n\nexport function isIPAddress( x : string ) {\n return !x || ipPattern.test( x );\n}\n\n(isIPAddress as AttributeCheck).error = 'Not valid IP address'\n\nexport const IPAddress : ChainableAttributeSpec = type( String ).check( isIPAddress );","import { AttributeCheck, type } from 'type-r';\n\nconst emailPattern = /^[-a-z0-9~!$%^&*_=+}{\\'?]+(\\.[-a-z0-9~!$%^&*_=+}{\\'?]+)*@([a-z0-9_][-a-z0-9_]*(\\.[-a-z0-9_]+)*\\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;\n\nexport function isEmail( x : string ) {\n return !x || !!x.match( emailPattern );\n}\n\n(isEmail as AttributeCheck).error = 'Not valid email';\n\nexport const Email = type( String ).check( isEmail );","import { Integer, MicrosoftDate, Timestamp } from \"type-r/ext-types\";\nimport { type, ChainableAttributeSpec } from \"type-r\";\n\n/*\n * dates\n */\ndeclare global {\n // Legacy has-notation\n interface Function{\n value : ( x : any ) => ChainableAttributeSpec;\n isRequired : ChainableAttributeSpec;\n asProp : PropertyDecorator\n has : ChainableAttributeSpec;\n }\n\n // Date type extensions\n interface DateConstructor {\n microsoft : ChainableAttributeSpec\n timestamp : ChainableAttributeSpec\n }\n\n // Integer type\n interface Window {\n Integer : Function;\n }\n\n interface NumberConstructor {\n integer : typeof Integer\n }\n}\n\nFunction.prototype.value = function( x ) {\n return new ChainableAttributeSpec( { type : this, value : x, hasCustomDefault : true } );\n};\n\nObject.defineProperty( Function.prototype, 'isRequired', {\n get() { return this._isRequired || this.has.isRequired; },\n set( x ){ this._isRequired = x; }\n});\n\nObject.defineProperty( Function.prototype, 'asProp', {\n get() { return this.has.asProp; },\n});\n\nObject.defineProperty( Function.prototype, 'has', {\n get() {\n // workaround for sinon.js and other libraries overriding 'has'\n return this._has || type( this );\n },\n\n set( value ) { this._has = value; }\n} );\n\n\nObject.defineProperties( Date, {\n microsoft: {\n value: MicrosoftDate\n },\n\n timestamp: {\n value: Timestamp\n }\n} );\n\n\n/*\n * integer\n */\n\nNumber.integer = Integer;\n\nif( typeof window !== 'undefined' ) {\n window.Integer = Integer;\n}","import { define, Store } from 'type-r';\nimport \"type-r/globals\";\nimport * as _ from 'underscore';\nimport Backbone from './backbone';\nimport { RestCollection, RestModel } from './rest';\n\n@define({\n getStore : Store.prototype.getStore,\n get : Store.prototype.get,\n})\nexport class RestStore extends RestModel {}\n\n@define\nexport class LazyStore extends RestStore {\n _resolved : {} = {}\n\n initialize(){\n this.forEach( ( element, name ) => {\n if( !element ) return;\n\n element.store = this;\n\n var fetch = element.fetch;\n\n if( fetch ){\n const self = this;\n element.fetch = function() {\n return self._resolved[ name ] = fetch.apply( this, arguments );\n }\n }\n\n if( element instanceof RestCollection && element.length ){\n this._resolved[name] = true;\n }\n });\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns jquery promise\n fetch( ...args : any[] /* hack, inheritance here violates LSP */) : any {\n var xhr = [],\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = this.attributes[name];\n attr && attr.fetch && xhr.push( attr.fetch() );\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns first jquery promise.\n fetchOnce( ...args : string[] ) : JQueryXHR {\n var xhr = [],\n self = this,\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = self.attributes[ name ];\n xhr.push( self._resolved[ name ] || attr && attr.fetch && attr.fetch());\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n clear( ...args : string[] ) : this {\n var objsToClear = args.length ? args : this.keys();\n\n for( let name of objsToClear ){\n var element = this.attributes[ name ];\n\n if( element instanceof RestCollection ){\n element.reset();\n }\n else if( element instanceof Store ){\n element.clear();\n }\n else if( element instanceof RestModel ){\n element.set( element.defaults() )\n }\n\n this._resolved[ name ] = false;\n }\n\n return this;\n }\n\n static onDefine( definitions, BaseClass ){\n var attributes = definitions.defaults || definitions.attributes;\n\n // add automatic fetching on first element's access\n _.each( attributes, ( Type : Function, name ) => {\n if( Type.has ){\n attributes[name] = Type.has\n .set( function( value ){\n if( !value || !value.length ){\n const resolved = this._resolved || ( this._resolved = {} ); \n resolved[name] = false;\n }\n \n return value;\n })\n } \n });\n\n RestModel.onDefine.call( this, definitions, BaseClass );\n }\n} \n ","import * as _ from 'underscore'\nimport { Model, tools } from 'type-r'\n\nexport const ModelMixin = {\n pick( ...args : any[] ){\n return _.pick( this, args );\n },\n\n values( this : Model ){\n return this.keys().map( name => this[ name ] );\n },\n\n each: Model.prototype.forEach,\n\n escape( attr ){\n return _.escape( this[ attr ] );\n },\n\n matches( attrs ){\n return !!_.iteratee( attrs, this )( this );\n },\n\n omit( ...keys : string[] ) : {} {\n return this.mapObject( ( value, key ) => {\n if( keys.indexOf( key ) < 0 ){\n return value;\n }\n });\n },\n\n invert(){\n const inverted = {};\n this.each( ( value, key ) => inverted[ value ] = key );\n return inverted;\n },\n\n pairs(){\n return this.map( ( value, key ) => [ key, value ] );\n },\n\n isEmpty(){\n return !this.values().length;\n },\n\n chain(){\n return _.chain( this.mapObject( x => x ) );\n }\n};\n\nexport const CollectionMixin = {\n where(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n findWhere(attrs) {\n return this.where(attrs, true);\n }\n};\n\naddUnderscoreMethods( CollectionMixin, 'models', {\n forEach : 3, each : 3, map : 3, collect : 3, reduce : 4,\n foldl : 4, inject : 4, reduceRight : 4, foldr : 4, find : 3, findIndex : 3, findLastIndex : 3, detect : 3, filter : 3,\n select : 3, reject : 3, every : 3, all : 3, some : 3, any : 3, include : 3, includes : 3,\n contains : 3, invoke : 0, max : 3, min : 3, toArray : 1, size : 1, first : 3,\n head : 3, take : 3, initial : 3, rest : 3, tail : 3, drop : 3, last : 3,\n without : 0, difference : 0, indexOf : 3, shuffle : 1, lastIndexOf : 3,\n isEmpty : 1, chain : 1, sample : 3, partition : 3, groupBy : 3, countBy : 3,\n sortBy : 3, indexBy : 3\n});\n\nfunction addUnderscoreMethods(Mixin, attribute, methods ) {\n _.each(methods, function(length, method) {\n if (_[method]) Mixin[method] = addMethod(length, method, attribute);\n });\n}\n\n// Proxy Backbone class methods to Underscore functions, wrapping the model's\n// `attributes` object or collection's `models` array behind the scenes.\n//\n// collection.filter(function(model) { return model.get('age') > 10 });\n// collection.each(this.addView);\n//\n// `Function#apply` can be slow so we use the method's arg count, if we know it.\nfunction addMethod(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, context)\n : _[method]( value, callback );\n };\n case 4: return function(iteratee, defaultVal, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, defaultVal, context )\n : _[method](value, callback );\n };\n default: return function( ...args : any[] ) {\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n}\n\n// Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\nfunction cb(iteratee, instance) {\n switch( typeof iteratee ){\n case 'function' : return iteratee;\n case 'string' : return model => model.get( iteratee );\n case 'object' :\n if( !(iteratee instanceof instance.model )) return _.matches( iteratee ); \n }\n\n return iteratee;\n}","/**\n * Extend Type-R namespace\n */\nimport * as TypeR from 'type-r';\nimport { MixinsState, Store as BaseStore, tools } from 'type-r';\n/**\n * Prepare backbone View, Router, History, and Events.\n */\nimport Backbone from './backbone';\nimport { RestCollection, RestModel } from './rest';\nimport { LazyStore, RestStore } from './rest-store';\nimport Sync from './sync';\nimport { CollectionMixin, ModelMixin } from './underscore-mixin';\nexport * from 'type-r';\nexport * from './backbone';\nexport { Backbone, RestStore, LazyStore, RestCollection as Collection, RestModel as Model };\n\n\n\n/**\n * Prepare \n */\n\nexport const Class : typeof TypeR.Messenger = TypeR.Messenger;\n\nconst Nested : typeof TypeR & typeof Backbone = Object.create( TypeR, tools.defaults({\n 'sync' : linkProperty( Sync, 'sync' ),\n 'errorPromise' : linkProperty( Sync, 'errorPromise' ),\n 'ajax' : linkProperty( Sync, 'ajax' ),\n 'history' : linkProperty( Backbone, 'history' ),\n 'store' : linkProperty( BaseStore, 'global' ),\n '$' : {\n get(){ return Backbone.$; },\n set( value ){ (Backbone).$ = (Sync).$ = value; }\n }\n },\n toProps( { Backbone, Class, Model : RestModel, Collection : RestCollection, LazyStore, Store : RestStore, defaults } ),\n toProps( Backbone )\n));\n\nexport default Nested;\n\n\nexport function defaults( x ) : typeof Nested.Record {\n return Nested.Model.defaults( x );\n}\n\n\nMixinsState.get( Nested.Mixable ).merge([ Nested.Events ]);\nNested.Messenger.mixins.populate( Backbone.View, Backbone.Router, Backbone.History );\nNested.Record.mixins.merge([ ModelMixin ]);\nNested.Record.Collection.mixins.merge([ CollectionMixin ]);\n\n/**\n * Local utilities\n */\nfunction linkProperty( Namespace, name ){\n return {\n get(){ return Namespace[ name ]; },\n set( value ){ Namespace[ name ] = value; }\n };\n}\n\nfunction toProps( obj ){\n return tools.transform({}, obj, x => ({ value : x }) );\n} "],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","defaults","dest","source","name","other","isValidJSON","value","proto","getPrototypeOf","every","getBaseClass","Class","isEmpty","obj","some","fun","ArrayProto","arr","result","someArray","someObject","predicate","x","omit","discard","transform","once","func","memo","first","DateProto","Date","ObjectProto","notEqual","a","protoA","arraysNotEqual","keysA","keys","objectsNotEqual","HashProto","hashMap","hash","definition","_i","names","names_1","_a","name_1","prop","o","map","EventMap","handlers","slice","addEventsMap","concat","addEvent","split","eventSplitter","getBubblingHandler","callback","name_2","push","EventDescriptor","event_1","on","event_2","off","handler","_bubblingHandlers","event","trigger5","trigger3","trigger2","context","next","listOff","_events","filteredHead","prev","head","ev","_callback","listSend3","EventHandler","once_1","_once","name_3","strings","api","events","test","self","queue","all","listSend2","listSend4","listSend5","f","listSend6","Mixable","protoProps","staticProps","BaseClass","mixins","defineMixin","merge","mergeObject","getStaticDefinitions","onDefine","definitions","mergeInheritedMembers","spec","statics","TheSubclass","tslib_1.__extends","predefine","define","Constructor","__super__","MixinsState","get","populate","onExtend","ClassOrDefinition","Ctor","rules","definitionRules","propertyListDecorator","listName","definitionDecorator","definitionKey","mergeRules","appliedMixins","rule","mixins_1","mixin","isArray","sourceMixins","ctors","ctors_1","unshift","object","ignore","dontMix","getOwnPropertyNames","forEachOwnProp","sourceProp","_this","assignProperty","mixinRules","protoValue","baseProto","resolveRule","function","caller","list","destProp","configurable","pipe","classFirst","classLast","_idCount","uniqueId","cid","initialize","Messenger","localEvents","_localEvents","properties","eventsMap","defineProperties","toPropertyDescriptor","addReference","a_source","_listeningTo","removeAll","second","_disposed","stopListening","Events","listener","isProduction","process","env","NODE_ENV","logEvents","Logger","level","filter","topic","msg","props","args","toString","console","Error","counter","window","something","body","join","JSON","stringify","logger","logEvents_1","logToConsole","log","trigger","bind","getOwnerEndpoint","collection","_owner","_endpoints","_ownerKey","createIOPromise","resolve","reject","onAbort","abort","fn","promise","Promise","a_resolve","a_reject","startIO","options","thenDo","abortIO","ioUpdate","_ioPromise","then","resp","triggerAndBubble","catch","err","eventSource","referenceMask","reference","splitTail","path","match","substr","tail","pop","local","Function","shift","resolveReference","root","action","skip","getStore","getOwner","ItemsBehavior","_validateNested","nested","error","validate","ValidationError","iteratee","each","eachError","cidPrefix","Transactional","endpoint","_endpoint","Transactional_1","_changeEventName","listenTo","isRoot","transactionApi","begin","update","set","commit","transaction","__inner_state__","_changeToken","data","_defaultStore","_validationError","validationError","getValidationError","_transaction","markAsDirty","dirty","silent","_isDirty","initiator","originalOptions","_onChildrenChange","aquire","owner","child","free","_begin","_markAsDirty","setAttribute","record","_attributes","doUpdate","attributes","_previousAttributes","AttributesCopy","_changedAttributes","UpdateRecordMixin","attribute","propagateChanges","forceAttributeChange","_createTransaction","a_values","unknown","changes","values","parse","shouldBeAnObject","unknownAttrsWarning","RecordTransaction","nested_1","_log","nested_2","changes_1","_b","emptyOptions","a_options","getHooks","transforms","changeHandlers","type","toJSON","changeEvents","hasCustomDefault","defaultValue","tools.isValidJSON","isRequired","convert","getHook_1","getHook","reduce","chainGetHooks","validate_1","chainTransforms","handleChange","chainChangeHandlers","doInit","AnyType","model","v","isChanged","code","text","getClassName","New value","Prev. value","prevHook","nextHook","prevTransform","nextTransform","prevHandler","nextHandler","ImmutableClassType","PrimitiveType","NumericType","num","isFinite","ArrayType","ObjectType","doNothing","FunctionType","DateType","date","timestamp","getTime","toISOString","supportsDate","isNaN","struct","minutesOffset","isoDatePattern","exec","k","numericKeys","undefined","UTC","safeParseDate","AggregatedType","clone","canBeUpdated","nestedTransaction","_shared","persistent","_handleChange","unset","dispose","shareAndListen","listen","share","SharedType","implicitObject","_onChange","shared","T","builtins","String","Number","Boolean","metatypes","getMetatype","_metatype","idx","ChainableAttributeSpec","check","metadata","asProp","required","ref","emptyFunction","changed","eventMap","unsubscribe","subscribe","cloned","attrSpec","type_1","inferType","createSharedTypeSpec","Attribute","createAttribute","from","createAttributesMixin","attributesDefinition","baseClassAttributes","myAttributes","_.transform","allAttributes","_.defaults","ConstructorsMixin","attrDefs","attrs","attr","Attributes","constructorsMixin","_attributesArray","createPropertyDescriptor","attrSpecs","eventsApi.EventMap","createWatcherFromRef","wrapWatcher","localEventsMixin","attrDef","watcher","IORecordMixin","save","getEndpoint","json","isNew","id","fetch","read","destroy","remove","_cidCounter","_super","typeCheck","Record","extend","diff","hasChanged","val","old","nullify","forEach","idAttribute","_attributesArray_1","copy","pinStore","errors","asJson","l","newModel","clear","a_logger","Attributes definition:","a_fun","tools.transform","Symbol","iterator","RecordEntriesIterator","Collection","BaseRecordAttributes","BaseRecordAttributesCopy","IdAttribute","metatype","done","attrName","getMetadata","DefaultCollection","dynamicMixin","_aquire","_free","convertAndAquire","_aggregationError","_itemEvents","sortElements","_comparator","sort","models","addIndex","index","removeIndex","updateIndex","previous","added","removed","sorted","CollectionTransaction","logAggregationError","added_1","_d","removed_1","_e","addTransaction","items","a_items","forceMerge","_byId","prevLength","a_items_1","item","appendElements","needSort","at","length_1","j","moveElements","sortOrMoveElements","removeMany","toRemove","_removeFromIndex","_reallocate","silentOptions","emptySetTransaction","len","src","_reallocateEmpty","setTransaction","_prevById","prevModels","toAdd","orderKept","reusedCount","previous_1","_garbageCollect","children","children_1","freeAll","addedOrChanged","_count","CollectionRefsType","records","comparator","toElements","subset","subsetOf","RefsCollection","_SubsetOf","Refs","Subset","itemEvents","aa","bb","_store","objOrId","count","a_index","elements","add","reset","enabled","liveUpdates","filter_1","_liveUpdates","updated","tslib_1.__assign","aggregated","a_elements","previousModels","previousModels_1","toDispose","recordsOrIds","el","splice","notify","removeOne","modelOrId","a_next","Argument","Attributes spec","end","toPredicateFunction","find","entries","idOrObj","init","parsed","keys_1","keys_2","parseReference","collectionRef","RecordRefType","masterCollection","getMasterCollection","SubsetOf","subsetOfBehavior","refs","toArray","SubsetOfCollection","resolvedWith","resolveRefs","delaySet","raw","toggle","addAll","master","elements_1","tools.notEqual","Store","store","global","listenToOnce","DefaultRecord","Model","method","previousBackbone","Backbone","exported","$","jQuery","history","VERSION","View","History","Router","noConflict","_.uniqueId","_.extend","_.pick","viewOptions","_ensureElement","delegateEvents","delegateEventSplitter","routes","_bindRoutes","tagName","selector","$el","render","setElement","element","delegate","undelegateEvents","_.result","_.isFunction","eventName","_.bind","className","optionalParam","namedParam","splatParam","escapeRegExp","checkUrl","location","route","_.isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","_.keys","replace","optional","RegExp","params","_.map","param","decodeURIComponent","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","document","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","iframe","createElement","style","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","close","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","stop","removeEventListener","detachEvent","removeChild","clearInterval","current","_.some","url","title","_updateHash","methodMap","patch","delete","errorPromise","Deferred","ajax","sync","dataType","urlError","contentType","processData","xhr","textStatus","errorThrown","RestCollection","_xhr","urlRoot","success","_invalidate","wrapError","_sync","a_model","RestModel","wait","callbackOpts","_this_1","Sync","modelProto","serverAttrs","_.clone","_.defer","base","encodeURIComponent","always","msDatePattern","MicrosoftDateType","msDate","MicrosoftDate","Timestamp","Integer","Math","round","urlPattern","isUrl","ipPattern","isIPAddress","emailPattern","isEmail","_isRequired","has","_has","microsoft","integer","Mixin","methods","RestStore","LazyStore","self_1","_resolved","objsToFetch_1","when","objsToFetch_2","objsToClear_1","_.each","Type","ModelMixin","pick","escape","_.escape","matches","_.iteratee","mapObject","invert","inverted","pairs","chain","_.chain","CollectionMixin","where","findWhere","cb","instance","_.matches","collect","foldl","inject","reduceRight","foldr","findIndex","findLastIndex","detect","select","any","include","includes","contains","invoke","max","min","size","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","sortBy","indexBy","_","defaultVal","addMethod","TypeR.Messenger","Nested","TypeR","tools.defaults","linkProperty","BaseStore","toProps","Namespace"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/backbone.ts","../node_modules/tslib/tslib.es6.js","../src/sync.ts","../src/rest.ts","../node_modules/type-r/ext-types/src/dates.ts","../node_modules/type-r/ext-types/src/integer.ts","../node_modules/type-r/ext-types/src/url.ts","../node_modules/type-r/ext-types/src/ip.ts","../node_modules/type-r/ext-types/src/email.ts","../node_modules/type-r/globals/src/index.ts","../src/rest-store.ts","../src/underscore-mixin.ts","../src/index.ts"],"sourcesContent":["/*******\n * Backbone Backward compatibility shim for View, Router, and History.\n * Based on 1.2.3, converted to browser-only ES6 modules thing. \n */\n\n// Backbone.js 1.2.3\n// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\nimport * as jQuery from 'jquery';\nimport * as _ from 'underscore';\n\n// Initial Setup\n// -------------\ndeclare global {\n interface Window {\n Backbone : any\n }\n\n function attachEvent( a, b );\n function detachEvent( a, b );\n}\n\n// Save the previous value of the `Backbone` variable, so that it can be\n// restored later on, if `noConflict` is used.\nconst previousBackbone = window.Backbone;\n\n// Create a local reference to a common array method we'll want to use later.\nconst slice = Array.prototype.slice;\n\n// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n// the `$` variable.\nconst exported = {\n $ : jQuery,\n history : null,\n VERSION : '1.2.3',\n View, History, Router, noConflict\n}\n\nexport default exported;\n\n// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n// to its previous owner. Returns a reference to this Backbone object.\nfunction noConflict() {\n window.Backbone = previousBackbone;\n return this;\n};\n\n// Backbone.View\n// -------------\n\n// Backbone Views are almost more convention than they are actual code. A View\n// is simply a JavaScript object that represents a logical chunk of UI in the\n// DOM. This might be a single item, an entire list, a sidebar or panel, or\n// even the surrounding frame which wraps your whole app. Defining a chunk of\n// UI as a **View** allows you to define your DOM events declaratively, without\n// having to worry about render order ... and makes it easy for the view to\n// react to specific changes in the state of your models.\n\n// Creating a Backbone.View creates its initial element outside of the DOM,\n// if an existing element is not provided...\nexport function View(options) {\n this.cid = _.uniqueId('view');\n options || (options = {});\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n this.delegateEvents();\n};\n\n// Cached regex to split keys for `delegate`.\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n// List of view options to be merged as properties.\nvar viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n// Set up all inheritable **Backbone.View** properties and methods.\n_.extend(View.prototype, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function (selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function () {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function () {\n this.$el.remove();\n this.stopListening();\n return this;\n },\n\n // Change the view's element (`this.el` property), including event\n // re-delegation.\n setElement: function (element, delegate) {\n if (this.$el) this.undelegateEvents();\n this.$el = element instanceof exported.$ ? element : exported.$(element);\n this.el = this.$el[0];\n if (delegate !== false) this.delegateEvents();\n return this;\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n // This only works for delegate-able events: not `focus`, `blur`, and\n // not `change`, `submit`, and `reset` in Internet Explorer.\n delegateEvents: function (events) {\n if (!(events || (events = _.result(this, 'events')))) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[events[key]];\n if (!method) continue;\n\n var match = key.match(delegateEventSplitter);\n var eventName = match[1], selector = match[2];\n method = _.bind(method, this);\n eventName += '.delegateEvents' + this.cid;\n if (selector === '') {\n this.$el.on(eventName, method);\n } else {\n this.$el.on(eventName, selector, method);\n }\n }\n return this;\n },\n\n // Clears all callbacks previously bound to the view with `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function () {\n this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n var $el = exported.$('<' + _.result(this, 'tagName') + '>').attr(attrs);\n this.setElement($el, false);\n } else {\n this.setElement(_.result(this, 'el'), false);\n }\n }\n\n});\n\n// Backbone.Router\n// ---------------\n\n// Routers map faux-URLs to actions, and fire events when routes are\n// matched. Creating a new one sets its `routes` hash, if not set statically.\nexport function Router(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n}\n\n// Cached regular expressions for matching named param parts and splatted\n// parts of route strings.\nvar optionalParam = /\\((.*?)\\)/g;\nvar namedParam = /(\\(\\?)?:\\w+/g;\nvar splatParam = /\\*\\w+/g;\nvar escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n// Set up all inheritable **Backbone.Router** properties and methods.\n_.extend(Router.prototype, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function (route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n exported.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n exported.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function (callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function (fragment, options) {\n exported.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function () {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n});\n\n// Backbone.History\n// ----------------\n\n// Handles cross-browser history management, based on either\n// [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n// [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n// and URL fragments. If the browser supports neither (old IE, natch),\n// falls back to polling.\nexport function History() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n};\n\n// Cached regex for stripping a leading hash/slash and trailing space.\nvar routeStripper = /^[#\\/]|\\s+$/g;\n\n// Cached regex for stripping leading and trailing slashes.\nvar rootStripper = /^\\/+|\\/+$/g;\n\n// Cached regex for stripping urls of hash.\nvar pathStripper = /#.*$/;\n\n// Has the history handling already been started?\n(History as any).started = false;\n\n// Set up all inheritable **Backbone.History** properties and methods.\n_.extend(History.prototype, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var root = path.slice(0, this.root.length - 1) + '/';\n return root === this.root;\n },\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function () {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function (options) {\n if ((History as any).started) throw new Error('Backbone.history has already been started');\n (History as any).started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({ root: '/' }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && ((document as any).documentMode === void 0 || (document as any).documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n\n\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var root = this.root.slice(0, -1) || '/';\n this.location.replace(root + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), { replace: true });\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function () {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n (History as any).started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function (route, callback) {\n this.handlers.unshift({ route: route, callback: callback });\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function (e) {\n var current = this.getFragment();\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function (fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function (fragment, options) {\n if (!(History as any).started) return false;\n if (!options || options === true) options = { trigger: !!options };\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var root = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n root = root.slice(0, -1) || '/';\n }\n var url = root + fragment;\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {\n var iWindow = this.iframe.contentWindow;\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n});\n\n// Create the default Backbone.history.\nexported.history = new History;\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * Backbone.js 1.2.3 REST implementation\n * (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Backbone may be freely distributed under the MIT license.\n *\n * With validation patches - NestedTypes validation semantic is applied. (c) Vlad Balin, 2015.\n */\nimport * as _ from 'underscore';\nimport Backbone from './backbone';\n\nexport type LazyValue< T > = () => T | T;\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport type Method = 'create' | 'update' | 'patch' | 'delete' | 'read' \n\nexport interface Restful {\n trigger( event : string, model, xhr, options )\n collection? : { trigger( event : string, model, xhr, options ) }\n toJSON( options : any ) : {}\n _xhr : JQueryXHR\n sync( method : string, object : Restful, options : SyncOptions )\n}\n\nexport interface SyncOptions {\n url? : LazyValue< string >\n data? : any\n attrs? : {}\n beforeSend? : ( xhr ) => any\n\n success? : ( resp : any ) => void\n error? : ( xhr?, textStatus?, errorThrown? ) => void\n\n textStatus? : string\n errorThrown? : any\n xhr? : any\n context? : {}\n}\n\nconst methodMap = {\n 'create' : 'POST',\n 'update' : 'PUT',\n 'patch' : 'PATCH',\n 'delete' : 'DELETE',\n 'read' : 'GET'\n};\n\nconst exported = {\n $ : Backbone.$,\n \n errorPromise : error => {\n var x = $.Deferred();\n x.reject( error );\n return x;\n },\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n ajax : function( options : {} ){\n return $.ajax.apply( $, arguments );\n },\n\n sync,\n\n // Throw an error when a URL is needed, and none is supplied.\n urlError : function(){\n throw new Error( 'A \"url\" property or function must be specified' );\n }\n};\n\nexport default exported;\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n\nfunction sync( method : Method, model : Restful, options : SyncOptions = {} ) : JQueryXHR{\n var type = methodMap[ method ];\n\n // Default JSON-request options.\n var params : any = { type : type, dataType : 'json' };\n\n // Ensure that we have a URL.\n if( !options.url ){\n params.url = _.result( model, 'url' ) || exported.urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if( options.data == null && model && (method === 'create' || method === 'update' || method === 'patch') ){\n params.contentType = 'application/json';\n params.data = JSON.stringify( options.attrs || model.toJSON( options ) );\n }\n\n // Don't process data on a non-GET request.\n if( params.type !== 'GET' ){\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function( xhr, textStatus, errorThrown ){\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if( error ) error.call( options.context, xhr, textStatus, errorThrown );\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = exported.ajax( _.extend( params, options ) );\n model.trigger( 'request', model, xhr, options );\n model.collection && model.collection.trigger( 'request', model, xhr, options );\n return xhr;\n}","import { Collection, define, definitions, mixinRules, Model, tools } from 'type-r';\nimport * as _ from 'underscore';\nimport Sync, { Restful, SyncOptions } from './sync';\n\nconst { defaults } = tools;\n\nexport interface RestOptions extends SyncOptions {\n wait? : boolean\n patch? : boolean\n reset? : boolean\n validate? : boolean\n}\n\n@define({\n itemEvents : {\n destroy( model ){ this.remove( model ); }\n } \n})\nexport class RestCollection extends Collection implements Restful {\n _xhr : JQueryXHR\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n model : typeof RestModel\n url() : string { return this.model.prototype.urlRoot || ''; }\n\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n this.trigger( 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch( options : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var success = options.success;\n var collection = this;\n options.success = function( resp ){\n var method = options.reset ? 'reset' : 'set';\n collection[ method ]( resp, options );\n if( collection._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, collection, resp, options );\n collection.trigger( 'sync', collection, resp, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n create( a_model, options : any = {} ) : RestModel {\n const model : RestModel = a_model instanceof RestModel ?\n a_model :\n this.model.create( a_model, options );\n\n // Hack! For the situation when model instance is given, aquire it. \n model._owner || ( model._owner = this );\n\n options.wait || this.add([ model ], options );\n\n var collection = this;\n var success = options.success;\n options.success = ( model, resp, callbackOpts ) =>{\n if( options.wait ) this.add( [ model ], defaults({ parse : false }, callbackOpts ) );\n if( success ) success.call( callbackOpts.context, model, resp, callbackOpts );\n };\n\n model.save( null, options );\n return model;\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync(){\n return Sync.sync.apply( this, arguments );\n }\n};\n\nconst modelProto = Model.prototype;\n\n@define({\n urlRoot : ''\n})\n@definitions({\n urlRoot : mixinRules.protoValue\n})\nexport class RestModel extends Model implements Restful {\n static Collection : typeof Collection = RestCollection as any;\n \n _xhr : JQueryXHR\n\n urlRoot : string\n\n /** @private */\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n triggerAndBubble( this, 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch( options? : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var model = this;\n var success = options.success;\n options.success = function( serverAttrs ){\n model.set( serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync( method : string, self : this, options : SyncOptions ) : any\n sync() : JQueryXHR {\n return Sync.sync.apply( this, arguments );\n }\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save( attrs? : {}, options? : RestOptions ) : any\n save( key : string, value : any, options? : RestOptions ) : any\n save( key, val, a_options? : RestOptions ) : any {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n let attrs, originalOptions;\n\n if( key == null || typeof key === 'object' ){\n attrs = key;\n originalOptions = val || {};\n }\n else{\n (attrs = {})[ key ] = val;\n originalOptions = a_options || {};\n }\n\n const options = _.extend( { validate : true, parse : true }, originalOptions ),\n wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if( attrs && !wait ){\n this.set( attrs, originalOptions );\n }\n\n if( this._invalidate( options ) ){\n if( attrs && wait ) this.set( attrs, originalOptions );\n return Sync.errorPromise( this.validationError );\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = serverAttrs => {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n if( wait ) serverAttrs = _.extend( {}, attrs, serverAttrs );\n\n if( serverAttrs ){\n // When server sends string, polimorphyc Model set screws up.\n modelProto.set.call( this, serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n }\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if( attrs && wait ) this.attributes = _.extend( {}, attributes, attrs );\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if( method === 'patch' && !options.attrs ) options.attrs = attrs;\n var xhr = _sync( method, this, options );\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n }\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy( options : RestOptions ) : any {\n options = options ? _.clone( options ) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function(){\n model.stopListening(); // TBD: figure out whenever we need to dispose the model.\n model.trigger( 'destroy', model, model.collection, options );\n };\n\n options.success = function( resp ){\n if( wait ) destroy();\n if( success ) success.call( options.context, model, resp, options );\n if( !model.isNew() ) triggerAndBubble( model, 'sync', model, resp, options );\n };\n\n var xhr : JQueryXHR;\n\n if( this.isNew() ){\n _.defer( options.success );\n }\n else{\n wrapError( this, options );\n xhr = _sync( 'delete', this, options );\n }\n\n if( !wait ) destroy();\n \n return xhr || false;\n }\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url() : string {\n var base =\n _.result( this, 'urlRoot' ) ||\n _.result( this.collection, 'url' ) ||\n Sync.urlError();\n\n if( this.isNew() ) return base;\n\n var id = this.get( this.idAttribute );\n\n return base.replace( /[^\\/]$/, '$&/' ) + encodeURIComponent( id );\n }\n\n set( key : string, value : any, options? : object ) : this\n set( attrs : {}, options? : object ) : this\n set( a, b?, c? ) : this {\n if( typeof a === 'string' ){\n if( c ){\n return super.set({ [ a ] : b }, c );\n }\n else{\n this[ a ] = b;\n return this;\n } \n }\n else{\n return super.set( a, b );\n }\n }\n}\n\nfunction _sync( method : string, _this : Restful, options ) : JQueryXHR {\n // Abort and pending IO request. Just one is allowed at the time.\n _this._xhr && _this._xhr.abort && _this._xhr.abort();\n const xhr = _this._xhr = _this.sync( method, _this, options );\n xhr && xhr.always && xhr.always( function(){ _this._xhr = void 0; });\n return xhr;\n}\n\n// Wrap an optional error callback with a fallback error event.\nfunction wrapError( model : any, options : RestOptions ){\n var error = options.error;\n options.error = function( resp ){\n if( error ) error.call( options.context, model, resp, options );\n triggerAndBubble( model, 'error', model, resp, options );\n };\n}\n\nfunction triggerAndBubble( model : any, ...args : any[] ){\n model.trigger.apply( model, args );\n const { collection } = model;\n collection && collection.trigger.apply( collection, args ); \n}","import {DateType, ChainableAttributeSpec, type} from \"type-r\";\n\nconst msDatePattern = /\\/Date\\(([0-9]+)\\)\\//;\n\nexport class MicrosoftDateType extends DateType {\n convert( next ) {\n if( typeof next === 'string' ){\n const msDate = msDatePattern.exec( next );\n if( msDate ){\n return new Date( Number( msDate[ 1 ] ) );\n }\n }\n\n return DateType.prototype.convert.apply( this, arguments );\n }\n\n toJSON( value ) { return value && `/Date(${ value.getTime() })/`; }\n}\n\nexport const MicrosoftDate = new ChainableAttributeSpec({\n type : Date,\n _metatype: MicrosoftDateType\n})\n\nexport const Timestamp = type( Date ).toJSON( x => x && x.getTime() );","import {NumericType} from \"type-r\";\n\nexport function Integer( x ) {\n return x ? Math.round( x ) : 0;\n}\n\n(Integer as any)._metatype = NumericType;\n","import { AttributeCheck, ChainableAttributeSpec, type } from 'type-r';\n\nconst urlPattern = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n\nexport function isUrl( x : string ) {\n return !x || urlPattern.test( x );\n}\n\n(isUrl as AttributeCheck).error = 'Not valid URL'\n\nexport const Url : ChainableAttributeSpec = type( String ).check( isUrl );","import {type, ChainableAttributeSpec, AttributeCheck} from 'type-r'\n\nconst ipPattern = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n\nexport function isIPAddress( x : string ) {\n return !x || ipPattern.test( x );\n}\n\n(isIPAddress as AttributeCheck).error = 'Not valid IP address'\n\nexport const IPAddress : ChainableAttributeSpec = type( String ).check( isIPAddress );","import { AttributeCheck, type } from 'type-r';\n\nconst emailPattern = /^[-a-z0-9~!$%^&*_=+}{\\'?]+(\\.[-a-z0-9~!$%^&*_=+}{\\'?]+)*@([a-z0-9_][-a-z0-9_]*(\\.[-a-z0-9_]+)*\\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;\n\nexport function isEmail( x : string ) {\n return !x || !!x.match( emailPattern );\n}\n\n(isEmail as AttributeCheck).error = 'Not valid email';\n\nexport const Email = type( String ).check( isEmail );","import { Integer, MicrosoftDate, Timestamp } from \"type-r/ext-types\";\nimport { type, ChainableAttributeSpec } from \"type-r\";\n\n/*\n * dates\n */\ndeclare global {\n // Legacy has-notation\n interface Function{\n value : ( x : any ) => ChainableAttributeSpec;\n isRequired : ChainableAttributeSpec;\n asProp : PropertyDecorator\n has : ChainableAttributeSpec;\n }\n\n // Date type extensions\n interface DateConstructor {\n microsoft : ChainableAttributeSpec\n timestamp : ChainableAttributeSpec\n }\n\n // Integer type\n interface Window {\n Integer : Function;\n }\n\n interface NumberConstructor {\n integer : typeof Integer\n }\n}\n\nFunction.prototype.value = function( x ) {\n return new ChainableAttributeSpec( { type : this, value : x, hasCustomDefault : true } );\n};\n\nObject.defineProperty( Function.prototype, 'isRequired', {\n get() { return this._isRequired || this.has.isRequired; },\n set( x ){ this._isRequired = x; }\n});\n\nObject.defineProperty( Function.prototype, 'asProp', {\n get() { return this.has.asProp; },\n});\n\nObject.defineProperty( Function.prototype, 'has', {\n get() {\n // workaround for sinon.js and other libraries overriding 'has'\n return this._has || type( this );\n },\n\n set( value ) { this._has = value; }\n} );\n\n\nObject.defineProperties( Date, {\n microsoft: {\n value: MicrosoftDate\n },\n\n timestamp: {\n value: Timestamp\n }\n} );\n\n\n/*\n * integer\n */\n\nNumber.integer = Integer;\n\nif( typeof window !== 'undefined' ) {\n window.Integer = Integer;\n}","import { define, Store } from 'type-r';\nimport \"type-r/globals\";\nimport * as _ from 'underscore';\nimport Backbone from './backbone';\nimport { RestCollection, RestModel } from './rest';\n\n@define({\n getStore : Store.prototype.getStore,\n get : Store.prototype.get,\n})\nexport class RestStore extends RestModel {}\n\n@define\nexport class LazyStore extends RestStore {\n _resolved : {} = {}\n\n initialize(){\n this.forEach( ( element, name ) => {\n if( !element ) return;\n\n element.store = this;\n\n var fetch = element.fetch;\n\n if( fetch ){\n const self = this;\n element.fetch = function() {\n return self._resolved[ name ] = fetch.apply( this, arguments );\n }\n }\n\n if( element instanceof RestCollection && element.length ){\n this._resolved[name] = true;\n }\n });\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns jquery promise\n fetch( ...args : any[] /* hack, inheritance here violates LSP */) : any {\n var xhr = [],\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = this.attributes[name];\n attr && attr.fetch && xhr.push( attr.fetch() );\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns first jquery promise.\n fetchOnce( ...args : string[] ) : JQueryXHR {\n var xhr = [],\n self = this,\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = self.attributes[ name ];\n xhr.push( self._resolved[ name ] || attr && attr.fetch && attr.fetch());\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n clear( ...args : string[] ) : this {\n var objsToClear = args.length ? args : this.keys();\n\n for( let name of objsToClear ){\n var element = this.attributes[ name ];\n\n if( element instanceof RestCollection ){\n element.reset();\n }\n else if( element instanceof Store ){\n element.clear();\n }\n else if( element instanceof RestModel ){\n element.set( element.defaults() )\n }\n\n this._resolved[ name ] = false;\n }\n\n return this;\n }\n\n static onDefine( definitions, BaseClass ){\n var attributes = definitions.defaults || definitions.attributes;\n\n // add automatic fetching on first element's access\n _.each( attributes, ( Type : Function, name ) => {\n if( Type.has ){\n attributes[name] = Type.has\n .set( function( value ){\n if( !value || !value.length ){\n const resolved = this._resolved || ( this._resolved = {} ); \n resolved[name] = false;\n }\n \n return value;\n })\n } \n });\n\n RestModel.onDefine.call( this, definitions, BaseClass );\n }\n} \n ","import * as _ from 'underscore'\nimport { Model, tools } from 'type-r'\n\nexport const ModelMixin = {\n pick( ...args : any[] ){\n return _.pick( this, args );\n },\n\n values( this : Model ){\n return this.keys().map( name => this[ name ] );\n },\n\n each: Model.prototype.forEach,\n\n escape( attr ){\n return _.escape( this[ attr ] );\n },\n\n matches( attrs ){\n return !!_.iteratee( attrs, this )( this );\n },\n\n omit( ...keys : string[] ) : {} {\n return this.mapObject( ( value, key ) => {\n if( keys.indexOf( key ) < 0 ){\n return value;\n }\n });\n },\n\n invert(){\n const inverted = {};\n this.each( ( value, key ) => inverted[ value ] = key );\n return inverted;\n },\n\n pairs(){\n return this.map( ( value, key ) => [ key, value ] );\n },\n\n isEmpty(){\n return !this.values().length;\n },\n\n chain(){\n return _.chain( this.mapObject( x => x ) );\n }\n};\n\nexport const CollectionMixin = {\n where(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n findWhere(attrs) {\n return this.where(attrs, true);\n }\n};\n\naddUnderscoreMethods( CollectionMixin, 'models', {\n forEach : 3, each : 3, map : 3, collect : 3, reduce : 4,\n foldl : 4, inject : 4, reduceRight : 4, foldr : 4, find : 3, findIndex : 3, findLastIndex : 3, detect : 3, filter : 3,\n select : 3, reject : 3, every : 3, all : 3, some : 3, any : 3, include : 3, includes : 3,\n contains : 3, invoke : 0, max : 3, min : 3, toArray : 1, size : 1, first : 3,\n head : 3, take : 3, initial : 3, rest : 3, tail : 3, drop : 3, last : 3,\n without : 0, difference : 0, indexOf : 3, shuffle : 1, lastIndexOf : 3,\n isEmpty : 1, chain : 1, sample : 3, partition : 3, groupBy : 3, countBy : 3,\n sortBy : 3, indexBy : 3\n});\n\nfunction addUnderscoreMethods(Mixin, attribute, methods ) {\n _.each(methods, function(length, method) {\n if (_[method]) Mixin[method] = addMethod(length, method, attribute);\n });\n}\n\n// Proxy Backbone class methods to Underscore functions, wrapping the model's\n// `attributes` object or collection's `models` array behind the scenes.\n//\n// collection.filter(function(model) { return model.get('age') > 10 });\n// collection.each(this.addView);\n//\n// `Function#apply` can be slow so we use the method's arg count, if we know it.\nfunction addMethod(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, context)\n : _[method]( value, callback );\n };\n case 4: return function(iteratee, defaultVal, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, defaultVal, context )\n : _[method](value, callback );\n };\n default: return function( ...args : any[] ) {\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n}\n\n// Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\nfunction cb(iteratee, instance) {\n switch( typeof iteratee ){\n case 'function' : return iteratee;\n case 'string' : return model => model.get( iteratee );\n case 'object' :\n if( !(iteratee instanceof instance.model )) return _.matches( iteratee ); \n }\n\n return iteratee;\n}","/**\n * Extend Type-R namespace\n */\nimport * as TypeR from 'type-r';\nimport { MixinsState, Store as BaseStore, tools } from 'type-r';\n/**\n * Prepare backbone View, Router, History, and Events.\n */\nimport Backbone from './backbone';\nimport { RestCollection, RestModel } from './rest';\nimport { LazyStore, RestStore } from './rest-store';\nimport Sync from './sync';\nimport { CollectionMixin, ModelMixin } from './underscore-mixin';\nexport * from 'type-r';\nexport * from './backbone';\nexport { Backbone, RestStore, LazyStore, RestCollection as Collection, RestModel as Model };\n\n/**\n * Prepare \n */\n\nexport const Class : typeof TypeR.Messenger = TypeR.Messenger;\n\nconst Nested : typeof TypeR & typeof Backbone = Object.create( TypeR, tools.defaults({\n 'sync' : linkProperty( Sync, 'sync' ),\n 'errorPromise' : linkProperty( Sync, 'errorPromise' ),\n 'ajax' : linkProperty( Sync, 'ajax' ),\n 'history' : linkProperty( Backbone, 'history' ),\n 'store' : linkProperty( BaseStore, 'global' ),\n '$' : {\n get(){ return Backbone.$; },\n set( value ){ (Backbone).$ = (Sync).$ = value; }\n }\n },\n toProps( { Backbone, Class, Model : RestModel, Collection : RestCollection, LazyStore, Store : RestStore, defaults } ),\n toProps( Backbone )\n));\n\nexport default Nested;\n\n\nexport function defaults( x ) : typeof Nested.Record {\n return Nested.Model.defaults( x );\n}\n\n\nMixinsState.get( Nested.Mixable ).merge([ Nested.Events ]);\nNested.Messenger.mixins.populate( Backbone.View, Backbone.Router, Backbone.History );\nNested.Record.mixins.merge([ ModelMixin ]);\nNested.Record.Collection.mixins.merge([ CollectionMixin ]);\n\n/**\n * Local utilities\n */\nfunction linkProperty( Namespace, name ){\n return {\n get(){ return Namespace[ name ]; },\n set( value ){ Namespace[ name ] = value; }\n };\n}\n\nfunction toProps( obj ){\n return tools.transform({}, obj, x => ({ value : x }) );\n} "],"names":["previousBackbone","window","Backbone","exported","$","jQuery","history","VERSION","View","History","Router","noConflict","this","options","cid","_.uniqueId","_.extend","_.pick","viewOptions","_ensureElement","initialize","apply","arguments","delegateEvents","delegateEventSplitter","routes","_bindRoutes","prototype","tagName","selector","$el","find","render","remove","stopListening","setElement","element","delegate","undelegateEvents","el","events","_.result","key","method","_.isFunction","match","eventName","_.bind","on","off","attrs","id","className","attr","optionalParam","namedParam","splatParam","escapeRegExp","handlers","checkUrl","location","route","name","callback","_.isRegExp","_routeToRegExp","router","fragment","args","_extractParameters","execute","trigger","concat","navigate","_.keys","pop","replace","optional","RegExp","params","exec","slice","_.map","param","i","length","decodeURIComponent","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","root","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","path","charAt","getFragment","_usePushState","_wantsHashChange","start","Error","hashChange","_hasHashChange","document","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","iframe","createElement","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","listener","attachEvent","_checkUrlInterval","setInterval","silent","loadUrl","stop","removeEventListener","detachEvent","removeChild","clearInterval","unshift","e","current","_.some","handler","test","url","title","assign","_updateHash","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","create","__decorate","decorators","target","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","methodMap","update","patch","delete","read","errorPromise","error","x","Deferred","reject","ajax","sync","model","type","dataType","urlError","data","contentType","JSON","stringify","toJSON","processData","xhr","textStatus","errorThrown","call","context","collection","defaults","tslib_1.__extends","RestCollection","_xhr","abort","_super","dispose","urlRoot","validate","validationError","success","parse","resp","reset","_invalidate","wrapError","_sync","a_model","RestModel","_owner","wait","add","callbackOpts","_this_1","save","Sync","define","itemEvents","destroy","Collection","modelProto","Model","triggerAndBubble","serverAttrs","set","val","a_options","originalOptions","attributes","isNew","_.clone","_.defer","base","get","idAttribute","encodeURIComponent","a","definitions","mixinRules","protoValue","_this","always","_i","msDatePattern","MicrosoftDateType","next","msDate","Date","Number","DateType","convert","value","getTime","MicrosoftDate","ChainableAttributeSpec","_metatype","Timestamp","Integer","Math","round","NumericType","urlPattern","isUrl","String","check","ipPattern","isIPAddress","emailPattern","isEmail","Function","hasCustomDefault","_isRequired","has","isRequired","asProp","_has","defineProperties","microsoft","timestamp","integer","Mixin","attribute","methods","RestStore","getStore","Store","LazyStore","forEach","store","fetch","self_1","_resolved","objsToFetch_1","keys","_a","name_1","push","when","objsToFetch_2","name_2","objsToClear_1","name_3","clear","BaseClass","_.each","Type","onDefine","ModelMixin","pick","values","map","each","escape","_.escape","matches","_.iteratee","omit","mapObject","indexOf","invert","inverted","pairs","isEmpty","chain","_.chain","CollectionMixin","where","first","findWhere","cb","iteratee","instance","_.matches","collect","reduce","foldl","inject","reduceRight","foldr","findIndex","findLastIndex","detect","filter","select","every","all","some","any","include","includes","contains","invoke","max","min","toArray","size","head","take","initial","rest","tail","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","sortBy","indexBy","_","defaultVal","addMethod","Class","TypeR.Messenger","Nested","TypeR","tools","linkProperty","BaseStore","toProps","Namespace","obj","transform","MixinsState","Mixable","merge","Events","Messenger","mixins","populate","Record"],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index 6814641..5758402 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAIhE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAQ5F,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAGtB,MAAM,UAAU,QAAQ,CAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAGD,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,SAAS,YAAY,CAAE,SAAS,EAAE,IAAI;IAClC,OAAO;QACH,GAAG,gBAAI,OAAO,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAE,GAAG;IACjB,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAIhE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAM5F,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAGtB,MAAM,UAAU,QAAQ,CAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAGD,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,SAAS,YAAY,CAAE,SAAS,EAAE,IAAI;IAClC,OAAO;QACH,GAAG,gBAAI,OAAO,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAE,GAAG;IACjB,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index aa63f38..0e5d031 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -12,7 +12,8 @@ export default { exports: 'named', globals: { jquery: '$', - underscore: '_' + underscore: '_', + 'type-r' : 'Nested' }, sourcemap: true }, @@ -24,6 +25,7 @@ export default { external: [ 'jquery', - 'underscore' + 'underscore', + 'type-r' ] }; \ No newline at end of file