react-obsidian 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +4 -1
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/observable/Observable.d.ts +1 -0
  6. package/dist/src/observable/Observable.d.ts.map +1 -1
  7. package/dist/src/observable/Observable.js +10 -0
  8. package/dist/src/observable/Observable.js.map +1 -1
  9. package/dist/src/observable/cold/ColdMediatorObservable.d.ts +3 -0
  10. package/dist/src/observable/cold/ColdMediatorObservable.d.ts.map +1 -1
  11. package/dist/src/observable/cold/ColdMediatorObservable.js +4 -0
  12. package/dist/src/observable/cold/ColdMediatorObservable.js.map +1 -1
  13. package/dist/src/observable/mediator/MediatorObservable.d.ts.map +1 -1
  14. package/dist/src/observable/mediator/MediatorObservable.js +3 -0
  15. package/dist/src/observable/mediator/MediatorObservable.js.map +1 -1
  16. package/dist/src/observable/types.d.ts +1 -1
  17. package/dist/src/observable/types.d.ts.map +1 -1
  18. package/dist/testkit/index.d.ts +6 -1
  19. package/dist/testkit/index.d.ts.map +1 -1
  20. package/dist/testkit/index.js +11 -17
  21. package/dist/testkit/index.js.map +1 -1
  22. package/dist/testkit/mockGraphs.d.ts +4 -0
  23. package/dist/testkit/mockGraphs.d.ts.map +1 -0
  24. package/dist/testkit/mockGraphs.js +23 -0
  25. package/dist/testkit/mockGraphs.js.map +1 -0
  26. package/dist/testkit/mockModel.d.ts +3 -0
  27. package/dist/testkit/mockModel.d.ts.map +1 -0
  28. package/dist/testkit/mockModel.js +14 -0
  29. package/dist/testkit/mockModel.js.map +1 -0
  30. package/package.json +1 -1
  31. package/src/index.ts +1 -0
  32. package/src/observable/Observable.ts +10 -0
  33. package/src/observable/cold/ColdMediatorObservable.ts +7 -0
  34. package/src/observable/mediator/MediatorObservable.ts +3 -0
  35. package/src/observable/types.ts +1 -1
  36. package/testkit/index.ts +11 -14
  37. package/testkit/mockGraphs.ts +20 -0
  38. package/testkit/mockModel.ts +10 -0
  39. package/.buildkite/pipeline.yml +0 -10
  40. package/.eslintignore +0 -1
  41. package/.eslintrc.json +0 -105
  42. package/.vscode/settings.json +0 -6
  43. package/babel.config.js +0 -13
  44. package/documentation/README.md +0 -41
  45. package/documentation/babel.config.js +0 -3
  46. package/documentation/blog/2019-05-28-first-blog-post.md +0 -12
  47. package/documentation/blog/2019-05-29-long-blog-post.md +0 -44
  48. package/documentation/blog/2021-08-01-mdx-blog-post.mdx +0 -20
  49. package/documentation/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  50. package/documentation/blog/2021-08-26-welcome/index.md +0 -25
  51. package/documentation/blog/authors.yml +0 -17
  52. package/documentation/docs/documentation/documentation.mdx +0 -190
  53. package/documentation/docs/documentation/installation.mdx +0 -56
  54. package/documentation/docs/documentation/meta/clearingGraphs.mdx +0 -13
  55. package/documentation/docs/documentation/meta/middlewares.mdx +0 -27
  56. package/documentation/docs/documentation/usage/ClassComponents.mdx +0 -18
  57. package/documentation/docs/documentation/usage/Classes.mdx +0 -41
  58. package/documentation/docs/documentation/usage/FunctionalComponents.mdx +0 -57
  59. package/documentation/docs/documentation/usage/Graphs.mdx +0 -154
  60. package/documentation/docs/documentation/usage/Hooks.mdx +0 -85
  61. package/documentation/docs/documentation/usage/Reactivity.mdx +0 -116
  62. package/documentation/docs/documentation/usage/ServiceLocator.mdx +0 -38
  63. package/documentation/docs/documentation/usage/_category_.json +0 -9
  64. package/documentation/docs/guides/configurableApplications.mdx +0 -205
  65. package/documentation/docs/guides/mockDependencies.mdx +0 -141
  66. package/documentation/docusaurus.config.js +0 -151
  67. package/documentation/package-lock.json +0 -22975
  68. package/documentation/package.json +0 -47
  69. package/documentation/sidebars.js +0 -34
  70. package/documentation/src/components/HomepageFeatures/index.tsx +0 -71
  71. package/documentation/src/components/HomepageFeatures/styles.module.css +0 -11
  72. package/documentation/src/css/custom.css +0 -30
  73. package/documentation/src/pages/index.module.css +0 -23
  74. package/documentation/src/pages/index.tsx +0 -41
  75. package/documentation/src/pages/playground/index.mdx +0 -21
  76. package/documentation/src/theme/SearchBar.js +0 -19
  77. package/documentation/static/.nojekyll +0 -0
  78. package/documentation/static/img/api.svg +0 -101
  79. package/documentation/static/img/favicon.ico +0 -0
  80. package/documentation/static/img/logo.svg +0 -265
  81. package/documentation/static/img/obsidian.png +0 -0
  82. package/documentation/static/img/prototype.svg +0 -1
  83. package/documentation/static/img/stethoscope.svg +0 -37
  84. package/documentation/tsconfig.json +0 -7
  85. package/documentation/yarn.lock +0 -8167
  86. package/example/.buckconfig +0 -6
  87. package/example/.editorconfig +0 -3
  88. package/example/.eslintrc.js +0 -4
  89. package/example/.flowconfig +0 -65
  90. package/example/.gitattributes +0 -3
  91. package/example/.prettierrc.js +0 -7
  92. package/example/.watchmanconfig +0 -1
  93. package/example/App.tsx +0 -31
  94. package/example/MyInjectedComponent.tsx +0 -37
  95. package/example/__tests__/App-test.js +0 -14
  96. package/example/android/app/BUCK +0 -55
  97. package/example/android/app/build.gradle +0 -227
  98. package/example/android/app/build_defs.bzl +0 -19
  99. package/example/android/app/debug.keystore +0 -0
  100. package/example/android/app/proguard-rules.pro +0 -10
  101. package/example/android/app/src/debug/AndroidManifest.xml +0 -13
  102. package/example/android/app/src/debug/java/com/example/ReactNativeFlipper.java +0 -72
  103. package/example/android/app/src/main/AndroidManifest.xml +0 -25
  104. package/example/android/app/src/main/java/com/example/MainActivity.java +0 -15
  105. package/example/android/app/src/main/java/com/example/MainApplication.java +0 -80
  106. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  107. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  108. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  109. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  110. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  111. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  112. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  113. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  114. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  115. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  116. package/example/android/app/src/main/res/values/strings.xml +0 -3
  117. package/example/android/app/src/main/res/values/styles.xml +0 -8
  118. package/example/android/build.gradle +0 -38
  119. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  120. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  121. package/example/android/gradle.properties +0 -28
  122. package/example/android/gradlew +0 -185
  123. package/example/android/gradlew.bat +0 -89
  124. package/example/android/settings.gradle +0 -3
  125. package/example/app.json +0 -4
  126. package/example/babel.config.js +0 -8
  127. package/example/index.js +0 -9
  128. package/example/ios/Podfile +0 -30
  129. package/example/ios/Podfile.lock +0 -526
  130. package/example/ios/example/AppDelegate.h +0 -8
  131. package/example/ios/example/AppDelegate.m +0 -62
  132. package/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json +0 -38
  133. package/example/ios/example/Images.xcassets/Contents.json +0 -6
  134. package/example/ios/example/Info.plist +0 -55
  135. package/example/ios/example/LaunchScreen.storyboard +0 -47
  136. package/example/ios/example/main.m +0 -9
  137. package/example/ios/example.xcodeproj/project.pbxproj +0 -689
  138. package/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme +0 -88
  139. package/example/ios/example.xcworkspace/contents.xcworkspacedata +0 -10
  140. package/example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  141. package/example/ios/exampleTests/Info.plist +0 -24
  142. package/example/ios/exampleTests/exampleTests.m +0 -65
  143. package/example/metro.config.js +0 -44
  144. package/example/package.json +0 -35
  145. package/example/tsconfig.json +0 -42
  146. package/global.d.ts +0 -1
  147. package/jest.config.js +0 -17
  148. package/jest.setup-after-env.js +0 -4
  149. package/tsconfig.base.json +0 -42
  150. package/tsconfig.json +0 -3
  151. package/tsconfig.prod.json +0 -7
