@cloudbase/js-sdk 3.4.6 → 3.4.7-beta.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.
- package/ai/dist/index.esm.js +2 -3
- package/ai/dist/index.esm.js.map +1 -0
- package/ai/dist/index.js +2 -21
- package/ai/dist/index.js.map +1 -0
- package/apis/dist/index.esm.js +2 -3
- package/apis/dist/index.esm.js.map +1 -0
- package/apis/dist/index.js +2 -21
- package/apis/dist/index.js.map +1 -0
- package/app/dist/index.esm.js +2 -11
- package/app/dist/index.esm.js.map +1 -0
- package/app/dist/index.js +2 -18
- package/app/dist/index.js.map +1 -0
- package/auth/dist/index.esm.js +3 -8
- package/auth/dist/index.esm.js.LICENSE.txt +12 -0
- package/auth/dist/index.esm.js.map +1 -0
- package/auth/dist/index.js +3 -13
- package/auth/dist/index.js.LICENSE.txt +12 -0
- package/auth/dist/index.js.map +1 -0
- package/cloudrun/dist/index.esm.js +2 -3
- package/cloudrun/dist/index.esm.js.map +1 -0
- package/cloudrun/dist/index.js +2 -21
- package/cloudrun/dist/index.js.map +1 -0
- package/container/dist/index.esm.js +2 -8
- package/container/dist/index.esm.js.map +1 -0
- package/container/dist/index.js +2 -13
- package/container/dist/index.js.map +1 -0
- package/database/package.json +34 -4
- package/dist/index.cjs.js +3 -38
- package/dist/index.cjs.js.LICENSE.txt +12 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +3 -33
- package/dist/index.esm.js.LICENSE.txt +12 -0
- package/dist/index.esm.js.map +1 -0
- package/functions/dist/index.esm.js +2 -8
- package/functions/dist/index.esm.js.map +1 -0
- package/functions/dist/index.js +2 -13
- package/functions/dist/index.js.map +1 -0
- package/miniprogram_dist/ai.js +1 -1
- package/miniprogram_dist/apis.js +1 -1
- package/miniprogram_dist/app.js +1 -1
- package/miniprogram_dist/auth.js +1 -1
- package/miniprogram_dist/cloudrun.js +1 -1
- package/miniprogram_dist/container.js +1 -1
- package/miniprogram_dist/database.js +1 -1
- package/miniprogram_dist/functions.js +1 -1
- package/miniprogram_dist/index.js +1 -1
- package/miniprogram_dist/model.js +1 -1
- package/miniprogram_dist/mysql.js +1 -1
- package/miniprogram_dist/oauth.js +2 -1
- package/miniprogram_dist/realtime.js +1 -1
- package/miniprogram_dist/storage.js +1 -1
- package/model/dist/index.esm.js +2 -3
- package/model/dist/index.esm.js.map +1 -0
- package/model/dist/index.js +2 -21
- package/model/dist/index.js.map +1 -0
- package/mysql/dist/index.esm.js +2 -3
- package/mysql/dist/index.esm.js.map +1 -0
- package/mysql/dist/index.js +2 -21
- package/mysql/dist/index.js.map +1 -0
- package/oauth/dist/index.esm.js +3 -3
- package/oauth/dist/index.esm.js.LICENSE.txt +12 -0
- package/oauth/dist/index.esm.js.map +1 -0
- package/oauth/dist/index.js +3 -21
- package/oauth/dist/index.js.LICENSE.txt +12 -0
- package/oauth/dist/index.js.map +1 -0
- package/package.json +29 -47
- package/realtime/dist/index.esm.js +2 -8
- package/realtime/dist/index.esm.js.map +1 -0
- package/realtime/dist/index.js +2 -13
- package/realtime/dist/index.js.map +1 -0
- package/storage/dist/index.esm.js +2 -4
- package/storage/dist/index.esm.js.map +1 -0
- package/storage/dist/index.js +2 -9
- package/storage/dist/index.js.map +1 -0
- package/types/analytics.d.ts +51 -0
- package/types/container.d.ts +93 -0
- package/{node_modules/@cloudbase/types → types}/package.json +1 -1
- package/{node_modules/@cloudbase/utilities → utilities}/package.json +2 -2
- package/ai/src/index.d.ts +0 -1
- package/ai/src/index.ts +0 -1
- package/apis/src/index.d.ts +0 -1
- package/apis/src/index.ts +0 -1
- package/app/src/index.ts +0 -17
- package/auth/src/index.d.ts +0 -2
- package/auth/src/index.ts +0 -8
- package/cloudrun/src/index.d.ts +0 -1
- package/cloudrun/src/index.ts +0 -1
- package/container/src/index.d.ts +0 -2
- package/container/src/index.ts +0 -8
- package/database/dist/index.d.ts +0 -3
- package/database/dist/index.esm.js +0 -503
- package/database/dist/index.js +0 -509
- package/database/src/index.d.ts +0 -3
- package/database/src/index.ts +0 -486
- package/functions/src/index.d.ts +0 -2
- package/functions/src/index.ts +0 -8
- package/model/src/index.d.ts +0 -1
- package/model/src/index.ts +0 -1
- package/mysql/src/index.d.ts +0 -1
- package/mysql/src/index.ts +0 -1
- package/node_modules/@cloudbase/ai/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/ai/dist/cjs/AI.d.ts +0 -27
- package/node_modules/@cloudbase/ai/dist/cjs/AI.js +0 -224
- package/node_modules/@cloudbase/ai/dist/cjs/bot/index.d.ts +0 -41
- package/node_modules/@cloudbase/ai/dist/cjs/bot/index.js +0 -376
- package/node_modules/@cloudbase/ai/dist/cjs/bot/types.d.ts +0 -144
- package/node_modules/@cloudbase/ai/dist/cjs/bot/types.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/index.d.ts +0 -2
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/index.js +0 -6
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/parse.d.ts +0 -2
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/parse.js +0 -126
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/stream.d.ts +0 -5
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/stream.js +0 -40
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/types.d.ts +0 -16
- package/node_modules/@cloudbase/ai/dist/cjs/eventsource_parser/types.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/index.d.ts +0 -40
- package/node_modules/@cloudbase/ai/dist/cjs/index.js +0 -187
- package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/index.js +0 -130
- package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/type.d.ts +0 -71
- package/node_modules/@cloudbase/ai/dist/cjs/models/Ark/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/index.js +0 -130
- package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/type.d.ts +0 -74
- package/node_modules/@cloudbase/ai/dist/cjs/models/DashScope/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/DeepSeek/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/DeepSeek/index.js +0 -126
- package/node_modules/@cloudbase/ai/dist/cjs/models/Default/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/Default/index.js +0 -122
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/index.js +0 -135
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/type.d.ts +0 -74
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/util.d.ts +0 -4
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuan/util.js +0 -56
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanBeta/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanBeta/index.js +0 -127
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanExp/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanExp/index.js +0 -125
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanOpen/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/HunYuanOpen/index.js +0 -127
- package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/index.js +0 -130
- package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/type.d.ts +0 -85
- package/node_modules/@cloudbase/ai/dist/cjs/models/Moonshot/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/index.js +0 -133
- package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/type.d.ts +0 -75
- package/node_modules/@cloudbase/ai/dist/cjs/models/Yi/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/index.js +0 -139
- package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/type.d.ts +0 -71
- package/node_modules/@cloudbase/ai/dist/cjs/models/ZhiPu/type.js +0 -3
- package/node_modules/@cloudbase/ai/dist/cjs/models/image-model.d.ts +0 -18
- package/node_modules/@cloudbase/ai/dist/cjs/models/image-model.js +0 -85
- package/node_modules/@cloudbase/ai/dist/cjs/models/index.d.ts +0 -26
- package/node_modules/@cloudbase/ai/dist/cjs/models/index.js +0 -42
- package/node_modules/@cloudbase/ai/dist/cjs/models/model.d.ts +0 -40
- package/node_modules/@cloudbase/ai/dist/cjs/models/model.js +0 -481
- package/node_modules/@cloudbase/ai/dist/cjs/type.d.ts +0 -190
- package/node_modules/@cloudbase/ai/dist/cjs/type.js +0 -10
- package/node_modules/@cloudbase/ai/dist/cjs/utils.d.ts +0 -38
- package/node_modules/@cloudbase/ai/dist/cjs/utils.js +0 -263
- package/node_modules/@cloudbase/ai/dist/esm/AI.d.ts +0 -27
- package/node_modules/@cloudbase/ai/dist/esm/AI.js +0 -198
- package/node_modules/@cloudbase/ai/dist/esm/bot/index.d.ts +0 -41
- package/node_modules/@cloudbase/ai/dist/esm/bot/index.js +0 -373
- package/node_modules/@cloudbase/ai/dist/esm/bot/types.d.ts +0 -144
- package/node_modules/@cloudbase/ai/dist/esm/bot/types.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/index.d.ts +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/index.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/parse.d.ts +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/parse.js +0 -122
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/stream.d.ts +0 -5
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/stream.js +0 -37
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/types.d.ts +0 -16
- package/node_modules/@cloudbase/ai/dist/esm/eventsource_parser/types.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/index.d.ts +0 -40
- package/node_modules/@cloudbase/ai/dist/esm/index.js +0 -152
- package/node_modules/@cloudbase/ai/dist/esm/models/Ark/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/Ark/index.js +0 -127
- package/node_modules/@cloudbase/ai/dist/esm/models/Ark/type.d.ts +0 -71
- package/node_modules/@cloudbase/ai/dist/esm/models/Ark/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/index.js +0 -127
- package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/type.d.ts +0 -74
- package/node_modules/@cloudbase/ai/dist/esm/models/DashScope/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/DeepSeek/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/DeepSeek/index.js +0 -123
- package/node_modules/@cloudbase/ai/dist/esm/models/Default/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/Default/index.js +0 -119
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/index.js +0 -132
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/type.d.ts +0 -74
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/util.d.ts +0 -4
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuan/util.js +0 -51
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanBeta/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanBeta/index.js +0 -124
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanExp/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanExp/index.js +0 -122
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanOpen/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/HunYuanOpen/index.js +0 -124
- package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/index.js +0 -127
- package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/type.d.ts +0 -85
- package/node_modules/@cloudbase/ai/dist/esm/models/Moonshot/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/Yi/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/Yi/index.js +0 -130
- package/node_modules/@cloudbase/ai/dist/esm/models/Yi/type.d.ts +0 -75
- package/node_modules/@cloudbase/ai/dist/esm/models/Yi/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/index.d.ts +0 -10
- package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/index.js +0 -136
- package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/type.d.ts +0 -71
- package/node_modules/@cloudbase/ai/dist/esm/models/ZhiPu/type.js +0 -2
- package/node_modules/@cloudbase/ai/dist/esm/models/image-model.d.ts +0 -18
- package/node_modules/@cloudbase/ai/dist/esm/models/image-model.js +0 -82
- package/node_modules/@cloudbase/ai/dist/esm/models/index.d.ts +0 -26
- package/node_modules/@cloudbase/ai/dist/esm/models/index.js +0 -27
- package/node_modules/@cloudbase/ai/dist/esm/models/model.d.ts +0 -40
- package/node_modules/@cloudbase/ai/dist/esm/models/model.js +0 -478
- package/node_modules/@cloudbase/ai/dist/esm/type.d.ts +0 -190
- package/node_modules/@cloudbase/ai/dist/esm/type.js +0 -7
- package/node_modules/@cloudbase/ai/dist/esm/utils.d.ts +0 -38
- package/node_modules/@cloudbase/ai/dist/esm/utils.js +0 -252
- package/node_modules/@cloudbase/ai/dist/miniprogram/index.js +0 -2
- package/node_modules/@cloudbase/ai/dist/miniprogram/index.js.LICENSE.txt +0 -22
- package/node_modules/@cloudbase/ai/package.json +0 -32
- package/node_modules/@cloudbase/apis/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/apis/dist/cjs/callApis.d.ts +0 -20
- package/node_modules/@cloudbase/apis/dist/cjs/callApis.js +0 -154
- package/node_modules/@cloudbase/apis/dist/cjs/index.d.ts +0 -5
- package/node_modules/@cloudbase/apis/dist/cjs/index.js +0 -53
- package/node_modules/@cloudbase/apis/dist/cjs/type.d.ts +0 -14
- package/node_modules/@cloudbase/apis/dist/cjs/type.js +0 -3
- package/node_modules/@cloudbase/apis/dist/esm/callApis.d.ts +0 -20
- package/node_modules/@cloudbase/apis/dist/esm/callApis.js +0 -148
- package/node_modules/@cloudbase/apis/dist/esm/index.d.ts +0 -5
- package/node_modules/@cloudbase/apis/dist/esm/index.js +0 -35
- package/node_modules/@cloudbase/apis/dist/esm/type.d.ts +0 -14
- package/node_modules/@cloudbase/apis/dist/esm/type.js +0 -2
- package/node_modules/@cloudbase/apis/dist/miniprogram/index.js +0 -1
- package/node_modules/@cloudbase/apis/package.json +0 -28
- package/node_modules/@cloudbase/app/.eslintrc.js +0 -12
- package/node_modules/@cloudbase/app/dist/cjs/constants/common.d.ts +0 -38
- package/node_modules/@cloudbase/app/dist/cjs/constants/common.js +0 -103
- package/node_modules/@cloudbase/app/dist/cjs/index.d.ts +0 -65
- package/node_modules/@cloudbase/app/dist/cjs/index.js +0 -340
- package/node_modules/@cloudbase/app/dist/cjs/index.node.d.ts +0 -6
- package/node_modules/@cloudbase/app/dist/cjs/index.node.js +0 -27
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/constants.d.ts +0 -33
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/constants.js +0 -38
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/context.d.ts +0 -17
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/context.js +0 -189
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/index.d.ts +0 -25
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/index.js +0 -150
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/metadata.d.ts +0 -14
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/metadata.js +0 -130
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/request.d.ts +0 -41
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/request.js +0 -521
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/tool.d.ts +0 -2
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/tool.js +0 -354
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/types.d.ts +0 -102
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/types.js +0 -3
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/utils.d.ts +0 -37
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/utils.js +0 -286
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/wx.d.ts +0 -39
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter-node/wx.js +0 -272
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter.d.ts +0 -3
- package/node_modules/@cloudbase/app/dist/cjs/libs/adapter.js +0 -163
- package/node_modules/@cloudbase/app/dist/cjs/libs/cache.d.ts +0 -6
- package/node_modules/@cloudbase/app/dist/cjs/libs/cache.js +0 -38
- package/node_modules/@cloudbase/app/dist/cjs/libs/component.d.ts +0 -3
- package/node_modules/@cloudbase/app/dist/cjs/libs/component.js +0 -126
- package/node_modules/@cloudbase/app/dist/cjs/libs/lang.d.ts +0 -23
- package/node_modules/@cloudbase/app/dist/cjs/libs/lang.js +0 -59
- package/node_modules/@cloudbase/app/dist/cjs/libs/request.d.ts +0 -62
- package/node_modules/@cloudbase/app/dist/cjs/libs/request.js +0 -480
- package/node_modules/@cloudbase/app/dist/esm/constants/common.d.ts +0 -38
- package/node_modules/@cloudbase/app/dist/esm/constants/common.js +0 -91
- package/node_modules/@cloudbase/app/dist/esm/index.d.ts +0 -65
- package/node_modules/@cloudbase/app/dist/esm/index.js +0 -335
- package/node_modules/@cloudbase/app/dist/esm/index.node.d.ts +0 -6
- package/node_modules/@cloudbase/app/dist/esm/index.node.js +0 -19
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/constants.d.ts +0 -33
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/constants.js +0 -35
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/context.d.ts +0 -17
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/context.js +0 -181
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/index.d.ts +0 -25
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/index.js +0 -120
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/metadata.d.ts +0 -14
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/metadata.js +0 -123
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/request.d.ts +0 -41
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/request.js +0 -495
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/tool.d.ts +0 -2
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/tool.js +0 -350
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/types.d.ts +0 -102
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/types.js +0 -2
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/utils.d.ts +0 -37
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/utils.js +0 -264
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/wx.d.ts +0 -39
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter-node/wx.js +0 -237
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter.d.ts +0 -3
- package/node_modules/@cloudbase/app/dist/esm/libs/adapter.js +0 -136
- package/node_modules/@cloudbase/app/dist/esm/libs/cache.d.ts +0 -6
- package/node_modules/@cloudbase/app/dist/esm/libs/cache.js +0 -32
- package/node_modules/@cloudbase/app/dist/esm/libs/component.d.ts +0 -3
- package/node_modules/@cloudbase/app/dist/esm/libs/component.js +0 -121
- package/node_modules/@cloudbase/app/dist/esm/libs/lang.d.ts +0 -23
- package/node_modules/@cloudbase/app/dist/esm/libs/lang.js +0 -54
- package/node_modules/@cloudbase/app/dist/esm/libs/request.d.ts +0 -62
- package/node_modules/@cloudbase/app/dist/esm/libs/request.js +0 -475
- package/node_modules/@cloudbase/app/dist/miniprogram/index.js +0 -2
- package/node_modules/@cloudbase/app/dist/miniprogram/index.js.LICENSE.txt +0 -7
- package/node_modules/@cloudbase/app/package.json +0 -59
- package/node_modules/@cloudbase/auth/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/auth/dist/cjs/adapter.d.ts +0 -2
- package/node_modules/@cloudbase/auth/dist/cjs/adapter.js +0 -272
- package/node_modules/@cloudbase/auth/dist/cjs/index.d.ts +0 -283
- package/node_modules/@cloudbase/auth/dist/cjs/index.js +0 -3018
- package/node_modules/@cloudbase/auth/dist/cjs/type.d.ts +0 -258
- package/node_modules/@cloudbase/auth/dist/cjs/type.js +0 -6
- package/node_modules/@cloudbase/auth/dist/cjs/utilities.d.ts +0 -7
- package/node_modules/@cloudbase/auth/dist/cjs/utilities.js +0 -23
- package/node_modules/@cloudbase/auth/dist/cjs/utils.d.ts +0 -5
- package/node_modules/@cloudbase/auth/dist/cjs/utils.js +0 -60
- package/node_modules/@cloudbase/auth/dist/cjs/v1-compat.d.ts +0 -77
- package/node_modules/@cloudbase/auth/dist/cjs/v1-compat.js +0 -423
- package/node_modules/@cloudbase/auth/dist/esm/adapter.d.ts +0 -2
- package/node_modules/@cloudbase/auth/dist/esm/adapter.js +0 -268
- package/node_modules/@cloudbase/auth/dist/esm/index.d.ts +0 -283
- package/node_modules/@cloudbase/auth/dist/esm/index.js +0 -3008
- package/node_modules/@cloudbase/auth/dist/esm/type.d.ts +0 -258
- package/node_modules/@cloudbase/auth/dist/esm/type.js +0 -3
- package/node_modules/@cloudbase/auth/dist/esm/utilities.d.ts +0 -7
- package/node_modules/@cloudbase/auth/dist/esm/utilities.js +0 -8
- package/node_modules/@cloudbase/auth/dist/esm/utils.d.ts +0 -5
- package/node_modules/@cloudbase/auth/dist/esm/utils.js +0 -52
- package/node_modules/@cloudbase/auth/dist/esm/v1-compat.d.ts +0 -77
- package/node_modules/@cloudbase/auth/dist/esm/v1-compat.js +0 -419
- package/node_modules/@cloudbase/auth/dist/miniprogram/index.js +0 -1
- package/node_modules/@cloudbase/auth/package.json +0 -31
- package/node_modules/@cloudbase/cloudrun/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/cloudrun/dist/cjs/index.d.ts +0 -4
- package/node_modules/@cloudbase/cloudrun/dist/cjs/index.js +0 -154
- package/node_modules/@cloudbase/cloudrun/dist/esm/index.d.ts +0 -4
- package/node_modules/@cloudbase/cloudrun/dist/esm/index.js +0 -149
- package/node_modules/@cloudbase/cloudrun/package.json +0 -30
- package/node_modules/@cloudbase/container/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/container/.prettierrc.js +0 -41
- package/node_modules/@cloudbase/container/dist/cjs/constants/index.d.ts +0 -1
- package/node_modules/@cloudbase/container/dist/cjs/constants/index.js +0 -5
- package/node_modules/@cloudbase/container/dist/cjs/go_wams_exec.d.ts +0 -2
- package/node_modules/@cloudbase/container/dist/cjs/go_wams_exec.js +0 -538
- package/node_modules/@cloudbase/container/dist/cjs/index.d.ts +0 -13
- package/node_modules/@cloudbase/container/dist/cjs/index.js +0 -343
- package/node_modules/@cloudbase/container/dist/cjs/utils/index.d.ts +0 -3
- package/node_modules/@cloudbase/container/dist/cjs/utils/index.js +0 -83
- package/node_modules/@cloudbase/container/dist/cjs/utils/loader.d.ts +0 -8
- package/node_modules/@cloudbase/container/dist/cjs/utils/loader.js +0 -186
- package/node_modules/@cloudbase/container/dist/cjs/utils/request.d.ts +0 -12
- package/node_modules/@cloudbase/container/dist/cjs/utils/request.js +0 -106
- package/node_modules/@cloudbase/container/dist/esm/constants/index.d.ts +0 -1
- package/node_modules/@cloudbase/container/dist/esm/constants/index.js +0 -2
- package/node_modules/@cloudbase/container/dist/esm/go_wams_exec.d.ts +0 -2
- package/node_modules/@cloudbase/container/dist/esm/go_wams_exec.js +0 -536
- package/node_modules/@cloudbase/container/dist/esm/index.d.ts +0 -13
- package/node_modules/@cloudbase/container/dist/esm/index.js +0 -338
- package/node_modules/@cloudbase/container/dist/esm/utils/index.d.ts +0 -3
- package/node_modules/@cloudbase/container/dist/esm/utils/index.js +0 -77
- package/node_modules/@cloudbase/container/dist/esm/utils/loader.d.ts +0 -8
- package/node_modules/@cloudbase/container/dist/esm/utils/loader.js +0 -178
- package/node_modules/@cloudbase/container/dist/esm/utils/request.d.ts +0 -12
- package/node_modules/@cloudbase/container/dist/esm/utils/request.js +0 -102
- package/node_modules/@cloudbase/container/package.json +0 -30
- package/node_modules/@cloudbase/database/README.md +0 -119
- package/node_modules/@cloudbase/database/package.json +0 -36
- package/node_modules/@cloudbase/database/tsconfig.test.json +0 -15
- package/node_modules/@cloudbase/functions/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/functions/dist/cjs/index.d.ts +0 -2
- package/node_modules/@cloudbase/functions/dist/cjs/index.js +0 -223
- package/node_modules/@cloudbase/functions/dist/esm/index.d.ts +0 -2
- package/node_modules/@cloudbase/functions/dist/esm/index.js +0 -219
- package/node_modules/@cloudbase/functions/package.json +0 -32
- package/node_modules/@cloudbase/model/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/model/dist/cjs/index.d.ts +0 -5
- package/node_modules/@cloudbase/model/dist/cjs/index.js +0 -144
- package/node_modules/@cloudbase/model/dist/esm/index.d.ts +0 -5
- package/node_modules/@cloudbase/model/dist/esm/index.js +0 -125
- package/node_modules/@cloudbase/model/package.json +0 -29
- package/node_modules/@cloudbase/mysql/.eslintrc.js +0 -6
- package/node_modules/@cloudbase/mysql/dist/cjs/index.d.ts +0 -4
- package/node_modules/@cloudbase/mysql/dist/cjs/index.d.ts.map +0 -1
- package/node_modules/@cloudbase/mysql/dist/cjs/index.js +0 -173
- package/node_modules/@cloudbase/mysql/dist/esm/index.d.ts +0 -3
- package/node_modules/@cloudbase/mysql/dist/esm/index.js +0 -155
- package/node_modules/@cloudbase/mysql/package.json +0 -30
- package/node_modules/@cloudbase/oauth/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/apis.d.ts +0 -142
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/apis.js +0 -1280
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/auth-error.d.ts +0 -22
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/auth-error.js +0 -278
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/consts.d.ts +0 -139
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/consts.js +0 -147
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/models.d.ts +0 -557
- package/node_modules/@cloudbase/oauth/dist/cjs/auth/models.js +0 -3
- package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha-dom.d.ts +0 -3
- package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha-dom.js +0 -223
- package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha.d.ts +0 -42
- package/node_modules/@cloudbase/oauth/dist/cjs/captcha/captcha.js +0 -205
- package/node_modules/@cloudbase/oauth/dist/cjs/index.d.ts +0 -22
- package/node_modules/@cloudbase/oauth/dist/cjs/index.js +0 -107
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/consts.d.ts +0 -20
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/consts.js +0 -26
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/interface.d.ts +0 -15
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/interface.js +0 -10
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/models.d.ts +0 -74
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/models.js +0 -3
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/oauth2client.d.ts +0 -129
- package/node_modules/@cloudbase/oauth/dist/cjs/oauth2client/oauth2client.js +0 -1174
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/base64.d.ts +0 -9
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/base64.js +0 -112
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/encrypt.d.ts +0 -4
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/encrypt.js +0 -26
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/encryptlong/index.d.ts +0 -546
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/encryptlong/index.js +0 -2982
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/function/single-promise.d.ts +0 -6
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/function/single-promise.js +0 -94
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/index.d.ts +0 -2
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/index.js +0 -56
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/mp.d.ts +0 -2
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/mp.js +0 -66
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/urlSearchParams.d.ts +0 -13
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/urlSearchParams.js +0 -66
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/uuid.d.ts +0 -1
- package/node_modules/@cloudbase/oauth/dist/cjs/utils/uuid.js +0 -12
- package/node_modules/@cloudbase/oauth/dist/esm/auth/apis.d.ts +0 -142
- package/node_modules/@cloudbase/oauth/dist/esm/auth/apis.js +0 -768
- package/node_modules/@cloudbase/oauth/dist/esm/auth/auth-error.d.ts +0 -22
- package/node_modules/@cloudbase/oauth/dist/esm/auth/auth-error.js +0 -255
- package/node_modules/@cloudbase/oauth/dist/esm/auth/consts.d.ts +0 -139
- package/node_modules/@cloudbase/oauth/dist/esm/auth/consts.js +0 -144
- package/node_modules/@cloudbase/oauth/dist/esm/auth/models.d.ts +0 -557
- package/node_modules/@cloudbase/oauth/dist/esm/auth/models.js +0 -2
- package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha-dom.d.ts +0 -3
- package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha-dom.js +0 -130
- package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha.d.ts +0 -42
- package/node_modules/@cloudbase/oauth/dist/esm/captcha/captcha.js +0 -104
- package/node_modules/@cloudbase/oauth/dist/esm/index.d.ts +0 -22
- package/node_modules/@cloudbase/oauth/dist/esm/index.js +0 -64
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/consts.d.ts +0 -20
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/consts.js +0 -22
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/interface.d.ts +0 -15
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/interface.js +0 -3
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/models.d.ts +0 -74
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/models.js +0 -2
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/oauth2client.d.ts +0 -129
- package/node_modules/@cloudbase/oauth/dist/esm/oauth2client/oauth2client.js +0 -711
- package/node_modules/@cloudbase/oauth/dist/esm/utils/base64.d.ts +0 -9
- package/node_modules/@cloudbase/oauth/dist/esm/utils/base64.js +0 -104
- package/node_modules/@cloudbase/oauth/dist/esm/utils/encrypt.d.ts +0 -4
- package/node_modules/@cloudbase/oauth/dist/esm/utils/encrypt.js +0 -18
- package/node_modules/@cloudbase/oauth/dist/esm/utils/encryptlong/index.d.ts +0 -546
- package/node_modules/@cloudbase/oauth/dist/esm/utils/encryptlong/index.js +0 -2953
- package/node_modules/@cloudbase/oauth/dist/esm/utils/function/single-promise.d.ts +0 -6
- package/node_modules/@cloudbase/oauth/dist/esm/utils/function/single-promise.js +0 -34
- package/node_modules/@cloudbase/oauth/dist/esm/utils/index.d.ts +0 -2
- package/node_modules/@cloudbase/oauth/dist/esm/utils/index.js +0 -51
- package/node_modules/@cloudbase/oauth/dist/esm/utils/mp.d.ts +0 -2
- package/node_modules/@cloudbase/oauth/dist/esm/utils/mp.js +0 -61
- package/node_modules/@cloudbase/oauth/dist/esm/utils/urlSearchParams.d.ts +0 -13
- package/node_modules/@cloudbase/oauth/dist/esm/utils/urlSearchParams.js +0 -58
- package/node_modules/@cloudbase/oauth/dist/esm/utils/uuid.d.ts +0 -1
- package/node_modules/@cloudbase/oauth/dist/esm/utils/uuid.js +0 -8
- package/node_modules/@cloudbase/oauth/dist/miniprogram/index.js +0 -1
- package/node_modules/@cloudbase/oauth/package.json +0 -20
- package/node_modules/@cloudbase/realtime/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/realtime/dist/cjs/common.d.ts +0 -4
- package/node_modules/@cloudbase/realtime/dist/cjs/common.js +0 -22
- package/node_modules/@cloudbase/realtime/dist/cjs/error.d.ts +0 -36
- package/node_modules/@cloudbase/realtime/dist/cjs/error.js +0 -106
- package/node_modules/@cloudbase/realtime/dist/cjs/index.d.ts +0 -2
- package/node_modules/@cloudbase/realtime/dist/cjs/index.js +0 -36
- package/node_modules/@cloudbase/realtime/dist/cjs/listener.d.ts +0 -14
- package/node_modules/@cloudbase/realtime/dist/cjs/listener.js +0 -18
- package/node_modules/@cloudbase/realtime/dist/cjs/message.d.ts +0 -3
- package/node_modules/@cloudbase/realtime/dist/cjs/message.js +0 -13
- package/node_modules/@cloudbase/realtime/dist/cjs/snapshot.d.ts +0 -17
- package/node_modules/@cloudbase/realtime/dist/cjs/snapshot.js +0 -45
- package/node_modules/@cloudbase/realtime/dist/cjs/utils.d.ts +0 -1
- package/node_modules/@cloudbase/realtime/dist/cjs/utils.js +0 -9
- package/node_modules/@cloudbase/realtime/dist/cjs/virtual-websocket-client.d.ts +0 -62
- package/node_modules/@cloudbase/realtime/dist/cjs/virtual-websocket-client.js +0 -960
- package/node_modules/@cloudbase/realtime/dist/cjs/websocket-client.d.ts +0 -78
- package/node_modules/@cloudbase/realtime/dist/cjs/websocket-client.js +0 -750
- package/node_modules/@cloudbase/realtime/dist/cjs/ws-event.d.ts +0 -126
- package/node_modules/@cloudbase/realtime/dist/cjs/ws-event.js +0 -141
- package/node_modules/@cloudbase/realtime/dist/esm/common.d.ts +0 -4
- package/node_modules/@cloudbase/realtime/dist/esm/common.js +0 -15
- package/node_modules/@cloudbase/realtime/dist/esm/error.d.ts +0 -36
- package/node_modules/@cloudbase/realtime/dist/esm/error.js +0 -100
- package/node_modules/@cloudbase/realtime/dist/esm/index.d.ts +0 -2
- package/node_modules/@cloudbase/realtime/dist/esm/index.js +0 -32
- package/node_modules/@cloudbase/realtime/dist/esm/listener.d.ts +0 -14
- package/node_modules/@cloudbase/realtime/dist/esm/listener.js +0 -15
- package/node_modules/@cloudbase/realtime/dist/esm/message.d.ts +0 -3
- package/node_modules/@cloudbase/realtime/dist/esm/message.js +0 -8
- package/node_modules/@cloudbase/realtime/dist/esm/snapshot.d.ts +0 -17
- package/node_modules/@cloudbase/realtime/dist/esm/snapshot.js +0 -42
- package/node_modules/@cloudbase/realtime/dist/esm/utils.d.ts +0 -1
- package/node_modules/@cloudbase/realtime/dist/esm/utils.js +0 -5
- package/node_modules/@cloudbase/realtime/dist/esm/virtual-websocket-client.d.ts +0 -62
- package/node_modules/@cloudbase/realtime/dist/esm/virtual-websocket-client.js +0 -954
- package/node_modules/@cloudbase/realtime/dist/esm/websocket-client.d.ts +0 -78
- package/node_modules/@cloudbase/realtime/dist/esm/websocket-client.js +0 -747
- package/node_modules/@cloudbase/realtime/dist/esm/ws-event.d.ts +0 -126
- package/node_modules/@cloudbase/realtime/dist/esm/ws-event.js +0 -137
- package/node_modules/@cloudbase/realtime/package.json +0 -29
- package/node_modules/@cloudbase/storage/.eslintrc.js +0 -15
- package/node_modules/@cloudbase/storage/dist/cjs/index.d.ts +0 -195
- package/node_modules/@cloudbase/storage/dist/cjs/index.js +0 -1426
- package/node_modules/@cloudbase/storage/dist/cjs/supabase/errors.d.ts +0 -20
- package/node_modules/@cloudbase/storage/dist/cjs/supabase/errors.js +0 -65
- package/node_modules/@cloudbase/storage/dist/cjs/supabase/types.d.ts +0 -64
- package/node_modules/@cloudbase/storage/dist/cjs/supabase/types.js +0 -3
- package/node_modules/@cloudbase/storage/dist/esm/index.d.ts +0 -195
- package/node_modules/@cloudbase/storage/dist/esm/index.js +0 -1422
- package/node_modules/@cloudbase/storage/dist/esm/supabase/errors.d.ts +0 -20
- package/node_modules/@cloudbase/storage/dist/esm/supabase/errors.js +0 -61
- package/node_modules/@cloudbase/storage/dist/esm/supabase/types.d.ts +0 -64
- package/node_modules/@cloudbase/storage/dist/esm/supabase/types.js +0 -2
- package/node_modules/@cloudbase/storage/package.json +0 -28
- package/node_modules/@cloudbase/types/index.js +0 -1
- package/node_modules/@cloudbase/utilities/.eslintrc.js +0 -15
- package/oauth/src/index.d.ts +0 -1
- package/oauth/src/index.ts +0 -1
- package/realtime/src/index.d.ts +0 -2
- package/realtime/src/index.ts +0 -8
- package/storage/src/index.d.ts +0 -2
- package/storage/src/index.js +0 -5
- package/storage/src/index.ts +0 -4
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/aggregate.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/aggregate.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/collection.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/collection.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/command.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/command.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/logic.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/logic.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/update.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/commands/update.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/app.config.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/app.config.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/error.config.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/config/error.config.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/const/code.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/const/code.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/constant.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/constant.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/document.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/document.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/interface.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/interface.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/lineString.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/lineString.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiLineString.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiLineString.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPoint.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPoint.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPolygon.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/multiPolygon.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/point.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/point.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/polygon.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/geo/polygon.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/helper/symbol.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/helper/symbol.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/lib/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/lib/util.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/operator-map.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/operator-map.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/regexp/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/regexp/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/common.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/common.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/datatype.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/datatype.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/update.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serializer/update.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serverDate/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/serverDate/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/collection.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/collection.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/document.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/document.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/transaction/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/realtime.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/typings/realtime.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/util.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/error.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/error.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/msg.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/msg.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/symbol.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/symbol.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/type.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/type.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/utils.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/utils/utils.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/validate.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/commonjs/validate.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/aggregate.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/aggregate.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/collection.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/collection.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/command.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/command.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/logic.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/logic.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/update.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/commands/update.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/config/app.config.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/config/app.config.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/config/error.config.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/config/error.config.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/const/code.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/const/code.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/constant.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/constant.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/document.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/document.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/interface.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/interface.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/lineString.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/lineString.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiLineString.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiLineString.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPoint.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPoint.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPolygon.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/multiPolygon.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/point.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/point.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/polygon.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/geo/polygon.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/helper/symbol.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/helper/symbol.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/lib/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/lib/util.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/operator-map.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/operator-map.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/regexp/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/regexp/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/common.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/common.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/datatype.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/datatype.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/update.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serializer/update.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serverDate/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/serverDate/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/collection.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/collection.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/document.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/document.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/query.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/transaction/query.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/index.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/realtime.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/typings/realtime.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/util.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/error.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/error.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/msg.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/msg.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/symbol.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/symbol.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/type.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/type.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/utils.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/utils/utils.js +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/validate.d.ts +0 -0
- /package/{node_modules/@cloudbase/database → database}/dist/esm/validate.js +0 -0
- /package/{app/src → dist}/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/auth.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/cache.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/cloudrun.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/component.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/database.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/events.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/functions.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/realtime.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/request.d.ts +0 -0
- /package/{node_modules/@cloudbase/types → types}/storage.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/platforms/web.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/adapters/platforms/web.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/common.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/common.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/errors.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/errors.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/constants/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/decorators.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/decorators.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/helpers/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/abortController.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/abortController.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/cache.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/cache.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/events.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/events.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/langEvent.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/langEvent.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/cjs/libs/util.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/platforms/web.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/adapters/platforms/web.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/common.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/common.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/errors.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/errors.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/constants/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/decorators.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/decorators.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/helpers/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/index.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/index.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/abortController.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/abortController.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/cache.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/cache.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/events.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/events.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/langEvent.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/langEvent.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/util.d.ts +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/esm/libs/util.js +0 -0
- /package/{node_modules/@cloudbase/utilities → utilities}/dist/miniprogram/index.js +0 -0
|
@@ -1,1174 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
-
if (ar || !(i in from)) {
|
|
52
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
-
ar[i] = from[i];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
-
};
|
|
58
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
-
exports.OAuth2Client = exports.defaultStorage = exports.generateRequestId = exports.toResponseError = exports.defaultRequest = void 0;
|
|
60
|
-
var consts_1 = require("./consts");
|
|
61
|
-
var consts_2 = require("../auth/consts");
|
|
62
|
-
var uuid_1 = require("../utils/uuid");
|
|
63
|
-
var index_1 = require("../utils/index");
|
|
64
|
-
var single_promise_1 = require("../utils/function/single-promise");
|
|
65
|
-
var base64_1 = require("../utils/base64");
|
|
66
|
-
var mp_1 = require("../utils/mp");
|
|
67
|
-
var utilities_1 = require("@cloudbase/utilities");
|
|
68
|
-
var RequestIdHeaderName = 'x-request-id';
|
|
69
|
-
var DeviceIdHeaderName = 'x-device-id';
|
|
70
|
-
var DeviceIdSectionName = 'device_id';
|
|
71
|
-
var defaultRequest = function (url, options) {
|
|
72
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
73
|
-
var result, responseError, copyOptions, responseResult, jsonResponse, error_1;
|
|
74
|
-
return __generator(this, function (_a) {
|
|
75
|
-
switch (_a.label) {
|
|
76
|
-
case 0:
|
|
77
|
-
result = null;
|
|
78
|
-
responseError = null;
|
|
79
|
-
_a.label = 1;
|
|
80
|
-
case 1:
|
|
81
|
-
_a.trys.push([1, 4, , 5]);
|
|
82
|
-
copyOptions = Object.assign({}, options);
|
|
83
|
-
if (!copyOptions.method) {
|
|
84
|
-
copyOptions.method = 'GET';
|
|
85
|
-
}
|
|
86
|
-
if (copyOptions.body && typeof copyOptions.body !== 'string') {
|
|
87
|
-
copyOptions.body = JSON.stringify(copyOptions.body);
|
|
88
|
-
}
|
|
89
|
-
return [4, fetch(url, copyOptions)];
|
|
90
|
-
case 2:
|
|
91
|
-
responseResult = _a.sent();
|
|
92
|
-
return [4, responseResult.json()];
|
|
93
|
-
case 3:
|
|
94
|
-
jsonResponse = _a.sent();
|
|
95
|
-
if (jsonResponse === null || jsonResponse === void 0 ? void 0 : jsonResponse.error) {
|
|
96
|
-
responseError = jsonResponse;
|
|
97
|
-
responseError.error_uri = new URL(url).pathname;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
result = jsonResponse;
|
|
101
|
-
}
|
|
102
|
-
return [3, 5];
|
|
103
|
-
case 4:
|
|
104
|
-
error_1 = _a.sent();
|
|
105
|
-
responseError = {
|
|
106
|
-
error: consts_1.ErrorType.UNREACHABLE,
|
|
107
|
-
error_description: error_1.message,
|
|
108
|
-
error_uri: new URL(url).pathname,
|
|
109
|
-
};
|
|
110
|
-
return [3, 5];
|
|
111
|
-
case 5:
|
|
112
|
-
if (responseError) {
|
|
113
|
-
throw responseError;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return [2, result];
|
|
117
|
-
}
|
|
118
|
-
return [2];
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
};
|
|
123
|
-
exports.defaultRequest = defaultRequest;
|
|
124
|
-
var toResponseError = function (error, options) {
|
|
125
|
-
var responseError;
|
|
126
|
-
var formatOptions = options || {};
|
|
127
|
-
if (error instanceof Error) {
|
|
128
|
-
responseError = {
|
|
129
|
-
error: formatOptions.error || consts_1.ErrorType.LOCAL,
|
|
130
|
-
error_description: formatOptions.error_description || error.message,
|
|
131
|
-
error_uri: formatOptions.error_uri,
|
|
132
|
-
details: formatOptions.details || error.stack,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
var formatError = error || {};
|
|
137
|
-
responseError = {
|
|
138
|
-
error: formatOptions.error || formatError.error || consts_1.ErrorType.LOCAL,
|
|
139
|
-
error_description: formatOptions.error_description || formatError.error_description,
|
|
140
|
-
error_uri: formatOptions.error_uri || formatError.error_uri,
|
|
141
|
-
details: formatOptions.details || formatError.details,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
return responseError;
|
|
145
|
-
};
|
|
146
|
-
exports.toResponseError = toResponseError;
|
|
147
|
-
function generateRequestId() {
|
|
148
|
-
return (0, uuid_1.uuidv4)();
|
|
149
|
-
}
|
|
150
|
-
exports.generateRequestId = generateRequestId;
|
|
151
|
-
var DefaultStorage = (function () {
|
|
152
|
-
function DefaultStorage(opts) {
|
|
153
|
-
this._env = (opts === null || opts === void 0 ? void 0 : opts.env) || '';
|
|
154
|
-
}
|
|
155
|
-
DefaultStorage.prototype.getItem = function (key) {
|
|
156
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
157
|
-
return __generator(this, function (_a) {
|
|
158
|
-
return [2, window.localStorage.getItem("".concat(key).concat(this._env))];
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
};
|
|
162
|
-
DefaultStorage.prototype.removeItem = function (key) {
|
|
163
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
164
|
-
return __generator(this, function (_a) {
|
|
165
|
-
window.localStorage.removeItem("".concat(key).concat(this._env));
|
|
166
|
-
return [2];
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
};
|
|
170
|
-
DefaultStorage.prototype.setItem = function (key, value) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
172
|
-
return __generator(this, function (_a) {
|
|
173
|
-
window.localStorage.setItem("".concat(key).concat(this._env), value);
|
|
174
|
-
return [2];
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
};
|
|
178
|
-
DefaultStorage.prototype.getItemSync = function (key) {
|
|
179
|
-
return window.localStorage.getItem("".concat(key).concat(this._env));
|
|
180
|
-
};
|
|
181
|
-
DefaultStorage.prototype.removeItemSync = function (key) {
|
|
182
|
-
window.localStorage.removeItem("".concat(key).concat(this._env));
|
|
183
|
-
};
|
|
184
|
-
DefaultStorage.prototype.setItemSync = function (key, value) {
|
|
185
|
-
window.localStorage.setItem("".concat(key).concat(this._env), value);
|
|
186
|
-
};
|
|
187
|
-
return DefaultStorage;
|
|
188
|
-
}());
|
|
189
|
-
exports.defaultStorage = new DefaultStorage();
|
|
190
|
-
function isCredentialsExpired(credentials) {
|
|
191
|
-
var isExpired = true;
|
|
192
|
-
if ((credentials === null || credentials === void 0 ? void 0 : credentials.expires_at) && (credentials === null || credentials === void 0 ? void 0 : credentials.access_token)) {
|
|
193
|
-
isExpired = credentials.expires_at < new Date();
|
|
194
|
-
}
|
|
195
|
-
return isExpired;
|
|
196
|
-
}
|
|
197
|
-
var LocalCredentials = (function () {
|
|
198
|
-
function LocalCredentials(options) {
|
|
199
|
-
this.credentials = null;
|
|
200
|
-
this.accessKeyCredentials = null;
|
|
201
|
-
this.singlePromise = null;
|
|
202
|
-
this.tokenSectionName = options.tokenSectionName;
|
|
203
|
-
this.storage = options.storage;
|
|
204
|
-
this.clientId = options.clientId;
|
|
205
|
-
this.singlePromise = new single_promise_1.SinglePromise({ clientId: this.clientId });
|
|
206
|
-
this.credentials = options.credentials || null;
|
|
207
|
-
}
|
|
208
|
-
LocalCredentials.prototype.getStorageCredentialsSync = function () {
|
|
209
|
-
var credentials = null;
|
|
210
|
-
var tokenStr = this.storage.getItemSync(this.tokenSectionName);
|
|
211
|
-
if (tokenStr !== undefined && tokenStr !== null) {
|
|
212
|
-
try {
|
|
213
|
-
credentials = JSON.parse(tokenStr);
|
|
214
|
-
if (credentials === null || credentials === void 0 ? void 0 : credentials.expires_at) {
|
|
215
|
-
credentials.expires_at = new Date(credentials.expires_at);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
catch (error) {
|
|
219
|
-
this.storage.removeItem(this.tokenSectionName);
|
|
220
|
-
credentials = null;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return credentials;
|
|
224
|
-
};
|
|
225
|
-
LocalCredentials.prototype.setCredentials = function (credentials) {
|
|
226
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
227
|
-
var tokenStr;
|
|
228
|
-
return __generator(this, function (_a) {
|
|
229
|
-
switch (_a.label) {
|
|
230
|
-
case 0:
|
|
231
|
-
if (!(credentials === null || credentials === void 0 ? void 0 : credentials.expires_in)) return [3, 3];
|
|
232
|
-
if (!(credentials === null || credentials === void 0 ? void 0 : credentials.expires_at)) {
|
|
233
|
-
credentials.expires_at = new Date(Date.now() + (credentials.expires_in - 30) * 1000);
|
|
234
|
-
}
|
|
235
|
-
if (!this.storage) return [3, 2];
|
|
236
|
-
tokenStr = JSON.stringify(credentials);
|
|
237
|
-
return [4, this.storage.setItem(this.tokenSectionName, tokenStr)];
|
|
238
|
-
case 1:
|
|
239
|
-
_a.sent();
|
|
240
|
-
_a.label = 2;
|
|
241
|
-
case 2:
|
|
242
|
-
this.credentials = credentials;
|
|
243
|
-
return [3, 6];
|
|
244
|
-
case 3:
|
|
245
|
-
if (!this.storage) return [3, 5];
|
|
246
|
-
return [4, this.storage.removeItem(this.tokenSectionName)];
|
|
247
|
-
case 4:
|
|
248
|
-
_a.sent();
|
|
249
|
-
_a.label = 5;
|
|
250
|
-
case 5:
|
|
251
|
-
this.credentials = null;
|
|
252
|
-
_a.label = 6;
|
|
253
|
-
case 6: return [2];
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
};
|
|
258
|
-
LocalCredentials.prototype.setAccessKeyCredentials = function (credentials) {
|
|
259
|
-
this.accessKeyCredentials = credentials;
|
|
260
|
-
if (credentials.scope === consts_2.DEFAULT_NODE_ACCESS_SCOPE) {
|
|
261
|
-
this.credentials = credentials;
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
|
-
LocalCredentials.prototype.getCredentials = function () {
|
|
265
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
266
|
-
var _this = this;
|
|
267
|
-
return __generator(this, function (_a) {
|
|
268
|
-
return [2, this.singlePromise.run('getCredentials', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
269
|
-
var _a, credentials, isAccessKeyCredentials;
|
|
270
|
-
return __generator(this, function (_b) {
|
|
271
|
-
switch (_b.label) {
|
|
272
|
-
case 0:
|
|
273
|
-
if (!isCredentialsExpired(this.credentials)) return [3, 2];
|
|
274
|
-
return [4, this.getStorageCredentials()];
|
|
275
|
-
case 1:
|
|
276
|
-
_a = _b.sent(), credentials = _a.credentials, isAccessKeyCredentials = _a.isAccessKeyCredentials;
|
|
277
|
-
if (isAccessKeyCredentials) {
|
|
278
|
-
return [2, credentials];
|
|
279
|
-
}
|
|
280
|
-
this.credentials = credentials;
|
|
281
|
-
_b.label = 2;
|
|
282
|
-
case 2: return [2, this.credentials];
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
}); })];
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
};
|
|
289
|
-
LocalCredentials.prototype.getStorageCredentials = function () {
|
|
290
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
291
|
-
var _this = this;
|
|
292
|
-
return __generator(this, function (_a) {
|
|
293
|
-
return [2, this.singlePromise.run('_getStorageCredentials', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
294
|
-
var credentials, isAccessKeyCredentials, tokenStr, error_2;
|
|
295
|
-
return __generator(this, function (_a) {
|
|
296
|
-
switch (_a.label) {
|
|
297
|
-
case 0:
|
|
298
|
-
credentials = null;
|
|
299
|
-
isAccessKeyCredentials = false;
|
|
300
|
-
return [4, this.storage.getItem(this.tokenSectionName)];
|
|
301
|
-
case 1:
|
|
302
|
-
tokenStr = _a.sent();
|
|
303
|
-
if (!!!tokenStr) return [3, 6];
|
|
304
|
-
_a.label = 2;
|
|
305
|
-
case 2:
|
|
306
|
-
_a.trys.push([2, 3, , 5]);
|
|
307
|
-
credentials = JSON.parse(tokenStr);
|
|
308
|
-
if (credentials === null || credentials === void 0 ? void 0 : credentials.expires_at) {
|
|
309
|
-
credentials.expires_at = new Date(credentials.expires_at);
|
|
310
|
-
}
|
|
311
|
-
return [3, 5];
|
|
312
|
-
case 3:
|
|
313
|
-
error_2 = _a.sent();
|
|
314
|
-
return [4, this.storage.removeItem(this.tokenSectionName)];
|
|
315
|
-
case 4:
|
|
316
|
-
_a.sent();
|
|
317
|
-
credentials = null;
|
|
318
|
-
return [3, 5];
|
|
319
|
-
case 5: return [3, 7];
|
|
320
|
-
case 6:
|
|
321
|
-
credentials = this.accessKeyCredentials || null;
|
|
322
|
-
isAccessKeyCredentials = true;
|
|
323
|
-
_a.label = 7;
|
|
324
|
-
case 7: return [2, { credentials: credentials, isAccessKeyCredentials: isAccessKeyCredentials }];
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
}); })];
|
|
328
|
-
});
|
|
329
|
-
});
|
|
330
|
-
};
|
|
331
|
-
return LocalCredentials;
|
|
332
|
-
}());
|
|
333
|
-
var OAuth2Client = exports.OAuth2Client = (function () {
|
|
334
|
-
function OAuth2Client(options) {
|
|
335
|
-
var _this = this;
|
|
336
|
-
var _a;
|
|
337
|
-
this.initializePromise = null;
|
|
338
|
-
this.lockAcquired = false;
|
|
339
|
-
this.pendingInLock = [];
|
|
340
|
-
this.singlePromise = null;
|
|
341
|
-
if (!options.clientSecret) {
|
|
342
|
-
options.clientSecret = '';
|
|
343
|
-
}
|
|
344
|
-
if (!options.clientId && options.env) {
|
|
345
|
-
options.clientId = options.env;
|
|
346
|
-
}
|
|
347
|
-
this.apiOrigin = options.apiOrigin;
|
|
348
|
-
this.apiPath = options.apiPath || consts_2.AUTH_API_PREFIX;
|
|
349
|
-
this.clientId = options.clientId;
|
|
350
|
-
this.i18n = options.i18n;
|
|
351
|
-
this.eventBus = options.eventBus;
|
|
352
|
-
this.singlePromise = new single_promise_1.SinglePromise({ clientId: this.clientId });
|
|
353
|
-
this.retry = this.formatRetry(options.retry, OAuth2Client.defaultRetry);
|
|
354
|
-
if (options.baseRequest) {
|
|
355
|
-
this.baseRequest = options.baseRequest;
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
this.baseRequest = exports.defaultRequest;
|
|
359
|
-
}
|
|
360
|
-
this.tokenInURL = options.tokenInURL;
|
|
361
|
-
this.headers = options.headers;
|
|
362
|
-
this.storage = options.storage || exports.defaultStorage;
|
|
363
|
-
this.localCredentials = new LocalCredentials({
|
|
364
|
-
tokenSectionName: "credentials_".concat(options.clientId),
|
|
365
|
-
storage: this.storage,
|
|
366
|
-
clientId: options.clientId,
|
|
367
|
-
});
|
|
368
|
-
this.clientSecret = options.clientSecret;
|
|
369
|
-
if (options.clientId) {
|
|
370
|
-
this.basicAuth = "Basic ".concat((0, base64_1.weBtoa)("".concat(options.clientId, ":").concat(this.clientSecret)));
|
|
371
|
-
}
|
|
372
|
-
this.wxCloud = options.wxCloud;
|
|
373
|
-
try {
|
|
374
|
-
if ((0, mp_1.isMp)()) {
|
|
375
|
-
this.useWxCloud = options.useWxCloud;
|
|
376
|
-
if (this.wxCloud === undefined && options.env) {
|
|
377
|
-
wx.cloud.init({ env: options.env });
|
|
378
|
-
this.wxCloud = wx.cloud;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
catch (error) {
|
|
383
|
-
}
|
|
384
|
-
this.refreshTokenFunc = options.refreshTokenFunc || this.defaultRefreshTokenFunc;
|
|
385
|
-
this.anonymousSignInFunc = options.anonymousSignInFunc;
|
|
386
|
-
this.onCredentialsError = options.onCredentialsError;
|
|
387
|
-
this.getInitialSession = options.getInitialSession;
|
|
388
|
-
this.onInitialSessionObtained = options.onInitialSessionObtained;
|
|
389
|
-
this.logDebugMessages = (_a = options.debug) !== null && _a !== void 0 ? _a : false;
|
|
390
|
-
utilities_1.langEvent.bus.on(utilities_1.langEvent.LANG_CHANGE_EVENT, function (params) {
|
|
391
|
-
var _a;
|
|
392
|
-
_this.i18n = ((_a = params.data) === null || _a === void 0 ? void 0 : _a.i18n) || _this.i18n;
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
OAuth2Client.prototype.setGetInitialSession = function (callback) {
|
|
396
|
-
this.getInitialSession = callback;
|
|
397
|
-
};
|
|
398
|
-
OAuth2Client.prototype.setOnInitialSessionObtained = function (callback) {
|
|
399
|
-
this.onInitialSessionObtained = callback;
|
|
400
|
-
};
|
|
401
|
-
OAuth2Client.prototype.initialize = function (func) {
|
|
402
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
403
|
-
var _this = this;
|
|
404
|
-
return __generator(this, function (_a) {
|
|
405
|
-
switch (_a.label) {
|
|
406
|
-
case 0:
|
|
407
|
-
if (!this.initializePromise) return [3, 2];
|
|
408
|
-
return [4, this.initializePromise];
|
|
409
|
-
case 1: return [2, _a.sent()];
|
|
410
|
-
case 2:
|
|
411
|
-
if (!(func !== undefined)) return [3, 4];
|
|
412
|
-
this.initializePromise = func;
|
|
413
|
-
return [4, this.initializePromise];
|
|
414
|
-
case 3: return [2, _a.sent()];
|
|
415
|
-
case 4:
|
|
416
|
-
this.initializePromise = (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
417
|
-
var _this = this;
|
|
418
|
-
return __generator(this, function (_a) {
|
|
419
|
-
switch (_a.label) {
|
|
420
|
-
case 0: return [4, this._acquireLock(-1, function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
421
|
-
switch (_a.label) {
|
|
422
|
-
case 0: return [4, this._initialize()];
|
|
423
|
-
case 1: return [2, _a.sent()];
|
|
424
|
-
}
|
|
425
|
-
}); }); })];
|
|
426
|
-
case 1: return [2, _a.sent()];
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
}); })();
|
|
430
|
-
return [4, this.initializePromise];
|
|
431
|
-
case 5: return [2, _a.sent()];
|
|
432
|
-
}
|
|
433
|
-
});
|
|
434
|
-
});
|
|
435
|
-
};
|
|
436
|
-
OAuth2Client.prototype.setCredentials = function (credentials) {
|
|
437
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
438
|
-
var _this = this;
|
|
439
|
-
return __generator(this, function (_a) {
|
|
440
|
-
switch (_a.label) {
|
|
441
|
-
case 0: return [4, this.initializePromise];
|
|
442
|
-
case 1:
|
|
443
|
-
_a.sent();
|
|
444
|
-
return [2, this._acquireLock(-1, function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
445
|
-
return [2, this.localCredentials.setCredentials(credentials)];
|
|
446
|
-
}); }); })];
|
|
447
|
-
}
|
|
448
|
-
});
|
|
449
|
-
});
|
|
450
|
-
};
|
|
451
|
-
OAuth2Client.prototype.setAccessKeyCredentials = function (credentials) {
|
|
452
|
-
return this.localCredentials.setAccessKeyCredentials(credentials);
|
|
453
|
-
};
|
|
454
|
-
OAuth2Client.prototype.getAccessToken = function () {
|
|
455
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
456
|
-
var credentials, respErr;
|
|
457
|
-
return __generator(this, function (_a) {
|
|
458
|
-
switch (_a.label) {
|
|
459
|
-
case 0: return [4, this.initializePromise];
|
|
460
|
-
case 1:
|
|
461
|
-
_a.sent();
|
|
462
|
-
return [4, this.getCredentials()];
|
|
463
|
-
case 2:
|
|
464
|
-
credentials = _a.sent();
|
|
465
|
-
if ((credentials === null || credentials === void 0 ? void 0 : credentials.scope) === consts_2.DEFAULT_NODE_ACCESS_SCOPE) {
|
|
466
|
-
return [2, Promise.resolve(credentials.access_token)];
|
|
467
|
-
}
|
|
468
|
-
if (credentials === null || credentials === void 0 ? void 0 : credentials.access_token) {
|
|
469
|
-
return [2, Promise.resolve(credentials.access_token)];
|
|
470
|
-
}
|
|
471
|
-
respErr = { error: consts_1.ErrorType.UNAUTHENTICATED };
|
|
472
|
-
return [2, Promise.reject(respErr)];
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
});
|
|
476
|
-
};
|
|
477
|
-
OAuth2Client.prototype.request = function (url, options) {
|
|
478
|
-
var _a, _b;
|
|
479
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
480
|
-
var retry, deviceId, credentials, _c, response, maxRequestTimes, requestTime, responseError_1;
|
|
481
|
-
var _d;
|
|
482
|
-
return __generator(this, function (_f) {
|
|
483
|
-
switch (_f.label) {
|
|
484
|
-
case 0:
|
|
485
|
-
if (!options) {
|
|
486
|
-
options = {};
|
|
487
|
-
}
|
|
488
|
-
retry = this.formatRetry(options.retry, this.retry);
|
|
489
|
-
options.headers = __assign(__assign({}, options.headers), (_d = {}, _d[(_a = this.i18n) === null || _a === void 0 ? void 0 : _a.LANG_HEADER_KEY] = (_b = this.i18n) === null || _b === void 0 ? void 0 : _b.lang, _d));
|
|
490
|
-
if (this.headers) {
|
|
491
|
-
options.headers = __assign(__assign({}, this.headers), options.headers);
|
|
492
|
-
}
|
|
493
|
-
if (!options.headers[RequestIdHeaderName]) {
|
|
494
|
-
options.headers[RequestIdHeaderName] = generateRequestId();
|
|
495
|
-
}
|
|
496
|
-
if (!!options.headers[DeviceIdHeaderName]) return [3, 2];
|
|
497
|
-
return [4, this.getDeviceId()];
|
|
498
|
-
case 1:
|
|
499
|
-
deviceId = _f.sent();
|
|
500
|
-
options.headers[DeviceIdHeaderName] = deviceId;
|
|
501
|
-
_f.label = 2;
|
|
502
|
-
case 2:
|
|
503
|
-
if ((options === null || options === void 0 ? void 0 : options.withBasicAuth) && this.basicAuth) {
|
|
504
|
-
options.headers.Authorization = this.basicAuth;
|
|
505
|
-
}
|
|
506
|
-
if (!(options === null || options === void 0 ? void 0 : options.withCredentials)) return [3, 7];
|
|
507
|
-
if (!options.getCredentials) return [3, 4];
|
|
508
|
-
return [4, options.getCredentials()];
|
|
509
|
-
case 3:
|
|
510
|
-
_c = _f.sent();
|
|
511
|
-
return [3, 6];
|
|
512
|
-
case 4: return [4, this.getCredentials()];
|
|
513
|
-
case 5:
|
|
514
|
-
_c = _f.sent();
|
|
515
|
-
_f.label = 6;
|
|
516
|
-
case 6:
|
|
517
|
-
credentials = _c;
|
|
518
|
-
if (credentials) {
|
|
519
|
-
if (this.tokenInURL) {
|
|
520
|
-
if (url.indexOf('?') < 0) {
|
|
521
|
-
url += '?';
|
|
522
|
-
}
|
|
523
|
-
url += "access_token=".concat(credentials.access_token);
|
|
524
|
-
}
|
|
525
|
-
else {
|
|
526
|
-
options.headers.Authorization = "".concat(credentials.token_type, " ").concat(credentials.access_token);
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
return [3, 8];
|
|
530
|
-
case 7:
|
|
531
|
-
if (this.clientId && url.indexOf('client_id') < 0) {
|
|
532
|
-
url += url.indexOf('?') < 0 ? '?' : '&';
|
|
533
|
-
url += "client_id=".concat(this.clientId);
|
|
534
|
-
}
|
|
535
|
-
_f.label = 8;
|
|
536
|
-
case 8:
|
|
537
|
-
if (url.startsWith('/')) {
|
|
538
|
-
url = "".concat(this.apiOrigin).concat(this.apiPath).concat(url);
|
|
539
|
-
}
|
|
540
|
-
response = null;
|
|
541
|
-
maxRequestTimes = retry + 1;
|
|
542
|
-
requestTime = 0;
|
|
543
|
-
_f.label = 9;
|
|
544
|
-
case 9:
|
|
545
|
-
if (!(requestTime < maxRequestTimes)) return [3, 21];
|
|
546
|
-
_f.label = 10;
|
|
547
|
-
case 10:
|
|
548
|
-
_f.trys.push([10, 15, , 18]);
|
|
549
|
-
if (!(options.useWxCloud || this.useWxCloud)) return [3, 12];
|
|
550
|
-
return [4, this.wxCloudCallFunction(url, options)];
|
|
551
|
-
case 11:
|
|
552
|
-
response = _f.sent();
|
|
553
|
-
return [3, 14];
|
|
554
|
-
case 12: return [4, this.baseRequest(url, options)];
|
|
555
|
-
case 13:
|
|
556
|
-
response = _f.sent();
|
|
557
|
-
_f.label = 14;
|
|
558
|
-
case 14:
|
|
559
|
-
if (!!(response === null || response === void 0 ? void 0 : response.code)) {
|
|
560
|
-
throw {
|
|
561
|
-
error: response.code,
|
|
562
|
-
error_description: response.message,
|
|
563
|
-
error_uri: new URL(url).pathname,
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
|
-
return [3, 21];
|
|
567
|
-
case 15:
|
|
568
|
-
responseError_1 = _f.sent();
|
|
569
|
-
try {
|
|
570
|
-
responseError_1.requestId = responseError_1.requestId || options.headers[RequestIdHeaderName] || '';
|
|
571
|
-
}
|
|
572
|
-
catch (error) { }
|
|
573
|
-
if (!(options.withCredentials && responseError_1 && responseError_1.error === consts_1.ErrorType.UNAUTHENTICATED)) return [3, 17];
|
|
574
|
-
return [4, this.setCredentials(null)];
|
|
575
|
-
case 16:
|
|
576
|
-
_f.sent();
|
|
577
|
-
return [2, Promise.reject(responseError_1)];
|
|
578
|
-
case 17:
|
|
579
|
-
if (requestTime === retry || !responseError_1 || responseError_1.error !== 'unreachable') {
|
|
580
|
-
return [2, Promise.reject(responseError_1)];
|
|
581
|
-
}
|
|
582
|
-
return [3, 18];
|
|
583
|
-
case 18: return [4, this.sleep(OAuth2Client.retryInterval)];
|
|
584
|
-
case 19:
|
|
585
|
-
_f.sent();
|
|
586
|
-
_f.label = 20;
|
|
587
|
-
case 20:
|
|
588
|
-
requestTime++;
|
|
589
|
-
return [3, 9];
|
|
590
|
-
case 21: return [2, response];
|
|
591
|
-
}
|
|
592
|
-
});
|
|
593
|
-
});
|
|
594
|
-
};
|
|
595
|
-
OAuth2Client.prototype.wxCloudCallFunction = function (url, options) {
|
|
596
|
-
var _a;
|
|
597
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
598
|
-
var result, responseError, userAgent, error_3, responseResult, error_4;
|
|
599
|
-
return __generator(this, function (_b) {
|
|
600
|
-
switch (_b.label) {
|
|
601
|
-
case 0:
|
|
602
|
-
result = null;
|
|
603
|
-
responseError = null;
|
|
604
|
-
_b.label = 1;
|
|
605
|
-
case 1:
|
|
606
|
-
_b.trys.push([1, 7, , 8]);
|
|
607
|
-
userAgent = '';
|
|
608
|
-
_b.label = 2;
|
|
609
|
-
case 2:
|
|
610
|
-
_b.trys.push([2, 4, , 5]);
|
|
611
|
-
return [4, wx.getRendererUserAgent()];
|
|
612
|
-
case 3:
|
|
613
|
-
userAgent = _b.sent();
|
|
614
|
-
return [3, 5];
|
|
615
|
-
case 4:
|
|
616
|
-
error_3 = _b.sent();
|
|
617
|
-
return [3, 5];
|
|
618
|
-
case 5: return [4, this.wxCloud.callFunction({
|
|
619
|
-
name: 'httpOverCallFunction',
|
|
620
|
-
data: {
|
|
621
|
-
url: url,
|
|
622
|
-
method: options.method,
|
|
623
|
-
headers: __assign({ origin: 'https://servicewechat.com', 'User-Agent': userAgent }, options.headers),
|
|
624
|
-
body: options.body,
|
|
625
|
-
},
|
|
626
|
-
})];
|
|
627
|
-
case 6:
|
|
628
|
-
responseResult = (_b.sent()).result;
|
|
629
|
-
if ((_a = responseResult === null || responseResult === void 0 ? void 0 : responseResult.body) === null || _a === void 0 ? void 0 : _a.error_code) {
|
|
630
|
-
responseError = responseResult === null || responseResult === void 0 ? void 0 : responseResult.body;
|
|
631
|
-
responseError.error_uri = (0, index_1.getPathName)(url);
|
|
632
|
-
}
|
|
633
|
-
else {
|
|
634
|
-
result = responseResult === null || responseResult === void 0 ? void 0 : responseResult.body;
|
|
635
|
-
}
|
|
636
|
-
return [3, 8];
|
|
637
|
-
case 7:
|
|
638
|
-
error_4 = _b.sent();
|
|
639
|
-
responseError = {
|
|
640
|
-
error: consts_1.ErrorType.UNREACHABLE,
|
|
641
|
-
error_description: error_4.message,
|
|
642
|
-
error_uri: (0, index_1.getPathName)(url),
|
|
643
|
-
};
|
|
644
|
-
return [3, 8];
|
|
645
|
-
case 8:
|
|
646
|
-
if (responseError) {
|
|
647
|
-
throw responseError;
|
|
648
|
-
}
|
|
649
|
-
else {
|
|
650
|
-
return [2, result];
|
|
651
|
-
}
|
|
652
|
-
return [2];
|
|
653
|
-
}
|
|
654
|
-
});
|
|
655
|
-
});
|
|
656
|
-
};
|
|
657
|
-
OAuth2Client.prototype.getCredentials = function () {
|
|
658
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
659
|
-
var _this = this;
|
|
660
|
-
return __generator(this, function (_a) {
|
|
661
|
-
switch (_a.label) {
|
|
662
|
-
case 0: return [4, this.initializePromise];
|
|
663
|
-
case 1:
|
|
664
|
-
_a.sent();
|
|
665
|
-
return [2, this._acquireLock(-1, function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
666
|
-
return [2, this._getCredentials()];
|
|
667
|
-
}); }); })];
|
|
668
|
-
}
|
|
669
|
-
});
|
|
670
|
-
});
|
|
671
|
-
};
|
|
672
|
-
OAuth2Client.prototype.getCredentialsSync = function () {
|
|
673
|
-
var credentials = this.localCredentials.getStorageCredentialsSync();
|
|
674
|
-
return credentials;
|
|
675
|
-
};
|
|
676
|
-
OAuth2Client.prototype.getCredentialsAsync = function () {
|
|
677
|
-
return this.getCredentials();
|
|
678
|
-
};
|
|
679
|
-
OAuth2Client.prototype.getScope = function () {
|
|
680
|
-
var _a;
|
|
681
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
682
|
-
var credentials, msg;
|
|
683
|
-
return __generator(this, function (_b) {
|
|
684
|
-
switch (_b.label) {
|
|
685
|
-
case 0: return [4, this.localCredentials.getCredentials()];
|
|
686
|
-
case 1:
|
|
687
|
-
credentials = _b.sent();
|
|
688
|
-
if (!credentials) {
|
|
689
|
-
msg = 'credentials not found';
|
|
690
|
-
(_a = this.onCredentialsError) === null || _a === void 0 ? void 0 : _a.call(this, { msg: msg });
|
|
691
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
692
|
-
}
|
|
693
|
-
return [2, credentials.scope];
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
});
|
|
697
|
-
};
|
|
698
|
-
OAuth2Client.prototype.getGroups = function () {
|
|
699
|
-
var _a;
|
|
700
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
701
|
-
var credentials, msg;
|
|
702
|
-
return __generator(this, function (_b) {
|
|
703
|
-
switch (_b.label) {
|
|
704
|
-
case 0: return [4, this.localCredentials.getCredentials()];
|
|
705
|
-
case 1:
|
|
706
|
-
credentials = _b.sent();
|
|
707
|
-
if (!credentials) {
|
|
708
|
-
msg = 'credentials not found';
|
|
709
|
-
(_a = this.onCredentialsError) === null || _a === void 0 ? void 0 : _a.call(this, { msg: msg });
|
|
710
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
711
|
-
}
|
|
712
|
-
return [2, credentials.groups];
|
|
713
|
-
}
|
|
714
|
-
});
|
|
715
|
-
});
|
|
716
|
-
};
|
|
717
|
-
OAuth2Client.prototype.refreshToken = function (credentials, options) {
|
|
718
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
719
|
-
var _this = this;
|
|
720
|
-
return __generator(this, function (_a) {
|
|
721
|
-
switch (_a.label) {
|
|
722
|
-
case 0: return [4, this.initializePromise];
|
|
723
|
-
case 1:
|
|
724
|
-
_a.sent();
|
|
725
|
-
return [2, this._acquireLock(-1, function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
726
|
-
return [2, this._refreshToken(credentials, options)];
|
|
727
|
-
}); }); })];
|
|
728
|
-
}
|
|
729
|
-
});
|
|
730
|
-
});
|
|
731
|
-
};
|
|
732
|
-
OAuth2Client.prototype._refreshToken = function (credentials, options) {
|
|
733
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
734
|
-
var _this = this;
|
|
735
|
-
return __generator(this, function (_a) {
|
|
736
|
-
return [2, this.singlePromise.run('_refreshToken', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
737
|
-
var msg, newCredentials, error_5, msg;
|
|
738
|
-
var _a, _b, _c, _d;
|
|
739
|
-
return __generator(this, function (_f) {
|
|
740
|
-
switch (_f.label) {
|
|
741
|
-
case 0:
|
|
742
|
-
if ((credentials === null || credentials === void 0 ? void 0 : credentials.scope) === consts_2.DEFAULT_NODE_ACCESS_SCOPE) {
|
|
743
|
-
return [2, credentials];
|
|
744
|
-
}
|
|
745
|
-
if (!credentials || !credentials.refresh_token) {
|
|
746
|
-
msg = 'no refresh token found in credentials';
|
|
747
|
-
(_a = this.onCredentialsError) === null || _a === void 0 ? void 0 : _a.call(this, { msg: msg });
|
|
748
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
749
|
-
}
|
|
750
|
-
_f.label = 1;
|
|
751
|
-
case 1:
|
|
752
|
-
_f.trys.push([1, 4, , 7]);
|
|
753
|
-
return [4, this.refreshTokenFunc(credentials.refresh_token, credentials)];
|
|
754
|
-
case 2:
|
|
755
|
-
newCredentials = _f.sent();
|
|
756
|
-
return [4, this.localCredentials.setCredentials(newCredentials)];
|
|
757
|
-
case 3:
|
|
758
|
-
_f.sent();
|
|
759
|
-
(_b = this.eventBus) === null || _b === void 0 ? void 0 : _b.fire(consts_2.EVENTS.AUTH_STATE_CHANGED, { event: consts_2.AUTH_STATE_CHANGED_TYPE.TOKEN_REFRESHED });
|
|
760
|
-
return [2, newCredentials];
|
|
761
|
-
case 4:
|
|
762
|
-
error_5 = _f.sent();
|
|
763
|
-
if (options === null || options === void 0 ? void 0 : options.throwError) {
|
|
764
|
-
throw error_5;
|
|
765
|
-
}
|
|
766
|
-
if (!(error_5.error === consts_1.ErrorType.INVALID_GRANT)) return [3, 6];
|
|
767
|
-
return [4, this.localCredentials.setCredentials(null)];
|
|
768
|
-
case 5:
|
|
769
|
-
_f.sent();
|
|
770
|
-
msg = error_5.error_description;
|
|
771
|
-
(_c = this.onCredentialsError) === null || _c === void 0 ? void 0 : _c.call(this, { msg: msg });
|
|
772
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
773
|
-
case 6:
|
|
774
|
-
(_d = this.onCredentialsError) === null || _d === void 0 ? void 0 : _d.call(this, { msg: error_5.error_description });
|
|
775
|
-
return [2, Promise.reject(error_5)];
|
|
776
|
-
case 7: return [2];
|
|
777
|
-
}
|
|
778
|
-
});
|
|
779
|
-
}); })];
|
|
780
|
-
});
|
|
781
|
-
});
|
|
782
|
-
};
|
|
783
|
-
OAuth2Client.prototype.anonymousLogin = function (credentials) {
|
|
784
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
785
|
-
var _this = this;
|
|
786
|
-
return __generator(this, function (_a) {
|
|
787
|
-
return [2, this.singlePromise.run('_anonymousLogin', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
788
|
-
var c, _a;
|
|
789
|
-
return __generator(this, function (_b) {
|
|
790
|
-
switch (_b.label) {
|
|
791
|
-
case 0:
|
|
792
|
-
if (!this.anonymousSignInFunc) return [3, 4];
|
|
793
|
-
return [4, this.anonymousSignInFunc(credentials)];
|
|
794
|
-
case 1:
|
|
795
|
-
c = _b.sent();
|
|
796
|
-
_a = c;
|
|
797
|
-
if (_a) return [3, 3];
|
|
798
|
-
return [4, this.localCredentials.getCredentials()];
|
|
799
|
-
case 2:
|
|
800
|
-
_a = (_b.sent());
|
|
801
|
-
_b.label = 3;
|
|
802
|
-
case 3:
|
|
803
|
-
credentials = _a;
|
|
804
|
-
return [3, 6];
|
|
805
|
-
case 4: return [4, this.anonymousSignIn(credentials)];
|
|
806
|
-
case 5:
|
|
807
|
-
credentials = _b.sent();
|
|
808
|
-
_b.label = 6;
|
|
809
|
-
case 6: return [2, credentials];
|
|
810
|
-
}
|
|
811
|
-
});
|
|
812
|
-
}); })];
|
|
813
|
-
});
|
|
814
|
-
});
|
|
815
|
-
};
|
|
816
|
-
OAuth2Client.prototype.checkRetry = function (retry) {
|
|
817
|
-
var responseError = null;
|
|
818
|
-
if (typeof retry !== 'number' || retry < OAuth2Client.minRetry || retry > OAuth2Client.maxRetry) {
|
|
819
|
-
responseError = {
|
|
820
|
-
error: consts_1.ErrorType.UNREACHABLE,
|
|
821
|
-
error_description: 'wrong options param: retry',
|
|
822
|
-
};
|
|
823
|
-
}
|
|
824
|
-
if (responseError) {
|
|
825
|
-
throw responseError;
|
|
826
|
-
}
|
|
827
|
-
return retry;
|
|
828
|
-
};
|
|
829
|
-
OAuth2Client.prototype.formatRetry = function (retry, defaultVale) {
|
|
830
|
-
if (typeof retry === 'undefined') {
|
|
831
|
-
return defaultVale;
|
|
832
|
-
}
|
|
833
|
-
return this.checkRetry(retry);
|
|
834
|
-
};
|
|
835
|
-
OAuth2Client.prototype.sleep = function (ms) {
|
|
836
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
837
|
-
return __generator(this, function (_a) {
|
|
838
|
-
return [2, new Promise(function (resolve) {
|
|
839
|
-
setTimeout(function () {
|
|
840
|
-
resolve();
|
|
841
|
-
}, ms);
|
|
842
|
-
})];
|
|
843
|
-
});
|
|
844
|
-
});
|
|
845
|
-
};
|
|
846
|
-
OAuth2Client.prototype.anonymousSignIn = function (credentials) {
|
|
847
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
848
|
-
var _this = this;
|
|
849
|
-
return __generator(this, function (_a) {
|
|
850
|
-
return [2, this.singlePromise.run('_anonymous', function () { return __awaiter(_this, void 0, void 0, function () {
|
|
851
|
-
var newCredentials, error_6;
|
|
852
|
-
return __generator(this, function (_a) {
|
|
853
|
-
switch (_a.label) {
|
|
854
|
-
case 0:
|
|
855
|
-
if (!credentials || credentials.scope !== 'anonymous') {
|
|
856
|
-
return [2, this.unAuthenticatedError('no anonymous in credentials')];
|
|
857
|
-
}
|
|
858
|
-
_a.label = 1;
|
|
859
|
-
case 1:
|
|
860
|
-
_a.trys.push([1, 4, , 7]);
|
|
861
|
-
return [4, this.request(consts_2.ApiUrls.AUTH_SIGN_IN_ANONYMOUSLY_URL, {
|
|
862
|
-
method: 'POST',
|
|
863
|
-
withBasicAuth: true,
|
|
864
|
-
body: {},
|
|
865
|
-
})];
|
|
866
|
-
case 2:
|
|
867
|
-
newCredentials = _a.sent();
|
|
868
|
-
return [4, this.localCredentials.setCredentials(newCredentials)];
|
|
869
|
-
case 3:
|
|
870
|
-
_a.sent();
|
|
871
|
-
return [2, newCredentials];
|
|
872
|
-
case 4:
|
|
873
|
-
error_6 = _a.sent();
|
|
874
|
-
if (!(error_6.error === consts_1.ErrorType.INVALID_GRANT)) return [3, 6];
|
|
875
|
-
return [4, this.localCredentials.setCredentials(null)];
|
|
876
|
-
case 5:
|
|
877
|
-
_a.sent();
|
|
878
|
-
return [2, this.unAuthenticatedError(error_6.error_description)];
|
|
879
|
-
case 6: return [2, Promise.reject(error_6)];
|
|
880
|
-
case 7: return [2];
|
|
881
|
-
}
|
|
882
|
-
});
|
|
883
|
-
}); })];
|
|
884
|
-
});
|
|
885
|
-
});
|
|
886
|
-
};
|
|
887
|
-
OAuth2Client.prototype.defaultRefreshTokenFunc = function (refreshToken, credentials) {
|
|
888
|
-
var _a;
|
|
889
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
890
|
-
var msg, url, newCredentials;
|
|
891
|
-
return __generator(this, function (_b) {
|
|
892
|
-
switch (_b.label) {
|
|
893
|
-
case 0:
|
|
894
|
-
if (refreshToken === undefined || refreshToken === '') {
|
|
895
|
-
msg = 'refresh token not found';
|
|
896
|
-
(_a = this.onCredentialsError) === null || _a === void 0 ? void 0 : _a.call(this, { msg: msg });
|
|
897
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
898
|
-
}
|
|
899
|
-
url = consts_2.ApiUrls.AUTH_TOKEN_URL;
|
|
900
|
-
if ((credentials === null || credentials === void 0 ? void 0 : credentials.version) === 'v2') {
|
|
901
|
-
url = consts_2.ApiUrlsV2.AUTH_TOKEN_URL;
|
|
902
|
-
}
|
|
903
|
-
return [4, this.request(url, {
|
|
904
|
-
method: 'POST',
|
|
905
|
-
body: {
|
|
906
|
-
client_id: this.clientId,
|
|
907
|
-
client_secret: this.clientSecret,
|
|
908
|
-
grant_type: 'refresh_token',
|
|
909
|
-
refresh_token: refreshToken,
|
|
910
|
-
},
|
|
911
|
-
})];
|
|
912
|
-
case 1:
|
|
913
|
-
newCredentials = _b.sent();
|
|
914
|
-
return [2, __assign(__assign({}, newCredentials), { version: (credentials === null || credentials === void 0 ? void 0 : credentials.version) || 'v1' })];
|
|
915
|
-
}
|
|
916
|
-
});
|
|
917
|
-
});
|
|
918
|
-
};
|
|
919
|
-
OAuth2Client.prototype.getDeviceId = function () {
|
|
920
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
921
|
-
var deviceId;
|
|
922
|
-
return __generator(this, function (_a) {
|
|
923
|
-
switch (_a.label) {
|
|
924
|
-
case 0:
|
|
925
|
-
if (this.deviceID) {
|
|
926
|
-
return [2, this.deviceID];
|
|
927
|
-
}
|
|
928
|
-
return [4, this.storage.getItem(DeviceIdSectionName)];
|
|
929
|
-
case 1:
|
|
930
|
-
deviceId = _a.sent();
|
|
931
|
-
if (!!(typeof deviceId === 'string' && deviceId.length >= 16 && deviceId.length <= 48)) return [3, 3];
|
|
932
|
-
deviceId = (0, uuid_1.uuidv4)();
|
|
933
|
-
return [4, this.storage.setItem(DeviceIdSectionName, deviceId)];
|
|
934
|
-
case 2:
|
|
935
|
-
_a.sent();
|
|
936
|
-
_a.label = 3;
|
|
937
|
-
case 3:
|
|
938
|
-
this.deviceID = deviceId;
|
|
939
|
-
return [2, deviceId];
|
|
940
|
-
}
|
|
941
|
-
});
|
|
942
|
-
});
|
|
943
|
-
};
|
|
944
|
-
OAuth2Client.prototype.unAuthenticatedError = function (err) {
|
|
945
|
-
var respErr = {
|
|
946
|
-
error: consts_1.ErrorType.UNAUTHENTICATED,
|
|
947
|
-
error_description: err,
|
|
948
|
-
};
|
|
949
|
-
return Promise.reject(respErr);
|
|
950
|
-
};
|
|
951
|
-
OAuth2Client.prototype._debug = function () {
|
|
952
|
-
var args = [];
|
|
953
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
954
|
-
args[_i] = arguments[_i];
|
|
955
|
-
}
|
|
956
|
-
if (this.logDebugMessages) {
|
|
957
|
-
console.log.apply(console, __spreadArray(['[OAuth2Client]'], args, false));
|
|
958
|
-
}
|
|
959
|
-
};
|
|
960
|
-
OAuth2Client.prototype._initialize = function () {
|
|
961
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
962
|
-
var data, error, callbackError_1, err_1, error_7;
|
|
963
|
-
var _a;
|
|
964
|
-
return __generator(this, function (_b) {
|
|
965
|
-
switch (_b.label) {
|
|
966
|
-
case 0:
|
|
967
|
-
_b.trys.push([0, 11, 12, 13]);
|
|
968
|
-
if (!this.getInitialSession) {
|
|
969
|
-
this._debug('#_initialize()', 'no getInitialSession callback set, skipping');
|
|
970
|
-
return [2, { error: null }];
|
|
971
|
-
}
|
|
972
|
-
this._debug('#_initialize()', 'calling getInitialSession callback');
|
|
973
|
-
_b.label = 1;
|
|
974
|
-
case 1:
|
|
975
|
-
_b.trys.push([1, 9, , 10]);
|
|
976
|
-
return [4, this.getInitialSession()];
|
|
977
|
-
case 2:
|
|
978
|
-
data = (_a = _b.sent(), _a.data), error = _a.error;
|
|
979
|
-
if (!(data === null || data === void 0 ? void 0 : data.session)) return [3, 4];
|
|
980
|
-
this._debug('#_initialize()', 'session obtained from getInitialSession', data.session);
|
|
981
|
-
return [4, this.localCredentials.setCredentials(data === null || data === void 0 ? void 0 : data.session)];
|
|
982
|
-
case 3:
|
|
983
|
-
_b.sent();
|
|
984
|
-
_b.label = 4;
|
|
985
|
-
case 4:
|
|
986
|
-
if (!this.onInitialSessionObtained) return [3, 8];
|
|
987
|
-
this._debug('#_initialize()', 'calling onInitialSessionObtained callback');
|
|
988
|
-
_b.label = 5;
|
|
989
|
-
case 5:
|
|
990
|
-
_b.trys.push([5, 7, , 8]);
|
|
991
|
-
return [4, this.onInitialSessionObtained(data, error)];
|
|
992
|
-
case 6:
|
|
993
|
-
_b.sent();
|
|
994
|
-
return [3, 8];
|
|
995
|
-
case 7:
|
|
996
|
-
callbackError_1 = _b.sent();
|
|
997
|
-
this._debug('#_initialize()', 'error in onInitialSessionObtained', callbackError_1);
|
|
998
|
-
return [3, 8];
|
|
999
|
-
case 8:
|
|
1000
|
-
if (error) {
|
|
1001
|
-
this._debug('#_initialize()', 'error from getInitialSession', error);
|
|
1002
|
-
return [2, { error: error }];
|
|
1003
|
-
}
|
|
1004
|
-
return [2, { error: null }];
|
|
1005
|
-
case 9:
|
|
1006
|
-
err_1 = _b.sent();
|
|
1007
|
-
this._debug('#_initialize()', 'exception during getInitialSession', err_1);
|
|
1008
|
-
return [2, { error: err_1 instanceof Error ? err_1 : new Error(String(err_1)) }];
|
|
1009
|
-
case 10: return [3, 13];
|
|
1010
|
-
case 11:
|
|
1011
|
-
error_7 = _b.sent();
|
|
1012
|
-
this._debug('#_initialize()', 'unexpected error', error_7);
|
|
1013
|
-
return [2, { error: error_7 instanceof Error ? error_7 : new Error(String(error_7)) }];
|
|
1014
|
-
case 12:
|
|
1015
|
-
this._debug('#_initialize()', 'end');
|
|
1016
|
-
return [7];
|
|
1017
|
-
case 13: return [2];
|
|
1018
|
-
}
|
|
1019
|
-
});
|
|
1020
|
-
});
|
|
1021
|
-
};
|
|
1022
|
-
OAuth2Client.prototype._acquireLock = function (acquireTimeout, fn) {
|
|
1023
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
1024
|
-
var last_1, result_1, result_2, waitOn;
|
|
1025
|
-
var _this = this;
|
|
1026
|
-
return __generator(this, function (_a) {
|
|
1027
|
-
switch (_a.label) {
|
|
1028
|
-
case 0:
|
|
1029
|
-
this._debug('#_acquireLock', 'begin', acquireTimeout);
|
|
1030
|
-
_a.label = 1;
|
|
1031
|
-
case 1:
|
|
1032
|
-
_a.trys.push([1, , 10, 11]);
|
|
1033
|
-
if (this.lockAcquired) {
|
|
1034
|
-
last_1 = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve();
|
|
1035
|
-
result_1 = (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1036
|
-
return __generator(this, function (_a) {
|
|
1037
|
-
switch (_a.label) {
|
|
1038
|
-
case 0: return [4, last_1];
|
|
1039
|
-
case 1:
|
|
1040
|
-
_a.sent();
|
|
1041
|
-
return [4, fn()];
|
|
1042
|
-
case 2: return [2, _a.sent()];
|
|
1043
|
-
}
|
|
1044
|
-
});
|
|
1045
|
-
}); })();
|
|
1046
|
-
this.pendingInLock.push((function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1047
|
-
var _e_1;
|
|
1048
|
-
return __generator(this, function (_a) {
|
|
1049
|
-
switch (_a.label) {
|
|
1050
|
-
case 0:
|
|
1051
|
-
_a.trys.push([0, 2, , 3]);
|
|
1052
|
-
return [4, result_1];
|
|
1053
|
-
case 1:
|
|
1054
|
-
_a.sent();
|
|
1055
|
-
return [3, 3];
|
|
1056
|
-
case 2:
|
|
1057
|
-
_e_1 = _a.sent();
|
|
1058
|
-
return [3, 3];
|
|
1059
|
-
case 3: return [2];
|
|
1060
|
-
}
|
|
1061
|
-
});
|
|
1062
|
-
}); })());
|
|
1063
|
-
return [2, result_1];
|
|
1064
|
-
}
|
|
1065
|
-
this._debug('#_acquireLock', 'acquiring lock for client', this.clientId);
|
|
1066
|
-
_a.label = 2;
|
|
1067
|
-
case 2:
|
|
1068
|
-
_a.trys.push([2, , 8, 9]);
|
|
1069
|
-
this.lockAcquired = true;
|
|
1070
|
-
result_2 = fn();
|
|
1071
|
-
this.pendingInLock.push((function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1072
|
-
var _e_2;
|
|
1073
|
-
return __generator(this, function (_a) {
|
|
1074
|
-
switch (_a.label) {
|
|
1075
|
-
case 0:
|
|
1076
|
-
_a.trys.push([0, 2, , 3]);
|
|
1077
|
-
return [4, result_2];
|
|
1078
|
-
case 1:
|
|
1079
|
-
_a.sent();
|
|
1080
|
-
return [3, 3];
|
|
1081
|
-
case 2:
|
|
1082
|
-
_e_2 = _a.sent();
|
|
1083
|
-
return [3, 3];
|
|
1084
|
-
case 3: return [2];
|
|
1085
|
-
}
|
|
1086
|
-
});
|
|
1087
|
-
}); })());
|
|
1088
|
-
return [4, result_2];
|
|
1089
|
-
case 3:
|
|
1090
|
-
_a.sent();
|
|
1091
|
-
_a.label = 4;
|
|
1092
|
-
case 4:
|
|
1093
|
-
if (!this.pendingInLock.length) return [3, 6];
|
|
1094
|
-
waitOn = __spreadArray([], this.pendingInLock, true);
|
|
1095
|
-
return [4, Promise.all(waitOn)];
|
|
1096
|
-
case 5:
|
|
1097
|
-
_a.sent();
|
|
1098
|
-
this.pendingInLock.splice(0, waitOn.length);
|
|
1099
|
-
return [3, 4];
|
|
1100
|
-
case 6: return [4, result_2];
|
|
1101
|
-
case 7: return [2, _a.sent()];
|
|
1102
|
-
case 8:
|
|
1103
|
-
this._debug('#_acquireLock', 'releasing lock for client', this.clientId);
|
|
1104
|
-
this.lockAcquired = false;
|
|
1105
|
-
return [7];
|
|
1106
|
-
case 9: return [3, 11];
|
|
1107
|
-
case 10:
|
|
1108
|
-
this._debug('#_acquireLock', 'end');
|
|
1109
|
-
return [7];
|
|
1110
|
-
case 11: return [2];
|
|
1111
|
-
}
|
|
1112
|
-
});
|
|
1113
|
-
});
|
|
1114
|
-
};
|
|
1115
|
-
OAuth2Client.prototype._getCredentials = function () {
|
|
1116
|
-
var _a, _b, _c;
|
|
1117
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
1118
|
-
var credentials, msg, error_8, msg;
|
|
1119
|
-
return __generator(this, function (_d) {
|
|
1120
|
-
switch (_d.label) {
|
|
1121
|
-
case 0: return [4, this.localCredentials.getCredentials()];
|
|
1122
|
-
case 1:
|
|
1123
|
-
credentials = _d.sent();
|
|
1124
|
-
if ((credentials === null || credentials === void 0 ? void 0 : credentials.scope) === consts_2.DEFAULT_NODE_ACCESS_SCOPE) {
|
|
1125
|
-
return [2, credentials];
|
|
1126
|
-
}
|
|
1127
|
-
if (!credentials) {
|
|
1128
|
-
msg = 'credentials not found';
|
|
1129
|
-
(_a = this.onCredentialsError) === null || _a === void 0 ? void 0 : _a.call(this, { msg: msg });
|
|
1130
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
1131
|
-
}
|
|
1132
|
-
if (!isCredentialsExpired(credentials)) return [3, 12];
|
|
1133
|
-
if (!credentials.refresh_token) return [3, 9];
|
|
1134
|
-
_d.label = 2;
|
|
1135
|
-
case 2:
|
|
1136
|
-
_d.trys.push([2, 4, , 8]);
|
|
1137
|
-
return [4, this._refreshToken(credentials)];
|
|
1138
|
-
case 3:
|
|
1139
|
-
credentials = _d.sent();
|
|
1140
|
-
return [3, 8];
|
|
1141
|
-
case 4:
|
|
1142
|
-
error_8 = _d.sent();
|
|
1143
|
-
if (!(credentials.scope === 'anonymous')) return [3, 6];
|
|
1144
|
-
return [4, this.anonymousLogin(credentials)];
|
|
1145
|
-
case 5:
|
|
1146
|
-
credentials = _d.sent();
|
|
1147
|
-
return [3, 7];
|
|
1148
|
-
case 6:
|
|
1149
|
-
(_b = this.onCredentialsError) === null || _b === void 0 ? void 0 : _b.call(this, { msg: error_8.error_description });
|
|
1150
|
-
return [2, Promise.reject(error_8)];
|
|
1151
|
-
case 7: return [3, 8];
|
|
1152
|
-
case 8: return [3, 12];
|
|
1153
|
-
case 9:
|
|
1154
|
-
if (!(credentials.scope === 'anonymous')) return [3, 11];
|
|
1155
|
-
return [4, this.anonymousLogin(credentials)];
|
|
1156
|
-
case 10:
|
|
1157
|
-
credentials = _d.sent();
|
|
1158
|
-
return [3, 12];
|
|
1159
|
-
case 11:
|
|
1160
|
-
msg = 'no refresh token found in credentials';
|
|
1161
|
-
(_c = this.onCredentialsError) === null || _c === void 0 ? void 0 : _c.call(this, { msg: msg });
|
|
1162
|
-
return [2, this.unAuthenticatedError(msg)];
|
|
1163
|
-
case 12: return [2, credentials];
|
|
1164
|
-
}
|
|
1165
|
-
});
|
|
1166
|
-
});
|
|
1167
|
-
};
|
|
1168
|
-
OAuth2Client.defaultRetry = 2;
|
|
1169
|
-
OAuth2Client.minRetry = 0;
|
|
1170
|
-
OAuth2Client.maxRetry = 5;
|
|
1171
|
-
OAuth2Client.retryInterval = 1000;
|
|
1172
|
-
return OAuth2Client;
|
|
1173
|
-
}());
|
|
1174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMseUNBT3VCO0FBYXZCLHNDQUFzQztBQUN0Qyx3Q0FBNEM7QUFFNUMsbUVBQWdFO0FBQ2hFLDBDQUF3QztBQUN4QyxrQ0FBa0M7QUFHbEMsa0RBQWdEO0FBRWhELElBQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFBO0FBQzFDLElBQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLElBQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFBO0FBV2hDLElBQU0sY0FBYyxHQUFvQixVQUFtQixHQUFXLEVBQUUsT0FBd0I7Ozs7OztvQkFDakcsTUFBTSxHQUFhLElBQUksQ0FBQTtvQkFDdkIsYUFBYSxHQUF5QixJQUFJLENBQUE7Ozs7b0JBR3RDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtvQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQ3ZCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO3FCQUMzQjtvQkFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDNUQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDcEQ7b0JBQ2dDLFdBQU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBQTs7b0JBQXhELGNBQWMsR0FBYSxTQUE2QjtvQkFDekMsV0FBTSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUE7O29C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QUE7d0JBQzNELFdBQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFLLENBQUMsRUFBQTs7Ozs2QkFHdkIsQ0FBQSxXQUFXLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQSxFQUFqQyxlQUFpQzt3QkFDNUIsV0FBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFBOzt3QkFBcEQsV0FBVyxHQUFHLFNBQXNDLENBQUE7Ozt3QkFFOUMsR0FBRyxHQUFHLHVDQUF1QyxDQUFBO3dCQUNuRCxNQUFBLElBQUksQ0FBQyxrQkFBa0IscURBQUcsRUFBRSxHQUFHLEtBQUEsRUFBRSxDQUFDLENBQUE7d0JBQ2xDLFdBQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFBOzZCQUd6QyxXQUFPLFdBQVcsRUFBQTs7OztLQUNuQjtJQTVzQmMseUJBQVksR0FBRyxDQUFDLEFBQUosQ0FBSTtJQUNoQixxQkFBUSxHQUFHLENBQUMsQUFBSixDQUFJO0lBQ1oscUJBQVEsR0FBRyxDQUFDLEFBQUosQ0FBSTtJQUNaLDBCQUFhLEdBQUcsSUFBSSxBQUFQLENBQU87SUEwc0JyQyxtQkFBQztDQUFBLEFBOXNCRCxJQThzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvclR5cGUgfSBmcm9tICcuL2NvbnN0cydcbmltcG9ydCB7XG4gIEFwaVVybHMsXG4gIEFwaVVybHNWMixcbiAgQVVUSF9BUElfUFJFRklYLFxuICBBVVRIX1NUQVRFX0NIQU5HRURfVFlQRSxcbiAgREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSxcbiAgRVZFTlRTLFxufSBmcm9tICcuLi9hdXRoL2NvbnN0cydcblxuaW1wb3J0IHsgQXV0aENsaWVudCwgU2ltcGxlU3RvcmFnZSB9IGZyb20gJy4vaW50ZXJmYWNlJ1xuXG5pbXBvcnQge1xuICBDcmVkZW50aWFscyxcbiAgUmVzcG9uc2VFcnJvcixcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFJlcXVlc3RGdW5jdGlvbixcbiAgT0F1dGgyQ2xpZW50T3B0aW9ucyxcbiAgQXV0aENsaWVudFJlcXVlc3RPcHRpb25zLFxufSBmcm9tICcuL21vZGVscydcblxuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vdXRpbHMvdXVpZCdcbmltcG9ydCB7IGdldFBhdGhOYW1lIH0gZnJvbSAnLi4vdXRpbHMvaW5kZXgnXG5cbmltcG9ydCB7IFNpbmdsZVByb21pc2UgfSBmcm9tICcuLi91dGlscy9mdW5jdGlvbi9zaW5nbGUtcHJvbWlzZSdcbmltcG9ydCB7IHdlQnRvYSB9IGZyb20gJy4uL3V0aWxzL2Jhc2U2NCdcbmltcG9ydCB7IGlzTXAgfSBmcm9tICcuLi91dGlscy9tcCdcbmltcG9ydCB7IEF1dGhPcHRpb25zIH0gZnJvbSAnLi4vYXV0aC9hcGlzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBsYW5nRXZlbnQgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcblxuY29uc3QgUmVxdWVzdElkSGVhZGVyTmFtZSA9ICd4LXJlcXVlc3QtaWQnXG5jb25zdCBEZXZpY2VJZEhlYWRlck5hbWUgPSAneC1kZXZpY2UtaWQnXG5jb25zdCBEZXZpY2VJZFNlY3Rpb25OYW1lID0gJ2RldmljZV9pZCdcblxuZGVjbGFyZSBjb25zdCB3eDogYW55XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9SZXNwb25zZUVycm9yT3B0aW9ucyB7XG4gIGVycm9yPzogRXJyb3JUeXBlXG4gIGVycm9yX2Rlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbFxuICBlcnJvcl91cmk/OiBzdHJpbmcgfCBudWxsXG4gIGRldGFpbHM/OiBhbnkgfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UmVxdWVzdDogUmVxdWVzdEZ1bmN0aW9uID0gYXN5bmMgZnVuY3Rpb24gPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgbGV0IHJlc3VsdDogVCB8IG51bGwgPSBudWxsXG4gIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yIHwgbnVsbCA9IG51bGxcbiAgdHJ5IHtcbiAgICAvLyBPYmplY3RzIG11c3QgYmUgY29waWVkIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIGRhdGEgc3VjaCBhcyBib2R5LlxuICAgIGNvbnN0IGNvcHlPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucylcbiAgICBpZiAoIWNvcHlPcHRpb25zLm1ldGhvZCkge1xuICAgICAgY29weU9wdGlvbnMubWV0aG9kID0gJ0dFVCdcbiAgICB9XG4gICAgaWYgKGNvcHlPcHRpb25zLmJvZHkgJiYgdHlwZW9mIGNvcHlPcHRpb25zLmJvZHkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb3B5T3B0aW9ucy5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoY29weU9wdGlvbnMuYm9keSlcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2VSZXN1bHQ6IFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCBjb3B5T3B0aW9ucylcbiAgICBjb25zdCBqc29uUmVzcG9uc2UgPSBhd2FpdCByZXNwb25zZVJlc3VsdC5qc29uKClcbiAgICBpZiAoanNvblJlc3BvbnNlPy5lcnJvcikge1xuICAgICAgcmVzcG9uc2VFcnJvciA9IGpzb25SZXNwb25zZSBhcyBSZXNwb25zZUVycm9yXG4gICAgICByZXNwb25zZUVycm9yLmVycm9yX3VyaSA9IG5ldyBVUkwodXJsKS5wYXRobmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBqc29uUmVzcG9uc2UgYXMgVFxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTlJFQUNIQUJMRSxcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgICAgZXJyb3JfdXJpOiBuZXcgVVJMKHVybCkucGF0aG5hbWUsXG4gICAgfVxuICB9XG4gIGlmIChyZXNwb25zZUVycm9yKSB7XG4gICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdG9SZXNwb25zZUVycm9yID0gKGVycm9yOiBSZXNwb25zZUVycm9yIHwgRXJyb3IsIG9wdGlvbnM/OiBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zKTogUmVzcG9uc2VFcnJvciA9PiB7XG4gIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yXG4gIGNvbnN0IGZvcm1hdE9wdGlvbnM6IFRvUmVzcG9uc2VFcnJvck9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBmb3JtYXRPcHRpb25zLmVycm9yIHx8IEVycm9yVHlwZS5MT0NBTCxcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBmb3JtYXRPcHRpb25zLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGVycm9yLm1lc3NhZ2UsXG4gICAgICBlcnJvcl91cmk6IGZvcm1hdE9wdGlvbnMuZXJyb3JfdXJpLFxuICAgICAgZGV0YWlsczogZm9ybWF0T3B0aW9ucy5kZXRhaWxzIHx8IGVycm9yLnN0YWNrLFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmb3JtYXRFcnJvcjogVG9SZXNwb25zZUVycm9yT3B0aW9ucyA9IGVycm9yIHx8IHt9XG4gICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBmb3JtYXRPcHRpb25zLmVycm9yIHx8IGZvcm1hdEVycm9yLmVycm9yIHx8IEVycm9yVHlwZS5MT0NBTCxcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBmb3JtYXRPcHRpb25zLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGZvcm1hdEVycm9yLmVycm9yX2Rlc2NyaXB0aW9uLFxuICAgICAgZXJyb3JfdXJpOiBmb3JtYXRPcHRpb25zLmVycm9yX3VyaSB8fCBmb3JtYXRFcnJvci5lcnJvcl91cmksXG4gICAgICBkZXRhaWxzOiBmb3JtYXRPcHRpb25zLmRldGFpbHMgfHwgZm9ybWF0RXJyb3IuZGV0YWlscyxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlRXJyb3Jcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSByZXF1ZXN0IGlkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSZXF1ZXN0SWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHV1aWR2NCgpXG59XG5cbi8qKlxuICogRGVmYXVsdCBTdG9yYWdlLlxuICovXG5jbGFzcyBEZWZhdWx0U3RvcmFnZSBpbXBsZW1lbnRzIFNpbXBsZVN0b3JhZ2Uge1xuICAvKipcbiAgICog57yT5a2Ya2V557uf5LiA5L2/55So5ZCO57yA5Yy65YiGXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Iob3B0cz86IHsgZW52OiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX2VudiA9IG9wdHM/LmVudiB8fCAnJ1xuICB9XG4gIC8qKlxuICAgKiBHZXQgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgYXN5bmMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIGFzeW5jIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogU2V0IGl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqL1xuICBhc3luYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gLCB2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBnZXRJdGVtU3luYyhrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGl0ZW0gc3luYy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgcmVtb3ZlSXRlbVN5bmMoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogU2V0IGl0ZW0gc3luYy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICovXG4gIHNldEl0ZW1TeW5jKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gLCB2YWx1ZSlcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFN0b3JhZ2UgPSBuZXcgRGVmYXVsdFN0b3JhZ2UoKVxuXG5pbnRlcmZhY2UgTG9jYWxDcmVkZW50aWFsc09wdGlvbnMge1xuICB0b2tlblNlY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RvcmFnZTogU2ltcGxlU3RvcmFnZVxuICBjbGllbnRJZDogc3RyaW5nXG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBjcmVkZW50aWFscyBpcyBleHBpcmVkLlxuICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQ3JlZGVudGlhbHNFeHBpcmVkKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IGJvb2xlYW4ge1xuICBsZXQgaXNFeHBpcmVkID0gdHJ1ZVxuICBpZiAoY3JlZGVudGlhbHM/LmV4cGlyZXNfYXQgJiYgY3JlZGVudGlhbHM/LmFjY2Vzc190b2tlbikge1xuICAgIGlzRXhwaXJlZCA9IGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPCBuZXcgRGF0ZSgpXG4gIH1cbiAgcmV0dXJuIGlzRXhwaXJlZFxufVxuXG4vKipcbiAqIExvY2FsIGNyZWRlbnRpYWxzLlxuICogTG9jYWwgY3JlZGVudGlhbHMsIHdpdGggbWVtb3J5IGNhY2hlIGFuZCBzdG9yYWdlIGNhY2hlLlxuICogSWYgdGhlIG1lbW9yeSBjYWNoZSBleHBpcmVzLCB0aGUgc3RvcmFnZSBjYWNoZSBpcyBhdXRvbWF0aWNhbGx5IGxvYWRlZC5cbiAqL1xuY2xhc3MgTG9jYWxDcmVkZW50aWFscyB7XG4gIHByaXZhdGUgdG9rZW5TZWN0aW9uTmFtZTogc3RyaW5nXG5cbiAgcHJpdmF0ZSBzdG9yYWdlOiBTaW1wbGVTdG9yYWdlXG5cbiAgcHJpdmF0ZSBjbGllbnRJZDogc3RyaW5nXG5cbiAgcHJpdmF0ZSBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgfCBudWxsID0gbnVsbFxuICAvLyDmnaXoh6phY2Nlc3NLZXnnmoTouqvku73vvIzkuI3mjIHkuYXljJZcbiAgcHJpdmF0ZSBhY2Nlc3NLZXlDcmVkZW50aWFsczogQ3JlZGVudGlhbHMgfCBudWxsID0gbnVsbFxuXG4gIHByaXZhdGUgc2luZ2xlUHJvbWlzZTogU2luZ2xlUHJvbWlzZSA9IG51bGxcblxuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtMb2NhbENyZWRlbnRpYWxzT3B0aW9uc30gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTG9jYWxDcmVkZW50aWFsc09wdGlvbnMpIHtcbiAgICB0aGlzLnRva2VuU2VjdGlvbk5hbWUgPSBvcHRpb25zLnRva2VuU2VjdGlvbk5hbWVcbiAgICB0aGlzLnN0b3JhZ2UgPSBvcHRpb25zLnN0b3JhZ2VcbiAgICB0aGlzLmNsaWVudElkID0gb3B0aW9ucy5jbGllbnRJZFxuICAgIHRoaXMuc2luZ2xlUHJvbWlzZSA9IG5ldyBTaW5nbGVQcm9taXNlKHsgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQgfSlcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCBudWxsXG4gIH1cblxuICBwdWJsaWMgZ2V0U3RvcmFnZUNyZWRlbnRpYWxzU3luYygpOiBDcmVkZW50aWFscyB8IG51bGwge1xuICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBudWxsXG4gICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtU3luYyh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgaWYgKHRva2VuU3RyICE9PSB1bmRlZmluZWQgJiYgdG9rZW5TdHIgIT09IG51bGwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gSlNPTi5wYXJzZSh0b2tlblN0cilcbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0KSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMuZXhwaXJlc19hdCA9IG5ldyBEYXRlKGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgICAgY3JlZGVudGlhbHMgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFsc1xuICB9XG5cbiAgLyoqXG4gICAqIHNldENyZWRlbnRpYWxzIFByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIGZldGNoIGFwaSByZXF1ZXN0IGltcGxlbWVudGF0aW9uIHdpdGggYXV0aCBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY3JlZGVudGlhbHM/LmV4cGlyZXNfaW4pIHtcbiAgICAgIGlmICghY3JlZGVudGlhbHM/LmV4cGlyZXNfYXQpIHtcbiAgICAgICAgY3JlZGVudGlhbHMuZXhwaXJlc19hdCA9IG5ldyBEYXRlKERhdGUubm93KCkgKyAoY3JlZGVudGlhbHMuZXhwaXJlc19pbiAtIDMwKSAqIDEwMDApXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuU3RyOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjcmVkZW50aWFscylcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lLCB0b2tlblN0cilcbiAgICAgIH1cbiAgICAgIHRoaXMuY3JlZGVudGlhbHMgPSBjcmVkZW50aWFsc1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdG9yYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuY3JlZGVudGlhbHMgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNldCBjcmVkZW50aWFscyBmcm9tIGFjY2Vzc0tleVxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIHNldEFjY2Vzc0tleUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLmFjY2Vzc0tleUNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHNcbiAgICAvLyBub2RlIHNkayDlnLrmma/kuIvnm7TmjqXkvb/nlKhhY2Nlc3NLZXnouqvku71cbiAgICBpZiAoY3JlZGVudGlhbHMuc2NvcGUgPT09IERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEUpIHtcbiAgICAgIHRoaXMuY3JlZGVudGlhbHMgPSBjcmVkZW50aWFsc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdnZXRDcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChpc0NyZWRlbnRpYWxzRXhwaXJlZCh0aGlzLmNyZWRlbnRpYWxzKSkge1xuICAgICAgICBjb25zdCB7IGNyZWRlbnRpYWxzLCBpc0FjY2Vzc0tleUNyZWRlbnRpYWxzIH0gPSBhd2FpdCB0aGlzLmdldFN0b3JhZ2VDcmVkZW50aWFscygpXG4gICAgICAgIGlmIChpc0FjY2Vzc0tleUNyZWRlbnRpYWxzKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFsc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0b3JhZ2UgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFN0b3JhZ2VDcmVkZW50aWFscygpOiBQcm9taXNlPHsgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbDsgaXNBY2Nlc3NLZXlDcmVkZW50aWFsczogYm9vbGVhbiB9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19nZXRTdG9yYWdlQ3JlZGVudGlhbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgbGV0IGlzQWNjZXNzS2V5Q3JlZGVudGlhbHMgPSBmYWxzZVxuICAgICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgIGlmICghIXRva2VuU3RyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBKU09OLnBhcnNlKHRva2VuU3RyKVxuICAgICAgICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCkge1xuICAgICAgICAgICAgY3JlZGVudGlhbHMuZXhwaXJlc19hdCA9IG5ldyBEYXRlKGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgICAgICBjcmVkZW50aWFscyA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSB0aGlzLmFjY2Vzc0tleUNyZWRlbnRpYWxzIHx8IG51bGxcbiAgICAgICAgaXNBY2Nlc3NLZXlDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNyZWRlbnRpYWxzLCBpc0FjY2Vzc0tleUNyZWRlbnRpYWxzIH1cbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogT0F1dGgyQ2xpZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBPQXV0aDJDbGllbnQgaW1wbGVtZW50cyBBdXRoQ2xpZW50IHtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdFJldHJ5ID0gMlxuICBwcml2YXRlIHN0YXRpYyBtaW5SZXRyeSA9IDBcbiAgcHJpdmF0ZSBzdGF0aWMgbWF4UmV0cnkgPSA1XG4gIHByaXZhdGUgc3RhdGljIHJldHJ5SW50ZXJ2YWwgPSAxMDAwXG5cbiAgcHVibGljIGxvY2FsQ3JlZGVudGlhbHM6IExvY2FsQ3JlZGVudGlhbHNcbiAgLyoqXG4gICAqIEtlZXBzIHRyYWNrIG9mIHRoZSBhc3luYyBjbGllbnQgaW5pdGlhbGl6YXRpb24uXG4gICAqIFdoZW4gbnVsbCBvciBub3QgeWV0IHJlc29sdmVkIHRoZSBhdXRoIHN0YXRlIGlzIGB1bmtub3duYFxuICAgKiBPbmNlIHJlc29sdmVkIHRoZSBhdXRoIHN0YXRlIGlzIGtub3duIGFuZCBpdCdzIHNhZmUgdG8gY2FsbCBhbnkgZnVydGhlciBjbGllbnQgbWV0aG9kcy5cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsaXplUHJvbWlzZTogUHJvbWlzZTx7IGVycm9yOiBFcnJvciB8IG51bGwgfT4gfCBudWxsID0gbnVsbFxuICBwcm90ZWN0ZWQgbG9ja0FjcXVpcmVkID0gZmFsc2VcbiAgcHJvdGVjdGVkIHBlbmRpbmdJbkxvY2s6IFByb21pc2U8YW55PltdID0gW11cbiAgcHJvdGVjdGVkIGxvZ0RlYnVnTWVzc2FnZXM6IGJvb2xlYW5cbiAgcHJvdGVjdGVkIGdldEluaXRpYWxTZXNzaW9uPzogKCkgPT4gUHJvbWlzZTx7XG4gICAgZGF0YTogeyBzZXNzaW9uOiBDcmVkZW50aWFsczsgdXNlcj86IGFueSB9IHwgbnVsbFxuICAgIGVycm9yOiBFcnJvciB8IG51bGxcbiAgfT5cbiAgcHJpdmF0ZSBhcGlPcmlnaW46IHN0cmluZ1xuICBwcml2YXRlIGFwaVBhdGg6IHN0cmluZ1xuICBwcml2YXRlIGNsaWVudElkOiBzdHJpbmdcbiAgcHJpdmF0ZSBpMThuOiBJQ2xvdWRiYXNlQ29uZmlnWydpMThuJ11cbiAgcHJpdmF0ZSByZXRyeTogbnVtYmVyXG4gIHByaXZhdGUgY2xpZW50U2VjcmV0Pzogc3RyaW5nXG4gIHByaXZhdGUgYmFzZVJlcXVlc3Q6IDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFQ+XG4gIHByaXZhdGUgc3RvcmFnZTogU2ltcGxlU3RvcmFnZVxuICBwcml2YXRlIGRldmljZUlEPzogc3RyaW5nXG4gIHByaXZhdGUgdG9rZW5JblVSTD86IGJvb2xlYW5cbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5GdW5jOiAocmVmcmVzaFRva2VuPzogc3RyaW5nLCBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKSA9PiBQcm9taXNlPENyZWRlbnRpYWxzPlxuICBwcml2YXRlIGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gIHByaXZhdGUgc2luZ2xlUHJvbWlzZTogU2luZ2xlUHJvbWlzZSA9IG51bGxcbiAgcHJpdmF0ZSBhbm9ueW1vdXNTaWduSW5GdW5jOiAoQ3JlZGVudGlhbHMpID0+IFByb21pc2U8Q3JlZGVudGlhbHMgfCB2b2lkPlxuICBwcml2YXRlIHd4Q2xvdWQ6IGFueVxuICBwcml2YXRlIHVzZVd4Q2xvdWQ6IGJvb2xlYW5cbiAgcHJpdmF0ZSBldmVudEJ1czogYW55XG4gIHByaXZhdGUgYmFzaWNBdXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBvbkNyZWRlbnRpYWxzRXJyb3I6IEF1dGhPcHRpb25zWydvbkNyZWRlbnRpYWxzRXJyb3InXSB8IHVuZGVmaW5lZFxuICBwcml2YXRlIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZD86IChkYXRhOiB7IHNlc3Npb246IENyZWRlbnRpYWxzOyB1c2VyPzogYW55IH0sIGVycm9yPzogYW55KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09BdXRoMkNsaWVudE9wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9BdXRoMkNsaWVudE9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMuY2xpZW50U2VjcmV0KSB7XG4gICAgICBvcHRpb25zLmNsaWVudFNlY3JldCA9ICcnXG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmNsaWVudElkICYmIG9wdGlvbnMuZW52KSB7XG4gICAgICBvcHRpb25zLmNsaWVudElkID0gb3B0aW9ucy5lbnZcbiAgICB9XG5cbiAgICB0aGlzLmFwaU9yaWdpbiA9IG9wdGlvbnMuYXBpT3JpZ2luXG4gICAgdGhpcy5hcGlQYXRoID0gb3B0aW9ucy5hcGlQYXRoIHx8IEFVVEhfQVBJX1BSRUZJWFxuICAgIHRoaXMuY2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkXG4gICAgdGhpcy5pMThuID0gb3B0aW9ucy5pMThuXG4gICAgdGhpcy5ldmVudEJ1cyA9IG9wdGlvbnMuZXZlbnRCdXNcbiAgICB0aGlzLnNpbmdsZVByb21pc2UgPSBuZXcgU2luZ2xlUHJvbWlzZSh7IGNsaWVudElkOiB0aGlzLmNsaWVudElkIH0pXG4gICAgdGhpcy5yZXRyeSA9IHRoaXMuZm9ybWF0UmV0cnkob3B0aW9ucy5yZXRyeSwgT0F1dGgyQ2xpZW50LmRlZmF1bHRSZXRyeSlcbiAgICBpZiAob3B0aW9ucy5iYXNlUmVxdWVzdCkge1xuICAgICAgdGhpcy5iYXNlUmVxdWVzdCA9IG9wdGlvbnMuYmFzZVJlcXVlc3RcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYXNlUmVxdWVzdCA9IGRlZmF1bHRSZXF1ZXN0XG4gICAgfVxuICAgIHRoaXMudG9rZW5JblVSTCA9IG9wdGlvbnMudG9rZW5JblVSTFxuICAgIHRoaXMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnN0b3JhZ2UgPSBvcHRpb25zLnN0b3JhZ2UgfHwgZGVmYXVsdFN0b3JhZ2VcbiAgICB0aGlzLmxvY2FsQ3JlZGVudGlhbHMgPSBuZXcgTG9jYWxDcmVkZW50aWFscyh7XG4gICAgICB0b2tlblNlY3Rpb25OYW1lOiBgY3JlZGVudGlhbHNfJHtvcHRpb25zLmNsaWVudElkfWAsXG4gICAgICBzdG9yYWdlOiB0aGlzLnN0b3JhZ2UsXG4gICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICB9KVxuXG4gICAgdGhpcy5jbGllbnRTZWNyZXQgPSBvcHRpb25zLmNsaWVudFNlY3JldFxuICAgIGlmIChvcHRpb25zLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmJhc2ljQXV0aCA9IGBCYXNpYyAke3dlQnRvYShgJHtvcHRpb25zLmNsaWVudElkfToke3RoaXMuY2xpZW50U2VjcmV0fWApfWBcbiAgICB9XG4gICAgdGhpcy53eENsb3VkID0gb3B0aW9ucy53eENsb3VkXG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc01wKCkpIHtcbiAgICAgICAgdGhpcy51c2VXeENsb3VkID0gb3B0aW9ucy51c2VXeENsb3VkXG4gICAgICAgIGlmICh0aGlzLnd4Q2xvdWQgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmVudikge1xuICAgICAgICAgIHd4LmNsb3VkLmluaXQoeyBlbnY6IG9wdGlvbnMuZW52IH0pXG4gICAgICAgICAgdGhpcy53eENsb3VkID0gd3guY2xvdWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1xuICAgIH1cbiAgICB0aGlzLnJlZnJlc2hUb2tlbkZ1bmMgPSBvcHRpb25zLnJlZnJlc2hUb2tlbkZ1bmMgfHwgdGhpcy5kZWZhdWx0UmVmcmVzaFRva2VuRnVuY1xuICAgIHRoaXMuYW5vbnltb3VzU2lnbkluRnVuYyA9IG9wdGlvbnMuYW5vbnltb3VzU2lnbkluRnVuY1xuICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yID0gb3B0aW9ucy5vbkNyZWRlbnRpYWxzRXJyb3JcblxuICAgIC8vIE5ldyBvcHRpb25zIGZvciBzZXNzaW9uIGRldGVjdGlvblxuICAgIHRoaXMuZ2V0SW5pdGlhbFNlc3Npb24gPSBvcHRpb25zLmdldEluaXRpYWxTZXNzaW9uXG4gICAgdGhpcy5vbkluaXRpYWxTZXNzaW9uT2J0YWluZWQgPSBvcHRpb25zLm9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZFxuICAgIHRoaXMubG9nRGVidWdNZXNzYWdlcyA9IG9wdGlvbnMuZGVidWcgPz8gZmFsc2VcblxuICAgIGxhbmdFdmVudC5idXMub24obGFuZ0V2ZW50LkxBTkdfQ0hBTkdFX0VWRU5ULCAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaTE4biA9IHBhcmFtcy5kYXRhPy5pMThuIHx8IHRoaXMuaTE4blxuICAgIH0pXG5cbiAgICAvLyBOb3RlOiBBdXRvLWluaXRpYWxpemUgaXMgTk9UIGNhbGxlZCBoZXJlIHRvIGFsbG93IENsb3VkYmFzZU9BdXRoIHRvIHNldCBnZXRJbml0aWFsU2Vzc2lvbiBmaXJzdFxuICAgIC8vIENsb3VkYmFzZU9BdXRoLmNvbnN0cnVjdG9yIHdpbGwgY2FsbCBpbml0aWFsaXplKCkgYWZ0ZXIgc2V0dGluZyB1cCB0aGUgY2FsbGJhY2tcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBnZXRJbml0aWFsU2Vzc2lvbiBjYWxsYmFjay5cbiAgICogVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemUoKSB0byBnZXQgdGhlIGluaXRpYWwgc2Vzc2lvbiAoZS5nLiwgZnJvbSBPQXV0aCBjYWxsYmFjayBpbiBVUkwpLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGdldCBpbml0aWFsIHNlc3Npb25cbiAgICovXG4gIHB1YmxpYyBzZXRHZXRJbml0aWFsU2Vzc2lvbihjYWxsYmFjazogKCkgPT4gUHJvbWlzZTx7XG4gICAgZGF0YTogeyBzZXNzaW9uOiBDcmVkZW50aWFsczsgdXNlcj86IGFueSB9IHwgbnVsbFxuICAgIGVycm9yOiBFcnJvciB8IG51bGxcbiAgfT4sKTogdm9pZCB7XG4gICAgdGhpcy5nZXRJbml0aWFsU2Vzc2lvbiA9IGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkIGNhbGxiYWNrLlxuICAgKiBUaGlzIGNhbGxiYWNrIGlzIGludm9rZWQgYWZ0ZXIgaW5pdGlhbCBzZXNzaW9uIGlzIG9idGFpbmVkIGFuZCBzdG9yZWQsXG4gICAqIGFsbG93aW5nIHVwcGVyIGxheWVycyB0byBoYW5kbGUgdXNlciBpbmZvIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHNlc3Npb24gYW5kIHVzZXIgZGF0YVxuICAgKi9cbiAgcHVibGljIHNldE9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZChjYWxsYmFjazogKGRhdGE6IHsgc2Vzc2lvbjogQ3JlZGVudGlhbHM7IHVzZXI/OiBhbnkgfSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4sKTogdm9pZCB7XG4gICAgdGhpcy5vbkluaXRpYWxTZXNzaW9uT2J0YWluZWQgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjbGllbnQgc2Vzc2lvbiBlaXRoZXIgZnJvbSB0aGUgdXJsIG9yIGZyb20gc3RvcmFnZS5cbiAgICogVGhpcyBtZXRob2QgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBjbGllbnQgd2l0aCBkZXRlY3RTZXNzaW9uSW5Vcmw9dHJ1ZSxcbiAgICogYnV0IHNob3VsZCBhbHNvIGJlIGNhbGxlZCBtYW51YWxseSB3aGVuIGNoZWNraW5nIGZvciBhbiBlcnJvciBmcm9tIGFuIGF1dGggcmVkaXJlY3QuXG4gICAqIEBwYXJhbSBvbkluaXRpYWxTZXNzaW9uT2J0YWluZWQgT3B0aW9uYWwgY2FsbGJhY2sgdG8gc2V0IGJlZm9yZSBpbml0aWFsaXphdGlvbiBzdGFydHNcbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemUoZnVuYz86IFByb21pc2U8eyBlcnJvcjogRXJyb3IgfCBudWxsIH0+KTogUHJvbWlzZTx7IGVycm9yOiBFcnJvciB8IG51bGwgfT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWlzdXNlZC1wcm9taXNlc1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVQcm9taXNlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuICAgIH1cblxuICAgIGlmIChmdW5jICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVByb21pc2UgPSBmdW5jXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZVByb21pc2UgPSAoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5fYWNxdWlyZUxvY2soLTEsIGFzeW5jICgpID0+IGF3YWl0IHRoaXMuX2luaXRpYWxpemUoKSkpKClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogc2V0Q3JlZGVudGlhbHMgUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgZmV0Y2ggYXBpIHJlcXVlc3QgaW1wbGVtZW50YXRpb24gd2l0aCBhdXRoIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIElmIGluaXRpYWxpemF0aW9uIGlzIGluIHByb2dyZXNzLCB3YWl0IGZvciBpdCBmaXJzdFxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcbiAgICByZXR1cm4gdGhpcy5fYWNxdWlyZUxvY2soLTEsIGFzeW5jICgpID0+IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscykpXG4gIH1cblxuICAvKipcbiAgICogc2V0IGNyZWRlbnRpYWxzIGZyb20gYWNjZXNzS2V5XG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqL1xuICBwdWJsaWMgc2V0QWNjZXNzS2V5Q3JlZGVudGlhbHMoY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscykge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0QWNjZXNzS2V5Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gIH1cblxuICAvKipcbiAgICogZ2V0QWNjZXNzVG9rZW4gcmV0dXJuIGEgdmFsaWRhdGUgYWNjZXNzIHRva2VuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXNzVG9rZW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXQgZmlyc3RcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5nZXRDcmVkZW50aWFscygpXG4gICAgLy8gbm9kZSBzZGsg5Zy65pmv5LiL55u05o6l6L+U5ZueYWNjZXNzX3Rva2VuXG4gICAgaWYgKGNyZWRlbnRpYWxzPy5zY29wZSA9PT0gREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscy5hY2Nlc3NfdG9rZW4pXG4gICAgfVxuICAgIGlmIChjcmVkZW50aWFscz8uYWNjZXNzX3Rva2VuKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzLmFjY2Vzc190b2tlbilcbiAgICB9XG4gICAgY29uc3QgcmVzcEVycjogUmVzcG9uc2VFcnJvciA9IHsgZXJyb3I6IEVycm9yVHlwZS5VTkFVVEhFTlRJQ0FURUQgfVxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwRXJyKVxuICB9XG5cbiAgLyoqXG4gICAqIHJlcXVlc3QgaHR0cCBsaWtlIHNpbXBsZSBmZXRjaCBhcGksIGV4cDpyZXF1ZXN0KCcvdjEvdXNlci9tZScsIHt3aXRoQ3JlZGVudGlhbHM6dHJ1ZX0pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogQXV0aENsaWVudFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9XG4gICAgY29uc3QgcmV0cnk6IG51bWJlciA9IHRoaXMuZm9ybWF0UmV0cnkob3B0aW9ucy5yZXRyeSwgdGhpcy5yZXRyeSlcbiAgICBvcHRpb25zLmhlYWRlcnMgPSB7IC4uLm9wdGlvbnMuaGVhZGVycywgW3RoaXMuaTE4bj8uTEFOR19IRUFERVJfS0VZXTogdGhpcy5pMThuPy5sYW5nIH1cbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMgPSB7XG4gICAgICAgIC4uLnRoaXMuaGVhZGVycyxcbiAgICAgICAgLi4ub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVyc1tSZXF1ZXN0SWRIZWFkZXJOYW1lXSkge1xuICAgICAgb3B0aW9ucy5oZWFkZXJzW1JlcXVlc3RJZEhlYWRlck5hbWVdID0gZ2VuZXJhdGVSZXF1ZXN0SWQoKVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVyc1tEZXZpY2VJZEhlYWRlck5hbWVdKSB7XG4gICAgICBjb25zdCBkZXZpY2VJZCA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlSWQoKVxuICAgICAgb3B0aW9ucy5oZWFkZXJzW0RldmljZUlkSGVhZGVyTmFtZV0gPSBkZXZpY2VJZFxuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ud2l0aEJhc2ljQXV0aCAmJiB0aGlzLmJhc2ljQXV0aCkge1xuICAgICAgb3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSB0aGlzLmJhc2ljQXV0aFxuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ud2l0aENyZWRlbnRpYWxzKSB7XG4gICAgICAvLyBVc2UgY3VzdG9tIGdldENyZWRlbnRpYWxzIGZ1bmN0aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgdXNlIGRlZmF1bHRcbiAgICAgIC8vIEN1c3RvbSBnZXRDcmVkZW50aWFscyBhdm9pZHMgZGVmYXVsdCBnZXRDcmVkZW50aWFscygpIGNhbGwgd2hpY2ggbWF5IGNhdXNlIGRlYWRsb2NrIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBvcHRpb25zLmdldENyZWRlbnRpYWxzID8gYXdhaXQgb3B0aW9ucy5nZXRDcmVkZW50aWFscygpIDogYXdhaXQgdGhpcy5nZXRDcmVkZW50aWFscygpXG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5JblVSTCkge1xuICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpIDwgMCkge1xuICAgICAgICAgICAgdXJsICs9ICc/J1xuICAgICAgICAgIH1cbiAgICAgICAgICB1cmwgKz0gYGFjY2Vzc190b2tlbj0ke2NyZWRlbnRpYWxzLmFjY2Vzc190b2tlbn1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHtjcmVkZW50aWFscy50b2tlbl90eXBlfSAke2NyZWRlbnRpYWxzLmFjY2Vzc190b2tlbn1gXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2xpZW50SWQgJiYgdXJsLmluZGV4T2YoJ2NsaWVudF9pZCcpIDwgMCkge1xuICAgICAgICB1cmwgKz0gdXJsLmluZGV4T2YoJz8nKSA8IDAgPyAnPycgOiAnJidcbiAgICAgICAgdXJsICs9IGBjbGllbnRfaWQ9JHt0aGlzLmNsaWVudElkfWBcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHVybCA9IGAke3RoaXMuYXBpT3JpZ2lufSR7dGhpcy5hcGlQYXRofSR7dXJsfWBcbiAgICB9XG4gICAgbGV0IHJlc3BvbnNlOiBUIHwgbnVsbCA9IG51bGxcbiAgICBjb25zdCBtYXhSZXF1ZXN0VGltZXM6IG51bWJlciA9IHJldHJ5ICsgMVxuICAgIGZvciAobGV0IHJlcXVlc3RUaW1lID0gMDsgcmVxdWVzdFRpbWUgPCBtYXhSZXF1ZXN0VGltZXM7IHJlcXVlc3RUaW1lKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChvcHRpb25zLnVzZVd4Q2xvdWQgfHwgdGhpcy51c2VXeENsb3VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnd4Q2xvdWRDYWxsRnVuY3Rpb248VD4odXJsLCBvcHRpb25zKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iYXNlUmVxdWVzdDxUPih1cmwsIG9wdGlvbnMpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISEocmVzcG9uc2UgYXMgYW55KT8uY29kZSkge1xuICAgICAgICAgIHRocm93IHtcbiAgICAgICAgICAgIGVycm9yOiAocmVzcG9uc2UgYXMgYW55KS5jb2RlLFxuICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IChyZXNwb25zZSBhcyBhbnkpLm1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcl91cmk6IG5ldyBVUkwodXJsKS5wYXRobmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3BvbnNlRXJyb3IucmVxdWVzdElkID0gcmVzcG9uc2VFcnJvci5yZXF1ZXN0SWQgfHwgb3B0aW9ucy5oZWFkZXJzW1JlcXVlc3RJZEhlYWRlck5hbWVdIHx8ICcnXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICBpZiAob3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgJiYgcmVzcG9uc2VFcnJvciAmJiByZXNwb25zZUVycm9yLmVycm9yID09PSBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVEKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwb25zZUVycm9yKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RUaW1lID09PSByZXRyeSB8fCAhcmVzcG9uc2VFcnJvciB8fCByZXNwb25zZUVycm9yLmVycm9yICE9PSAndW5yZWFjaGFibGUnKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BvbnNlRXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuc2xlZXAoT0F1dGgyQ2xpZW50LnJldHJ5SW50ZXJ2YWwpXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHd4Q2xvdWRDYWxsRnVuY3Rpb248VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXN1bHQ6IFQgfCBudWxsID0gbnVsbFxuICAgIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yIHwgbnVsbCA9IG51bGxcbiAgICB0cnkge1xuICAgICAgbGV0IHVzZXJBZ2VudCA9ICcnXG4gICAgICB0cnkge1xuICAgICAgICB1c2VyQWdlbnQgPSBhd2FpdCB3eC5nZXRSZW5kZXJlclVzZXJBZ2VudCgpXG4gICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgIGNvbnN0IHsgcmVzdWx0OiByZXNwb25zZVJlc3VsdCB9ID0gYXdhaXQgdGhpcy53eENsb3VkLmNhbGxGdW5jdGlvbih7XG4gICAgICAgIG5hbWU6ICdodHRwT3ZlckNhbGxGdW5jdGlvbicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kOiBvcHRpb25zLm1ldGhvZCxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBvcmlnaW46ICdodHRwczovL3NlcnZpY2V3ZWNoYXQuY29tJyxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogdXNlckFnZW50LFxuICAgICAgICAgICAgLi4ub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlc3BvbnNlUmVzdWx0Py5ib2R5Py5lcnJvcl9jb2RlKSB7XG4gICAgICAgIHJlc3BvbnNlRXJyb3IgPSByZXNwb25zZVJlc3VsdD8uYm9keSBhcyBSZXNwb25zZUVycm9yXG4gICAgICAgIHJlc3BvbnNlRXJyb3IuZXJyb3JfdXJpID0gZ2V0UGF0aE5hbWUodXJsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2VSZXN1bHQ/LmJvZHkgYXMgVFxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgICBlcnJvcjogRXJyb3JUeXBlLlVOUkVBQ0hBQkxFLFxuICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgZXJyb3JfdXJpOiBnZXRQYXRoTmFtZSh1cmwpLFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXNwb25zZUVycm9yKSB7XG4gICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0IGZpcnN0XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuXG4gICAgcmV0dXJuIHRoaXMuX2FjcXVpcmVMb2NrKC0xLCBhc3luYyAoKSA9PiB0aGlzLl9nZXRDcmVkZW50aWFscygpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIOW6n+W8g+aOpeWPo++8jOWLv+eUqC4g5aaC6ZyA6I635Y+W5Yet6K+B5L+h5oGv6K+35L2/55SoIGdldENyZWRlbnRpYWxzIOaWueazlVxuICAgKi9cbiAgcHVibGljIGdldENyZWRlbnRpYWxzU3luYygpOiBDcmVkZW50aWFscyB8IG51bGwge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRTdG9yYWdlQ3JlZGVudGlhbHNTeW5jKClcbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxuXG4gIHB1YmxpYyBnZXRDcmVkZW50aWFsc0FzeW5jKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCBtc2cgPSAnY3JlZGVudGlhbHMgbm90IGZvdW5kJ1xuICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHMuc2NvcGVcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHcm91cHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgY29uc3QgbXNnID0gJ2NyZWRlbnRpYWxzIG5vdCBmb3VuZCdcbiAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzLmdyb3Vwc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggZXhwaXJlZCB0b2tlbi5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscywgb3B0aW9ucz86IHsgdGhyb3dFcnJvcj86IGJvb2xlYW4gfSk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXQgZmlyc3RcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG5cbiAgICByZXR1cm4gdGhpcy5fYWNxdWlyZUxvY2soLTEsIGFzeW5jICgpID0+IHRoaXMuX3JlZnJlc2hUb2tlbihjcmVkZW50aWFscywgb3B0aW9ucykpXG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgcmVmcmVzaCB0b2tlbiBtZXRob2QgKGNhbGxlZCB3aXRoaW4gbG9jaylcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3JlZnJlc2hUb2tlbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMsIG9wdGlvbnM/OiB7IHRocm93RXJyb3I/OiBib29sZWFuIH0pOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19yZWZyZXNoVG9rZW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBub2RlIHNkayDlnLrmma/kuIvkuI3pnIDopoHliLfmlrAgdG9rZW5cbiAgICAgIGlmIChjcmVkZW50aWFscz8uc2NvcGUgPT09IERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEUpIHtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgICB9XG5cbiAgICAgIGlmICghY3JlZGVudGlhbHMgfHwgIWNyZWRlbnRpYWxzLnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ25vIHJlZnJlc2ggdG9rZW4gZm91bmQgaW4gY3JlZGVudGlhbHMnXG4gICAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW5GdW5jKGNyZWRlbnRpYWxzLnJlZnJlc2hfdG9rZW4sIGNyZWRlbnRpYWxzKVxuICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobmV3Q3JlZGVudGlhbHMpXG5cbiAgICAgICAgdGhpcy5ldmVudEJ1cz8uZmlyZShFVkVOVFMuQVVUSF9TVEFURV9DSEFOR0VELCB7IGV2ZW50OiBBVVRIX1NUQVRFX0NIQU5HRURfVFlQRS5UT0tFTl9SRUZSRVNIRUQgfSlcblxuICAgICAgICByZXR1cm4gbmV3Q3JlZGVudGlhbHNcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChvcHRpb25zPy50aHJvd0Vycm9yKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgPT09IEVycm9yVHlwZS5JTlZBTElEX0dSQU5UKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG51bGwpXG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyb3IuZXJyb3JfZGVzY3JpcHRpb25cbiAgICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2c6IGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uIH0pXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhbm9ueW1vdXNMb2dpbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX2Fub255bW91c0xvZ2luJywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYW5vbnltb3VzU2lnbkluRnVuYykge1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgdGhpcy5hbm9ueW1vdXNTaWduSW5GdW5jKGNyZWRlbnRpYWxzKVxuICAgICAgICBjcmVkZW50aWFscyA9IGMgfHwgKGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c1NpZ25JbihjcmVkZW50aWFscylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayByZXRyeSB2YWx1ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHJldHJ5XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHByaXZhdGUgY2hlY2tSZXRyeShyZXRyeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gICAgaWYgKHR5cGVvZiByZXRyeSAhPT0gJ251bWJlcicgfHwgcmV0cnkgPCBPQXV0aDJDbGllbnQubWluUmV0cnkgfHwgcmV0cnkgPiBPQXV0aDJDbGllbnQubWF4UmV0cnkpIHtcbiAgICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5SRUFDSEFCTEUsXG4gICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAnd3Jvbmcgb3B0aW9ucyBwYXJhbTogcmV0cnknLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgIH1cbiAgICByZXR1cm4gcmV0cnlcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgcmV0cnkgdmFsdWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXRyeVxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdFZhbGVcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRSZXRyeShyZXRyeTogbnVtYmVyLCBkZWZhdWx0VmFsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHJldHJ5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWxlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNoZWNrUmV0cnkocmV0cnkpXG4gIH1cblxuICAvKipcbiAgICogU2xlZXAuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9LCBtcylcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGFub255bW91cyBzaWduSW5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFub255bW91c1NpZ25JbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19hbm9ueW1vdXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzIHx8IGNyZWRlbnRpYWxzLnNjb3BlICE9PSAnYW5vbnltb3VzJykge1xuICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcignbm8gYW5vbnltb3VzIGluIGNyZWRlbnRpYWxzJylcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0NyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVxdWVzdChBcGlVcmxzLkFVVEhfU0lHTl9JTl9BTk9OWU1PVVNMWV9VUkwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICB3aXRoQmFzaWNBdXRoOiB0cnVlLFxuICAgICAgICAgIGJvZHk6IHt9LFxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobmV3Q3JlZGVudGlhbHMpXG4gICAgICAgIHJldHVybiBuZXdDcmVkZW50aWFsc1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmVycm9yID09PSBFcnJvclR5cGUuSU5WQUxJRF9HUkFOVCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcmVmcmVzaCB0b2tlbiBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZnJlc2hUb2tlblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZGVmYXVsdFJlZnJlc2hUb2tlbkZ1bmMocmVmcmVzaFRva2VuPzogc3RyaW5nLCBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGlmIChyZWZyZXNoVG9rZW4gPT09IHVuZGVmaW5lZCB8fCByZWZyZXNoVG9rZW4gPT09ICcnKSB7XG4gICAgICBjb25zdCBtc2cgPSAncmVmcmVzaCB0b2tlbiBub3QgZm91bmQnXG4gICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgfVxuXG4gICAgbGV0IHVybDogc3RyaW5nID0gQXBpVXJscy5BVVRIX1RPS0VOX1VSTFxuXG4gICAgaWYgKGNyZWRlbnRpYWxzPy52ZXJzaW9uID09PSAndjInKSB7XG4gICAgICB1cmwgPSBBcGlVcmxzVjIuQVVUSF9UT0tFTl9VUkxcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLnJlcXVlc3QodXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgY2xpZW50X2lkOiB0aGlzLmNsaWVudElkLFxuICAgICAgICBjbGllbnRfc2VjcmV0OiB0aGlzLmNsaWVudFNlY3JldCxcbiAgICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByZXR1cm4geyAuLi5uZXdDcmVkZW50aWFscywgdmVyc2lvbjogY3JlZGVudGlhbHM/LnZlcnNpb24gfHwgJ3YxJyB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldmljZUlkXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldERldmljZUlkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuZGV2aWNlSUQpIHtcbiAgICAgIHJldHVybiB0aGlzLmRldmljZUlEXG4gICAgfVxuICAgIGxldCBkZXZpY2VJZDogc3RyaW5nID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEl0ZW0oRGV2aWNlSWRTZWN0aW9uTmFtZSlcbiAgICBpZiAoISh0eXBlb2YgZGV2aWNlSWQgPT09ICdzdHJpbmcnICYmIGRldmljZUlkLmxlbmd0aCA+PSAxNiAmJiBkZXZpY2VJZC5sZW5ndGggPD0gNDgpKSB7XG4gICAgICBkZXZpY2VJZCA9IHV1aWR2NCgpXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShEZXZpY2VJZFNlY3Rpb25OYW1lLCBkZXZpY2VJZClcbiAgICB9XG4gICAgdGhpcy5kZXZpY2VJRCA9IGRldmljZUlkXG4gICAgcmV0dXJuIGRldmljZUlkXG4gIH1cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHVuQXV0aGVudGljYXRlZCBlcnJvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVyclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFQ+fVxuICAgKi9cbiAgcHJpdmF0ZSB1bkF1dGhlbnRpY2F0ZWRFcnJvcjxUPihlcnI/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCByZXNwRXJyOiBSZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTkFVVEhFTlRJQ0FURUQsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyLFxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcEVycilcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWJ1ZyBsb2dnaW5nIGhlbHBlclxuICAgKi9cbiAgcHJpdmF0ZSBfZGVidWcoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2dEZWJ1Z01lc3NhZ2VzKSB7XG4gICAgICBjb25zb2xlLmxvZygnW09BdXRoMkNsaWVudF0nLCAuLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJTVBPUlRBTlQ6XG4gICAqIDEuIE5ldmVyIHRocm93IGluIHRoaXMgbWV0aG9kLCBhcyBpdCBpcyBjYWxsZWQgZnJvbSB0aGUgY29uc3RydWN0b3JcbiAgICogMi4gTmV2ZXIgcmV0dXJuIGEgc2Vzc2lvbiBmcm9tIHRoaXMgbWV0aG9kIGFzIGl0IHdvdWxkIGJlIGNhY2hlZCBvdmVyXG4gICAqICAgIHRoZSB3aG9sZSBsaWZldGltZSBvZiB0aGUgY2xpZW50XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9pbml0aWFsaXplKCk6IFByb21pc2U8eyBlcnJvcjogRXJyb3IgfCBudWxsIH0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gSWYgbm8gZ2V0SW5pdGlhbFNlc3Npb24gY2FsbGJhY2sgaXMgc2V0LCBub3RoaW5nIHRvIGRvXG4gICAgICBpZiAoIXRoaXMuZ2V0SW5pdGlhbFNlc3Npb24pIHtcbiAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ25vIGdldEluaXRpYWxTZXNzaW9uIGNhbGxiYWNrIHNldCwgc2tpcHBpbmcnKVxuICAgICAgICByZXR1cm4geyBlcnJvcjogbnVsbCB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdjYWxsaW5nIGdldEluaXRpYWxTZXNzaW9uIGNhbGxiYWNrJylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgdGhpcy5nZXRJbml0aWFsU2Vzc2lvbigpXG5cbiAgICAgICAgaWYgKGRhdGE/LnNlc3Npb24pIHtcbiAgICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnc2Vzc2lvbiBvYnRhaW5lZCBmcm9tIGdldEluaXRpYWxTZXNzaW9uJywgZGF0YS5zZXNzaW9uKVxuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhkYXRhPy5zZXNzaW9uKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW52b2tlIGNhbGxiYWNrIGZvciB1cHBlciBsYXllciB0byBoYW5kbGUgdXNlciBzdG9yYWdlXG4gICAgICAgIC8vIFRoaXMgaXMgY2FsbGVkIEJFRk9SRSBsb2NrIGlzIHJlbGVhc2VkIHNvIHVzZXIgc3RvcmFnZSBpcyBhdG9taWMgd2l0aCBzZXNzaW9uXG4gICAgICAgIGlmICh0aGlzLm9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCkge1xuICAgICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdjYWxsaW5nIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCBjYWxsYmFjaycpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkKGRhdGEsIGVycm9yKVxuICAgICAgICAgIH0gY2F0Y2ggKGNhbGxiYWNrRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdlcnJvciBpbiBvbkluaXRpYWxTZXNzaW9uT2J0YWluZWQnLCBjYWxsYmFja0Vycm9yKVxuICAgICAgICAgICAgLy8gRG9uJ3QgZmFpbCBpbml0aWFsaXphdGlvbiBpZiBjYWxsYmFjayBmYWlsc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnZXJyb3IgZnJvbSBnZXRJbml0aWFsU2Vzc2lvbicsIGVycm9yKVxuICAgICAgICAgIHJldHVybiB7IGVycm9yIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGVycm9yOiBudWxsIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnZXhjZXB0aW9uIGR1cmluZyBnZXRJbml0aWFsU2Vzc2lvbicsIGVycilcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKFN0cmluZyhlcnIpKSB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICd1bmV4cGVjdGVkIGVycm9yJywgZXJyb3IpXG4gICAgICByZXR1cm4geyBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjcXVpcmVzIGEgZ2xvYmFsIGxvY2sgYmFzZWQgb24gdGhlIGNsaWVudCBJRC5cbiAgICogVGhpcyBlbnN1cmVzIHRoYXQgb25seSBvbmUgb3BlcmF0aW9uIGNhbiBtb2RpZnkgY3JlZGVudGlhbHMgYXQgYSB0aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfYWNxdWlyZUxvY2s8Uj4oYWNxdWlyZVRpbWVvdXQ6IG51bWJlciwgZm46ICgpID0+IFByb21pc2U8Uj4pOiBQcm9taXNlPFI+IHtcbiAgICB0aGlzLl9kZWJ1ZygnI19hY3F1aXJlTG9jaycsICdiZWdpbicsIGFjcXVpcmVUaW1lb3V0KVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmxvY2tBY3F1aXJlZCkge1xuICAgICAgICAvLyBMb2NrIGlzIGFscmVhZHkgYWNxdWlyZWQsIHF1ZXVlIHRoZSBvcGVyYXRpb25cbiAgICAgICAgY29uc3QgbGFzdCA9IHRoaXMucGVuZGluZ0luTG9jay5sZW5ndGggPyB0aGlzLnBlbmRpbmdJbkxvY2tbdGhpcy5wZW5kaW5nSW5Mb2NrLmxlbmd0aCAtIDFdIDogUHJvbWlzZS5yZXNvbHZlKClcblxuICAgICAgICBjb25zdCByZXN1bHQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGxhc3RcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZm4oKVxuICAgICAgICB9KSgpXG5cbiAgICAgICAgdGhpcy5wZW5kaW5nSW5Mb2NrLnB1c2goKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmVzdWx0XG4gICAgICAgICAgfSBjYXRjaCAoX2U6IGFueSkge1xuICAgICAgICAgICAgLy8gd2UganVzdCBjYXJlIGlmIGl0IGZpbmlzaGVkXG4gICAgICAgICAgfVxuICAgICAgICB9KSgpLClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2tcbiAgICAgIHRoaXMuX2RlYnVnKCcjX2FjcXVpcmVMb2NrJywgJ2FjcXVpcmluZyBsb2NrIGZvciBjbGllbnQnLCB0aGlzLmNsaWVudElkKVxuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmxvY2tBY3F1aXJlZCA9IHRydWVcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmbigpXG5cbiAgICAgICAgdGhpcy5wZW5kaW5nSW5Mb2NrLnB1c2goKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcmVzdWx0XG4gICAgICAgICAgfSBjYXRjaCAoX2U6IGFueSkge1xuICAgICAgICAgICAgLy8gd2UganVzdCBjYXJlIGlmIGl0IGZpbmlzaGVkXG4gICAgICAgICAgfVxuICAgICAgICB9KSgpLClcblxuICAgICAgICBhd2FpdCByZXN1bHRcblxuICAgICAgICAvLyBrZWVwIGRyYWluaW5nIHRoZSBxdWV1ZSB1bnRpbCB0aGVyZSdzIG5vdGhpbmcgdG8gd2FpdCBvblxuICAgICAgICB3aGlsZSAodGhpcy5wZW5kaW5nSW5Mb2NrLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHdhaXRPbiA9IFsuLi50aGlzLnBlbmRpbmdJbkxvY2tdXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwod2FpdE9uKVxuICAgICAgICAgIHRoaXMucGVuZGluZ0luTG9jay5zcGxpY2UoMCwgd2FpdE9uLmxlbmd0aClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCByZXN1bHRcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuX2RlYnVnKCcjX2FjcXVpcmVMb2NrJywgJ3JlbGVhc2luZyBsb2NrIGZvciBjbGllbnQnLCB0aGlzLmNsaWVudElkKVxuICAgICAgICB0aGlzLmxvY2tBY3F1aXJlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2RlYnVnKCcjX2FjcXVpcmVMb2NrJywgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBnZXQgY3JlZGVudGlhbHMgKGNhbGxlZCB3aXRoaW4gbG9jaylcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2dldENyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgLy8gbm9kZSBhZGFwdGVyIOWcuuaZr+S4i++8jHNjb3BlIOS4uiBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BF77yM5LiN6ZyA6KaB5Yi35pawIHRva2VuXG4gICAgaWYgKGNyZWRlbnRpYWxzPy5zY29wZSA9PT0gREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSkge1xuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgfVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IG1zZyA9ICdjcmVkZW50aWFscyBub3QgZm91bmQnXG4gICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgfVxuICAgIGlmIChpc0NyZWRlbnRpYWxzRXhwaXJlZChjcmVkZW50aWFscykpIHtcbiAgICAgIGlmIChjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLl9yZWZyZXNoVG9rZW4oY3JlZGVudGlhbHMpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGNyZWRlbnRpYWxzLnNjb3BlID09PSAnYW5vbnltb3VzJykge1xuICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c0xvZ2luKGNyZWRlbnRpYWxzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnOiBlcnJvci5lcnJvcl9kZXNjcmlwdGlvbiB9KVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjcmVkZW50aWFscy5zY29wZSA9PT0gJ2Fub255bW91cycpIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c0xvZ2luKGNyZWRlbnRpYWxzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ25vIHJlZnJlc2ggdG9rZW4gZm91bmQgaW4gY3JlZGVudGlhbHMnXG4gICAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxufVxuIl19
|