diff --git a/ifc-js/package.json b/ifc-js/package.json index 3409f36..6c754a6 100644 --- a/ifc-js/package.json +++ b/ifc-js/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/jupyter/package.json b/jupyter/package.json index 963e1ab..2df619a 100644 --- a/jupyter/package.json +++ b/jupyter/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/jupyter/pnpm-lock.yaml b/jupyter/pnpm-lock.yaml index b8e51a0..8b4b7cf 100644 --- a/jupyter/pnpm-lock.yaml +++ b/jupyter/pnpm-lock.yaml @@ -2,7 +2,7 @@ lockfileVersion: 5.4 specifiers: '@ownclouders/eslint-config': 0.0.1 - '@ownclouders/extension-sdk': file:../../web/packages/extension-sdk + '@ownclouders/extension-sdk': file:../temp-extension-sdk '@ownclouders/prettier-config': 0.0.1 '@ownclouders/tsconfig': 0.0.4 '@vitejs/plugin-vue': 4.0.0 @@ -22,7 +22,7 @@ dependencies: devDependencies: '@ownclouders/eslint-config': 0.0.1_eslint@8.31.0 - '@ownclouders/extension-sdk': file:../../web/packages/extension-sdk_6x3rzv5pigev5qtyqxczgau524 + '@ownclouders/extension-sdk': file:../temp-extension-sdk_6x3rzv5pigev5qtyqxczgau524 '@ownclouders/prettier-config': 0.0.1 '@ownclouders/tsconfig': 0.0.4 '@vitejs/plugin-vue': 4.0.0_vite@4.1.1+vue@3.2.47 @@ -2532,11 +2532,11 @@ packages: engines: {node: '>=10'} dev: true - file:../../web/packages/extension-sdk_6x3rzv5pigev5qtyqxczgau524: - resolution: {directory: ../../web/packages/extension-sdk, type: directory} - id: file:../../web/packages/extension-sdk + file:../temp-extension-sdk_6x3rzv5pigev5qtyqxczgau524: + resolution: {directory: ../temp-extension-sdk, type: directory} + id: file:../temp-extension-sdk name: '@ownclouders/extension-sdk' - version: 0.0.1 + version: 0.0.1-alpha.1 peerDependencies: sass: 1.58.0 vite: ^4.1.1 diff --git a/old-web-redirector/package.json b/old-web-redirector/package.json index ce24d5b..1df282d 100644 --- a/old-web-redirector/package.json +++ b/old-web-redirector/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/open-in-swan/package.json b/open-in-swan/package.json index cd801c9..e3fb7be 100644 --- a/open-in-swan/package.json +++ b/open-in-swan/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/rootjs/package.json b/rootjs/package.json index 39f9923..26b3b06 100644 --- a/rootjs/package.json +++ b/rootjs/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/temp-extension-sdk/index.mjs b/temp-extension-sdk/index.mjs new file mode 100644 index 0000000..1676bdb --- /dev/null +++ b/temp-extension-sdk/index.mjs @@ -0,0 +1,86 @@ +// ATTENTION: this is a .mjs (instead of a .ts) file on purpose, +// because we don't want to transpile it before publishing +// c.f. https://github.com/vitejs/vite/issues/5370 + +import { mergeConfig, searchForWorkspaceRoot } from 'vite' +import { join } from 'path' +import { cwd } from 'process' +import { readFileSync } from 'fs' + +import vue from '@vitejs/plugin-vue' +import serve from 'rollup-plugin-serve' + +const distDir = 'dist' + +export const defineConfig = (overrides = {}) => { + return ({ mode }) => { + const isProduction = mode === 'production' + const isServing = !isProduction + + // read package name from vite workspace + const packageJson = JSON.parse( + readFileSync(join(searchForWorkspaceRoot(cwd()), 'package.json')).toString() + ) + + const name = packageJson.name + + // take vite standard config and reuse it for rollup-plugin-serve config + const { https, port = 9210, host = 'localhost' } = overrides?.server + const isHttps = !!https + + if (isServing) { + console.log( + `>>> Serving extension at http${isHttps ? 's' : ''}://${host}:${port}/js/${name}.js` + ) + } + + return mergeConfig( + { + server: { + host, + port, + strictPort: true + }, + resolve: { + alias: { + path: 'rollup-plugin-node-polyfills/polyfills/path' + } + }, + build: { + cssCodeSplit: true, + minify: isProduction, + rollupOptions: { + external: ['vue', 'vuex', 'luxon', 'web-pkg', 'web-client', 'vue3-gettext'], + preserveEntrySignatures: 'strict', + input: { + [name]: './src/index.ts' + }, + output: { + format: 'amd', + dir: distDir, + chunkFileNames: join('js', 'chunks', '[name]-[hash].mjs'), + entryFileNames: join('js', `[name]${isProduction ? '-[hash]' : ''}.js`) + }, + plugins: [ + isServing && + serve({ + headers: { + 'access-control-allow-origin': '*' + }, + contentBase: distDir, + ...(https && { https }), + ...(port && { port }) + }) + ] + } + }, + plugins: [ + vue({ + customElement: false + }) + ] + }, + overrides + ) + } +} diff --git a/temp-extension-sdk/package.json b/temp-extension-sdk/package.json new file mode 100644 index 0000000..1764b31 --- /dev/null +++ b/temp-extension-sdk/package.json @@ -0,0 +1,25 @@ +{ + "name": "@ownclouders/extension-sdk", + "version": "0.0.1-alpha.1", + "description": "ownCloud Web Extension SDK", + "license": "AGPL-3.0", + "main": "index.mjs", + "type": "module", + "private": false, + "author": "ownCloud GmbH ", + "homepage": "https://github.com/owncloud/web/tree/master/packages/extension-sdk", + "repository": { + "type": "git", + "url": "https://github.com/owncloud/web", + "directory": "packages/extension-sdk" + }, + "dependencies": { + "@vitejs/plugin-vue": "4.0.0", + "rollup-plugin-node-polyfills": "^0.2.1", + "rollup-plugin-serve": "^2.0.2" + }, + "peerDependencies": { + "vite": "^4.1.1", + "sass": "1.58.0" + } +} diff --git a/top-bar/package.json b/top-bar/package.json index 503becc..b736a64 100644 --- a/top-bar/package.json +++ b/top-bar/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0", diff --git a/tours/package.json b/tours/package.json index abcd964..cf0e629 100644 --- a/tours/package.json +++ b/tours/package.json @@ -24,7 +24,7 @@ ], "devDependencies": { "@ownclouders/eslint-config": "0.0.1", - "@ownclouders/extension-sdk": "file:../../web/packages/extension-sdk", + "@ownclouders/extension-sdk": "file:../temp-extension-sdk", "@ownclouders/prettier-config": "0.0.1", "@ownclouders/tsconfig": "0.0.4", "@vitejs/plugin-vue": "4.0.0",