@@ -21,4 +21,5 @@ export { MediatorObservable } from './observable/mediator/MediatorObservable';
21
21
  export { OnNext, Unsubscribe } from './observable/types';
22
22
  export { Model } from './model/Model';
23
23
  export { testKit } from '../testkit';
24
+ export { mockModel, mockGraphs } from '../testkit/index';
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.testKit = exports.Model = exports.MediatorObservable = exports.Observable = exports.useObservers = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
20
+ exports.mockGraphs = exports.mockModel = exports.testKit = exports.Model = exports.MediatorObservable = exports.Observable = exports.useObservers = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
21
21
  const Obsidian_1 = __importDefault(require("./Obsidian"));
22
22
  __exportStar(require("./types"), exports);
23
23
  var Graph_1 = require("./decorators/Graph");
@@ -56,4 +56,7 @@ var Model_1 = require("./model/Model");
56
56
  Object.defineProperty(exports, "Model", { enumerable: true, get: function () { return Model_1.Model; } });
57
57
  var testkit_1 = require("../testkit");
58
58
  Object.defineProperty(exports, "testKit", { enumerable: true, get: function () { return testkit_1.testKit; } });
59
+ var index_1 = require("../testkit/index");
60
+ Object.defineProperty(exports, "mockModel", { enumerable: true, get: function () { return index_1.mockModel; } });
61
+ Object.defineProperty(exports, "mockGraphs", { enumerable: true, get: function () { return index_1.mockGraphs; } });
59
62
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AAEnC,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,oDAAmD;AAA1C,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGX,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,2DAAmF;AAA1E,wGAAA,UAAU,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAE5C,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AACrB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,+EAA8E;AAArE,wHAAA,kBAAkB,OAAA;AAG3B,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AAEd,sCAAqC;AAA5B,kGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AAEnC,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,oDAAmD;AAA1C,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGX,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,2DAAmF;AAA1E,wGAAA,UAAU,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAE5C,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AACrB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,+EAA8E;AAArE,wHAAA,kBAAkB,OAAA;AAG3B,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AAEd,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,0CAAyD;AAAhD,kGAAA,SAAS,OAAA;AAAE,mGAAA,UAAU,OAAA"}
@@ -5,6 +5,7 @@ export declare class Observable<T> implements IObservable<T> {
5
5
  constructor(initialValue?: T);
6
6
  get value(): T;
7
7
  set value(value: T);
8
+ first(): Promise<T>;
8
9
  subscribe(onNext?: OnNext<T>): Unsubscribe;
9
10
  unsubscribe(onNext: OnNext<T>): void;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAgB;gBAExB,YAAY,CAAC,EAAE,CAAC;IAI5B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,CAAC,EAGxB;IAEM,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAQ,GAAG,WAAW;IAQhD,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;CAMpC"}
1
+ {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAgB;gBAExB,YAAY,CAAC,EAAE,CAAC;IAI5B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,CAAC,EAGxB;IAEK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;IAUlB,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAQ,GAAG,WAAW;IAQhD,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;CAMpC"}
@@ -14,6 +14,16 @@ class Observable {
14
14
  this.currentValue = value;
15
15
  this.subscribers.forEach((subscriber) => subscriber(value));
16
16
  }
17
+ async first() {
18
+ if (this.currentValue)
19
+ return this.currentValue;
20
+ return new Promise((resolve) => {
21
+ const unsubscribe = this.subscribe((value) => {
22
+ unsubscribe();
23
+ resolve(value);
24
+ });
25
+ });
26
+ }
17
27
  subscribe(onNext = NOOP) {
18
28
  if (this.subscribers.has(onNext)) {
19
29
  throw new Error('Subscriber already subscribed');
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAa,UAAU;IAIrB,YAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAiB,CAAC;IAChC,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,SAAS,CAAC,SAAoB,IAAI;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,WAAW,CAAC,MAAgB;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AA/BD,gCA+BC"}
1
+ {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAa,UAAU;IAIrB,YAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAiB,CAAC;IAChC,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3C,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CAAC,SAAoB,IAAI;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,WAAW,CAAC,MAAgB;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AAzCD,gCAyCC"}
@@ -1,10 +1,13 @@
1
+ import { Observable } from '../Observable';
1
2
  import { MediatorObservable } from '../mediator/MediatorObservable';
3
+ import { OnNext } from '../types';
2
4
  export declare class ColdMediatorObservable<T extends object> extends MediatorObservable<T> {
3
5
  private readonly handler;
4
6
  constructor(obj: T, handler?: PropertyAccessTrackingProxy<T>);
5
7
  set value(_: T);
6
8
  get value(): T;
7
9
  setValue(key: keyof T, value: any): void;
10
+ addSource<S>(source: Observable<S>, onNext: OnNext<S>): this;
8
11
  }
9
12
  declare class PropertyAccessTrackingProxy<T extends object> implements ProxyHandler<T> {
10
13
  private readonly accessedProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"ColdMediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,qBAAa,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAhC,GAAG,EAAE,CAAC,EAAmB,OAAO,iCAAuC;IAInF,IAAa,KAAK,CAAC,CAAC,EAAE,CAAC,EAEtB;IAED,IAAa,KAAK,IAAI,CAAC,CAEtB;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG;CAOlC;AAED,cAAM,2BAA2B,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IACzD,OAAO,CAAC,iBAAiB,CAAS;IAElC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;IAOhD,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC;IAIzB,eAAe;IAIf,cAAc;CAGtB"}
1
+ {"version":3,"file":"ColdMediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAhC,GAAG,EAAE,CAAC,EAAmB,OAAO,iCAAuC;IAInF,IAAa,KAAK,CAAC,CAAC,EAAE,CAAC,EAEtB;IAED,IAAa,KAAK,IAAI,CAAC,CAEtB;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG;IAQxB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAI/D;AAED,cAAM,2BAA2B,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IACzD,OAAO,CAAC,iBAAiB,CAAS;IAElC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;IAOhD,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC;IAIzB,eAAe;IAIf,cAAc;CAGtB"}
@@ -20,6 +20,10 @@ class ColdMediatorObservable extends MediatorObservable_1.MediatorObservable {
20
20
  this.handler.resumeTracking();
21
21
  }
22
22
  }
23
+ addSource(source, onNext) {
24
+ source.subscribe(onNext);
25
+ return this;
26
+ }
23
27
  }
24
28
  exports.ColdMediatorObservable = ColdMediatorObservable;
25
29
  class PropertyAccessTrackingProxy {
@@ -1 +1 @@
1
- {"version":3,"file":"ColdMediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAEpE,MAAa,sBAAyC,SAAQ,uCAAqB;IACjF,YAAY,GAAM,EAAmB,UAAU,IAAI,2BAA2B,EAAK;QACjF,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QADI,YAAO,GAAP,OAAO,CAAuC;IAEnF,CAAC;IAED,IAAa,KAAK,CAAC,CAAI;QACrB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IAED,IAAa,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAU;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SAC/B;IACH,CAAC;CACF;AApBD,wDAoBC;AAED,MAAM,2BAA2B;IAAjC;QACmB,uBAAkB,GAAG,IAAI,GAAG,EAAW,CAAC;QACjD,sBAAiB,GAAG,KAAK,CAAC;IAoBpC,CAAC;IAlBC,GAAG,CAAC,MAAS,EAAE,CAAkB,EAAE,QAAa;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAY,CAAC,CAAC;SAC3C;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,GAAY;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"ColdMediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":";;;AACA,uEAAoE;AAGpE,MAAa,sBAAyC,SAAQ,uCAAqB;IACjF,YAAY,GAAM,EAAmB,UAAU,IAAI,2BAA2B,EAAK;QACjF,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QADI,YAAO,GAAP,OAAO,CAAuC;IAEnF,CAAC;IAED,IAAa,KAAK,CAAC,CAAI;QACrB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IAED,IAAa,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAU;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SAC/B;IACH,CAAC;IAEQ,SAAS,CAAI,MAAqB,EAAE,MAAiB;QAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzBD,wDAyBC;AAED,MAAM,2BAA2B;IAAjC;QACmB,uBAAkB,GAAG,IAAI,GAAG,EAAW,CAAC;QACjD,sBAAiB,GAAG,KAAK,CAAC;IAoBpC,CAAC;IAlBC,GAAG,CAAC,MAAS,EAAE,CAAkB,EAAE,QAAa;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAY,CAAC,CAAC;SAC3C;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,GAAY;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAItD"}
1
+ {"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAOtD"}
@@ -5,6 +5,9 @@ const Observable_1 = require("../Observable");
5
5
  class MediatorObservable extends Observable_1.Observable {
6
6
  addSource(source, onNext) {
7
7
  source.subscribe(onNext);
8
+ if (source.value !== undefined) {
9
+ onNext(source.value);
10
+ }
8
11
  return this;
9
12
  }
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAG3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAAI,MAAqB,EAAE,MAAiB;QACnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AALD,gDAKC"}
1
+ {"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAG3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAAI,MAAqB,EAAE,MAAiB;QACnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AARD,gDAQC"}
@@ -1,4 +1,4 @@
1
- export type OnNext<T> = (value: T) => void;
1
+ export type OnNext<T> = (value: T) => void | undefined;
2
2
  export type Unsubscribe = () => void;
3
3
  export interface Observable<T> {
4
4
  value: T;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC"}
@@ -1,8 +1,13 @@
1
1
  import { ObjectGraph } from '../src/graph/ObjectGraph';
2
2
  import { Constructable } from '../src/types';
3
+ import { mockGraphs } from './mockGraphs';
3
4
  declare class TestKit {
5
+ /**
6
+ * @deprecated testKit.mockGraphs is deprecated, use mockGraphs instead
7
+ */
4
8
  mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>): void;
5
9
  }
10
+ export { mockModel } from './mockModel';
11
+ export { mockGraphs };
6
12
  export declare const testKit: TestKit;
7
- export {};
8
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,cAAM,OAAO;IACJ,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;CAY/G;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,cAAM,OAAO;IACX;;OAEG;IACI,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;CAK/G;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -1,25 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.testKit = void 0;
7
- const ObjectGraph_1 = require("../src/graph/ObjectGraph");
8
- const GraphMiddleware_1 = require("../src/graph/registry/GraphMiddleware");
9
- const GraphRegistry_1 = __importDefault(require("../src/graph/registry/GraphRegistry"));
3
+ exports.testKit = exports.mockGraphs = exports.mockModel = void 0;
4
+ const mockGraphs_1 = require("./mockGraphs");
5
+ Object.defineProperty(exports, "mockGraphs", { enumerable: true, get: function () { return mockGraphs_1.mockGraphs; } });
10
6
  class TestKit {
7
+ /**
8
+ * @deprecated testKit.mockGraphs is deprecated, use mockGraphs instead
9
+ */
11
10
  mockGraphs(graphNameToGraph) {
12
- const graphMiddleware = new class extends GraphMiddleware_1.GraphMiddleware {
13
- resolve(resolveChain, Graph, props) {
14
- if (graphNameToGraph[Graph.name]) {
15
- const GraphOrGenerator = graphNameToGraph[Graph.name];
16
- return (0, ObjectGraph_1.isGraph)(GraphOrGenerator) ? new GraphOrGenerator(props) : GraphOrGenerator(props);
17
- }
18
- return resolveChain.proceed(Graph, props);
19
- }
20
- }();
21
- GraphRegistry_1.default.addGraphMiddleware(graphMiddleware);
11
+ // eslint-disable-next-line no-console
12
+ console.warn('testKit.mockGraphs is deprecated, use mockGraphs instead');
13
+ return (0, mockGraphs_1.mockGraphs)(graphNameToGraph);
22
14
  }
23
15
  }
16
+ var mockModel_1 = require("./mockModel");
17
+ Object.defineProperty(exports, "mockModel", { enumerable: true, get: function () { return mockModel_1.mockModel; } });
24
18
  exports.testKit = new TestKit();
25
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;AACA,0DAAgE;AAChE,2EAAwE;AAExE,wFAAgE;AAEhE,MAAM,OAAO;IACJ,UAAU,CAAC,gBAA4F;QAC5G,MAAM,eAAe,GAAG,IAAI,KAAM,SAAQ,iCAAe;YACvD,OAAO,CAAQ,YAA+B,EAAE,KAAiC,EAAE,KAAa;gBAC9F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAChC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtD,OAAO,IAAA,qBAAO,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;iBAC1F;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;SACF,EAAE,CAAC;QACJ,uBAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;CACF;AAEY,QAAA,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAcjC,2FAdA,uBAAU,OAcA;AAZnB,MAAM,OAAO;IACX;;OAEG;IACI,UAAU,CAAC,gBAA4F;QAC5G,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACzE,OAAO,IAAA,uBAAU,EAAC,gBAAgB,CAAC,CAAC;IACtC,CAAC;CACF;AAED,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAGL,QAAA,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ObjectGraph } from '../src/graph/ObjectGraph';
2
+ import { Constructable } from '../src/types';
3
+ export declare function mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>): void;
4
+ //# sourceMappingURL=mockGraphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockGraphs.d.ts","sourceRoot":"","sources":["../../testkit/mockGraphs.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,wBAAgB,UAAU,CACxB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC,QAY7F"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mockGraphs = void 0;
7
+ const ObjectGraph_1 = require("../src/graph/ObjectGraph");
8
+ const GraphMiddleware_1 = require("../src/graph/registry/GraphMiddleware");
9
+ const GraphRegistry_1 = __importDefault(require("../src/graph/registry/GraphRegistry"));
10
+ function mockGraphs(graphNameToGraph) {
11
+ const graphMiddleware = new class extends GraphMiddleware_1.GraphMiddleware {
12
+ resolve(resolveChain, Graph, props) {
13
+ if (graphNameToGraph[Graph.name]) {
14
+ const GraphOrGenerator = graphNameToGraph[Graph.name];
15
+ return (0, ObjectGraph_1.isGraph)(GraphOrGenerator) ? new GraphOrGenerator(props) : GraphOrGenerator(props);
16
+ }
17
+ return resolveChain.proceed(Graph, props);
18
+ }
19
+ }();
20
+ GraphRegistry_1.default.addGraphMiddleware(graphMiddleware);
21
+ }
22
+ exports.mockGraphs = mockGraphs;
23
+ //# sourceMappingURL=mockGraphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockGraphs.js","sourceRoot":"","sources":["../../testkit/mockGraphs.ts"],"names":[],"mappings":";;;;;;AACA,0DAAgE;AAChE,2EAAwE;AAExE,wFAAgE;AAEhE,SAAgB,UAAU,CACxB,gBAA4F;IAE5F,MAAM,eAAe,GAAG,IAAI,KAAM,SAAQ,iCAAe;QACvD,OAAO,CAAQ,YAA+B,EAAE,KAAiC,EAAE,KAAa;YAC9F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAChC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,OAAO,IAAA,qBAAO,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAC1F;YACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;KACF,EAAE,CAAC;IACJ,uBAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AACpD,CAAC;AAbD,gCAaC"}
@@ -0,0 +1,3 @@
1
+ import { Model } from '../src/model/Model';
2
+ export declare function mockModel<T extends Model, S extends Partial<T>>(mock: S): T;
3
+ //# sourceMappingURL=mockModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockModel.d.ts","sourceRoot":"","sources":["../../testkit/mockModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,wBAAgB,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAO3E"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockModel = void 0;
4
+ const Model_1 = require("../src/model/Model");
5
+ function mockModel(mock) {
6
+ return new class extends Model_1.Model {
7
+ constructor() {
8
+ super();
9
+ Object.assign(this, mock);
10
+ }
11
+ }();
12
+ }
13
+ exports.mockModel = mockModel;
14
+ //# sourceMappingURL=mockModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockModel.js","sourceRoot":"","sources":["../../testkit/mockModel.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAE3C,SAAgB,SAAS,CAAwC,IAAO;IACtE,OAAO,IAAI,KAAM,SAAQ,aAAK;QAC5B;YACE,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;KACF,EAAO,CAAC;AACX,CAAC;AAPD,8BAOC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "scripts": {
6
6
  "prepack": "npm run lint && tsc --project tsconfig.prod.json",
package/src/index.ts CHANGED
@@ -28,3 +28,4 @@ export { OnNext, Unsubscribe } from './observable/types';
28
28
  export { Model } from './model/Model';
29
29
 
30
30
  export { testKit } from '../testkit';
31
+ export { mockModel, mockGraphs } from '../testkit/index';
@@ -18,6 +18,16 @@ export class Observable<T> implements IObservable<T> {
18
18
  this.subscribers.forEach((subscriber) => subscriber(value));
19
19
  }
20
20
 
21
+ async first(): Promise<T> {
22
+ if (this.currentValue) return this.currentValue;
23
+ return new Promise((resolve) => {
24
+ const unsubscribe = this.subscribe((value) => {
25
+ unsubscribe();
26
+ resolve(value);
27
+ });
28
+ });
29
+ }
30
+
21
31
  public subscribe(onNext: OnNext<T> = NOOP): Unsubscribe {
22
32
  if (this.subscribers.has(onNext)) {
23
33
  throw new Error('Subscriber already subscribed');
@@ -1,4 +1,6 @@
1
+ import { Observable } from '../Observable';
1
2
  import { MediatorObservable } from '../mediator/MediatorObservable';
3
+ import { OnNext } from '../types';
2
4
 
3
5
  export class ColdMediatorObservable<T extends object> extends MediatorObservable<T> {
4
6
  constructor(obj: T, private readonly handler = new PropertyAccessTrackingProxy<T>()) {
@@ -20,6 +22,11 @@ export class ColdMediatorObservable<T extends object> extends MediatorObservable
20
22
  this.handler.resumeTracking();
21
23
  }
22
24
  }
25
+
26
+ override addSource<S>(source: Observable<S>, onNext: OnNext<S>) {
27
+ source.subscribe(onNext);
28
+ return this;
29
+ }
23
30
  }
24
31
 
25
32
  class PropertyAccessTrackingProxy<T extends object> implements ProxyHandler<T> {
@@ -4,6 +4,9 @@ import { OnNext } from '../types';
4
4
  export class MediatorObservable<T> extends Observable<T> {
5
5
  addSource<S>(source: Observable<S>, onNext: OnNext<S>) {
6
6
  source.subscribe(onNext);
7
+ if (source.value !== undefined) {
8
+ onNext(source.value);
9
+ }
7
10
  return this;
8
11
  }
9
12
  }
@@ -1,4 +1,4 @@
1
- export type OnNext<T> = (value: T) => void;
1
+ export type OnNext<T> = (value: T) => void | undefined; // OnNext callbacks should never return a value
2
2
  export type Unsubscribe = () => void;
3
3
 
4
4
  export interface Observable<T> {
package/testkit/index.ts CHANGED
@@ -1,22 +1,19 @@
1
- import { GraphResolveChain } from '../src/graph/registry/GraphResolveChain';
2
- import { isGraph, ObjectGraph } from '../src/graph/ObjectGraph';
3
- import { GraphMiddleware } from '../src/graph/registry/GraphMiddleware';
1
+ import { ObjectGraph } from '../src/graph/ObjectGraph';
4
2
  import { Constructable } from '../src/types';
5
- import graphRegistry from '../src/graph/registry/GraphRegistry';
3
+ import { mockGraphs } from './mockGraphs';
6
4
 
7
5
  class TestKit {
6
+ /**
7
+ * @deprecated testKit.mockGraphs is deprecated, use mockGraphs instead
8
+ */
8
9
  public mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>) {
9
- const graphMiddleware = new class extends GraphMiddleware {
10
- resolve<Props>(resolveChain: GraphResolveChain, Graph: Constructable<ObjectGraph>, props?: Props) {
11
- if (graphNameToGraph[Graph.name]) {
12
- const GraphOrGenerator = graphNameToGraph[Graph.name];
13
- return isGraph(GraphOrGenerator) ? new GraphOrGenerator(props) : GraphOrGenerator(props);
14
- }
15
- return resolveChain.proceed(Graph, props);
16
- }
17
- }();
18
- graphRegistry.addGraphMiddleware(graphMiddleware);
10
+ // eslint-disable-next-line no-console
11
+ console.warn('testKit.mockGraphs is deprecated, use mockGraphs instead');
12
+ return mockGraphs(graphNameToGraph);
19
13
  }
20
14
  }
21
15
 
16
+ export { mockModel } from './mockModel';
17
+ export { mockGraphs };
18
+
22
19
  export const testKit = new TestKit();
@@ -0,0 +1,20 @@
1
+ import { GraphResolveChain } from '../src/graph/registry/GraphResolveChain';
2
+ import { isGraph, ObjectGraph } from '../src/graph/ObjectGraph';
3
+ import { GraphMiddleware } from '../src/graph/registry/GraphMiddleware';
4
+ import { Constructable } from '../src/types';
5
+ import graphRegistry from '../src/graph/registry/GraphRegistry';
6
+
7
+ export function mockGraphs(
8
+ graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>,
9
+ ) {
10
+ const graphMiddleware = new class extends GraphMiddleware {
11
+ resolve<Props>(resolveChain: GraphResolveChain, Graph: Constructable<ObjectGraph>, props?: Props) {
12
+ if (graphNameToGraph[Graph.name]) {
13
+ const GraphOrGenerator = graphNameToGraph[Graph.name];
14
+ return isGraph(GraphOrGenerator) ? new GraphOrGenerator(props) : GraphOrGenerator(props);
15
+ }
16
+ return resolveChain.proceed(Graph, props);
17
+ }
18
+ }();
19
+ graphRegistry.addGraphMiddleware(graphMiddleware);
20
+ }
@@ -0,0 +1,10 @@
1
+ import { Model } from '../src/model/Model';
2
+
3
+ export function mockModel<T extends Model, S extends Partial<T>>(mock: S): T {
4
+ return new class extends Model {
5
+ constructor() {
6
+ super();
7
+ Object.assign(this, mock);
8
+ }
9
+ }() as T;
10
+ }
@@ -1,10 +0,0 @@
1
- steps:
2
- - label: ":crossed_swords: Build"
3
- command: |
4
- nvm install
5
- npm install
6
- npm run test
7
- if [[ $(echo $BUILDKITE_MESSAGE | tr '[:upper:]' '[:lower:]') =~ release ]];then
8
- cp .buildkite/.npmrc .
9
- npm publish
10
- fi
package/.eslintignore DELETED
@@ -1 +0,0 @@
1
- dist/*
package/.eslintrc.json DELETED
@@ -1,105 +0,0 @@
1
- {
2
- "root": true,
3
- "env": {
4
- "es2021": true,
5
- "jest": true
6
- },
7
- "ignorePatterns": ["**/*.config.js"],
8
- "extends": [
9
- "airbnb-base",
10
- "airbnb-typescript",
11
- "plugin:react/recommended",
12
- "plugin:@typescript-eslint/recommended",
13
- "plugin:import/typescript"
14
- ],
15
- "parser": "@typescript-eslint/parser",
16
- "parserOptions": {
17
- "project": "./tsconfig.json",
18
- "ecmaVersion": 2021,
19
- "sourceType": "module",
20
- "ecmaFeatures": {
21
- "jsx": true
22
- }
23
- },
24
- "plugins": [
25
- "react",
26
- "@typescript-eslint",
27
- "import-newlines",
28
- "unused-imports"
29
- ],
30
- "rules": {
31
- "max-len": ["error", {"code": 115}],
32
- "lines-between-class-members": ["error", "always", {"exceptAfterSingleLine": true}],
33
- "import/extensions": "off",
34
- "@typescript-eslint/no-non-null-assertion": "off",
35
- "no-useless-constructor": "off",
36
- "@typescript-eslint/member-delimiter-style": "error",
37
- "import/no-unresolved": "off",
38
- "class-methods-use-this": "off",
39
- "react/jsx-filename-extension": ["error", {"extensions": [".js", ".ts", ".jsx", ".tsx"]}],
40
- "react/jsx-props-no-spreading": "off",
41
- "no-use-before-define": "off",
42
- "@typescript-eslint/no-use-before-define": ["off"],
43
- "no-restricted-syntax": "off",
44
- "import/no-named-as-default": "off",
45
- "@typescript-eslint/ban-types": ["off"],
46
- "import/no-extraneous-dependencies": ["error", {"devDependencies": true}],
47
- "max-classes-per-file": ["off"],
48
- "curly": ["error", "multi-line"],
49
- "semi": ["error", "always"],
50
- "comma-dangle": ["error", "always-multiline"],
51
- "function-call-argument-newline": ["error", "consistent"],
52
- "function-paren-newline": ["error", "multiline-arguments"],
53
- "object-curly-newline": [
54
- "error",
55
- {
56
- "ObjectExpression": {
57
- "multiline": true,
58
- "consistent": true
59
- },
60
- "ObjectPattern": {
61
- "multiline": true,
62
- "consistent": true
63
- }
64
- }
65
- ],
66
- "no-whitespace-before-property": "error",
67
- "import-newlines/enforce": [
68
- "error",
69
- {
70
- "items": 3,
71
- "max-len": 115,
72
- "semi": false
73
- }
74
- ],
75
- "react/display-name": "off",
76
- "no-plusplus": "off",
77
- "no-trailing-spaces": "error",
78
- "no-shadow": "off",
79
- "@typescript-eslint/no-shadow": ["error", {"allow": ["Graph"]}],
80
- "react/button-has-type": "off",
81
- "react/jsx-one-expression-per-line": ["off"],
82
- "arrow-body-style": ["off"],
83
- "@typescript-eslint/quotes": ["error", "single", {"avoidEscape": true, "allowTemplateLiterals": true}],
84
- "@typescript-eslint/lines-between-class-members": "off",
85
- "@typescript-eslint/no-explicit-any": "off",
86
- "import/prefer-default-export": "off",
87
- "@typescript-eslint/no-unused-vars": "off",
88
- "unused-imports/no-unused-imports": "error",
89
- "unused-imports/no-unused-vars": [
90
- "error",
91
- { "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" }
92
- ],
93
- "@typescript-eslint/ban-ts-comment": "off"
94
- },
95
- "settings": {
96
- "import/resolver": {
97
- "node": {
98
- "extensions": [".js", ".jsx", ".ts", ".tsx"]
99
- }
100
- },
101
- "react": {
102
- "version": "detect"
103
- }
104
- }
105
- }
@@ -1,6 +0,0 @@
1
- {
2
- "cSpell.words": [
3
- "Middlewares",
4
- "unmagler"
5
- ]
6
- }
package/babel.config.js DELETED
@@ -1,13 +0,0 @@
1
- module.exports = {
2
- presets: [
3
- ['@babel/preset-env', { targets: { node: 'current' }}],
4
- ['@babel/preset-typescript', {'onlyRemoveTypeImports': true}],
5
- '@babel/preset-react',
6
- ],
7
- plugins: [
8
- `${__dirname}/dist/transformers/babel-plugin-obsidian`,
9
- ['@babel/plugin-proposal-decorators', { legacy: true }],
10
- '@babel/plugin-transform-class-properties',
11
- 'babel-plugin-parameter-decorator'
12
- ],
13
- };
@@ -1,41 +0,0 @@
1
- # Website
2
-
3
- This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
4
-
5
- ### Installation
6
-
7
- ```
8
- $ yarn
9
- ```
10
-
11
- ### Local Development
12
-
13
- ```
14
- $ yarn start
15
- ```
16
-
17
- This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18
-
19
- ### Build
20
-
21
- ```
22
- $ yarn build
23
- ```
24
-
25
- This command generates static content into the `build` directory and can be served using any static contents hosting service.
26
-
27
- ### Deployment
28
-
29
- Using SSH:
30
-
31
- ```
32
- $ USE_SSH=true yarn deploy
33
- ```
34
-
35
- Not using SSH:
36
-
37
- ```
38
- $ GIT_USER=<Your GitHub username> yarn deploy
39
- ```
40
-
41
- If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.