Merge c6f9d4686f into b47d132839
				
					
				
			This commit is contained in:
		
						commit
						7723e016d6
					
				
							
								
								
									
										1
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -50,6 +50,7 @@ declare module '@vue/runtime-core' { | ||||
|     'CModal.demo': typeof import('./src/ui/c-modal/c-modal.demo.vue')['default'] | ||||
|     CModalValue: typeof import('./src/ui/c-modal-value/c-modal-value.vue')['default'] | ||||
|     'CModalValue.demo': typeof import('./src/ui/c-modal-value/c-modal-value.demo.vue')['default'] | ||||
|     CMonacoEditor: typeof import('./src/ui/c-monaco-editor/c-monaco-editor.vue')['default'] | ||||
|     CollapsibleToolMenu: typeof import('./src/components/CollapsibleToolMenu.vue')['default'] | ||||
|     ColorConverter: typeof import('./src/tools/color-converter/color-converter.vue')['default'] | ||||
|     ColoredCard: typeof import('./src/components/ColoredCard.vue')['default'] | ||||
|  | ||||
| @ -36,6 +36,7 @@ | ||||
|     "release": "node ./scripts/release.mjs" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@guolao/vue-monaco-editor": "^1.4.1", | ||||
|     "@it-tools/bip39": "^0.0.4", | ||||
|     "@it-tools/oggen": "^1.3.0", | ||||
|     "@regexper/render": "^1.0.0", | ||||
| @ -54,7 +55,7 @@ | ||||
|     "bcryptjs": "^2.4.3", | ||||
|     "change-case": "^4.1.2", | ||||
|     "colord": "^2.9.3", | ||||
|     "composerize-ts": "^0.6.2", | ||||
|     "composerize": "^1.6.12", | ||||
|     "country-code-lookup": "^0.1.0", | ||||
|     "cron-validator": "^1.3.1", | ||||
|     "cronstrue": "^2.26.0", | ||||
|  | ||||
							
								
								
									
										172
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										172
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @ -5,6 +5,9 @@ settings: | ||||
|   excludeLinksFromLockfile: false | ||||
| 
 | ||||
| dependencies: | ||||
|   '@guolao/vue-monaco-editor': | ||||
|     specifier: ^1.4.1 | ||||
|     version: 1.5.4(monaco-editor@0.43.0)(vue@3.3.4) | ||||
|   '@it-tools/bip39': | ||||
|     specifier: ^0.0.4 | ||||
|     version: 0.0.4 | ||||
| @ -59,9 +62,9 @@ dependencies: | ||||
|   colord: | ||||
|     specifier: ^2.9.3 | ||||
|     version: 2.9.3 | ||||
|   composerize-ts: | ||||
|     specifier: ^0.6.2 | ||||
|     version: 0.6.2 | ||||
|   composerize: | ||||
|     specifier: ^1.6.12 | ||||
|     version: 1.6.12 | ||||
|   country-code-lookup: | ||||
|     specifier: ^0.1.0 | ||||
|     version: 0.1.0 | ||||
| @ -2180,6 +2183,22 @@ packages: | ||||
|     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | ||||
|     dev: true | ||||
| 
 | ||||
|   /@guolao/vue-monaco-editor@1.5.4(monaco-editor@0.43.0)(vue@3.3.4): | ||||
|     resolution: {integrity: sha512-eyBAqxJeDpV4mZYZSpNvh3xUgKCld5eEe0dBtjJhsy2+L0MB6PYFZ/FbPHNwskgp2RoIpfn1DLrIhXXE3lVbwQ==} | ||||
|     peerDependencies: | ||||
|       '@vue/composition-api': ^1.7.1 | ||||
|       monaco-editor: '>=0.43.0' | ||||
|       vue: ^2.6.14 || >=3.0.0 | ||||
|     peerDependenciesMeta: | ||||
|       '@vue/composition-api': | ||||
|         optional: true | ||||
|     dependencies: | ||||
|       '@monaco-editor/loader': 1.4.0(monaco-editor@0.43.0) | ||||
|       monaco-editor: 0.43.0 | ||||
|       vue: 3.3.4 | ||||
|       vue-demi: 0.14.10(vue@3.3.4) | ||||
|     dev: false | ||||
| 
 | ||||
|   /@humanwhocodes/config-array@0.11.10: | ||||
|     resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} | ||||
|     engines: {node: '>=10.10.0'} | ||||
| @ -2447,6 +2466,15 @@ packages: | ||||
|     resolution: {integrity: sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /@monaco-editor/loader@1.4.0(monaco-editor@0.43.0): | ||||
|     resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} | ||||
|     peerDependencies: | ||||
|       monaco-editor: '>= 0.21.0 < 1' | ||||
|     dependencies: | ||||
|       monaco-editor: 0.43.0 | ||||
|       state-local: 1.0.7 | ||||
|     dev: false | ||||
| 
 | ||||
