@openfn/project 0.8.0 → 0.9.0

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/dist/index.js CHANGED
@@ -258,7 +258,7 @@ function to_json_default(project) {
258
258
  }
259
259
 
260
260
  // src/serialize/to-app-state.ts
261
- import { pick, omitBy, isNil } from "lodash-es";
261
+ import { pick, omitBy, isNil, sortBy } from "lodash-es";
262
262
  import { randomUUID } from "node:crypto";
263
263
 
264
264
  // src/util/rename-keys.ts
@@ -286,6 +286,10 @@ function jsonToYaml(json) {
286
286
  }
287
287
 
288
288
  // src/serialize/to-app-state.ts
289
+ var defaultJobProps = {
290
+ keychain_credential_id: null,
291
+ project_credential_id: null
292
+ };
289
293
  function to_app_state_default(project, options = {}) {
290
294
  const { uuid, endpoint, env, ...rest } = project.openfn ?? {};
291
295
  const state = omitBy(
@@ -327,7 +331,7 @@ var mapWorkflow = (workflow) => {
327
331
  obj[next.id] = next.openfn.uuid;
328
332
  return obj;
329
333
  }, {});
330
- workflow.steps.forEach((s) => {
334
+ sortBy(workflow.steps, "name").forEach((s) => {
331
335
  let isTrigger = false;
332
336
  let node;
333
337
  if (s.type && !s.expression) {
@@ -341,12 +345,10 @@ var mapWorkflow = (workflow) => {
341
345
  node = omitBy(pick(s, ["name", "adaptor"]), isNil);
342
346
  const { uuid: uuid2, ...otherOpenFnProps } = s.openfn ?? {};
343
347
  node.id = uuid2;
344
- Object.assign(node, otherOpenFnProps);
345
348
  if (s.expression) {
346
349
  node.body = s.expression;
347
350
  }
348
- node.project_credential_id = s.openfn?.project_credential_id ?? null;
349
- node.keychain_credential_id = null;
351
+ Object.assign(node, defaultJobProps, otherOpenFnProps);
350
352
  wfState.jobs.push(node);
351
353
  }
352
354
  Object.keys(s.next ?? {}).forEach((next) => {
@@ -374,6 +376,7 @@ var mapWorkflow = (workflow) => {
374
376
  wfState.edges.push(e);
375
377
  });
376
378
  });
379
+ wfState.edges = sortBy(wfState.edges, "id");
377
380
  return wfState;
378
381
  };
379
382
 
@@ -544,7 +547,7 @@ var handleOutput = (data, filePath, format) => {
544
547
  };
545
548
 
546
549
  // src/parse/from-app-state.ts
547
- var from_app_state_default = (state, meta, config = {}) => {
550
+ var from_app_state_default = (state, meta = {}, config = {}) => {
548
551
  let stateJson;
549
552
  if (typeof state === "string") {
550
553
  if (config.format === "yaml") {
@@ -1399,6 +1402,17 @@ import { readFileSync as readFileSync2 } from "node:fs";
1399
1402
  import { grammar } from "ohm-js";
1400
1403
  import { isNil as isNil3, set } from "lodash-es";
1401
1404
  var parser;
1405
+ var expectedNodeProps = [
1406
+ // TODO need to clarify adaptor/adaptors confusion
1407
+ "adaptor",
1408
+ "adaptors",
1409
+ "expression",
1410
+ "condition",
1411
+ "label",
1412
+ "type",
1413
+ "disabled",
1414
+ "name"
1415
+ ];
1402
1416
  var initOperations = (options = {}) => {
1403
1417
  let nodes = {};
1404
1418
  const uuidMap = options.uuidMap ?? {};
@@ -1472,7 +1486,12 @@ var initOperations = (options = {}) => {
1472
1486
  const name = nameNode.sourceString;
1473
1487
  const node = buildNode(name);
1474
1488
  props.buildWorkflow().forEach(([key, value]) => {
1475
- nodes[name][key] = value;
1489
+ if (expectedNodeProps.includes(key)) {
1490
+ nodes[name][key] = value;
1491
+ } else {
1492
+ nodes[name].openfn ??= {};
1493
+ nodes[name].openfn[key] = value;
1494
+ }
1476
1495
  });
1477
1496
  return node;
1478
1497
  },
package/dist/workflow.ohm CHANGED
@@ -27,7 +27,7 @@ Workflow {
27
27
 
28
28
  props = "(" listOf<prop, ","> ")"
29
29
 
30
- prop = alnum+ "=" propValue
30
+ prop = (alnum | "-" | "_")+ "=" propValue
31
31
 
32
32
  propValue = quoted_prop | bool | int | alnum+
33
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfn/project",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Read, serialize, replicate and sync OpenFn projects",
5
5
  "type": "module",
6
6
  "exports": {
@@ -34,8 +34,8 @@
34
34
  "lodash-es": "^4.17.21",
35
35
  "ohm-js": "^17.2.1",
36
36
  "yaml": "^2.2.2",
37
- "@openfn/logger": "1.0.6",
38
- "@openfn/lexicon": "^1.2.6"
37
+ "@openfn/lexicon": "^1.2.6",
38
+ "@openfn/logger": "1.0.6"
39
39
  },
40
40
  "files": [
41
41
  "dist",