@jsenv/core 27.0.0-alpha.1 → 27.0.0-alpha.10

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 (115) hide show
  1. package/package.json +4 -5
  2. package/src/build/build.js +208 -78
  3. package/src/build/build_urls_generator.js +16 -7
  4. package/src/build/inject_service_worker_urls.js +25 -0
  5. package/src/build/inject_version_mappings.js +4 -3
  6. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +16 -14
  7. package/src/dev/start_dev_server.js +6 -3
  8. package/src/execute/execute.js +7 -1
  9. package/src/omega/core_plugins/babel/{babel_helper → helpers}/babel_plugin_babel_helpers_as_jsenv_imports.js +1 -2
  10. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +69 -80
  11. package/src/omega/core_plugins/babel/jsenv_plugin_babel.js +19 -5
  12. package/src/omega/core_plugins/html_supervisor/client/uneval_exception.js +1 -1
  13. package/src/omega/core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +16 -6
  14. package/src/omega/core_plugins/inject_globals/jsenv_plugin_inject_globals.js +27 -0
  15. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +1 -4
  16. package/src/omega/core_plugins.js +3 -0
  17. package/src/omega/file_url_converter.js +8 -50
  18. package/src/omega/kitchen.js +14 -15
  19. package/src/omega/runtime_support/features_compatibility.js +40 -1
  20. package/src/omega/runtime_support/runtime_support.js +48 -16
  21. package/src/omega/url_graph/url_graph_load.js +1 -0
  22. package/src/omega/url_graph.js +1 -0
  23. package/src/test/execute_plan.js +5 -3
  24. package/src/test/execute_test_plan.js +11 -1
  25. package/src/omega/core_plugins/babel/babel_helper/babel_helper_directory.js +0 -29
  26. package/src/omega/core_plugins/babel/babel_helper/client/.eslintrc.cjs +0 -24
  27. package/src/omega/core_plugins/babel/babel_helper/client/AsyncGenerator/AsyncGenerator.js +0 -81
  28. package/src/omega/core_plugins/babel/babel_helper/client/AwaitValue/AwaitValue.js +0 -3
  29. package/src/omega/core_plugins/babel/babel_helper/client/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -33
  30. package/src/omega/core_plugins/babel/babel_helper/client/arrayLikeToArray/arrayLikeToArray.js +0 -7
  31. package/src/omega/core_plugins/babel/babel_helper/client/arrayWithHoles/arrayWithHoles.js +0 -4
  32. package/src/omega/core_plugins/babel/babel_helper/client/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  33. package/src/omega/core_plugins/babel/babel_helper/client/assertThisInitialized/assertThisInitialized.js +0 -7
  34. package/src/omega/core_plugins/babel/babel_helper/client/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -40
  35. package/src/omega/core_plugins/babel/babel_helper/client/asyncIterator/asyncIterator.js +0 -65
  36. package/src/omega/core_plugins/babel/babel_helper/client/asyncToGenerator/asyncToGenerator.js +0 -34
  37. package/src/omega/core_plugins/babel/babel_helper/client/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  38. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -20
  39. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  40. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  41. package/src/omega/core_plugins/babel/babel_helper/client/classCallCheck/classCallCheck.js +0 -5
  42. package/src/omega/core_plugins/babel/babel_helper/client/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -5
  43. package/src/omega/core_plugins/babel/babel_helper/client/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -6
  44. package/src/omega/core_plugins/babel/babel_helper/client/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -7
  45. package/src/omega/core_plugins/babel/babel_helper/client/classNameTDZError/classNameTDZError.js +0 -4
  46. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  47. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  48. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  49. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  50. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  51. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  52. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  53. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -9
  54. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  55. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -6
  56. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  57. package/src/omega/core_plugins/babel/babel_helper/client/construct/construct.js +0 -16
  58. package/src/omega/core_plugins/babel/babel_helper/client/createClass/createClass.js +0 -15
  59. package/src/omega/core_plugins/babel/babel_helper/client/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -60
  60. package/src/omega/core_plugins/babel/babel_helper/client/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -23
  61. package/src/omega/core_plugins/babel/babel_helper/client/createRawReactElement/createRawReactElement.js +0 -50
  62. package/src/omega/core_plugins/babel/babel_helper/client/createSuper/createSuper.js +0 -22
  63. package/src/omega/core_plugins/babel/babel_helper/client/decorate/decorate.js +0 -403
  64. package/src/omega/core_plugins/babel/babel_helper/client/defaults/defaults.js +0 -11
  65. package/src/omega/core_plugins/babel/babel_helper/client/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  66. package/src/omega/core_plugins/babel/babel_helper/client/defineProperty/defineProperty.js +0 -18
  67. package/src/omega/core_plugins/babel/babel_helper/client/extends/extends.js +0 -14
  68. package/src/omega/core_plugins/babel/babel_helper/client/get/get.js +0 -19
  69. package/src/omega/core_plugins/babel/babel_helper/client/getPrototypeOf/getPrototypeOf.js +0 -4
  70. package/src/omega/core_plugins/babel/babel_helper/client/inherits/inherits.js +0 -19
  71. package/src/omega/core_plugins/babel/babel_helper/client/inheritsLoose/inheritsLoose.js +0 -7
  72. package/src/omega/core_plugins/babel/babel_helper/client/initializerDefineProperty/initializerDefineProperty.js +0 -10
  73. package/src/omega/core_plugins/babel/babel_helper/client/initializerWarningHelper/initializerWarningHelper.js +0 -6
  74. package/src/omega/core_plugins/babel/babel_helper/client/instanceof/instanceof.js +0 -6
  75. package/src/omega/core_plugins/babel/babel_helper/client/interopRequireDefault/interopRequireDefault.js +0 -3
  76. package/src/omega/core_plugins/babel/babel_helper/client/interopRequireWildcard/interopRequireWildcard.js +0 -37
  77. package/src/omega/core_plugins/babel/babel_helper/client/isNativeFunction/isNativeFunction.js +0 -4
  78. package/src/omega/core_plugins/babel/babel_helper/client/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -21
  79. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArray/iterableToArray.js +0 -7
  80. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArrayLimit/iterableToArrayLimit.js +0 -36
  81. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -10
  82. package/src/omega/core_plugins/babel/babel_helper/client/jsx/jsx.js +0 -50
  83. package/src/omega/core_plugins/babel/babel_helper/client/maybeArrayLike/maybeArrayLike.js +0 -10
  84. package/src/omega/core_plugins/babel/babel_helper/client/newArrowCheck/newArrowCheck.js +0 -5
  85. package/src/omega/core_plugins/babel/babel_helper/client/nonIterableRest/nonIterableRest.js +0 -5
  86. package/src/omega/core_plugins/babel/babel_helper/client/nonIterableSpread/nonIterableSpread.js +0 -5
  87. package/src/omega/core_plugins/babel/babel_helper/client/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  88. package/src/omega/core_plugins/babel/babel_helper/client/objectSpread/objectSpread.js +0 -23
  89. package/src/omega/core_plugins/babel/babel_helper/client/objectSpread2/objectSpread2.js +0 -41
  90. package/src/omega/core_plugins/babel/babel_helper/client/objectWithoutProperties/objectWithoutProperties.js +0 -19
  91. package/src/omega/core_plugins/babel/babel_helper/client/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  92. package/src/omega/core_plugins/babel/babel_helper/client/possibleConstructorReturn/possibleConstructorReturn.js +0 -10
  93. package/src/omega/core_plugins/babel/babel_helper/client/readOnlyError/readOnlyError.js +0 -4
  94. package/src/omega/core_plugins/babel/babel_helper/client/readme.md +0 -8
  95. package/src/omega/core_plugins/babel/babel_helper/client/set/set.js +0 -44
  96. package/src/omega/core_plugins/babel/babel_helper/client/setPrototypeOf/setPrototypeOf.js +0 -6
  97. package/src/omega/core_plugins/babel/babel_helper/client/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  98. package/src/omega/core_plugins/babel/babel_helper/client/slicedToArray/slicedToArray.js +0 -10
  99. package/src/omega/core_plugins/babel/babel_helper/client/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  100. package/src/omega/core_plugins/babel/babel_helper/client/superPropBase/superPropBase.js +0 -10
  101. package/src/omega/core_plugins/babel/babel_helper/client/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  102. package/src/omega/core_plugins/babel/babel_helper/client/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  103. package/src/omega/core_plugins/babel/babel_helper/client/tdz/tdz.js +0 -4
  104. package/src/omega/core_plugins/babel/babel_helper/client/temporalRef/temporalRef.js +0 -6
  105. package/src/omega/core_plugins/babel/babel_helper/client/temporalUndefined/temporalUndefined.js +0 -3
  106. package/src/omega/core_plugins/babel/babel_helper/client/toArray/toArray.js +0 -10
  107. package/src/omega/core_plugins/babel/babel_helper/client/toConsumableArray/toConsumableArray.js +0 -10
  108. package/src/omega/core_plugins/babel/babel_helper/client/toPrimitive/toPrimitive.js +0 -10
  109. package/src/omega/core_plugins/babel/babel_helper/client/toPropertyKey/toPropertyKey.js +0 -6
  110. package/src/omega/core_plugins/babel/babel_helper/client/typeof/typeof.js +0 -14
  111. package/src/omega/core_plugins/babel/babel_helper/client/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  112. package/src/omega/core_plugins/babel/babel_helper/client/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  113. package/src/omega/core_plugins/babel/babel_helper/client/wrapNativeSuper/wrapNativeSuper.js +0 -30
  114. package/src/omega/core_plugins/babel/babel_helper/client/wrapRegExp/wrapRegExp.js +0 -63
  115. package/src/omega/core_plugins/babel/babel_helper/client/writeOnlyError/writeOnlyError.js +0 -4