|   /@nodelib/fs.scandir@2.1.5: | ||||
|     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} | ||||
|     engines: {node: '>= 8'} | ||||
| @ -3412,7 +3440,7 @@ packages: | ||||
|     dependencies: | ||||
|       '@unhead/dom': 0.5.1 | ||||
|       '@unhead/schema': 0.5.1 | ||||
|       '@vueuse/shared': 11.0.3(vue@3.3.4) | ||||
|       '@vueuse/shared': 11.1.0(vue@3.3.4) | ||||
|       unhead: 0.5.1 | ||||
|       vue: 3.3.4 | ||||
|     transitivePeerDependencies: | ||||
| @ -4054,8 +4082,8 @@ packages: | ||||
|       - vue | ||||
|     dev: false | ||||
| 
 | ||||
|   /@vueuse/shared@11.0.3(vue@3.3.4): | ||||
|     resolution: {integrity: sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==} | ||||
|   /@vueuse/shared@11.1.0(vue@3.3.4): | ||||
|     resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} | ||||
|     dependencies: | ||||
|       vue-demi: 0.14.10(vue@3.3.4) | ||||
|     transitivePeerDependencies: | ||||
| @ -4112,6 +4140,14 @@ packages: | ||||
|       - supports-color | ||||
|     dev: true | ||||
| 
 | ||||
|   /ajv-errors@3.0.0(ajv@8.12.0): | ||||
|     resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} | ||||
|     peerDependencies: | ||||
|       ajv: ^8.0.1 | ||||
|     dependencies: | ||||
|       ajv: 8.12.0 | ||||
|     dev: false | ||||
| 
 | ||||
|   /ajv@6.12.6: | ||||
|     resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} | ||||
|     dependencies: | ||||
| @ -4128,7 +4164,6 @@ packages: | ||||
|       json-schema-traverse: 1.0.0 | ||||
|       require-from-string: 2.0.2 | ||||
|       uri-js: 4.4.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /ansi-colors@4.1.3: | ||||
|     resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} | ||||
| @ -4167,6 +4202,7 @@ packages: | ||||
|     resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} | ||||
|     dependencies: | ||||
|       sprintf-js: 1.0.3 | ||||
|     dev: true | ||||
| 
 | ||||
|   /argparse@2.0.1: | ||||
|     resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} | ||||
| @ -4299,6 +4335,7 @@ packages: | ||||
|     dependencies: | ||||
|       balanced-match: 1.0.2 | ||||
|       concat-map: 0.0.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /brace-expansion@2.0.1: | ||||
|     resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} | ||||
| @ -4588,11 +4625,6 @@ packages: | ||||
|       delayed-stream: 1.0.0 | ||||
|     dev: true | ||||
| 
 | ||||
|   /commander@10.0.0: | ||||
|     resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} | ||||
|     engines: {node: '>=14'} | ||||
|     dev: false | ||||
| 
 | ||||
|   /commander@2.20.3: | ||||
|     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} | ||||
| 
 | ||||
| @ -4610,19 +4642,30 @@ packages: | ||||
|     resolution: {integrity: sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==} | ||||
|     dev: false | ||||
| 
 | ||||
