diff --git a/.pnp.cjs b/.pnp.cjs index d236eb9b7..9439535cf 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -3231,6 +3231,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/docs/", "packageDependencies": [ ["@lowdefy/docs", "workspace:packages/docs"], + ["@jest/globals", "npm:27.5.1"], + ["@lowdefy/helpers", "workspace:packages/utils/helpers"], + ["@swc/cli", "virtual:babee6e81435a5d101529cd67f2c6b175f4db37a4ab0b58df15adf73dd11be8917ac14caf44ab4e6882a92c61661055072365b349016e85173e049f006fc2305#npm:0.1.55"], ["@swc/core", "npm:1.2.135"], ["@swc/jest", "virtual:babee6e81435a5d101529cd67f2c6b175f4db37a4ab0b58df15adf73dd11be8917ac14caf44ab4e6882a92c61661055072365b349016e85173e049f006fc2305#npm:0.2.17"], ["jest", "virtual:babee6e81435a5d101529cd67f2c6b175f4db37a4ab0b58df15adf73dd11be8917ac14caf44ab4e6882a92c61661055072365b349016e85173e049f006fc2305#npm:27.5.1"] diff --git a/packages/docs/body.html b/packages/docs/body.html deleted file mode 100644 index b0608dd9e..000000000 --- a/packages/docs/body.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/docs/head.html b/packages/docs/head.html index 57a396ba1..10e1f1891 100644 --- a/packages/docs/head.html +++ b/packages/docs/head.html @@ -1,4 +1,3 @@ - /.lowdefy/', - '/jest.config.js', - '/coverage/', - '/howto/', - ], + coveragePathIgnorePatterns: ['/dist/', '/src/operatorsClient.js'], coverageReporters: [['lcov', { projectRoot: '../..' }], 'text', 'clover'], errorOnDeprecated: true, testEnvironment: 'node', - testPathIgnorePatterns: [ - '/.lowdefy/', - '/jest.config.js', - '/coverage/', - '/howto/', - ], + testPathIgnorePatterns: ['/dist/'], transform: { '^.+\\.(t|j)sx?$': ['@swc/jest', { configFile: '../../.swcrc.test' }], }, diff --git a/packages/docs/lowdefy.yaml b/packages/docs/lowdefy.yaml index 7d146bd0a..aeefea8bb 100644 --- a/packages/docs/lowdefy.yaml +++ b/packages/docs/lowdefy.yaml @@ -19,6 +19,10 @@ licence: Apache-2.0 cli: disableTelemetry: true +plugins: + - name: '@lowdefy/docs' + version: '4.0.0-alpha.7' + global: all_icons: _ref: blocks/all_icons.yaml @@ -30,8 +34,6 @@ app: html: appendHead: _ref: head.html - appendBody: - _ref: body.html connections: - id: discord_channel diff --git a/packages/docs/package.json b/packages/docs/package.json index fdff18c34..a8d72523b 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -27,11 +27,27 @@ "url": "https://github.com/lowdefy/lowdefy.git" }, "type": "module", + "exports": { + "./actions": "./dist/actions.js", + "./operators/client": "./dist/operatorsClient.js", + "./types": "./dist/types.js" + }, + "files": [ + "dist/*" + ], "scripts": { + "build": "yarn swc", "clean": "rm -rf .lowdefy", - "test": "jest --coverage" + "prepare": "yarn build", + "swc": "swc src --out-dir dist --config-file ../../.swcrc --delete-dir-on-start", + "test": "yarn node --experimental-vm-modules $(yarn bin jest)" + }, + "dependencies": { + "@lowdefy/helpers": "4.0.0-alpha.7" }, "devDependencies": { + "@jest/globals": "27.5.1", + "@swc/cli": "0.1.55", "@swc/core": "1.2.135", "@swc/jest": "0.2.17", "jest": "27.5.1" diff --git a/packages/docs/public/modules/index.js b/packages/docs/public/modules/index.js deleted file mode 100644 index 218f703d8..000000000 --- a/packages/docs/public/modules/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import connectDocsearch from './connectDocsearch.js'; -import filterDefaultValue from './filterDefaultValue.js'; - -window.lowdefy.registerJsAction('connectDocsearch', connectDocsearch); -window.lowdefy.registerJsOperator('filterDefaultValue', filterDefaultValue); diff --git a/packages/docs/public/modules/filterDefaultValue.js b/packages/docs/src/operators/client/filter_default_value.js similarity index 75% rename from packages/docs/public/modules/filterDefaultValue.js rename to packages/docs/src/operators/client/filter_default_value.js index 11665f129..af2545532 100644 --- a/packages/docs/public/modules/filterDefaultValue.js +++ b/packages/docs/src/operators/client/filter_default_value.js @@ -14,22 +14,24 @@ limitations under the License. */ -function filterDefaultValue(value, defaultValue) { - const isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj); - const isEmptyObject = (obj) => isObject(obj) && Object.keys(obj).length === 0; +import { type } from '@lowdefy/helpers'; + +function custom_filter_default_value({ params }) { + const { value, defaultValue } = params; + const isEmptyObject = (obj) => type.isObject(obj) && Object.keys(obj).length === 0; const getNestedValue = (obj, path) => { const keys = [...path]; const key = keys.shift(); const value = obj[key]; - if (keys.length > 0 && isObject(value)) return getNestedValue(value, keys); + if (keys.length > 0 && type.isObject(value)) return getNestedValue(value, keys); return value; }; const filterObject = ({ obj, path }) => { Object.keys(obj).forEach((key) => { const propPath = path.concat([key]); - if (isObject(obj[key])) { + if (type.isObject(obj[key])) { filterObject({ obj: obj[key], path: propPath }); } const dv = getNestedValue(defaultValue, propPath); @@ -45,4 +47,4 @@ function filterDefaultValue(value, defaultValue) { return filterObject({ obj: value, path: [] }); } -export default filterDefaultValue; +export default custom_filter_default_value; diff --git a/packages/docs/public/modules/test/filterDefaultValue.test.js b/packages/docs/src/operators/client/filter_default_value.test.js similarity index 76% rename from packages/docs/public/modules/test/filterDefaultValue.test.js rename to packages/docs/src/operators/client/filter_default_value.test.js index e1eaa18dd..0f70554fe 100644 --- a/packages/docs/public/modules/test/filterDefaultValue.test.js +++ b/packages/docs/src/operators/client/filter_default_value.test.js @@ -14,11 +14,11 @@ limitations under the License. */ -import filterDefaultValue from '../filterDefaultValue'; +import filter_default_value from './filter_default_value.js'; test('no default value', () => { const value = { a: 1 }; - expect(filterDefaultValue(value, {})).toEqual({ a: 1 }); + expect(filter_default_value({ params: { value, defaultValue: {} } })).toEqual({ a: 1 }); }); test('remove null, empty objects and empty objects with all properties null or empty', () => { @@ -30,7 +30,7 @@ test('remove null, empty objects and empty objects with all properties null or e g: { h: { i: { j: null, k: { l: null } } } }, m: { n: null, o: null, p: null }, }; - expect(filterDefaultValue(value, {})).toEqual({}); + expect(filter_default_value({ params: { value, defaultValue: {} } })).toEqual({}); }); test('remove a default value', () => { @@ -42,7 +42,7 @@ test('remove a default value', () => { a: 1, b: 1, }; - expect(filterDefaultValue(value, defaultValue)).toEqual({ b: 2 }); + expect(filter_default_value({ params: { value, defaultValue } })).toEqual({ b: 2 }); }); test('remove a default value but keep arrays', () => { @@ -64,7 +64,7 @@ test('remove a default value but keep arrays', () => { }, e: ['1', '2'], }; - expect(filterDefaultValue(value, defaultValue)).toEqual({ + expect(filter_default_value({ params: { value, defaultValue } })).toEqual({ a: { c: false, d: true, @@ -87,5 +87,5 @@ test('only recurse getNestedValue on objects', () => { b: null, }, }; - expect(filterDefaultValue(value, defaultValue)).toEqual({ a: { b: { c: 1 } } }); + expect(filter_default_value({ params: { value, defaultValue } })).toEqual({ a: { b: { c: 1 } } }); }); diff --git a/packages/docs/src/operatorsClient.js b/packages/docs/src/operatorsClient.js new file mode 100644 index 000000000..2c584cf68 --- /dev/null +++ b/packages/docs/src/operatorsClient.js @@ -0,0 +1,17 @@ +/* + Copyright 2020-2021 Lowdefy, Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +export { default as _custom_filter_default_value } from './operators/client/filter_default_value.js'; diff --git a/packages/docs/src/types.js b/packages/docs/src/types.js new file mode 100644 index 000000000..f5698e549 --- /dev/null +++ b/packages/docs/src/types.js @@ -0,0 +1,23 @@ +/* + Copyright 2020-2021 Lowdefy, Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +import * as operatorsClient from './operatorsClient.js'; + +export default { + operators: { + client: Object.keys(operatorsClient), + }, +}; diff --git a/packages/docs/templates/blocks/template.yaml.njk b/packages/docs/templates/blocks/template.yaml.njk index 476264556..001793ff7 100644 --- a/packages/docs/templates/blocks/template.yaml.njk +++ b/packages/docs/templates/blocks/template.yaml.njk @@ -192,14 +192,16 @@ areas: required: _state: block.required properties: - _js.filterDefaultValue: - - _ref: + _custom_filter_default_value: + value: + _ref: path: _var: schema vars: block_type: {{ block_type }} transformer: templates/blocks/propertiesGetterTransformer.js - - _ref: + defaultValue: + _ref: path: _var: schema transformer: templates/blocks/defaultValueTransformer.js @@ -309,8 +311,9 @@ areas: options: sortKeys: false on: - _js.filterDefaultValue: - - id: block_id + _custom_filter_default_value: + value: + id: block_id type: {{ block_type }} required: _state: block.required @@ -330,7 +333,8 @@ areas: vars: block_type: {{ block_type }} transformer: templates/blocks/propertiesGetterTransformer.js - - required: false + defaultValue: + required: false visible: true layout: align: top diff --git a/packages/plugins/actions/actions-core/src/types.js b/packages/plugins/actions/actions-core/src/types.js index cfb4e9247..23a07db06 100644 --- a/packages/plugins/actions/actions-core/src/types.js +++ b/packages/plugins/actions/actions-core/src/types.js @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ + import * as actions from './actions.js'; export default { diff --git a/yarn.lock b/yarn.lock index a8ec90565..52192ca59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2371,6 +2371,9 @@ __metadata: version: 0.0.0-use.local resolution: "@lowdefy/docs@workspace:packages/docs" dependencies: + "@jest/globals": 27.5.1 + "@lowdefy/helpers": 4.0.0-alpha.7 + "@swc/cli": 0.1.55 "@swc/core": 1.2.135 "@swc/jest": 0.2.17 jest: 27.5.1