Platform-Node.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. define(["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  2. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. var $pkg = $core.addPackage("Platform-Node");
  4. $pkg.imports = ["amber/core/Platform-Services"];
  5. //>>excludeStart("imports", pragmas.excludeImports);
  6. $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/core/Platform-Services"], function () {resolve();}, reject); });
  7. //>>excludeEnd("imports");
  8. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  9. $core.addClass("NodePlatform", $globals.Object, "Platform-Node");
  10. //>>excludeStart("ide", pragmas.excludeIdeData);
  11. $globals.NodePlatform.comment="I am `Platform` service implementation for node-like environment.";
  12. //>>excludeEnd("ide");
  13. $core.addMethod(
  14. $core.method({
  15. selector: "fetch:",
  16. protocol: "public API",
  17. //>>excludeStart("ide", pragmas.excludeIdeData);
  18. args: ["aStringOrObject"],
  19. source: "fetch: aStringOrObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aStringOrObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
  20. referencedClasses: ["Promise"],
  21. //>>excludeEnd("ide");
  22. pragmas: [],
  23. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:", "signal:"]
  24. }, function ($methodClass){ return function (aStringOrObject){
  25. var self=this,$self=this;
  26. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27. return $core.withContext(function($ctx1) {
  28. //>>excludeEnd("ctx");
  29. return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  30. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31. return $core.withContext(function($ctx2) {
  32. //>>excludeEnd("ctx");
  33. return $recv(fetch)._value_(aStringOrObject);
  34. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  36. //>>excludeEnd("ctx");
  37. }),(function(){
  38. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39. return $core.withContext(function($ctx2) {
  40. //>>excludeEnd("ctx");
  41. return $recv($globals.Promise)._signal_("fetch not available.");
  42. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  44. //>>excludeEnd("ctx");
  45. }));
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
  48. //>>excludeEnd("ctx");
  49. }; }),
  50. $globals.NodePlatform);
  51. $core.addMethod(
  52. $core.method({
  53. selector: "fetchUrl:options:",
  54. protocol: "public API",
  55. //>>excludeStart("ide", pragmas.excludeIdeData);
  56. args: ["aString", "anObject"],
  57. source: "fetchUrl: aString options: anObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aString value: anObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
  58. referencedClasses: ["Promise"],
  59. //>>excludeEnd("ide");
  60. pragmas: [],
  61. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:value:", "signal:"]
  62. }, function ($methodClass){ return function (aString,anObject){
  63. var self=this,$self=this;
  64. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65. return $core.withContext(function($ctx1) {
  66. //>>excludeEnd("ctx");
  67. return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  68. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69. return $core.withContext(function($ctx2) {
  70. //>>excludeEnd("ctx");
  71. return $recv(fetch)._value_value_(aString,anObject);
  72. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  74. //>>excludeEnd("ctx");
  75. }),(function(){
  76. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77. return $core.withContext(function($ctx2) {
  78. //>>excludeEnd("ctx");
  79. return $recv($globals.Promise)._signal_("fetch not available.");
  80. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  82. //>>excludeEnd("ctx");
  83. }));
  84. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85. }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
  86. //>>excludeEnd("ctx");
  87. }; }),
  88. $globals.NodePlatform);
  89. $core.addMethod(
  90. $core.method({
  91. selector: "globals",
  92. protocol: "accessing",
  93. //>>excludeStart("ide", pragmas.excludeIdeData);
  94. args: [],
  95. source: "globals\x0a\x09^ global",
  96. referencedClasses: [],
  97. //>>excludeEnd("ide");
  98. pragmas: [],
  99. messageSends: []
  100. }, function ($methodClass){ return function (){
  101. var self=this,$self=this;
  102. return global;
  103. }; }),
  104. $globals.NodePlatform);
  105. $core.addMethod(
  106. $core.method({
  107. selector: "newXhr",
  108. protocol: "public API",
  109. //>>excludeStart("ide", pragmas.excludeIdeData);
  110. args: [],
  111. source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ XMLHttpRequest new ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
  112. referencedClasses: ["XMLHttpRequest"],
  113. //>>excludeEnd("ide");
  114. pragmas: [],
  115. messageSends: ["ifNotNil:ifNil:", "new", "error:"]
  116. }, function ($methodClass){ return function (){
  117. var self=this,$self=this;
  118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  119. return $core.withContext(function($ctx1) {
  120. //>>excludeEnd("ctx");
  121. var $1;
  122. $1=$globals.XMLHttpRequest;
  123. if($1 == null || $1.a$nil){
  124. $self._error_("XMLHttpRequest not available.");
  125. } else {
  126. return $recv($globals.XMLHttpRequest)._new();
  127. }
  128. return self;
  129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  130. }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
  131. //>>excludeEnd("ctx");
  132. }; }),
  133. $globals.NodePlatform);
  134. $core.addMethod(
  135. $core.method({
  136. selector: "initialize",
  137. protocol: "testing",
  138. //>>excludeStart("ide", pragmas.excludeIdeData);
  139. args: [],
  140. source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
  141. referencedClasses: ["Platform"],
  142. //>>excludeEnd("ide");
  143. pragmas: [],
  144. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  145. }, function ($methodClass){ return function (){
  146. var self=this,$self=this;
  147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  148. return $core.withContext(function($ctx1) {
  149. //>>excludeEnd("ctx");
  150. if($core.assert($self._isFeasible())){
  151. $recv($globals.Platform)._registerIfNone_($self._new());
  152. }
  153. return self;
  154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  155. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  156. //>>excludeEnd("ctx");
  157. }; }),
  158. $globals.NodePlatform.a$cls);
  159. $core.addMethod(
  160. $core.method({
  161. selector: "isFeasible",
  162. protocol: "testing",
  163. //>>excludeStart("ide", pragmas.excludeIdeData);
  164. args: [],
  165. source: "isFeasible\x0a<inlineJS: 'return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null'>",
  166. referencedClasses: [],
  167. //>>excludeEnd("ide");
  168. pragmas: [["inlineJS:", ["return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null"]]],
  169. messageSends: []
  170. }, function ($methodClass){ return function (){
  171. var self=this,$self=this;
  172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  173. return $core.withContext(function($ctx1) {
  174. //>>excludeEnd("ctx");
  175. return typeof process !== "undefined" && process && process.versions && process.versions.node != null;
  176. return self;
  177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  178. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  179. //>>excludeEnd("ctx");
  180. }; }),
  181. $globals.NodePlatform.a$cls);
  182. });