|   /composerize-ts@0.6.2: | ||||
|     resolution: {integrity: sha512-8tw5p/FBxg77ubjVftaXA+pknWbkUgbZ4rbZZs2yFUsj2yvO38IvtfpGLfaJ9mGFj324lFEr/OU9xULrKSF9Ag==} | ||||
|   /composerize@1.6.12: | ||||
|     resolution: {integrity: sha512-kPIEgkU2TRT1t4ZrBPUmmRr7RGA0E5JYx0rAgpWBRWNjZRDr2FV/8ne8S8iLp7oaqEX1ubDqZPEQvHaDM9d7cg==} | ||||
|     hasBin: true | ||||
|     dependencies: | ||||
|       commander: 10.0.0 | ||||
|       deepmerge-ts: 5.1.0 | ||||
|       flex-js: 1.0.5 | ||||
|       ip-cidr: 3.1.0 | ||||
|       set-value: 4.1.0 | ||||
|       yamljs: 0.3.0 | ||||
|       composeverter: 1.7.2 | ||||
|       core-js: 2.6.12 | ||||
|       deepmerge: 2.2.1 | ||||
|       invariant: 2.2.4 | ||||
|       yaml: 1.10.2 | ||||
|       yargs-parser: 13.1.2 | ||||
|     dev: false | ||||
| 
 | ||||
|   /composeverter@1.7.2: | ||||
|     resolution: {integrity: sha512-gRSCkSU8wJQvmTHQ23wBd2gCdUsns95k3lL7YszZBu5EyA3eac46mI7nVgvk1pZTM0mOmj/E5yurtdYkuVNZRA==} | ||||
|     dependencies: | ||||
|       ajv: 8.12.0 | ||||
|       ajv-errors: 3.0.0(ajv@8.12.0) | ||||
|       core-js: 2.6.12 | ||||
|       yaml: 1.10.2 | ||||
|     dev: false | ||||
| 
 | ||||
|   /concat-map@0.0.1: | ||||
|     resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} | ||||
|     dev: true | ||||
| 
 | ||||
|   /config-chain@1.1.13: | ||||
|     resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} | ||||
| @ -4674,6 +4717,12 @@ packages: | ||||
|       browserslist: 4.22.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /core-js@2.6.12: | ||||
|     resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} | ||||
|     deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. | ||||
|     requiresBuild: true | ||||
|     dev: false | ||||
| 
 | ||||
|   /country-code-lookup@0.1.0: | ||||
|     resolution: {integrity: sha512-IOI66HEG+8bXfWPy+sTzuN7161vmDZOHg1wgIPFf3WfD73FeLajnn6C+fnxOIa9RL1WRBDMXQQWW/FOaOYaQ3w==} | ||||
|     dev: false | ||||
| @ -4856,11 +4905,6 @@ packages: | ||||
|     resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /deepmerge-ts@5.1.0: | ||||
|     resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} | ||||
|     engines: {node: '>=16.0.0'} | ||||
|     dev: false | ||||
| 
 | ||||
|   /deepmerge@2.2.1: | ||||
|     resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} | ||||
|     engines: {node: '>=0.10.0'} | ||||
| @ -5724,10 +5768,6 @@ packages: | ||||
|     resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /flex-js@1.0.5: | ||||
|     resolution: {integrity: sha512-Z5uoLzOGtTB/nzaTVVBbwmxOHBzHovAGJHLXE1TUKsQuN1RRWMOWeA08J9RRKtAl9TH9tkaH6fpjA4sLf0DzQw==} | ||||
|     dev: false | ||||
| 
 | ||||
|   /for-each@0.3.3: | ||||
|     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} | ||||
|     dependencies: | ||||
| @ -5794,6 +5834,7 @@ packages: | ||||
| 
 | ||||
|   /fs.realpath@1.0.0: | ||||
|     resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /fsevents@2.3.2: | ||||
|     resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} | ||||
| @ -5905,6 +5946,7 @@ packages: | ||||
|       minimatch: 3.1.2 | ||||
|       once: 1.4.0 | ||||
|       path-is-absolute: 1.0.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /glob@8.1.0: | ||||
|     resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} | ||||
| @ -6223,9 +6265,11 @@ packages: | ||||
|     dependencies: | ||||
|       once: 1.4.0 | ||||
|       wrappy: 1.0.2 | ||||
|     dev: true | ||||
| 
 | ||||
|   /inherits@2.0.4: | ||||
|     resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /ini@1.3.8: | ||||
|     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} | ||||
| @ -6240,20 +6284,10 @@ packages: | ||||
|       side-channel: 1.0.4 | ||||
|     dev: true | ||||
| 
 | ||||
