@jsenv/core 27.0.0-alpha.64 → 27.0.0-alpha.65

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 (146) hide show
  1. package/dist/html/explorer.html +557 -0
  2. package/dist/js/controllable_file.mjs +227 -0
  3. package/dist/{event_source_client.js → js/event_source_client.js} +19 -244
  4. package/dist/js/global_this.js +32 -0
  5. package/dist/js/html_supervisor_installer.js +522 -0
  6. package/dist/js/html_supervisor_setup.js +79 -0
  7. package/dist/{import_meta_hot.js → js/import_meta_hot.js} +1 -3
  8. package/dist/js/inline_content.js +8 -0
  9. package/dist/js/new_stylesheet.js +409 -0
  10. package/dist/js/regenerator_runtime.js +721 -0
  11. package/dist/js/s.js +429 -0
  12. package/dist/main.js +13362 -0
  13. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
  14. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  15. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
  16. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
  17. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  18. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  19. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  20. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  21. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  22. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  23. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  24. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  25. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  26. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  27. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  28. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  29. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  30. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  31. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  32. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  33. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  34. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  35. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  36. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  37. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  38. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  39. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  40. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  41. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  42. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  43. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/construct/construct.js +15 -0
  44. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createClass/createClass.js +18 -0
  45. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  46. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  47. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  48. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createSuper/createSuper.js +22 -0
  49. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/decorate/decorate.js +622 -0
  50. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defaults/defaults.js +14 -0
  51. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  52. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defineProperty/defineProperty.js +19 -0
  53. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/extends/extends.js +16 -0
  54. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/get/get.js +21 -0
  55. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  56. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/inherits/inherits.js +21 -0
  57. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  58. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  59. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  60. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/instanceof/instanceof.js +7 -0
  61. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  62. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  63. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  64. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  65. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  66. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  67. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  68. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/jsx/jsx.js +49 -0
  69. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  70. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  71. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  72. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  73. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  74. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectSpread/objectSpread.js +22 -0
  75. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  76. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  77. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  78. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  79. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  80. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/readme.md +8 -0
  81. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/set/set.js +51 -0
  82. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  83. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  84. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  85. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  86. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/superPropBase/superPropBase.js +10 -0
  87. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  88. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  89. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/tdz/tdz.js +4 -0
  90. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/temporalRef/temporalRef.js +5 -0
  91. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  92. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toArray/toArray.js +5 -0
  93. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  94. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  95. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  96. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/typeof/typeof.js +7 -0
  97. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  98. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  99. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  100. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  101. package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  102. package/dist/other/jsenv.png +0 -0
  103. package/package.json +15 -11
  104. package/src/build/build.js +152 -67
  105. package/src/build/build_urls_generator.js +18 -2
  106. package/src/build/inject_service_worker_urls.js +1 -1
  107. package/src/build/resync_ressource_hints.js +56 -9
  108. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  109. package/src/dev/start_dev_server.js +17 -3
  110. package/src/execute/execute.js +3 -0
  111. package/src/omega/errors.js +10 -7
  112. package/src/omega/kitchen.js +209 -216
  113. package/src/omega/url_graph/url_graph_report.js +2 -2
  114. package/src/omega/url_graph.js +1 -1
  115. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +5 -10
  116. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +1 -3
  117. package/src/plugins/bundling/js_module/bundle_js_module.js +66 -24
  118. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +171 -53
  119. package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +9 -13
  120. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +6 -6
  121. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +5 -10
  122. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +12 -2
  123. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  124. package/src/plugins/plugin_controller.js +17 -3
  125. package/src/plugins/plugins.js +16 -19
  126. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +7 -13
  127. package/src/plugins/transpilation/as_js_classic/{jsenv_plugin_script_type_module_as_classic.js → jsenv_plugin_as_js_classic_html.js} +0 -0
  128. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +1 -2
  129. package/src/plugins/url_analysis/html/html_urls.js +3 -0
  130. package/src/plugins/url_analysis/js/js_urls.js +2 -1
  131. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +87 -1
  132. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +3 -0
  133. package/src/plugins/url_resolution/jsenv_plugin_url_resolution.js +0 -3
  134. package/src/test/execute_plan.js +2 -0
  135. package/dist/event_source_client.js.map +0 -188
  136. package/dist/html_supervisor_installer.js +0 -1236
  137. package/dist/html_supervisor_installer.js.map +0 -337
  138. package/dist/html_supervisor_setup.js +0 -95
  139. package/dist/html_supervisor_setup.js.map +0 -57
  140. package/dist/import_meta_hot.js.map +0 -42
  141. package/dist/s.js +0 -626
  142. package/dist/s.js.map +0 -207
  143. package/src/jsenv_root_directory_url.js +0 -1
  144. package/src/omega/compat/default_runtime_compat.js +0 -11
  145. package/src/plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -61
  146. package/src/plugins/transpilation/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
