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