|   /ip-address@7.1.0: | ||||
|     resolution: {integrity: sha512-V9pWC/VJf2lsXqP7IWJ+pe3P1/HCYGBMZrrnT62niLGjAfCbeiwXMUxaeHvnVlz19O27pvXP4azs+Pj/A0x+SQ==} | ||||
|     engines: {node: '>= 10'} | ||||
|   /invariant@2.2.4: | ||||
|     resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} | ||||
|     dependencies: | ||||
|       jsbn: 1.1.0 | ||||
|       sprintf-js: 1.1.2 | ||||
|     dev: false | ||||
| 
 | ||||
|   /ip-cidr@3.1.0: | ||||
|     resolution: {integrity: sha512-HUCn4snshEX1P8cja/IyU3qk8FVDW8T5zZcegDFbu4w7NojmAhk5NcOgj3M8+0fmumo1afJTPDtJlzsxLdOjtg==} | ||||
|     engines: {node: '>=10.0.0'} | ||||
|     dependencies: | ||||
|       ip-address: 7.1.0 | ||||
|       jsbn: 1.1.0 | ||||
|       loose-envify: 1.4.0 | ||||
|     dev: false | ||||
| 
 | ||||
|   /is-alphabetical@1.0.4: | ||||
| @ -6423,11 +6457,6 @@ packages: | ||||
|     resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /is-primitive@3.0.1: | ||||
|     resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} | ||||
|     engines: {node: '>=0.10.0'} | ||||
|     dev: false | ||||
| 
 | ||||
|   /is-regex@1.1.4: | ||||
|     resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} | ||||
|     engines: {node: '>= 0.4'} | ||||
| @ -6579,10 +6608,6 @@ packages: | ||||
|       argparse: 2.0.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /jsbn@1.1.0: | ||||
|     resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} | ||||
|     dev: false | ||||
| 
 | ||||
|   /jsdom@22.0.0: | ||||
|     resolution: {integrity: sha512-p5ZTEb5h+O+iU02t0GfEjAnkdYPrQSkfuTSMkMYyIoMvUNEHsbG0bHHbfXIcfTqD2UfvjQX7mmgiFsyRwGscVw==} | ||||
|     engines: {node: '>=16'} | ||||
| @ -6646,7 +6671,6 @@ packages: | ||||
| 
 | ||||
|   /json-schema-traverse@1.0.0: | ||||
|     resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /json-schema@0.4.0: | ||||
|     resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} | ||||
| @ -6794,6 +6818,13 @@ packages: | ||||
|       is-unicode-supported: 0.1.0 | ||||
|     dev: true | ||||
| 
 | ||||
|   /loose-envify@1.4.0: | ||||
|     resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} | ||||
|     hasBin: true | ||||
|     dependencies: | ||||
|       js-tokens: 4.0.0 | ||||
|     dev: false | ||||
| 
 | ||||
|   /loupe@2.3.6: | ||||
|     resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} | ||||
|     dependencies: | ||||
| @ -7006,6 +7037,7 @@ packages: | ||||
|     resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} | ||||
|     dependencies: | ||||
|       brace-expansion: 1.1.11 | ||||
|     dev: true | ||||
| 
 | ||||
|   /minimatch@5.1.6: | ||||
|     resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} | ||||
| @ -7252,6 +7284,7 @@ packages: | ||||
|     resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} | ||||
|     dependencies: | ||||
|       wrappy: 1.0.2 | ||||
|     dev: true | ||||
| 
 | ||||
|   /onetime@5.1.2: | ||||
|     resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} | ||||
| @ -7427,6 +7460,7 @@ packages: | ||||
|   /path-is-absolute@1.0.1: | ||||
|     resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} | ||||
|     engines: {node: '>=0.10.0'} | ||||
|     dev: true | ||||
| 
 | ||||
|   /path-key@3.1.1: | ||||
|     resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} | ||||
| @ -7768,7 +7802,6 @@ packages: | ||||
|   /punycode@2.3.0: | ||||
|     resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} | ||||
|     engines: {node: '>=6'} | ||||
|     dev: true | ||||
| 
 | ||||
