@silexlabs/silex 3.7.0 → 3.9.0-canary.2
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/README.md +115 -78
- package/common/examples/plugin.js +6 -0
- package/common/silex-plugins/config.test.ts +71 -0
- package/common/silex-plugins/config.ts +25 -0
- package/common/silex-plugins/index.ts +2 -0
- package/common/silex-plugins/plugin.test.ts +57 -0
- package/common/silex-plugins/plugin.ts +65 -0
- package/dist/client/css/admin.css +25 -12
- package/dist/client/css/all.min.css +5 -5
- package/dist/client/index.html +2 -2
- package/dist/client/js/main.js +3108 -2940
- package/dist/client/js/main.js.LICENSE.txt +6 -4
- package/dist/client/webfonts/fa-brands-400.woff2 +0 -0
- package/dist/client/webfonts/fa-regular-400.woff2 +0 -0
- package/dist/client/webfonts/fa-solid-900.woff2 +0 -0
- package/dist/client/webfonts/fa-v4compatibility.woff2 +0 -0
- package/dist/server/common/externs.js +2 -0
- package/dist/server/common/silex-plugins/config.js +25 -0
- package/dist/server/common/silex-plugins/index.js +18 -0
- package/dist/server/common/silex-plugins/plugin.js +41 -0
- package/dist/server/server/api/api.js +9 -9
- package/dist/server/server/api/connectorApi.js +35 -35
- package/dist/server/server/api/publicationApi.js +19 -19
- package/dist/server/server/api/websiteApi.js +46 -46
- package/dist/server/server/config.js +19 -19
- package/dist/server/server/connectors/FsHosting.js +6 -6
- package/dist/server/server/connectors/FsStorage.js +35 -35
- package/dist/server/server/connectors/connectors.js +3 -3
- package/dist/server/server/expose.js +18 -8
- package/dist/server/server/express.js +3 -3
- package/dist/server/server/index.js +29 -19
- package/dist/server/server/jobs.js +4 -4
- package/dist/{plugins/server/plugins/server → server/server/plugins}/DownloadConnector.js +23 -28
- package/dist/{plugins/server/plugins/server → server/server/plugins}/FtpConnector.js +42 -117
- package/dist/{plugins/server/plugins/server → server/server/plugins}/GitlabConnector.js +80 -271
- package/dist/{plugins/server/plugins/server → server/server/plugins}/GitlabHostingConnector.js +11 -134
- package/dist/server/server/plugins/PublicationOptimizer.js +2 -0
- package/dist/{plugins/server/plugins/server → server/server/plugins}/SslPlugin.js +3 -32
- package/dist/{plugins/server/plugins/server → server/server/plugins}/StaticPlugin.js +4 -21
- package/dist/server/server/utils/BackwardCompat.js +2 -0
- package/dist/server/server/utils/websiteDataSerialization.js +10 -10
- package/{src/ts/client → editor}/api.ts +2 -2
- package/{src/ts/client → editor}/assetUrl.test.ts +6 -33
- package/{src/ts/client → editor}/assetUrl.ts +2 -2
- package/{src/ts/client → editor}/config.ts +3 -3
- package/{src/css/theme-modern.scss → editor/css/design-system.scss} +29 -14
- package/{src → editor}/css/index.scss +1 -3
- package/{src → editor}/css/project-bar.scss +5 -0
- package/{src/ts/client → editor}/expose.ts +3 -3
- package/{src/ts/client → editor}/grapesjs/LoginDialog.ts +3 -3
- package/{src/ts/client → editor}/grapesjs/PublicationManager.ts +3 -3
- package/{src/ts/client → editor}/grapesjs/PublicationUi.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/cms/index.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/cms/page-settings.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/cms/publication.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/eleventy.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/index.ts +5 -3
- package/{src/ts/client → editor}/grapesjs/internal-links.ts +2 -2
- package/{src/ts/client → editor}/grapesjs/resize-panel.ts +2 -1
- package/{src/ts/client → editor}/grapesjs/settings-sections.ts +1 -1
- package/{src/ts/client → editor}/grapesjs/settings.ts +2 -2
- package/{src/ts/client → editor}/grapesjs/storage.ts +1 -1
- package/editor/grapesjs/website-info.ts +52 -0
- package/{src/ts/client → editor}/index.ts +1 -1
- package/{src/ts/client → editor}/publication-transformers.test.ts +10 -10
- package/{src/ts/client → editor}/publication-transformers.ts +1 -1
- package/{src/ts/client → editor}/publish-fonts.ts +2 -2
- package/grapesjs-plugins/expression-input/.husky/pre-commit +2 -0
- package/grapesjs-plugins/expression-input/.prettierrc.json +7 -0
- package/grapesjs-plugins/expression-input/.vscode/extensions.json +9 -0
- package/grapesjs-plugins/expression-input/CHANGELOG.md +47 -0
- package/grapesjs-plugins/expression-input/LICENSE +661 -0
- package/grapesjs-plugins/expression-input/README.md +59 -0
- package/grapesjs-plugins/expression-input/babel.config.js +3 -0
- package/grapesjs-plugins/expression-input/commitlint.config.js +1 -0
- package/grapesjs-plugins/expression-input/dev/README.md +1 -0
- package/grapesjs-plugins/expression-input/dev/expression-input.html +148 -0
- package/grapesjs-plugins/expression-input/dev/input-chain.html +88 -0
- package/grapesjs-plugins/expression-input/dev/popin-form.html +83 -0
- package/grapesjs-plugins/expression-input/docs/expression-input.md +173 -0
- package/grapesjs-plugins/expression-input/docs/popin-form.md +228 -0
- package/grapesjs-plugins/expression-input/eslint.config.mjs +71 -0
- package/grapesjs-plugins/expression-input/package.json +84 -0
- package/grapesjs-plugins/expression-input/playwright.config.ts +6 -0
- package/grapesjs-plugins/expression-input/rollup.config.js +39 -0
- package/grapesjs-plugins/expression-input/src/expression-input.ts +339 -0
- package/grapesjs-plugins/expression-input/src/index.ts +3 -0
- package/grapesjs-plugins/expression-input/src/input-chain.ts +216 -0
- package/grapesjs-plugins/expression-input/src/popin-form.ts +189 -0
- package/grapesjs-plugins/expression-input/src/popin-overlay.ts +188 -0
- package/grapesjs-plugins/expression-input/src/styles.ts +374 -0
- package/grapesjs-plugins/expression-input/src/test/popin-form_test.ts +47 -0
- package/grapesjs-plugins/expression-input/tsconfig.json +34 -0
- package/grapesjs-plugins/expression-input/web-dev-server.config.js +25 -0
- package/grapesjs-plugins/expression-input/web-test-runner.config.js +124 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/.editorconfig +5 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/.husky/pre-commit +4 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/README.md +158 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/babel.config.js +3 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/eslint.config.mjs +20 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/index.html +353 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/jest.config.cjs +11 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/package-lock.json +12500 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/package.json +75 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/public/simple-selector.html +12 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/StylableElement.ts +15 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/capabilities.ts +49 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/commands.ts +89 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/complex-selector.ts +187 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/compound-selector.ts +241 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/current-selector-display.ts +289 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/inline-select.ts +199 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/resize-input.ts +19 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/components/simple-selector.ts +537 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/i18n/en.ts +75 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/i18n/fr.ts +75 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/index.ts +47 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/ComplexSelector.test.ts +380 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/ComplexSelector.ts +231 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/CompoundSelector.test.ts +232 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/CompoundSelector.ts +128 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/GrapesJsSelectors.test.ts +1077 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/GrapesJsSelectors.ts +653 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/Operator.test.ts +45 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/Operator.ts +129 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/PseudoClass.test.ts +31 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/PseudoClass.ts +159 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/SimpleSelector.test.ts +181 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/model/SimpleSelector.ts +379 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/plugin.ts +225 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/styles.ts +40 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/src/test-data.json +3546 -0
- package/grapesjs-plugins/grapesjs-advanced-selector/tsconfig.json +37 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/.eslintrc.json +31 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/LICENSE +17 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/README.md +129 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/_index.html +37 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/package-lock.json +9023 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/package.json +46 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/src/index.js +97 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/test/index.test.js +198 -0
- package/grapesjs-plugins/grapesjs-ai-capabilities/tsconfig.json +29 -0
- package/grapesjs-plugins/grapesjs-css-variables/.eslintrc.json +31 -0
- package/grapesjs-plugins/grapesjs-css-variables/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-css-variables/README.md +172 -0
- package/grapesjs-plugins/grapesjs-css-variables/TEST_SCENARIOS.md +181 -0
- package/grapesjs-plugins/grapesjs-css-variables/_index.html +93 -0
- package/grapesjs-plugins/grapesjs-css-variables/package-lock.json +9020 -0
- package/grapesjs-plugins/grapesjs-css-variables/package.json +46 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/capabilities.js +133 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/index.js +37 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/locale/en.js +22 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/locale/fr.js +22 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/modal.js +692 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/style-manager.js +461 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/types.js +8 -0
- package/grapesjs-plugins/grapesjs-css-variables/src/variables.js +439 -0
- package/grapesjs-plugins/grapesjs-data-source/.husky/pre-commit +4 -0
- package/grapesjs-plugins/grapesjs-data-source/.nvmrc +1 -0
- package/grapesjs-plugins/grapesjs-data-source/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-data-source/README.md +674 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/directus-schema.json +67137 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/directus-test-schema.json +8393 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/graphql-mocks.js +7 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/simple-schema.json +493 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/squidex-schema.json +6656 -0
- package/grapesjs-plugins/grapesjs-data-source/__mocks__/strapi-schema.json +7986 -0
- package/grapesjs-plugins/grapesjs-data-source/_index.html +110 -0
- package/grapesjs-plugins/grapesjs-data-source/babel.config.js +7 -0
- package/grapesjs-plugins/grapesjs-data-source/eslint.config.mjs +47 -0
- package/grapesjs-plugins/grapesjs-data-source/example.graphql +355 -0
- package/grapesjs-plugins/grapesjs-data-source/example.graphql.json +5666 -0
- package/grapesjs-plugins/grapesjs-data-source/example.page.json +1 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/base/graphql-response.json +6 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/base/graphql-types.json +2095 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/base/preview.html +5 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/base/website.json +79 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/countries-lists/graphql-response.json +1056 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/countries-lists/graphql-types.json +2095 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/countries-lists/preview.html +36 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/countries-lists/website.json +422 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/example.graphql-result.json +18718 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/example.graphql-types.json +1955 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/graphql-modules.json +191 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/modules.html +45 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/visibility-truthy/graphql-response.json +1056 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/visibility-truthy/graphql-types.json +2095 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/visibility-truthy/preview.html +31 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/visibility-truthy/website.json +261 -0
- package/grapesjs-plugins/grapesjs-data-source/integration-tests/website-modules.json +650 -0
- package/grapesjs-plugins/grapesjs-data-source/jest.config.js +21 -0
- package/grapesjs-plugins/grapesjs-data-source/package-lock.json +13182 -0
- package/grapesjs-plugins/grapesjs-data-source/package.json +77 -0
- package/grapesjs-plugins/grapesjs-data-source/src/api.ts +386 -0
- package/grapesjs-plugins/grapesjs-data-source/src/capabilities.ts +80 -0
- package/grapesjs-plugins/grapesjs-data-source/src/commands.ts +269 -0
- package/grapesjs-plugins/grapesjs-data-source/src/datasources/GraphQL.ts +1039 -0
- package/grapesjs-plugins/grapesjs-data-source/src/datasources/graphql-introspection-query.ts +112 -0
- package/grapesjs-plugins/grapesjs-data-source/src/datasources/graphql.test.ts +657 -0
- package/grapesjs-plugins/grapesjs-data-source/src/filters/index.ts +102 -0
- package/grapesjs-plugins/grapesjs-data-source/src/filters/liquid.test.ts +27 -0
- package/grapesjs-plugins/grapesjs-data-source/src/filters/liquid.ts +985 -0
- package/grapesjs-plugins/grapesjs-data-source/src/index.ts +103 -0
- package/grapesjs-plugins/grapesjs-data-source/src/integration.test.ts +504 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/ExpressionTree.ts +251 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/completion.ts +213 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/dataSourceManager.ts +315 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/dataSourceRegistry.test.ts +170 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/dataSourceRegistry.ts +117 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/expressionEvaluator.ts +241 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/previewDataLoader.ts +196 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/queryBuilder.ts +118 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/state.test.ts +76 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/state.ts +243 -0
- package/grapesjs-plugins/grapesjs-data-source/src/model/token.ts +336 -0
- package/grapesjs-plugins/grapesjs-data-source/src/storage.test.ts +81 -0
- package/grapesjs-plugins/grapesjs-data-source/src/storage.ts +55 -0
- package/grapesjs-plugins/grapesjs-data-source/src/test-data.ts +154 -0
- package/grapesjs-plugins/grapesjs-data-source/src/types.ts +299 -0
- package/grapesjs-plugins/grapesjs-data-source/src/utils.test.ts +46 -0
- package/grapesjs-plugins/grapesjs-data-source/src/utils.ts +367 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/canvas.ts +718 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/custom-states-editor.ts +371 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/defaultStyles.ts +432 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/index.ts +168 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/properties-editor.ts +249 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/settings.ts +1551 -0
- package/grapesjs-plugins/grapesjs-data-source/src/view/state-editor.ts +528 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/.editorconfig +16 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/.env.example +7 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/.eslintignore +3 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/.eslintrc +27 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/README.md +57 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/config/admin.js +13 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/config/api.js +7 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/config/database.js +92 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/config/middlewares.js +12 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/config/server.js +10 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/database/migrations/.gitkeep +0 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/favicon.png +0 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/jsconfig.json +8 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/package.json +31 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/public/robots.txt +3 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/public/uploads/.gitkeep +0 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/admin/app.example.js +39 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/admin/webpack.config.example.js +9 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/api/.gitkeep +0 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/api/post/content-types/post/schema.json +26 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/api/post/controllers/post.js +9 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/api/post/routes/post.js +9 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/api/post/services/post.js +9 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/extensions/.gitkeep +0 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/src/index.js +20 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/types/generated/components.d.ts +5 -0
- package/grapesjs-plugins/grapesjs-data-source/strapi/types/generated/contentTypes.d.ts +723 -0
- package/grapesjs-plugins/grapesjs-data-source/tmp/countries-lists.html +1 -0
- package/grapesjs-plugins/grapesjs-data-source/tsconfig.cjs.json +8 -0
- package/grapesjs-plugins/grapesjs-data-source/tsconfig.json +49 -0
- package/grapesjs-plugins/grapesjs-filter-styles/README.md +137 -0
- package/grapesjs-plugins/grapesjs-filter-styles/eslint.config.mjs +35 -0
- package/grapesjs-plugins/grapesjs-filter-styles/package-lock.json +8927 -0
- package/grapesjs-plugins/grapesjs-filter-styles/package.json +40 -0
- package/grapesjs-plugins/grapesjs-filter-styles/src/index.js +283 -0
- package/grapesjs-plugins/grapesjs-filter-styles/tsconfig.json +26 -0
- package/grapesjs-plugins/grapesjs-fonts/.eslintrc.json +31 -0
- package/grapesjs-plugins/grapesjs-fonts/LICENSE +9 -0
- package/grapesjs-plugins/grapesjs-fonts/README.md +231 -0
- package/grapesjs-plugins/grapesjs-fonts/_index.html +95 -0
- package/grapesjs-plugins/grapesjs-fonts/package-lock.json +9024 -0
- package/grapesjs-plugins/grapesjs-fonts/package.json +46 -0
- package/grapesjs-plugins/grapesjs-fonts/src/capabilities.js +61 -0
- package/grapesjs-plugins/grapesjs-fonts/src/commands.js +100 -0
- package/grapesjs-plugins/grapesjs-fonts/src/fonts.js +396 -0
- package/grapesjs-plugins/grapesjs-fonts/src/index.js +34 -0
- package/grapesjs-plugins/grapesjs-fonts/src/locale/en.js +19 -0
- package/grapesjs-plugins/grapesjs-fonts/src/locale/fr.js +21 -0
- package/grapesjs-plugins/grapesjs-fonts/src/locale/ptbr.js +18 -0
- package/grapesjs-plugins/grapesjs-fonts/tsconfig.json +29 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/README.md +116 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/package.json +46 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/src/KeymapsDialog.ts +208 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/src/KeymapsDialogManager.ts +78 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/src/index.ts +70 -0
- package/grapesjs-plugins/grapesjs-keymaps-dialog/tsconfig.json +29 -0
- package/grapesjs-plugins/grapesjs-loading/.eslintrc.json +22 -0
- package/grapesjs-plugins/grapesjs-loading/README.md +140 -0
- package/grapesjs-plugins/grapesjs-loading/_index.html +90 -0
- package/grapesjs-plugins/grapesjs-loading/eslint.config.mjs +20 -0
- package/grapesjs-plugins/grapesjs-loading/grapesjs-loading.gif +0 -0
- package/grapesjs-plugins/grapesjs-loading/package.json +50 -0
- package/grapesjs-plugins/grapesjs-loading/src/index.ts +54 -0
- package/grapesjs-plugins/grapesjs-loading/tsconfig.json +20 -0
- package/grapesjs-plugins/grapesjs-notifications/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-notifications/README.md +295 -0
- package/grapesjs-plugins/grapesjs-notifications/_index.html +95 -0
- package/grapesjs-plugins/grapesjs-notifications/package-lock.json +8187 -0
- package/grapesjs-plugins/grapesjs-notifications/package.json +58 -0
- package/grapesjs-plugins/grapesjs-notifications/src/Notification.ts +117 -0
- package/grapesjs-plugins/grapesjs-notifications/src/NotificationManager.ts +93 -0
- package/grapesjs-plugins/grapesjs-notifications/src/Storage.ts +26 -0
- package/grapesjs-plugins/grapesjs-notifications/src/capabilities.ts +33 -0
- package/grapesjs-plugins/grapesjs-notifications/src/commands.ts +5 -0
- package/grapesjs-plugins/grapesjs-notifications/src/index.ts +126 -0
- package/grapesjs-plugins/grapesjs-notifications/src/locale/en.js +8 -0
- package/grapesjs-plugins/grapesjs-notifications/src/view.ts +127 -0
- package/grapesjs-plugins/grapesjs-notifications/tsconfig.json +30 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/LICENSE +213 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/README.md +119 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/jest.config.js +197 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/package-lock.json +10752 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/package.json +44 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/src/index.js +90 -0
- package/grapesjs-plugins/grapesjs-storage-rate-limit/src/index.test.js +122 -0
- package/grapesjs-plugins/grapesjs-symbols/.eslintrc.cjs +20 -0
- package/grapesjs-plugins/grapesjs-symbols/.husky/pre-commit +5 -0
- package/grapesjs-plugins/grapesjs-symbols/.nvmrc +1 -0
- package/grapesjs-plugins/grapesjs-symbols/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-symbols/README.md +228 -0
- package/grapesjs-plugins/grapesjs-symbols/_index.html +104 -0
- package/grapesjs-plugins/grapesjs-symbols/es5.html +119 -0
- package/grapesjs-plugins/grapesjs-symbols/es6.html +107 -0
- package/grapesjs-plugins/grapesjs-symbols/eslint.config.mjs +72 -0
- package/grapesjs-plugins/grapesjs-symbols/jest.config.js +12 -0
- package/grapesjs-plugins/grapesjs-symbols/package-lock.json +6867 -0
- package/grapesjs-plugins/grapesjs-symbols/package.json +73 -0
- package/grapesjs-plugins/grapesjs-symbols/rollup.config.mjs +26 -0
- package/grapesjs-plugins/grapesjs-symbols/src/SymbolsCommands.test.ts +147 -0
- package/grapesjs-plugins/grapesjs-symbols/src/SymbolsCommands.ts +144 -0
- package/grapesjs-plugins/grapesjs-symbols/src/capabilities.ts +50 -0
- package/grapesjs-plugins/grapesjs-symbols/src/events.ts +8 -0
- package/grapesjs-plugins/grapesjs-symbols/src/id-utils.ts +158 -0
- package/grapesjs-plugins/grapesjs-symbols/src/index.ts +46 -0
- package/grapesjs-plugins/grapesjs-symbols/src/test-utils.ts +51 -0
- package/grapesjs-plugins/grapesjs-symbols/src/utils.test.ts +118 -0
- package/grapesjs-plugins/grapesjs-symbols/src/utils.ts +90 -0
- package/grapesjs-plugins/grapesjs-symbols/src/view/SymbolsView.ts +251 -0
- package/grapesjs-plugins/grapesjs-symbols/src/view/traits.ts +101 -0
- package/grapesjs-plugins/grapesjs-symbols/tsconfig.json +35 -0
- package/grapesjs-plugins/grapesjs-symbols/tsconfig.test.json +12 -0
- package/grapesjs-plugins/grapesjs-version-flow/LICENSE +661 -0
- package/grapesjs-plugins/grapesjs-version-flow/README.md +422 -0
- package/grapesjs-plugins/grapesjs-version-flow/_index.html +494 -0
- package/grapesjs-plugins/grapesjs-version-flow/babel.config.js +9 -0
- package/grapesjs-plugins/grapesjs-version-flow/package-lock.json +11832 -0
- package/grapesjs-plugins/grapesjs-version-flow/package.json +77 -0
- package/grapesjs-plugins/grapesjs-version-flow/prompts/initial.txt +116 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/event-system.js +48 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/index.js +87 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/locale/en.js +26 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/locale/fr.js +26 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/modal-ui.js +562 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/style-manager.js +240 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/upgrade-engine.js +237 -0
- package/grapesjs-plugins/grapesjs-version-flow/src/version-manager.js +117 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/index.test.js +241 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/integration.test.js +227 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/setup.js +67 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/upgrade-engine.test.js +360 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/version-manager.test.js +168 -0
- package/grapesjs-plugins/grapesjs-version-flow/tests/version-storage.test.js +203 -0
- package/grapesjs-plugins/grapesjs-version-flow/tsconfig.json +26 -0
- package/package.json +127 -159
- package/{src/ts/server → server}/api/api.ts +6 -6
- package/{src/ts/server → server}/api/connectorApi.ts +5 -5
- package/{src/ts/server → server}/api/publicationApi.ts +7 -7
- package/{src/ts/server → server}/api/websiteApi.ts +7 -8
- package/{src/ts/server → server}/config.ts +14 -12
- package/{src/ts/server → server}/connectors/FsHosting.ts +4 -4
- package/{src/ts/server → server}/connectors/FsStorage.test.ts +2 -2
- package/{src/ts/server → server}/connectors/FsStorage.ts +8 -8
- package/{src/ts/server → server}/connectors/connectors.ts +3 -3
- package/server/deploy/.nvmrc +1 -0
- package/server/deploy/.silex.js +220 -0
- package/server/deploy/client-config.js +17 -0
- package/server/deploy/client-plugins/.gitkeep +0 -0
- package/server/deploy/client-plugins/onboarding.js +67 -0
- package/server/deploy/example.env +25 -0
- package/server/deploy/onboarding.json +22 -0
- package/server/deploy/picto-silex@3x.png +0 -0
- package/server/deploy/server-plugins/dashboard.js +74 -0
- package/server/deploy/server-plugins/onboarding.js +212 -0
- package/server/deploy/silex-platform.yml +75 -0
- package/{src/ts/server → server}/events.ts +2 -2
- package/{src/ts/server → server}/expose.ts +1 -1
- package/{src/ts/server → server}/express.ts +2 -2
- package/{src/ts/server → server}/index.ts +7 -7
- package/{src/ts/server → server}/jobs.test.ts +1 -1
- package/{src/ts/server → server}/jobs.ts +1 -1
- package/server/plugins/DownloadConnector.publish.test.ts +32 -0
- package/server/plugins/DownloadConnector.test.ts +70 -0
- package/{src/ts/plugins/server → server/plugins}/DownloadConnector.ts +22 -10
- package/{src/ts/plugins/server → server/plugins}/FtpConnector.test.ts +3 -3
- package/{src/ts/plugins/server → server/plugins}/FtpConnector.ts +7 -7
- package/{src/ts/plugins/server → server/plugins}/GitlabConnector.ts +9 -26
- package/{src/ts/plugins/server → server/plugins}/GitlabHostingConnector.ts +5 -5
- package/{src/ts/plugins/server → server/plugins}/SslPlugin.ts +2 -2
- package/{src/ts/plugins/server → server/plugins}/StaticPlugin.ts +2 -2
- package/{src/ts/server → server}/utils/BackwardCompat.ts +1 -1
- package/{src/ts/server → server}/utils/websiteDataSerialization.test.ts +2 -2
- package/{src/ts/server → server}/utils/websiteDataSerialization.ts +3 -3
- package/.silex.js +0 -76
- package/dist/client/client/api.d.ts +0 -101
- package/dist/client/client/assetUrl.d.ts +0 -60
- package/dist/client/client/config.d.ts +0 -110
- package/dist/client/client/events.d.ts +0 -23
- package/dist/client/client/expose.d.ts +0 -10
- package/dist/client/client/grapesjs/LoginDialog.d.ts +0 -15
- package/dist/client/client/grapesjs/PublicationManager.d.ts +0 -117
- package/dist/client/client/grapesjs/PublicationUi.d.ts +0 -59
- package/dist/client/client/grapesjs/blocks.d.ts +0 -1
- package/dist/client/client/grapesjs/body-remap.d.ts +0 -15
- package/dist/client/client/grapesjs/breadcrumbs.d.ts +0 -1
- package/dist/client/client/grapesjs/cms/DataSource.d.ts +0 -43
- package/dist/client/client/grapesjs/cms/blocks.d.ts +0 -2
- package/dist/client/client/grapesjs/cms/buttons.d.ts +0 -2
- package/dist/client/client/grapesjs/cms/collection-pages.d.ts +0 -4
- package/dist/client/client/grapesjs/cms/config.d.ts +0 -9
- package/dist/client/client/grapesjs/cms/filters.d.ts +0 -3
- package/dist/client/client/grapesjs/cms/index.d.ts +0 -43
- package/dist/client/client/grapesjs/cms/liquid.d.ts +0 -73
- package/dist/client/client/grapesjs/cms/page-settings.d.ts +0 -6
- package/dist/client/client/grapesjs/cms/publication.d.ts +0 -60
- package/dist/client/client/grapesjs/cms/site-settings.d.ts +0 -3
- package/dist/client/client/grapesjs/cms/states.d.ts +0 -8
- package/dist/client/client/grapesjs/cms/traits.d.ts +0 -8
- package/dist/client/client/grapesjs/core-commands.d.ts +0 -3
- package/dist/client/client/grapesjs/css-props.d.ts +0 -6
- package/dist/client/client/grapesjs/flex.d.ts +0 -3
- package/dist/client/client/grapesjs/footer.d.ts +0 -2
- package/dist/client/client/grapesjs/img.d.ts +0 -6
- package/dist/client/client/grapesjs/index.d.ts +0 -9
- package/dist/client/client/grapesjs/internal-links.d.ts +0 -1
- package/dist/client/client/grapesjs/keymaps.d.ts +0 -123
- package/dist/client/client/grapesjs/li.d.ts +0 -7
- package/dist/client/client/grapesjs/new-page-dialog.d.ts +0 -2
- package/dist/client/client/grapesjs/openImport.d.ts +0 -9
- package/dist/client/client/grapesjs/page-panel.d.ts +0 -13
- package/dist/client/client/grapesjs/project-bar.d.ts +0 -21
- package/dist/client/client/grapesjs/resize-panel.d.ts +0 -1
- package/dist/client/client/grapesjs/rich-text.d.ts +0 -4
- package/dist/client/client/grapesjs/sectors.d.ts +0 -12
- package/dist/client/client/grapesjs/semantic.d.ts +0 -1
- package/dist/client/client/grapesjs/settings-sections.d.ts +0 -19
- package/dist/client/client/grapesjs/settings.d.ts +0 -16
- package/dist/client/client/grapesjs/storage.d.ts +0 -3
- package/dist/client/client/grapesjs/symbolDialogs.d.ts +0 -4
- package/dist/client/client/grapesjs/upload-progress.d.ts +0 -2
- package/dist/client/client/grapesjs/view-buttons.d.ts +0 -2
- package/dist/client/client/index.d.ts +0 -10
- package/dist/client/client/publication-transformers.d.ts +0 -42
- package/dist/client/client/publish-custom-code-block.d.ts +0 -4
- package/dist/client/client/publish-fonts.d.ts +0 -4
- package/dist/client/client/utils.d.ts +0 -23
- package/dist/client/constants.d.ts +0 -35
- package/dist/client/page.d.ts +0 -2
- package/dist/client/types.d.ts +0 -365
- package/dist/client/webfonts/fa-brands-400.ttf +0 -0
- package/dist/client/webfonts/fa-regular-400.ttf +0 -0
- package/dist/client/webfonts/fa-solid-900.ttf +0 -0
- package/dist/client/webfonts/fa-v4compatibility.ttf +0 -0
- package/dist/plugins/client/client/events.d.ts +0 -23
- package/dist/plugins/client/client/events.js +0 -43
- package/dist/plugins/client/client/events.js.map +0 -1
- package/dist/plugins/client/plugins/client/template.d.ts +0 -2
- package/dist/plugins/client/plugins/client/template.js +0 -234
- package/dist/plugins/client/plugins/client/template.js.map +0 -1
- package/dist/plugins/client/plugins/client/website-info.d.ts +0 -1
- package/dist/plugins/client/plugins/client/website-info.js +0 -72
- package/dist/plugins/client/plugins/client/website-info.js.map +0 -1
- package/dist/plugins/client/types.d.ts +0 -365
- package/dist/plugins/client/types.js +0 -83
- package/dist/plugins/client/types.js.map +0 -1
- package/dist/plugins/server/constants.d.ts +0 -35
- package/dist/plugins/server/constants.js +0 -79
- package/dist/plugins/server/constants.js.map +0 -1
- package/dist/plugins/server/page.d.ts +0 -2
- package/dist/plugins/server/page.js +0 -35
- package/dist/plugins/server/page.js.map +0 -1
- package/dist/plugins/server/plugins/server/Cache.d.ts +0 -2
- package/dist/plugins/server/plugins/server/Cache.js +0 -36
- package/dist/plugins/server/plugins/server/Cache.js.map +0 -1
- package/dist/plugins/server/plugins/server/DownloadConnector.d.ts +0 -29
- package/dist/plugins/server/plugins/server/DownloadConnector.js.map +0 -1
- package/dist/plugins/server/plugins/server/FtpConnector.d.ts +0 -86
- package/dist/plugins/server/plugins/server/FtpConnector.js.map +0 -1
- package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +0 -172
- package/dist/plugins/server/plugins/server/GitlabConnector.js.map +0 -1
- package/dist/plugins/server/plugins/server/GitlabHostingConnector.d.ts +0 -23
- package/dist/plugins/server/plugins/server/GitlabHostingConnector.js.map +0 -1
- package/dist/plugins/server/plugins/server/PublicationOptimizer.js +0 -14
- package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +0 -1
- package/dist/plugins/server/plugins/server/SslPlugin.d.ts +0 -1
- package/dist/plugins/server/plugins/server/SslPlugin.js.map +0 -1
- package/dist/plugins/server/plugins/server/StaticPlugin.d.ts +0 -8
- package/dist/plugins/server/plugins/server/StaticPlugin.js.map +0 -1
- package/dist/plugins/server/server/config.d.ts +0 -59
- package/dist/plugins/server/server/config.js +0 -181
- package/dist/plugins/server/server/config.js.map +0 -1
- package/dist/plugins/server/server/connectors/FsHosting.d.ts +0 -14
- package/dist/plugins/server/server/connectors/FsHosting.js +0 -66
- package/dist/plugins/server/server/connectors/FsHosting.js.map +0 -1
- package/dist/plugins/server/server/connectors/FsStorage.d.ts +0 -44
- package/dist/plugins/server/server/connectors/FsStorage.js +0 -303
- package/dist/plugins/server/server/connectors/FsStorage.js.map +0 -1
- package/dist/plugins/server/server/connectors/connectors.d.ts +0 -86
- package/dist/plugins/server/server/connectors/connectors.js +0 -126
- package/dist/plugins/server/server/connectors/connectors.js.map +0 -1
- package/dist/plugins/server/server/events.d.ts +0 -26
- package/dist/plugins/server/server/events.js +0 -31
- package/dist/plugins/server/server/events.js.map +0 -1
- package/dist/plugins/server/server/jobs.d.ts +0 -12
- package/dist/plugins/server/server/jobs.js +0 -79
- package/dist/plugins/server/server/jobs.js.map +0 -1
- package/dist/plugins/server/server/utils/validation.d.ts +0 -7
- package/dist/plugins/server/server/utils/validation.js +0 -37
- package/dist/plugins/server/server/utils/validation.js.map +0 -1
- package/dist/plugins/server/server/utils/websiteDataSerialization.d.ts +0 -24
- package/dist/plugins/server/server/utils/websiteDataSerialization.js +0 -136
- package/dist/plugins/server/server/utils/websiteDataSerialization.js.map +0 -1
- package/dist/plugins/server/types.d.ts +0 -365
- package/dist/plugins/server/types.js +0 -87
- package/dist/plugins/server/types.js.map +0 -1
- package/dist/server/server/cli.js +0 -71
- package/src/css/grapesjs-light.scss +0 -180
- package/src/ts/plugins/client/template.ts +0 -246
- package/src/ts/plugins/client/website-info.ts +0 -84
- package/src/ts/server/cli.ts +0 -67
- /package/{src/ts → common}/constants.ts +0 -0
- /package/{src/ts → common}/externs.ts +0 -0
- /package/{src/ts → common}/page.ts +0 -0
- /package/{src/ts → common}/types.ts +0 -0
- /package/dist/server/{constants.js → common/constants.js} +0 -0
- /package/dist/server/{page.js → common/page.js} +0 -0
- /package/dist/server/{types.js → common/types.js} +0 -0
- /package/dist/server/{plugins/server → server/plugins}/Cache.js +0 -0
- /package/{src → editor}/css/_mixins.scss +0 -0
- /package/{src → editor}/css/_variables.scss +0 -0
- /package/{src → editor}/css/dialog.scss +0 -0
- /package/{src → editor}/css/dialogs.scss +0 -0
- /package/{src → editor}/css/fonts.scss +0 -0
- /package/{src → editor}/css/footer.scss +0 -0
- /package/{src → editor}/css/grapesjs-plugins.scss +0 -0
- /package/{src → editor}/css/grapesjs.scss +0 -0
- /package/{src → editor}/css/loader.scss +0 -0
- /package/{src → editor}/css/page-panel.scss +0 -0
- /package/{src → editor}/css/panels.scss +0 -0
- /package/{src → editor}/css/silex.scss +0 -0
- /package/{src → editor}/css/theme-base.scss +0 -0
- /package/{src → editor}/css/website-info.scss +0 -0
- /package/{src/ts/client → editor}/events.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/blocks.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/body-remap.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/breadcrumbs.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/DataSource.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/blocks.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/buttons.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/collection-pages.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/config.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/filters.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/liquid.mock.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/liquid.test.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/liquid.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/publication.test.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/site-settings.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/states.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/cms/traits.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/core-commands.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/css-props.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/flex.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/footer.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/img.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/internal-links.test.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/keymaps.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/li.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/new-page-dialog.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/openImport.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/page-panel.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/project-bar.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/rich-text.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/sectors.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/semantic.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/static-plugins.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/symbolDialogs.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/upload-progress.ts +0 -0
- /package/{src/ts/client → editor}/grapesjs/view-buttons.ts +0 -0
- /package/{src → editor}/html/debug.pug +0 -0
- /package/{src → editor}/html/index.pug +0 -0
- /package/{src → editor}/html/templates/includes.pug +0 -0
- /package/{src → editor}/html/templates/workspace.pug +0 -0
- /package/{src/ts/client → editor}/publish-custom-code-block.ts +0 -0
- /package/{src/ts/client → editor}/utils.ts +0 -0
- /package/{dist/plugins/server/plugins/server/PublicationOptimizer.d.ts → grapesjs-plugins/expression-input/docs/.nojekyll} +0 -0
- /package/{src/ts/plugins/server → server/plugins}/Cache.ts +0 -0
- /package/{src/ts/plugins/server → server/plugins}/PublicationOptimizer.ts +0 -0
- /package/{src/ts/server → server}/utils/validation.ts +0 -0
package/dist/{plugins/server/plugins/server → server/server/plugins}/GitlabHostingConnector.js
RENAMED
|
@@ -1,59 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Silex website builder, free/libre no-code tool for makers.
|
|
4
|
-
* Copyright (c) 2023 lexoyo and Silex Labs foundation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software: you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU Affero General Public License as published by
|
|
8
|
-
* the Free Software Foundation, either version 3 of the License, or any later version.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU Affero General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
16
|
-
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
4
|
};
|
|
21
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
/**
|
|
23
|
-
* Gitlab hosting connector
|
|
24
|
-
* @fileoverview Gitlab hosting connector for Silex, connect to the user's Gitlab account to host websites with .gitlab-ci.yml file template for plain html by default
|
|
25
|
-
* @see https://docs.gitlab.com/ee/api/oauth2.html
|
|
26
|
-
* @see https://docs.gitlab.com/ee/user/project/pages/getting_started/pages_ci_cd_template.html
|
|
27
|
-
*/
|
|
28
6
|
const dedent_1 = __importDefault(require("dedent"));
|
|
29
|
-
const
|
|
30
|
-
const
|
|
7
|
+
const GitlabConnector_js_1 = __importDefault(require("./GitlabConnector.js"));
|
|
8
|
+
const types_js_1 = require("../../common/types.js");
|
|
31
9
|
const promises_1 = require("timers/promises");
|
|
32
|
-
const waitTimeOut = 5000;
|
|
33
|
-
const jobPollInterval = 10000;
|
|
34
|
-
const jobCompletionTimeOut = 45 * 60 * 1000;
|
|
10
|
+
const waitTimeOut = 5000;
|
|
11
|
+
const jobPollInterval = 10000;
|
|
12
|
+
const jobCompletionTimeOut = 45 * 60 * 1000;
|
|
35
13
|
const SILEX_OVERWRITE_NOTICE = '# silexOverwrite: true';
|
|
36
|
-
// GitLab job statuses that indicate the job is still running
|
|
37
14
|
const GITLAB_RUNNING_STATUSES = ['created', 'waiting_for_resource', 'preparing', 'pending', 'running'];
|
|
38
|
-
// GitLab job statuses that indicate success
|
|
39
15
|
const GITLAB_SUCCESS_STATUSES = ['success'];
|
|
40
|
-
// GitLab job statuses that indicate failure
|
|
41
16
|
const GITLAB_FAILED_STATUSES = ['failed', 'canceled', 'skipped'];
|
|
42
|
-
/**
|
|
43
|
-
* Filter GitLab trace to remove technical noise
|
|
44
|
-
* Returns an array of meaningful log lines
|
|
45
|
-
*/
|
|
46
17
|
function filterTraceLines(trace) {
|
|
47
|
-
// eslint-disable-next-line no-control-regex
|
|
48
18
|
const ansiEscape = /\x1b\[[0-9;?]*[a-zA-Z]/g;
|
|
49
19
|
return trace.split('\n')
|
|
50
20
|
.map(l => l.replace(ansiEscape, '').trim())
|
|
51
21
|
.filter(l => l.length > 0)
|
|
52
|
-
// Remove GitLab internal markers
|
|
53
22
|
.filter(l => !l.match(/^section_/))
|
|
54
|
-
// Remove timestamps at the beginning of lines
|
|
55
23
|
.map(l => l.replace(/^\d{4}-\d{2}-\d{2}T[\d:.]+Z\s*\d*O?\s*/, ''))
|
|
56
|
-
// Remove Docker/Git setup noise
|
|
57
24
|
.filter(l => !l.includes('Using Docker executor'))
|
|
58
25
|
.filter(l => !l.includes('Pulling docker image'))
|
|
59
26
|
.filter(l => !l.includes('Fetching changes'))
|
|
@@ -63,22 +30,15 @@ function filterTraceLines(trace) {
|
|
|
63
30
|
.filter(l => !l.includes('Executing "step_script"'))
|
|
64
31
|
.filter(l => !l.includes('Restoring cache'))
|
|
65
32
|
.filter(l => !l.includes('Saving cache'))
|
|
66
|
-
.filter(l => !l.match(/^\s*\$\s/))
|
|
33
|
+
.filter(l => !l.match(/^\s*\$\s/))
|
|
67
34
|
.filter(l => !l.match(/^Running with gitlab-runner/))
|
|
68
35
|
.filter(l => !l.match(/^Preparing the .* executor/))
|
|
69
36
|
.filter(l => !l.match(/^Using .* as base image/))
|
|
70
|
-
// Keep non-empty lines after filtering
|
|
71
37
|
.filter(l => l.trim().length > 0);
|
|
72
38
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Parse GitLab/11ty job logs to extract meaningful status
|
|
75
|
-
* Returns a short user-friendly status message
|
|
76
|
-
*/
|
|
77
39
|
function parseJobTrace(trace) {
|
|
78
40
|
const lines = filterTraceLines(trace);
|
|
79
|
-
// Look for 11ty build progress
|
|
80
41
|
if (trace.includes('[11ty]')) {
|
|
81
|
-
// Look for 11ty completion first
|
|
82
42
|
if (trace.includes('[11ty] Wrote') || trace.includes('[11ty] Copied')) {
|
|
83
43
|
const wroteMatch = trace.match(/\[11ty\] Wrote (\d+)/i);
|
|
84
44
|
const copiedMatch = trace.match(/\[11ty\] Copied (\d+)/i);
|
|
@@ -90,55 +50,45 @@ function parseJobTrace(trace) {
|
|
|
90
50
|
if (parts.length)
|
|
91
51
|
return parts.join(', ');
|
|
92
52
|
}
|
|
93
|
-
// Look for 11ty processing
|
|
94
53
|
const eleventyMatch = trace.match(/\[11ty\].*?(\d+)\s+files?/i);
|
|
95
54
|
if (eleventyMatch) {
|
|
96
55
|
return `Generating ${eleventyMatch[1]} pages...`;
|
|
97
56
|
}
|
|
98
57
|
return 'Building pages...';
|
|
99
58
|
}
|
|
100
|
-
// Look for npm/npx installing
|
|
101
59
|
if (trace.includes('npm') && trace.includes('install')) {
|
|
102
60
|
return 'Installing dependencies...';
|
|
103
61
|
}
|
|
104
|
-
// Look for npx running eleventy
|
|
105
62
|
if (trace.includes('npx') && trace.includes('eleventy')) {
|
|
106
63
|
return 'Running page generator...';
|
|
107
64
|
}
|
|
108
|
-
// Look for artifact upload
|
|
109
65
|
if (trace.includes('Uploading artifacts')) {
|
|
110
66
|
return 'Preparing files for deployment...';
|
|
111
67
|
}
|
|
112
|
-
// Look for pages deployment
|
|
113
68
|
if (trace.includes('CI_PAGES_URL') || trace.includes('will be deployed')) {
|
|
114
69
|
return 'Finalizing deployment...';
|
|
115
70
|
}
|
|
116
|
-
// Look for job completion
|
|
117
71
|
if (trace.includes('Job succeeded')) {
|
|
118
72
|
return 'Build complete';
|
|
119
73
|
}
|
|
120
|
-
// Look for errors
|
|
121
74
|
const errorMatch = trace.match(/error[:\s]+(.{0,100})/i);
|
|
122
75
|
if (errorMatch) {
|
|
123
76
|
const errorMsg = errorMatch[1].trim().substring(0, 60);
|
|
124
77
|
return `Error: ${errorMsg}${errorMsg.length >= 60 ? '...' : ''}`;
|
|
125
78
|
}
|
|
126
|
-
// Return empty string to avoid showing technical noise
|
|
127
79
|
return '';
|
|
128
80
|
}
|
|
129
|
-
class GitlabHostingConnector extends
|
|
81
|
+
class GitlabHostingConnector extends GitlabConnector_js_1.default {
|
|
130
82
|
displayName = 'Gitlab hosting';
|
|
131
|
-
connectorType =
|
|
83
|
+
connectorType = types_js_1.ConnectorType.HOSTING;
|
|
132
84
|
constructor(config, opts) {
|
|
133
85
|
super(config, opts);
|
|
134
|
-
// public directory for standard gitlab pages
|
|
135
86
|
this.options.assetsFolder = 'public';
|
|
136
87
|
}
|
|
137
88
|
async publish(session, websiteId, files, { startJob, jobSuccess, jobError }) {
|
|
138
89
|
const job = startJob(`Publishing to ${this.displayName}`);
|
|
139
90
|
job.logs = [[`Publishing to ${this.displayName}`]];
|
|
140
91
|
job.errors = [[]];
|
|
141
|
-
/* Configuration file .gitlab-ci.yml contains template for plain html Gitlab pages*/
|
|
142
92
|
const pathYml = '.gitlab-ci.yml';
|
|
143
93
|
const contentYml = (0, dedent_1.default) `
|
|
144
94
|
${SILEX_OVERWRITE_NOTICE}
|
|
@@ -173,7 +123,6 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
173
123
|
}
|
|
174
124
|
}
|
|
175
125
|
catch (e) {
|
|
176
|
-
// If the file .gitlab-ci.yml does not exist, create it, otherwise do nothing (do not overwriting existing one)
|
|
177
126
|
if (e.statusCode === 404 || e.httpStatusCode === 404 || e.message.endsWith('A file with this name doesn\'t exist')) {
|
|
178
127
|
job.message = `Creating ${pathYml}...`;
|
|
179
128
|
job.logs[0].push(job.message);
|
|
@@ -183,16 +132,10 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
183
132
|
jobError(job.jobId, e.message);
|
|
184
133
|
}
|
|
185
134
|
}
|
|
186
|
-
// publishing all files for website
|
|
187
|
-
// Do not await for the result, return the job and continue the publication in the background
|
|
188
|
-
//this .startPublicationJob(session, websiteId, files, job, () => this.endPublicationJob(session, websiteId, job))
|
|
189
135
|
this.writeAssets(session, websiteId, files, async ({ status, message }) => {
|
|
190
|
-
|
|
191
|
-
if (status === types_1.JobStatus.SUCCESS) {
|
|
192
|
-
/* Squash and tag the commits */
|
|
136
|
+
if (status === types_js_1.JobStatus.SUCCESS) {
|
|
193
137
|
const successTag = await this.createTag(session, websiteId, job, { startJob, jobSuccess, jobError });
|
|
194
138
|
if (!successTag) {
|
|
195
|
-
// jobError will have been called in createTag
|
|
196
139
|
return;
|
|
197
140
|
}
|
|
198
141
|
try {
|
|
@@ -208,7 +151,6 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
208
151
|
job.logs[0].push(job.message);
|
|
209
152
|
const pageUrl = await this.getPageUrl(session, websiteId, adminUrl);
|
|
210
153
|
job.logs[0].push(`Page URL: ${pageUrl}`);
|
|
211
|
-
// Wait for the GitLab job to complete
|
|
212
154
|
job.message = 'Starting build...';
|
|
213
155
|
job.logs[0].push(job.message);
|
|
214
156
|
const result = await this.waitForGitlabJobCompletion(session, websiteId, job, adminUrl, successTag, gitlabUrl, pageUrl);
|
|
@@ -224,12 +166,11 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
224
166
|
jobError(job.jobId, `Failed to get the website URLs: ${error.message}`);
|
|
225
167
|
}
|
|
226
168
|
}
|
|
227
|
-
else if (status ===
|
|
169
|
+
else if (status === types_js_1.JobStatus.ERROR) {
|
|
228
170
|
job.errors[0].push(message);
|
|
229
171
|
jobError(job.jobId, message);
|
|
230
172
|
}
|
|
231
173
|
else {
|
|
232
|
-
// Update the job status while uploading files
|
|
233
174
|
job.status = status;
|
|
234
175
|
job.message = message;
|
|
235
176
|
job.logs[0].push(message);
|
|
@@ -241,43 +182,6 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
241
182
|
});
|
|
242
183
|
return job;
|
|
243
184
|
}
|
|
244
|
-
// async startPublicationJob(session: GitlabSession, websiteId: WebsiteId, files: ConnectorFile[], job: PublicationJobData, endJob: () => void) {
|
|
245
|
-
// job.message = `Preparing ${files.length} files...`
|
|
246
|
-
// job.logs[0].push(job.message)
|
|
247
|
-
// job.status = JobStatus.IN_PROGRESS
|
|
248
|
-
// job.startTime = Date.now()
|
|
249
|
-
// // List all the files in assets folder
|
|
250
|
-
// const existingFiles = await this.ls({
|
|
251
|
-
// session,
|
|
252
|
-
// websiteId,
|
|
253
|
-
// recursive: false,
|
|
254
|
-
// path: this.options.assetsFolder,
|
|
255
|
-
// })
|
|
256
|
-
// // Create the actions for the batch
|
|
257
|
-
// const filesToUpload = [] as GitlabAction[]
|
|
258
|
-
// for (const file of files) {
|
|
259
|
-
// const filePath = this.getAssetPath(file.path, false)
|
|
260
|
-
// const content = (await contentToBuffer(file.content)).toString('base64')
|
|
261
|
-
// const existingSha = existingFiles.get(filePath)
|
|
262
|
-
// const newSha = computeGitBlobSha(content, true)
|
|
263
|
-
// if (existingSha) {
|
|
264
|
-
// if (existingSha !== newSha) {
|
|
265
|
-
// filesToUpload.push({
|
|
266
|
-
// action: 'update',
|
|
267
|
-
// file_path: filePath,
|
|
268
|
-
// content,
|
|
269
|
-
// encoding: 'base64',
|
|
270
|
-
// })
|
|
271
|
-
// } // else: skip unchanged file
|
|
272
|
-
// } else {
|
|
273
|
-
// filesToUpload.push({
|
|
274
|
-
// action: 'create',
|
|
275
|
-
// file_path: filePath,
|
|
276
|
-
// content,
|
|
277
|
-
// encoding: 'base64',
|
|
278
|
-
// })
|
|
279
|
-
// }
|
|
280
|
-
/* Get and return Url Gitlab Pages */
|
|
281
185
|
async getUrl(session, websiteId) {
|
|
282
186
|
const response = await this.callApi({
|
|
283
187
|
session,
|
|
@@ -297,15 +201,10 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
297
201
|
async getPageUrl(session, websiteId, projectUrl) {
|
|
298
202
|
return `${projectUrl}/pages`;
|
|
299
203
|
}
|
|
300
|
-
/**
|
|
301
|
-
* Wait for the GitLab CI/CD job to complete
|
|
302
|
-
* Polls the job status and updates the Silex job with progress
|
|
303
|
-
*/
|
|
304
204
|
async waitForGitlabJobCompletion(session, websiteId, job, projectUrl, tag, gitlabUrl, pageUrl) {
|
|
305
205
|
const t0 = Date.now();
|
|
306
206
|
let gitlabJobId = null;
|
|
307
207
|
let gitlabJobLogsUrl = null;
|
|
308
|
-
// First, wait for the job to appear
|
|
309
208
|
while (!gitlabJobId && (Date.now() - t0) < this.options.timeOut) {
|
|
310
209
|
try {
|
|
311
210
|
const jobs = await this.callApi({
|
|
@@ -333,7 +232,6 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
333
232
|
await (0, promises_1.setTimeout)(waitTimeOut);
|
|
334
233
|
}
|
|
335
234
|
}
|
|
336
|
-
// If job never appeared, handle the error
|
|
337
235
|
if (!gitlabJobId) {
|
|
338
236
|
let errorMessage = 'Could not start the build. The server may be busy or unavailable.';
|
|
339
237
|
if (this.isUsingOfficialInstance()) {
|
|
@@ -346,18 +244,15 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
346
244
|
}
|
|
347
245
|
return { success: false, message: errorMessage };
|
|
348
246
|
}
|
|
349
|
-
// Now poll the job status until it completes
|
|
350
247
|
let lastTraceLength = 0;
|
|
351
248
|
while ((Date.now() - t0) < jobCompletionTimeOut) {
|
|
352
249
|
try {
|
|
353
|
-
// Get job status
|
|
354
250
|
const gitlabJob = await this.callApi({
|
|
355
251
|
session,
|
|
356
252
|
path: `api/v4/projects/${websiteId}/jobs/${gitlabJobId}`,
|
|
357
253
|
method: 'GET'
|
|
358
254
|
});
|
|
359
255
|
const jobStatus = gitlabJob.status;
|
|
360
|
-
// Try to get job trace (logs) for progress info
|
|
361
256
|
let traceInfo = '';
|
|
362
257
|
try {
|
|
363
258
|
const trace = await this.callApi({
|
|
@@ -366,23 +261,18 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
366
261
|
method: 'GET'
|
|
367
262
|
});
|
|
368
263
|
if (typeof trace === 'string' && trace.length > lastTraceLength) {
|
|
369
|
-
// Parse the new portion of the trace
|
|
370
264
|
const newTrace = trace.substring(lastTraceLength);
|
|
371
265
|
traceInfo = parseJobTrace(newTrace);
|
|
372
266
|
lastTraceLength = trace.length;
|
|
373
|
-
// Add filtered log lines to the job logs for the <details> section
|
|
374
267
|
const filteredLines = filterTraceLines(newTrace);
|
|
375
268
|
if (filteredLines.length > 0) {
|
|
376
|
-
// Limit to last 50 lines to avoid overwhelming the logs
|
|
377
269
|
const linesToAdd = filteredLines.slice(-50);
|
|
378
270
|
job.logs[0].push(...linesToAdd);
|
|
379
271
|
}
|
|
380
272
|
}
|
|
381
273
|
}
|
|
382
274
|
catch (e) {
|
|
383
|
-
// Trace might not be available yet, that's OK
|
|
384
275
|
}
|
|
385
|
-
// Map GitLab status to user-friendly status
|
|
386
276
|
const statusMap = {
|
|
387
277
|
'created': 'Starting',
|
|
388
278
|
'waiting_for_resource': 'Waiting for server',
|
|
@@ -402,9 +292,7 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
402
292
|
<a href="${gitlabJobLogsUrl}" target="_blank" class="silex-button silex-button--secondary">View build logs</a>
|
|
403
293
|
</div>
|
|
404
294
|
`;
|
|
405
|
-
// Check if job completed
|
|
406
295
|
if (GITLAB_SUCCESS_STATUSES.includes(jobStatus)) {
|
|
407
|
-
// Fetch final trace to include in logs
|
|
408
296
|
try {
|
|
409
297
|
const finalTrace = await this.callApi({
|
|
410
298
|
session,
|
|
@@ -413,13 +301,11 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
413
301
|
});
|
|
414
302
|
if (typeof finalTrace === 'string') {
|
|
415
303
|
const allFilteredLines = filterTraceLines(finalTrace);
|
|
416
|
-
// Add last 30 lines as summary
|
|
417
304
|
job.logs[0].push('--- Build Summary ---');
|
|
418
305
|
job.logs[0].push(...allFilteredLines.slice(-30));
|
|
419
306
|
}
|
|
420
307
|
}
|
|
421
308
|
catch (e) {
|
|
422
|
-
// Ignore trace fetch errors
|
|
423
309
|
}
|
|
424
310
|
const message = `
|
|
425
311
|
<p><strong>Your website is now live!</strong></p>
|
|
@@ -433,7 +319,6 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
433
319
|
}
|
|
434
320
|
if (GITLAB_FAILED_STATUSES.includes(jobStatus)) {
|
|
435
321
|
const failureReason = gitlabJob.failure_reason || 'Build error';
|
|
436
|
-
// Fetch final trace to include error details in logs
|
|
437
322
|
try {
|
|
438
323
|
const finalTrace = await this.callApi({
|
|
439
324
|
session,
|
|
@@ -442,13 +327,11 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
442
327
|
});
|
|
443
328
|
if (typeof finalTrace === 'string') {
|
|
444
329
|
const allFilteredLines = filterTraceLines(finalTrace);
|
|
445
|
-
// Add last 50 lines to help debug the error
|
|
446
330
|
job.logs[0].push('--- Error Details ---');
|
|
447
331
|
job.logs[0].push(...allFilteredLines.slice(-50));
|
|
448
332
|
}
|
|
449
333
|
}
|
|
450
334
|
catch (e) {
|
|
451
|
-
// Ignore trace fetch errors
|
|
452
335
|
}
|
|
453
336
|
const message = `
|
|
454
337
|
<p><strong>Build failed:</strong> ${failureReason}</p>
|
|
@@ -460,16 +343,13 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
460
343
|
job.logs[0].push(`Build failed: ${failureReason}`);
|
|
461
344
|
return { success: false, message };
|
|
462
345
|
}
|
|
463
|
-
// Job still running, wait before next poll
|
|
464
346
|
await (0, promises_1.setTimeout)(jobPollInterval);
|
|
465
347
|
}
|
|
466
348
|
catch (e) {
|
|
467
349
|
console.error('Error polling GitLab job status:', e.message);
|
|
468
|
-
// Don't fail immediately, just wait and retry
|
|
469
350
|
await (0, promises_1.setTimeout)(jobPollInterval);
|
|
470
351
|
}
|
|
471
352
|
}
|
|
472
|
-
// Timeout reached
|
|
473
353
|
const message = `
|
|
474
354
|
<p><strong>Build is taking longer than expected</strong></p>
|
|
475
355
|
<p>Your website may still be published successfully.</p>
|
|
@@ -482,9 +362,8 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
482
362
|
return { success: false, message };
|
|
483
363
|
}
|
|
484
364
|
async createTag(session, websiteId, job, { startJob, jobSuccess, jobError }) {
|
|
485
|
-
const projectId = websiteId;
|
|
365
|
+
const projectId = websiteId;
|
|
486
366
|
const newTag = '_silex_' + Date.now();
|
|
487
|
-
// Create a new tag to trigger the build
|
|
488
367
|
try {
|
|
489
368
|
job.message = 'Triggering build...';
|
|
490
369
|
job.logs[0].push(job.message);
|
|
@@ -504,9 +383,7 @@ class GitlabHostingConnector extends GitlabConnector_1.default {
|
|
|
504
383
|
jobError(job.jobId, `Failed to start build: ${error.message}`);
|
|
505
384
|
return null;
|
|
506
385
|
}
|
|
507
|
-
// Return new tag
|
|
508
386
|
return newTag;
|
|
509
387
|
}
|
|
510
388
|
}
|
|
511
389
|
exports.default = GitlabHostingConnector;
|
|
512
|
-
//# sourceMappingURL=GitlabHostingConnector.js.map
|
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Silex website builder, free/libre no-code tool for makers.
|
|
4
|
-
* Copyright (c) 2023 lexoyo and Silex Labs foundation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software: you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU Affero General Public License as published by
|
|
8
|
-
* the Free Software Foundation, either version 3 of the License, or any later version.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU Affero General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
16
|
-
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
4
|
};
|
|
@@ -24,29 +8,18 @@ const express_1 = __importDefault(require("express"));
|
|
|
24
8
|
const fs_1 = require("fs");
|
|
25
9
|
const https_1 = require("https");
|
|
26
10
|
const express_force_ssl_1 = __importDefault(require("express-force-ssl"));
|
|
27
|
-
const
|
|
28
|
-
// interface SslOptions {
|
|
29
|
-
// forceHttps?: boolean
|
|
30
|
-
// trustXFPHeader?: boolean
|
|
31
|
-
// privateKey?: string
|
|
32
|
-
// certificate?: string
|
|
33
|
-
// sslPort?: string
|
|
34
|
-
// }
|
|
11
|
+
const events_js_1 = require("../events.js");
|
|
35
12
|
async function default_1(config, opts = {}) {
|
|
36
|
-
// Options with defaults
|
|
37
13
|
const options = {
|
|
38
14
|
forceHttps: process.env.SILEX_FORCE_HTTPS === 'true',
|
|
39
15
|
trustXFPHeader: process.env.SILEX_FORCE_HTTPS_TRUST_XFP_HEADER === 'true',
|
|
40
16
|
privateKey: process.env.SILEX_SSL_PRIVATE_KEY,
|
|
41
17
|
certificate: process.env.SILEX_SSL_CERTIFICATE,
|
|
42
|
-
sslPort: process.env.SSL_PORT || '443',
|
|
18
|
+
sslPort: process.env.SILEX_SSL_PORT || process.env.SSL_PORT || '443',
|
|
43
19
|
...opts,
|
|
44
20
|
};
|
|
45
|
-
|
|
46
|
-
config.on(events_1.ServerEvent.STARTUP_START, ({ app }) => {
|
|
21
|
+
config.on(events_js_1.ServerEvent.STARTUP_START, ({ app }) => {
|
|
47
22
|
const router = express_1.default.Router();
|
|
48
|
-
// SSL
|
|
49
|
-
// force ssl if the env var SILEX_FORCE_HTTPS is set
|
|
50
23
|
if (options.forceHttps) {
|
|
51
24
|
console.info('> [SslPlugin] Force SSL option is enabled');
|
|
52
25
|
app.set('forceSSLOptions', {
|
|
@@ -57,7 +30,6 @@ async function default_1(config, opts = {}) {
|
|
|
57
30
|
else {
|
|
58
31
|
console.info('> [SslPlugin] Force SSL option is disabled, env var SILEX_FORCE_HTTPS not set');
|
|
59
32
|
}
|
|
60
|
-
// SSL certificate
|
|
61
33
|
if (options.privateKey && options.certificate) {
|
|
62
34
|
console.info('> [SslPlugin] SSL certificate is enabled, found certificate:', options.certificate);
|
|
63
35
|
try {
|
|
@@ -83,4 +55,3 @@ async function default_1(config, opts = {}) {
|
|
|
83
55
|
app.use(router);
|
|
84
56
|
});
|
|
85
57
|
}
|
|
86
|
-
//# sourceMappingURL=SslPlugin.js.map
|
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Silex website builder, free/libre no-code tool for makers.
|
|
4
|
-
* Copyright (c) 2023 lexoyo and Silex Labs foundation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software: you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU Affero General Public License as published by
|
|
8
|
-
* the Free Software Foundation, either version 3 of the License, or any later version.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU Affero General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
16
|
-
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
4
|
};
|
|
@@ -22,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
6
|
exports.default = default_1;
|
|
23
7
|
const express_1 = __importDefault(require("express"));
|
|
24
8
|
const serve_static_1 = __importDefault(require("serve-static"));
|
|
25
|
-
const
|
|
26
|
-
const
|
|
9
|
+
const Cache_js_1 = require("./Cache.js");
|
|
10
|
+
const events_js_1 = require("../events.js");
|
|
27
11
|
async function default_1(config, options = { routes: [] }) {
|
|
28
12
|
if (!options.routes)
|
|
29
13
|
throw new Error('The config for static module has no `routes` attribute');
|
|
30
14
|
console.info(`> [StaticPlugin] Serving ${options.routes.length} static files`);
|
|
31
|
-
config.on(
|
|
15
|
+
config.on(events_js_1.ServerEvent.STARTUP_START, ({ app }) => {
|
|
32
16
|
const router = express_1.default.Router();
|
|
33
17
|
options.routes
|
|
34
18
|
.forEach(folder => {
|
|
@@ -39,7 +23,6 @@ async function default_1(config, options = { routes: [] }) {
|
|
|
39
23
|
console.info(`> [StaticPlugin] Serving static files from ${folder.path} on ${folder.route}`);
|
|
40
24
|
router.use(folder.route, (0, serve_static_1.default)(folder.path));
|
|
41
25
|
});
|
|
42
|
-
app.use(
|
|
26
|
+
app.use(Cache_js_1.withCache, router);
|
|
43
27
|
});
|
|
44
28
|
}
|
|
45
|
-
//# sourceMappingURL=StaticPlugin.js.map
|
|
@@ -4,9 +4,9 @@ exports.stringify = stringify;
|
|
|
4
4
|
exports.split = split;
|
|
5
5
|
exports.merge = merge;
|
|
6
6
|
exports.getPagesFolder = getPagesFolder;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const types_js_1 = require("../../common/types.js");
|
|
8
|
+
const page_js_1 = require("../../common/page.js");
|
|
9
|
+
const constants_js_1 = require("../../common/constants.js");
|
|
10
10
|
function stringify(data) {
|
|
11
11
|
return JSON.stringify(data, sortKeys, 2);
|
|
12
12
|
}
|
|
@@ -22,10 +22,10 @@ function sortKeys(key, value) {
|
|
|
22
22
|
}
|
|
23
23
|
function split(websiteData) {
|
|
24
24
|
const files = [];
|
|
25
|
-
const pagesFolder = websiteData.pagesFolder ||
|
|
25
|
+
const pagesFolder = websiteData.pagesFolder || constants_js_1.LEGACY_WEBSITE_PAGES_FOLDER;
|
|
26
26
|
const pages = websiteData.pages?.map((page) => {
|
|
27
27
|
const pageName = getPageName(page);
|
|
28
|
-
const slug = (0,
|
|
28
|
+
const slug = (0, page_js_1.getPageSlug)(pageName);
|
|
29
29
|
const fileName = `${slug}-${page.id}.json`;
|
|
30
30
|
const filePath = `${pagesFolder}/${fileName}`;
|
|
31
31
|
if (!page.id)
|
|
@@ -39,21 +39,21 @@ function split(websiteData) {
|
|
|
39
39
|
id: page.id,
|
|
40
40
|
isFile: true,
|
|
41
41
|
};
|
|
42
|
-
}) ||
|
|
42
|
+
}) || types_js_1.EMPTY_PAGES;
|
|
43
43
|
const websiteDataLinkedPages = {
|
|
44
44
|
...websiteData,
|
|
45
45
|
pagesFolder,
|
|
46
46
|
pages,
|
|
47
47
|
};
|
|
48
48
|
files.push({
|
|
49
|
-
path:
|
|
49
|
+
path: constants_js_1.WEBSITE_DATA_FILE,
|
|
50
50
|
content: stringify(websiteDataLinkedPages)
|
|
51
51
|
});
|
|
52
52
|
return files;
|
|
53
53
|
}
|
|
54
54
|
async function merge(websiteDataContent, pageLoader) {
|
|
55
55
|
const websiteData = JSON.parse(websiteDataContent);
|
|
56
|
-
const pagesFolder = websiteData.pagesFolder ||
|
|
56
|
+
const pagesFolder = websiteData.pagesFolder || constants_js_1.LEGACY_WEBSITE_PAGES_FOLDER;
|
|
57
57
|
if (!websiteData.pages || websiteData.pages.length === 0) {
|
|
58
58
|
return websiteData;
|
|
59
59
|
}
|
|
@@ -63,7 +63,7 @@ async function merge(websiteDataContent, pageLoader) {
|
|
|
63
63
|
const pages = await Promise.all(websiteData.pages.map(async (pageRef) => {
|
|
64
64
|
if (pageRef.isFile) {
|
|
65
65
|
const pageName = pageRef.name;
|
|
66
|
-
const slug = (0,
|
|
66
|
+
const slug = (0, page_js_1.getPageSlug)(pageName);
|
|
67
67
|
const fileName = `${slug}-${pageRef.id}.json`;
|
|
68
68
|
const filePath = `${pagesFolder}/${fileName}`;
|
|
69
69
|
try {
|
|
@@ -83,7 +83,7 @@ async function merge(websiteDataContent, pageLoader) {
|
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
function getPagesFolder(websiteData) {
|
|
86
|
-
return websiteData.pagesFolder ||
|
|
86
|
+
return websiteData.pagesFolder || constants_js_1.LEGACY_WEBSITE_PAGES_FOLDER;
|
|
87
87
|
}
|
|
88
88
|
function getPageName(page) {
|
|
89
89
|
return page.getName ? page.getName() : page.name;
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { API_CONNECTOR_LIST, API_CONNECTOR_USER, API_CONNECTOR_LOGOUT, API_CONNECTOR_PATH, API_PATH, API_PUBLICATION_PATH, API_PUBLICATION_PUBLISH, API_PUBLICATION_STATUS, API_WEBSITE_ASSET_READ, API_WEBSITE_ASSETS_WRITE, API_WEBSITE_DELETE, API_WEBSITE_LIST, API_WEBSITE_PATH, API_WEBSITE_READ, API_WEBSITE_WRITE, API_WEBSITE_META_READ, API_WEBSITE_META_WRITE, API_WEBSITE_CREATE, API_WEBSITE_DUPLICATE, API_WEBSITE_FORK } from '
|
|
19
|
-
import { ApiPublicationPublishBody, ApiPublicationPublishQuery, ApiPublicationPublishResponse, ApiPublicationStatusQuery, ApiPublicationStatusResponse, ConnectorId, JobData, JobId, PublicationJobData, WebsiteId, ApiConnectorListResponse, ApiConnectorListQuery, ConnectorData, ConnectorType, ApiWebsiteReadQuery, ApiWebsiteReadResponse, WebsiteData, ApiWebsiteWriteQuery, ApiWebsiteWriteBody, ApiWebsiteWriteResponse, ApiWebsiteDeleteQuery, ApiWebsiteAssetsReadQuery, ApiWebsiteAssetsReadResponse, ApiWebsiteAssetsWriteQuery, ApiWebsiteAssetsWriteBody, ApiWebsiteAssetsWriteResponse, ClientSideFile, PublicationData, ApiConnectorUserResponse, ConnectorUser, WebsiteMeta, ApiConnectorLogoutQuery, ApiConnectorUserQuery, ApiWebsiteListResponse, ApiWebsiteListQuery, WebsiteMetaFileContent, ApiWebsiteCreateQuery, ApiWebsiteCreateBody, ApiWebsiteCreateResponse, ApiWebsiteMetaWriteQuery, ApiWebsiteMetaWriteBody, ApiWebsiteMetaWriteResponse, ApiWebsiteMetaReadQuery, ApiWebsiteMetaReadResponse, ConnectorOptions, ApiError, ApiWebsiteDuplicateQuery, ApiWebsiteForkQuery, ApiWebsiteForkBody, ApiWebsiteForkResponse } from '
|
|
18
|
+
import { API_CONNECTOR_LIST, API_CONNECTOR_USER, API_CONNECTOR_LOGOUT, API_CONNECTOR_PATH, API_PATH, API_PUBLICATION_PATH, API_PUBLICATION_PUBLISH, API_PUBLICATION_STATUS, API_WEBSITE_ASSET_READ, API_WEBSITE_ASSETS_WRITE, API_WEBSITE_DELETE, API_WEBSITE_LIST, API_WEBSITE_PATH, API_WEBSITE_READ, API_WEBSITE_WRITE, API_WEBSITE_META_READ, API_WEBSITE_META_WRITE, API_WEBSITE_CREATE, API_WEBSITE_DUPLICATE, API_WEBSITE_FORK } from '~/common/constants'
|
|
19
|
+
import { ApiPublicationPublishBody, ApiPublicationPublishQuery, ApiPublicationPublishResponse, ApiPublicationStatusQuery, ApiPublicationStatusResponse, ConnectorId, JobData, JobId, PublicationJobData, WebsiteId, ApiConnectorListResponse, ApiConnectorListQuery, ConnectorData, ConnectorType, ApiWebsiteReadQuery, ApiWebsiteReadResponse, WebsiteData, ApiWebsiteWriteQuery, ApiWebsiteWriteBody, ApiWebsiteWriteResponse, ApiWebsiteDeleteQuery, ApiWebsiteAssetsReadQuery, ApiWebsiteAssetsReadResponse, ApiWebsiteAssetsWriteQuery, ApiWebsiteAssetsWriteBody, ApiWebsiteAssetsWriteResponse, ClientSideFile, PublicationData, ApiConnectorUserResponse, ConnectorUser, WebsiteMeta, ApiConnectorLogoutQuery, ApiConnectorUserQuery, ApiWebsiteListResponse, ApiWebsiteListQuery, WebsiteMetaFileContent, ApiWebsiteCreateQuery, ApiWebsiteCreateBody, ApiWebsiteCreateResponse, ApiWebsiteMetaWriteQuery, ApiWebsiteMetaWriteBody, ApiWebsiteMetaWriteResponse, ApiWebsiteMetaReadQuery, ApiWebsiteMetaReadResponse, ConnectorOptions, ApiError, ApiWebsiteDuplicateQuery, ApiWebsiteForkQuery, ApiWebsiteForkBody, ApiWebsiteForkResponse } from '~/common/types'
|
|
20
20
|
|
|
21
21
|
export enum ApiRoute {
|
|
22
22
|
PUBLICATION_PUBLISH = API_PATH + API_PUBLICATION_PATH + API_PUBLICATION_PUBLISH,
|