@deriv-com/smartcharts-champion 1.9.11 → 1.9.13
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/.github/workflows/DocSyncAI.yml +27 -1
- package/.github/workflows/README.md +1 -1
- package/.github/workflows/deploy-preview.yml +9 -9
- package/.github/workflows/publish-smart-charts.yml +12 -12
- package/CHANGELOG.md +9 -2
- package/README.md +1 -1
- package/dist/chart/flutter_bootstrap.js +1 -1
- package/dist/chart/flutter_service_worker.js +1 -1
- package/dist/chart/main.dart.js +1 -1
- package/dist/chart/main.dart.mjs +1 -1
- package/dist/chart/main.dart.wasm +0 -0
- package/dist/smartcharts.js +1 -1
- package/dist/smartcharts.js.map +1 -1
- package/package.json +3 -3
- package/release.config.cjs +1 -1
|
@@ -2,11 +2,21 @@ name: DocSync AI - Documentation Sync
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
schedule:
|
|
5
|
-
- cron: "30
|
|
5
|
+
- cron: "30 5 * * 5" # 9:30 AM GST (5:30 AM UTC) every Friday
|
|
6
6
|
|
|
7
7
|
issue_comment:
|
|
8
8
|
types: [created]
|
|
9
9
|
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
inputs:
|
|
12
|
+
trigger_type:
|
|
13
|
+
description: "Trigger type"
|
|
14
|
+
required: true
|
|
15
|
+
default: "claude_md_refresh"
|
|
16
|
+
type: choice
|
|
17
|
+
options:
|
|
18
|
+
- claude_md_refresh
|
|
19
|
+
|
|
10
20
|
jobs:
|
|
11
21
|
docsync-scheduled:
|
|
12
22
|
if: github.event_name == 'schedule'
|
|
@@ -39,6 +49,22 @@ jobs:
|
|
|
39
49
|
comment_pr_number: ${{ github.event.issue.number }}
|
|
40
50
|
comment_id: ${{ github.event.comment.id }}
|
|
41
51
|
base_branch: "master"
|
|
52
|
+
secrets:
|
|
53
|
+
DOCSYNC_GITHUB_TOKEN: ${{ secrets.DOCSYNC_GITHUB_TOKEN }}
|
|
54
|
+
DOCSYNC_ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
55
|
+
DOCSYNC_SLACK_TOKEN: ${{ secrets.DOCSYNC_SLACK_TOKEN }}
|
|
56
|
+
DOCSYNC_SLACK_CHANNEL_ID: ${{ secrets.DOCSYNC_SLACK_CHANNEL_ID }}
|
|
57
|
+
DOCSYNC_SLACK_MENTION_USER_IDS: ${{ secrets.DOCSYNC_SLACK_MENTION_USER_IDS }}
|
|
58
|
+
|
|
59
|
+
docsync-claude-md-refresh:
|
|
60
|
+
if: github.event_name == 'workflow_dispatch' && inputs.trigger_type == 'claude_md_refresh'
|
|
61
|
+
permissions:
|
|
62
|
+
contents: write
|
|
63
|
+
pull-requests: write
|
|
64
|
+
uses: deriv-com/shared-actions/.github/workflows/docsync-ai.yml@master
|
|
65
|
+
with:
|
|
66
|
+
trigger_type: "claude_md_refresh"
|
|
67
|
+
base_branch: "master"
|
|
42
68
|
secrets:
|
|
43
69
|
DOCSYNC_GITHUB_TOKEN: ${{ secrets.DOCSYNC_GITHUB_TOKEN }}
|
|
44
70
|
DOCSYNC_ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Deployment Workflows Documentation
|
|
2
2
|
|
|
3
|
-
This directory contains GitHub Actions workflows for deploying the SmartCharts
|
|
3
|
+
This directory contains GitHub Actions workflows for deploying the SmartCharts application to Cloudflare Pages.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Preview deployment workflow
|
|
2
|
-
# Builds SmartCharts
|
|
2
|
+
# Builds SmartCharts and integrates with derivatives-trader for preview
|
|
3
3
|
|
|
4
4
|
name: Deploy Preview
|
|
5
5
|
|
|
@@ -11,7 +11,7 @@ on:
|
|
|
11
11
|
workflow_dispatch:
|
|
12
12
|
inputs:
|
|
13
13
|
smartcharts_ref:
|
|
14
|
-
description: 'smartcharts
|
|
14
|
+
description: 'deriv-smartcharts branch/tag/SHA to build'
|
|
15
15
|
required: true
|
|
16
16
|
default: 'master'
|
|
17
17
|
flutter_chart_ref:
|
|
@@ -50,8 +50,8 @@ jobs:
|
|
|
50
50
|
- name: Checkout repository
|
|
51
51
|
uses: actions/checkout@v4
|
|
52
52
|
with:
|
|
53
|
-
repository: deriv-com/smartcharts
|
|
54
|
-
path: smartcharts
|
|
53
|
+
repository: deriv-com/deriv-smartcharts
|
|
54
|
+
path: deriv-smartcharts
|
|
55
55
|
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.smartcharts_ref || github.event.pull_request.head.sha }}
|
|
56
56
|
persist-credentials: false
|
|
57
57
|
|
|
@@ -76,7 +76,7 @@ jobs:
|
|
|
76
76
|
env:
|
|
77
77
|
FLUTTER_REF: ${{ github.event.inputs.flutter_chart_ref }}
|
|
78
78
|
run: |
|
|
79
|
-
cd smartcharts
|
|
79
|
+
cd deriv-smartcharts/chart_app
|
|
80
80
|
# Validate input format (alphanumeric, slashes, hyphens, underscores, dots only)
|
|
81
81
|
if ! [[ "${FLUTTER_REF}" =~ ^[a-zA-Z0-9/_.-]+$ ]]; then
|
|
82
82
|
echo "Error: Invalid flutter_chart_ref format. Only alphanumeric characters, slashes, hyphens, underscores, and dots are allowed."
|
|
@@ -96,7 +96,7 @@ jobs:
|
|
|
96
96
|
|
|
97
97
|
- name: Build Flutter chart component
|
|
98
98
|
run: |
|
|
99
|
-
cd smartcharts
|
|
99
|
+
cd deriv-smartcharts/chart_app
|
|
100
100
|
flutter pub get
|
|
101
101
|
flutter build web --wasm --release
|
|
102
102
|
|
|
@@ -112,10 +112,10 @@ jobs:
|
|
|
112
112
|
run: rm -rf derivatives-trader/node_modules/@deriv-com/smartcharts-champion/dist
|
|
113
113
|
|
|
114
114
|
- name: Setup SmartCharts
|
|
115
|
-
run: cd smartcharts
|
|
115
|
+
run: cd deriv-smartcharts && npm install
|
|
116
116
|
|
|
117
117
|
- name: Build SmartCharts
|
|
118
|
-
run: cd smartcharts
|
|
118
|
+
run: cd deriv-smartcharts && npm run build -- --output-path ../derivatives-trader/node_modules/@deriv-com/smartcharts-champion/dist
|
|
119
119
|
|
|
120
120
|
- name: Build derivatives-trader
|
|
121
121
|
env:
|
|
@@ -154,5 +154,5 @@ jobs:
|
|
|
154
154
|
echo "**Preview URL:** ${{ steps.publish_to_pages_branch.outputs.cf_pages_url }}" >> $GITHUB_STEP_SUMMARY
|
|
155
155
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
156
156
|
echo "**Configuration:**" >> $GITHUB_STEP_SUMMARY
|
|
157
|
-
echo "- smartcharts
|
|
157
|
+
echo "- deriv-smartcharts ref: \`${{ github.event.inputs.smartcharts_ref }}\`" >> $GITHUB_STEP_SUMMARY
|
|
158
158
|
echo "- flutter-chart ref: \`${{ github.event.inputs.flutter_chart_ref }}\`" >> $GITHUB_STEP_SUMMARY
|
|
@@ -10,16 +10,16 @@ jobs:
|
|
|
10
10
|
permissions:
|
|
11
11
|
contents: write
|
|
12
12
|
steps:
|
|
13
|
-
- name: Checkout smartcharts
|
|
14
|
-
uses: 'deriv-com/smartcharts
|
|
13
|
+
- name: Checkout deriv-smartcharts
|
|
14
|
+
uses: 'deriv-com/deriv-smartcharts/.github/actions/checkout@master'
|
|
15
15
|
with:
|
|
16
|
-
repository: 'deriv-com/smartcharts
|
|
17
|
-
path: smartcharts
|
|
16
|
+
repository: 'deriv-com/deriv-smartcharts'
|
|
17
|
+
path: deriv-smartcharts
|
|
18
18
|
ref: master
|
|
19
19
|
|
|
20
20
|
- name: Custom flutter-chart
|
|
21
21
|
id: flutter_chart
|
|
22
|
-
uses: 'deriv-com/smartcharts
|
|
22
|
+
uses: 'deriv-com/deriv-smartcharts/.github/actions/checkout@master'
|
|
23
23
|
with:
|
|
24
24
|
repository: 'deriv-com/flutter-chart'
|
|
25
25
|
path: flutter-chart
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
cache: true
|
|
32
32
|
- name: Build flutter
|
|
33
33
|
run: |
|
|
34
|
-
cd smartcharts
|
|
34
|
+
cd deriv-smartcharts/chart_app
|
|
35
35
|
flutter pub get
|
|
36
36
|
flutter build web --wasm --release
|
|
37
37
|
|
|
@@ -40,14 +40,14 @@ jobs:
|
|
|
40
40
|
with:
|
|
41
41
|
node-version: 22.x
|
|
42
42
|
|
|
43
|
-
- name: Setup smartcharts
|
|
44
|
-
run: cd smartcharts
|
|
43
|
+
- name: Setup deriv-smartcharts
|
|
44
|
+
run: cd deriv-smartcharts && npm install
|
|
45
45
|
|
|
46
|
-
- name: Build smartcharts
|
|
47
|
-
run: cd smartcharts
|
|
48
|
-
- name: Release smartcharts
|
|
46
|
+
- name: Build deriv-smartcharts
|
|
47
|
+
run: cd deriv-smartcharts && npm run build
|
|
48
|
+
- name: Release deriv-smartcharts
|
|
49
49
|
env:
|
|
50
50
|
CI: true
|
|
51
51
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
52
52
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
53
|
-
run: cd smartcharts
|
|
53
|
+
run: cd deriv-smartcharts && npx semantic-release
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
## [1.9.
|
|
1
|
+
## [1.9.13](https://github.com/deriv-com/deriv-smartcharts/compare/v1.9.12...v1.9.13) (2026-05-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### ♻️ Chores
|
|
5
|
+
|
|
6
|
+
* **deps:** bump picomatch from 4.0.3 to 4.0.4 ([#221](https://github.com/deriv-com/deriv-smartcharts/issues/221)) ([3819c93](https://github.com/deriv-com/deriv-smartcharts/commit/3819c93d47774840bb0d5abf45e82aac2db112c5))
|
|
7
|
+
* **deps:** npm audit fix ([#225](https://github.com/deriv-com/deriv-smartcharts/issues/225)) ([4685484](https://github.com/deriv-com/deriv-smartcharts/commit/46854842c0329d48c23758e87629cb8136db41d8))
|
|
8
|
+
* rename repo to deriv-smartcharts ([#229](https://github.com/deriv-com/deriv-smartcharts/issues/229)) ([ed6085d](https://github.com/deriv-com/deriv-smartcharts/commit/ed6085d4b116ee87365155d61f18b4d8df9059c9))
|
|
2
9
|
|
|
3
10
|
|
|
4
11
|
### 🐛 Bug Fixes
|
|
5
12
|
|
|
6
|
-
*
|
|
13
|
+
* externalize react/jsx-runtime and react/jsx-dev-runtime in webpack build ([#231](https://github.com/deriv-com/deriv-smartcharts/issues/231)) ([8f44372](https://github.com/deriv-com/deriv-smartcharts/commit/8f44372527e85e5914ed4cee50f0248807298f4b))
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Before running or contribute to this project, you need to have the setup of the
|
|
|
29
29
|
2. **Clone using SSH**
|
|
30
30
|
|
|
31
31
|
```sh
|
|
32
|
-
git@github.com:deriv-com/smartcharts
|
|
32
|
+
git@github.com:deriv-com/deriv-smartcharts.git
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
3. **Enter project directory**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return e.active;{let t=await e.update();return t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return;throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&t()})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let f=new n;return f.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2wasm",renderer:"skwasm",mainWasmPath:"main.dart.wasm",jsSupportRuntimePath:"main.dart.mjs"},{compileTarget:"dart2js",renderer:"canvaskit",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"
|
|
1
|
+
(()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return e.active;{let t=await e.update();return t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return;throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&t()})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let f=new n;return f.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2wasm",renderer:"skwasm",mainWasmPath:"main.dart.wasm",jsSupportRuntimePath:"main.dart.mjs"},{compileTarget:"dart2js",renderer:"canvaskit",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"675413291"}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"
|
|
1
|
+
"use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"main.dart.mjs":"94859083c0ee911aa471c738e3297c47","assets/AssetManifest.json":"d178679794c5a50c28e80c4443537202","assets/AssetManifest.bin.json":"5675a7e5472a23fd8b159aab872571cf","assets/packages/deriv_chart/assets/fonts/quill_icons.ttf":"8e9f63f02fa78152f14dd9b5b5c4e92a","assets/shaders/ink_sparkle.frag":"ecc85a2e95f5e9f53123dcaf8cb9b6ce","assets/fonts/IBMPlexSans-Regular.ttf":"dbfe87ffcd1ee8f2ba4a8a5e5a8c8295","assets/fonts/IBMPlexSans-Bold.ttf":"403ddc75d4ef790140292b1c0f1c769e","assets/fonts/MaterialIcons-Regular.otf":"d6db5dff634f0098a8fec881f24fa1e7","assets/AssetManifest.bin":"5672adaf69f40004282a9a781fc45ab5","assets/NOTICES":"a73f0d601fa6d9e4745b1bbfbf3fec8a","assets/FontManifest.json":"47d2d8f0fc8d1b996ec6f4b9a2302317","favicon.png":"5dcef449791fa27946b3d35ad8803796","manifest.json":"a06b13fcde5dfd1e240278072e116d12","index.html":"8cc9c1f7b0f0cbe97e71908afd543d19","/":"8cc9c1f7b0f0cbe97e71908afd543d19","canvaskit/skwasm.js.symbols":"262f4827a1317abb59d71d6c587a93e2","canvaskit/chromium/canvaskit.js.symbols":"a012ed99ccba193cf96bb2643003f6fc","canvaskit/chromium/canvaskit.wasm":"b1ac05b29c127d86df4bcfbf50dd902a","canvaskit/chromium/canvaskit.js":"671c6b4f8fcc199dcc551c7bb125f239","canvaskit/canvaskit.js.symbols":"48c83a2ce573d9692e8d970e288d75f7","canvaskit/skwasm.wasm":"9f0c0c02b82a910d12ce0543ec130e60","canvaskit/canvaskit.wasm":"1f237a213d7370cf95f443d896176460","canvaskit/skwasm.worker.js":"89990e8c92bcb123999aa81f7e203b1c","canvaskit/canvaskit.js":"66177750aff65a66cb07bb44b8c6422b","canvaskit/skwasm.js":"694fda5704053957c2594de355805228","flutter.js":"f393d3c16b631f36852323de8e583132","flutter_bootstrap.js":"71c48f52e5c05e68de683ab0242a0601","main.dart.wasm":"c19b19200d2f57b730d809f2b3912424","main.dart.js":"681b0df43ce0e7485726a0f6fcb98ce9","version.json":"1756499d77011c0be564a414e567db76"},CORE=["main.dart.js","main.dart.wasm","main.dart.mjs","index.html","flutter_bootstrap.js","assets/AssetManifest.bin.json","assets/FontManifest.json"];async function downloadOffline(){var a=[],e=await caches.open(CACHE_NAME),s={};for(var t of await e.keys()){var c=t.url.substring(origin.length+1);""==c&&(c="/"),s[c]=!0}for(var n of Object.keys(RESOURCES))s[n]||a.push(n);return e.addAll(a)}function onlineFirst(a){return a.respondWith(fetch(a.request).then(e=>caches.open(CACHE_NAME).then(s=>(s.put(a.request,e.clone()),e))).catch(e=>caches.open(CACHE_NAME).then(s=>s.match(a.request).then(a=>{if(null!=a)return a;throw e}))))}self.addEventListener("install",a=>(self.skipWaiting(),a.waitUntil(caches.open(TEMP).then(a=>a.addAll(CORE.map(a=>new Request(a,{cache:"reload"}))))))),self.addEventListener("activate",function(a){return a.waitUntil(async function(){try{var a=await caches.open(CACHE_NAME),e=await caches.open(TEMP),s=await caches.open(MANIFEST),t=await s.match("manifest");if(!t){for(var c of(await caches.delete(CACHE_NAME),a=await caches.open(CACHE_NAME),await e.keys())){var n=await e.match(c);await a.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}var f=await t.json(),i=self.location.origin;for(var c of await a.keys()){var d=c.url.substring(i.length+1);""==d&&(d="/"),RESOURCES[d]&&RESOURCES[d]==f[d]||await a.delete(c)}for(var c of await e.keys()){n=await e.match(c);await a.put(c,n)}return await caches.delete(TEMP),await s.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}catch(a){console.error("Failed to upgrade service worker: "+a),await caches.delete(CACHE_NAME),await caches.delete(TEMP),await caches.delete(MANIFEST)}}())}),self.addEventListener("fetch",a=>{if("GET"===a.request.method){var e=self.location.origin,s=a.request.url.substring(e.length+1);if(-1!=s.indexOf("?v=")&&(s=s.split("?v=")[0]),(a.request.url==e||a.request.url.startsWith(e+"/#")||""==s)&&(s="/"),RESOURCES[s])return"/"==s?onlineFirst(a):void a.respondWith(caches.open(CACHE_NAME).then(e=>e.match(a.request).then(s=>s||fetch(a.request).then(s=>(s&&Boolean(s.ok)&&e.put(a.request,s.clone()),s)))))}}),self.addEventListener("message",a=>{"skipWaiting"!==a.data?"downloadOffline"!==a.data||downloadOffline():self.skipWaiting()});
|