@@ -1,5 +0,0 @@
1
- var id = 0
2
- export default function (name) {
3
- // eslint-disable-next-line prefer-template
4
- return "__private_" + id++ + "_" + name
5
- }
@@ -1,8 +0,0 @@
1
- import classApplyDescriptorSet from "../classApplyDescriptorSet/classApplyDescriptorSet.js"
2
- import classExtractFieldDescriptor from "../classExtractFieldDescriptor/classExtractFieldDescriptor.js"
3
-
4
- export default function (receiver, privateMap, value) {
5
- var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set")
6
- classApplyDescriptorSet(receiver, descriptor, value)
7
- return value
8
- }
@@ -1,6 +0,0 @@
1
- export default function _classPrivateMethodGet(receiver, privateSet, fn) {
2
- if (!privateSet.has(receiver)) {
3
- throw new TypeError("attempted to get private field on non-instance")
4
- }
5
- return fn
6
- }
@@ -1,3 +0,0 @@
1
- export default function _classStaticPrivateMethodSet() {
2
- throw new TypeError("attempted to set read only static private field")
3
- }
@@ -1,9 +0,0 @@
1
- import classApplyDescriptorGet from "../classApplyDescriptorGet/classApplyDescriptorGet.js"
2
- import classCheckPrivateStaticAccess from "../classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js"
3
- import classCheckPrivateStaticFieldDescriptor from "../classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js"
4
-
5
- export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
6
- classCheckPrivateStaticAccess(receiver, classConstructor)
7
- classCheckPrivateStaticFieldDescriptor(descriptor, "get")
8
- return classApplyDescriptorGet(receiver, descriptor)
9
- }
@@ -1,15 +0,0 @@
1
- import classApplyDescriptorSet from "../classApplyDescriptorSet/classApplyDescriptorSet.js"
2
- import classCheckPrivateStaticAccess from "../classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js"
3
- import classCheckPrivateStaticFieldDescriptor from "../classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js"
4
-
5
- export default function _classStaticPrivateFieldSpecSet(
6
- receiver,
7
- classConstructor,
8
- descriptor,
9
- value,
10
- ) {
11
- classCheckPrivateStaticAccess(receiver, classConstructor)
12
- classCheckPrivateStaticFieldDescriptor(descriptor, "set")
13
- classApplyDescriptorSet(receiver, descriptor, value)
14
- return value
15
- }
@@ -1,6 +0,0 @@
1
- import classCheckPrivateStaticAccess from "../classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js"
2
-
3
- export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
4
- classCheckPrivateStaticAccess(receiver, classConstructor)
5
- return method
6
- }
@@ -1,3 +0,0 @@
1
- export default function _classStaticPrivateMethodSet() {
2
- throw new TypeError("attempted to set read only static private field")
3
- }
@@ -1,16 +0,0 @@
1
- import setPrototypeOf from "../setPrototypeOf/setPrototypeOf.js"
2
- import isNativeReflectConstruct from "../isNativeReflectConstruct/isNativeReflectConstruct.js"
3
-
4
- // NOTE: If Parent !== Class, the correct __proto__ is set *after*
5
- // calling the constructor.
6
- function reflectConstruct(Parent, args, Class) {
7
- var a = [null]
8
- // eslint-disable-next-line prefer-spread
9
- a.push.apply(a, args)
10
- var Constructor = Function.bind.apply(Parent, a)
11
- var instance = new Constructor()
12
- if (Class) setPrototypeOf(instance, Class.prototype)
13
- return instance
14
- }
15
-
16
- export default isNativeReflectConstruct() ? Reflect.construct : reflectConstruct
@@ -1,15 +0,0 @@
1
- function _defineProperties(target, props) {
2
- for (var i = 0; i < props.length; i++) {
3
- var descriptor = props[i];
4
- descriptor.enumerable = descriptor.enumerable || false;
5
- descriptor.configurable = true;
6
- if ("value" in descriptor) descriptor.writable = true;
7
- Object.defineProperty(target, descriptor.key, descriptor);
8
- }
9
- }
10
- export default function _createClass(Constructor, protoProps, staticProps) {
11
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
12
- if (staticProps) _defineProperties(Constructor, staticProps);
13
- Object.defineProperty(Constructor, "prototype", { writable: false });
14
- return Constructor;
15
- }
@@ -1,60 +0,0 @@
1
- /* eslint-disable eqeqeq, no-eq-null */
2
- import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
3
-
4
- // s: start (create the iterator)
5
- // n: next
6
- // e: error (called whenever something throws)
7
- // f: finish (always called at the end)
8
- export default function _createForOfIteratorHelper(o, allowArrayLike) {
9
- var it = (typeof Symbol !== "undefined" && o[Symbol.iterator]) || o["@@iterator"]
10
- if (!it) {
11
- // Fallback for engines without symbol support
12
- if (
13
- Array.isArray(o) ||
14
- (it = unsupportedIterableToArray(o)) ||
15
- (allowArrayLike && o && typeof o.length === "number")
16
- ) {
17
- if (it) o = it
18
- var i = 0
19
- var F = function () {}
20
- return {
21
- s: F,
22
- n: function () {
23
- if (i >= o.length) return { done: true }
24
- return { done: false, value: o[i++] }
25
- },
26
- e: function (e) {
27
- throw e
28
- },
29
- f: F,
30
- }
31
- }
32
- throw new TypeError(
33
- "Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
34
- )
35
- }
36
- var normalCompletion = true,
37
- didErr = false,
38
- err
39
- return {
40
- s: function () {
41
- it = it.call(o)
42
- },
43
- n: function () {
44
- var step = it.next()
45
- normalCompletion = step.done
46
- return step
47
- },
48
- e: function (e) {
49
- didErr = true
50
- err = e
51
- },
52
- f: function () {
53
- try {
54
- if (!normalCompletion && it.return != null) it.return()
55
- } finally {
56
- if (didErr) throw err
57
- }
58
- },
59
- }
60
- }
@@ -1,23 +0,0 @@
1
- /* eslint-disable eqeqeq, no-eq-null */
2
- import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
3
-
4
- export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {
5
- var it = (typeof Symbol !== "undefined" && o[Symbol.iterator]) || o["@@iterator"]
6
- if (it) return (it = it.call(o)).next.bind(it)
7
- // Fallback for engines without symbol support
8
- if (
9
- Array.isArray(o) ||
10
- (it = unsupportedIterableToArray(o)) ||
11
- (allowArrayLike && o && typeof o.length === "number")
12
- ) {
13
- if (it) o = it
14
- var i = 0
15
- return function () {
16
- if (i >= o.length) return { done: true }
17
- return { done: false, value: o[i++] }
18
- }
19
- }
20
- throw new TypeError(
21
- "Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
22
- )
23
- }
@@ -1,50 +0,0 @@
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 =
6
- (typeof Symbol === "function" &&
7
- // "for" is a reserved keyword in ES3 so escaping it here for backward compatibility
8
- Symbol["for"] &&
9
- Symbol["for"]("react.element")) ||
10
- 0xeac7
11
- }
12
-
13
- var defaultProps = type && type.defaultProps
14
- var childrenLength = arguments.length - 3
15
-
16
- if (!props && childrenLength !== 0) {
17
- // If we're going to assign props.children, we create a new object now
18
- // to avoid mutating defaultProps.
19
- props = { children: void 0 }
20
- }
21
-
22
- if (childrenLength === 1) {
23
- props.children = children
24
- } else if (childrenLength > 1) {
25
- var childArray = new Array(childrenLength)
26
- for (var i = 0; i < childrenLength; i++) {
27
- childArray[i] = arguments[i + 3]
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
- }
@@ -1,22 +0,0 @@
1
- import getPrototypeOf from "../getPrototypeOf/getPrototypeOf.js"
2
- import isNativeReflectConstruct from "../isNativeReflectConstruct/isNativeReflectConstruct.js"
3
- import possibleConstructorReturn from "../possibleConstructorReturn/possibleConstructorReturn.js"
4
-
5
- export default function _createSuper(Derived) {
6
- var hasNativeReflectConstruct = isNativeReflectConstruct()
7
-
8
- return function _createSuperInternal() {
9
- var Super = getPrototypeOf(Derived)
10
- var result
11
- if (hasNativeReflectConstruct) {
12
- // NOTE: This doesn't work if this.__proto__.constructor has been modified.
13
- var NewTarget = getPrototypeOf(this).constructor
14
- // eslint-disable-next-line prefer-rest-params
15
- result = Reflect.construct(Super, arguments, NewTarget)
16
- } else {
17
- // eslint-disable-next-line prefer-rest-params
18
- result = Super.apply(this, arguments)
19
- }
20
- return possibleConstructorReturn(this, result)
21
- }
22
- }
@@ -1,403 +0,0 @@
1
- /* eslint-disable block-scoped-var */
2
- /* eslint-disable no-nested-ternary */
3
- /* eslint-disable no-negated-condition */
4
- /* eslint-disable consistent-return */
5
- /* eslint-disable prefer-spread */
6
- /* eslint-disable no-void */
7
- /* eslint-disable no-sequences */
8
- import toArray from "../toArray/toArray.js"
9
- import toPropertyKey from "../toPropertyKey/toPropertyKey.js"
10
-
11
- // ClassDefinitionEvaluation (Steps 26-*)
12
- export default function _decorate(
13
- decorators /* : ClassDecorator[] */,
14
- factory /* : ClassFactory */,
15
- superClass /* : ?Class<*> */,
16
- mixins /* : ?Array<Function> */,
17
- ) /* : Class<*> */ {
18
- var api = _getDecoratorsApi()
19
- if (mixins) {
20
- for (var i = 0; i < mixins.length; i++) {
21
- api = mixins[i](api)
22
- }
23
- }
24
- var r = factory(function initialize(O) {
25
- api.initializeInstanceElements(O, decorated.elements)
26
- }, superClass)
27
- var decorated = api.decorateClass(
28
- _coalesceClassElements(r.d.map(_createElementDescriptor)),
29
- decorators,
30
- )
31
- api.initializeClassElements(r.F, decorated.elements)
32
- return api.runClassFinishers(r.F, decorated.finishers)
33
- }
34
-
35
- var _getDecoratorsApi = function () {
36
- var api = {
37
- elementsDefinitionOrder: [["method"], ["field"]],
38
- // InitializeInstanceElements
39
- initializeInstanceElements(/* ::<C>*/ O /* : C */, elements /* : ElementDescriptor[] */) {
40
- ;["method", "field"].forEach(function (kind) {
41
- elements.forEach(function (element /* : ElementDescriptor */) {
42
- if (element.kind === kind && element.placement === "own") {
43
- this.defineClassElement(O, element)
44
- }
45
- }, this)
46
- }, this)
47
- },
48
- // InitializeClassElements
49
- initializeClassElements(/* ::<C>*/ F /* : Class<C> */, elements /* : ElementDescriptor[] */) {
50
- var proto = F.prototype
51
- ;["method", "field"].forEach(function (kind) {
52
- elements.forEach(function (element /* : ElementDescriptor */) {
53
- var placement = element.placement
54
- if (element.kind === kind && (placement === "static" || placement === "prototype")) {
55
- var receiver = placement === "static" ? F : proto
56
- this.defineClassElement(receiver, element)
57
- }
58
- }, this)
59
- }, this)
60
- },
61
- // DefineClassElement
62
- defineClassElement(
63
- /* ::<C>*/ receiver /* : C | Class<C> */,
64
- element /* : ElementDescriptor */,
65
- ) {
66
- var descriptor /* : PropertyDescriptor */ = element.descriptor
67
- if (element.kind === "field") {
68
- var initializer = element.initializer
69
- descriptor = {
70
- enumerable: descriptor.enumerable,
71
- writable: descriptor.writable,
72
- configurable: descriptor.configurable,
73
- value: initializer === void 0 ? void 0 : initializer.call(receiver),
74
- }
75
- }
76
- Object.defineProperty(receiver, element.key, descriptor)
77
- },
78
- // DecorateClass
79
- decorateClass(
80
- elements /* : ElementDescriptor[] */,
81
- decorators /* : ClassDecorator[] */,
82
- ) /* : ElementsFinishers */ {
83
- var newElements /* : ElementDescriptor[] */ = []
84
- var finishers /* : ClassFinisher[] */ = []
85
- var placements /* : Placements */ = {
86
- static: [],
87
- prototype: [],
88
- own: [],
89
- }
90
- elements.forEach(function (element /* : ElementDescriptor */) {
91
- this.addElementPlacement(element, placements)
92
- }, this)
93
- elements.forEach(function (element /* : ElementDescriptor */) {
94
- if (!_hasDecorators(element)) return newElements.push(element)
95
- var elementFinishersExtras /* : ElementFinishersExtras */ = this.decorateElement(
96
- element,
97
- placements,
98
- )
99
- newElements.push(elementFinishersExtras.element)
100
- newElements.push.apply(newElements, elementFinishersExtras.extras)
101
- finishers.push.apply(finishers, elementFinishersExtras.finishers)
102
- }, this)
103
- if (!decorators) {
104
- return { elements: newElements, finishers }
105
- }
106
- var result /* : ElementsFinishers */ = this.decorateConstructor(newElements, decorators)
107
- finishers.push.apply(finishers, result.finishers)
108
- result.finishers = finishers
109
- return result
110
- },
111
- // AddElementPlacement
112
- addElementPlacement(
113
- element /* : ElementDescriptor */,
114
- placements /* : Placements */,
115
- silent /* : boolean */,
116
- ) {
117
- var keys = placements[element.placement]
118
- if (!silent && keys.indexOf(element.key) !== -1) {
119
- throw new TypeError(`Duplicated element (${element.key})`)
120
- }
121
- keys.push(element.key)
122
- },
123
- // DecorateElement
124
- decorateElement(
125
- element /* : ElementDescriptor */,
126
- placements /* : Placements */,
127
- ) /* : ElementFinishersExtras */ {
128
- var extras /* : ElementDescriptor[] */ = []
129
- var finishers /* : ClassFinisher[] */ = []
130
- for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
131
- // (inlined) RemoveElementPlacement
132
- var keys = placements[element.placement]
133
- keys.splice(keys.indexOf(element.key), 1)
134
- var elementObject /* : ElementObjectInput */ = this.fromElementDescriptor(element)
135
- var elementFinisherExtras /* : ElementFinisherExtras */ = this.toElementFinisherExtras(
136
- (0, decorators[i])(elementObject) /* : ElementObjectOutput */ || elementObject,
137
- )
138
- element = elementFinisherExtras.element
139
- this.addElementPlacement(element, placements)
140
- if (elementFinisherExtras.finisher) {
141
- finishers.push(elementFinisherExtras.finisher)
142
- }
143
- var newExtras /* : ElementDescriptor[] | void */ = elementFinisherExtras.extras
144
- if (newExtras) {
145
- for (var j = 0; j < newExtras.length; j++) {
146
- this.addElementPlacement(newExtras[j], placements)
147
- }
148
- extras.push.apply(extras, newExtras)
149
- }
150
- }
151
- return { element, finishers, extras }
152
- },
153
- // DecorateConstructor
154
- decorateConstructor(
155
- elements /* : ElementDescriptor[] */,
156
- decorators /* : ClassDecorator[] */,
157
- ) /* : ElementsFinishers */ {
158
- var finishers /* : ClassFinisher[] */ = []
159
- for (var i = decorators.length - 1; i >= 0; i--) {
160
- var obj /* : ClassObject */ = this.fromClassDescriptor(elements)
161
- var elementsAndFinisher /* : ElementsFinisher */ = this.toClassDescriptor(
162
- (0, decorators[i])(obj) /* : ClassObject */ || obj,
163
- )
164
- if (elementsAndFinisher.finisher !== undefined) {
165
- finishers.push(elementsAndFinisher.finisher)
166
- }
167
- if (elementsAndFinisher.elements !== undefined) {
168
- elements = elementsAndFinisher.elements
169
- for (var j = 0; j < elements.length - 1; j++) {
170
- for (var k = j + 1; k < elements.length; k++) {
171
- if (
172
- elements[j].key === elements[k].key &&
173
- elements[j].placement === elements[k].placement
174
- ) {
175
- throw new TypeError(`Duplicated element (${elements[j].key})`)
176
- }
177
- }
178
- }
179
- }
180
- }
181
- return { elements, finishers }
182
- },
183
- // FromElementDescriptor
184
- fromElementDescriptor(element /* : ElementDescriptor */) /* : ElementObject */ {
185
- var obj /* : ElementObject */ = {
186
- kind: element.kind,
187
- key: element.key,
188
- placement: element.placement,
189
- descriptor: element.descriptor,
190
- }
191
- var desc = {
192
- value: "Descriptor",
193
- configurable: true,
194
- }
195
- Object.defineProperty(obj, Symbol.toStringTag, desc)
196
- if (element.kind === "field") obj.initializer = element.initializer
197
- return obj
198
- },
199
- // ToElementDescriptors
200
- toElementDescriptors(elementObjects /* : ElementObject[] */) /* : ElementDescriptor[] */ {
201
- if (elementObjects === undefined) return
202
- return toArray(elementObjects).map(function (elementObject) {
203
- var element = this.toElementDescriptor(elementObject)
204
- this.disallowProperty(elementObject, "finisher", "An element descriptor")
205
- this.disallowProperty(elementObject, "extras", "An element descriptor")
206
- return element
207
- }, this)
208
- },
209
- // ToElementDescriptor
210
- toElementDescriptor(elementObject /* : ElementObject */) /* : ElementDescriptor */ {
211
- var kind = String(elementObject.kind)
212
- if (kind !== "method" && kind !== "field") {
213
- throw new TypeError(
214
- `${
215
- 'An element descriptor\'s .kind property must be either "method" or' +
216
- ' "field", but a decorator created an element descriptor with' +
217
- ' .kind "'
218
- }${kind}"`,
219
- )
220
- }
221
- var key = toPropertyKey(elementObject.key)
222
- var placement = String(elementObject.placement)
223
- if (placement !== "static" && placement !== "prototype" && placement !== "own") {
224
- throw new TypeError(
225
- `${
226
- 'An element descriptor\'s .placement property must be one of "static",' +
227
- ' "prototype" or "own", but a decorator created an element descriptor' +
228
- ' with .placement "'
229
- }${placement}"`,
230
- )
231
- }
232
- var descriptor /* : PropertyDescriptor */ = elementObject.descriptor
233
- this.disallowProperty(elementObject, "elements", "An element descriptor")
234
- var element /* : ElementDescriptor */ = {
235
- kind,
236
- key,
237
- placement,
238
- descriptor: Object.assign({}, descriptor),
239
- }
240
- if (kind !== "field") {
241
- this.disallowProperty(elementObject, "initializer", "A method descriptor")
242
- } else {
243
- this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor")
244
- this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor")
245
- this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor")
246
- element.initializer = elementObject.initializer
247
- }
248
- return element
249
- },
250
- toElementFinisherExtras(elementObject /* : ElementObject */) /* : ElementFinisherExtras */ {
251
- var element /* : ElementDescriptor */ = this.toElementDescriptor(elementObject)
252
- var finisher /* : ClassFinisher */ = _optionalCallableProperty(elementObject, "finisher")
253
- var extras /* : ElementDescriptors[] */ = this.toElementDescriptors(elementObject.extras)
254
- return { element, finisher, extras }
255
- },
256
- // FromClassDescriptor
257
- fromClassDescriptor(elements /* : ElementDescriptor[] */) /* : ClassObject */ {
258
- var obj = {
259
- kind: "class",
260
- elements: elements.map(this.fromElementDescriptor, this),
261
- }
262
- var desc = { value: "Descriptor", configurable: true }
263
- Object.defineProperty(obj, Symbol.toStringTag, desc)
264
- return obj
265
- },
266
- // ToClassDescriptor
267
- toClassDescriptor(obj /* : ClassObject */) /* : ElementsFinisher */ {
268
- var kind = String(obj.kind)
269
- if (kind !== "class") {
270
- throw new TypeError(
271
- `${
272
- 'A class descriptor\'s .kind property must be "class", but a decorator' +
273
- ' created a class descriptor with .kind "'
274
- }${kind}"`,
275
- )
276
- }
277
- this.disallowProperty(obj, "key", "A class descriptor")
278
- this.disallowProperty(obj, "placement", "A class descriptor")
279
- this.disallowProperty(obj, "descriptor", "A class descriptor")
280
- this.disallowProperty(obj, "initializer", "A class descriptor")
281
- this.disallowProperty(obj, "extras", "A class descriptor")
282
- var finisher = _optionalCallableProperty(obj, "finisher")
283
- var elements = this.toElementDescriptors(obj.elements)
284
- return { elements, finisher }
285
- },
286
- // RunClassFinishers
287
- runClassFinishers(
288
- constructor /* : Class<*> */,
289
- finishers /* : ClassFinisher[] */,
290
- ) /* : Class<*> */ {
291
- for (var i = 0; i < finishers.length; i++) {
292
- var newConstructor /* : ?Class<*> */ = (0, finishers[i])(constructor)
293
- if (newConstructor !== undefined) {
294
- // NOTE: This should check if IsConstructor(newConstructor) is false.
295
- if (typeof newConstructor !== "function") {
296
- throw new TypeError("Finishers must return a constructor.")
297
- }
298
- constructor = newConstructor
299
- }
300
- }
301
- return constructor
302
- },
303
- disallowProperty(obj, name, objectType) {
304
- if (obj[name] !== undefined) {
305
- throw new TypeError(`${objectType} can't have a .${name} property.`)
306
- }
307
- },
308
- }
309
- _getDecoratorsApi = function () {
310
- return api
311
- }
312
- return api
313
- }
314
-
315
- // ClassElementEvaluation
316
- function _createElementDescriptor(def /* : ElementDefinition */) /* : ElementDescriptor */ {
317
- var key = toPropertyKey(def.key)
318
- var descriptor /* : PropertyDescriptor */
319
- if (def.kind === "method") {
320
- descriptor = {
321
- value: def.value,
322
- writable: true,
323
- configurable: true,
324
- enumerable: false,
325
- }
326
- } else if (def.kind === "get") {
327
- descriptor = { get: def.value, configurable: true, enumerable: false }
328
- } else if (def.kind === "set") {
329
- descriptor = { set: def.value, configurable: true, enumerable: false }
330
- } else if (def.kind === "field") {
331
- descriptor = { configurable: true, writable: true, enumerable: true }
332
- }
333
- var element /* : ElementDescriptor */ = {
334
- kind: def.kind === "field" ? "field" : "method",
335
- key,
336
- placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype",
337
- descriptor,
338
- }
339
- if (def.decorators) element.decorators = def.decorators
340
- if (def.kind === "field") element.initializer = def.value
341
- return element
342
- }
343
- // CoalesceGetterSetter
344
- function _coalesceGetterSetter(element /* : ElementDescriptor */, other /* : ElementDescriptor */) {
345
- if (element.descriptor.get !== undefined) {
346
- other.descriptor.get = element.descriptor.get
347
- } else {
348
- other.descriptor.set = element.descriptor.set
349
- }
350
- }
351
- // CoalesceClassElements
352
- function _coalesceClassElements(elements /* : ElementDescriptor[] */) /* : ElementDescriptor[] */ {
353
- var newElements /* : ElementDescriptor[] */ = []
354
- var isSameElement = function (other /* : ElementDescriptor */) /* : boolean */ {
355
- return (
356
- other.kind === "method" && other.key === element.key && other.placement === element.placement
357
- )
358
- }
359
- for (var i = 0; i < elements.length; i++) {
360
- var element /* : ElementDescriptor */ = elements[i]
361
- var other /* : ElementDescriptor */
362
- if (element.kind === "method" && (other = newElements.find(isSameElement))) {
363
- if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
364
- if (_hasDecorators(element) || _hasDecorators(other)) {
365
- throw new ReferenceError(`Duplicated methods (${element.key}) can't be decorated.`)
366
- }
367
- other.descriptor = element.descriptor
368
- } else {
369
- if (_hasDecorators(element)) {
370
- if (_hasDecorators(other)) {
371
- throw new ReferenceError(
372
- `${
373
- "Decorators can't be placed on different accessors with for " +
374
- "the same property ("
375
- }${element.key}).`,
376
- )
377
- }
378
- other.decorators = element.decorators
379
- }
380
- _coalesceGetterSetter(element, other)
381
- }
382
- } else {
383
- newElements.push(element)
384
- }
385
- }
386
- return newElements
387
- }
388
- function _hasDecorators(element /* : ElementDescriptor */) /* : boolean */ {
389
- return element.decorators && element.decorators.length
390
- }
391
- function _isDataDescriptor(desc /* : PropertyDescriptor */) /* : boolean */ {
392
- return desc !== undefined && !(desc.value === undefined && desc.writable === undefined)
393
- }
394
- function _optionalCallableProperty /* ::<T>*/(
395
- obj /* : T */,
396
- name /* : $Keys<T> */,
397
- ) /* : ?Function */ {
398
- var value = obj[name]
399
- if (value !== undefined && typeof value !== "function") {
400
- throw new TypeError(`Expected '${name}' to be a function`)
401
- }
402
- return value
403
- }
@@ -1,11 +0,0 @@
1
- export default function (obj, defaults) {
2
- var keys = Object.getOwnPropertyNames(defaults)
3
- for (var i = 0; i < keys.length; i++) {
4
- var key = keys[i]
5
- var value = Object.getOwnPropertyDescriptor(defaults, key)
6
- if (value && value.configurable && obj[key] === undefined) {
7
- Object.defineProperty(obj, key, value)
8
- }
9
- }
10
- return obj
11
- }