@@ -0,0 +1,50 @@
1
+ /* globals REACT_ELEMENT_TYPE */
2
+ export default function _createRawReactElement(type, props, key, children) {
3
+ if (!REACT_ELEMENT_TYPE) {
4
+ // eslint-disable-next-line no-native-reassign
5
+ REACT_ELEMENT_TYPE = typeof Symbol === "function" && // "for" is a reserved keyword in ES3 so escaping it here for backward compatibility
6
+ Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
7
+ }
8
+
9
+ var defaultProps = type && type.defaultProps;
10
+ var childrenLength = arguments.length - 3;
11
+
12
+ if (!props && childrenLength !== 0) {
13
+ // If we're going to assign props.children, we create a new object now
14
+ // to avoid mutating defaultProps.
15
+ props = {
16
+ children: void 0
17
+ };
18
+ }
19
+
20
+ if (childrenLength === 1) {
21
+ props.children = children;
22
+ } else if (childrenLength > 1) {
23
+ var childArray = new Array(childrenLength);
24
+
25
+ for (var i = 0; i < childrenLength; i++) {
26
+ childArray[i] = arguments[i + 3];
27
+ }
28
+
29
+ props.children = childArray;
30
+ }
31
+
32
+ if (props && defaultProps) {
33
+ for (var propName in defaultProps) {
34
+ if (props[propName] === void 0) {
35
+ props[propName] = defaultProps[propName];
36
+ }
37
+ }
38
+ } else if (!props) {
39
+ props = defaultProps || {};
40
+ }
41
+
42
+ return {
43
+ $$typeof: REACT_ELEMENT_TYPE,
44
+ type: type,
45
+ key: key === undefined ? null : "" + key,
46
+ ref: null,
47
+ props: props,
48
+ _owner: null
49
+ };
50
+ }
@@ -0,0 +1,22 @@
1
+ import getPrototypeOf from "../getPrototypeOf/getPrototypeOf.js";
2
+ import isNativeReflectConstruct from "../isNativeReflectConstruct/isNativeReflectConstruct.js";
3
+ import possibleConstructorReturn from "../possibleConstructorReturn/possibleConstructorReturn.js";
4
+ export default function _createSuper(Derived) {
5
+ var hasNativeReflectConstruct = isNativeReflectConstruct();
6
+ return function _createSuperInternal() {
7
+ var Super = getPrototypeOf(Derived);
8
+ var result;
9
+
10
+ if (hasNativeReflectConstruct) {
11
+ // NOTE: This doesn't work if this.__proto__.constructor has been modified.
12
+ var NewTarget = getPrototypeOf(this).constructor; // eslint-disable-next-line prefer-rest-params
13
+
14
+ result = Reflect.construct(Super, arguments, NewTarget);
15
+ } else {
16
+ // eslint-disable-next-line prefer-rest-params
17
+ result = Super.apply(this, arguments);
18
+ }
19
+
20
+ return possibleConstructorReturn(this, result);
21
+ };
22
+ }
@@ -0,0 +1,622 @@
1
+ /* eslint-disable block-scoped-var */
2
+
3
+ /* eslint-disable no-nested-ternary */
4
+
5
+ /* eslint-disable no-negated-condition */
6
+
7
+ /* eslint-disable consistent-return */
8
+
9
+ /* eslint-disable prefer-spread */
10
+
11
+ /* eslint-disable no-void */
12
+
13
+ /* eslint-disable no-sequences */
14
+ import toArray from "../toArray/toArray.js";
15
+ import toPropertyKey from "../toPropertyKey/toPropertyKey.js"; // ClassDefinitionEvaluation (Steps 26-*)
16
+
17
+ export default function _decorate(decorators
18
+ /* : ClassDecorator[] */
19
+ , factory
20
+ /* : ClassFactory */
21
+ , superClass
22
+ /* : ?Class<*> */
23
+ , mixins
24
+ /* : ?Array<Function> */
25
+ )
26
+ /* : Class<*> */
27
+ {
28
+ var api = _getDecoratorsApi();
29
+
30
+ if (mixins) {
31
+ for (var i = 0; i < mixins.length; i++) {
32
+ api = mixins[i](api);
33
+ }
34
+ }
35
+
36
+ var r = factory(function initialize(O) {
37
+ api.initializeInstanceElements(O, decorated.elements);
38
+ }, superClass);
39
+ var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
40
+ api.initializeClassElements(r.F, decorated.elements);
41
+ return api.runClassFinishers(r.F, decorated.finishers);
42
+ }
43
+
44
+ var _getDecoratorsApi = function () {
45
+ var api = {
46
+ elementsDefinitionOrder: [["method"], ["field"]],
47
+
48
+ // InitializeInstanceElements
49
+ initializeInstanceElements(
50
+ /* ::<C>*/
51
+ O
52
+ /* : C */
53
+ , elements
54
+ /* : ElementDescriptor[] */
55
+ ) {
56
+ ;
57
+ ["method", "field"].forEach(function (kind) {
58
+ elements.forEach(function (element
59
+ /* : ElementDescriptor */
60
+ ) {
61
+ if (element.kind === kind && element.placement === "own") {
62
+ this.defineClassElement(O, element);
63
+ }
64
+ }, this);
65
+ }, this);
66
+ },
67
+
68
+ // InitializeClassElements
69
+ initializeClassElements(
70
+ /* ::<C>*/
71
+ F
72
+ /* : Class<C> */
73
+ , elements
74
+ /* : ElementDescriptor[] */
75
+ ) {
76
+ var proto = F.prototype;
77
+ ["method", "field"].forEach(function (kind) {
78
+ elements.forEach(function (element
79
+ /* : ElementDescriptor */
80
+ ) {
81
+ var placement = element.placement;
82
+
83
+ if (element.kind === kind && (placement === "static" || placement === "prototype")) {
84
+ var receiver = placement === "static" ? F : proto;
85
+ this.defineClassElement(receiver, element);
86
+ }
87
+ }, this);
88
+ }, this);
89
+ },
90
+
91
+ // DefineClassElement
92
+ defineClassElement(
93
+ /* ::<C>*/
94
+ receiver
95
+ /* : C | Class<C> */
96
+ , element
97
+ /* : ElementDescriptor */
98
+ ) {
99
+ var descriptor
100
+ /* : PropertyDescriptor */
101
+ = element.descriptor;
102
+
103
+ if (element.kind === "field") {
104
+ var initializer = element.initializer;
105
+ descriptor = {
106
+ enumerable: descriptor.enumerable,
107
+ writable: descriptor.writable,
108
+ configurable: descriptor.configurable,
109
+ value: initializer === void 0 ? void 0 : initializer.call(receiver)
110
+ };
111
+ }
112
+
113
+ Object.defineProperty(receiver, element.key, descriptor);
114
+ },
115
+
116
+ // DecorateClass
117
+ decorateClass(elements
118
+ /* : ElementDescriptor[] */
119
+ , decorators
120
+ /* : ClassDecorator[] */
121
+ )
122
+ /* : ElementsFinishers */
123
+ {
124
+ var newElements
125
+ /* : ElementDescriptor[] */
126
+ = [];
127
+ var finishers
128
+ /* : ClassFinisher[] */
129
+ = [];
130
+ var placements
131
+ /* : Placements */
132
+ = {
133
+ static: [],
134
+ prototype: [],
135
+ own: []
136
+ };
137
+ elements.forEach(function (element
138
+ /* : ElementDescriptor */
139
+ ) {
140
+ this.addElementPlacement(element, placements);
141
+ }, this);
142
+ elements.forEach(function (element
143
+ /* : ElementDescriptor */
144
+ ) {
145
+ if (!_hasDecorators(element)) return newElements.push(element);
146
+ var elementFinishersExtras
147
+ /* : ElementFinishersExtras */
148
+ = this.decorateElement(element, placements);
149
+ newElements.push(elementFinishersExtras.element);
150
+ newElements.push.apply(newElements, elementFinishersExtras.extras);
151
+ finishers.push.apply(finishers, elementFinishersExtras.finishers);
152
+ }, this);
153
+
154
+ if (!decorators) {
155
+ return {
156
+ elements: newElements,
157
+ finishers
158
+ };
159
+ }
160
+
161
+ var result
162
+ /* : ElementsFinishers */
163
+ = this.decorateConstructor(newElements, decorators);
164
+ finishers.push.apply(finishers, result.finishers);
165
+ result.finishers = finishers;
166
+ return result;
167
+ },
168
+
169
+ // AddElementPlacement
170
+ addElementPlacement(element
171
+ /* : ElementDescriptor */
172
+ , placements
173
+ /* : Placements */
174
+ , silent
175
+ /* : boolean */
176
+ ) {
177
+ var keys = placements[element.placement];
178
+
179
+ if (!silent && keys.indexOf(element.key) !== -1) {
180
+ throw new TypeError(`Duplicated element (${element.key})`);
181
+ }
182
+
183
+ keys.push(element.key);
184
+ },
185
+
186
+ // DecorateElement
187
+ decorateElement(element
188
+ /* : ElementDescriptor */
189
+ , placements
190
+ /* : Placements */
191
+ )
192
+ /* : ElementFinishersExtras */
193
+ {
194
+ var extras
195
+ /* : ElementDescriptor[] */
196
+ = [];
197
+ var finishers
198
+ /* : ClassFinisher[] */
199
+ = [];
200
+
201
+ for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
202
+ // (inlined) RemoveElementPlacement
203
+ var keys = placements[element.placement];
204
+ keys.splice(keys.indexOf(element.key), 1);
205
+ var elementObject
206
+ /* : ElementObjectInput */
207
+ = this.fromElementDescriptor(element);
208
+ var elementFinisherExtras
209
+ /* : ElementFinisherExtras */
210
+ = this.toElementFinisherExtras((0, decorators[i])(elementObject)
211
+ /* : ElementObjectOutput */
212
+ || elementObject);
213
+ element = elementFinisherExtras.element;
214
+ this.addElementPlacement(element, placements);
215
+
216
+ if (elementFinisherExtras.finisher) {
217
+ finishers.push(elementFinisherExtras.finisher);
218
+ }
219
+
220
+ var newExtras
221
+ /* : ElementDescriptor[] | void */
222
+ = elementFinisherExtras.extras;
223
+
224
+ if (newExtras) {
225
+ for (var j = 0; j < newExtras.length; j++) {
226
+ this.addElementPlacement(newExtras[j], placements);
227
+ }
228
+
229
+ extras.push.apply(extras, newExtras);
230
+ }
231
+ }
232
+
233
+ return {
234
+ element,
235
+ finishers,
236
+ extras
237
+ };
238
+ },
239
+
240
+ // DecorateConstructor
241
+ decorateConstructor(elements
242
+ /* : ElementDescriptor[] */
243
+ , decorators
244
+ /* : ClassDecorator[] */
245
+ )
246
+ /* : ElementsFinishers */
247
+ {
248
+ var finishers
249
+ /* : ClassFinisher[] */
250
+ = [];
251
+
252
+ for (var i = decorators.length - 1; i >= 0; i--) {
253
+ var obj
254
+ /* : ClassObject */
255
+ = this.fromClassDescriptor(elements);
256
+ var elementsAndFinisher
257
+ /* : ElementsFinisher */
258
+ = this.toClassDescriptor((0, decorators[i])(obj)
259
+ /* : ClassObject */
260
+ || obj);
261
+
262
+ if (elementsAndFinisher.finisher !== undefined) {
263
+ finishers.push(elementsAndFinisher.finisher);
264
+ }
265
+
266
+ if (elementsAndFinisher.elements !== undefined) {
267
+ elements = elementsAndFinisher.elements;
268
+
269
+ for (var j = 0; j < elements.length - 1; j++) {
270
+ for (var k = j + 1; k < elements.length; k++) {
271
+ if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
272
+ throw new TypeError(`Duplicated element (${elements[j].key})`);
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+
279
+ return {
280
+ elements,
281
+ finishers
282
+ };
283
+ },
284
+
285
+ // FromElementDescriptor
286
+ fromElementDescriptor(element
287
+ /* : ElementDescriptor */
288
+ )
289
+ /* : ElementObject */
290
+ {
291
+ var obj
292
+ /* : ElementObject */
293
+ = {
294
+ kind: element.kind,
295
+ key: element.key,
296
+ placement: element.placement,
297
+ descriptor: element.descriptor
298
+ };
299
+ var desc = {
300
+ value: "Descriptor",
301
+ configurable: true
302
+ };
303
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
304
+ if (element.kind === "field") obj.initializer = element.initializer;
305
+ return obj;
306
+ },
307
+
308
+ // ToElementDescriptors
309
+ toElementDescriptors(elementObjects
310
+ /* : ElementObject[] */
311
+ )
312
+ /* : ElementDescriptor[] */
313
+ {
314
+ if (elementObjects === undefined) return;
315
+ return toArray(elementObjects).map(function (elementObject) {
316
+ var element = this.toElementDescriptor(elementObject);
317
+ this.disallowProperty(elementObject, "finisher", "An element descriptor");
318
+ this.disallowProperty(elementObject, "extras", "An element descriptor");
319
+ return element;
320
+ }, this);
321
+ },
322
+
323
+ // ToElementDescriptor
324
+ toElementDescriptor(elementObject
325
+ /* : ElementObject */
326
+ )
327
+ /* : ElementDescriptor */
328
+ {
329
+ var kind = String(elementObject.kind);
330
+
331
+ if (kind !== "method" && kind !== "field") {
332
+ throw new TypeError(`${'An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "'}${kind}"`);
333
+ }
334
+
335
+ var key = toPropertyKey(elementObject.key);
336
+ var placement = String(elementObject.placement);
337
+
338
+ if (placement !== "static" && placement !== "prototype" && placement !== "own") {
339
+ throw new TypeError(`${'An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "'}${placement}"`);
340
+ }
341
+
342
+ var descriptor
343
+ /* : PropertyDescriptor */
344
+ = elementObject.descriptor;
345
+ this.disallowProperty(elementObject, "elements", "An element descriptor");
346
+ var element
347
+ /* : ElementDescriptor */
348
+ = {
349
+ kind,
350
+ key,
351
+ placement,
352
+ descriptor: Object.assign({}, descriptor)
353
+ };
354
+
355
+ if (kind !== "field") {
356
+ this.disallowProperty(elementObject, "initializer", "A method descriptor");
357
+ } else {
358
+ this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
359
+ this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
360
+ this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
361
+ element.initializer = elementObject.initializer;
362
+ }
363
+
364
+ return element;
365
+ },
366
+
367
+ toElementFinisherExtras(elementObject
368
+ /* : ElementObject */
369
+ )
370
+ /* : ElementFinisherExtras */
371
+ {
372
+ var element
373
+ /* : ElementDescriptor */
374
+ = this.toElementDescriptor(elementObject);
375
+
376
+ var finisher
377
+ /* : ClassFinisher */
378
+ = _optionalCallableProperty(elementObject, "finisher");
379
+
380
+ var extras
381
+ /* : ElementDescriptors[] */
382
+ = this.toElementDescriptors(elementObject.extras);
383
+ return {
384
+ element,
385
+ finisher,
386
+ extras
387
+ };
388
+ },
389
+
390
+ // FromClassDescriptor
391
+ fromClassDescriptor(elements
392
+ /* : ElementDescriptor[] */
393
+ )
394
+ /* : ClassObject */
395
+ {
396
+ var obj = {
397
+ kind: "class",
398
+ elements: elements.map(this.fromElementDescriptor, this)
399
+ };
400
+ var desc = {
401
+ value: "Descriptor",
402
+ configurable: true
403
+ };
404
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
405
+ return obj;
406
+ },
407
+
408
+ // ToClassDescriptor
409
+ toClassDescriptor(obj
410
+ /* : ClassObject */
411
+ )
412
+ /* : ElementsFinisher */
413
+ {
414
+ var kind = String(obj.kind);
415
+
416
+ if (kind !== "class") {
417
+ throw new TypeError(`${'A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "'}${kind}"`);
418
+ }
419
+
420
+ this.disallowProperty(obj, "key", "A class descriptor");
421
+ this.disallowProperty(obj, "placement", "A class descriptor");
422
+ this.disallowProperty(obj, "descriptor", "A class descriptor");
423
+ this.disallowProperty(obj, "initializer", "A class descriptor");
424
+ this.disallowProperty(obj, "extras", "A class descriptor");
425
+
426
+ var finisher = _optionalCallableProperty(obj, "finisher");
427
+
428
+ var elements = this.toElementDescriptors(obj.elements);
429
+ return {
430
+ elements,
431
+ finisher
432
+ };
433
+ },
434
+
435
+ // RunClassFinishers
436
+ runClassFinishers(constructor
437
+ /* : Class<*> */
438
+ , finishers
439
+ /* : ClassFinisher[] */
440
+ )
441
+ /* : Class<*> */
442
+ {
443
+ for (var i = 0; i < finishers.length; i++) {
444
+ var newConstructor
445
+ /* : ?Class<*> */
446
+ = (0, finishers[i])(constructor);
447
+
448
+ if (newConstructor !== undefined) {
449
+ // NOTE: This should check if IsConstructor(newConstructor) is false.
450
+ if (typeof newConstructor !== "function") {
451
+ throw new TypeError("Finishers must return a constructor.");
452
+ }
453
+
454
+ constructor = newConstructor;
455
+ }
456
+ }
457
+
458
+ return constructor;
459
+ },
460
+
461
+ disallowProperty(obj, name, objectType) {
462
+ if (obj[name] !== undefined) {
463
+ throw new TypeError(`${objectType} can't have a .${name} property.`);
464
+ }
465
+ }
466
+
467
+ };
468
+
469
+ _getDecoratorsApi = function () {
470
+ return api;
471
+ };
472
+
473
+ return api;
474
+ }; // ClassElementEvaluation
475
+
476
+
477
+ function _createElementDescriptor(def
478
+ /* : ElementDefinition */
479
+ )
480
+ /* : ElementDescriptor */
481
+ {
482
+ var key = toPropertyKey(def.key);
483
+ var descriptor;
484
+ /* : PropertyDescriptor */
485
+
486
+ if (def.kind === "method") {
487
+ descriptor = {
488
+ value: def.value,
489
+ writable: true,
490
+ configurable: true,
491
+ enumerable: false
492
+ };
493
+ } else if (def.kind === "get") {
494
+ descriptor = {
495
+ get: def.value,
496
+ configurable: true,
497
+ enumerable: false
498
+ };
499
+ } else if (def.kind === "set") {
500
+ descriptor = {
501
+ set: def.value,
502
+ configurable: true,
503
+ enumerable: false
504
+ };
505
+ } else if (def.kind === "field") {
506
+ descriptor = {
507
+ configurable: true,
508
+ writable: true,
509
+ enumerable: true
510
+ };
511
+ }
512
+
513
+ var element
514
+ /* : ElementDescriptor */
515
+ = {
516
+ kind: def.kind === "field" ? "field" : "method",
517
+ key,
518
+ placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype",
519
+ descriptor
520
+ };
521
+ if (def.decorators) element.decorators = def.decorators;
522
+ if (def.kind === "field") element.initializer = def.value;
523
+ return element;
524
+ } // CoalesceGetterSetter
525
+
526
+
527
+ function _coalesceGetterSetter(element
528
+ /* : ElementDescriptor */
529
+ , other
530
+ /* : ElementDescriptor */
531
+ ) {
532
+ if (element.descriptor.get !== undefined) {
533
+ other.descriptor.get = element.descriptor.get;
534
+ } else {
535
+ other.descriptor.set = element.descriptor.set;
536
+ }
537
+ } // CoalesceClassElements
538
+
539
+
540
+ function _coalesceClassElements(elements
541
+ /* : ElementDescriptor[] */
542
+ )
543
+ /* : ElementDescriptor[] */
544
+ {
545
+ var newElements
546
+ /* : ElementDescriptor[] */
547
+ = [];
548
+
549
+ var isSameElement = function (other
550
+ /* : ElementDescriptor */
551
+ )
552
+ /* : boolean */
553
+ {
554
+ return other.kind === "method" && other.key === element.key && other.placement === element.placement;
555
+ };
556
+
557
+ for (var i = 0; i < elements.length; i++) {
558
+ var element
559
+ /* : ElementDescriptor */
560
+ = elements[i];
561
+ var other;
562
+ /* : ElementDescriptor */
563
+
564
+ if (element.kind === "method" && (other = newElements.find(isSameElement))) {
565
+ if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
566
+ if (_hasDecorators(element) || _hasDecorators(other)) {
567
+ throw new ReferenceError(`Duplicated methods (${element.key}) can't be decorated.`);
568
+ }
569
+
570
+ other.descriptor = element.descriptor;
571
+ } else {
572
+ if (_hasDecorators(element)) {
573
+ if (_hasDecorators(other)) {
574
+ throw new ReferenceError(`${"Decorators can't be placed on different accessors with for " + "the same property ("}${element.key}).`);
575
+ }
576
+
577
+ other.decorators = element.decorators;
578
+ }
579
+
580
+ _coalesceGetterSetter(element, other);
581
+ }
582
+ } else {
583
+ newElements.push(element);
584
+ }
585
+ }
586
+
587
+ return newElements;
588
+ }
589
+
590
+ function _hasDecorators(element
591
+ /* : ElementDescriptor */
592
+ )
593
+ /* : boolean */
594
+ {
595
+ return element.decorators && element.decorators.length;
596
+ }
597
+
598
+ function _isDataDescriptor(desc
599
+ /* : PropertyDescriptor */
600
+ )
601
+ /* : boolean */
602
+ {
603
+ return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
604
+ }
605
+
606
+ function _optionalCallableProperty
607
+ /* ::<T>*/
608
+ (obj
609
+ /* : T */
610
+ , name
611
+ /* : $Keys<T> */
612
+ )
613
+ /* : ?Function */
614
+ {
615
+ var value = obj[name];
616
+
617
+ if (value !== undefined && typeof value !== "function") {
618
+ throw new TypeError(`Expected '${name}' to be a function`);
619
+ }
620
+
621
+ return value;
622
+ }
@@ -0,0 +1,14 @@
1
+ export default function (obj, defaults) {
2
+ var keys = Object.getOwnPropertyNames(defaults);
3
+
4
+ for (var i = 0; i < keys.length; i++) {
5
+ var key = keys[i];
6
+ var value = Object.getOwnPropertyDescriptor(defaults, key);
7
+
8
+ if (value && value.configurable && obj[key] === undefined) {
9
+ Object.defineProperty(obj, key, value);
10
+ }
11
+ }
12
+
13
+ return obj;
14
+ }