|   /punycode@2.3.1: | ||||
|     resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} | ||||
| @ -7924,7 +7957,6 @@ packages: | ||||
|   /require-from-string@2.0.2: | ||||
|     resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} | ||||
|     engines: {node: '>=0.10.0'} | ||||
|     dev: true | ||||
| 
 | ||||
|   /require-main-filename@2.0.0: | ||||
|     resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} | ||||
| @ -8162,14 +8194,6 @@ packages: | ||||
|       has-property-descriptors: 1.0.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /set-value@4.1.0: | ||||
|     resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} | ||||
|     engines: {node: '>=11.0'} | ||||
|     dependencies: | ||||
|       is-plain-object: 2.0.4 | ||||
|       is-primitive: 3.0.1 | ||||
|     dev: false | ||||
| 
 | ||||
|   /shebang-command@2.0.0: | ||||
|     resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} | ||||
|     engines: {node: '>=8'} | ||||
| @ -8294,10 +8318,7 @@ packages: | ||||
| 
 | ||||
|   /sprintf-js@1.0.3: | ||||
|     resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} | ||||
| 
 | ||||
|   /sprintf-js@1.1.2: | ||||
|     resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} | ||||
|     dev: false | ||||
|     dev: true | ||||
| 
 | ||||
|   /sql-formatter@13.0.0: | ||||
|     resolution: {integrity: sha512-V21cVvge4rhn9Fa7K/fTKcmPM+x1yee6Vhq8ZwgaWh3VPBqApgsaoFB5kLAhiqRo5AmSaRyLU7LIdgnNwH01/w==} | ||||
| @ -8312,6 +8333,10 @@ packages: | ||||
|     resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /state-local@1.0.7: | ||||
|     resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} | ||||
|     dev: false | ||||
| 
 | ||||
|   /std-env@3.3.3: | ||||
|     resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} | ||||
|     dev: true | ||||
| @ -9039,7 +9064,6 @@ packages: | ||||
|     resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} | ||||
|     dependencies: | ||||
|       punycode: 2.3.0 | ||||
|     dev: true | ||||
| 
 | ||||
|   /url-parse@1.5.10: | ||||
|     resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} | ||||
| @ -9660,6 +9684,7 @@ packages: | ||||
| 
 | ||||
|   /wrappy@1.0.2: | ||||
|     resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} | ||||
|     dev: true | ||||
| 
 | ||||
|   /ws@8.13.0: | ||||
|     resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} | ||||
| @ -9725,15 +9750,20 @@ packages: | ||||
|       yaml: 2.2.1 | ||||
|     dev: true | ||||
| 
 | ||||
|   /yaml@1.10.2: | ||||
|     resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} | ||||
|     engines: {node: '>= 6'} | ||||
|     dev: false | ||||
| 
 | ||||
|   /yaml@2.2.1: | ||||
|     resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} | ||||
|     engines: {node: '>= 14'} | ||||
| 
 | ||||
|   /yamljs@0.3.0: | ||||
|     resolution: {integrity: sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==} | ||||
|   /yargs-parser@13.1.2: | ||||
|     resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} | ||||
|     dependencies: | ||||
|       argparse: 1.0.10 | ||||
|       glob: 7.2.3 | ||||
|       camelcase: 5.3.1 | ||||
|       decamelize: 1.2.0 | ||||
|     dev: false | ||||
| 
 | ||||
|   /yargs-parser@18.1.3: | ||||
|  | ||||
| @ -2,6 +2,9 @@ import { createApp } from 'vue'; | ||||
| import { createPinia } from 'pinia'; | ||||
| import { createHead } from '@vueuse/head'; | ||||
| 
 | ||||
| import { install as VueMonacoEditorPlugin, loader } from '@guolao/vue-monaco-editor'; | ||||
| import * as monaco from 'monaco-editor'; | ||||
| 
 | ||||
| import { registerSW } from 'virtual:pwa-register'; | ||||
| import shadow from 'vue-shadow-dom'; | ||||
| import { plausible } from './plugins/plausible.plugin'; | ||||
| @ -14,10 +17,14 @@ import App from './App.vue'; | ||||
| import router from './router'; | ||||
| import { i18nPlugin } from './plugins/i18n.plugin'; | ||||
| 
 | ||||
| // loaded monaco-editor from `node_modules`
 | ||||
| loader.config({ monaco }); | ||||
| 
 | ||||
| registerSW(); | ||||
| 
 | ||||
| const app = createApp(App); | ||||
| 
 | ||||
| app.use(VueMonacoEditorPlugin); | ||||
| app.use(createPinia()); | ||||
| app.use(createHead()); | ||||
| app.use(i18nPlugin); | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| declare module 'composerize' { | ||||
|   const composerize: (arg: string) => string; | ||||
|   const composerize: (commands: string, existingDockerComposeFile?: string, conversion?: string, indent?: number) => string; | ||||
|   export default composerize; | ||||
| } | ||||
|  | ||||
| @ -1,48 +1,94 @@ | ||||
| <script setup lang="ts"> | ||||
| import { MessageType, composerize } from 'composerize-ts'; | ||||
| import { withDefaultOnError } from '@/utils/defaults'; | ||||
| import composerize from 'composerize'; | ||||
| import { useDownloadFileFromBase64 } from '@/composable/downloadBase64'; | ||||
| import { textToBase64 } from '@/utils/base64'; | ||||
| import TextareaCopyable from '@/components/TextareaCopyable.vue'; | ||||
| 
 | ||||
| const dockerRun = ref( | ||||
| const dockerRuns = ref( | ||||
|   'docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx', | ||||
| ); | ||||
| const indentSize = useStorage('docker-run-to-compose:indent-size', 4); | ||||
| 
 | ||||
| const conversionResult = computed(() => | ||||
|   withDefaultOnError(() => composerize(dockerRun.value.trim()), { yaml: '', messages: [] }), | ||||
| const existingDockerComposeFile = ref( | ||||
|   '', | ||||
| ); | ||||
| const format = useStorage('docker-run-to-compose:format', 'latest'); | ||||
| const formatOptions = [ | ||||
|   { value: 'v2x', label: 'V2 - 2.x' }, | ||||
|   { value: 'v3x', label: 'V2 - 3.x' }, | ||||
|   { value: 'latest', label: 'CommonSpec' }, | ||||
| ]; | ||||
| 
 | ||||
| const conversionResult = computed(() => { | ||||
|   try { | ||||
|     return { yaml: composerize(dockerRuns.value.trim(), existingDockerComposeFile.value, format.value, indentSize.value), errors: [] }; | ||||
|   } | ||||
|   catch (e: any) { | ||||
|     return { yaml: '#see error messages', errors: e.toString().split('\n') }; | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| const dockerCompose = computed(() => conversionResult.value.yaml); | ||||
| const notImplemented = computed(() => | ||||
|   conversionResult.value.messages.filter(msg => msg.type === MessageType.notImplemented).map(msg => msg.value), | ||||
| ); | ||||
| const notComposable = computed(() => | ||||
|   conversionResult.value.messages.filter(msg => msg.type === MessageType.notTranslatable).map(msg => msg.value), | ||||
| ); | ||||
| const errors = computed(() => | ||||
|   conversionResult.value.messages | ||||
|     .filter(msg => msg.type === MessageType.errorDuringConversion) | ||||
|     .map(msg => msg.value), | ||||
| ); | ||||
| const errors = computed(() => conversionResult.value.errors); | ||||
| 
 | ||||
| const dockerComposeBase64 = computed(() => `data:application/yaml;base64,${textToBase64(dockerCompose.value)}`); | ||||
| const { download } = useDownloadFileFromBase64({ source: dockerComposeBase64, filename: 'docker-compose.yml' }); | ||||
| 
 | ||||
| const MONACO_EDITOR_OPTIONS = { | ||||
|   automaticLayout: true, | ||||
|   formatOnType: true, | ||||
|   formatOnPaste: true, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <div> | ||||
|     <c-input-text | ||||
|       v-model:value="dockerRun" | ||||
|       label="Your docker run command:" | ||||
|       v-model:value="dockerRuns" | ||||
|       label="Your docker run command(s):" | ||||
|       style="font-family: monospace" | ||||
|       multiline | ||||
|       raw-text | ||||
|       monospace | ||||
|       placeholder="Your docker run command to convert..." | ||||
|       rows="3" | ||||
|       placeholder="Your docker run command(s) to convert..." | ||||
|       rows="4" | ||||
|     /> | ||||
| 
 | ||||
|     <n-divider /> | ||||
| 
 | ||||
|     <c-label label="Eventually, paste your existing Docker Compose:"> | ||||
|       <div relative w-full> | ||||
|         <c-monaco-editor | ||||
|           v-model:value="existingDockerComposeFile" | ||||
|           theme="vs-dark" | ||||
|           language="yaml" | ||||
|           height="100px" | ||||
|           :options="MONACO_EDITOR_OPTIONS" | ||||
|         /> | ||||
|       </div> | ||||
|     </c-label> | ||||
| 
 | ||||
|     <n-divider /> | ||||
| 
 | ||||
|     <n-grid cols="4" x-gap="12" w-full> | ||||
|       <n-gi span="2"> | ||||
|         <c-select | ||||
|           v-model:value="format" | ||||
|           label-position="top" | ||||
|           label="Docker Compose format:" | ||||
|           :options="formatOptions" | ||||
|           placeholder="Select Docker Compose format" | ||||
|         /> | ||||
|       </n-gi> | ||||
|       <n-gi span="2"> | ||||
|         <n-form-item label="Indent size:" label-placement="top" label-width="100" :show-feedback="false"> | ||||
|           <n-input-number v-model:value="indentSize" min="0" max="10" w-100px /> | ||||
|         </n-form-item> | ||||
|       </n-gi> | ||||
|     </n-grid> | ||||
| 
 | ||||
|     <n-divider /> | ||||
| 
 | ||||
|     <TextareaCopyable :value="dockerCompose" language="yaml" /> | ||||
| 
 | ||||
|     <div mt-5 flex justify-center> | ||||
| @ -51,30 +97,6 @@ const { download } = useDownloadFileFromBase64({ source: dockerComposeBase64, fi | ||||
|       </c-button> | ||||
|     </div> | ||||
| 
 | ||||
|     <div v-if="notComposable.length > 0"> | ||||
|       <n-alert title="This options are not translatable to docker-compose" type="info" mt-5> | ||||
|         <ul> | ||||
|           <li v-for="(message, index) of notComposable" :key="index"> | ||||
|             {{ message }} | ||||
|           </li> | ||||
|         </ul> | ||||
|       </n-alert> | ||||
|     </div> | ||||
| 
 | ||||
|     <div v-if="notImplemented.length > 0"> | ||||
|       <n-alert | ||||
|         title="This options are not yet implemented and therefore haven't been translated to docker-compose" | ||||
|         type="warning" | ||||
|         mt-5 | ||||
|       > | ||||
|         <ul> | ||||
|           <li v-for="(message, index) of notImplemented" :key="index"> | ||||
|             {{ message }} | ||||
|           </li> | ||||
|         </ul> | ||||
|       </n-alert> | ||||
|     </div> | ||||
| 
 | ||||
|     <div v-if="errors.length > 0"> | ||||
|       <n-alert title="The following errors occured" type="error" mt-5> | ||||
|         <ul> | ||||
|  | ||||
							
								
								
									
										124
									
								
								src/ui/c-monaco-editor/c-monaco-editor.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								src/ui/c-monaco-editor/c-monaco-editor.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,124 @@ | ||||
| <script setup lang="ts"> | ||||
| import * as monacoEditor from 'monaco-editor'; | ||||
| import type { MonacoEditor } from '@guolao/vue-monaco-editor'; | ||||
| import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; | ||||
| import JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; | ||||
| import CssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; | ||||
| import HtmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; | ||||
| import TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; | ||||
| import { useStyleStore } from '@/stores/style.store'; | ||||
| 
 | ||||
| const props = withDefaults(defineProps<EditorProps>(), { | ||||
|   theme: 'vs', | ||||
|   options: () => ({}), | ||||
|   overrideServices: () => ({}), | ||||
|   saveViewState: true, | ||||
|   width: '100%', | ||||
|   height: '100%', | ||||
| }); | ||||
| 
 | ||||
| const emits = defineEmits<{ | ||||
|   (e: 'update:value', value: string | undefined): void | ||||
|   (e: 'beforeMount', monaco: MonacoEditor): void | ||||
|   (e: 'mount', editor: monacoEditor.editor.IStandaloneCodeEditor, monaco: MonacoEditor): void | ||||
|   (e: 'change', value: string | undefined, event: monacoEditor.editor.IModelContentChangedEvent): void | ||||
|   (e: 'validate', markers: monacoEditor.editor.IMarker[]): void | ||||
| }>(); | ||||
| 
 | ||||
| interface MonacoEnvironment { | ||||
|   getWorker(_: any, label: string): Worker | ||||
| } | ||||
| // eslint-disable-next-line @typescript-eslint/no-namespace | ||||
| declare module globalThis { | ||||
|   let MonacoEnvironment: MonacoEnvironment; | ||||
| } | ||||
| 
 | ||||
| const value = useVModel(props, 'value', emits); | ||||
| 
 | ||||
| globalThis.MonacoEnvironment = { | ||||
|   getWorker(_: any, label: string) { | ||||
|     if (label === 'json') { | ||||
|       return new JsonWorker(); | ||||
|     } | ||||
|     if (label === 'css' || label === 'scss' || label === 'less') { | ||||
|       return new CssWorker(); | ||||
|     } | ||||
|     if (label === 'html' || label === 'handlebars' || label === 'razor') { | ||||
|       return new HtmlWorker(); | ||||
|     } | ||||
|     if (label === 'typescript' || label === 'javascript') { | ||||
|       return new TsWorker(); | ||||
|     } | ||||
|     return new EditorWorker(); | ||||
|   }, | ||||
| }; | ||||
| 
 | ||||
| export interface EditorProps { | ||||
|   defaultValue?: string | ||||
|   defaultPath?: string | ||||
|   defaultLanguage?: string | ||||
|   value?: string | ||||
|   language?: string | ||||
|   path?: string | ||||
| 
 | ||||
|   /* === */ | ||||
| 
 | ||||
|   theme: 'vs' | string | ||||
|   line?: number | ||||
|   options?: monacoEditor.editor.IStandaloneEditorConstructionOptions | ||||
|   overrideServices?: monacoEditor.editor.IEditorOverrideServices | ||||
|   saveViewState?: boolean | ||||
| 
 | ||||
|   /* === */ | ||||
| 
 | ||||
|   width?: number | string | ||||
|   height?: number | string | ||||
|   className?: string | ||||
| } | ||||
| 
 | ||||
| monacoEditor.editor.defineTheme('it-tools-dark', { | ||||
|   base: 'vs-dark', | ||||
|   inherit: true, | ||||
|   rules: [], | ||||
|   colors: { | ||||
|     'editor.background': '#00000000', | ||||
|   }, | ||||
| }); | ||||
| 
 | ||||
| monacoEditor.editor.defineTheme('it-tools-light', { | ||||
|   base: 'vs', | ||||
|   inherit: true, | ||||
|   rules: [], | ||||
|   colors: { | ||||
|     'editor.background': '#00000000', | ||||
|   }, | ||||
| }); | ||||
| 
 | ||||
| const styleStore = useStyleStore(); | ||||
| 
 | ||||
| watch( | ||||
|   () => styleStore.isDarkTheme, | ||||
|   isDarkTheme => monacoEditor.editor.setTheme(isDarkTheme ? 'it-tools-dark' : 'it-tools-light'), | ||||
|   { immediate: true }, | ||||
| ); | ||||
| 
 | ||||
| const attrs = useAttrs(); | ||||
| const inheritedAttrs = { ...attrs, ...props }; | ||||
| </script> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| export default { | ||||
|   inheritAttrs: false, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <vue-monaco-editor | ||||
|     v-bind="inheritedAttrs" | ||||
|     v-model:value="value" | ||||
|     @before-mount="(monaco: MonacoEditor) => emits('beforeMount', monaco)" | ||||
|     @mount="(editor: monacoEditor.editor.IStandaloneCodeEditor, monaco: MonacoEditor) => emits('mount', editor, monaco)" | ||||
|     @change="(value: string | undefined, event: monacoEditor.editor.IModelContentChangedEvent) => emits('change', value, event)" | ||||
|     @validate="(markers: monacoEditor.editor.IMarker[]) => emits('validate', markers)" | ||||
|   /> | ||||
| </template> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user